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

En esta página, se describen las claves de encriptación administradas por el cliente (CMEK) para Spanner Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

De forma predeterminada, Spanner encripta el contenido en reposo del cliente. Spanner 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, incluido Spanner. 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 los recursos con CMEK, la experiencia de acceder a tus Los recursos de Spanner son similares al uso de 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).

Para aprender a usar las CMEK creadas de forma manual para proteger tus recursos de Spanner, consulta Cómo proteger una base de datos con CMEK.

CMEK con Autokey de Cloud KMS

Puedes crear CMEK manualmente para proteger tu o usar Autokey de Cloud KMS. Con Autokey, los llaveros de claves y las claves se generan a pedido como es parte de la creación de recursos en Spanner. 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 ver más consulta Descripción general de Autokey.

Spanner solo es compatible con Autokey de Cloud KMS cuando se crean recursos con Terraform o la API de REST. No puedes usar Autokey de Cloud KMS para crear varias regiones (una sola región) Claves de Cloud KMS para una base de datos de Spanner.

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

Funciones

  • Control de acceso a los datos: Los administradores pueden rotar, administrar el acceso e inhabilitar o destruir la clave que se usa para proteger los datos en reposo en Spanner.
  • Auditabilidad: si habilitas el registro de auditoría para la API de Cloud KMS en tu proyecto, incluidas las realizadas por Spanner, se registran y se pueden ver en Cloud Logging. Las claves de Cloud EKM admiten Key Access Justification, que agrega un campo de justificación a todas las solicitudes de claves. Con determinados socios de administración de claves externos, puedes aprobar o rechazar automáticamente estas solicitudes, según la justificación.
  • Rendimiento: No hay cambios en Spanner. el rendimiento o el Acuerdo de Nivel de Servicio con CMEK.
  • Compatibilidad con varias claves regionales: Puedes crear varias claves regionales (de una sola región) de Cloud KMS para proteger una base de datos en una configuración de instancia personalizada, birregional o multirregional de Spanner.

Precios

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

Cloud KMS factura el costo de la clave y cualquier operaciones criptográficas en esa clave (cada vez que Spanner usa el de encriptación o desencriptación). Esperamos que esos costos sean mínimos en función de la cantidad esperada de operaciones criptográficas que genera Spanner. Para obtener más información, consulta Precios de Cloud KMS.

Qué se protege con CMEK

En una base de datos habilitada para CMEK, Spanner usa tu claves para proteger los datos en reposo. Esto incluye los datos de una base de datos que se almacenan en un disco o en una unidad flash.

Se aplican algunas excepciones. Google protege los siguientes tipos de datos encriptación en reposo predeterminada 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 su almacenamiento; cada fragmento se se encriptan 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 el alto volumen de claves en Google y 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 La KEK se encripta con tu CMEK.

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. Cuando termine la nueva encriptación, inhabilita o borra la configuración no inhabilitará el acceso a la base de datos. También puedes ver las versiones de clave 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

Habilita CMEK

Para usar CMEK para 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 que lo otorgues el encriptador o desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a un rol administrado por Google Cuenta de servicio de Spanner. Para obtener instrucciones detalladas, consulta Protege una base de datos con CMEK.

APIs de acceso a datos de Spanner como las que se usan para administrar sesiones y ejecutar transacciones en datos son exactamente iguales para las CMEK y las claves de propiedad y administración de Google. Las aplicaciones no necesitan especificar claves ni configuraciones de encriptación cuando leen o escriben datos. El servicio controla toda la encriptación.

Administrar claves

Las operaciones de administración de claves se realizan mediante Cloud KMS. Spanner no puede detectar cambios clave ni tomar medidas al respecto hasta que que propaga Cloud KMS. Algunas operaciones, como inhabilitar o destruir una clave, pueden tardar hasta tres horas en propagarse. Los cambios en los permisos suelen propagarse mucho más rápido.

Después de crear la base de datos, Spanner llama a Cloud KMS aproximadamente cada cinco 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 comienza de inmediato para hacer que tu base de datos sea inaccesible. Cualquier llamada posterior a la base de datos, incluidas las sesiones, lecturas y escrituras, se muestra un error FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible. si la regla llamadas a Cloud KMS detectan que una clave Cloud KMS restablece el acceso al servidor de la base de datos automáticamente.

Además, si una base de datos está protegida por varias claves regionales y todas las claves se inhabilitan o destruyen, Spanner comienza de inmediato a hacer que tu base de datos sea inaccesible. Si Spanner detecta que solo un un subconjunto de claves de la base de datos se inhabilita o se destruyen, luego, se inhabilita de la base de datos durante un período de 12 horas. Inhabilitar o destruir solo un de claves en una base de datos con CMEK habilitadas no se recomienda y podría dan como resultado un comportamiento incierto. Para evitar que esto suceda, puedes usar la Métrica de claves CMEK de Spanner (instance/replica/cmek/total_keys) para activar una alerta si se detecta un subconjunto de claves inhabilitar o destruir. Para obtener más información, consulta Cómo crear una alerta para inhabilitar un subconjunto de CMEK.

