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 e autorizações de acesso, bem como 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 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 disco persistente, e a Google gere a KEK da Google. A CMEK é a KEK que une a DEK. 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
Com CMEK
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.
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 uma delas.
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 de várias regiões 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 ter situações em que quer destruir permanentemente dados encriptados com 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 estiver 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
Deny
lista de serviços da política ao abrigo da restriçãoconstraints/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.