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

De forma predeterminada, todos los datos en reposo en Google Cloud, incluidos los datos en Spanner, están protegidos mediante la encriptación predeterminada de Google. Google Cloud maneja y administra la encriptación por ti sin que debas realizar ninguna otra acción.

Si tienes requisitos regulatorios o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para Spanner. En lugar de que Google sea el propietario y administre las claves de encriptación que protegen tus datos, la base de datos de Spanner se protege con una clave que controlas y administras en Cloud Key Management Service (KMS). Puede ser una clave simétrica, una clave de Cloud HSM o una clave de Cloud External Key Manager.

Las CMEK no admiten configuraciones de instancias personalizadas.

En esta página, se describen CMEK para Spanner. Para obtener más información sobre CMEK en general, incluido cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

Funciones

  • Control de acceso a los datos: Los administradores pueden rotar la clave que se usa para proteger los datos en reposo, administrar el acceso a ella y también inhabilitarla o destruirla.
  • Auditabilidad: Si habilitas el registro de auditoría para la API de Cloud KMS en tu proyecto, todas las acciones en la clave, incluidas las que realiza Spanner, se registran y se pueden ver en Cloud Logging. Las claves de Cloud EKM admiten Key Access Justifications, que agrega un campo de justificación a todas las solicitudes de claves. Con determinados socios de administración de claves externas, puedes aprobar o rechazar automáticamente estas solicitudes, en función de la justificación.
  • Rendimiento: No hay cambios en el rendimiento de Spanner ni en el Acuerdo de Nivel de Servicio.

Precios

Spanner factura las bases de datos habilitadas para CMEK como cualquier otra base de datos; no hay costos adicionales de Spanner. Para obtener más información, consulta Precios de Spanner.

Cloud KMS te factura el costo de la clave y cualquier operación criptográfica relacionada (cada vez que Spanner use la clave para encriptar o desencriptar). Esperamos que esos costos sean mínimos según la cantidad esperada de operaciones criptográficas generadas por Spanner. Para obtener más información, consulta los precios de Cloud KMS.

Qué se protege con CMEK

En una base de datos habilitada para CMEK, Spanner usa tu clave de Cloud KMS para proteger los datos en reposo. Esto incluye datos en una base de datos que se almacena en el disco o en la memoria flash.

Se aplican algunas excepciones. Los siguientes tipos de datos están protegidos por la encriptación en reposo predeterminada de Google y no por la clave CMEK:

  • Un subconjunto de claves de fila que marca los límites de rango
  • Depuración de datos, incluidos los volcados de memoria y los registros operativos
  • Datos en tránsito o en memoria
  • Metadatos de la base de datos

En Spanner, hay tres capas de encriptación. Los datos en reposo se dividen en fragmentos de subarchivos para almacenamiento. Cada fragmento se encripta a nivel de almacenamiento con una clave de encriptación individual. La clave que se usa para encriptar los datos de un fragmento se denomina clave de encriptación de datos (DEK). Debido a la gran cantidad de claves que posee Google y a la necesidad de baja latencia y alta disponibilidad, estas claves se almacenan cerca de los datos que encriptan. Las DEK se encriptan (o “unen”) con una clave de encriptación de claves (KEK). Por último, cada KEK se encripta con tu clave de encriptación administrada por el cliente.

Cuando rotas la clave CMEK, Spanner vuelve a encriptar solo las KEK intermedias con la versión principal más reciente de la clave CMEK. Una vez que finalice la encriptación, inhabilitar o borrar las versiones anteriores de la clave CMEK no inhabilitará el acceso a la base de datos. También puedes ver las versiones de claves que se usan para proteger una base de datos.

Con CMEK

Diagrama en el que se ilustra la encriptación con una clave de encriptación administrada por el cliente

Sin CMEK

Diagrama en el que se ilustra la encriptación con una clave de propiedad de Google y una administrada por Google

Habilitar CMEK

Para usar CMEK en las bases de datos de Spanner, debes crear una base de datos nueva y especificar la clave de Cloud KMS en el momento de la creación de la base de datos.

Spanner puede acceder a la clave en tu nombre después de otorgar la función de encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a una cuenta de servicio de Spanner administrada por Google.

Para obtener instrucciones detalladas, consulta Usa CMEK.

Las APIs de acceso a los datos de Spanner, como las que se usan para administrar sesiones y ejecutar transacciones en los datos, son exactamente las mismas para las claves administradas por el cliente y para las que son propiedad de Google y Google. No es necesario que las aplicaciones especifiquen claves o configuraciones de encriptación cuando se leen o escriben datos. Toda la encriptación la maneja el servicio.

Administrar claves

