Chaves de criptografia gerenciadas pelo cliente (CMEK)

Por padrão, todos os dados em repouso no Google Cloud, incluindo os dados no Cloud Spanner, são protegidos por meio da criptografia padrão gerenciada pelo Google. O Google Cloud lida e gerencia essa criptografia padrão para você sem nenhuma ação adicional da sua parte.

Caso você precise atender a requisitos específicos de compliance e conformidade relacionados às chaves que protegem seus dados, use as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) do Cloud Spanner. Em vez de o Google gerenciar as chaves de criptografia que protegem seus dados, o banco de dados do Cloud Spanner é protegido por uma chave que você controla e gerencia no Cloud Key Management Service (KMS). Ela pode ser uma chave simétrica, uma chave do Cloud HSM ou uma chave do Cloud External Key Manager.

Nesta página, descrevemos CMEK para o Cloud Spanner. Para obter mais informações sobre CMEK em geral, como quando e por que ativar, consulte a documentação do Cloud KMS.

Recursos

  • Controle de acesso a dados: os administradores podem alternar, gerenciar o acesso e desativar ou destruir a chave usada para proteger os dados em repouso no Cloud Spanner.
  • Auditoria: se você ativar a geração de registros de auditoria da API Cloud KMS no projeto, todas as ações na chave, incluindo as realizadas pelo Cloud Spanner, são registrados e ficam visíveis no Cloud Logging. As chaves do Cloud EKM são compatíveis com a Justificativa de acesso a chaves, que adiciona um campo de justificativa para todas as solicitações de chave. Com alguns parceiros de gerenciamento de chaves externos, é possível aprovar ou negar essas solicitações automaticamente, com base na justificativa.
  • Desempenho: não há alterações no desempenho do Cloud Spanner ou no contrato de nível de serviço.

Preços

O Cloud Spanner cobra bancos de dados habilitados para CMEK como qualquer outro banco de dados; não há custos adicionais do Cloud Spanner. Para mais informações, consulte Preços do Cloud Spanner.

O Cloud KMS é cobrado pelo custo da chave e por qualquer operação criptográfica nessa chave, sempre que o Cloud Spanner usar a chave para criptografia/descriptografia. Esperamos que esses custos sejam mínimos com base no número esperado de operações criptográficas geradas pelo Cloud Spanner. Para mais informações, consulte Preços do Cloud KMS.

O que é protegido com a CMEK

Em um banco de dados com CMEK ativado, o Cloud Spanner usa sua chave do Cloud KMS para proteger dados em repouso. Isso inclui dados em um banco de dados armazenados em disco ou flash.

Há algumas exceções. Os tipos de dados a seguir 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 Cloud Spanner, há três camadas de criptografia. Os dados em repouso são divididos em blocos de subarquivos para armazenamento. Cada bloco é criptografado no nível do armazenamento com uma chave individual. A chave utilizada para criptografar os dados em um grupo é 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 wrappedenvolvidas by por) uma chave de criptografia de chaves (KEK, na sigla em inglês). Por fim, cada KEK é criptografada com sua chave de criptografia gerenciada pelo cliente.

Quando você ativa a chave CMEK, o Cloud Spanner recriptografa apenas as KEKs intermediárias com a versão mais recente da chave CMEK. Após a conclusão da recriptografia, desativar ou excluir as versões antigas da chave CMEK não desativará o acesso ao banco de dados. Também é possível ver as versões de chave que estão sendo usadas para proteger um banco de dados.

Com a CMEK

"Diagrama ilustrando criptografia com uma chave de criptografia gerenciada pelo cliente"

Sem CMEK

"Diagrama ilustrando criptografia com uma chave de criptografia gerenciada pelo Google"

Como ativar a CMEK

Para usar a CMEK para bancos de dados do Cloud 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 Cloud Spanner poderá acessar a chave em seu nome depois de você conceder o seguinteCriptografador/Descriptografador do Cloud KMS CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter ) a um gerenciado pelo Google Conta de serviço do Cloud Spanner para começar.

Para instruções detalhadas, consulte Como usar CMEK.

