Acerca de las claves de cifrado gestionadas por el cliente (CMEK)

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

De forma predeterminada, Memorystore para Redis cifra el contenido del cliente en reposo. Memorystore para Redis gestiona el cifrado por ti sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Memorystore para Redis. Si usas claves de Cloud KMS, tendrás control sobre el nivel de protección, la ubicación, el calendario de rotación, los permisos de uso y acceso, y los límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y el gestor de las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Memorystore para Redis será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

¿Quién debería usar CMEK?

Las CMEK están pensadas para organizaciones que tienen datos sensibles o regulados que deben cifrarse. Para obtener más información sobre si debes usar claves de cifrado gestionadas por el cliente para cifrar estos datos, consulta Decidir si usar claves de cifrado gestionadas por el cliente.

Cifrado gestionado por Google frente a cifrado gestionado por el cliente

La función de CMEK te permite usar tus propias claves criptográficas en los datos en reposo de Memorystore para Redis. Después de añadir claves de cifrado gestionadas por el cliente, cada vez que se haga una llamada a la API, Memorystore usará tu clave para acceder a los datos.

Memorystore usa claves de cifrado de datos (DEK) y claves de cifrado de claves (KEK) gestionadas por Google para cifrar Memorystore para Redis. Hay dos niveles de cifrado:

  • La DEK cifra los datos.
  • La KEK cifra la DEK.

La instancia de Memorystore almacena la DEK cifrada junto con los datos cifrados en el disco persistente, y Google gestiona la KEK de Google. La CMEK es la KEK que encapsula la DEK. Las claves de cifrado gestionadas por el cliente te permiten crear, revocar y eliminar la KEK.

Las claves de cifrado gestionadas por el cliente se gestionan a través de la API Cloud Key Management Service.

En los diagramas siguientes se muestra cómo funciona el cifrado de datos en reposo en una instancia de Memorystore cuando se usa el cifrado predeterminado de Google en comparación con las claves de cifrado gestionadas por el cliente.

Sin CMEK

Los datos se suben a Google, se dividen en fragmentos y cada fragmento se cifra con su propia clave de cifrado de datos. Las claves de cifrado de datos se encapsulan mediante una clave de cifrado de claves. Con el cifrado de Google predeterminado, la clave de cifrado de claves se obtiene del almacén de claves interno de Google. Los fragmentos cifrados y las claves de cifrado encapsuladas se distribuyen por toda la infraestructura de almacenamiento de Google.

Con CMEK

Los datos se suben a Google, se dividen en fragmentos y cada fragmento se cifra con su propia clave de cifrado de datos. Las claves de cifrado de datos se encapsulan mediante una clave de cifrado de claves. Con CMEK mediante Cloud KMS, la clave de cifrado de claves se obtiene de Cloud KMS. Los fragmentos cifrados y las claves de cifrado encapsuladas se distribuyen por toda la infraestructura de almacenamiento de Google.

Al desencriptar datos encapsulados con claves de encriptado gestionadas por el cliente, Memorystore usa la KEK para desencriptar la DEK y la DEK sin encriptar para desencriptar los datos en reposo.

Fragmento de datos cifrado con una DEK y almacenado con una DEK envuelta. Se envía una solicitud para desencapsular la DEK al almacenamiento del KMS, que almacena la KEK no exportable. El almacenamiento de KMS devuelve la DEK desencapsulada.

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

Operación Descripción
Creación de instancia Durante la creación de la instancia, la configuras para que use claves de cifrado gestionadas por el cliente.
Actualización de la instancia Memorystore comprueba la clave CMEK durante las actualizaciones de una instancia habilitada para CMEK.

¿Qué datos se cifran con CMEK?

La CMEK cifra los siguientes tipos de datos:

  • Datos de clientes almacenados en almacenamiento persistente.
  • Metadatos relacionados con funciones de seguridad, como AUTH y cifrado en tránsito.

Información sobre las cuentas de servicio

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

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Al conceder este permiso, la cuenta de servicio puede solicitar acceso a las claves de Cloud KMS.

