Sobre as chaves de criptografia gerenciadas pelo cliente (CMEK)

Este documento descreve como usar chaves de criptografia gerenciadas pelo cliente (CMEK) em Cloud Key Management Service (Cloud KMS) para instâncias do Memorystore para Redis. O documento também descreve quais dados são criptografados no armazenamento permanente e como as instâncias se comportam durante eventos do ciclo de vida da chave.

O CMEK permite controlar as chaves criptográficas que protegem os dados armazenados. Ao gerenciar suas próprias chaves no Cloud KMS, você tem maior controle sobre o acesso, a rotação e o uso de chaves, o que ajuda a atender a requisitos regulamentares e de compliance rigorosos.

A implementação do CMEK oferece uma camada extra de segurança e controle sobre seus dados permanentes, como backups e arquivos de persistência. É possível ativar o CMEK apenas em novas instâncias. Não é possível aplicar o CMEK a instâncias atuais.

Quem deve usar o CMEK?

O CMEK é destinado a organizações com dados sensíveis ou regulamentados que exigem controle sobre as próprias chaves de criptografia. Para mais informações sobre se é necessário usar o CMEK para criptografar esses dados, consulte Decidir se é necessário usar o CMEK.

Criptografia gerenciada pelo cliente

O CMEK permite usar chaves criptográficas para proteger dados armazenados em instâncias. Para criptografar esses dados, o Memorystore para Redis usa chaves de criptografia de dados (DEKs) gerenciadas pelo Google e chaves de criptografia de chaves (KEKs) gerenciadas pelo cliente.

É possível ter os seguintes níveis de criptografia:

  • Criptografia DEK: as DEKs criptografam dados no Memorystore para Redis.
  • Criptografia KEK: as KEKs criptografam DEKs.

O Memorystore para Redis usa KEKs para criptografar DEKs e DEKs para criptografar os dados armazenados. Se você usar o CMEK, poderá gerenciar as KEKs que criptografam as DEKs na instância.

O diagrama a seguir mostra como uma instância usa o CMEK para criptografar dados. Os dados enviados à infraestrutura de armazenamento do Google são divididos em blocos, e cada bloco é criptografado com a própria DEK. O Cloud KMS fornece a KEK para criptografar as DEKs, e a infraestrutura de armazenamento do Google distribui os blocos de dados criptografados e as DEKs criptografadas no sistema.

Os dados são enviados para a infraestrutura de armazenamento do Google e divididos em blocos. Cada bloco é criptografado com uma DEK própria. Em seguida, as DEKs são criptografadas usando uma KEK recuperada do Cloud KMS. Os blocos criptografados e as DEKs criptografadas são distribuídos pela infraestrutura de armazenamento.

O diagrama a seguir mostra como o Memorystore for Redis descriptografa dados criptografados com CMEK. Para acessar esses dados criptografados, o Memorystore para Redis envia uma solicitação ao Cloud KMS, que gerencia a KEK, para descriptografar a DEK. Em seguida, o Cloud KMS retorna a DEK descriptografada, que a instância usa para descriptografar os dados armazenados.

Bloco de dados criptografado com a DEK e armazenado com a DEK criptografada. Uma solicitação para descriptografar a DEK é enviada ao Cloud KMS, que armazena a KEK. O Cloud KMS retorna a DEK descriptografada.

Quando o Memorystore interage com o CMEK?

Operação Descrição
criação de instância Ao criar uma instância, você a configura para usar o CMEK.
Atualização da instância Durante as atualizações de uma instância ativada para CMEK, o Memorystore para Redis verifica o CMEK.

Quais dados são criptografados usando o CMEK?

O CMEK criptografa os seguintes tipos de dados:

  • Dados do cliente armazenados no armazenamento permanente.
  • Metadados relacionados a recursos de segurança, como AUTH e criptografia em trânsito.

Sobre contas de serviço

Ao criar uma instância com CMEK, é necessário conceder o papel cloudkms.cryptoKeyEncrypterDecrypter à conta de serviço do Memorystore para Redis que tem o seguinte formato:

  service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
  

A concessão dessa permissão permite que a conta de serviço solicite acesso à chave do Cloud KMS.

Para instruções sobre como conceder essa permissão à conta de serviço, consulte Conceder acesso à chave para a conta de serviço do Memorystore para Redis.

Sobre as chaves

No Cloud KMS, é necessário criar um keyring com uma chave criptográfica que use um algoritmo de criptografia simétrica. Ao criar uma instância do Memorystore para Redis, selecione essa chave para criptografar a instância. É possível criar um projeto para as chaves e instâncias ou projetos diferentes para cada um deles.

O CMEK está disponível em todos os locais de instâncias do Memorystore para Redis. É necessário criar o keyring e a chave na mesma região em que você quer criar a instância. Uma chave para uma região global ou multirregional não funciona. Se as regiões ou locais não corresponderem, uma solicitação de criação da instância falhará.

Para o ID do recurso da chave, o CMEK usa o seguinte formato:

projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Se o Memorystore para Redis não puder acessar nenhuma versão de chave em uso (por exemplo, se você desativar todas as versões de chave), o Memorystore para Redis vai encerrar a instância. No Google Cloud console do, uma instância suspensa mostra uma dica de ferramenta de ponto de exclamação vermelho na página Instâncias. Se você passar o cursor sobre a dica de ferramenta, um status No state vai aparecer. Depois que a chave ficar acessível, o Memorystore para Redis vai retomar a instância automaticamente.

Chaves externas

