Controle a entrada particular e a saída de dados para a internet de um sandbox da Agent Platform com o Private Service Connect (PSC-E / PSC-I). Esses controles tornam o sandbox compatível com o VPC Service Controls dentro ou fora de um perímetro.
Visão geral
O VPC Service Controls permite definir um perímetro de serviço que isola Cloud de Confiance by S3NS recursos para reduzir o risco de exfiltração de dados. O sandbox da Gemini Enterprise Agent Platform oferece aos agentes um ambiente de computação seguro e isolado para executar códigos não confiáveis, usar um navegador da Web (uso do computador) ou executar uma imagem de contêiner personalizada. O sandbox expõe um plano de dados interativo e faz chamadas de saída. Por isso, ele é regido por dois controles do Private Service Connect: entrada particular (PSC-E) e controle de saída (PSC-I).
Ao executar o sandbox dentro de um perímetro, o seguinte permanece protegido dentro do limite:
- Dados que o agente lê ou grava durante uma sessão de sandbox (arquivos no disco do sandbox, estado na memória).
- Snapshots do sandbox que capturam o estado do disco e da memória e são armazenados automaticamente em um bucket do Cloud Storage.
- Solicitações e respostas trocadas com o plano de dados do sandbox (por exemplo, comandos de uso do computador e capturas de tela).
- Imagens do contêiner personalizadas extraídas do Artifact Registry.
- Chamadas que o sandbox faz para as APIs do Google (por exemplo, Cloud Storage ou Agent Platform).
Também é possível configurar o controle de entrada e saída sem um perímetro do VPC Service Controls, já que o PSC-E (entrada particular) e o PSC-I (saída) são o que tornam um sandbox compatível com o VPC Service Controls. Para configurar a entrada e a saída sem um perímetro do VPC Service Controls, pule para Controlar a saída do sandbox com uma interface do Private Service Connect (PSC-I).
Limitações e considerações
- A entrada particular pode ser ativada para exatamente um projeto do consumidor, e ele precisa ser o mesmo projeto do usuário em que o sandbox é executado.
- Somente a resolução particular por peering de DNS é compatível. O encaminhamento público de DNS é desativado para evitar o tunelamento.
- O registro de solicitações e respostas não está disponível para recursos protegidos pelo VPC Service Controls.
- O acesso programático e de console de fora do perímetro é negado, a menos que o autor da chamada esteja em um nível de acesso.
Antes de começar
- Crie ou identifique o perímetro de serviço do VPC Service Controls que contém seu projeto. Para que os sandboxes sejam protegidos pelo perímetro do VPC Service Controls, o Cloud de Confiance by S3NS projeto precisa estar no perímetro antes de você criar os sandboxes.
- Ative a API Agent Platform (
aiplatform.googleapis.com) no seu projeto. - Tenha uma rede VPC na região em que você executa sandboxes.
- Confirme se você tem os papéis necessários:
- Papel de administrador do Access Context Manager para o perímetro
- Administrador de rede do Compute (
roles/compute.networkAdmin) no projeto que possui o anexo de rede.
Adicionar a Agent Platform ao perímetro de serviço
Adicione a API Agent Platform à lista de serviços restritos no perímetro do VPC Service Controls. Isso protege a Agent Platform (incluindo o plano de controle do sandbox) e bloqueia o acesso à internet público à API, a menos que o autor da chamada esteja em um nível de acesso.
- Abra o VPC Service Controls no Cloud de Confiance console e edite o perímetro.
- Em Serviços restritos, adicione a API Vertex AI (
aiplatform.googleapis.com). - Verifique se as dependências usadas pelo sandbox estão no mesmo perímetro, normalmente Cloud Storage (
storage.googleapis.com) e Artifact Registry (artifactregistry.googleapis.com, para imagens de contêiner personalizadas). O armazenamento de snapshots é processado automaticamente. - Para restaurar o acesso de usuários confiáveis fora do perímetro (por exemplo, sua rede corporativa), anexe um nível de acesso ao perímetro.
Opcional: configurar o acesso particular às APIs do Google
Dentro do perímetro do VPC Service Controls, o sandbox acessa as APIs do Google de maneira particular pelo endereço IP virtual (VIP) restrito. Nas suas redes VPC e locais, use o VIP restrito para que as solicitações nunca atravessem a Internet pública.
- Encaminhe
*.googleapis.compara o VIP restrito199.36.153.4/30e ative o Acesso privado do Google nas sub-redes que chamam as APIs do Google. - Crie zonas particulares do Cloud DNS para
googleapis.com(e, se você extrair imagens,pkg.dev/gcr.io) que sejam resolvidas para o VIP restrito.
Controlar a saída do sandbox com uma interface do Private Service Connect (PSC-I)
Para permitir que o sandbox acesse a Internet ou serviços particulares, faça a ponte da saída para a VPC com uma interface do Private Service Connect e governe esse tráfego com seus próprios controles de saída.
Cada recurso nesta etapa é criado no projeto do usuário que possui o sandbox ou no projeto host da VPC compartilhada. A saída é direcionada para a única rede VPC e anexo de rede definidos no modelo.
Criar o anexo de rede
Crie o anexo de rede para o 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
Referenciar o anexo do modelo de sandbox
Defina os campos de saída no SandboxEnvironmentTemplate para que o sandbox encaminhe a saída pela 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.
},
},
)
A interface do PSC cria o caminho particular para a VPC, e a plataforma direciona automaticamente a saída do sandbox para ela quando internet_access está ativado.
Para configurar e governar o caminho da VPC, decida se você precisa de saída da Internet ou apenas particular:
- Saída de dados para a internet: Para saída de dados para a internet, o Cloud NAT é necessário, além do controle de destino usando regras do Cloud Next Generation Firewall (Cloud NGFW) ou do Secure Web Proxy.
- Saída somente particular (acessar serviços na VPC ou no local, sem Internet): o Cloud NAT não é necessário. Você só precisa de rotas, uma regra de firewall e peering de DNS.
Configurar a saída de dados para a internet e governar destinos
O sandbox entra na VPC em um endereço interno (RFC 1918), então ele precisa do Cloud NAT para acessar a Internet. Reserve um IP de saída estático se os destinos permitirem a lista de IPs de origem.
# 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
Para restringir os destinos que o sandbox pode alcançar à medida que o tráfego transita pela VPC, escolha o nível de controle necessário:
Cloud NGFW (nível de rede): uma política de firewall de rede global com regras de permissão (objetos FQDN são compatíveis) e uma negação padrão para todo o 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 (aplicativo/L7): implante o Secure Web Proxy como o ponto de inspeção de saída na VPC para uma política compatível com TLS e por URL e encaminhe a saída da sub-rede do PSC por ele.
Configurar a saída somente particular
Se o sandbox precisar apenas de serviços particulares na VPC ou no local, verifique se a VPC tem uma rota para o destino, permita-o com uma regra de firewall de saída da sub-rede do PSC (10.0.0.0/28) e resolva o nome do serviço por peering de DNS.
Configurar o peering de DNS
Forneça a resolução de nomes do sandbox pela VPC em vez de resolvedores públicos (isso também bloqueia a exfiltração de túnel de DNS). Crie uma zona particular do Cloud DNS na VPC com os registros necessários para o sandbox e configure o peering de DNS para que o sandbox resolva nomes dessa zona.
Conceder acesso do agente de serviço (VPC compartilhada)
Se o anexo de rede estiver em um projeto separado (Projeto A) do projeto em que o sandbox é executado (Projeto B), conceda ao agente de serviço da Agent Platform do Projeto B o papel de Usuário da rede do Compute no Projeto 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"
Substitua:
PROJECT_NUMBER: o número do projeto que executa o sandbox.NETWORK_PROJECT_ID: o ID do projeto que possui o anexo de rede.
Ativar a entrada particular com o Private Service Connect (PSC-E)
As cargas de trabalho interativas expõem um plano de dados ao qual um cliente precisa se conectar. Acesse esse plano de dados por um endpoint particular do Private Service Connect (PSC-E) na VPC em vez de pela Internet pública.
Declarar o projeto do consumidor permitido
Defina a configuração de entrada no modelo com o projeto do consumidor permitido para se conectar. Somente o mesmo projeto do usuário em que o sandbox é executado pode ter entrada particular na VPC do sandbox.
Conecte-se ao sandbox de uma VPC no mesmo projeto:
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,
}
},
}
Criar o endpoint do PSC na VPC
Depois que o sandbox for criado, leia o anexo de serviço nas informações de conexão e direcione-o com uma regra de encaminhamento (endpoint do PSC) na 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
Os clientes na VPC desse projeto (ou acessíveis por ele) agora se conectam ao sandbox pelo IP particular do endpoint (por exemplo, um cliente que se conecta pela porta WebSocket ou CDP do sandbox).
A seguir
- Leia a Visão geral do sandbox e Contêineres personalizados (BYOC).
- Saiba como as interfaces do Private Service Connect funcionam com o Agent Runtime.
- Analise a solução de problemas do VPC Service Controls.
- Siga o codelab da interface do PSC do Agent Engine para um tutorial completo de saída.