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

De forma predeterminada, Cloud SQL para PostgreSQL cifra el contenido de los clientes en reposo. Cloud SQL para PostgreSQL se encarga del cifrado 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 CMEK, como Cloud SQL para PostgreSQL. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Cloud KMS también te permite monitorizar el uso de las claves, 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 Cloud SQL para PostgreSQL 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).

CMEK con Autokey de Cloud KMS

Puedes crear CMEKs manualmente para proteger tus recursos de Cloud SQL para PostgreSQL o usar Autokey de Cloud KMS. Con Autokey, los conjuntos de claves y las claves se generan bajo demanda como parte de la creación de recursos en Cloud SQL para PostgreSQL. Los agentes de servicio que usan las claves para las operaciones de cifrado y descifrado se crean si aún no existen y se les asignan los roles de gestión de identidades y accesos (IAM) necesarios. Para obtener más información, consulta la descripción general de Autokey.

Autokey no crea claves para los recursos de Cloud SQL para PostgreSQL BackupRun. Cuando creas una copia de seguridad de una instancia de Cloud SQL para PostgreSQL, esta se cifra con la clave gestionada por el cliente de la instancia principal.

Cloud SQL para PostgreSQL solo es compatible con Autokey de Cloud KMS cuando se crean recursos con Terraform o la API REST.

Para saber cómo usar CMEKs creadas manualmente para proteger tus recursos de Cloud SQL para PostgreSQL, consulta Usar claves de cifrado gestionadas por el cliente (CMEK).

Para usar las CMEKs creadas por Autokey de Cloud KMS para proteger tus recursos de Cloud SQL para PostgreSQL, sigue los pasos que se indican en el ejemplo de Uso de Autokey con recursos de Secret Manager.

Cifrado gestionado por Google frente a cifrado gestionado por el cliente

Los diagramas que aparecen a continuación muestran cómo funciona el encriptado de datos en reposo en una instancia de Cloud SQL cuando se usa el encriptado predeterminado de Google en comparación con las claves de encriptado 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 cifrados con claves de encriptado gestionadas por el cliente, Cloud SQL 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 Cloud SQL con las claves CMEK?

Operación Notas
Creación de instancia Durante la creación de la instancia, configuras la instancia para que use claves de cifrado gestionadas por el cliente.
Creación de copias de seguridad Durante las copias de seguridad de una instancia habilitada para CMEK, las claves de cifrado gestionadas por el cliente cifran los datos del usuario, como las consultas y las respuestas del usuario. Las copias de seguridad de una instancia con CMEK habilitada heredan su encriptado con la misma clave de Cloud KMS que la instancia de origen.
Restauración de instancias Durante las restauraciones de una instancia habilitada para CMEK, Cloud SQL usa la clave para acceder a los datos de la instancia de copia de seguridad que se está restaurando. Cuando se restaura en una instancia diferente, la instancia de destino puede usar otra clave para el cifrado.
Creación de réplicas Cuando creas una réplica de lectura de una instancia de Cloud SQL en la misma región, hereda la CMEK de la instancia principal. Si creas una réplica de lectura en otra región, debes seleccionar una CMEK de esa región. Cada región usa su propio conjunto de claves.
Creación de clones Los clones de una instancia habilitada para CMEK heredan el cifrado CMEK con la misma clave de Cloud KMS que la instancia de origen.
Actualización de la instancia Durante las actualizaciones de una instancia habilitada para CMEK, Cloud SQL comprueba la clave CMEK.

¿En qué ubicaciones se admiten las instancias de Cloud SQL con CMEK?

CMEK está disponible en todas las ubicaciones de instancias de Cloud SQL.

Información sobre las cuentas de servicio

Cuando tus instancias de Cloud SQL tengan habilitada la función de claves de cifrado gestionadas por el cliente (CMEK), deberás usar una cuenta de servicio para solicitar acceso a las claves de Cloud KMS.

Para usar una clave de cifrado gestionada por el cliente en un proyecto, debes tener una cuenta de servicio y concederle acceso a la clave de cifrado gestionada por el cliente. La cuenta de servicio debe estar en el proyecto. La cuenta de servicio está visible en todas las regiones.

