Esta página descreve como usar chaves de criptografia gerenciadas pelo cliente (CMEK) criadas manualmente para o Spanner.
Para saber mais sobre a CMEK, consulte a Visão geral das chaves de criptografia gerenciadas pelo cliente (CMEK).
Criar um banco de dados ativado para CMEK
Crie uma chave no Cloud Key Management Service (Cloud KMS). O Spanner oferece suporte à criação dos seguintes tipos do Cloud KMS:
A chave precisa estar no mesmo local que o Spanner. instância. Por exemplo, se a configuração da instância do Spanner estiver em
us-west1
, o local do keyring também precisará serus-west1
.Nem toda configuração de instância multirregional do Spanner tem um local de chave correspondente no Cloud KMS. Para Bancos de dados do Spanner em locais personalizados, birregionais ou multirregionais configurações de instância, é possível usar várias chaves regionais (de região única) do Cloud KMS para proteger seu banco de dados. Exemplo:
- Se o banco de dados do Spanner estiver na configuração de instância multirregional
nam14
, será possível criar chaves do Cloud KMS emus-east4
,northamerica-northeast1
eus-east1
. - Se o banco de dados estiver em uma configuração de instância personalizada que usa
nam3
como a configuração da instância base com uma réplica somente leitura adicionalus-central2
, será possível criar chaves do Cloud KMS emus-east4
,us-east1
,us-central1
eus-central2
.
Opcional: para conferir uma lista dos locais de réplica 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 saber mais, acesse os recursos a seguir:
- Se o banco de dados do Spanner estiver na configuração de instância multirregional
Conceda ao Spanner acesso à chave.
No Cloud Shell, crie e exiba o agente de serviço ou exiba-o se a conta já existir:
gcloud beta services identity create --service=spanner.googleapis.com \ --project=PROJECT_ID
Se aparecer uma solicitação para instalar o componente gcloud Beta Commands, digite
Y
. Após a instalação, o comando é reiniciado automaticamente.O comando
gcloud services identity
cria ou recebe o agente de serviço que o Spanner pode usar para acessar a chave do Cloud KMS em seu nome.O ID da conta de serviço é formatado como um endereço de e-mail:
Service identity created: service-xxx@gcp-sa-spanner.iam.gserviceaccount.com
Conceda o criptografador/descriptografador de CryptoKey do Cloud KMS(
cloudkms.cryptoKeyEncrypterDecrypter
) para a conta de serviço de cada região (--location
) na sua Configuração da instância do Spanner. Para isso, execute ogcloud kms keys add-iam-policybinding
comando: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.cryptoKeyEncrypterDecrypter
Confira um exemplo de saída:
Updated IAM policy for key [KMS_KEY]
Se você estiver usando várias chaves do Cloud KMS para proteger seu banco de dados, execute o comando
gcloud kms keys add-iam-policybinding
para todas as chaves.Essa função garante que a conta de serviço tenha permissão para criptografar e descriptografar com a chave do Cloud KMS. Para mais mais informações, consulte Permissões e papéis do Cloud KMS.
Crie o banco de dados e especifique sua chave do Cloud KMS.
Console
Use o console para criar bancos de dados em configurações de instâncias regionais.
No Console do Google Cloud, acesse a página Instâncias.
Clique na instância em que você quer criar um banco de dados.
Clique em Criar banco de dados e preencha os campos obrigatórios.
Clique em Mostrar opções de criptografia.
Selecione Chave do Cloud KMS.
Selecione uma chave na lista suspensa.
A lista de chaves é limitada ao projeto atual do Google Cloud. Para usar uma chave de um projeto diferente do Google Cloud, crie o banco de dados usando a CLI gcloud em vez do console do Google Cloud.
Depois que o banco de dados for criado, você poderá verificar se ele está habilitado para o CMK acessando a página Visão geral do banco de dados.
gcloud
Para criar um banco de dados ativado para CMEK em um local regional, personalizado ou multirregional
configuração da instância, execute o comando gcloud spanner databases create
comando:
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 um banco de dados está ativado para CMEK, execute o comando
gcloud spanner databases describe
:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Os bancos de dados ativados para CMEK incluem um campo para encryptionConfig
, conforme mostrado no
exemplo de saída a seguir:
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 de cliente
C#
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
C++
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Go
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Java
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Node.js
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
PHP
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Python
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Ruby
Para criar um banco de dados ativado para CMEK em uma configuração de instância regional:
Conferir as versões da chave em uso
O campo encryption_info
do banco de dados mostra informações sobre as versões de chave.
Quando a versão da chave de um banco de dados é alterada, a alteração não é propagada imediatamente
para encryption_info
. Pode haver um atraso até que a alteração seja refletida
nesse campo.
Console
No Console do Google Cloud, acesse a página Instâncias.
Clique na instância que contém o banco de dados que você quer visualizar.
Clique no banco de dados.
As informações de criptografia são exibidas na página Detalhes do banco de dados.
gcloud
Para receber o encryption_info
de um banco de dados, execute o
gcloud spanner databases describe
ou gcloud spanner databases list
kubectl. Exemplo:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Confira um exemplo de saída:
name: projects/my-project/instances/test-instance/databases/example-db
encryptionInfo:
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key1-location/keyRings/my-kms-key-ring1/cryptoKeys/my-kms-key1/cryptoKeyVersions/1
- encryptionType: CUSTOMER_MANAGED_ENCRYPTION
kmsKeyVersion: projects/my-kms-project/locations/my-kms-key2-location/keyRings/my-kms-key-ring2/cryptoKeys/my-kms-key2/cryptoKeyVersions/1
Desativar a chave
Para desativar as versões de chave que estão em uso, faça o seguinte: estas instruções para cada versão da chave.
Aguarde a mudança entrar em vigor. Desativar uma chave pode demorar até três horas para propagar.
Para confirmar que o banco de dados não está mais acessível, execute uma consulta no banco de dados desativado para CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
A seguinte mensagem de erro é exibida:
KMS key required by the Spanner resource is not accessible.
Ativar a chave
Para ativar as versões de chave que estão em uso pelo banco de dados, siga estas instruções estas instruções para cada chave para a versão anterior.
Aguarde a mudança ser aplicada. A ativação de uma chave pode levar até três horas para se propagar.
Para confirmar que o banco de dados não está mais acessível, execute uma consulta no banco de dados ativado para CMEK:
gcloud spanner databases execute-sql DATABASE \ --project=SPANNER_PROJECT_ID \ --instance=INSTANCE_ID \ --sql='SELECT * FROM Users'
Se a alteração entrar em vigor, o comando será executado com êxito.
Fazer backup de um banco de dados
É possível usar backups do Spanner para criar backups de seus bancos de dados. Por padrão, os backups do Spanner são criados de um banco de dados usam a mesma configuração de criptografia que o próprio banco de dados. Você pode especificar uma configuração de criptografia diferente para um backup.
Console
Use o console para criar backups em configurações de instâncias regionais.
No Console do Google Cloud, acesse a página Instâncias.
Clique no nome da instância que contém o banco de dados de que você quer fazer backup.
Clique no banco de dados.
No painel de navegação, clique em Backup/restauração.
Na guia Backups, clique em Criar backup.
Insira um nome e selecione uma data de expiração.
Opcional: clique em Mostrar opções de criptografia.
a. Se você quiser usar uma configuração de criptografia diferente para seu de backup, clique no controle deslizante ao lado de Usar criptografia atual.
a. Selecione Chave do Cloud KMS.
a. Selecione uma chave na lista suspensa.
A lista de chaves é limitada ao projeto atual do Google Cloud. Para usar uma chave de um projeto diferente do Google Cloud, crie o banco de dados usando a CLI gcloud em vez do console do Google Cloud.
Clique em Criar.
A tabela Backups exibe as informações de criptografia de cada backup.
gcloud
Para criar um backup ativado para CMEK em uma configuração de instância regional, personalizada ou multirregional, execute o comando gcloud spanner backups create
:
gcloud spanner backups create BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID \
--database=DATABASE \
--retention-period=RETENTION_PERIOD \
--encryption-type=customer_managed_encryption \
--kms-project=KMS_PROJECT_ID \
--kms-location=KMS_KEY_LOCATION \
--kms-keyring=KMS_KEY_RING \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
--async
Para verificar se o backup criado está criptografado com CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Bibliotecas de cliente
C#
Para criar um backup ativado para CMEK em uma configuração de instância regional:
C++
Para criar um backup ativado para CMEK em uma configuração de instância regional:
Go
Para criar um backup ativado para CMEK em uma configuração de instância regional:
Java
Para criar um backup ativado para CMEK em uma configuração de instância regional, faça o seguinte:
Node.js
Para criar um backup ativado para CMEK em uma configuração de instância regional:
PHP
Para criar um backup ativado para CMEK em uma configuração de instância regional:
Python
Para criar um backup ativado para CMEK em uma configuração de instância regional, faça o seguinte:
Ruby
Para criar um backup ativado para CMEK em uma configuração de instância regional:
Copiar um backup
É possível copiar um backup do banco de dados do Spanner de uma instância para outra em uma região ou projeto diferente. Por padrão, um backup copiado usa a mesma configuração de criptografia, seja ela gerenciada pelo Google ou pelo cliente, conforme a criptografia do backup de origem. É possível substituir esse comportamento especificando uma configuração de criptografia diferente ao copiar o backup. Se você quiser que o backup copiado seja criptografado com CMEK ao copiar entre regiões, especifique as chaves do Cloud KMS correspondentes às regiões de destino.
Console
Use o console para copiar um backup em uma configuração de instância regional.
No Console do Google Cloud, acesse a página Instâncias.
Clique no nome da instância que contém o banco de dados do qual você quer fazer backup.
Clique no banco de dados.
No painel de navegação, clique em Backup/restauração.
Na tabela Backups, selecione Ações para o backup e clique em Copiar
Preencha o formulário escolhendo uma instância de destino, fornecendo um nome e selecionando uma data de validade para a cópia de backup.
Opcional: se você quiser usar uma configuração de criptografia diferente para o backup, clique em Mostrar opções de criptografia.
a. Selecione Chave do Cloud KMS.
a. Selecione uma chave na lista suspensa.
A lista de chaves é limitada ao projeto atual do Google Cloud. Para usar uma chave de outro projeto do Google Cloud, crie o do BigQuery usando CLI gcloud em vez da console do Google Cloud.
Clique em Copiar.
gcloud
Copiar um backup com uma nova configuração de criptografia para uma instância diferente
no mesmo projeto, execute o seguinte gcloud spanner backups copy
comando:
gcloud spanner backups copy --async \
--source-instance=INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-backup=DESTINATION_BACKUP_NAME \
--expiration-date=EXPIRATION_DATE \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Para copiar um backup com uma nova configuração de criptografia para uma instância
em um projeto diferente, execute o seguinte comando gcloud spanner backups copy
:
gcloud spanner backups copy --async \
--source-backup=SOURCE_BACKUP_NAME \
--destination-backup=DESTINATION_BACKUP_NAME \
--encryption-type=CUSTOMER_MANAGED_ENCRYPTION \
--kms-keys=KMS_KEY_1[, KMS_KEY_2 ... ]
Para verificar se o backup copiado está criptografado com CMEK:
gcloud spanner backups describe BACKUP \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Restaurar a partir de um backup
Você pode restaurar o backup de um do banco de dados do Spanner para um novo banco de dados. Por padrão, os bancos de dados que são restaurados de um backup usam a mesma configuração de criptografia do backup, mas é possível substituir esse comportamento especificando uma configuração de criptografia diferente para o banco de dados restaurado. Se o backup for protegida por CMEK, a versão da chave usada para criar o backup precisa ser disponíveis para que possam ser descriptografados.
Console
Use o console para restaurar um backup em uma configuração de instância regional.
No Console do Google Cloud, acesse a página Instâncias.
Clique na instância que contém o banco de dados que você quer restaurar.
Clique no banco de dados.
No painel de navegação, clique em Fazer backup/Restaurar.
Na tabela Backups, selecione Ações para o backup e clique em Restaurar.
Selecione a instância a ser restaurada e nomeie o banco de dados restaurado.
Opcional: se você quiser usar uma configuração de criptografia diferente com o banco de dados restaurado, clique no controle deslizante ao lado de Usar criptografia atual.
a. Selecione Chave do Cloud KMS.
a. Selecione uma chave na lista suspensa.
A lista de chaves é limitada ao projeto atual do Google Cloud. Para usar uma chave de um projeto diferente do Google Cloud, crie o banco de dados usando a CLI gcloud em vez do console do Google Cloud.
Clique em Restaurar.
gcloud
Para restaurar um backup com uma nova configuração de criptografia, execute o seguinte:
gcloud spanner databases restore
comando:
gcloud spanner databases restore --async \
--project=SPANNER_PROJECT_ID \
--destination-instance=DESTINATION_INSTANCE_ID \
--destination-database=DESTINATION_DATABASE_ID \
--source-instance=SOURCE_INSTANCE_ID \
--source-backup=SOURCE_BACKUP_NAME
Para verificar se o banco de dados restaurado é criptografado por CMEK:
gcloud spanner databases describe DATABASE \
--project=SPANNER_PROJECT_ID \
--instance=INSTANCE_ID
Para mais informações, consulte Restaurar de um backup.
Bibliotecas de cliente
C#
Para restaurar um backup ativado para CMEK em uma configuração de instância regional, faça o seguinte:
C++
Para restaurar um backup ativado para CMEK em uma configuração de instância regional:
Go
Para restaurar um backup ativado para CMEK em uma configuração de instância regional:
Java
Para restaurar um backup ativado para CMEK em uma configuração de instância regional:
Node.js
Para restaurar um backup ativado para CMEK em uma configuração de instância regional:
PHP
Para restaurar um backup ativado para CMEK em uma configuração de instância regional:
Python
Para restaurar um backup ativado para CMEK em uma configuração de instância regional, faça o seguinte:
Ruby
Para restaurar um backup ativado para CMEK em uma configuração de instância regional, faça o seguinte:
Ver os registros de auditoria da chave do Cloud KMS
Verifique se a geração de registros está ativada para a API Cloud KMS no seu projeto.
No Console do Google Cloud, acesse o Explorador de registros.
Limite as entradas de registro na chave do Cloud KMS adicionando as seguintes linhas ao criador de consultas:
resource.type="cloudkms_cryptokey" resource.labels.location="KMS_KEY_LOCATION" resource.labels.key_ring_id="KMS_KEY_RING_ID" resource.labels.crypto_key_id="KMS_KEY_ID"
Em operações normais, as ações de criptografia e descriptografia são registradas com
INFO
gravidade. Essas entradas são registradas quando as zonas na sua instância do Spanner consultam a chave do Cloud KMS a cada cinco minutos.Se o Spanner não acessar a chave, as operações serão registradas como
ERROR
.