En esta página se describe cómo funcionan las claves de cifrado gestionadas por el cliente (CMEK) con Memorystore para Redis. Para usar esta función de inmediato, consulta el artículo Usar claves de cifrado gestionadas por el cliente (CMEK).
¿CMEK es la opción adecuada para mí?
Las claves de cifrado gestionadas por el cliente están pensadas para organizaciones que tienen datos sensibles o regulados y que necesitan gestionar sus propias claves de cifrado.
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 PD, y Google gestiona la KEK de Google. Con las claves de cifrado gestionadas por el cliente, creas una clave que envuelve la KEK de Google. Las claves de encriptado 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
Con CMEK
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.
¿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 el 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. Puedes 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 constraintconstraints/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.