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 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

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

    gcloud components update
    
  3. 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 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. 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.iam.gserviceaccount.com, em que PROJECT_NUMBER é o número do projeto do projeto 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.

      CLI da gcloud

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

    CLI da 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.