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 con Cloud SQL. Para usar esta función de inmediato, consulta lasclaves de encriptación administradas por el cliente (CMEK).

¿Las CMEK son adecuadas para mí?

Las claves de encriptación administradas por el cliente están diseñadas para aquellas organizaciones que tienen datos sensibles o regulados y, por lo tanto, necesitan administrar la clave de encriptación por su cuenta.

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

La función CMEK te permite usar tus propias claves criptográficas para los datos en reposo en Cloud SQL. Una vez que agregues las claves de encriptación administradas por el cliente, Cloud SQL usará tu clave para acceder a los datos cada vez que se realice una llamada a la API.

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

  1. La DEK encripta datos.
  2. La KEK encripta la DEK.

La instancia de Cloud SQL almacena la DEK encriptada junto con los datos encriptados en el PD, y Google administra la KEK de Google. Con las claves de encriptación administradas por el cliente, puedes crear una clave que una la KEK de Google. 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, incluido el software, el hardware y las claves externas, se administran a través de la API de Cloud Key Management Service.

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 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 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/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

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, Ionic 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. KAJ 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.

Por lo tanto, KAJ 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.

Próximos pasos