As APIs de acesso a dados do Cloud Spanner, como as usadas para gerenciar sessões e executar transações em dados, são exatamente as mesmas para bancos de dados ativados para CMEK e gerenciados pelo Google. Os aplicativos não precisam especificar chaves ou configurações de criptografia ao ler ou gravar dados. Toda a criptografia é processada pelo serviço.

Gerenciamento de chaves

As operações de gerenciamento de chaves são executadas com o Cloud KMS. O Cloud Spanner não consegue detectar ou agir de acordo com as alterações de chave até que sejam propagadas pelo Cloud KMS. Algumas operações, como desativar ou destruir uma chave, podem levar até três horas para serem propagadas. As alterações nas permissões geralmente são propagadas com mais rapidez.

Depois que o banco de dados é criado, o Cloud Spanner chama o Cloud KMS a cada cinco minutos para garantir que a chave ainda seja válida.

Se o Cloud Spanner detectar que sua chave do Cloud KMS foi desativada ou destruída, uma operação para tornar seu banco de dados inacessível imediatamente. Todas as chamadas subsequentes para o banco de dados, incluindo sessões, leituras e gravações, retornarão um erro FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible.

Se as chamadas do Cloud Spanner para o Cloud KMS detectarem que uma chave desativada anteriormente foi reativada, o Cloud KMS restaurará o acesso ao banco de dados do Cloud Spanner automaticamente.

Como um status de chave indisponível é tratado

Em cenários raros, como durante períodos em que o Cloud KMS não está disponível, o Cloud Spanner pode não conseguir recuperar o status da sua chave do Cloud KMS.

Caso seu banco de dados do Cloud Spanner esteja protegido por uma chave ativada no momento em que o Cloud Spanner não consegue se comunicar com o Cloud KMS, o Cloud Spanner continuará a oferecer suporte a operações de banco de dados completas com base no melhor possível: esforço por um período de até uma hora, para minimizar o impacto de qualquer incidente na carga de trabalho.

Após uma hora, se o Cloud Spanner ainda não conseguir se conectar ao Cloud KMS, o Cloud Spanner começará a colocar o banco de dados off-line como uma medida de proteção. Os dados no banco de dados do Cloud Spanner permanecem inacessíveis até que o banco de dados possa se reconectar ao Cloud KMS e o Cloud KMS responda que a chave está ativa.

Por outro lado, se o banco de dados do Cloud Spanner estiver protegido por uma chave desativada no momento em que o Cloud Spanner não consegue se comunicar com o Cloud KMS, o banco de dados permanecerá inacessível até conseguir se reconectar. no Cloud KMS e tiver reativado sua chave.

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 Cloud Spanner continuará a ser compatível com operações completas de banco de dados usando uma versão armazenada em cache da chave por até uma hora.

Após uma hora, se o Cloud Spanner ainda não conseguir se conectar ao Cloud KMS, o Cloud 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 erro FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

Consulte a documentação do Cloud External Key Manager para mais considerações ao usar chaves externas.

Backup e restauração

Os backups do Cloud Spanner, como bancos de dados, podem ser protegidos pela CMEK ou pela criptografia gerenciada pelo Google. Por padrão, um backup usa a mesma configuração de criptografia do banco de dados, mas é possível modificar esse comportamento especificando uma configuração de criptografia diferente ao criar o backup. Se o backup for ativado para CMEK, ele será criptografado usando a versão principal da chave do KMS no momento da criação do backup. Após o backup ser criado, a chave e a versão da chave não poderão ser modificadas, mesmo que a chave do KMS seja girada. Para mais informações, consulte Como fazer backup de um banco de dados.

Ao restaurar um banco de dados a partir de um backup, por padrão, o banco de dados restaurado usa a mesma configuração de criptografia do backup. É possível modificar esse comportamento especificando uma configuração de criptografia diferente ao restaurar o banco de dados. Para restaurar um backup ativado pelo CMEK, a chave e a versão da chave usadas para criptografar o backup precisam estar disponíveis. Para mais informações, consulte Como restaurar a partir de um backup.

Logging

É possível auditar as solicitações que o Cloud 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.