Esta página descreve 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 KMS.
Por padrão, o Spanner criptografa o conteúdo do cliente em repouso. O Spanner processa a criptografia para você sem que você precise fazer nada. 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. O uso de chaves do Cloud KMS permite 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. O uso do Cloud KMS também permite a você monitorar o uso de chaves, visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.
Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Spanner é semelhante à criptografia padrão do Google. Para mais informações 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 Cloud KMS Autokey
É 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 como parte da 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 das autokeys.
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 a chave automática do Cloud KMS para criar várias chaves regionais (de uma única região) do Cloud KMS para um banco de dados do Spanner.
Para usar as CMEKs criadas pela 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.
- Auditabilidade: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á mudanças na performance do Spanner nem no contrato de nível de serviço ao usar o CMEK.
- Suporte a várias chaves regionais:é possível criar várias chaves regionais (de uma única região) 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 Preços do Spanner.
Você vai 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 chaves de criptografia de dados (DEK, na sigla em inglês) são criptografadas 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 recriptografa novamente apenas as KEKs intermediárias com a versão primária mais recente da chave CMEK. Depois que 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 o CMEK para bancos de dados do Spanner, crie um novo banco de dados
e especifique 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 a CMEK.
As APIs de acesso a 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 a desativação ou a destruição de uma chave, podem levar até três horas para serem propagadas. As alterações nas permissões geralmente são propagadas muito mais rápido.
Depois que o banco de dados é criado, o Spanner chama 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 ao 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 para o Cloud KMS detectarem que uma chave desativada anteriormente foi
reativada, o Cloud KMS restaura o acesso ao banco de dados
do Spanner automaticamente.
Além disso, se um banco de dados for 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 em um período de 12 horas. A desativação ou destruição de apenas um
subconjunto de chaves em um banco de dados ativado para CMEK é desencorajada e pode
resultar em um 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 um alerta para desativar um subconjunto de CMEK.
Criar um alerta para desativar um subconjunto de CMEK
É possível usar a métrica
Spanner CMEK Keys
(/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, abra as etapas e as configurações a seguir:
Configurações da política de alertas do CMEK.
Novo estado Campo |
Valor |
---|---|
Recurso e métrica | No menu Resources, selecione Spanner Instance. 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_ID is_key_revoked = TRUE |
Entre séries temporais Série temporal agrupada por |
database |
Entre séries temporais Agregação de séries temporais |
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 Resources, selecione Spanner Instance. 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_ID is_key_revoked = FALSE |
Entre séries temporais Série temporal agrupada por |
database |
Entre séries temporais Agregação de séries temporais |
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 |
Campo Configurar gatilho de alerta |
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 Incidents na página Policy details 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 ativada no momento em que o Spanner não conseguir se comunicar com o Cloud KMS, o Spanner continuará oferecendo suporte a operações completas de banco de dados na melhor tentativa por um período de até uma hora para minimizar o impacto de qualquer incidente na sua carga de trabalho. Depois de uma hora, se o Spanner ainda não conseguir se conectar ao Cloud KMS, ele vai 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 ele 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 conseguir 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ê reativar 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 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 usando uma versão em cache da chave, por
até uma hora. Depois de uma hora, se o Spanner ainda não conseguir
se conectar ao Cloud KMS, ele 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
erro FAILED_PRECONDITION
: 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 gerenciador de chaves externas do Cloud.
Backup e restauração
É possível usar CMEK ou Google-owned and Google-managed encryption keys para proteger os 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 não podem ser modificadas, mesmo que a chave KMS seja alternada. 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. No entanto, as programações de backup incrementais só podem ser criptografadas usando Google-owned and Google-managed encryption keys.
Logging
É possível auditar as solicitações que o Spanner envia para o Cloud KMS em seu nome no Cloud 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 no Cloud Logging.
Exigir ou limitar o CMEK na sua organização
É possível definir políticas para toda a organização sobre o uso da proteção CMEK em vários Google Cloud produtos, incluindo o Spanner. Com essas políticas, você pode:
Exija que os novos bancos de dados do Spanner criados pela sua organização usem a proteção CMEK.
Limite quais chaves do Cloud KMS da sua organização estão disponíveis para proteção com CMEK.
Para mais informações, consulte Políticas da organização de CMEK.
A seguir
- Saiba como proteger um banco de dados com a CMEK.