Este documento mostra como usar chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar e controlar dados em repouso em um serviço em nuvem pelo Cloud Key Management Service. O CMEK é integrado à personalização de código para o Gemini Code Assist.
O Gemini Code Assist não oferece suporte ao uso de chaves do Cloud EKM.
Se você não usar uma CMEK, o Google vai gerenciar automaticamente as chaves que criptografam os dados por padrão. Esse comportamento é conhecido como Criptografia padrão do Google. Com esse comportamento padrão, você não tem controle sobre as chaves de criptografia.
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.
- Remova o acesso a um repositório 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.
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. O uso de chaves do Cloud KMS permite 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. O uso do Cloud KMS também permite visualizar registros de auditoria e controlar ciclos de vida importantes. 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 mais informações sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
Antes de começar
-
In the Google Cloud console, activate Cloud Shell.
No ambiente shell, execute o comando
gcloud components update
para garantir que você atualizou todos os componentes instalados da CLI gcloud para a versão mais recente. Nesta etapa, você pode instalar e inicializar a CLI gcloud ou usar o Cloud Shell.gcloud components update
Criar uma CMEK e conceder permissões
Para criar uma chave CMEK e conceder permissões à conta de serviço do Gemini Code Assist na chave, faça o seguinte:
No projeto do Google Cloud em que você quer gerenciar as 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 com gerenciamento externo. Crie a chave externa e, em seguida, 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.iam.gserviceaccount.com
, em que PROJECT_NUMBER é o número do projeto do projeto Google Cloud em que o Gemini Code Assist está ativado. - Em Selecionar um papel, selecione 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 as funções na coluna Função/Membro.
gcloud
Para conceder acesso à conta de serviço do Gemini Code Assist, em um ambiente 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:
- KEY_NAME: o nome da chave.
- PROJECT_ID: o ID do projeto que contém a chave.
- LOCATION: o local 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.
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 do
gcloud kms keys add-iam-policy-binding
.
Agora é possível criar um índice de repositório de código com um CMEK usando a API e especificar a chave a ser usada para criptografia.
Criar um índice de repositório de código com um CMEK
Para criar um novo repositório com proteção CMEK, faça uma das seguintes ações:
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 de repositório de código que você vai criar.
- LOCATION: o local 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
: o local 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 do 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 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 consoleGoogle Cloud ou a CLI gcloud.
- Desative temporariamente a CMEK.
- Destrua 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 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.