Crear alerta para inhabilitar un subconjunto de CMEK

Puedes usar la Claves CMEK de Spanner (/instance/replica/cmek/total_keys) para activar una alerta si un subconjunto de CMEK se inhabilitan o destruyen. Para crear esta política de alertas, expande los siguientes pasos y la configuración:

Configuración de la política de alertas de CMEK

Nueva condición
Campo

Valor
Recurso y métrica En el menú Recursos, selecciona Instancia de Spanner.
En el menú Categorías de métricas, selecciona Instancia.
En el menú Métricas, selecciona Claves de CMEK.

(El valor de metric.type es spanner.googleapis.com/instance/replica/cmek/total_keys).
Filtro instance_id = INSTANCE_ID
is_key_revoked = TRUE
En las series temporales
Agrupación de las series temporales
database
En las series temporales
Agregación de series temporales
sum
Ventana progresiva 10 m
Función analítica progresiva mean
Configura el activador de alertas
Campo

Valor
Tipo de condición Threshold
Activador de alertas Any time series violates
Posición del umbral Above threshold
Umbral 0
Período para volver a probar 1 hr
Nueva condición
Campo

Valor
Recurso y métrica En el menú Recursos, selecciona Instancia de Spanner.
En el menú Categorías de métricas, selecciona Instancia.
En el menú Métricas, selecciona Claves de CMEK.

(El valor de metric.type es spanner.googleapis.com/instance/replica/cmek/total_keys).
Filtro instance_id = INSTANCE_ID
is_key_revoked = FALSE
En las series temporales
Agrupación de las series temporales
database
En las series temporales
Agregación de series temporales
sum
Ventana progresiva 10 m
Función analítica progresiva mean
Configura el activador de alertas
Campo

Valor
Tipo de condición Threshold
Activador de alertas Any time series violates
Posición del umbral Above threshold
Umbral 0
Período para volver a probar 1 hr
Configura el activador de alertas
Campo

Valor
Activador de varias condiciones All conditions are met

Luego de crear la alerta, si Spanner detecta que un subconjunto de CMEK se inhabilitó, aparecerá un elemento de resumen del incidente en el Tabla de Incidentes en la página Detalles de la política de la alerta. También puedes configurar canales de notificación opcionales. Para obtener más información, consulta Cómo crear y administrar canales de notificaciones.

Cómo se controla un estado de clave no disponible

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

Si tu base de datos de Spanner está protegida por una clave que está habilitada en la hora a la que Spanner no puede comunicarse por primera vez Cloud KMS, Spanner continúa admitiendo bases de datos completas las operaciones según el mejor esfuerzo durante un período de hasta una hora, para minimizar el impacto de cualquier incidente en tu carga de trabajo. Después de una hora, si Spanner aún no puede conectarse con Cloud KMS Spanner comienza a desconectar la base de datos como protección medir. Los datos de tu base de datos de Spanner permanecerán inaccesibles hasta que la base de datos pueda volver a conectarse con Cloud KMS y Cloud KMS responda que la clave está activa.

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

Si usas varias claves regionales para proteger un servicio en la base de datos, solo las réplicas que estén protegidas por una clave que reside en el no disponible de Cloud KMS regional se ven afectadas por la falta de disponibilidad.

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 continúa admitiendo hasta por una hora operaciones de base de datos completas mediante una versión de la clave almacenada en caché. Después de una hora, si Spanner aún no puede conectarse con Cloud KMS, comenzará a desconectar la base de datos como medida de protección. Las llamadas a la base de datos fallarán con un error FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

Si usas varias claves de Cloud EKM para proteger tu de Google Spanner, solo las réplicas que estén protegidas por no disponible se ven afectadas por la falta de disponibilidad.

Para obtener más consideraciones sobre el uso de claves externas, consulta la documentación de Cloud External Key Manager.

Copia de seguridad y restablecimiento

Puedes usar CMEK o claves de Google y administradas por Google para proteger las copias de seguridad de Spanner. De forma predeterminada, una copia de seguridad usa el mismo configuración de encriptación como su base de datos, pero puedes anular este comportamiento especificando una dirección de encriptación cuando se crea la copia. 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 su creación. Una vez creada 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 el mismo configuración de encriptación como copia de seguridad. Para anular este comportamiento, especifica un valor de encriptación cuando restableces la base de datos. Para restablecer una copia de seguridad habilitada para CMEK, la clave y la versión de clave que se usó para encriptarla deben estar disponibles. Para obtener más información, consulta Restablece una copia de seguridad.

Puedes realizar operaciones de copia de seguridad, como crear, copiar y restablecer encriptada con múltiples claves regionales.

Todas las copias de seguridad creadas por programaciones de copias de seguridad pueden protegerse con CMEK o claves administradas por Google y propiedad de Google. Sin embargo, las programaciones de copias de seguridad incrementales solo se pueden encriptar con claves de Google y administradas por Google.

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 se pueden ver en Cloud Logging.

Exige o limita CMEK en tu organización

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

  • Exige que las bases de datos de Spanner nuevas que cree tu organización usen la protección de CMEK.

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

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

¿Qué sigue?