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.

Neste documento, você vai:

  • Saiba como criar uma CMEK.
  • Conceda permissões à conta de serviço do Gemini Code Assist.
  • Crie 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 processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de Criptografia padrão do Google.

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

Antes de começar

  1. Em um dos ambientes de desenvolvimento a seguir, configure a CLI gcloud:

    Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.

  2. No ambiente de shell, execute o comando gcloud components update para garantir que você atualizou todos os componentes instalados do gcloud para a versão mais recente. Para esta etapa, você pode instalar e inicializar o gcloud ou usar o Cloud Shell.

    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 do Google Cloud em que você quer gerenciar suas chaves, faça o seguinte:

    1. Ative a API Cloud Key Management Service.

    2. Crie um keyring e uma chave usando uma das seguintes opções:

  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. Acesse Gerenciamento de chaves.

      Acessar "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., em que PROJECT_NUMBER é o número do projeto do projeto do Google Cloud em que o Gemini Code Assist está ativado.
      3. Em Selecionar um papel, escolha Cloud KMS > Criptografador/descriptografador do Cloud KMS CryptoKey.
      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ê vai encontrar os papéis na coluna Papel/Membro.

    gcloud

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

      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." \
          --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 do 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

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 criado 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 CMEKs:

Recomendamos revogar as permissões da conta de serviço do Gemini Code Assist antes de desativar ou destruir uma chave. As mudanças nas permissões são consistentes em segundos, então é possível observar os impactos da desativação ou destruição de uma chave.