您可以创建 IAM 允许政策和拒绝政策,Agent Gateway 会使用这些政策来安全地管控智能体与其他服务(包括其他智能体、MCP 服务器和端点)之间的智能体通信。Agent Gateway 使用 Identity-Aware Proxy (IAP) 强制执行政策。IAP 还会强制执行端到端代理身份验证和授权安全。
如需为 Agent Gateway 创建 IAM 政策,请参阅创建 IAM 政策。
您还可以针对代理身份创建 Principal Access Boundary (PAB)。Agent Gateway 可以使用 IAP 强制执行 Principal Access Boundary Policy。
启用 Agent Gateway
如需使用智能体通信政策,您必须设置 Agent Gateway。
我们建议您在预演环境中以试运行模式 (DRY_RUN) 配置 Agent Gateway,以验证您的政策是否按预期运行。在试运行模式下,IAP 会将不允许的智能体通信记录到 Cloud Audit Logs,但不会阻止这些通信。
当您确信政策正常运行后,可以更新 Agent Gateway 配置,将实施模式设置为 ENFORCE。在此模式下,系统会禁止违反政策的智能体通信,并阻止与资源的通信。
政策组件
政策包含以下组成部分:
代理:在 IAM 允许政策中,来源代理通过其代理身份(发起与服务通信的代理的身份)进行定义。如需了解不同类型的代理如何接收身份,请参阅代理身份。代理身份由主账号标识符表示,其中包含代理的 SPIFFE 格式身份,例如
principal://agents.global.org-...。请注意,URN 格式的代理标识符(例如urn:agent:...)仅用于资产清单和目录查找,不用于 IAM 政策绑定。使用 gcloud CLI 配置 IAM 政策时,智能体主体是您向其授予访问权限的成员。Gemini Enterprise 智能体和 Agent Runtime 实例会自动分配 Agent Identity,并在 Agent Registry 中注册。
Agent Registry 资源:您要授予允许或拒绝访问权限的 Agent Registry 服务。在 IAM 允许和拒绝政策中,Agent Registry 服务称为资源。资源可以是项目中的整个注册表,也可以是单个服务(可以是 MCP 服务器、代理或端点)。
必须先在代理注册表中注册各个服务,然后才能在 IAM 政策中引用这些服务。此注册会在绑定时(创建或更新政策绑定时)进行验证。如果您引用的服务未注册,则政策创建会立即失败,并显示请求的实体未找到 (
NOT_FOUND) 错误。使用 gcloud CLI 或 Terraform 配置政策时,目标资源由其注册表生成的路径或 ID(使用
--agent、--endpoint或--mcp-server等标志)指定,而不是由其逻辑 URN 标识符指定。在运行时,安全网关会根据确切的主机名(而不是使用 URN)匹配流量目标。如果您对代理注册表进行区域化,则 IAM 允许政策仅适用于注册表所在区域中的资源。
角色:代理通信政策始终会授予服务资源上的 IAP-secured Egressor (
roles/iap.egressor) 角色。条件:您可以选择在 IAM 允许政策中配置条件,以进一步限制代理可以访问的内容。在Google Cloud 控制台中,您可以使用条件构建器通过选择界面元素来创建条件。或者,您可以使用条件编辑器以通用表达式语言 (CEL) 表达式的形式输入更复杂的条件。
下表列出了可用于构建 CEL 表达式的属性名称。由于不支持直接字段访问样式(例如
request.mcp.toolName),因此您必须使用api.getAttribute()函数来检索每个属性的值。如需详细了解如何配置具有条件的允许政策,请参阅配置 IAM 代理政策。
属性名称 说明和 CEL 示例 mcp.toolName所调用的特定工具的名称。
例如:request.mcp.toolName == 'GetCalendarEvents'iap.googleapis.com/mcp.resourceName所访问资源的名称。
例如:api.getAttribute('iap.googleapis.com/mcp.resourceName', '') == 'my-resource'iap.googleapis.com/mcp.promptName正在使用的提示名称。
例如:api.getAttribute('iap.googleapis.com/mcp.promptName', '') == 'my-prompt'mcp.method具体的 MCP 操作(例如 tools/call、resources/read)。 iap.googleapis.com/mcp.tool.isReadOnly
iap.googleapis.com/mcp.tool.isDestructive
iap.googleapis.com/mcp.tool.isIdempotent
iap.googleapis.com/mcp.tool.isOpenWorld指示操作类型的布尔标志。
例如:api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == truerequest.auth.type表示协议的枚举(例如“MCP”)。
创建政策
在 Google Cloud 控制台的政策页面中,您可以创建 IAM 允许政策和拒绝政策,Agent Gateway 会使用这些政策来管理智能体通信。
在 gcloud CLI 中,您可以配置 Agent Gateway 用于管理智能体通信的 IAM 允许政策和 IAM 拒绝政策。
Google Cloud 控制台中的政策
如需使用 Google Cloud 控制台创建 IAM 政策,请参阅配置 IAM 政策。
gcloud CLI 中的政策
如需使用 gcloud CLI 创建 IAM 政策,请参阅配置 IAM 政策。
端到端身份验证和授权
IAP 和情境感知访问权限使用以下协议提供默认的端到端代理身份验证和授权:
- 双向 TLS (mTLS)
- 持有证明 (DPoP)
代理身份会预配 X.509 证书和证书绑定令牌。IAP 会强制要求代理身份使用双向 TLS (mTLS) 向 Agent Gateway 进行身份验证。当网关允许智能体出站并访问 Google Cloud API、MCP 服务器、其他智能体和端点时,智能体会尝试在 mTLS 边界之外进行访问。为了帮助保护通信,情境感知访问权限会强制执行由 Google 管理的情境感知访问权限政策。该政策要求 DPoP 验证绑定到代理身份的证书绑定令牌。如需详细了解情境感知访问权限如何提供端到端 mTLS 和 DPoP 安全性,请参阅情境感知访问权限代理安全性。