Acerca das chaves de encriptação geridas pelo cliente (CMEK)

Esta página descreve como as chaves de encriptação geridas pelo cliente (CMEK) funcionam com o Memorystore for Redis. Para usar esta funcionalidade imediatamente, consulte o artigo Usar chaves de encriptação geridas pelo cliente (CMEK).

O CMEK é adequado para mim?

As chaves de encriptação geridas pelo cliente destinam-se a organizações que têm dados sensíveis ou regulamentados que exigem que geram as suas próprias chaves de encriptação.

Encriptação gerida pela Google versus encriptação gerida pelo cliente

A funcionalidade CMEK permite-lhe usar as suas próprias chaves criptográficas para dados em repouso no Memorystore for Redis. Depois de adicionar chaves de encriptação geridas pelo cliente, sempre que é feita uma chamada à API, o Memorystore usa a sua chave para aceder aos dados.

O Memorystore usa chaves de encriptação de dados (DEK) e chaves de encriptação de chaves (KEK) geridas pela Google para encriptar o Memorystore para Redis. Existem dois níveis de encriptação:

  • A DEK encripta os dados.
  • A KEK encripta a DEK.

A instância do Memorystore armazena a DEK encriptada juntamente com os dados encriptados no PD, e a Google gere a KEK da Google. Com as chaves de encriptação geridas pelo cliente, cria uma chave que envolve a KEK da Google. As chaves de encriptação geridas pelo cliente permitem-lhe criar, revogar e eliminar a KEK.

As chaves de encriptação geridas pelo cliente são geridas através da API Cloud Key Management Service.

Os diagramas abaixo mostram como funciona a encriptação de dados em repouso numa instância do Memorystore quando usa a encriptação predefinida da Google em comparação com as chaves de encriptação geridas pelo cliente.

Sem CMEK

Os dados são carregados para a Google, divididos em blocos e cada bloco é encriptado com a sua própria chave de encriptação de dados. As chaves de encriptação de dados são envolvidas com uma chave de encriptação de chaves. Com a encriptação da Google predefinida, a chave de encriptação de chaves é obtida do keystore interno da Google. Os fragmentos encriptados e as chaves de encriptação envolvidas são distribuídos pela infraestrutura de armazenamento da Google.

Com CMEK

Os dados são carregados para a Google, divididos em blocos e cada bloco é encriptado com a sua própria chave de encriptação de dados. As chaves de encriptação de dados são envolvidas com uma chave de encriptação de chaves. Com a CMEK que usa o Cloud KMS, a chave de encriptação de chaves é obtida a partir do Cloud KMS. Os fragmentos encriptados e as chaves de encriptação envolvidas são distribuídos pela infraestrutura de armazenamento da Google.

Ao desencriptar dados envolvidos com chaves de encriptação geridas pelo cliente, o Memorystore usa a KEK para desencriptar a DEK e a DEK não encriptada para desencriptar os dados em repouso.

Bloco de dados encriptado com DEK e armazenado com DEK envolvida. É enviado um pedido para desembrulhar a DEK para o armazenamento do KMS, que armazena a KEK não exportável. O armazenamento KMS devolve a DEK não anulada.

Quando é que o Memorystore interage com as chaves CMEK?

Operação Descrição
Criação da instância Durante a criação da instância, configura a instância para usar chaves de encriptação geridas pelo cliente.
Atualização da instância O Memorystore verifica a chave CMEK durante as atualizações a uma instância com CMEK ativada.

Que dados são encriptados através da CMEK?

A CMEK encripta os seguintes tipos de dados:

  • Dados dos clientes armazenados no armazenamento persistente.
  • Metadados relacionados com funcionalidades de segurança, como AUTH e encriptação em trânsito.

Acerca das contas de serviço

Quando cria uma instância com CMEK, tem de conceder a função cloudkms.cryptoKeyEncrypterDecrypter à conta de serviço do Memorystore que tem o seguinte formato:

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

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

Para obter instruções sobre como conceder esta autorização à conta de serviço, consulte o artigo Conceder acesso à chave à conta de serviço.

Acerca das chaves

No Cloud KMS, tem de criar um conjunto de chaves com uma chave criptográfica que use um algoritmo de encriptação/desencriptação simétrica. Quando cria uma nova instância do Memorystore, seleciona esta chave para encriptar a instância. Pode criar um projeto para ambas as chaves e instâncias do Memorystore ou projetos diferentes para cada um deles.

