En esta página se describen las claves de cifrado gestionadas por el cliente (CMEK) de Spanner. Para obtener más información sobre la clave CMEK en general, incluido cuándo y por qué habilitarla, consulta la documentación de Cloud KMS.
De forma predeterminada, Spanner cifra el contenido del cliente en reposo. Spanner se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Spanner. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Cloud KMS también te permite monitorizar el 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 el propietario y el gestor de las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Spanner será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
Para saber cómo usar las CMEKs creadas manualmente para proteger tus recursos de Spanner, consulta el artículo Proteger una base de datos con CMEK.
CMEK con Autokey de Cloud KMS
Puedes crear CMEKs manualmente para proteger tus recursos de Spanner o usar Autokey de Cloud KMS. Con Autokey, los conjuntos de claves y las claves se generan bajo demanda como parte de la creación de recursos en Spanner. Los agentes de servicio que usan las claves para las operaciones de cifrado y descifrado se crean si aún no existen y se les asignan los roles de gestión de identidades y accesos (IAM) necesarios. Para obtener más información, consulta la descripción general de Autokey.
Spanner solo es compatible con Autokey de Cloud KMS cuando se crean recursos con Terraform o la API REST. No puedes usar Autokey de Cloud KMS para crear varias claves de Cloud KMS regionales (de una sola región) para una base de datos de Spanner.
Para usar las CMEKs creadas por Autokey de Cloud KMS para proteger tus recursos de Spanner, sigue los pasos que se indican en Usar Autokey con recursos de Secret Manager.
Funciones
- Control de acceso a los datos: los administradores pueden rotar, gestionar el acceso y inhabilitar o destruir la clave utilizada para proteger los datos en reposo en Spanner.
- Capacidad de auditoría: si habilitas el registro de auditoría de la API Cloud KMS en tu proyecto, todas las acciones que se realicen en la clave, incluidas las que lleve a cabo Spanner, se registrarán y se podrán ver en Cloud Logging. Las claves de Cloud EKM admiten Justificación de Acceso a Claves, que añade un campo de justificación a todas las solicitudes de claves. Con determinados partners externos de gestión de claves, puedes aprobar o denegar 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 al usar CMEK.
- Compatibilidad con varias claves regionales: puedes crear varias claves de Cloud KMS regionales (de una sola región) 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 igual que cualquier otra base de datos. No hay costes adicionales de Spanner por habilitar CMEK. Para obtener más información, consulta la página de precios de Spanner.
Cloud KMS te cobra tanto el coste de la clave como las operaciones criptográficas que se realicen con ella (siempre que Spanner use la clave para cifrar o descifrar). Esperamos que esos costes sean mínimos en función del número previsto 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 con CMEK habilitada, Spanner usa tus claves de Cloud KMS para proteger los datos en reposo. Esto incluye los datos de una base de datos que se almacenan en un disco o en una memoria flash.
Se aplican algunas excepciones. Los siguientes tipos de datos están protegidos por el cifrado predeterminado de Google en reposo y no por la clave CMEK:
- Un subconjunto de claves de fila que marcan los límites del intervalo.
- Datos de depuración, incluidos volcados del núcleo y registros operativos
- Datos en tránsito o en memoria
- Metadatos de bases de datos
En Spanner, hay tres capas de cifrado. Los datos en reposo se dividen en fragmentos de subarchivos para su almacenamiento, y cada fragmento se cifra en el nivel de almacenamiento con una clave de cifrado individual. La clave que se utiliza para cifrar los datos de un fragmento se denomina clave de cifrado de datos (DEK). Estas claves se almacenan cerca de los datos que cifran, debido al gran volumen de claves que tiene Google y a la necesidad de contar con una latencia baja y una disponibilidad alta. Las DEKs se cifran (o se encapsulan) con una clave de cifrado de claves (KEK). Por último, cada KEK se encripta con tu CMEK.
Cuando rotas la clave CMEK, Spanner vuelve a cifrar solo las KEKs intermedias con la versión principal más reciente de la clave CMEK. Una vez que finalice el nuevo cifrado, si inhabilitas o eliminas las versiones anteriores de la clave CMEK, no se inhabilitará el acceso a la base de datos. También puedes ver las versiones de la clave que se están usando para proteger una base de datos.
Con CMEK
Sin CMEK
Habilitar CMEK
Para usar CMEK en bases de datos de Spanner, debes crear una base de datos 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 asignes el rol Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) a una cuenta de servicio de Spanner gestionada por Google.
Para obtener instrucciones detalladas, consulta Proteger una base de datos con CMEK.
Las APIs de acceso a datos de Spanner, como las que se usan para gestionar sesiones y ejecutar transacciones en datos, son exactamente las mismas para CMEK y Google-owned and Google-managed encryption keys. Las aplicaciones no tienen que especificar claves ni configuraciones de cifrado al leer o escribir datos. El servicio se encarga de todo el cifrado.
Gestionar llaves
Las operaciones de gestión de claves se realizan con Cloud KMS. Spanner no puede detectar ni aplicar ningún cambio en las claves hasta que Cloud KMS los propague. 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.
Una vez creada la base de datos, Spanner llama a Cloud KMS cada cinco minutos para asegurarse de que la clave sigue siendo válida.
Si Spanner detecta que tu clave de Cloud KMS se ha inhabilitado o destruido, se iniciará inmediatamente una operación para que no se pueda acceder a tu base de datos. Las llamadas posteriores a la base de datos, incluidas las sesiones, las lecturas y las escrituras, devuelven 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 ha vuelto a habilitar una clave que estaba inhabilitada, Cloud KMS restaura automáticamente el acceso a la base de datos de Spanner.
Además, si una base de datos está protegida por varias claves regionales y todas las claves están inhabilitadas o destruidas, Spanner empezará inmediatamente a hacer que tu base de datos sea inaccesible. Si Spanner detecta que solo se ha inhabilitado o destruido un subconjunto de las claves de la base de datos, inhabilitará la base de datos en un plazo de 12 horas. No se recomienda inhabilitar o destruir solo un subconjunto de claves de una base de datos habilitada para CMEK, ya que podría provocar un comportamiento incierto. Para evitar que esto ocurra, puedes usar la métrica Claves de CMEK de Spanner (instance/replica/cmek/total_keys
) para activar una alerta si se inhabilita o se destruye un subconjunto de claves. Para obtener más información, consulta Crear una alerta para inhabilitar un subconjunto de CMEK.
Crear una alerta para inhabilitar un subconjunto de CMEK
Puede usar la métrica Claves CMEK de Spanner (/instance/replica/cmek/total_keys
) para activar una alerta si se inhabilita o se destruye un subconjunto de CMEKs. Para crear esta política de alertas, sigue estos pasos y configura los ajustes correspondientes:
Configuración de la política de alertas de CMEK.
Campo Nueva condición |
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 series temporales Agrupación de series temporales |
database |
En series temporales Agregación de series temporales |
sum |
Ventana de tiempo | 10 m |
Función de ventana móvil | mean |
Configurar el activador de alertas Campo |
Valor |
---|---|
Tipo de condición | Threshold |
Activador de alerta | Any time series violates |
Posición del umbral | Above threshold |
Umbral | 0
|
Ventana de repetición de la prueba | 1 hr |
Campo Nueva condición |
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 series temporales Agrupación de series temporales |
database |
En series temporales Agregación de series temporales |
sum |
Ventana de tiempo | 10 m |
Función de ventana móvil | mean |
Configurar el activador de alertas Campo |
Valor |
---|---|
Tipo de condición | Threshold |
Activador de alerta | Any time series violates |
Posición del umbral | Above threshold |
Umbral | 0
|
Ventana de repetición de la prueba | 1 hr |
Configurar el activador de alertas Campo |
Valor |
---|---|
Activador de varias condiciones | All conditions are met |
Después de crear la alerta, si Spanner detecta que se ha inhabilitado un subconjunto de CMEK, aparecerá un resumen del incidente en la tabla Incidentes de 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 gestionar canales de notificación.
Cómo se gestiona un estado de clave no disponible
En casos excepcionales, como durante los periodos en los que Cloud KMS no está disponible, es posible que Spanner no pueda obtener el estado de tu clave de Cloud KMS.
Si tu base de datos de Spanner está protegida por una clave habilitada en el momento en que Spanner no puede comunicarse con Cloud KMS, Spanner seguirá admitiendo operaciones completas de la base de datos durante un periodo de hasta una hora, según el mejor esfuerzo posible, para minimizar el impacto de cualquier incidente de este tipo en tu carga de trabajo. Si, al cabo de una hora, Spanner sigue sin poder conectarse con Cloud KMS, Spanner empezará a poner la base de datos sin conexión como medida de protección. Los datos de tu base de datos de Spanner no se podrán acceder 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 está inhabilitada en el momento en que Spanner no puede comunicarse con Cloud KMS, tu base de datos seguirá siendo inaccesible hasta que pueda volver a conectarse a Cloud KMS y hayas vuelto a habilitar la clave.
Si usas varias claves regionales para proteger una base de datos de Spanner, solo se verán afectadas por la falta de disponibilidad las réplicas protegidas por una clave que resida en el Cloud KMS regional no disponible.
Consideraciones sobre las claves externas
Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave gestionada externamente en el sistema del partner de gestión de claves externo.
Si una clave gestionada externamente no está disponible, Spanner sigue admitiendo operaciones completas de bases de datos de la mejor forma posible durante un máximo de una hora.
Si, después de una hora, Spanner sigue sin poder conectarse a Cloud KMS, Spanner empezará 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 base de datos de Spanner, solo se verán afectadas por la falta de disponibilidad las réplicas protegidas por la clave no disponible.
Para obtener más información sobre lo que debes tener en cuenta al usar claves externas, consulta la documentación de Cloud External Key Manager.
Copia de seguridad y restauración
Puedes usar CMEK o Google-owned and Google-managed encryption keys para proteger las copias de seguridad de Spanner. De forma predeterminada, una copia de seguridad usa la misma configuración de cifrado que su base de datos, pero puedes anular este comportamiento especificando otra configuración de cifrado al crear la copia de seguridad. Si la copia de seguridad tiene habilitado CMEK, se cifra con la versión principal de la clave de KMS en el momento de la creación de la copia de seguridad. Una vez creada la copia de seguridad, no se pueden modificar su clave ni su versión, aunque se rote la clave de KMS. Para obtener más información, consulta Crear una copia de seguridad de una base de datos.
Cuando restauras una base de datos a partir de una copia de seguridad, la base de datos restaurada utiliza de forma predeterminada la misma configuración de cifrado que la copia de seguridad. Puedes anular este comportamiento especificando una configuración de cifrado diferente al restaurar la base de datos. Para restaurar una copia de seguridad con CMEK, deben estar disponibles tanto la clave como la versión de la clave que se usaron para cifrar la copia de seguridad. Para obtener más información, consulta Restaurar desde una copia de seguridad.
Puedes realizar operaciones de copia de seguridad, como crear, copiar y restaurar, en una base de datos cifrada con varias claves regionales.
Todas las copias de seguridad creadas por programaciones de copias de seguridad se pueden proteger con CMEK o Google-owned and Google-managed encryption keys. Sin embargo, las programaciones de copias de seguridad incrementales solo se pueden cifrar con Google-owned and Google-managed encryption keys.
Particiones geográficas
Puedes usar CMEK o Google-owned and Google-managed encryption keys para proteger las bases de datos de Spanner que usen particiones geográficas. Cuando se usa la partición geográfica, debe usar una clave de Cloud KMS regional para cada ubicación de réplica de instancia, incluidas las de la configuración de partición de la instancia. No se admiten las claves multirregión. Cada clave de Cloud KMS regional debe estar ubicada en la misma región que la réplica de la instancia de Spanner o la partición de la instancia correspondiente.
Por ejemplo, si tu base de datos de Spanner está en la configuración de instancia multirregión nam3
, con particiones de instancia ubicadas en europe-west1
y europe-west2
, debes crear claves de Cloud KMS en las siguientes regiones:
us-east4
(parte denam3
)us-east1
(parte denam3
)us-central1
(parte denam3
)europe-west1
(ubicación de la partición de la instancia)europe-west2
(ubicación de la partición de la instancia)
Para obtener más información, consulta Proteger una base de datos con CMEK.
Almacenamiento de registros
Puedes auditar las solicitudes que Spanner envía a Cloud KMS en tu nombre en Cloud Logging si has habilitado el registro de auditoría para la API Cloud KMS en tu proyecto. Estas entradas de registro de Cloud KMS se pueden ver en Cloud Logging.
Requerir o limitar CMEK en tu organización
Puedes definir políticas para toda la organización sobre el uso de la protección con CMEK en varios productos, incluido Spanner. Google Cloud Con estas políticas, puedes hacer lo siguiente:
Exigir que las nuevas bases de datos de Spanner creadas por tu organización usen la protección de CMEK.
Limita las claves de Cloud KMS de tu organización que están disponibles para la protección con CMEK.
Para obtener más información, consulta las políticas de organización de CMEK.
Siguientes pasos
- Consulta cómo proteger una base de datos con CMEK.