Configura le chiavi di crittografia gestite dal cliente (CMEK) per le sandbox

Cripta i dati at-rest di una sandbox con una chiave di Cloud Key Management Service di tua proprietà e sotto il tuo controllo.

Panoramica

Per impostazione predefinita, Google Cloud cripta i dati at-rest con Google-owned and Google-managed encryption keys. Le chiavi di crittografia gestite dal cliente (CMEK) ti consentono di creare e gestire una chiave di crittografia di Cloud KMS in modo da poterne controllare l'utilizzo, ruotarla e disattivarla o distruggerla per rendere illeggibili i dati protetti.

La sandbox di Gemini Enterprise Agent Platform esegue il codice, il browser o il container personalizzato dell'agente in un ambiente isolato. Questo ambiente scrive i contenuti dei clienti sul disco e può essere sottoposto a checkpoint in snapshot, che vengono protetti da CMEK quando lo attivi nell'istanza della piattaforma agentica Gemini Enterprise principale della sandbox.

Puoi configurare CMEK per le sandbox di Gemini Enterprise Agent Platform solo quando crei l'istanza di Gemini Enterprise Agent Platform. La chiave CMEK protegge l'istanza di Gemini Enterprise Agent Platform e le relative risorse secondarie, inclusi gli ambienti sandbox, i modelli e gli snapshot.

Cosa cripta CMEK per la sandbox

L'attivazione di CMEK nell'istanza Gemini Enterprise Agent Platform principale cripta le superfici at-rest della sandbox con la tua chiave:

  • Disco di avvio/file system radice del nodo GKE: file scritti dalla sessione in fase di runtime e stato in memoria trasferito su disco (CMEK del disco di avvio del nodo).
  • Bucket Cloud Storage degli snapshot: checkpoint del disco e della memoria di una sandbox (snapshot) (crittografia predefinita del bucket).

I metadati delle risorse (nomi, etichette, stato, informazioni di connessione), le variabili di ambiente e gli indirizzi email dei service account non vengono criptati con la chiave CMEK.

Per criptare le immagini container personalizzate, imposta CMEK sul tuo repository Artifact Registry.

Limitazioni e considerazioni

  • Per CMEK su Gemini Enterprise Agent Platform sono supportate solo le chiavi per singola regione. Le chiavi multiregionali, a due regioni e globali non sono supportate.
  • La chiave è immutabile quando crei l'istanza di Gemini Enterprise Agent Platform. Per utilizzare una chiave diversa, devi creare una nuova istanza di Gemini Enterprise Agent Platform. La rotazione a nuove versioni della stessa chiave è supportata e applicata automaticamente.
  • Se disattivi o distruggi la versione della chiave o revochi il ruolo Encrypter/Decrypter, non è possibile eseguire il provisioning o riprendere le sandbox e le scritture degli snapshot non vanno a buon fine. Ripristina l'accesso alla chiave per recuperare le risorse della sandbox.

Prima di iniziare

  • Avere o creare un keyring e una chiave Cloud KMS. Come best practice, conserva le chiavi in un progetto separato dai workload di Gemini Enterprise Agent Platform, gestito da un amministratore diverso.
  • Verifica di disporre dei ruoli per creare e gestire le chiavi (roles/cloudkms.admin) e per creare l'istanza di Gemini Enterprise Agent Platform.
  • Se non l'hai ancora fatto, crea un agente di servizio Agent Runtime:

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

Crea una chiave Cloud KMS

Crea una chiave per una singola regione nella stessa regione dell'istanza di 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

Sostituisci quanto segue:

  • REGION: Google Cloud la regione della tua istanza di Gemini Enterprise Agent Platform (ad esempio us-central1).

Concedi al service agent Agent Platform l'accesso alla tua chiave

Concedi all'agente di servizio Agent Runtime il ruolo Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) sulla chiave:

# 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.iam.gserviceaccount.com" \
    --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"

Sostituisci quanto segue:

  • PROJECT_NUMBER: il tuo numero di progetto Google Cloud .

Abilita CMEK nell'istanza di Agent Platform

Imposta encryption_spec.kms_key_name quando crei l'istanza di Gemini Enterprise Agent Platform. Ogni modello di sandbox e ogni sandbox che crei al suo interno eredita questa chiave.

SDK 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

Utilizzando l'API REST, imposta lo stesso valore su reasoningEngines.encryptionSpec.kmsKeyName al momento della creazione:

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"
    }
  }'

Crea una sandbox e verifica la configurazione CMEK

  1. Crea il template della sandbox e la sandbox nell'istanza di Gemini Enterprise Agent Platform protetta da CMEK.
  2. Verifica che l'istanza di Gemini Enterprise Agent Platform riporti la tua chiave in encryption_spec.kms_key_name recuperando i dettagli dell'istanza.
  3. Se vuoi, controlla gli audit log di Cloud KMS per verificare che le operazioni di crittografia e decriptazione vengano eseguite all'avvio delle sandbox e alla scrittura degli snapshot.

Passaggi successivi