Las operaciones de administración de claves se realizan mediante Cloud KMS. Spanner no puede detectar ni actuar sobre los cambios de clave hasta que Cloud KMS los propague. Algunas operaciones, como inhabilitar o destruir una clave, pueden tardar hasta 3 horas en propagarse. Los cambios en los permisos generalmente se propagan mucho más rápido.

Una vez que se crea la base de datos, Spanner llama a Cloud KMS aproximadamente cada 5 minutos para asegurarse de que la clave siga siendo válida.

Si Spanner detecta que tu clave de Cloud KMS se inhabilitó o destruyó, una operación para hacer que la base de datos sea inaccesible comenzará de inmediato. Cualquier llamada posterior a la base de datos, incluidas las sesiones, las operaciones de lectura y las escrituras, mostrará un error FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible.

Si las llamadas de Spanner a Cloud KMS detectan que se volvió a habilitar una clave que estaba inhabilitada, Cloud KMS restablece el acceso a la base de datos de Spanner de forma automática.

Cómo se controla un estado de clave no disponible

En situaciones poco frecuentes, como durante los períodos en que Cloud KMS no está disponible, es posible que Spanner no pueda recuperar el estado de tu clave desde Cloud KMS.

Si tu base de datos de Spanner está protegida por una clave que está habilitada en el momento en que Spanner no puede comunicarse con Cloud KMS por primera vez, Spanner continúa admitiendo operaciones completas de la base de datos según el criterio del mejor esfuerzo durante un período de hasta 1 hora para minimizar el impacto de cualquier incidente de este tipo en la carga de trabajo.

Después de una hora, si Spanner sigue sin poder conectarse con Cloud KMS, Spanner comienza a tomar la base de datos sin conexión como medida de protección. Los datos de la base de datos de Spanner permanecen inaccesibles hasta que esta puede volver a conectarse con Cloud KMS y Cloud KMS responde que la clave está activa.

Por el contrario, si la base de datos de Spanner está protegida por una clave que está inhabilitada en el momento en que Spanner no puede comunicarse por primera vez con Cloud KMS, la base de datos permanecerá inaccesible hasta que pueda volver a conectarse a Cloud KMS y hayas vuelto a habilitar la clave.

Consideraciones de claves externas

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa en el sistema de socios de administración de claves externas.

Si una clave administrada de forma externa no está disponible, Spanner seguirá admitiendo operaciones completas de bases de datos mediante una versión almacenada en caché de la clave, hasta por una hora.

Después de una hora, si Spanner aún no puede conectarse con Cloud KMS, Spanner comienza a desconectar la base de datos como medida de protección. Las llamadas a la base de datos fallarán y mostrarán el error FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

Consulta la documentación de Cloud External Key Manager para obtener más información sobre el uso de claves externas.

Copia de seguridad y restablecimiento

Las copias de seguridad de Spanner, como las bases de datos, pueden estar protegidas por CMEK o claves de Google y administradas por Google. De forma predeterminada, una copia de seguridad usa la misma configuración de encriptación que su base de datos, pero puedes anular este comportamiento si especificas una configuración de encriptación diferente cuando creas la copia de seguridad. Si la copia de seguridad está habilitada para CMEK, se encripta con la versión principal de la clave de KMS en el momento de la creación de la copia de seguridad. Una vez que se crea la copia de seguridad, su clave y versión de clave no se pueden modificar, incluso si se rota la clave de KMS. Para obtener más información, consulta Cómo crear una copia de seguridad de una base de datos.

Cuando restableces una base de datos desde una copia de seguridad, de forma predeterminada, la base de datos restablecida usa la misma configuración de encriptación que la copia de seguridad. Puedes anular este comportamiento si especificas una configuración de encriptación diferente cuando restableces la base de datos. A fin de restablecer una copia de seguridad habilitada para CMEK, la clave y la versión de clave que se usaron para encriptar la copia de seguridad deben estar disponibles. Para obtener más información, consulta Cómo restablecer desde una copia de seguridad.

Logging

Puedes auditar las solicitudes que Spanner envía a Cloud KMS en tu nombre en Cloud Logging, si habilitaste el registro de auditoría para la API de Cloud KMS en tu proyecto. Estas entradas de registro de Cloud KMS son visibles en Cloud Logging.

Exige o limita CMEK en tu organización

Puedes establecer políticas en toda la organización sobre el uso de la protección con CMEK en varios productos de Google Cloud, incluido Spanner. Con estas políticas, puedes hacer lo siguiente:

  • Requiere que las nuevas bases de datos de Spanner creadas por tu organización usen protección con CMEK.

  • Limita cuáles de las claves de Cloud KMS de tu organización están disponibles para la protección con CMEK.

Para obtener más información, consulta las políticas de la organización de CMEK.