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

    Activate Cloud Shell

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

    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 Google Cloud em que você quer gerenciar as 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. 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.