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
Em um dos ambientes de desenvolvimento a seguir, configure a CLI gcloud:
Cloud Shell: para usar um terminal on-line com a CLI gcloud já configurada, inicie o editor do Cloud Shell.
Shell local: para usar um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud.
Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.
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:
No projeto do Google Cloud em que você quer gerenciar suas chaves, faça o seguinte:
Crie um keyring e uma chave usando uma das seguintes opções:
- Crie o keyring e a chave diretamente no Cloud KMS.
- Use uma chave gerenciada externamente. Crie a chave externa e depois crie uma chave do Cloud EKM para disponibilizá-la pelo Cloud KMS.
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
Acesse Gerenciamento de chaves.
Selecione a chave que você criou.
Conceda acesso à conta de serviço do Gemini Code Assist:
- Clique em Adicionar principal.
- 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. - Em Selecionar um papel, escolha Cloud KMS > Criptografador/descriptografador do Cloud KMS CryptoKey.
- Clique em Salvar.
Repita a etapa anterior para conceder acesso à conta que vai criar o índice do repositório de código com uma CMEK.
Retorne à página Gerenciamento de chaves e selecione a chave novamente.
Selecione Mostrar painel de informações. Você vai encontrar os papéis na coluna Papel/Membro.
gcloud
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.
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
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 chaveKEY_LOCATION
: a localização da chaveKEYRING_NAME
: é o nome do keyringKEY_NAME
: o nome da chave
Use um comando
cURL
para chamar o métodoprojects.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:
- Revogue o papel de criptografador/descriptografador da CryptoKey do Cloud KMS da conta de serviço do Gemini Code Assist usando o console da API ou o gcloud.
- Desative temporariamente a CMEK.
- Destruir permanentemente a CMEK.
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.