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

En este documento, se describe cómo puedes usar claves de encriptación administradas por el cliente (CMEK) en Cloud Key Management Service (Cloud KMS) para tus instancias de Memorystore para Redis. En el documento, también se describe qué datos se encriptan en el almacenamiento persistente y cómo se comportan tus instancias durante los eventos del ciclo de vida de las claves.

Las CMEK te permiten controlar las claves criptográficas que protegen tus datos almacenados. Si administras tus propias claves en Cloud KMS, obtienes un mayor control sobre el acceso, la rotación y el uso de las claves, lo que te ayuda a cumplir con los estrictos requisitos de cumplimiento y reglamentarios.

La implementación de CMEK proporciona una capa adicional de seguridad y control sobre tus datos persistentes, como las copias de seguridad y los archivos de persistencia. Solo puedes habilitar CMEK en instancias nuevas. No puedes aplicar CMEK a instancias existentes.

¿Quién debería usar CMEK?

Las CMEK están diseñadas para organizaciones que tienen datos sensibles o regulados y, por lo tanto, necesitan controlar sus propias claves de encriptación. Para obtener más información sobre si debes usar CMEK para encriptar estos datos, consulta Decide si usar CMEK.

Encriptación administrada por el cliente

Las CMEK te permiten usar tus claves criptográficas para proteger los datos almacenados en las instancias. Para encriptar estos datos, Memorystore para Redis usa claves de encriptación de datos (DEK) administradas por Google y claves de encriptación de claves (KEK) administradas por el cliente.

Puedes tener los siguientes niveles de encriptación:

  • Encriptación de DEK: Las DEK encriptan datos en Memorystore para Redis.
  • Encriptación de KEK: Las KEK encriptan las DEK.

Memorystore para Redis usa KEK para encriptar DEK y DEK para encriptar los datos almacenados. Si usas CMEK, puedes administrar las KEK que encriptan las DEK en tu instancia.

En el siguiente diagrama, se muestra cómo una instancia usa CMEK para encriptar datos. Los datos que se suben a la infraestructura de almacenamiento de Google se fragmentan, y cada fragmento se encripta con su propia DEK. Cloud KMS proporciona la KEK para encriptar las DEK, y la infraestructura de almacenamiento de Google distribuye los fragmentos de datos encriptados y las DEK encriptadas en todo el sistema.

Los datos se suben a la infraestructura de almacenamiento de Google y se dividen en fragmentos. Cada fragmento se encripta con su propia DEK. Luego, las DEK se encriptan con una KEK que se recupera de Cloud KMS. Los fragmentos encriptados y las DEK encriptadas se distribuyen en la infraestructura de almacenamiento.

En el siguiente diagrama, se muestra cómo Memorystore para Redis desencripta los datos encriptados con CMEK. Para acceder a estos datos encriptados, Memorystore para Redis envía una solicitud a Cloud KMS, que administra la KEK, para desencriptar la DEK. Luego, Cloud KMS devuelve la DEK desencriptada, que la instancia usa para desencriptar los datos almacenados.

Fragmento de datos encriptado con una DEK y almacenado con la DEK encriptada. Se envía una solicitud para desencriptar la DEK a Cloud KMS, que almacena la KEK. Cloud KMS devuelve la DEK desencriptada.

¿Cuándo interactúa Memorystore con 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 habilitada para CMEK, Memorystore para Redis verifica la CMEK.

¿Qué datos se encriptan con CMEK?

CMEK encripta los siguientes tipos de datos:

  • Datos del cliente almacenados en almacenamiento persistente
  • Metadatos relacionados con funciones de seguridad, como AUTH y la encriptación en tránsito.

Acerca de las cuentas de servicio

Cuando creas 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 puede 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, es necesario crear un llavero de claves con una clave criptográfica que use un algoritmo de encriptación simétrica. Cuando crees una instancia de Memorystore para Redis, selecciona esta clave para encriptar la instancia. Puedes crear un proyecto para tus claves y tus instancias, o proyectos diferentes para cada uno de ellos.

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. Una clave para una región multirregional o global no funciona. Si las regiones o ubicaciones no coinciden, falla una solicitud para crear la instancia.

