Esta página descreve como usar chaves de encriptação geridas pelo cliente (CMEK) criadas manualmente para o Spanner.
Para saber mais sobre a CMEK, consulte a vista geral das chaves de encriptação geridas pelo cliente (CMEK).
Crie uma base de dados com CMEK ativadas
Crie uma chave no Cloud Key Management Service (Cloud KMS). Pode usar os seguintes tipos de chaves que têm diferentes níveis de proteção no Spanner:
A chave tem de estar na mesma localização que a instância do Spanner. Por exemplo, se a configuração da instância do Spanner estiver em
us-west1, a localização do conjunto de chaves do Cloud KMS também tem de serus-west1.Nem todas as configurações de instâncias multirregionais do Spanner têm uma localização do conjunto de chaves do Cloud KMS correspondente. Para as bases de dados do Spanner em configurações de instâncias personalizadas, de dupla região ou multirregião, pode usar várias chaves do Cloud KMS regionais (de região única) para proteger a sua base de dados. Por exemplo:
- Se a sua base de dados do Spanner estiver na configuração de instância multirregião
nam14, pode criar chaves do Cloud KMS emus-east4,northamerica-northeast1eus-east1. - Se a sua base de dados estiver numa configuração de instância personalizada que use
nam3como configuração de instância base com uma réplica só de leitura adicional emus-central2, pode criar chaves do Cloud KMS emus-east4,us-east1,us-central1eus-central2.
Opcional: para ver uma lista das localizações das réplicas na configuração da instância do Spanner, use o comando
gcloud spanner instances get-locations:gcloud spanner instances get-locations <var>INSTANCE_ID</var>Para obter mais informações, consulte os seguintes recursos:
- Se a sua base de dados do Spanner estiver na configuração de instância multirregião
Conceda acesso do Spanner à chave.
No Cloud Shell, crie e apresente o agente de serviço ou apresente-o se a conta já existir:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_IDSe lhe for pedido que instale o componente gcloud Beta Commands, escreva
Y. Após a instalação, o comando é reiniciado automaticamente.O comando
gcloud services identitycria ou obtém o agente de serviço que o Spanner pode usar para aceder à chave do Cloud KMS em seu nome.O ID da conta de serviço está formatado como um endereço de email:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.comConceda a função encriptar/desencriptar do CryptoKey do Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço para cada região (--location) na configuração da instância do Spanner. Para o fazer, execute o 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.cryptoKeyEncrypterDecrypterSegue-se um exemplo de saída:
Updated IAM policy for key [KMS_KEY]Se estiver a usar várias chaves do Cloud KMS para proteger a sua base de dados, execute o comando
gcloud kms keys add-iam-policybindingpara todas as chaves.Esta função garante que a conta de serviço tem autorização para encriptar e desencriptar com a chave do Cloud KMS. Para mais informações, consulte o artigo Autorizações e funções do Cloud KMS.
Crie a base de dados e especifique a sua chave do Cloud KMS.
Consola
Use a consola para criar bases de dados em configurações de instâncias regionais.
Na Google Cloud consola, aceda à página Instâncias.
Clique na instância onde quer criar uma base de dados.
Clique em Criar base de dados e preencha os campos obrigatórios.
Clique em Mostrar opções de encriptação.
Selecione Chave do Cloud KMS.
Selecione uma chave na lista pendente.
A lista de chaves está limitada ao Google Cloud projeto atual. Para usar uma chave de um Google Cloud projeto diferente, crie a base de dados com a CLI gcloud em vez daGoogle Cloud consola.
Depois de criar a base de dados, pode verificar se a mesma tem a CMEK ativada na página Vista geral da base de dados.

gcloud
Para criar uma base de dados com a CMEK numa configuração de instância regional, personalizada ou multirregional, execute o 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 se uma base de dados tem a CMEK ativada, execute o comando
gcloud spanner databases describe:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_IDAs bases de dados com a CMEK ativada incluem um campo para encryptionConfig, conforme mostrado no exemplo de saída seguinte:
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 criar uma base de dados com CMEK numa configuração de instância regional:
Para criar uma base de dados com a CMEK ativada numa configuração de instância de várias regiões:
C++
Para criar uma base de dados com CMEK numa configuração de instância regional:
Para criar uma base de dados com a CMEK ativada numa configuração de instância de várias regiões:
Ir
Para criar uma base de dados com CMEK numa configuração de instância regional:
Para criar uma base de dados com a CMEK ativada numa configuração de instância de várias regiões:
Java
Para criar uma base de dados com CMEK numa configuração de instância regional: