Acerca de las claves de encriptación administradas por el cliente (CMEK)

En esta página, se describe cómo funcionan las claves de encriptación administradas por el cliente (CMEK) con Memorystore para Redis. Para comenzar a usar esta función, consulta Usa claves de encriptación administradas por el cliente (CMEK).

De forma predeterminada, Memorystore para Redis encripta el contenido del cliente en reposo. Memorystore para Redis controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Memorystore para Redis. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Memorystore para Redis es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

¿Quiénes deberían usar la CMEK?

Las CMEK están diseñadas para organizaciones que tienen datos sensibles o regulados que deben encriptarse. Para obtener más información sobre si debes usar CMEK para encriptar estos datos, consulta Decide si vas a usar CMEK.

Diferencias entre la encriptación administrada por Google y la encriptación administrada por el cliente

La función de CMEK te permite usar tus propias claves criptográficas para los datos en reposo en Memorystore para Redis. En el caso de las instancias de Memorystore para Redis habilitadas para CMEK, Google usa tus claves para acceder a todos los datos en reposo.

Memorystore usa claves de encriptación de datos (DEK) y claves de encriptación de claves (KEK) administradas por Google para encriptar datos en Memorystore para Redis. Existen dos niveles de encriptación:

  • Encriptación de DEK: Memorystore usa DEK para encriptar datos en Memorystore para Redis.
  • Encriptación de KEK: Memorystore usa KEK para encriptar DEK.

La instancia de Memorystore para Redis almacena la DEK encriptada junto con los datos encriptados en el disco persistente, y Google administra la KEK de Google. La CMEK es la KEK que une la DEK. La CMEK te permite crear, inhabilitar o destruir, y habilitar o restablecer la KEK.

Puedes administrar las CMEK con la API de Cloud Key Management Service.

En los siguientes diagramas, se muestra cómo funciona la encriptación de datos en reposo dentro de una instancia de Memorystore para Redis cuando se usa la encriptación predeterminada administrada por Google en comparación con la CMEK.

Sin CMEK

Los datos se suben a Google y luego se fragmentan; cada fragmento se encripta con su propia clave de encriptación de datos. Las claves de encriptación de datos se unen mediante una clave de encriptación de claves. Con la encriptación predeterminada de Google, la clave de encriptación de claves se recupera del almacén de claves interno de Google. Los fragmentos encriptados y las claves de encriptación unidas se distribuyen en la infraestructura de almacenamiento de Google.

Con CMEK

Los datos se suben a Google y luego se fragmentan; cada fragmento se encripta con su propia clave de encriptación de datos. Las claves de encriptación de datos se unen mediante una clave de encriptación de claves. En el caso de las CMEK con Cloud KMS, la clave de encriptación de claves se recupera de Cloud KMS. Los fragmentos encriptados y las claves de encriptación unidas se distribuyen en la infraestructura de almacenamiento de Google.

Durante el proceso de desencriptación de datos unidos con CMEK, Memorystore usa la KEK de Cloud Key Management Service para desencriptar la DEK y la DEK no encriptada para desencriptar los datos en reposo.

Fragmento de datos encriptado con una DEK y almacenado con una DEK unida. Se envía una solicitud al almacenamiento de KMS para separar la DEK, que almacena la KEK no exportable. El almacenamiento de KMS muestra la DEK separada.

Precios

Memorystore para Redis factura una instancia habilitada para CMEK como cualquier otra instancia; no hay costos adicionales. Para obtener más información, consulta la página de precios de Memorystore para Redis.

Usas la API de Cloud KMS para administrar las CMEK. Cuando creas una instancia de Memorystore para Redis con CMEK, Memorystore usa la clave periódicamente para encriptar los datos.

Cloud KMS te factura el costo de la clave y las operaciones de encriptación y desencriptación cuando Memorystore para Redis usa la clave. Para obtener más información, consulta Precios de Cloud KMS.

¿Cuándo interactúa Memorystore con la CMEK?

Operación Descripción
Creación de una instancia Cuando creas una instancia, la configuras para que use CMEK.
Actualización de instancias Durante las actualizaciones de una instancia con CMEK habilitadas, Memorystore para Redis verifica la CMEK.

¿Qué datos se encriptan con CMEK?

La CMEK encripta los siguientes tipos de datos:

  • Son los datos del cliente almacenados en el almacenamiento persistente.
  • Son los metadatos relacionados con las funciones de seguridad, como AUTH y la encriptación en tránsito.

Acerca de las cuentas de servicio

Cuando crees una instancia con CMEK, debes otorgar el rol cloudkms.cryptoKeyEncrypterDecrypter a la cuenta de servicio de Memorystore para Redis que tiene el siguiente formato:

  service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
  

Si otorgas este permiso, la cuenta de servicio podrá solicitar acceso a la clave desde Cloud KMS.