Si usas la consola para crear una instancia, Cloud SQL creará automáticamente la cuenta de servicio la primera vez que elijas la opción Clave gestionada por el cliente (si aún no existe ninguna cuenta de servicio). No es necesario que tu cuenta de usuario tenga permisos especiales cuando Cloud SQL crea automáticamente la cuenta de servicio.

Acerca de las claves

En Cloud KMS, debes crear un conjunto de claves con una clave criptográfica y una ubicación. Cuando creas una instancia de Cloud SQL, seleccionas esta clave para cifrar la instancia.

Debes conocer el ID y la región de la clave cuando crees instancias de Cloud SQL que usen claves de encriptado gestionadas por el cliente. Debes colocar las nuevas instancias de Cloud SQL en la misma región que la clave de cifrado gestionada por el cliente asociada a la instancia. Puedes crear un proyecto para ambas claves e instancias de Cloud SQL, o bien proyectos diferentes para cada una.

Las claves de cifrado gestionadas por el cliente tienen el siguiente formato:

projects/[KMS_PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY_NAME]

Si Cloud SQL no puede acceder a la clave (por ejemplo, si inhabilitas la versión de la clave), Cloud SQL suspende la instancia. Cuando la clave vuelva a estar accesible, Cloud SQL reanudará la instancia automáticamente.

Cuando rotas claves, las instancias cifradas con esa clave no se vuelven a cifrar automáticamente con la nueva versión de la clave principal. Puedes volver a encriptar cualquier instancia principal o réplica de CMEK con la nueva versión de la clave principal. Para obtener más información sobre cómo volver a cifrar una instancia o una réplica de Cloud SQL después de una rotación de claves, consulta Volver a cifrar una instancia o una réplica con CMEK.

Administradores de claves externos

Puedes usar claves almacenadas en gestores de claves externos, como Fortanix, Futurex o Thales, como claves de cifrado gestionadas por el cliente. Para saber cómo usar claves externas con Cloud KMS, consulta Cloud External Key Manager (Cloud EKM).

Justificaciones de Acceso a Claves

Puedes usar Justificaciones de Acceso a Claves como parte de Cloud EKM. Justificaciones de Acceso a Claves te permite ver el motivo de cada solicitud de Cloud EKM. Además, en función de la justificación proporcionada, puedes aprobar o denegar automáticamente una solicitud. Para obtener más información, consulta el resumen de las justificaciones de acceso con clave.

Por lo tanto, Key Access Justifications proporciona un control adicional sobre tus datos, ya que ofrece una justificación para cada intento de descifrar los datos.

Para obtener información relacionada sobre cómo usar tus claves con instancias de Cloud SQL, consulta Crear una instancia de Cloud SQL con CMEK.

¿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 conjunto de claves 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 exportación o importació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 nueva cuando los datos se hayan almacenado previamente en una instancia habilitada con una clave de cifrado gestionada por el cliente.

Restricciones

Se aplican las siguientes restricciones al usar claves de cifrado gestionadas por el cliente:

  • No puedes habilitar claves de cifrado gestionadas por el cliente en una instancia que ya tengas.
  • No puedes asignar una clave diferente a una réplica en la misma región que la instancia principal. En el caso de las réplicas entre regiones, debes crear una clave para la región de la réplica.
  • No puedes asignar otra clave a un clon.
  • No puedes usar claves de encriptado gestionadas por el cliente para encriptar lo siguiente:
    • Servidores externos (instancias principales externas y réplicas externas)
    • Metadatos de la instancia, como el ID de la instancia, la versión de la base de datos, el tipo de máquina, las marcas, la programación de copias de seguridad, etc.
  • No puedes usar claves de encriptado gestionadas por el cliente para encriptar los datos de los usuarios en tránsito, como las consultas y las respuestas de los usuarios.
  • Una vez que hayas creado una instancia de Cloud SQL, no podrás cambiar el tipo de clave de cifrado. No puedes cambiar de una claveGoogle-owned and Google-managed encryption key a una clave de Cloud Key Management Service (KMS) ni viceversa.

Siguientes pasos