Para el ID de recurso de la clave, 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 clave en uso (por ejemplo, si inhabilitas todas las versiones de clave), Memorystore para Redis apaga la instancia. En la Google Cloud consola, una instancia suspendida muestra una sugerencia de signo de exclamación rojo en la página Instancias. Si colocas el cursor sobre la sugerencia, aparece el estado No state. Una vez que se pueda acceder a la clave, Memorystore para Redis reanudará la instancia de forma automática.

Claves externas

Puedes usar Cloud External Key Manager (Cloud EKM) para encriptar datos en Google 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, no se crea la instancia.

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

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

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

¿Cómo importas o exportas datos para una instancia habilitada para CMEK?

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

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

Comportamiento de una versión de clave 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 haya acceso a los datos de tu instancia, inhabilita la versión de tu clave primaria. Esto apaga tu instancia. Además, si se inhabilita o destruye alguna CMEK en uso, Memorystore para Redis apaga la instancia. Esto incluye cualquier versión de clave anterior que use la instancia.

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

  • Google Cloud Consola de: En la página Instancias, aparece una sugerencia de signo de exclamación rojo junto a tu instancia. Si colocas el cursor sobre la sugerencia, aparece 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.

Vuelve a encriptar los datos protegidos por CMEK de forma manual

Memorystore para Redis no admite la unión de nuevo a pedido de los datos existentes en reposo. No puedes activar un proceso de forma manual para usar una versión de clave nueva para volver a encriptar las copias de seguridad existentes o los archivos de persistencia activos. Sin embargo, puedes usar la versión de clave nueva para encriptar los datos recién escritos.

Reemplaza una clave de KMS protegida

Si reemplazas una clave de KMS protegida por una clave de KMS diferente o una versión de clave primaria nueva, Memorystore para Redis aplica este cambio solo a las operaciones futuras.

Reemplazar una clave de KMS protegida afecta tus recursos de las siguientes maneras:

  • Copias de seguridad: Memorystore para Redis exporta copias de seguridad a buckets de Cloud Storage. La clave de encriptación de Cloud Storage controla la clave que se usa para encriptar los datos.
  • Persistencia: La próxima vez que se reinicie la instancia o tenga un evento de mantenimiento, se usará la nueva clave de KMS.
  • Caché principal: Reemplazar esta clave no tiene ningún impacto. CMEK no encripta los datos en memoria porque estos datos no se consideran datos en reposo.

Habilita o restablece la versión de clave CMEK primaria

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

Restricciones de las políticas de la organización

Memorystore para Redis admite restricciones de las políticas de la organización para CMEK. Si usas estas restricciones, puedes aplicar la protección de CMEK para tus instancias y limitar las claves de Cloud KMS que puedes usar para esta protección.

Puedes configurar las siguientes restricciones de las políticas de la organización:

  • constraints/gcp.restrictNonCmekServices: Usa esta restricción para aplicar la protección de CMEK para tus instancias. Si la API de Memorystore para Redis está en la lista de servicios de la política Deny para esta restricción, no puedes crear instancias no protegidas por CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects: Usa esta restricción para limitar las claves de Cloud KMS que puedes usar para la protección de CMEK. Si configuras esta restricción, las instancias que usan la encriptación de CMEK deben usar una clave de una organización, carpeta o proyecto permitidos.

Debido a que Memorystore para Redis y Memorystore para Redis Cluster comparten el mismo extremo (redis.googleapis.com), no puedes aplicar CMEK para instancias de forma independiente de los clústeres en Memorystore para Redis Cluster.

Para obtener más información sobre las restricciones de las políticas de la organización relacionadas con CMEK que Google administra para Memorystore para Redis, consulta Restricciones de las políticas de la organización.

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 Precios de Memorystore para Redis.

Usas la API de Cloud KMS para administrar CMEK. Cuando creas una instancia con CMEK, Memorystore usa la clave de forma periódica para encriptar 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.

Limitaciones

Se aplican las siguientes limitaciones cuando se usa CMEK con Memorystore para Redis:

  • No puedes habilitar CMEK en una instancia existente.
  • La clave, el llavero de claves y la instancia deben estar ubicados en la misma región.
  • 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 sujetas a una cuota.

¿Qué sigue?