Para obtener instrucciones sobre cómo conceder este permiso a la cuenta de servicio, consulta el artículo Conceder acceso a la clave a la cuenta de servicio.

Acerca de las claves

En Cloud KMS, debes crear un conjunto de claves con una clave criptográfica que utilice un algoritmo de cifrado o descifrado simétrico. Cuando creas una instancia de Memorystore, seleccionas esta clave para cifrar la instancia. Puede crear un proyecto para ambas claves e instancias de Memorystore, o bien proyectos diferentes para cada una de ellas.

CMEK está disponible en todas las ubicaciones de instancias de Memorystore. La región de la clave y del llavero de claves debe ser la misma que la de la instancia de Memorystore para Redis. No se puede usar una clave de región multirregional o global. Si las regiones no coinciden, no se podrá crear una instancia de Memorystore.

Las CMEK de Memorystore son compatibles con Cloud External Key Manager (Cloud EKM).

Las claves de cifrado gestionadas por el cliente tienen el siguiente 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 (por ejemplo, si inhabilitas la versión de clave), Memorystore cerrará la instancia sin demora excesiva. En la consola Google Cloud , una instancia suspendida muestra una descripción emergente con un signo de exclamación rojo en la página Instancias. Al colocar el cursor sobre la descripción emergente, se muestra el mensaje "Sin estado". Cuando la clave vuelva a estar accesible, Memorystore reanudará automáticamente la instancia.

¿Cómo puedo hacer que los datos cifrados con CMEK sean inaccesibles de forma permanente?

Puede que haya situaciones en las que quieras destruir de forma permanente los datos cifrados con CMEK. Para ello, elimina la versión de la clave de cifrado gestionada por el cliente. No puedes destruir el llavero ni la clave, pero sí puedes destruir las versiones de la clave.

¿Cómo puedo exportar e importar datos desde y hacia una instancia habilitada para CMEK?

Si quieres que tus datos sigan encriptados con una clave gestionada por el cliente durante una importación o exportación, debes definir una clave de cifrado gestionada por el cliente en el segmento de Cloud Storage antes de exportar datos a él.

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

Comportamiento al destruir o inhabilitar una versión de clave CMEK

Si quieres asegurarte de que no se acceda a los datos de tu instancia, puedes hacerlo inhabilitando la versión de la clave principal de tu clave de cifrado gestionada por el cliente. De esta forma, la instancia se cerrará sin demora injustificada. Además, Memorystore cierra una instancia sin demora excesiva si se inhabilita o se destruye alguna clave de cifrado gestionada por el cliente que esté en uso. Esto incluye cualquier versión de clave anterior que siga usando una instancia de Memorystore. Puedes usar gcloud o la consola de Google Cloud para ver si tu instancia está suspendida:

En la consola Google Cloud , si tu instancia está suspendida, verás una notificación roja en forma de tooltip junto a tu instancia en la página Instancias de Memorystore para Redis. La descripción emergente 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.

Volver a habilitar o restaurar una versión de clave CMEK en uso

Una instancia se muestra de nuevo después de volver a habilitar o restaurar una versión de clave CMEK en uso.

Restricciones

Se aplican las siguientes restricciones al usar claves de encriptado gestionadas por el cliente con Memorystore:

  • No puedes habilitar las claves de cifrado gestionadas por el cliente en una instancia de Memorystore.
  • La región de la clave, el llavero de claves y la instancia de Memorystore debe ser la misma.
  • Debes usar el algoritmo de cifrado y descifrado simétrico para tu clave.
  • Las tarifas de cifrado y descifrado de Cloud KMS están sujetas a una cuota.

Políticas de organización de CMEK

Memorystore para Redis admite restricciones de políticas de la organización que se pueden 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 con CMEK.

  • Si la API de Memorystore para Redis se encuentra en la lista de servicios de la política Deny del constraint constraints/gcp.restrictNonCmekServices, no se podrán crear instancias de Memorystore para Redis que no estén protegidas con CMEK.

  • Cuando se configura constraints/gcp.restrictCmekCryptoKeyProjects, Memorystore para Redis crea instancias protegidas con CMEK que se cifran con una clave de un proyecto, una carpeta o una organización permitidos.

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