Controlla il traffico in entrata privato e il traffico in uscita verso internet di una sandbox di Agent Platform con Private Service Connect (PSC-E / PSC-I). Questi controlli rendono la sandbox conforme ai Controlli di servizio VPC all'interno o all'esterno di un perimetro.
Panoramica
I Controlli di servizio VPC consentono di definire un perimetro di servizio che isola le risorse Cloud de Confiance by S3NS per ridurre il rischio di esfiltrazione di dati. La sandbox di Gemini Enterprise Agent Platform fornisce agli agenti un ambiente di calcolo sicuro e isolato per eseguire codice non attendibile, utilizzare un browser web (utilizzo del computer) o eseguire un'immagine container personalizzata. La sandbox espone un piano dati interattivo ed effettua chiamate in uscita, pertanto è regolata da due controlli Private Service Connect: traffico in entrata privato (PSC-E) e controllo del traffico in uscita (PSC-I).
Quando esegui la sandbox all'interno di un perimetro, i seguenti elementi rimangono protetti all'interno del tuo limite:
- Dati letti o scritti dall'agente durante una sessione della sandbox (file sul disco della sandbox, stato in memoria).
- Snapshot della sandbox che acquisiscono lo stato del disco e della memoria e vengono archiviati automaticamente in un bucket Cloud Storage.
- Richieste e risposte scambiate con il piano dati della sandbox (ad esempio, comandi di utilizzo del computer e screenshot).
- Immagini container personalizzate estratte da Artifact Registry.
- Chiamate effettuate dalla sandbox alle API di Google (ad esempio, Cloud Storage o Agent Platform).
Puoi anche configurare il controllo del traffico in entrata e in uscita senza un perimetro dei Controlli di servizio VPC, poiché PSC-E (traffico in entrata privato) e PSC-I (traffico in uscita) rendono una sandbox conforme ai Controlli di servizio VPC. Per configurare il traffico in entrata e in uscita senza un perimetro dei Controlli di servizio VPC, vai a Controllare il traffico in uscita della sandbox con un'interfaccia Private Service Connect (PSC-I).
Limitazioni e considerazioni
- Il traffico in entrata privato può essere abilitato per un solo progetto consumer e deve essere lo stesso progetto utente in cui viene eseguita la sandbox.
- È supportata solo la risoluzione privata tramite il peering DNS; il forwarding DNS pubblico è disabilitato per impedire il tunneling.
- La registrazione di richieste e risposte non è disponibile per le risorse protette dai Controlli di servizio VPC.
- L'accesso programmatico e alla console dall'esterno del perimetro viene negato a meno che il chiamante non si trovi a un livello di accesso.
Prima di iniziare
- Crea o identifica il perimetro di servizio dei Controlli di servizio VPC che contiene il tuo progetto. Affinché le sandbox siano protette dal perimetro dei Controlli di servizio VPC, il tuo Cloud de Confiance by S3NS progetto deve trovarsi nel perimetro prima di creare le sandbox.
- Abilita l'API Agent Platform (
aiplatform.googleapis.com) nel tuo progetto. - Disponi di una rete VPC nella regione in cui esegui le sandbox.
- Verifica di avere i ruoli richiesti:
- Ruolo di amministratore di Gestore contesto accesso per il perimetro
- Amministratore rete Compute (
roles/compute.networkAdmin) nel progetto proprietario del collegamento di rete.
Aggiungere Agent Platform al perimetro di servizio
Aggiungi l'API Agent Platform all'elenco dei servizi limitati nel perimetro dei Controlli di servizio VPC. In questo modo, Agent Platform (incluso il control plane della sandbox) viene protetta e l'accesso a internet pubblico all'API viene bloccato, a meno che il chiamante non si trovi a un livello di accesso.
- Apri Controlli di servizio VPC nella Cloud de Confiance console e modifica il perimetro.
- In Servizi limitati, aggiungi API Vertex AI (
aiplatform.googleapis.com). - Assicurati che le dipendenze utilizzate dalla sandbox si trovino nello stesso perimetro, in genere Cloud Storage (
storage.googleapis.com) e Artifact Registry (artifactregistry.googleapis.com, per le immagini container personalizzate). L'archiviazione degli snapshot viene gestita automaticamente. - Per ripristinare l'accesso per gli utenti attendibili esterni al perimetro (ad esempio, la rete aziendale), collega un livello di accesso al perimetro.
(Facoltativo) Configurare l'accesso privato alle API di Google
All'interno del perimetro dei Controlli di servizio VPC, la sandbox raggiunge le API di Google privatamente tramite l'indirizzo IP virtuale (VIP) limitato. Utilizza anche il VIP limitato dalle tue reti VPC e on-premise in modo che le richieste non attraversino mai la rete internet pubblica.
- Instrada
*.googleapis.comal VIP limitato199.36.153.4/30e abilita l'accesso privato Google sulle subnet che chiamano le API di Google. - Crea zone private Cloud DNS per
googleapis.com(e, se estrai immagini,pkg.dev/gcr.io) che si risolvano nel VIP limitato.
Controllare il traffico in uscita della sandbox con un'interfaccia Private Service Connect (PSC-I)
Per consentire alla sandbox di raggiungere internet o i servizi privati, collega il traffico in uscita al tuo VPC con un'interfaccia Private Service Connect, quindi gestisci il traffico con i tuoi controlli del traffico in uscita.
Ogni risorsa in questo passaggio viene creata nel progetto utente proprietario della sandbox o nel progetto host VPC condiviso. Il traffico in uscita viene indirizzato alla singola rete VPC e al collegamento di rete impostati nel modello.
Creare il collegamento di rete
Crea il collegamento di rete per la sandbox:
# A dedicated subnet for the PSC interface (minimum /28)
gcloud compute networks subnets create sandbox-psc-subnet \
--network=YOUR_VPC \
--range=10.0.0.0/28 \
--region=REGION
# The network attachment the sandbox connects into
gcloud compute networks network-attachments create sandbox-egress-na \
--region=REGION \
--connection-preference=ACCEPT_AUTOMATIC \
--subnets=sandbox-psc-subnet
Fare riferimento al collegamento dal modello della sandbox
Imposta i campi del traffico in uscita in SandboxEnvironmentTemplate in modo che la sandbox instradi il traffico in uscita tramite il tuo VPC:
from vertexai import Client
client = Client(project="PROJECT_ID", location="REGION",
http_options={"api_version": "v1beta1"})
templates = client.agent_engines.sandboxes.templates
op = templates.create(
name=agent_instance_name,
display_name="cu-vpcsc-template",
config={
"custom_container_environment": {
"custom_container_spec": {"image_uri": "IMAGE_URI"},
"ports": [{"port": 8080, "protocol": "TCP"}],
},
"egress_control_config": {
"internet_access": True, # Enables outbound access from the sandbox. With VPC-SC, that traffic is bridged into your VPC.
"customer_vpc_network":
"projects/PROJECT_ID/global/networks/YOUR_VPC", # The VPC network in your project that egress is bridged into. Checked by VPC-SC at creation time.
"network_attachment":
"projects/PROJECT_ID/regions/REGION/networkAttachments/sandbox-egress-na", # The network attachment that accepts the sandbox's PSC interface.
},
},
)
L'interfaccia PSC crea il percorso privato nel tuo VPC e la piattaforma indirizza automaticamente il traffico in uscita della sandbox quando internet_access è abilitato.
Per configurare e gestire il percorso al di fuori del VPC, decidi se hai bisogno del traffico in uscita internet o solo privato:
- Traffico in uscita verso internet: per il traffico in uscita verso internet, è necessario Cloud NAT, oltre al controllo della destinazione tramite le regole di Cloud Next Generation Firewall (Cloud NGFW) o Secure Web Proxy.
- Traffico in uscita solo privato (raggiungi i servizi nel tuo VPC o on-premise, senza internet): Cloud NAT non è obbligatorio. Sono necessari solo route, una regola firewall e il peering DNS.
Configurare il traffico in uscita verso internet e gestire le destinazioni
La sandbox entra nel tuo VPC con un indirizzo interno (RFC 1918), quindi ha bisogno di Cloud NAT per raggiungere internet. Prenota un IP statico per il traffico in uscita se le tue destinazioni consentono l'elenco degli indirizzi IP di origine.
# Reserve a static egress IP (optional, for destination-side allow-listing)
gcloud compute addresses create sandbox-egress-ip --region=REGION
# Cloud Router + NAT for the region, scoped to the PSC subnet
gcloud compute routers create sandbox-egress-router \
--network=YOUR_VPC --region=REGION
gcloud compute routers nats create sandbox-egress-nat \
--router=sandbox-egress-router --region=REGION \
--nat-external-ip-pool=sandbox-egress-ip \
--nat-custom-subnet-ip-ranges=sandbox-psc-subnet
Per limitare le destinazioni che la sandbox può raggiungere durante il transito del traffico nel VPC, scegli il livello di controllo di cui hai bisogno:
Cloud NGFW (a livello di rete): una policy del firewall di rete globale con regole di autorizzazione (sono supportati gli oggetti FQDN) più un'impostazione di rifiuto predefinita per tutto il resto:
gcloud compute network-firewall-policies create sandbox-egress-policy --global # Allow only the destinations your agent needs (by FQDN) gcloud compute network-firewall-policies rules create 1000 \ --firewall-policy=sandbox-egress-policy --global-firewall-policy \ --direction=EGRESS --action=allow --layer4-configs=tcp:443 \ --dest-fqdns=api.partner.example.com # Default-deny the rest of egress gcloud compute network-firewall-policies rules create 65000 \ --firewall-policy=sandbox-egress-policy --global-firewall-policy \ --direction=EGRESS --action=deny --layer4-configs=all \ --dest-ip-ranges=0.0.0.0/0 gcloud compute network-firewall-policies associations create \ --firewall-policy=sandbox-egress-policy --global-firewall-policy \ --network=YOUR_VPCSecure Web Proxy (applicazione/L7): esegui il deployment di Secure Web Proxy come punto di ispezione del traffico in uscita nel tuo VPC per la policy TLS-aware per URL e instrada il traffico in uscita della subnet PSC tramite questo proxy.
Configurare il traffico in uscita solo privato
Se la sandbox ha bisogno solo di servizi privati nel tuo VPC o on-premise, assicurati che il VPC abbia una route verso la destinazione, consenti la route con una regola firewall per il traffico in uscita dalla subnet PSC (10.0.0.0/28) e risolvi il nome del servizio tramite il peering DNS.
Configurare il peering DNS
Consenti la risoluzione dei nomi della sandbox tramite il tuo VPC anziché i resolver pubblici (in questo modo viene bloccata anche l'esfiltrazione tramite tunnel DNS). Crea una zona privata Cloud DNS nel tuo VPC con i record di cui ha bisogno la sandbox, quindi configura il peering DNS in modo che la sandbox risolva i nomi da quella zona.
Concedere l'accesso al service agent (VPC condiviso)
Se il collegamento di rete si trova in un progetto separato (Progetto A) dal progetto in cui viene eseguita la sandbox (Progetto B), concedi al service agent di Agent Platform del Progetto B il ruolo Compute Network User nel Progetto A.
# Agent Platform service agent of the project that runs the sandbox
service-PROJECT_NUMBER@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com
# On the project that owns the network attachment
gcloud projects add-iam-policy-binding NETWORK_PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/compute.networkUser"
Sostituisci quanto segue:
PROJECT_NUMBER: il numero del progetto in cui viene eseguita la sandbox.NETWORK_PROJECT_ID: l'ID del progetto proprietario del collegamento di rete.
Abilitare il traffico in entrata privato con Private Service Connect (PSC-E)
I carichi di lavoro interattivi espongono un piano dati a cui un client deve connettersi. Raggiungi il piano dati tramite un endpoint Private Service Connect privato (PSC-E) nel tuo VPC anziché tramite la rete internet pubblica.
Dichiarare il progetto consumer consentito
Imposta la configurazione del traffico in entrata nel modello con il progetto consumer autorizzato a connettersi. Solo lo stesso progetto utente in cui viene eseguita la sandbox può avere un traffico in entrata privato al VPC della sandbox.
Connettiti alla sandbox da un VPC nello stesso progetto:
config = {
# ...custom_container_environment, egress_control_config...
"ingress_control_config": {
"private_service_connect_config": {
# Must be the same project the sandbox runs in.
"enable_private_service_connect": True,
}
},
}
Creare l'endpoint PSC nel VPC
Dopo aver creato la sandbox, leggi il collegamento del servizio dalle informazioni di connessione e indirizzalo con una regola di forwarding (endpoint PSC) nel tuo VPC:
# The sandbox returns a service attachment to connect to
service_attachment = sandbox.connection_info.service_attachment
# Reserve an internal IP and create the PSC endpoint
gcloud compute addresses create sandbox-ingress-ip \
--region=REGION --subnet=YOUR_SUBNET
gcloud compute forwarding-rules create sandbox-ingress-ep \
--region=REGION \
--network=YOUR_VPC \
--address=sandbox-ingress-ip \
--target-service-attachment=SERVICE_ATTACHMENT_URI
I client nel VPC del progetto (o raggiungibili tramite questo VPC) ora si connettono alla sandbox tramite l'IP privato dell'endpoint (ad esempio, un client che si connette tramite la porta WebSocket o CDP della sandbox).
Passaggi successivi
- Leggi la Panoramica della sandbox e i Container personalizzati (BYOC).
- Scopri come funzionano le interfacce Private Service Connect con Agent Runtime.
- Esamina la risoluzione dei problemi dei Controlli di servizio VPC.
- Segui il codelab dell'interfaccia PSC di Agent Engine per una procedura dettagliata end-to-end del traffico in uscita.