En esta página, se describe cómo usar claves de encriptación administradas por el cliente (CMEK) creadas de forma manual para Spanner.
Para obtener más información sobre las CMEK, consulta la descripción general de las claves de encriptación administradas por el cliente (CMEK).
Crea una base de datos habilitada con CMEK
Crea una clave en Cloud Key Management Service (Cloud KMS). Puedes usar los siguientes tipos de claves que tienen diferentes niveles de protección en Spanner:
La clave debe estar en la misma ubicación que tu instancia de Spanner. Por ejemplo, si la configuración de tu instancia de Spanner está en
us-west1, la ubicación del llavero de claves de Cloud KMS también debe serus-west1.No todas las configuraciones de instancias multirregionales de Spanner tienen una ubicación de llavero de claves de Cloud KMS correspondiente. En el caso de las bases de datos de Spanner en configuraciones de instancias personalizadas, birregionales o multirregionales, puedes usar varias claves regionales (de una sola región) de Cloud KMS para proteger tu base de datos. Por ejemplo:
- Si tu base de datos de Spanner se encuentra en la configuración de instancia multirregional
nam14, puedes crear claves de Cloud KMS enus-east4,northamerica-northeast1yus-east1. - Si tu base de datos se encuentra en una configuración de instancia personalizada que usa
nam3como configuración de instancia base con una réplica adicional de solo lectura enus-central2, puedes crear claves de Cloud KMS enus-east4,us-east1,us-central1yus-central2.
Opcional: Para ver una lista de las ubicaciones de réplicas en la configuración de tu instancia de Spanner, usa el comando
gcloud spanner instances get-locations:gcloud spanner instances get-locations <var>INSTANCE_ID</var>Para obtener más información, consulta los siguientes recursos:
- Si tu base de datos de Spanner se encuentra en la configuración de instancia multirregional
Otorga acceso a Spanner a la clave.
En Cloud Shell, crea y muestra el agente de servicio, o bien muéstralo si la cuenta ya existe:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_IDSi se te solicita que instales el componente Comandos Beta de gcloud, escribe
Y. Después de la instalación, el comando se reinicia de forma automática.El comando
gcloud services identitycrea o recupera el agente de servicio que Spanner puede usar para acceder a la clave de Cloud KMS en tu nombre.El ID de la cuenta de servicio tiene el formato de una dirección de correo electrónico:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.comOtorga el rol Encriptador/Desencriptador de CryptoKey de Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter) a la cuenta de servicio para cada región (--location) en la configuración de tu instancia de Spanner. Para ello, ejecuta el comandogcloud kms keys add-iam-policybinding:gcloud kms keys add-iam-policy-binding KMS_KEY \ --location KMS_KEY_LOCATION \ --keyring KMS_KEY_RING \ --project=PROJECT_ID \ --member serviceAccount:service-xxx@gcp-sa-spanner.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypterEste es un ejemplo del resultado:
Updated IAM policy for key [KMS_KEY]Si usas varias claves de Cloud KMS para proteger tu base de datos, ejecuta el comando
gcloud kms keys add-iam-policybindingpara todas tus claves.Este rol garantiza que la cuenta de servicio tenga permiso para encriptar y desencriptar con la clave de Cloud KMS. Para obtener más información, consulta Permisos y roles de Cloud KMS.
Crea la base de datos y especifica tu clave de Cloud KMS.
Console
Usa la consola para crear bases de datos en configuraciones de instancias regionales.
En la consola de Google Cloud , ve a la página Instancias.
Haz clic en la instancia en la que deseas crear una base de datos.
Haz clic en Crear base de datos y completa los campos obligatorios.
Haz clic en Mostrar opciones de encriptación.
Selecciona Clave de Cloud KMS.
Selecciona una clave de la lista desplegable.
La lista de claves se limita al proyecto Google Cloud actual. Para usar una clave de un proyecto Google Cloud diferente, crea la base de datos con gcloud CLI en lugar de la consola deGoogle Cloud .
Una vez que se crea la base de datos, puedes verificar que esté habilitada para CMEK en la página Descripción general de la base de datos.

gcloud
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, personalizada o multirregional, ejecuta el comando gcloud spanner databases create:
gcloud spanner databases create DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--ddl="CREATE TABLE Users (Id INT64 NOT NULL, FirstName STRING(100) NOT NULL, LastName STRING(100) NOT NULL,) PRIMARY KEY (Id)" \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEYRING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]Para verificar que una base de datos esté habilitada para CMEK, ejecuta el comando gcloud spanner databases describe:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_IDLas bases de datos habilitadas para CMEK incluyen un campo para encryptionConfig, como se muestra en el siguiente ejemplo de resultado:
encryptionConfig:
kmsKeyNames:projects/my-kms-project/locations/eur5/keyRings/my-kms-key-ring/cryptoKeys/my-kms-key
name: projects/my-spanner-project/instances/my-instance/databases/my-db
state: READY
Bibliotecas cliente
C#
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, haz lo siguiente:
Para crear una base de datos habilitada con CMEK en una configuración de instancia multirregional, haz lo siguiente:
C++
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, haz lo siguiente:
Para crear una base de datos habilitada con CMEK en una configuración de instancia multirregional, haz lo siguiente:
Go
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, haz lo siguiente:
Para crear una base de datos habilitada con CMEK en una configuración de instancia multirregional, haz lo siguiente:
Java
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, haz lo siguiente:
Para crear una base de datos habilitada con CMEK en una configuración de instancia multirregional, haz lo siguiente:
Node.js
Para crear una base de datos habilitada para CMEK en una configuración de instancia regional, haz lo siguiente: