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 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. Una vez que agregues las claves de encriptación administradas por el cliente, Memorystore usará tu clave para acceder a los datos cada vez que se realice una llamada a la API.

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

  • La DEK encripta datos.
  • La KEK encripta la DEK.

La instancia de Memorystore 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. Las claves de encriptación administradas por el cliente te permiten crear, revocar y borrar la KEK.

Las claves de encriptación administradas por el cliente se administran a través de 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 cuando se usa la encriptación predeterminada de Google y cuando se usan las claves de encriptación administradas por el cliente.

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 claves de encriptación administradas por el cliente, Memorystore usa la KEK para desencriptar la DEK, y la DEK no encriptada a fin de 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.

¿Cuándo interactúa Memorystore con las claves de CMEK?

Operación Descripción
Creación de una instancia Cuando creas la instancia, la configuras para que use claves de encriptación administradas por el cliente.
Actualización de instancias Memorystore verifica la clave de CMEK durante las actualizaciones de una instancia habilitada para 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 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 Cómo otorgar acceso a la clave a la cuenta de servicio.

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 o desencriptación simétrica. Cuando creas una instancia de Memorystore nueva, seleccionas esta clave para encriptar la instancia. Puedes crear un solo proyecto para las instancias y las claves de Memorystore, o proyectos diferentes para cada uno de ellos.

La CMEK está disponible en todas las ubicaciones de instancias de Memorystore. La región de la clave y del llavero de claves debe establecerse en la misma región que la instancia de Memorystore para Redis. Una clave multirregional o de región global no funciona. La solicitud para crear una instancia de Memorystore falla si las regiones no coinciden.

La CMEK para Memorystore es compatible con Cloud External Key Manager (Cloud EKM).

Las claves de encriptación administradas por el cliente usan este formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Si Memorystore no puede acceder a ninguna versión de clave que se esté usando actualmente (por ejemplo, si inhabilitas la versión de clave), Memorystore cerrará la instancia sin demoras innecesarias. En la consola de Google Cloud , una instancia suspendida muestra una sugerencia de signo de exclamación rojo en la página Instancias. Cuando se coloca el cursor sobre la información, se muestra el mensaje "Sin estado". Cuando se pueda acceder a la clave de nuevo, Memorystore reanudará la instancia automáticamente.

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

Es posible que surjan situaciones en las que quieras destruir de forma permanente los datos encriptados con CMEK. Para hacerlo, debes destruir la versión de la clave de encriptación administrada por el cliente. No puedes destruir el llavero de claves o la clave, pero puedes destruir las versiones de clave.

¿Cómo puedo importar y exportar datos desde y hacia una instancia con CMEK habilitadas?

Si quieres que tus datos permanezcan encriptados con una clave administrada por el cliente durante una importación o exportación, debes establecer una clave de encriptación administrada por el cliente en el bucket de Cloud Storage antes de exportar los datos a él.

No existen requisitos ni restricciones especiales para importar datos a una instancia nueva de Memorystore cuando los datos se almacenaron previamente en una instancia de Memorystore habilitada para CMEK.

Comportamiento de la destrucción o inhabilitación de una versión de clave CMEK

Si deseas asegurarte de que no se acceda a los datos de tu instancia, puedes inhabilitar la versión de clave primaria de tu clave de encriptación administrada por el cliente. Si lo haces, la instancia se cerrará sin demoras innecesarias. Además, Memorystore cierra una instancia sin demoras innecesarias si se inhabilita o destruye alguna clave de encriptación administrada por el cliente en uso. Esto incluye cualquier versión de clave anterior que aún use una instancia de Memorystore. Puedes usar gcloud o la consola de Google Cloud para ver si tu instancia está suspendida:

En la consola de Google Cloud , si tu instancia está suspendida, verás una notificación de sugerencia roja junto a ella en la página Instances de Memorystore para Redis. El cuadro de información muestra "Sin estado" cuando colocas el cursor sobre él.

En el caso de gcloud, si ejecutas gcloud redis instances describe y no ves state: READY, state: REPAIRING ni ningún otro estado en los metadatos de la instancia, significa que la instancia está suspendida.

Cómo volver a habilitar o restablecer una versión de clave de CMEK en uso

Una instancia se deja de ocultar después de volver a habilitar o restablecer una versión de clave de CMEK en uso.

Restricciones

Las siguientes restricciones se aplican cuando se usan claves de encriptación administradas por el cliente con Memorystore:

  • No puedes habilitar las claves de encriptación administradas por el cliente en una instancia de Memorystore existente.
  • La región de la clave, el llavero y la instancia de Memorystore deben ser la misma.
  • Debes usar el algoritmo de encriptación o desencriptació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 se pueden usar para la protección de CMEK.

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

  • Cuando la API de Memorystore para Redis se encuentra en la lista de servicios de la política Deny bajo la restricción constraints/gcp.restrictNonCmekServices, falla la creación de Memorystore para Redis para las instancias no protegidas por CMEK.

  • Cuando se configura 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.