Criptografar dados com chaves de criptografia gerenciadas pelo cliente

Este documento mostra como usar chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar e controlar dados em repouso em um serviço de nuvem usando o Cloud Key Management Service. A CMEK é integrada à personalização de código para o Gemini Code Assist. O Gemini Code Assist não é compatível com o uso de chaves do Cloud EKM.

Veja abaixo as atividades incluídas neste documento:

  • Saber como criar uma CMEK.
  • Conceder permissões à conta de serviço do Gemini Code Assist.
  • Criar um índice de repositório de código com uma CMEK.
  • Remover o acesso a um repositório de CMEK.

Por padrão, o Gemini para Google Cloud criptografa o conteúdo do cliente em repouso. O Gemini executa a criptografia, e você não precisa fazer nada. Essa opção é chamada de criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Gemini. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Com o Cloud KMS, também é possível visualizar registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Gemini é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Antes de começar

  1. No console do Google Cloud , ative o Cloud Shell.

    Ativar o Cloud Shell

  2. No ambiente de desenvolvimento em que você configurou a CLI gcloud, execute o comando gcloud components update para verificar se você atualizou todos os componentes instalados da gcloud CLI para a versão mais recente.

    gcloud components update
    

Criar uma CMEK e conceder permissões

Para criar uma CMEK e conceder permissões à conta de serviço do Gemini Code Assist na chave, execute as seguintes tarefas:

  1. No projeto Google Cloud em que você quer gerenciar as chaves, faça o seguinte:

    1. Ative a API Cloud Key Management Service.

    2. Crie o keyring e a chave diretamente no Cloud KMS.

  2. Conceda o papel do IAM de Criptografador/Descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço do Gemini Code Assist. Conceda essa permissão na chave que você criou.

    Console

    1. Vá para Gerenciamento de chaves.

      Vá para Gerenciamento de chaves

    2. Selecione a chave que você criou.

    3. Conceda acesso à conta de serviço do Gemini Code Assist:

      1. Clique em Adicionar principal.
      2. Adicione a conta de serviço do Gemini Code Assist. A conta de serviço é service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com, em que PROJECT_NUMBER é o número do projeto Google Cloud em que o Gemini Code Assist está ativado.
      3. Em Selecione um papel, selecione Cloud KMS > Criptografador/descriptografador do CryptoKey do Cloud KMS.
      4. Clique em Salvar.
    4. Repita a etapa anterior para conceder acesso à conta que vai criar o índice do repositório de código com uma CMEK.

    5. Retorne à página Gerenciamento de chaves e selecione a chave novamente.

    6. Selecione Mostrar painel de informações. Você deve ver os papéis na coluna Papel/Membro.

    gcloud CLI

    1. Para conceder acesso à conta de serviço do Gemini Code Assist, use o comando kms keys add-iam-policy-binding em um ambiente shell:

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      Substitua:

      • KEY_NAME: o nome da chave.
      • PROJECT_ID: o ID do projeto que contém a chave.
      • LOCATION: a localização da chave.
      • KEYRING_NAME: o nome do keyring.
      • PROJECT_NUMBER: o número do projeto Google Cloud com o Gemini Code Assist ativado.
    2. Repita a etapa anterior para conceder acesso à conta que vai criar o índice do repositório de código com uma CMEK.

    Para mais informações sobre esse comando, consulte a documentação de gcloud kms keys add-iam-policy-binding.

Agora é possível criar um índice de repositório de código com uma CMEK usando a API e especificar a chave a ser usada para criptografia.

Criar um índice de repositório de código com uma CMEK

Para criar um repositório com proteção da CMEK, faça o seguinte:

gcloud CLI

Use o comando gemini code-repository-indexes create:

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

Substitua:

  • CODE_REPOSITORY_INDEX_NAME: o nome do novo índice do repositório de código que você vai criar.
  • LOCATION: a localização da chave.
  • KEY_PROJECT_ID: o ID do projeto da chave.
  • KEYRING_NAME: o nome do keyring.
  • KEY_NAME: o nome da chave.

API

  1. Crie um arquivo JSON com as informações a seguir:

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    Substitua:

    • KEY_PROJECT_ID: o ID do projeto da chave
    • KEY_LOCATION: a localização da chave
    • KEYRING_NAME: o nome do keyring
    • KEY_NAME: o nome da chave
  2. Use um comando cURL para chamar o método projects.locations.codeRepositoryIndexes.create:

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    Substitua:

    • JSON_FILE_NAME: o caminho para o arquivo JSON que você criou na etapa anterior.
    • PROJECT_ID: o ID do projeto em que o repositório será criado.
    • KEY_LOCATION: o local em que o repositório será criado, que precisa corresponder ao local em que a CMEK existe.
    • CODE_REPOSITORY_INDEX_NAME: o nome do novo índice de repositório de código que você vai criar. Por exemplo, zg-btf-0001.

A resposta retorna um conjunto de entradas de registro.

Remover o acesso a um repositório de CMEK

Há várias maneiras de remover o acesso de um repositório criptografado por CMEK:

Recomendamos revogar as permissões da conta de serviço do Gemini Code Assist 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.