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

De forma predeterminada, Cloud SQL para MySQL encripta el contenido del cliente almacenado en reposo. Cloud SQL para MySQL 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, como Cloud SQL para MySQL. 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 hacer un seguimiento del uso de las claves, 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 Cloud SQL para MySQL 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).

CMEK con Autokey de Cloud KMS

Puedes crear CMEK de forma manual para proteger tus recursos de Cloud SQL para MySQL o usar la clave automática de Cloud KMS. Con Autokey, los llaveros de claves y las claves se generan a pedido como parte de la creación de recursos en Cloud SQL para MySQL. Los agentes de servicio que usan las claves para las operaciones de encriptación y desencriptación se crean si aún no existen y se les otorgan los roles de Identity and Access Management (IAM) necesarios. Para obtener más información, consulta Descripción general de las claves automáticas.

Autokey no crea claves para los recursos BackupRun de Cloud SQL para MySQL. Cuando creas una copia de seguridad de una instancia de Cloud SQL para MySQL, la copia de seguridad se encripta con la clave administrada por el cliente de la instancia principal.

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

Para aprender a usar las CMEK creadas de forma manual para proteger tus recursos de Cloud SQL para MySQL, consulta Cómo usar claves de encriptación administradas por el cliente (CMEK).

Para usar las CMEK que crea la clave automática de Cloud KMS para proteger tus recursos de Cloud SQL para MySQL, usa los pasos que se proporcionan para Secret Manager en Cómo usar Autokey con recursos de Secret Manager como ejemplo.

Diferencias entre la encriptación administrada por Google y la encriptación administrada por el cliente

En los siguientes diagramas, se muestra el funcionamiento de la encriptación de datos en reposo dentro de una instancia de Cloud SQL 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, Cloud SQL 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 Cloud SQL con las claves CMEK?

Operación Notas
Creación de una instancia Cuando creas la instancia, la configuras para que use claves de encriptación administradas por el cliente.
Creación de copias de seguridad Durante la creación de copias de seguridad de una instancia habilitada para CMEK, las claves de encriptación administradas por el cliente encriptan los datos del usuario, como sus consultas y las respuestas obtenidas. Las copias de seguridad de una instancia con CMEK habilitadas heredan la encriptación de la instancia de origen con la misma clave de Cloud KMS.
Restablecimiento de la instancia Durante el restablecimiento de una instancia habilitada para CMEK, Cloud SQL usa la clave a fin de acceder a los datos de la copia de seguridad de la instancia que se está restableciendo. Cuando se restablece a una instancia diferente, la instancia de destino puede usar una clave distinta para la encriptación.
Creación de réplicas Cuando creas una réplica de lectura o de conmutación por error de una instancia de Cloud SQL en la misma región, esta hereda la CMEK de la instancia superior. Si creas una réplica de lectura o de conmutación por error en una región diferente, debes seleccionar una CMEK de la otra región. Cada región usa su propio conjunto de claves.
Creación de clones Los clones de una instancia habilitada para CMEK heredan la encriptación 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 verifica la clave CMEK.

¿Qué ubicaciones admiten instancias de Cloud SQL con CMEK habilitadas?

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

Acerca de las cuentas de servicio

Cuando las instancias de Cloud SQL tienen CMEK habilitadas, debes usar una cuenta de servicio para solicitar acceso a la clave desde Cloud KMS.

Para usar una clave de encriptación administrada por el cliente en un proyecto, debes tener una cuenta de servicio y otorgarle acceso a ella a la clave de encriptación administrada por el cliente. La cuenta de servicio debe existir dentro del proyecto. La cuenta de servicio es visible en todas las regiones.

Si usas Console para crear una instancia, Cloud SQL crea de forma automática la cuenta de servicio la primera vez que eliges la opción Clave administrada por el cliente (si una cuenta de servicio aún no existe). No necesitas tener permisos especiales en la cuenta de usuario cuando Cloud SQL crea la cuenta de servicio de manera automática.

Acerca de las claves

En Cloud KMS, es necesario crear un llavero de claves con una clave criptográfica que esté configurado con una ubicación. Cuando crees una instancia de Cloud SQL nueva, selecciona esta clave para encriptar la instancia.

Cuando crees instancias de Cloud SQL nuevas que usen claves de encriptación administradas por el cliente, debes conocer el ID y la región de la clave. Debes ubicar las instancias de Cloud SQL nuevas en la misma región en la que se encuentra la clave de encriptación administrada por el cliente que está asociada con la instancia. Puedes crear un solo proyecto para las instancias y las claves de Cloud SQL, o proyectos diferentes.

Las claves de encriptación administradas por el cliente usan este 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 clave), Cloud SQL suspende la instancia. Cuando se pueda acceder a la clave de nuevo, Cloud SQL reanudará la instancia de forma automática.

Cuando se rotan las claves, las instancias que se encriptan con esa clave no se vuelven a encriptar de forma automática con la versión de clave primaria nueva. Puedes volver a encriptar cualquier réplica o instancia principal de CMEK existente con la nueva versión de clave primaria. Si deseas obtener más información sobre cómo volver a encriptar una instancia o una réplica de Cloud SQL después de una rotación de claves, consulta Vuelve a encriptar una instancia o réplica habilitada para CMEK existente.

Administradores de claves externas

Puedes usar claves almacenadas en administradores de claves externos, como Fortanix, Futurex o Thales, como tus claves de encriptación administradas por el cliente. Para obtener información sobre cómo usar claves externas con Cloud KMS, consulta Cloud External Key Manager (Cloud EKM).

Key Access Justifications

Puedes usar Key Access Justifications (KAJ) como parte de Cloud EKM. Key Access Justifications te permite ver el motivo de cada solicitud de Cloud EKM. Además, según la justificación proporcionada, puedes aprobar o rechazar una solicitud de forma automática. Para obtener más información, consulta la descripción general de Key Access Justifications.

Por lo tanto, Key Access Justifications proporciona control adicional sobre tus datos mediante una justificación para cada intento de desencriptar los datos.

Para obtener información relacionada sobre el uso de tus claves con instancias de Cloud SQL, consulta Crea una instancia de Cloud SQL con CMEK.

¿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 exportación o importación, debes establecer una clave de encriptación administrada por el cliente en el depósito de Cloud Storage antes de exportar los datos a él. No hay requisitos ni restricciones especiales para importar datos a una instancia nueva cuando los datos se almacenaron con anterioridad en una instancia habilitada con una clave de encriptación administrada por el cliente.

Restricciones

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

  • No puedes habilitar las claves de encriptación administradas por el cliente en una instancia existente.
  • 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 nueva para la región de la réplica.
  • No puedes asignar una clave diferente a un clon.
  • No puedes usar claves de encriptación administradas por el cliente para encriptar lo siguiente:
    • Servidores externos (instancias principales externas y réplicas externas)
    • Metadatos de instancias, 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étera
  • No puedes usar claves de encriptación administradas por el cliente para encriptar datos del usuario en tránsito, como consultas de usuario y las respuestas obtenidas.
  • Después de crear una instancia de Cloud SQL, no puedes cambiar el tipo de clave de encriptación. No puedes cambiar de una clave de encriptación administrada por Google a una clave de Cloud Key Management Service (KMS) ni viceversa.

¿Qué sigue?