Mengonfigurasi Kontrol Layanan VPC dan Private Service Connect dengan sandbox

Kontrol ingress pribadi dan egress internet sandbox Agent Platform dengan Private Service Connect (PSC-E / PSC-I). Kontrol ini membuat sandbox mematuhi Kontrol Layanan VPC di dalam perimeter atau tanpa perimeter.

Ringkasan

Kontrol Layanan VPC memungkinkan Anda menentukan perimeter layanan yang mengisolasi resource Cloud de Confiance by S3NS untuk mengurangi risiko pemindahan data yang tidak sah. Sandbox Gemini Enterprise Agent Platform memberi agen Anda lingkungan komputasi yang aman dan terisolasi untuk menjalankan kode yang tidak tepercaya, mengoperasikan browser web (penggunaan komputer), atau menjalankan image container kustom. Sandbox mengekspos bidang data interaktif dan melakukan panggilan keluar, sehingga diatur dengan dua kontrol Private Service Connect: ingress pribadi (PSC-E) dan kontrol egress (PSC-I).

Saat Anda menjalankan sandbox di dalam perimeter, hal berikut tetap terlindungi dalam batas Anda:

  • Data yang dibaca atau ditulis agen Anda selama sesi sandbox (file di disk sandbox, status dalam memori).
  • Snapshot sandbox yang merekam status disk dan dalam memori serta disimpan secara otomatis di bucket Cloud Storage.
  • Permintaan dan respons yang dipertukarkan dengan bidang data sandbox (misalnya, perintah penggunaan komputer dan screenshot).
  • Image container kustom yang diambil dari Artifact Registry.
  • Panggilan yang dilakukan sandbox ke Google API (misalnya, Cloud Storage atau Agent Platform).

Anda juga dapat menyiapkan kontrol ingress dan egress tanpa perimeter Kontrol Layanan VPC, karena PSC-E (ingress pribadi) dan PSC-I (egress) adalah hal yang membuat sandbox mematuhi Kontrol Layanan VPC. Untuk menyiapkan ingress dan egress tanpa perimeter Kontrol Layanan VPC, langsung ke Mengontrol egress sandbox dengan antarmuka Private Service Connect (PSC-I).

Batasan dan pertimbangan

  • Ingress pribadi dapat diaktifkan untuk tepat satu project konsumen, dan harus merupakan project pengguna yang sama dengan tempat sandbox dijalankan.
  • Hanya resolusi pribadi melalui peering DNS yang didukung; penerusan DNS publik dinonaktifkan untuk mencegah tunneling.
  • Logging permintaan dan respons tidak tersedia untuk resource yang dilindungi oleh Kontrol Layanan VPC.
  • Akses terprogram dan konsol dari luar perimeter ditolak kecuali jika pemanggil berada di tingkat akses.

Sebelum memulai

  • Buat atau identifikasi perimeter layanan Kontrol Layanan VPC yang berisi project Anda. Agar sandbox diamankan oleh perimeter Kontrol Layanan VPC, project Cloud de Confiance by S3NS Anda harus berada di perimeter sebelum Anda membuat sandbox.
  • Aktifkan Agent Platform API (aiplatform.googleapis.com) di project Anda.
  • Memiliki jaringan VPC di region tempat Anda menjalankan sandbox.
  • Pastikan Anda memiliki peran yang diperlukan:
    • Peran Access Context Manager admin untuk perimeter
    • Compute Network Admin (roles/compute.networkAdmin) di project yang memiliki lampiran jaringan.

Menambahkan Agent Platform ke perimeter layanan Anda

Tambahkan Agent Platform API ke daftar layanan yang dibatasi di perimeter Kontrol Layanan VPC Anda. Hal ini melindungi Agent Platform (termasuk bidang kontrol sandbox) dan memblokir akses internet publik ke API kecuali jika pemanggil berada di tingkat akses.

  1. Buka Kontrol Layanan VPC di konsol Cloud de Confiance , lalu edit perimeter Anda.
  2. Di bagian Restricted services, tambahkan Vertex AI API (aiplatform.googleapis.com).
  3. Pastikan dependensi yang digunakan sandbox Anda berada dalam perimeter yang sama—biasanya Cloud Storage (storage.googleapis.com) dan Artifact Registry (artifactregistry.googleapis.com, untuk image container kustom). Penyimpanan snapshot ditangani secara otomatis untuk Anda.
  4. Untuk memulihkan akses bagi pengguna tepercaya di luar perimeter (misalnya, jaringan perusahaan Anda), lampirkan tingkat akses ke perimeter.

Opsional: Mengonfigurasi akses pribadi ke Google API

Di dalam perimeter Kontrol Layanan VPC, sandbox menjangkau Google API secara pribadi melalui alamat IP virtual (VIP) yang dibatasi. Dari jaringan VPC dan lokal Anda sendiri, gunakan juga VIP terbatas agar permintaan tidak pernah melintasi internet publik.

  • Rute *.googleapis.com ke VIP yang dibatasi 199.36.153.4/30 dan aktifkan Akses Google Pribadi di subnet yang memanggil Google API.
  • Buat zona pribadi Cloud DNS untuk googleapis.com (dan, jika Anda mengambil image, pkg.dev / gcr.io) yang me-resolve ke VIP yang dibatasi.