A CMEK está disponível em todas as localizações de instâncias do Memorystore. A região da chave e do conjunto de chaves tem de ser definida para a mesma região que a instância do Memorystore for Redis. Uma chave de região global ou multirregional não funciona. Um pedido de criação de uma instância do Memorystore falha se as regiões não corresponderem.

As CMEK para o Memorystore são compatíveis com o Cloud External Key Manager (Cloud EKM).

As chaves de encriptação geridas pelo cliente usam o seguinte formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Se o Memorystore não conseguir aceder a nenhuma versão da chave atualmente em utilização (por exemplo, se desativar a versão da chave), o Memorystore encerra a instância sem atrasos indevidos. Na Google Cloud consola, uma instância suspensa mostra uma sugestão com um ponto de exclamação vermelho na página Instâncias. Quando passa o cursor do rato sobre a sugestão, é apresentado "Nenhum estado". Assim que a chave voltar a ficar acessível, o Memorystore retoma automaticamente a instância.

Como posso tornar os dados encriptados com CMEK permanentemente inacessíveis?

Pode haver situações em que queira destruir permanentemente dados encriptados com a CMEK. Para tal, destrói a versão da chave de encriptação gerida pelo cliente. Não pode destruir o conjunto de chaves nem a chave, mas pode destruir as versões da chave.

Como posso exportar e importar dados de e para uma instância com CMEK ativada?

Se quiser que os seus dados permaneçam encriptados com uma chave gerida pelo cliente durante uma importação ou exportação, tem de definir uma chave de encriptação gerida pelo cliente no contentor do Cloud Storage antes de exportar dados para o mesmo.

Não existem requisitos nem restrições especiais para importar dados para uma nova instância do Memorystore quando os dados foram armazenados anteriormente numa instância do Memorystore com CMEK ativado.

Comportamento da destruição/desativação de uma versão da chave CMEK

Se quiser garantir que não existe acesso a dados na sua instância, pode fazê-lo desativando a versão da chave principal da sua chave de encriptação gerida pelo cliente. Ao fazê-lo, encerra a instância sem atrasos indevidos. Além disso, o Memorystore encerra uma instância sem demora indevida se alguma chave de encriptação gerida pelo cliente em utilização for desativada/destruída. Isto inclui qualquer versão de chave mais antiga que ainda esteja a ser usada por uma instância do Memorystore. Pode usar o gcloud ou a Google Cloud consola para ver se a sua instância está suspensa:

Para a Google Cloud consola, se a sua instância for suspensa, é apresentada uma notificação de sugestão vermelha junto à instância na página Instâncias do Memorystore para Redis. A sugestão apresenta "Nenhum estado" quando passa o cursor do rato sobre a mesma.

Para o gcloud, se executar gcloud redis instances describe e não vir state: READY, state: REPAIRING ou qualquer outro estado nos metadados da instância, significa que a instância está suspensa.

Reativar/restaurar uma versão da chave CMEK em utilização

Uma instância é apresentada novamente após reativar/restaurar uma versão da chave CMEK em utilização.

Restrições

Aplicam-se as seguintes restrições quando usa chaves de encriptação geridas pelo cliente com o Memorystore:

  • Não pode ativar chaves de encriptação geridas pelo cliente numa instância do Memorystore existente.
  • A região da chave, do conjunto de chaves e da instância do Memorystore tem de ser a mesma.
  • Tem de usar o algoritmo de encriptação/desencriptação simétrica para a sua chave.
  • As taxas de encriptação e desencriptação do Cloud KMS estão sujeitas a uma quota.

Políticas da organização de CMEK

O Memorystore for Redis suporta restrições de políticas da organização que podem ser usadas para proteção CMEK.

As políticas podem limitar as chaves do Cloud KMS que podem ser usadas para a proteção CMEK.

  • Quando a API Memorystore for Redis está na Denylista de serviços da política ao abrigo da restrição constraints/gcp.restrictNonCmekServices, a criação do Memorystore for Redis falha para instâncias não protegidas por CMEK.

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects está configurado, o Memorystore para Redis cria instâncias protegidas por CMEK que são encriptadas através de uma chave de um projeto, uma pasta ou uma organização permitidos.

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