Para obtener instrucciones sobre cómo otorgar este permiso a la cuenta de servicio, consulta Otorga acceso a la clave a la cuenta de servicio de Memorystore para Redis.

Acerca de las claves

En Cloud KMS, debes crear un llavero de claves con una clave criptográfica que use un algoritmo de encriptación simétrica. Cuando creas una instancia de Memorystore para Redis, debes seleccionar esta clave para encriptar la instancia. Puedes crear un solo proyecto para tus claves y tus instancias, o proyectos diferentes para cada uno de ellos.

La CMEK está disponible en todas las ubicaciones de instancias de Memorystore para Redis. Debes crear el llavero de claves y la clave en la misma región en la que deseas crear la instancia. No funciona una clave para una región global o multirregión. Si las regiones o ubicaciones no coinciden, fallará la solicitud para crear la instancia.

Para el ID de recurso de la clave, la CMEK usa el siguiente formato:

projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Si Memorystore para Redis no puede acceder a ninguna versión de la clave que se esté usando (por ejemplo, si inhabilitas todas las versiones de la clave), Memorystore para Redis cerrará la instancia. En la consola de Google Cloud , una instancia suspendida muestra una información sobre la herramienta con un signo de exclamación rojo en la página Instancias. Si colocas el cursor sobre la información, aparecerá el estado No state. Cuando se pueda acceder a la clave, Memorystore para Redis reanudará la instancia automáticamente.

Claves externas

Puedes usar Cloud External Key Manager (Cloud EKM) para encriptar datos enGoogle Cloud con claves externas que administras.

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa. Si la clave no está disponible cuando creas la instancia, esta no se creará.

Para obtener más consideraciones sobre el uso de claves externas, consulta Cloud External Key Manager.

¿Cómo se hace para que los datos encriptados con CMEK queden inaccesibles de forma permanente?

Es posible que surjan situaciones en las que quieras que los datos encriptados con CMEK sean inaccesibles de forma permanente. Para ello, debes destruir la versión de la clave. Para obtener más información sobre cómo destruir versiones de la clave, consulta Destruye y restablece versiones de clave.

¿Cómo se importan o exportan datos para una instancia con CMEK habilitada?

Si quieres que tus datos permanezcan encriptados con una CMEK cuando exportes datos, debes establecer una CMEK en el bucket de Cloud Storage antes de exportar datos a él.

Si tus datos se almacenan en una instancia habilitada para CMEK, no hay requisitos ni restricciones especiales para importar datos a una instancia nueva.

Comportamiento de una versión de clave de CMEK

En esta sección, se proporciona información sobre lo que sucede cuando inhabilitas, destruyes, rotas, habilitas y restableces una versión de clave.

Inhabilita o destruye una versión de clave CMEK

Si quieres asegurarte de que no se acceda a los datos de tu instancia, inhabilita la versión de clave principal de tu CMEK. Con esta acción, se cerrará la instancia. Además, si se inhabilita o destruye alguna CMEK en uso, Memorystore para Redis cerrará la instancia. Esto incluye cualquier versión anterior de la clave que use la instancia.

Para saber si Memorystore para Redis suspende tu instancia, usa una de las siguientes interfaces:

  • Google Cloud console: En la página Instances, aparece una sugerencia sobre herramientas con un signo de exclamación rojo junto a tu instancia. Si colocas el cursor sobre la información sobre herramientas, aparecerá el estado No state.
  • CLI de gcloud: Usa el comando gcloud redis instances describe. Verifica que no veas state: READY, state: REPAIRING ni ningún otro estado en los metadatos de la instancia.

Habilita o restablece la versión de clave principal de la CMEK

Si habilitas o restableces la versión de clave primaria de tu CMEK, Memorystore para Redis ya no ocultará tu instancia.

Limitaciones

Las siguientes limitaciones se aplican cuando se usa la CMEK con Memorystore para Redis:

  • No puedes habilitar las CMEK en una instancia existente de Memorystore para Redis.
  • La región de la clave, el llavero de claves y la instancia deben ser la misma.
  • Debes usar el algoritmo de encriptación simétrica para tu clave.
  • Los índices de encriptación y desencriptación de Cloud KMS están sujetos a una cuota.

Políticas de la organización de CMEK

Memorystore para Redis admite restricciones de políticas de la organización que puedes usar para la protección con CMEK.

Las políticas pueden limitar las claves de Cloud KMS que se pueden usar para la protección de CMEK.

  • Si la API de Memorystore para Redis está en la lista de servicios de la política Deny para la restricción constraints/gcp.restrictNonCmekServices, no puedes crear instancias no protegidas por CMEK.

  • Si configuras la restricción constraints/gcp.restrictCmekCryptoKeyProjects, Memorystore para Redis crea instancias protegidas por CMEK que se encriptan con una clave de un proyecto, una carpeta o una organización permitidos.

Para obtener más información sobre cómo configurar las políticas de la organización de CMEK, consulta Políticas de la organización de CMEK.