Como ativar chaves de criptografia gerenciadas pelo cliente

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 automaticamente criptografa os dados quando em repouso por meio de chaves de criptografia gerenciadas pelo Google. Se você tiver requisitos regulatórios ou de conformidade específicos relacionados às chaves que protegem seus dados, crie repositórios criptografados com chaves CMEK. Os metadados de um repositório, como o nome dele, são criptografados com a 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 criptografados por CMEK também consomem a cota de solicitações criptográficas do Cloud Key Management Service para cada upload ou download.

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.

Você atribui uma chave do Cloud KMS ao criar um repositório.

Não é possível alterar 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

Para criar uma chave para o repositório e conceder permissões para criptografar e descriptografar dados do repositório com a chave:

  1. No projeto do Google Cloud em que você quer gerenciar suas chaves:

    1. Ative a API Cloud KMS.
    2. Crie um keyring e uma chave. O local da chave precisa corresponder ao local do repositório do repositório que você criptografará.
  2. 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.

  3. 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

    1. Acesse a página Chaves criptográficas.

      Abrir a página "Cloud KMS"

    2. Selecione a chave que você criou.

    3. Selecione MOSTRAR PAINEL DE INFORMAÇÕES.

    4. Clique em Adicionar membro.

    5. 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 projeto do Google Cloud em que o Artifact Registry está em execução.

    6. Em Selecione uma função, selecione Cloud KMS > Criptografador/descriptografador do Cloud KMS CryptoKey.

    7. Clique em Salvar.

    8. Retorne à página Chaves criptográficas e selecione a chave novamente.

    9. Selecione MOSTRAR PAINEL DE INFORMAÇÕES. Você verá os papéis na coluna Papel/Membro.

    gcloud

    Execute este comando:

    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
    
    • 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.

    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:

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.

A seguir