本页介绍了如何通过 Agent Gateway 路由 Agent Runtime 流量。Agent Gateway 是 Gemini Enterprise Agent Platform 生态系统的核心网络和安全组件。它为所有智能体交互提供安全且可管控的连接,无论这些交互是发生在用户与智能体之间、智能体与工具之间,还是智能体之间。
准备工作
确保您熟悉在 Agent Runtime 上部署智能体。
了解代理网关。 您可以在“智能体到任意位置”(出站)模式下使用 Agent Gateway,以保护和管理所有出站通信,包括与工具、模型、API 和其他智能体的出站流量。您可以在“客户端到智能体”(入站流量)模式下使用网关,以控制哪些客户端可以访问您的智能体。借助网关,您可以选择必须将哪些 IAP 政策和 Model Armor 模板应用于这些互动。
单个 Runtime 实例可以同时绑定到 Agent-to-Anywhere(出站)网关和 Client-to-Agent(入站)网关。
查看与关联到 Agent Gateway 的运行时部署相关的限制。
通过 Agent Gateway 路由 Agent Runtime 流量
如需通过 Agent Gateway 路由 Agent Runtime 流量,请执行以下步骤:
创建 Agent Gateway
创建 Agent Gateway 资源,并根据需要附加任何授权政策。您可以在“代理到任意位置”(出站)模式或“客户端到代理”(入站)模式下创建网关。
- 对于“客户端到代理”(入站)模式,代理和网关必须在同一项目和区域中创建。
- 对于“代理到任意位置”(出站流量)模式,网关可以在与代理不同的项目中创建,但必须在同一区域中创建。请注意,任何关联的 Agent Registry 注册和 IAM 政策绑定都必须在与 Agent Gateway 相同的项目中创建。
如需查看相关说明,请参阅设置代理网关。
确保网关配置符合部署需求。例如,如果您的代理需要大语言模型访问权限,请配置网关以允许此访问权限,以防止潜在的 Agent Runtime 部署失败。
可选:配置跨项目出站网关访问权限
如果您的 Agent-to-Anywhere(出站流量)网关与 Runtime 代理位于不同的项目中,请执行以下步骤,向 Runtime 服务代理授予对出站流量网关项目的访问权限:
在 Agent Gateway 项目中创建自定义 IAM 角色:
gcloud iam roles create ar_agw_cross_project_sa \ --project=AGENT_GATEWAY_PROJECT_ID \ --title="Runtime Agent Gateway Cross-Project SA" \ --description="Custom role for the cross-project service agent to access Agent Gateway" \ --permissions="networkservices.agentGateways.get,networkservices.operations.get"
将
AGENT_GATEWAY_PROJECT_ID替换为部署 Agent Gateway 的项目 ID。在网关项目中,向代理项目的 Agent Runtime 服务代理分配自定义角色:
gcloud projects add-iam-policy-binding AGENT_GATEWAY_PROJECT_ID \ --member="serviceAccount:service-AGENT_RUNTIME_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com" \ --role="projects/AGENT_GATEWAY_PROJECT_ID/roles/ar_agw_cross_project_sa"
将
AGENT_RUNTIME_PROJECT_NUMBER替换为部署了 Runtime 代理的项目的项目编号。
配置智能体以通过 Agent Gateway 路由流量
根据您是部署新代理还是配置现有代理,选择以下选项之一:
对于使用 Python SDK 的新代理
在部署代理时指定网关资源。例如,如需在 Agent Runtime 上部署智能体,请使用
client.runtimes.create传入local_agent对象以及任何可选配置。如果您想在此智能体中使用 Model Armor 或语义治理政策等网关介导的平台功能,请在创建调用中同时设置
agent_gateway_config和identity_type=AGENT_IDENTITY,如本示例所示。如果指定了agent_gateway_config,后端会在 API 级别强制执行identity_type = "AGENT_IDENTITY",如果省略或错误配置了运行时实例的身份,则会导致部署验证失败。代理到任意目的地
remote_agent = client.runtimes.create( agent=local_agent, config={ "agent_gateway_config": { "agent_to_anywhere_config": {"agent_gateway": projects/AGENT_GATEWAY_PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_TO_ANYWHERE_NAME} }, "identity_type": types.IdentityType.AGENT_IDENTITY, # Other optional configuration ... # "requirements": requirements, # "gcs_dir_name": gcs_dir_name, # https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/agent-identity#opt-out-caa "env_vars": { "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES": False, } }, )
替换以下内容:
AGENT_GATEWAY_PROJECT_ID:Agent Gateway 部署到的项目 IDREGION:部署代理和网关的区域AGENT_GATEWAY_TO_ANYWHERE_NAME:您在“代理到任意目的地(出站流量)”模式下创建的 Agent Gateway 的名称
客户端到代理
remote_agent = client.runtimes.create( agent=local_agent, config={ "agent_gateway_config": { "client_to_agent_config": {"agent_gateway": projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_CLIENT_TO_AGENT_NAME} }, "identity_type": types.IdentityType.AGENT_IDENTITY, # Other optional configuration ... # "requirements": requirements, # "gcs_dir_name": gcs_dir_name, # https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/agent-identity#opt-out-caa "env_vars": { "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES": False, } }, )
替换以下内容:
PROJECT_ID:代理和网关部署到的项目的 IDREGION:部署代理和网关的区域AGENT_GATEWAY_CLIENT_TO_AGENT_NAME:您在“客户端到 Agent Gateway”(入站流量)模式下创建的 Agent Gateway 的名称
对于使用 Terraform 的新代理
使用 Terraform 预配代理时,请使用
google-beta提供程序,并在google_vertex_ai_reasoning_engine资源内配置agent_gateway_config块。如需详细了解 Terraform 设置,请参阅使用 Terraform 预配代理。代理到任意目的地
使用以下 Terraform 配置将代理与出站流量的“代理到任意位置”网关相关联。
resource "google_vertex_ai_reasoning_engine" "agent" { provider = google-beta project = "AGENT_RUNTIME_PROJECT_ID" region = "REGION" display_name = "AGENT_DISPLAY_NAME" description = "AGENT_DESCRIPTION" spec { identity_type = "AGENT_IDENTITY" container_spec { image_uri = "REGION-docker.pkg.dev/AGENT_RUNTIME_PROJECT_ID/REPOSITORY/IMAGE:TAG" } deployment_spec { agent_gateway_config { agent_to_anywhere_config { agent_gateway = "projects/AGENT_GATEWAY_PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_TO_ANYWHERE_NAME" } } } } }
替换以下内容:
AGENT_RUNTIME_PROJECT_ID:部署代理的项目 IDREGION:部署代理和网关的区域AGENT_DISPLAY_NAME:智能体的显示名称AGENT_DESCRIPTION:代理的说明REPOSITORY:包含容器映像的 Artifact Registry 代码库IMAGE:容器映像名称TAG:容器映像标记AGENT_GATEWAY_PROJECT_ID:部署 Agent Gateway 的项目 IDAGENT_GATEWAY_TO_ANYWHERE_NAME:您在“代理到任意目的地(出站流量)”模式下创建的 Agent Gateway 的名称
客户端到代理
使用以下 Terraform 配置将代理与入站流量的客户端到代理网关相关联。
resource "google_vertex_ai_reasoning_engine" "agent" { provider = google-beta project = "PROJECT_ID" region = "REGION" display_name = "AGENT_DISPLAY_NAME" description = "AGENT_DESCRIPTION" spec { identity_type = "AGENT_IDENTITY" container_spec { image_uri = "REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" } deployment_spec { agent_gateway_config { client_to_agent_config { agent_gateway = "projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_CLIENT_TO_AGENT_NAME" } } } } }
替换以下内容:
PROJECT_ID:部署代理和网关的项目 IDREGION:部署代理和网关的区域AGENT_DISPLAY_NAME:智能体的显示名称AGENT_DESCRIPTION:代理的说明REPOSITORY:包含容器映像的 Artifact Registry 代码库IMAGE:容器映像名称TAG:容器映像标记AGENT_GATEWAY_CLIENT_TO_AGENT_NAME:您在“客户端到 Agent Gateway”(入站流量)模式下创建的 Agent Gateway 的名称
对于使用 REST API 的现有代理
代理到任意目的地
使用以下 REST API 请求将现有代理与 Agent-to-Anywhere 网关相关联,以实现出站流量。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "spec": { "deploymentSpec": { "agentGatewayConfig": { "agentToAnywhereConfig": { "agentGateway": "projects/AGENT_GATEWAY_PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_TO_ANYWHERE_NAME" } } } } }' \ "https://REGION-aiplatform.googleapis.com/v1/projects/AGENT_RUNTIME_PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID?updateMask=spec.deploymentSpec.agentGatewayConfig"
替换以下内容:
AGENT_GATEWAY_PROJECT_ID:部署网关的项目 IDAGENT_RUNTIME_PROJECT_ID:部署代理的项目 IDREGION:部署代理和网关的区域AGENT_GATEWAY_TO_ANYWHERE_NAME:您在“代理到任意目的地(出站流量)”模式下创建的 Agent Gateway 的名称RESOURCE_ID:代理的资源 ID
客户端到代理
使用以下 REST API 请求将现有代理与用于入站流量的 Client-to-Agent 网关相关联。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "spec": { "deploymentSpec": { "agentGatewayConfig": { "clientToAgentConfig": { "agentGateway": "projects/PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_CLIENT_TO_AGENT_NAME" } } } } }' \ "https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID?updateMask=spec.deploymentSpec.agentGatewayConfig"
替换以下内容:
PROJECT_ID:代理和网关部署到的项目的 IDREGION:部署代理和网关的区域AGENT_GATEWAY_CLIENT_TO_AGENT_NAME:您在“客户端到 Agent Gateway(入站流量)”中创建的 Agent Gateway 的名称RESOURCE_ID:代理的资源 ID
在 Agent Registry 中注册智能体
确保代理已在与 Agent Gateway 位于同一项目和区域中的 Agent Registry 实例中注册。
gcloud agent-registry services create RUNTIME_AGENT_SERVICE_NAME \ --project=AGENT_GATEWAY_PROJECT_ID \ --location=REGION \ --display-name="RUNTIME_AGENT_DISPLAY_NAME" \ --endpoint-spec-type=no-spec \ --interfaces=url="https://REGION-aiplatform.mtls.googleapis.com/v1/projects/RUNTIME_AGENT_PROJECT_NUMBER/locations/REGION/reasoningEngines/ENGINE_ID",protocolBinding="jsonrpc" \ --format="value(registryResource)"
替换以下内容:
RUNTIME_AGENT_SERVICE_NAME:您要为注册表中的代理条目指定的名称AGENT_GATEWAY_PROJECT_ID:网关部署到的项目 IDREGION:代理和网关的部署区域RUNTIME_AGENT_DISPLAY_NAME:注册表中代理条目的用户易于理解的显示名称RUNTIME_AGENT_PROJECT_NUMBER:部署了运行时代理的项目的项目编号ENGINE_ID:代理的资源 ID
如需了解详情,请参阅注册代理。 如需了解如何在多项目设置中手动注册代理,请参阅注册来自其他项目的代理。
创建智能体到注册表的 IAM 政策绑定
在 Agent Gateway 所在的同一项目和区域中执行此步骤。
gcloud iap web add-iam-policy-binding \ --resource-type=agent-registry \ --endpoint=AGENT_ENDPOINT_ID \ --region=REGION \ --project=AGENT_GATEWAY_PROJECT_ID \ --member=MEMBER \ --role=roles/iap.egressor
替换以下内容:
AGENT_ENDPOINT_ID:已注册代理的服务端点 ID。您可以从上一步的输出中获取此信息。MEMBER:要向其授予角色的代理身份主账号。单个推理引擎的格式为:principal://TRUST_DOMAIN/resources/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER/locations/REGION/reasoningEngines/ENGINE_ID。如果您想向项目或整个组织中的所有代理授予出站访问权限,而不是绑定单个实例,则可以将 IAM 政策绑定到主账号集:
- 如需向项目中的所有代理授予访问权限,请执行以下操作:
principalSet://TRUST_DOMAIN/attribute.platformContainer/aiplatform/projects/AGENT_RUNTIME_PROJECT_NUMBER - 如需向组织中的所有代理授予访问权限,请执行以下操作:
principalSet://TRUST_DOMAIN/*
在这些主账号字符串中,
TRUST_DOMAIN通常为agents.global.org-ORGANIZATION_ID.system.id.goog。- 如需向项目中的所有代理授予访问权限,请执行以下操作:
-
此时,您的代理流量将通过 Agent Gateway 路由。不过,Agent Gateway 采用的是默认拒绝政策。如需启用某些 Agent Platform 功能,您必须确保代理可以与以下端点通信:
Agent Gateway 中的主机名匹配是精确匹配。不支持通配符(例如
*.googleapis.com)或前缀形式。您必须注册代理 SDK 或客户端应用解析到的每个标准、区域和安全 (mTLS) 主机名变体。如需启用某些 Agent Platform 功能并确保成功进行初始化和遥测,您必须允许流量流向 Agent Registry 中的以下端点:
基本平台端点
下表列出了代理在执行标准操作、跟踪、日志记录和元数据解析时所需的基本平台端点:
服务名称 标准主机名 mTLS 主机名 区域变体和其他变体 Agent Registry agentregistry.googleapis.com— — Cloud Logging logging.googleapis.comlogging.mtls.googleapis.com— Cloud Trace / 遥测 telemetry.googleapis.comtelemetry.mtls.googleapis.com— Trace API cloudtrace.googleapis.comcloudtrace.mtls.googleapis.com— Cloud Monitoring monitoring.googleapis.commonitoring.mtls.googleapis.com— Secret Manager secretmanager.googleapis.comsecretmanager.mtls.googleapis.com— Resource Manager cloudresourcemanager.googleapis.comcloudresourcemanager.mtls.googleapis.com— IAM 凭据 iamcredentials.googleapis.comiamcredentials.mtls.googleapis.com— Agent Platform (aiplatform) aiplatform.googleapis.comaiplatform.mtls.googleapis.comREGION-aiplatform.googleapis.com
REGION-aiplatform.mtls.googleapis.com
aiplatform.REGION.rep.googleapis.com特定于功能的端点
此外,如果您的智能体使用会话或记忆库等功能,您必须确保智能体可以与这些服务使用的特定端点通信:
- 对于会话:
https://REGION-aiplatform.googleapis.com/API_VERSION/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID/sessions - 对于记忆库:
https://REGION-aiplatform.googleapis.com/API_VERSION/projects/PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID/memories
出于安全考虑,我们建议您仅注册代理访问的特定 URI 并将其列入许可名单。由于网关会直接匹配主机名,因此您必须确保注册代理 SDK 使用的所有变体。例如,根据 SDK 版本、区域客户端配置或 mTLS 使用情况,Google API 可以通过以下端点主机名进行解析:
https://REGION-aiplatform.googleapis.comhttps://REGION-aiplatform.mtls.googleapis.comhttps://aiplatform.REGION.rep.googleapis.com
如需了解如何注册端点,请参阅注册端点。如果您采用多项目设置,则可以在单个 Agent Registry 服务中注册多个核心 Google API 端点。如需了解详情,请参阅注册复合 Google API 端点。您还必须确保代理对这些端点具有
iap.resources.egressViaIAP权限。如需了解相关说明,请参阅创建从代理到端点的出站流量政策。 - 对于会话:
验证代理配置
控制台
- 在 Google Cloud 控制台中,前往 Agent Platform 部署页面。
点击您部署的代理的名称。
点击服务配置。系统会打开智能体的可观测性窗格。
点击部署详情。Agent Gateway 的入站和出站配置位于 Deployment spec 字段下。
gcloud
使用以下 REST API 请求验证代理现在是否已与网关关联。如果返回的输出为
null,则表示运行时未能绑定到网关。curl -s -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://REGION-aiplatform.googleapis.com/v1/projects/AGENT_RUNTIME_PROJECT_ID/locations/REGION/reasoningEngines/RESOURCE_ID" \ | jq '.spec.deploymentSpec.agentGatewayConfig'
替换以下内容:
AGENT_RUNTIME_PROJECT_ID:项目 IDREGION:智能体的部署区域RESOURCE_ID:代理的资源 ID
- 在 Google Cloud 控制台中,前往 Agent Platform 部署页面。
为 Agent Gateway 配置自定义容器 (BYOC) 代理
如果您想通过“代理到任意位置”(出口)代理网关路由出站流量,但代理是使用自定义容器映像(自带容器 / BYOC)部署的,则必须将网关的根证书授权机构 (CA) 证书烘焙到自定义容器映像的信任库中。
由于 Agent Gateway 会对出站智能体通信执行 TLS 解密和检查,因此非 BYOC(基于源代码)智能体部署会在映像创建期间自动注入 CA 证书。对于自定义容器映像,您必须明确检索网关的 CA 证书,将其安装到 Dockerfile 内的系统 CA 受信任证书存储区中,并设置 Python SDK、HTTP 客户端库和 gRPC 所需的证书捆绑包环境变量。
如需为 Agent Gateway 出站流量配置 BYOC 容器映像,请执行以下步骤:
从 Agent Gateway 资源中检索根证书。
直接从 Agent Gateway 资源的
agentGatewayCard.rootCertificates字段导出 CA 根证书 PEM 字符串:export AGW_CERT=$(gcloud network-services agent-gateways describe AGENT_GATEWAY_NAME \ --location=REGION \ --project=PROJECT_ID \ --format="value[delimiter=\\n](agentGatewayCard.rootCertificates)")
或者,您也可以使用 REST API 检索网关资源:
curl -s -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://networkservices.googleapis.com/v1/projects/AGENT_GATEWAY_PROJECT_ID/locations/REGION/agentGateways/AGENT_GATEWAY_NAME" \ | jq -r '.agentGatewayCard.rootCertificates[]'
替换以下内容:
AGENT_GATEWAY_NAME:您的出口代理网关的名称REGION:网关部署到的区域AGENT_GATEWAY_PROJECT_ID:网关部署到的项目 ID
更新
Dockerfile以信任 CA 证书。将
AGENT_GATEWAY_ROOT_CERTIFICATESbuild 实参添加到Dockerfile。构建命令将证书拆分为单独的文件,使用update-ca-certificates安装这些文件,并设置环境变量,以便 OpenSSL、Python HTTP 客户端库(requests、httpx)和 gRPC 识别自定义 CA:# Install root certificates under root user USER root ARG AGENT_GATEWAY_ROOT_CERTIFICATES RUN if [ -n "$AGENT_GATEWAY_ROOT_CERTIFICATES" ]; then \ echo "Installing Agent Gateway root certificates..."; \ printf "%b" "$AGENT_GATEWAY_ROOT_CERTIFICATES" | awk 'BEGIN {c=0} /BEGIN CERTIFICATE/ {c++} c > 0 { print > "/usr/local/share/ca-certificates/agw-" c ".crt" }'; \ update-ca-certificates; \ fi # Configure SSL/TLS trust paths for Python HTTP libraries, OpenSSL, and gRPC ENV GRPC_DEFAULT_SSL_ROOTS_FILE_PATH=${AGENT_GATEWAY_ROOT_CERTIFICATES:+/etc/ssl/certs/ca-certificates.crt} ENV REQUESTS_CA_BUNDLE=${AGENT_GATEWAY_ROOT_CERTIFICATES:+/etc/ssl/certs/ca-certificates.crt} ENV SSL_CERT_FILE=${AGENT_GATEWAY_ROOT_CERTIFICATES:+/etc/ssl/certs/ca-certificates.crt} ENV AGENT_GATEWAY_ROOT_CERT_302034098528=${AGENT_GATEWAY_ROOT_CERTIFICATES:+/etc/ssl/certs/ca-certificates.crt} # Switch back to application execution user USER 1000
使用 Cloud Build 构建容器映像。
创建一个
cloudbuild.yaml文件,以便使用替代变量将根证书字符串传递给 Cloud Build:steps: - name: 'gcr.io/cloud-builders/docker' args: - 'build' - '--build-arg' - 'AGENT_GATEWAY_ROOT_CERTIFICATES=${_AGW_CERT}' - '-t' - '$_IMAGE_URI' - '.' images: - '$_IMAGE_URI'将容器映像构建提交到 Cloud Build:
export IMAGE_URI="REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest" gcloud builds submit \ --project=PROJECT_ID \ --region=REGION \ --config=cloudbuild.yaml \ --substitutions=_IMAGE_URI="$IMAGE_URI",_AGW_CERT="$AGW_CERT" \ .
将
REPOSITORY_NAME和IMAGE_NAME替换为您的 Artifact Registry 代码库和映像名称。部署容器化智能体。
在部署请求中指定已构建的容器映像 URI 以及 Agent Gateway 配置(使用
spec.deploymentSpec下的agent_gateway_config或使用 SDK 部署调用)。
将 Agent Runtime 限制为仅使用已获批准的 Agent Gateway
您可以创建自定义组织政策限制条件,以定义可在部署智能体时使用的符合条件的 Agent Gateway 资源集。
创建自定义组织政策限制条件
此示例会创建自定义限制条件,仅允许进出预先批准的网关列表的流量。
代理到任意目的地
如需为“代理到任何位置”模式(出站流量)定义自定义限制条件,请创建一个名为
constraint-agent-gateway-egress.yaml的文件。在以下示例中,
condition字段指定仅当指定了 Agent Gateway 资源(字段存在且不为空)且指定的网关位于预批准列表中时,才允许执行相应操作。name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedEgressAgentGatewaysForAgentEngine resource_types: - aiplatform.googleapis.com/ReasoningEngine condition: >- has(resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway) && resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway != '' && (resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway in [ 'projects/AGENT_PROJECT_ID_1/locations/REGION_1/agentGateways/AGENT_GATEWAY_ID_1', 'projects/AGENT_PROJECT_ID_2/locations/REGION_2/agentGateways/AGENT_GATEWAY_ID_2', ]) method_types: - CREATE - UPDATE action_type: ALLOW display_name: Restrict Reasoning Engine Egress to Approved Agent Gateways description: Reasoning Engines can only be bound to a pre-approved list of Agent Gateway instances. Binding to any other gateway is denied.替换以下内容:
- ORGANIZATION_ID:您的组织 ID。
- AGENT_PROJECT_ID:您的项目 ID。
- REGION:创建网关的区域。
- AGENT_GATEWAY_ID:您的网关 ID。
应用自定义限制条件。
gcloud org-policies set-custom-constraint EGRESS_CONSTRAINT_PATH
将 EGRESS_CONSTRAINT_PATH 替换为上一步中创建的自定义限制条件文件的完整路径。
创建组织政策以强制执行限制条件。如需定义组织政策,请创建一个名为
policy-agent-gateway-egress.yaml的 YAML 政策文件。在此示例中,我们在项目级层强制执行此限制条件,但您也可以在组织或文件夹级层设置此限制条件。name: projects/AGENT_PROJECT_ID/policies/custom.allowlistedEgressAgentGatewaysForAgentEngine spec: rules: - enforce: true将
AGENT_PROJECT_ID替换为您的项目 ID。强制执行组织政策。
gcloud org-policies set-policy EGRESS_POLICY_PATH
将 EGRESS_POLICY_PATH 替换为上一步中创建的组织政策 YAML 文件的完整路径。该政策最长需要 15 分钟才能生效。
客户端到代理
如需为客户端到代理模式(入站流量)定义自定义限制条件,请创建一个名为
constraint-agent-gateway-ingress.yaml的文件。在以下示例中,
condition字段指定仅当指定了 Agent Gateway 资源(字段存在且不为空)且指定的网关位于预批准列表中时,才允许执行相应操作。name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedIngressAgentGatewaysForAgentEngine resource_types: - aiplatform.googleapis.com/ReasoningEngine condition: >- has(resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway) && resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway != '' && (resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway in [ 'projects/AGENT_PROJECT_ID_1/locations/REGION_1/agentGateways/AGENT_GATEWAY_ID_1', 'projects/AGENT_PROJECT_ID_2/locations/REGION_2/agentGateways/AGENT_GATEWAY_ID_2', ]) method_types: - CREATE - UPDATE action_type: ALLOW display_name: Restrict Reasoning Engine Ingress to Approved Agent Gateways description: Reasoning Engines can only be bound to a pre-approved list of Agent Gateway instances. Binding to any other gateway is denied.替换以下内容:
- ORGANIZATION_ID:您的组织 ID。
- AGENT_PROJECT_ID:您的项目 ID。
- REGION:创建网关的区域。
- AGENT_GATEWAY_ID:您的网关 ID。
应用自定义限制条件。
gcloud org-policies set-custom-constraint INGRESS_CONSTRAINT_PATH
将 INGRESS_CONSTRAINT_PATH 替换为上一步中创建的自定义限制条件文件的完整路径。
创建组织政策以强制执行限制条件。如需定义组织政策,请创建一个名为
policy-agent-gateway-ingress.yaml的 YAML 政策文件。在此示例中,我们在项目级层强制执行此限制条件,但您也可以在组织或文件夹级层设置此限制条件。name: projects/AGENT_PROJECT_ID/policies/custom.allowlistedIngressAgentGatewaysForAgentEngine spec: rules: - enforce: true将
AGENT_PROJECT_ID替换为您的项目 ID。强制执行组织政策。
gcloud org-policies set-policy INGRESS_POLICY_PATH
将 INGRESS_POLICY_PATH 替换为上一步中创建的组织政策 YAML 文件的完整路径。该政策最长需要 15 分钟才能生效。
如需详细了解如何使用自定义组织政策限制条件,请参阅创建自定义限制条件。
限制
跨项目治理具有以下限制:
- 仅在“代理到任意位置”(出站流量)模式下支持代理和网关之间的跨项目绑定。在“客户端到代理”(入站流量)模式下,代理和 Agent Gateway 必须位于同一项目中。
- 您必须使用 REST API 或 gcloud 来配置端到端跨项目治理。 Google Cloud Google Cloud 控制台不支持创建跨项目 IAM 政策绑定或 Agent Registry 条目。
Agent Gateway 无法绑定到 2026 年 4 月 29 日之前创建的运行时推理引擎。
虽然单个项目和区域可以托管多个 Agent-to-Anywhere(出站)和 Client-to-Agent(入站)Agent Gateway 实例,但部署在同一项目和区域中的所有 Agent Runtime 代理都必须绑定到同一特定的出站和入站 Agent Gateway 实例。
例如,如果某个项目和区域包含
egress-gateway-X和egress-gateway-Y,则该项目和区域中的所有代理都必须配置为使用同一网关进行出站。也就是说,所有代理要么使用egress-gateway-X,要么使用egress-gateway-Y。您无法将agent-A配置为使用egress-gateway-X,也无法将agent-B配置为使用egress-gateway-Y。此相同的绑定规则也适用于项目和区域内的入站网关。
为代理启用 Agent Gateway 时,Security Command Center Agent Engine 威胁检测服务不可用。
在客户端到代理(入站)模式下,代理网关只能管理代理运行时的
query和streamQuery方法。如需保护其他不受支持的方法(例如asyncQuery),您可以直接从应用或代理应用 Model Armor 模板。请参阅清理提示和回答或有关使用 Model Armor 构建安全的智能体系统的 Codelab。更改运行时代理的 Agent Gateway 绑定会归档代理的所有预先存在的修订版本。归档操作无法撤消。请参阅Agent Gateway 和修订版本。
如需在不更改代理的推理引擎 ID 或不破坏政策绑定的情况下更新代理,请按照更新 Agent Runtime 实例中的说明就地更新代理实例。
后续步骤
Codelab:使用 Agent Platform 治理智能体工作负载
了解如何使用 Gemini Enterprise Agent Platform 上的 Agent Gateway 治理智能体工作负载。