Mengontrol egress sandbox dengan antarmuka Private Service Connect (PSC-I)

Agar sandbox dapat mengakses internet atau layanan pribadi, jembatani egress-nya ke VPC Anda dengan antarmuka Private Service Connect, lalu atur traffic tersebut dengan kontrol egress Anda sendiri.

Setiap resource dalam langkah ini dibuat di project pengguna yang memiliki sandbox atau di project host VPC Bersama-nya. Egress diarahkan ke satu jaringan VPC dan lampiran jaringan yang Anda tetapkan di template.

Membuat lampiran jaringan

Buat lampiran jaringan untuk 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

Mereferensikan lampiran dari template sandbox

Tetapkan kolom keluar di SandboxEnvironmentTemplate sehingga sandbox merutekan keluar melalui VPC Anda:

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.
        },
    },
)

Antarmuka PSC membangun jalur pribadi ke VPC Anda, dan platform akan otomatis mengarahkan traffic keluar sandbox ke jalur tersebut saat internet_access diaktifkan.

Untuk menyiapkan dan mengatur jalur keluar dari VPC Anda, tentukan apakah Anda memerlukan traffic keluar hanya pribadi atau internet:

  • Egress internet: Untuk egress internet, Cloud NAT diperlukan, ditambah kontrol tujuan menggunakan aturan Cloud Next Generation Firewall (Cloud NGFW) atau Secure Web Proxy.
  • Egress khusus pribadi (menjangkau layanan di VPC atau lokal, tanpa internet): Cloud NAT tidak diperlukan. Anda hanya memerlukan rute, aturan firewall, dan peering DNS.

Menyiapkan egress internet dan mengatur tujuan

Sandbox memasuki VPC Anda di alamat internal (RFC 1918), sehingga memerlukan Cloud NAT untuk menjangkau internet. Cadangkan IP keluar statis jika tujuan Anda mengizinkan daftar berdasarkan IP sumber.

# 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

Untuk membatasi tujuan yang dapat dijangkau sandbox saat traffic-nya melewati VPC Anda, pilih tingkat kontrol yang Anda perlukan:

  • Cloud NGFW (level jaringan): kebijakan firewall jaringan global dengan aturan izinkan (objek FQDN didukung) ditambah penolakan default untuk hal lainnya:

    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 (aplikasi/L7): deploy Secure Web Proxy sebagai titik pemeriksaan egress di VPC Anda untuk kebijakan per URL yang mendukung TLS, dan rute egress subnet PSC melaluinya.

Penyiapan untuk egress hanya pribadi

Jika sandbox hanya memerlukan layanan pribadi di VPC atau infrastruktur lokal Anda, pastikan VPC Anda memiliki rute ke tujuan, izinkan dengan aturan firewall egress dari subnet PSC (10.0.0.0/28), dan selesaikan nama layanan melalui peering DNS.

Menyiapkan peering DNS

Memberikan resolusi nama sandbox melalui VPC Anda, bukan resolver publik (hal ini juga memblokir pemindahan data yang tidak sah melalui tunnel DNS). Buat zona pribadi Cloud DNS di VPC Anda dengan data yang diperlukan sandbox, lalu konfigurasikan peering DNS agar sandbox me-resolve nama dari zona tersebut.

Memberikan akses kepada agen layanan (VPC Bersama)

Jika lampiran jaringan berada dalam project terpisah (Project A) dari project tempat sandbox dijalankan (Project B), berikan peran Compute Network User kepada agen layanan Agent Platform Project B di Project 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"

Ganti kode berikut:

  • PROJECT_NUMBER: nomor project dari project yang menjalankan sandbox.
  • NETWORK_PROJECT_ID: ID project yang memiliki lampiran jaringan.

Mengaktifkan ingress pribadi dengan Private Service Connect (PSC-E)

Workload interaktif mengekspos bidang data yang harus dihubungkan oleh klien. Jangkau bidang data tersebut melalui endpoint Private Service Connect (PSC-E) pribadi di VPC Anda, bukan melalui internet publik.

Mendeklarasikan project konsumen yang diizinkan

Tetapkan konfigurasi ingress pada template dengan project konsumen yang diizinkan untuk terhubung. Hanya project pengguna yang sama tempat sandbox berjalan yang dapat memiliki ingress pribadi ke VPC sandbox.

Hubungkan ke sandbox dari VPC dalam project yang sama:

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,
        }
    },
}

Membuat endpoint PSC di VPC Anda

Setelah sandbox dibuat, baca lampiran layanan dari info koneksinya dan targetkan dengan aturan penerusan (endpoint PSC) di VPC Anda:

# 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

Klien di VPC project tersebut (atau yang dapat dijangkau melalui VPC tersebut) kini terhubung ke sandbox melalui IP pribadi endpoint (misalnya, klien yang terhubung melalui port WebSocket atau CDP sandbox).

Langkah berikutnya