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

De forma predeterminada, Spanner encripta el contenido en reposo del cliente. Spanner controla la encriptación por ti sin que debas realizar acciones adicionales en tu de una parte del proyecto. Esta opción se llama encriptación predeterminada de Google.

Si quieres controlar tus claves de encriptación, puedes usar claves de encriptación administradas por el cliente. (CMEK) en Cloud KMS con servicios integrados con CMEK, como Spanner Usar las claves de Cloud KMS te brinda control sobre su protección el nivel de servicio, la ubicación, el programa de rotación, los permisos de uso y acceso, y los 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 sea propietario y administrador del claves de encriptación de claves (KEK) que protegen tus datos, controlas y administrar estas claves 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. Más información sobre tu encriptación consulta Claves de encriptación administradas por el cliente (CMEK).

Las CMEK no se pueden usar para instancia personalizada parámetros de configuración.

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 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 no lo hacen. ya existen y se les otorgaron los roles de Identity and Access Management (IAM) necesarios. Para obtener más información, consulta Descripción general de las claves automáticas.

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

Para aprender a usar de las CMEK creadas manualmente para proteger tus recursos de Spanner, consulta Protege una base de datos con claves de encriptación administradas por el cliente (CMEK).

Para usar las CMEK creadas por Autokey de Cloud KMS para proteger tus recursos de Spanner sigue 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, 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 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 se aplican cambios en el rendimiento de Spanner ni en la 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 factura el costo de la clave y cualquier operaciones criptográficas en esa clave (cada vez que Spanner usa la clave para 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 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 clave de Cloud KMS para proteger los datos en reposo. Esto incluye datos de una base de datos que se almacena en un disco ni flash.

Se aplican algunas excepciones. Los siguientes tipos de datos están protegidos por la encriptación predeterminada en reposo de Google y no por la clave de 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 el almacenamiento. Cada fragmento se encripta a nivel de almacenamiento con una clave de encriptación individual. La clave utilizada 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 clave de encriptación administrada por el cliente.

Cuando rotar la clave CMEK, Spanner solo vuelve a encriptar a las KEK intermedias con la versión principal más reciente de la clave CMEK. Una vez que cuando finalice la reencriptación, lo que inhabilita o borra las versiones anteriores de la clave CMEK 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

Habilitar 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 le otorgas Encriptador y 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 Usa 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 claves administradas por el cliente y las que son propiedad de Google y las administradas por Google. No es necesario que las aplicaciones especifiquen claves o configuraciones de encriptación cuando leen o la escritura de 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 ni realizar cambios en cualquier cambio 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 suelen propagarse 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 comienza de inmediato para hacer que tu base de datos sea inaccesible. Todas las llamadas posteriores a la base de datos, incluidas las sesiones, las operaciones de lectura y las de escritura, mostrarán 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 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 el momento en que Spanner no puede comunicarse con Cloud KMS por primera vez, Spanner seguirá admitiendo operaciones de base de datos completas de la mejor manera posible durante un período de hasta 1 hora para minimizar el impacto de cualquier incidente de este tipo en tu 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 fuera de línea como medida de protección. Los datos de tu base de datos de Spanner permanecerán inaccesibles hasta que tu 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.

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.

Consulta la documentación de Cloud External Key Manager para obtener más información. importantes cuando se usan claves externas.

Copia de seguridad y restablecimiento

Las copias de seguridad de Spanner, al igual que las bases de datos, se pueden proteger con CMEK o con 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 es con CMEK habilitada, se encripta usando la versión principal de la clave KMS en de creación de la copia de seguridad. Una vez creada la copia de seguridad, su clave y la versión de esta no se puede modificar, incluso si se rota la clave de KMS. Para obtener más información, consulta Crea una copia de seguridad de una base de datos.

Cuando restableces una base de datos a partir de 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. 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 Cómo restablecer desde una copia de seguridad.

Todas las copias de seguridad creadas por los programas de copias de seguridad se pueden proteger con CMEK o con claves de Google y administradas por 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 tienes registros de auditoría habilitados 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 se disponible para la protección con CMEK.

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