Nesta página, descrevemos as chaves de criptografia gerenciadas pelo cliente (CMEK) para o Spanner. Para mais informações sobre CMEK em geral, como quando e por que ativar, consulte a documentação do Cloud Key Management Service.
Por padrão, o Spanner criptografa o conteúdo do cliente em repouso. O Spanner processa a criptografia para você sem nenhuma ação adicional da sua parte. Essa opção é chamada de criptografia padrão do Google.
Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Spanner. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Ao usar o Cloud KMS, é possível também monitorar o uso de chaves, ver registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e responsável pelo gerenciamento das chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.
Depois que você configura os recursos com CMEKs, a experiência de acesso aos seus recursos do Spanner é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
Para saber como usar CMEKs criadas manualmente para proteger seus recursos do Spanner, consulte Proteger um banco de dados com CMEK.
CMEK com o Autokey do Cloud KMS
É possível criar CMEKs manualmente para proteger seus recursos do Spanner ou usar o Autokey do Cloud KMS. Com o Autokey, keyrings e chaves são gerados sob demanda para oferecer suporte à criação de recursos no Spanner. Os agentes de serviço que usam as chaves para operações de criptografia e descriptografia são criados se ainda não existirem e receberem os papéis necessários do Identity and Access Management (IAM). Para mais informações, consulte Visão geral do Autokey.
O Spanner é compatível apenas com o Autokey do Cloud KMS ao criar recursos usando o Terraform ou a API REST. Não é possível usar o Autokey do Cloud KMS para criar várias chaves regionais (de região única) do Cloud KMS para um banco de dados do Spanner.
Para usar as CMEKs criadas por autokey do Cloud KMS para proteger seus recursos do Spanner, use as etapas fornecidas para o Secret Manager em Usar autokey com recursos do Secret Manager como exemplo.
Recursos
- Controle de acesso a dados:os administradores podem girar, gerenciar o acesso e desativar ou destruir a chave usada para proteger os dados em repouso no Spanner.
- Auditoria: se você ativar a geração de registros de auditoria para a API Cloud KMS no seu projeto, todas as ações na chave, incluindo as realizadas pelo Spanner, serão registradas e visualizáveis no Cloud Logging. As chaves do Cloud EKM são compatíveis com a justificação de acesso de chaves, que adiciona um campo de justificativa a todas as solicitações de chaves. Os parceiros de gerenciamento de chaves externos permitem aprovar ou negar automaticamente essas solicitações com base na justificativa.
- Desempenho: não há alterações no desempenho do Spanner nem no contrato de nível de serviço ao usar a CMEK.
- Suporte a várias chaves regionais: é possível criar várias chaves regionais (de região única) do Cloud KMS para proteger um banco de dados em uma configuração de instância personalizada, birregional ou multirregional do Spanner.
Preços
O Spanner fatura os bancos de dados ativados para CMEK, como qualquer outro banco de dados. Não há custos adicionais do Spanner para ativar a CMEK. Para mais informações, consulte os preços do Spanner.
Você receberá cobranças do Cloud KMS pelo custo da chave e por qualquer operação criptográfica nessa chave, sempre que ela for usada para criptografia/descriptografia. Esperamos que esses custos sejam mínimos com base no número esperado de operações criptográficas geradas pelo Spanner. Para mais informações, consulte os preços do Cloud KMS.
O que é protegido com a CMEK
Em um banco de dados ativado para CMEK, o Spanner usa suas chaves do Cloud KMS para proteger dados em repouso. Isso inclui dados em um banco de dados armazenado em disco ou flash.
Veja a seguir algumas exceções. Os seguintes tipos de dados são protegidos pela criptografia padrão em repouso do Google e não pela chave CMEK:
- Um subconjunto de chaves de linha que marcam os limites do intervalo
- Como depurar dados, incluindo dumps de núcleo e registros operacionais
- Dados em trânsito ou memória
- Metadados do banco de dados
No Spanner, há três camadas de criptografia. Os dados em repouso são divididos em grupos de subarquivos para serem armazenados, e cada um deles é criptografado no nível de armazenamento com uma chave individual. A chave utilizada para criptografar os dados em um bloco é chamada de chave de criptografia de dados (DEK, na sigla em inglês). Devido ao grande volume de chaves no Google e à necessidade de baixa latência e alta disponibilidade, essas chaves são armazenadas próximas aos dados criptografados. As DEKs são criptografadas com (ou encapsuladas por) uma chave de criptografia de chaves (KEK, na sigla em inglês). Por fim, cada KEK é criptografada com sua CMEK.
Quando você alterna a chave CMEK, o Spanner criptografa novamente apenas as KEKs intermediárias com a versão primária mais recente da chave CMEK. Quando a nova criptografia for concluída, a desativação ou a exclusão das versões anteriores da chave CMEK não desativará o acesso ao banco de dados. É possível também visualizar as versões de chave que estão sendo usadas para proteger um banco de dados.
Com a CMEK

