Encripte dados com chaves de encriptação geridas pelo cliente

Este documento mostra como usar chaves de encriptação geridas pelo cliente (CMEK) para encriptar e controlar dados em repouso num serviço na nuvem através do Cloud Key Management Service. A CMEK está integrada com a personalização de código para o Gemini Code Assist. O Gemini Code Assist não suporta a utilização de chaves do EKM do Cloud.

Neste documento, faz o seguinte:

  • Saiba como criar uma CMEK.
  • Conceda autorizações à conta de serviço do Gemini Code Assist.
  • Crie um índice do repositório de código com uma CMEK.
  • Remova o acesso a um repositório de CMEK.

Por predefinição, o Gemini para o Google Cloud encripta o conteúdo do cliente em repouso. O Gemini processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.

Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) no Cloud KMS com serviços integrados com CMEK, incluindo o Gemini. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização, autorizações de acesso e limites criptográficos. A utilização do Cloud KMS também permite ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.

Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos seus recursos do Gemini é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das suas opções de encriptação, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).

Antes de começar

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

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

    gcloud components update
    
  3. Crie uma CMEK e conceda autorizações

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

    1. No Google Cloud projeto onde quer gerir as suas chaves, faça o seguinte:

      1. Ative a API Cloud Key Management Service.

      2. Crie o conjunto de chaves e a chave diretamente no Cloud KMS.

    2. Conceda a função da IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço do Gemini Code Assist. Conceda esta autorização na chave que criou.

      Consola

      1. Aceda a Gestão de chaves.

        Aceda à gestão de chaves

      2. Selecione a chave que 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 onde o Gemini Code Assist está ativado.
        3. Em Selecionar uma função, selecione Cloud KMS > Encriptador/desencriptador de CryptoKey do Cloud KMS.
        4. Clique em Guardar.
      4. Repita o passo anterior para conceder acesso à conta que vai criar o índice do repositório de código com uma CMEK.

      5. Regresse à página Gestão de chaves e selecione novamente a chave.

      6. Selecione Mostrar painel de informações. Deve ver as funções na coluna Função/membro.

      CLI gcloud

      1. Para conceder acesso à conta de serviço do Gemini Code Assist, num 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.iam.gserviceaccount.com" \
            --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
        

        Substitua o seguinte:

        • 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 conjunto de chaves.
        • PROJECT_NUMBER: o número do projeto do projeto com o Gemini Code Assist ativado. Google Cloud
      2. Repita o passo anterior para conceder acesso à conta que vai criar o índice do repositório de código com uma CMEK.

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

    Agora, pode criar um índice do repositório de código com uma CMEK através da API e especificar a chave a usar para a encriptação.

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

    Para criar um novo repositório com proteção CMEK, faça uma das seguintes ações:

    CLI 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 o seguinte:

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

    API

    1. Crie um ficheiro JSON que contenha as seguintes informações:

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

      Substitua o seguinte:

      • KEY_PROJECT_ID: o ID do projeto da chave
      • KEY_LOCATION: a localização da chave
      • KEYRING_NAME: o nome do conjunto de chaves
      • 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 o seguinte:

      • JSON_FILE_NAME: o caminho para o ficheiro JSON que criou no passo anterior.
      • PROJECT_ID: o ID do projeto no qual criar o repositório.
      • KEY_LOCATION: a localização onde criar o repositório, que tem de corresponder à localização onde existe a CMEK.
      • CODE_REPOSITORY_INDEX_NAME: o nome do índice do repositório de código que vai criar. Por exemplo, zg-btf-0001.

    A resposta devolve um conjunto de entradas de registo.

    Remova o acesso a um repositório de CMEK

    Existem várias formas de remover o acesso a um repositório encriptado com CMEK:

    Recomendamos que revogue as autorizações da conta de serviço do Gemini Code Assist antes de desativar ou destruir uma chave. As alterações às autorizações são consistentes em segundos, pelo que pode observar os impactos da desativação ou destruição de uma chave.