Configura i Controlli di servizio VPC e Private Service Connect con le sandbox

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:

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:

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.

  1. Apri Controlli di servizio VPC nella Cloud de Confiance console e modifica il perimetro.
  2. In Servizi limitati, aggiungi API Vertex AI (aiplatform.googleapis.com).
  3. 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.
  4. 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.com al VIP limitato 199.36.153.4/30 e 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_VPC
    
  • Secure 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