Use o Cloud External Key Manager (Cloud EKM) para criptografar dados no Google Cloud Google Cloud usando chaves externas que você gerencia.

Quando você usa uma chave do Cloud EKM, o Google não tem controle sobre a disponibilidade da sua chave gerenciada externamente. Se a chave não estiver disponível quando você criar a instância, ela não será criada.

Para mais considerações ao usar chaves externas, consulte Cloud External Key Manager.

Como tornar os dados criptografados com CMEK permanentemente inacessíveis?

Pode haver situações em que você queira tornar os dados criptografados com CMEK permanentemente inacessíveis. Para isso, destrua a versão da chave. Para mais informações sobre como destruir versões da chave, consulte Destruir e restaurar versões de chave.

Como importar ou exportar dados para uma instância ativada para CMEK?

Se você quiser que os dados permaneçam criptografados com uma CMEK ao exportar dados, defina uma CMEK no bucket do Cloud Storage antes de exportar dados para ele.

Se os dados estiverem armazenados em uma instância ativada para CMEK, não haverá requisitos ou restrições especiais para importar dados para uma nova instância.

Comportamento de uma versão de chave CMEK

Esta seção fornece informações sobre o que acontece quando você desativa, destrói, alterna, ativa e restaura uma versão de chave.

Desativar ou destruir uma versão de chave CMEK

Se você quiser garantir que não haja acesso aos dados na instância, desative a versão da chave primária. Isso encerra a instância. Além disso, se qualquer CMEK em uso for desativada ou destruída, o Memorystore para Redis vai encerrar a instância. Isso inclui qualquer versão de chave mais antiga que a instância usa.

Para saber se o Memorystore para Redis suspende sua instância, use uma das seguintes interfaces:

  • Google Cloud Console do: na página Instâncias, uma dica de ferramenta de ponto de exclamação vermelho aparece ao lado da instância. Se você passar o cursor sobre a dica de ferramenta, um status No state vai aparecer.
  • CLI gcloud: use o comando gcloud redis instances describe. Verifique se state: READY, state: REPAIRING ou qualquer outro estado não aparece nos metadados da instância.

Recriptografar dados protegidos por CMEK manualmente

O Memorystore para Redis não oferece suporte à recriptografia sob demanda de dados em repouso. Não é possível acionar um processo manualmente para usar uma nova versão de chave para recriptografar backups atuais ou arquivos de persistência ativos. No entanto, é possível usar a nova versão de chave para criptografar dados recém-gravados.

Substituir uma chave KMS protegida

Se você substituir uma chave KMS protegida por uma chave KMS diferente ou uma nova versão chave primária, o Memorystore para Redis vai aplicar essa mudança apenas a operações futuras.

A substituição de uma chave KMS protegida afeta seus recursos das seguintes maneiras:

  • Backups: o Memorystore para Redis exporta backups para buckets do Cloud Storage. A chave de criptografia do Cloud Storage controla a chave usada para criptografar os dados.
  • Persistência: na próxima vez que a instância for reiniciada ou tiver um evento de manutenção, a nova chave KMS será usada.
  • Cache principal: a substituição dessa chave não tem impacto. O CMEK não criptografa dados na memória porque esses dados não são considerados dados em repouso.

Ativar ou restaurar a versão de chave CMEK principal

Se você ativar ou restaurar a versão da chave primária, o Memorystore para Redis não vai mais ocultar a instância.

Restrições da política da organização

O Memorystore para Redis oferece suporte a restrições de políticas da organização para CMEK. Ao usar essas restrições, é possível aplicar a proteção CMEK às instâncias e limitar quais chaves do Cloud KMS podem ser usadas para essa proteção.

É possível configurar as seguintes restrições de políticas da organização:

  • constraints/gcp.restrictNonCmekServices: use essa restrição para aplicar a proteção CMEK às instâncias. Se a API Memorystore para Redis estiver na lista de serviços da política Deny para essa restrição, não será possível criar instâncias não protegidas por CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects: use essa restrição para limitar quais chaves do Cloud KMS podem ser usadas para proteção CMEK. Se você configurar essa restrição, as instâncias que usam a criptografia CMEK precisarão usar uma chave de um projeto, pasta ou organização permitida.

Como o Memorystore para Redis e o Memorystore para Redis Cluster compartilham o mesmo endpoint (redis.googleapis.com), não é possível aplicar o CMEK a instâncias independentemente de clusters no Memorystore para Redis Cluster.

Para mais informações sobre as restrições de políticas da organização relacionadas ao CMEK que o Google gerencia para o Memorystore para Redis, consulte Restrições de políticas da organização.

Preços

O Memorystore para Redis cobra por uma instância ativada para CMEK, como qualquer outra instância. Não há custos adicionais. Para mais informações, consulte Preços do Memorystore para Redis.

Você usa a API Cloud KMS para gerenciar o CMEK. Ao criar uma instância com CMEK, o Memorystore usa a chave periodicamente para criptografar dados.

Você recebe cobranças do Cloud KMS pelo custo da chave e pelas operações de criptografia e descriptografia quando o Memorystore para Redis usa a chave. Para mais informações, consulte Preços do Cloud KMS.

Limitações

As seguintes limitações se aplicam ao uso do CMEK com o Memorystore para Redis:

  • Não é possível ativar o CMEK em uma instância atual.
  • A chave, o keyring e a instância precisam estar localizados na mesma região.
  • É necessário usar o algoritmo de criptografia simétrica para a chave.
  • As taxas de criptografia e descriptografia do Cloud KMS estão sujeitas a uma cota.

A seguir