Nesta página, você aprende a criptografar conteúdo armazenado em repositórios com chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês).
Visão geral
Por padrão, o Google Cloud criptografa automaticamente os dados quando rest usando chaves de propriedade e gerenciadas pelo Google. Se há requisitos regulatórios ou de compliance específicos relacionados às chaves é possível criar repositórios criptografados com chaves CMEK. Os metadados sobre um repositório, como o nome, são criptografados com Criptografia padrão do Google.
Quando você ativa a CMEK, os dados em repouso em repositórios são criptografados por meio de uma chave gerenciada no Cloud Key Management Service. É possível controlar o acesso à chave CMEK usando o gerenciamento de identidade e acesso. Se você desativar temporariamente ou destruir permanentemente a chave CMEK, não será possível acessar os dados criptografados com ela.
Com a CMEK, você controla mais aspectos do ciclo de vida e do gerenciamento das chaves, mas também gera outros custos para o serviço do Cloud KMS. Os repositórios do Artifact Registry e outros recursos do Google Cloud criptografados com a CMEK também podem consumir a cota do Cloud KMS, dependendo do tipo de chave usada. Confirme se você tem cota suficiente para ativar a criptografia de secrets na camada de aplicativo para seus aplicativos e fluxos de trabalho.
O Cloud KMS pode ser executado no mesmo projeto do Google Cloud que o Artifact Registry ou em um projeto separado, em que você gerencia centralmente as chaves de vários projetos. Para dar suporte à separação de tarefas e maior controle sobre o acesso a chaves, recomendamos que você crie e gerencie chaves que inclua outros recursos do Google Cloud.
Você atribui uma chave CMEK ao criar um repositório. Não é possível mudar o mecanismo de criptografia de um repositório atual. Se você tiver um repositório criptografado por CMEK, não será possível alterar o mecanismo de criptografia para a criptografia padrão do Google ou atribuir uma chave diferente do Cloud KMS para criptografia.
Para obter mais informações gerais sobre CMEK, como quando e por que ativá-las, consulte a documentação do Cloud KMS.
Como criar uma chave e conceder permissões
As instruções a seguir explicam como criar uma chave para um repositório e conceder permissões para criptografar e descriptografar dados do repositório com a chave. É possível usar uma chave criada diretamente no Cloud KMS ou uma chave gerenciada externamente que você disponibiliza com o Cloud External Key Manager.
No projeto do Google Cloud em que você quer gerenciar suas chaves:
Crie um keyring e uma chave usando uma das seguintes opções:
- Crie o keyring e a chave diretamente no Cloud KMS.
- Use uma chave com gerenciamento externo. Crie a chave externa e depois crie uma chave do Cloud EKM para disponibilizá-la por meio do Cloud KMS.
O local da chave do Cloud KMS precisa corresponder ao local do repositório do repositório que você vai criptografar.
Se você não criou um repositório no projeto do Artifact Registry, a conta de serviço do Artifact Registry ainda não existe. Para criar a conta de serviço, use o seguinte comando:
gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
Substitua PROJECT pelo ID do projeto em que o Artifact Registry está em execução.
Conceda o papel do IAM de Criptografador/Descriptografador de CryptoKey (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) à conta de serviço do Artifact Registry. Conceda essa permissão na chave que você criou.Console
Acesse a página Chaves criptográficas.
Selecione a chave que você criou.
Conceda acesso à conta de serviço do Artifact Registry:
- Selecione MOSTRAR PAINEL DE INFORMAÇÕES.
- Clique em Adicionar membro.
- Adicione a conta de serviço do Artifact Registry. A conta de serviço service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, em que PROJECT-NUMBER é o número do projeto do Google Cloud em que O Artifact Registry está em execução.
- Em Selecione uma função, selecione Cloud KMS > Criptografador/descriptografador do Cloud KMS CryptoKey.
- Clique em SALVAR.
Repita a etapa anterior para conceder acesso à conta que vai criar os repositórios.
Retorne à página Chaves criptográficas e selecione a chave novamente.
Selecione MOSTRAR PAINEL DE INFORMAÇÕES. Você vai encontrar os papéis Coluna Papel/membro.
gcloud
Execute o comando a seguir para conceder acesso à conta de serviço do Artifact Registry:
gcloud kms keys add-iam-policy-binding [--project=PROJECT] \ KEY --location LOCATION --keyring=KEYRING \ --member serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Onde
- PROJECT é o ID do projeto que contém a chave.
- KEY é o nome da chave.
- LOCATION é o local da chave. O local da chave precisa corresponder ao local do repositório do repositório que você criptografará.
- KEYRING é o nome do keyring.
- PROJECT-NUMBER é o número do projeto do projeto do Google Cloud que está executando o Artifact Registry.
Repita a etapa anterior para conceder acesso à conta que vai criar os repositórios.
Para mais informações sobre esse comando, consulte a documentação gcloud kms keys add-iam-policy-binding.
Agora você pode criar um repositório e especificar a chave a ser usada para criptografia.
Como remover o acesso
Há várias maneiras de remover o acesso de um repositório criptografado por CMEKs:
- Revogar o criptografador/descriptografador de CryptoKey do Cloud KMS role no conta de serviço do Artifact Registry usando o Console do Google Cloud ou a CLI gcloud
- Desative temporariamente a chave CMEK
- Destruir permanentemente a chave CMEK
Recomendamos revogar as permissões da conta de serviço do Registry antes de desativar ou destruir uma chave. As alterações de permissões são consistentes em segundos, então é possível observar os impactos da desativação ou da destruição de uma chave.
Ao desativar ou destruir a chave de criptografia de um repositório, você perde a capacidade de visualizar ou recuperar dados de artefato. Todos os dados de artefatos armazenados no repositório ficam inacessíveis, incluindo artefatos compilados, dados binários arbitrários (blobs) e manifestos, como um manifesto do Docker ou um arquivo de empacotamento npm. Os usuários com os papéis de leitor do Artifact Registry ou leitor ainda podem ver os metadados do artefato, como nome, versão ou tag.
Os usuários com os papéis de Administrador ou de Proprietário do Artifact Registry podem excluir o repositório.
Políticas da organização de CMEK
O Artifact Registry oferece suporte a restrições de política da organização que podem exigir proteção CMEK.
As políticas podem limitar quais CryptoKeys do Cloud KMS podem ser usadas na proteção CMEK.
Quando a API Artifact Registry estiver na lista de políticas
Deny
dos serviços da restriçãoconstraints/gcp.restrictNonCmekServices
, o Artifact Registry se recusará a criar novos repositórios que não estejam protegidos por CMEK.Quando
constraints/gcp.restrictCmekCryptoKeyProjects
está configurado, o Artifact Registry cria repositórios protegidos por CMEK que são protegidos por uma CryptoKey de um projeto, pasta ou organização permitido.
O Pub/Sub oferece suporte às mesmas restrições. Quando você ativa a
API Artifact Registry em um projeto do Google Cloud, ela
tenta criar automaticamente um tópico do Pub/Sub com o ID
gcr
usando chaves gerenciadas e pertencentes ao Google. Quando a API Pub/Sub está na lista de políticas Deny
para a restrição
constraints/gcp.restrictNonCmekServices
, o Pub/Sub se recusa a
criar o tópico. Para criar o tópico gcr
com criptografia CMEK, consulte o
Instruções para criptografar tópicos do Pub/Sub.
Para saber mais sobre a configuração de políticas da organização, consulte Políticas da organização de CMEK
A seguir
- Criar um repositório criptografado com CMEK
- Saiba mais sobre CMEK
- Saiba mais sobre a criptografia padrão do Google