Configurar chaves de criptografia gerenciadas pelo cliente (CMEK) para sandboxes

Criptografar os dados em repouso de um sandbox com uma chave do Cloud Key Management Service que você possui e controla.

Visão geral

Por padrão, o Google Cloud criptografa seus dados em repouso com chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês). Cloud de Confiance by S3NS Google Cloud-powered encryption keysAs CMEKs permitem criar e gerenciar uma chave de criptografia do Cloud Key Management Service para auditar o uso dela, fazer a rotação e desativar ou destruir para tornar os dados protegidos ilegíveis.

O sandbox da Gemini Enterprise Agent Platform executa o código, o navegador ou o contêiner personalizado do agente em um ambiente isolado. Esse ambiente grava o conteúdo do cliente no disco e pode ser verificado em snapshots, que a CMEK protege quando você a ativa na instância pai da Gemini Enterprise Agent Platform do sandbox.

Só é possível configurar a CMEK para sandboxes da Gemini Enterprise Agent Platform ao criar a instância dela. A chave CMEK protege a instância da Gemini Enterprise Agent Platform e os sub-recursos dela, incluindo os ambientes de sandbox, modelos e snapshots.

O que a CMEK criptografa para o sandbox

A ativação da CMEK na instância pai da Gemini Enterprise Agent Platform criptografa as superfícies em repouso do sandbox com sua chave:

  • Disco de inicialização do nó do GKE / sistema de arquivos raiz:arquivos que a sessão grava no ambiente de execução e estado na memória paginado para o disco (CMEK do disco de inicialização do nó).
  • Bucket do Cloud Storage de snapshot:checkpoints de disco e memória de um sandbox (snapshots) (criptografia padrão do bucket).

Os metadados de recursos (nomes, rótulos, estado, informações de conexão) e as variáveis de ambiente e e-mails de contas de serviço não são criptografados com a chave CMEK.

Para criptografar imagens de contêiner personalizadas, defina a CMEK no seu próprio repositório do Artifact Registry.

Limitações e considerações

  • Somente chaves de região única são aceitas para CMEK na Gemini Enterprise Agent Platform. Chaves multirregionais, birregionais e globais não são aceitas.
  • A chave é imutável quando você cria a instância da Gemini Enterprise Agent Platform. Para usar uma chave diferente, é necessário criar uma nova instância da Gemini Enterprise Agent Platform. A rotação para novas versões da mesma chave é aceita e aplicada automaticamente.
  • Se você desativar ou destruir a versão da chave ou revogar o papel de criptografador/descriptografador, os sandboxes não poderão ser provisionados ou retomados, e as gravações de snapshot vão falhar. Restaure o acesso à chave para recuperar os recursos do sandbox.

Antes de começar

  • Tenha ou crie um keyring e uma chave do Cloud Key Management Service. Como prática recomendada, mantenha as chaves em um projeto separado das cargas de trabalho da Gemini Enterprise Agent Platform, gerenciadas por um administrador diferente.
  • Confirme se você tem os papéis para criar e gerenciar chaves (roles/cloudkms.admin) e para criar a instância da Gemini Enterprise Agent Platform.
  • Crie um agente de serviço do Agent Runtime, se ainda não tiver feito isso:

    # Create the service agent if needed
    gcloud beta services identity create \
        --service=aiplatform.googleapis.com \
        --project=PROJECT_ID
    

Criar uma chave do Cloud Key Management Service

Crie uma chave de região única na mesma região da instância da Gemini Enterprise Agent Platform:

# Key ring (once per region)
gcloud kms keyrings create sandbox-keyring \
    --location=REGION

# Key
gcloud kms keys create sandbox-key \
    --location=REGION \
    --keyring=sandbox-keyring \
    --purpose=encryption

Substitua:

  • REGION: a Cloud de Confiance região da instância da Gemini Enterprise Agent Platform (por exemplo, us-central1).

Conceder ao agente de serviço da Agent Platform acesso à sua chave

Conceda ao agente de serviço do Agent Runtime o papel de criptografador/descriptografador de CryptoKey do Cloud Key Management Service (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave:

# Grant Encrypter/Decrypter on the key
gcloud kms keys add-iam-policy-binding sandbox-key \
    --location=REGION \
    --keyring=sandbox-keyring \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform-re.s3ns-system.iam.gserviceaccount.com" \
    --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"

Substitua:

  • PROJECT_NUMBER: seu Cloud de Confiance by S3NS número do projeto.

Ativar a CMEK na instância da Agent Platform

Defina encryption_spec.kms_key_name ao criar a instância da Gemini Enterprise Agent Platform. Todos os modelos e sandboxes criados nela herdam essa chave.

SDK do Python

import vertexai

client = vertexai.Client(project="PROJECT_ID", location="REGION",
                        http_options={"api_version": "v1beta1"})
agent_instance = client.agent_engines.create(
    config={
        "encryption_spec": {
            "kms_key_name":
                "projects/PROJECT_ID/locations/REGION/keyRings/sandbox-keyring/cryptoKeys/sandbox-key"
        }
    },
)

REST

Usando a API REST, defina o mesmo valor em reasoningEngines.encryptionSpec.kmsKeyName na criação:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/reasoningEngines \
  -d '{
    "display_name": "cmek-protected-engine",
    "encryption_spec": {
      "kms_key_name": "projects/PROJECT_ID/locations/REGION/keyRings/sandbox-keyring/cryptoKeys/sandbox-key"
    }
  }'

Criar um sandbox e verificar a configuração da CMEK

  1. Crie o modelo e o sandbox na instância da Gemini Enterprise Agent Platform protegida pela CMEK.
  2. Confirme se a instância da Gemini Enterprise Agent Platform informa sua chave em encryption_spec.kms_key_name por acessar os detalhes da instância.
  3. Opcionalmente, verifique os registros de auditoria do Cloud Key Management Service para confirmar se as operações de criptografia e descriptografia ocorrem quando os sandboxes são iniciados e os snapshots são gravados.

A seguir