Sobre as chaves de criptografia gerenciadas pelo cliente (CMEK)

Nesta página, descrevemos como as chaves de criptografia gerenciadas pelo cliente (CMEK) funcionam com o Memorystore para Redis. Para começar a usar esse recurso, consulte Usar chaves de criptografia gerenciadas pelo cliente (CMEK).

Por padrão, o Memorystore para Redis criptografa o conteúdo do cliente em repouso. O Memorystore para Redis executa a criptografia, e você não precisa 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, como o Memorystore para Redis. 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. Com o Cloud KMS, também é possível visualizar registros de auditoria e controlar ciclos de vida de chaves. 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 da Memorystore para Redis é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Quem deve usar a CMEK?

A CMEK é destinada a organizações com dados sensíveis ou regulamentados que precisam ser criptografados. Para mais informações sobre se é necessário usar a CMEK para criptografar esses dados, consulte Decidir se é necessário usar a CMEK.

Criptografia gerenciada pelo Google e criptografia gerenciada pelo cliente

Com o recurso de CMEK, você usa as próprias chaves criptográficas nos dados em repouso no Memorystore para Redis. Para instâncias do Memorystore para Redis habilitadas para CMEK, o Google usa suas chaves para acessar todos os dados em repouso.

O Memorystore usa chaves de criptografia de dados (DEK) e chaves de criptografia de chaves (KEK) gerenciadas pelo Google para criptografar dados no Memorystore para Redis. Há dois níveis de criptografia:

  • Criptografia de DEK:o Memorystore usa DEKs para criptografar dados no Memorystore para Redis.
  • Criptografia de KEK:o Memorystore usa KEKs para criptografar DEKs.

A instância do Memorystore para Redis armazena a DEK criptografada com os dados criptografados no disco permanente, e o Google gerencia a KEK. A CMEK é a KEK que encapsula a DEK. Com a CMEK, você pode criar, desativar ou destruir e ativar ou restaurar a KEK.

Você gerencia a CMEK usando a API Cloud Key Management Service.

Os diagramas a seguir mostram como a criptografia de dados em repouso funciona em uma instância do Memorystore para Redis ao usar a criptografia padrão gerenciada pelo Google em comparação com a CMEK.

Sem CMEK

Os dados são enviados ao Google e divididos em blocos. Cada bloco é criptografado com a própria chave de criptografia de dados. As chaves de criptografia de dados são encapsuladas por uma chave de criptografia de chaves. Com a criptografia padrão do Google, a chave de criptografia de chaves é recuperada do keystore interno do Google. Os blocos criptografados e as chaves de criptografia unidas são distribuídos pela infraestrutura de armazenamento do Google.

Com a CMEK

Os dados são enviados ao Google e divididos em blocos. Cada bloco é criptografado com a própria chave de criptografia de dados. As chaves de criptografia de dados são encapsuladas por uma chave de criptografia de chaves. Com a CMEK e o Cloud KMS, a chave de criptografia de chaves é recuperada do Cloud KMS. Os blocos criptografados e as chaves de criptografia unidas são distribuídos pela infraestrutura de armazenamento do Google.

Ao descriptografar dados agrupados com CMEK, o Memorystore usa a KEK do Cloud Key Management Service para descriptografar a DEK e a DEK não criptografada para descriptografar dados em repouso.

Bloco de dados criptografado com a DEK e armazenado com a DEK unida. Uma solicitação para desencapsular a DEK é enviada ao armazenamento do KMS, que armazena a KEK não exportável. O armazenamento do KMS retorna a DEK separada.

Preços

O Memorystore para Redis fatura 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 a CMEK. Quando você cria uma instância do Memorystore para Redis 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 os preços do Cloud KMS.

Quando o Memorystore interage com a CMEK?

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

Quais dados são criptografados com a CMEK?

A CMEK criptografa os seguintes tipos de dados:

  • Dados do cliente armazenados em 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, conceda a função cloudkms.cryptoKeyEncrypterDecrypter à conta de serviço do Memorystore para Redis que tem o seguinte formato:

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

Ao conceder essa permissão, a conta de serviço pode solicitar acesso à chave do Cloud KMS.

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

Sobre as chaves

No Cloud KMS, é preciso 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 uma delas.

A CMEK está disponível em todos os locais de instâncias do Memorystore para Redis. Crie 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 forem correspondentes, a solicitação de criação da instância vai falhar.

Para o ID do recurso da chave, a 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 conseguir acessar nenhuma versão de chave em uso (por exemplo, se você desativar todas as versões de chave), o serviço vai encerrar a instância. No console do Google Cloud , uma instância suspensa mostra uma dica de ferramenta com um ponto de exclamação vermelho na página Instâncias. Se você passar o cursor sobre a dica, um status No state vai aparecer. Quando 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 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 Gerenciador de chaves externo do Cloud.

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

Pode haver casos em que você precise tornar os dados criptografados com CMEK inacessíveis permanentemente. 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 de uma instância habilitada para CMEK?

Se 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 habilitada 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, gira, 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 a dados na sua instância, desative a versão principal da chave de CMEK. Isso encerra a instância. Além disso, se uma 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 usada pela instância.

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

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

Ativar ou restaurar a versão principal da chave CMEK

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

Limitações

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

  • Não é possível ativar a CMEK em uma instância atual do Memorystore para Redis.
  • A região da chave, do keyring e da instância precisa ser a mesma.
  • Você precisa usar o algoritmo de criptografia simétrica para sua chave.
  • As taxas de criptografia e descriptografia do Cloud KMS estão sujeitas a uma cota.

Políticas da organização de CMEK

O Memorystore para Redis é compatível com restrições da política da organização que podem ser usadas para proteção da CMEK.

As políticas podem limitar quais chaves do Cloud KMS podem ser usadas para proteção com CMEK.

  • Se a API Memorystore for Redis estiver na lista de serviços Deny da restrição constraints/gcp.restrictNonCmekServices, não será possível criar instâncias sem proteção CMEK.

  • Se você configurar a restrição constraints/gcp.restrictCmekCryptoKeyProjects, o Memorystore para Redis vai criar instâncias protegidas por CMEK que serão criptografadas usando uma chave de um projeto, pasta ou organização permitida.

Para mais informações sobre como configurar políticas da organização de CMEK, consulte Políticas da organização de CMEK.