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 começar a usar esta funcionalidade, consulte o artigo Use chaves de encriptação geridas pelo cliente (CMEK).

Por predefinição, o Memorystore for Redis encripta o conteúdo do cliente em repouso. O Memorystore for Redis processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.

Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) no Cloud KMS com serviços integrados com CMEK, incluindo o Memorystore para Redis. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização, autorizações de acesso e limites criptográficos. A utilização do Cloud KMS também permite ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.

Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos seus recursos do Memorystore for Redis é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das suas opções de encriptação, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).

Quem deve usar as CMEK?

A CMEK destina-se a organizações que têm dados confidenciais ou regulamentados que têm de ser encriptados. Para mais informações sobre se deve usar as CMEK para encriptar estes dados, consulte o artigo Decida se deve usar as CMEK.

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 para Redis. Para instâncias do Memorystore for Redis com CMEK ativada, a Google usa as suas chaves para aceder a todos os dados em repouso.

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

  • Encriptação DEK: o Memorystore usa DEKs para encriptar dados no Memorystore para Redis.
  • Encriptação KEK: o Memorystore usa KEKs para encriptar DEKs.

A instância do Memorystore for Redis armazena a DEK encriptada juntamente com os dados encriptados no disco persistente, e a Google gere a KEK da Google. A CMEK é a KEK que une a DEK. As CMEK permitem-lhe criar, desativar ou destruir e ativar ou restaurar a KEK.

Pode gerir as CMEK através da API Cloud Key Management Service.

Os diagramas seguintes mostram como funciona a encriptação de dados em repouso numa instância do Memorystore for Redis quando usa a encriptação gerida pela Google predefinida em comparação com a CMEK.

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 CMEK, o Memorystore usa a KEK do Cloud Key Management Service para desencriptar a DEK e a DEK não encriptada para desencriptar 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 do KMS devolve a DEK não anulada.

Preços

O Memorystore for Redis fatura uma instância com CMEK ativada tal como qualquer outra instância. Não existem custos adicionais. Para mais informações, consulte os preços do Memorystore para Redis.

Usa a API Cloud KMS para gerir a CMEK. Quando cria uma instância do Memorystore for Redis com CMEK, o Memorystore usa a chave periodicamente para encriptar os dados.

O Cloud KMS fatura-lhe o custo da chave e as operações de encriptação e desencriptação quando o Memorystore for Redis usa a chave. Para mais informações, consulte os preços do Cloud KMS.

Quando é que o Memorystore interage com as CMEK?

Operação Descrição
Criação da instância Quando cria uma instância, configura-a para usar as CMEK.
Atualização da instância Durante as atualizações a uma instância com CMEK ativada, o Memorystore for Redis verifica a CMEK.

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 for Redis 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 Conceda à conta de serviço do Memorystore for Redis acesso à chave.

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 simétrica. Quando cria uma instância do Memorystore for Redis, seleciona esta chave para encriptar a instância. Pode criar um projeto para as chaves e as instâncias ou projetos diferentes para cada um deles.

A CMEK está disponível em todas as localizações de instâncias do Memorystore para Redis. Tem de criar o conjunto de chaves e a chave na mesma região onde quer criar a instância. Uma chave para uma região multirregional ou global não funciona. Se as regiões ou as localizações não corresponderem, um pedido de criação da instância falha.

Para o ID de 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 for Redis não conseguir aceder a nenhuma versão da chave que esteja a ser usada (por exemplo, se desativar todas as versões da chave), o Memorystore for Redis encerra a instância. Na Google Cloud consola, uma instância suspensa mostra uma dica de ferramenta com um ponto de exclamação vermelho na página Instâncias. Se passar o cursor do rato sobre a sugestão, é apresentado o estado No state. Depois de a chave ficar acessível, o Memorystore for Redis retoma a instância automaticamente.

Chaves externas

Pode usar o Cloud External Key Manager (Cloud EKM) para encriptar dados no Google Cloud com chaves externas que gere.

Quando usa uma chave do Cloud EKM, a Google não tem controlo sobre a disponibilidade da sua chave gerida externamente. Se a chave não estiver disponível quando criar a instância, esta não é criada.

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

Como torna os dados encriptados com CMEK inacessíveis permanentemente?

Pode haver situações em que queira tornar os dados encriptados com CMEK inacessíveis permanentemente. Para o fazer, destrói a versão da chave. Para mais informações sobre a destruição de versões da chave, consulte o artigo Destrua e restaure versões de chaves.

Como importa ou exporta dados para uma instância com CMEK ativada?

Se quiser que os seus dados permaneçam encriptados com uma CMEK quando exportar dados, tem de definir uma CMEK no contentor do Cloud Storage antes de exportar dados para o mesmo.

Se os seus dados estiverem armazenados numa instância com a CMEK ativada, não existem requisitos nem restrições especiais para importar dados para uma nova instância.

Comportamento de uma versão da chave CMEK

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

Desative ou destrua uma versão da chave CMEK

Se quiser garantir que não existe acesso a dados na sua instância, desative a versão da chave principal da CMEK. Esta ação encerra a instância. Além disso, se qualquer CMEK em utilização for desativada ou destruída, o Memorystore for Redis encerra a instância. Isto inclui qualquer versão da chave mais antiga que a instância use.

Para ver se o Memorystore for Redis suspende a sua instância, use uma das seguintes interfaces:

  • Google Cloud consola: na página Instâncias, é apresentado um efeito de sugestão com um ponto de exclamação vermelho junto à sua instância. Se passar o cursor do rato sobre a sugestão, é apresentado o estado No state.
  • CLI gcloud: use o comando gcloud redis instances describe. Verifique se não vê state: READY, state: REPAIRING ou qualquer outro estado nos metadados da instância.

Ative ou restaure a versão da chave CMEK principal

Se ativar ou restaurar a versão da chave principal da sua CMEK, o Memorystore for Redis deixa de ocultar a sua instância.

Limitações

Aplicam-se as seguintes limitações quando usa as CMEK com o Memorystore for Redis:

  • Não é possível ativar a CMEK numa instância do Memorystore for Redis existente.
  • A região da chave, do conjunto de chaves e da instância tem de ser a mesma.
  • Tem de usar o algoritmo de encriptaçã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 CMEK

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

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

  • Se a API Memorystore for Redis estiver na Deny lista de serviços da política para a restrição constraints/gcp.restrictNonCmekServices, não pode criar instâncias não protegidas por CMEK.

  • Se configurar a restrição constraints/gcp.restrictCmekCryptoKeyProjects, o Memorystore for 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 de organização da CMEK, consulte o artigo Políticas de organização da CMEK.