Sem CMEK

Ativar a CMEK
Para usar CMEK para bancos de dados do Spanner, você precisa criar um novo banco de dados
e especificar a chave do Cloud KMS no momento da criação do banco de dados.
O Spanner poderá acessar a chave em seu nome depois que você conceder
o papel Criptografador/Descriptografador do Cloud KMS CryptoKey
(roles/cloudkms.cryptoKeyEncrypterDecrypter) a uma conta de serviço do
Spanner gerenciada pelo Google.
Para instruções detalhadas, consulte Proteger um banco de dados com CMEK.
As APIs de acesso aos dados do Spanner, como aquelas usadas para gerenciar sessões e executar transações em dados, são exatamente as mesmas para CMEK e Google-owned and Google-managed encryption keys. Os aplicativos não precisam especificar chaves ou configurações de criptografia ao ler ou gravar dados. Toda a criptografia é processada pelo serviço.
Gerenciar chaves
As operações de gerenciamento de chaves são executadas com o Cloud KMS. O Spanner não pode detectar nem agir sobre nenhuma alteração de chave até que seja propagado pelo Cloud KMS. Algumas operações, como desativar ou destruir uma chave, podem levar até três horas para serem propagadas; as mudanças nas permissões geralmente são propagadas muito mais rápido.
Depois que o banco de dados for criado, o Spanner chamará o Cloud KMS a cada cinco minutos aproximadamente para garantir que a chave ainda seja válida.
Se o Spanner detectar que a chave do Cloud KMS foi desativada ou destruída, uma operação para tornar o banco de dados inacessível começará imediatamente. Todas as chamadas subsequentes para o banco de dados, incluindo sessões, leituras,
e gravações, retornam um erro FAILED_PRECONDITION: KMS key required by the
Spanner resource is not accessible. Se as chamadas do Spanner no Cloud KMS detectarem que uma chave desativada anteriormente foi
reativada, o Cloud KMS restaurará o acesso ao banco de dados do Spanner
automaticamente.
Além disso, se um banco de dados estiver protegido por várias chaves regionais e todas as chaves forem desativadas ou destruídas, o Spanner começará imediatamente a tornar o banco de dados inacessível. Se o Spanner detectar que apenas um subconjunto das chaves do banco de dados está desativado ou destruído, ele desativará o banco de dados por um período de até 12 horas. A desativação ou destruição de apenas um subconjunto de chaves em um banco de dados ativado para CMEK é fortemente desencorajada e pode resultar em comportamento incerto. Para evitar que isso aconteça, use a
métrica de chaves CMEK do Spanner
(instance/replica/cmek/total_keys) para acionar um alerta se um subconjunto de chaves for
desativado ou destruído. Para mais informações, consulte
Criar alerta para desativar um subconjunto de CMEK.
Criar alerta para desativar um subconjunto de CMEK
É possível usar a
métrica de chaves CMEK do Spanner
(/instance/replica/cmek/total_keys) para acionar um alerta se um subconjunto de CMEK
for desativado ou destruído. Para criar essa política de alertas, expanda as etapas e
configurações a seguir:
Configurações da política de alertas da CMEK.
| Novo estado Campo |
Valor |
|---|---|
| Recurso e métrica | No menu Recursos, selecione Instância do Spanner. No menu Categorias de métrica, selecione Instância. No menu Métricas, selecione Chaves CMEK. (O metric.type é spanner.googleapis.com/instance/replica/cmek/total_keys).
|
| Filtrar | instance_id = INSTANCE_IDis_key_revoked = TRUE |
| Séries cruzadas Série temporal agrupada por |
database |
| Várias séries Agregação de série temporal |
sum |
| Janela contínua | 10 m |
| Função de janela contínua | mean |
| Campo Configurar gatilho de alerta |
Valor |
|---|---|
| Tipo de condição | Threshold |
| Acionador de alerta | Any time series violates |
| Posição do limite | Above threshold |
| Limite | 0
|
| Teste a janela novamente | 1 hr |
| Novo estado Campo |
Valor |
|---|---|
| Recurso e métrica | No menu Recursos, selecione Instância do Spanner. No menu Categorias de métrica, selecione Instância. No menu Métricas, selecione Chaves CMEK. (O metric.type é spanner.googleapis.com/instance/replica/cmek/total_keys).
|
| Filtrar | instance_id = INSTANCE_IDis_key_revoked = FALSE |
| Séries cruzadas Série temporal agrupada por |
database |
| Várias séries Agregação de série temporal |
sum |
| Janela contínua | 10 m |
| Função de janela contínua | mean |
| Campo Configurar gatilho de alerta |
Valor |
|---|---|
| Tipo de condição | Threshold |
| Acionador de alerta | Any time series violates |
| Posição do limite | Above threshold |
| Limite | 0
|
| Teste a janela novamente | 1 hr |
| Configurar gatilho de alerta Campo |
Valor |
|---|---|
| Gatilho de várias condições | All conditions are met |
Depois de criar o alerta, se o Spanner detectar que um subconjunto de CMEK foi desativado, um item de resumo do incidente vai aparecer na tabela Incidentes na página Detalhes da política do alerta. Também é possível configurar canais de notificação opcionais. Para saber mais, consulte Criar e gerenciar canais de notificação.
Como um status de chave indisponível é tratado
Em cenários raros, como em períodos em que o Cloud KMS não está disponível, o Spanner talvez não consiga recuperar o status da sua chave do Cloud KMS.
Se o banco de dados do Spanner estiver protegido por uma chave que é ativada no momento em que o Spanner não conseguir se comunicar primeiro com o Cloud KMS, o Spanner continuará a oferecer suporte a operações completas de banco de dados em uma esforço por um período de até uma hora, para minimizar o impacto de qualquer incidente como essa na sua carga de trabalho. Depois de uma hora, se o Spanner ainda não puder se conectar com o Cloud KMS, o Spanner começará a colocar o banco de dados off-line como uma medida de proteção. Os dados no seu banco de dados do Spanner permanecem inacessíveis até que seu banco de dados possa se reconectar com o Cloud KMS e o Cloud KMS responda que a chave está ativa.
Por outro lado, se o banco de dados do Spanner estiver protegido por uma chave desativada durante o primeiro momento em que o Spanner não consegue se comunicar com o Cloud KMS, o banco de dados permanecerá inacessível até que seja possível se reconectar. no Cloud KMS e você reativou sua chave.
Se você estiver usando várias chaves regionais para proteger um banco de dados do Spanner, apenas as réplicas protegidas por uma chave localizada no Cloud KMS regional indisponível serão afetadas pela indisponibilidade.
Considerações sobre chaves externas
Quando você usa uma chave do Cloud EKM, o Google não tem controle sobre a disponibilidade da sua chave gerenciada externamente no sistema de parceiros de gerenciamento de chaves externas.
Se uma chave gerenciada externamente não estiver disponível, o Spanner continuará oferecendo suporte a operações completas de banco de dados da melhor forma possível por até uma hora.
Depois de uma hora, se o Spanner ainda não puder se conectar com o Cloud KMS, o Spanner começará a colocar o banco de dados off-line como uma medida de proteção. As chamadas para o banco de dados falharão com um
FAILED_PRECONDITION erro: External key error: Could not find a key resource
at the key URI.
Se você estiver usando várias chaves do Cloud EKM para proteger seu banco de dados do Spanner, apenas as réplicas protegidas pela chave indisponível serão afetadas pela indisponibilidade.
Para mais considerações ao usar chaves externas, consulte a documentação do Cloud External Key Manager.
Backup e restauração
É possível usar CMEK ou Google-owned and Google-managed encryption keys para proteger backups do Spanner . Por padrão, um backup usa a mesma configuração de criptografia do banco de dados, mas é possível substituir esse comportamento especificando uma configuração de criptografia diferente ao criar o backup. Se o backup estiver ativado para a CMEK, ele será criptografado usando a versão primária da chave KMS no momento da criação do backup. Depois que o backup é criado, a chave e a versão de chave do backup não podem ser modificadas, mesmo que a chave KMS seja girada Para mais informações, consulte Fazer backup de um banco de dados.
Quando você restaura um banco de dados de um backup, por padrão, o banco de dados restaurado usa a mesma configuração de criptografia do backup. É possível substituir esse comportamento especificando uma configuração de criptografia diferente ao restaurar o banco de dados. Para restaurar um backup ativado para CMEK, a chave e a versão de chave usadas para criptografar o backup precisam estar disponíveis. Para mais informações, consulte Restaurar de um backup.
É possível realizar operações de backup, como criar, copiar e restaurar, em um banco de dados criptografado com várias chaves regionais.
Todos os backups criados por programações de backup podem ser protegidos por CMEK ou Google-owned and Google-managed encryption keys.
Particionamento geográfico
É possível usar CMEK ou Google-owned and Google-managed encryption keys para proteger bancos de dados do Spanner que usam particionamento geográfico. Ao usar o particionamento geográfico, é necessário usar uma chave regional do Cloud KMS para cada local de réplica da instância, incluindo aqueles na configuração de partição da instância. Chaves multirregionais não são compatíveis. Cada chave regional do Cloud KMS precisa estar localizada na mesma região que a réplica da instância do Spanner ou o local da partição da instância correspondente.
Por exemplo, se o banco de dados do Spanner estiver na configuração de instância multirregional nam3, com partições de instância localizadas em europe-west1 e europe-west2, será necessário criar chaves do Cloud KMS nas seguintes regiões:
us-east4(parte denam3)us-east1(parte denam3)us-central1(parte denam3)europe-west1(local da partição da instância)europe-west2(local da partição da instância)
Para mais informações, consulte Proteger um banco de dados com CMEK.
Logging
É possível auditar as solicitações que o Spanner envia para o Cloud KMS em seu nome no Logging, se você tiver ativado a geração de registros de auditoria para a API Cloud KMS no seu projeto. Essas entradas de registro do Cloud KMS são visíveis em Logging.
Exigir ou limitar a CMEK na sua organização
É possível definir políticas em toda a organização sobre o uso da proteção CMEK em vários Google Cloud produtos, incluindo o Spanner. Com essas políticas, é possível:
Exigir que novos bancos de dados do Spanner criados pela sua organização usem a proteção CMEK.
Limitar quais chaves do Cloud KMS da sua organização estão disponíveis para proteção CMEK.
Para mais informações, consulte Políticas da organização CMEK.
A seguir
- Saiba como proteger um banco de dados com CMEK.