本页面介绍了如何为 Secure Web Proxy 配置授权政策。
准备工作
-
- Network Security API
- Network Services API
- Certificate Manager API
确保您拥有适当的角色和权限。
您必须部署一个有效的 Secure Web Proxy 实例,并将其与
GatewaySecurityPolicy相关联。如需了解详情,请参阅部署 Secure Web Proxy 实例。如需配置 Secure Web Proxy 授权政策,您必须启用 TLS 检查政策。
创建授权政策
您可以针对两种不同的应用场景配置授权政策:
管控智能体流量:如需保护从 AI 智能体到 Model Context Protocol (MCP) 服务器、工具和模型的出站流量,请参阅为智能体目标配置授权政策。您可以在
agentGateway资源上配置政策和扩展程序绑定,以强制执行 MCP 工具限制、mTLS 代理身份和载荷清理。保护非智能体 Web 流量:如需保护来自非智能体企业工作负载的出站 Web 流量,请参阅后续部分中的示例。您可以直接在 Secure Web Proxy
Gateway资源上配置政策,以强制执行 mTLS 客户端证书身份、服务账号、安全标记或自定义授权扩展。
如需为 Secure Web Proxy 创建授权政策,请执行以下操作:
- 配置一个用于定义目标和规则的 YAML 文件。
- 如需导入 YAML 文件,请运行
gcloud network-security authz-policies import命令。
为智能体目标配置授权政策
将 Secure Web Proxy 部署为 Agent Gateway后,您可以定义授权政策,以检查和限制流向 MCP 工具服务器和 AI 智能体目的地的流量。
您可以配置在以下请求层强制执行访问权限控制的规则:
网络规则:针对特定受信任的外部模型或 Agent Endpoint,跳过 TLS 检查或深度载荷分析。
扩展程序绑定:使用 Service Extensions 中的
ExtensionBinding资源来附加外部治理和安全处理器,例如用于代理身份验证的 Identity-Aware Proxy (IAP) 以及用于提示和回答清理的 Model Armor。HTTP MCP 方法和工具过滤:对特定 MCP 操作(例如
tools/list或tools/call)实施精细控制,并验证参数以限制代理可以调用的工具。
授权规则的评估顺序
通过 Agent Gateway 处理出站 AI 智能体流量时,系统会按以下顺序评估规则:
网络 (L4) 授权规则:首先评估。如果 SNI 匹配规则适用(例如允许与外部模型端点直接通信),流量会绕过 TLS 拦截。
TLS 拦截:未绕过的流量随后会被拦截,并使用网关的 TLS 检查政策进行解密。
扩展程序绑定规则:请求由配置的扩展程序服务(例如 IAP)进行评估,以验证请求标头上的调用方身份,并使用 Model Armor 检查解密的载荷,以确保提示安全并防止回答中发生敏感数据泄露。
HTTP (L7) 授权规则:评估 HTTP 级授权政策,例如 MCP 工具限制和方法过滤。
示例 1:限制 MCP 工具执行
以下示例展示了附加到 agentGateway 资源的授权政策,该政策允许智能体发现工具 (tools/list),并仅运行已获批准的工具(get_weather 和 get_location 的 tools/call):
创建一个名为
authz-policy-mcp.yaml的文件。name: authz-policy-restrict-tools target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - mcp: baseProtocolMethodsOption: MATCH_BASE_PROTOCOL_METHODS methods: - name: "tools/list" - name: "tools/call" params: - exact: "get_weather" - exact: "get_location" action: ALLOW替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Agent Gateway 和 Secure Web Proxy 实例部署到的区域AGENT_GATEWAY_NAME:与 Secure Web Proxy 网关关联的agentGateway资源的名称
如需导入授权政策,请运行
gcloud network-security authz-policies import命令。gcloud network-security authz-policies import authz-policy-restrict-tools \ --source=authz-policy-mcp.yaml \ --location=LOCATION
示例 2:使用 SNI 匹配绕过 TLS 拦截
如果某些外部模型提供商或代理 API 使用证书固定或不需要载荷检查,则您可以使用网络规则来匹配服务器名称指示 (SNI),并允许连接,而无需解密会话。
创建一个名为
authz-policy-sni.yaml的文件。name: authz-policy-skip-interception target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ networkRules: - to: operations: - snis: - exact: "api.example-model-provider.com" action: ALLOW替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Agent Gateway 和 Secure Web Proxy 实例部署到的区域AGENT_GATEWAY_NAME:与 Secure Web Proxy 网关关联的agentGateway资源的名称
如需导入授权政策,请运行
gcloud network-security authz-policies import命令。gcloud network-security authz-policies import authz-policy-skip-interception \ --source=authz-policy-sni.yaml \ --location=LOCATION
示例 3:使用扩展程序绑定通过 Model Armor 启用深度载荷检查
为防范提示词注入、有害输出或敏感数据泄露,您可以使用 Service Extensions 中的扩展程序绑定,将流量处理工作分流到 Model Armor 或自定义 ext_proc 处理器。
此模型通过以下方式将扩展程序提供方与使用方分开:
- Google 服务 (1P):对于 Model Armor 和 IAP 等内置 Google 服务,Google 会管理底层基础设施。您可以使用预定义的端点 URI(
modelarmor.googleapis.com或iap.googleapis.com)直接绑定服务。 - 自定义和合作伙伴扩展程序(2P/3P):对于自定义内部处理器或第三方安全供应商,提供方会发布一个指向其 Private Service Connect 服务连接的
ProducerExtension资源,而使用方会绑定该资源 URI。
如需详细了解如何在 agentGateway 资源上评估授权政策和扩展程序,请参阅使用 Service Extensions 委托授权和 Agent Gateway 上的可扩展政策。
如需为 Model Armor 配置扩展程序绑定,请执行以下操作:
启用 Service Extensions API。
gcloud services enable serviceextensions.googleapis.com
创建一个名为
extension-binding-model-armor.yaml的配置文件,该文件以agentGateway资源为目标,设置检查模板,并拦截发往 MCP 服务器的流量。name: ext-binding-model-armor target: resources: - "//networkservices.googleapis.com/projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" failOpen: false producerExtension: modelarmor.googleapis.com producerMetadata: model_armor_settings: '[ { "request_template_id": "projects/TEMPLATE_PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID", "response_template_id": "projects/TEMPLATE_PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID" } ]' matchConditions: - to: destination: resources: - prefix: "urn:mcp"替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Agent Gateway 和 Secure Web Proxy 实例部署到的区域AGENT_GATEWAY_NAME:agentGateway资源的名称TEMPLATE_PROJECT_ID:创建 Model Armor 模板的项目 IDREQUEST_TEMPLATE_ID:用于检查传入请求的模板的 IDRESPONSE_TEMPLATE_ID:用于检查传出响应的模板的 ID
注意:
- 如果扩展程序服务无法访问,
failOpen: false会阻止流量。 如需允许流量在服务中断期间未经检查即通过,请设置failOpen: true。 - 如需绑定自定义内部或第三方扩展程序(而非 Model Armor),请将
producerExtension设置为提供方的资源路径,格式如下:projects/PRODUCER_PROJECT_ID/locations/LOCATION/producerExtensions/PRODUCER_EXTENSION_NAME。
如需导入扩展程序绑定,请运行
gcloud beta service-extensions extension-bindings import命令。gcloud beta service-extensions extension-bindings import ext-binding-model-armor \ --source=extension-binding-model-armor.yaml \ --location=LOCATION
如需详细了解如何绑定 IAP 以进行身份验证,请参阅将扩展程序绑定附加到 Agent Gateway。
基于 mTLS 身份的授权政策
Secure Web Proxy 支持根据从双向 TLS (mTLS) 证书派生的身份强制执行安全规则。在零信任环境中,基于这些身份强制执行规则特别有用,因为客户端和代理之间的流量由 mTLS 保护。如需了解详情,请参阅基于主体的授权政策。
以下示例展示了名为 swp1 的 Secure Web Proxy 实例的授权政策。此示例假定流向代理的流量使用 HTTPS 协议。
具有 REQUEST_AUTHZ 配置文件的政策会强制要求,所有流向 example.com/mcp 的流量都必须经过特定主体的 mTLS 身份验证,然后才能通过。该政策还会拒绝所有不以 example.com/mcp 为目的地的出站流量。
创建授权政策 YAML 文件。
以下示例会创建一个
authz-policy.yaml文件。仅当客户端提供的证书与定义的SPIFFE ID主体匹配时,该政策才允许流量流向指定的主机和路径。$ cat >authz-policy.yaml <<EOF name: test-authz-policy-mtls target: resources: - "projects/ PROJECT_ID /locations/ LOCATION /gateways/swp1" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" paths: - exact: "/mcp" from: sources: - principals: - principalSelector: CLIENT_CERT_URI_SAN principal: exact: "spiffe:// PROJECT_ID .global.123.workload.id.goog/ns/ns1/sa/hellomcp" action: ALLOW EOF替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Secure Web Proxy 实例的区域
使用
gcloud network-security authz-policies import命令创建授权政策并导入 YAML 文件。gcloud beta network-security authz-policies import my-authz-policy-allow --source=authz-policy.yaml --location= LOCATION将
LOCATION替换为 Secure Web Proxy 实例的区域。
基于服务账号或标记的授权政策
您可以根据附加到各种 Google Cloud 资源的服务账号或标记来应用授权政策。
此示例假定您已完成以下操作:
创建了标记,并将其作为键值对附加到 Google Cloud 资源。创建代码时,请将其
--purpose标志设置为GCE_FIREWALL。授权政策需要使用GCE_FIREWALL用途来应用标记。
服务账号
创建一个授权政策 YAML 文件以允许某些请求。
以下示例为名为
swp1的 Secure Web Proxy 实例创建authz-policy.yaml文件。该政策已配置为允许来自包含服务账号my-sa-123@56788.的 Compute Engine 虚拟机 (VM) 实例的请求到达 example1.com/url1 路径。$ cat >authz-policy.yaml <<EOF name: my-authz-policy-allow target: resources: - "projects/PROJECT_ID/locations/ LOCATION /gateways/swp1" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@56788." to: operations: - hosts: - exact: "example1.com" paths: - prefix: "/url1" action: ALLOW EOF替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Secure Web Proxy 实例所在的区域
使用
gcloud network-security authz-policies import命令创建授权政策并导入 YAML 文件。以下示例命令展示了如何导入之前创建的政策文件并创建授权政策:
gcloud network-security authz-policies import my-authz-policy-allow --source=authz-policy.yaml --location= LOCATION将
LOCATION替换为 Secure Web Proxy 实例的区域。
标记
创建一个授权政策 YAML 文件以允许某些请求。
以下示例为名为
swp1的 Secure Web Proxy 实例创建authz-policy-tag.yaml文件。该政策仅允许来自标记值为TAG_VALUE_PERMANENT_ID的 Google Cloud资源的请求访问 example1.com/url1 网址路径。$ cat >authz-policy-tag.yaml <<EOF name: my-authz-policy-tag-allow target: resources: - "projects/PROJECT_ID/locations/ LOCATION /gateways/ GATEWAY_NAME " policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - tagValueIdSet: ids: ["TAG_VALUE_PERMANENT_ID"] to: operations: - hosts: - exact: "example1.com" paths: - exact: "/url1" action: ALLOW EOF替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDLOCATION:Secure Web Proxy 实例所在的区域GATEWAY_NAME:Secure Web Proxy 网关的名称TAG_VALUE_PERMANENT_ID:标记值的永久 ID,例如tagValues/123456789012
使用
gcloud network-security authz-policies import命令创建授权政策并导入 YAML 文件。以下示例命令会导入之前创建的政策文件,并在指定的 Google Cloud 区域中创建授权政策:
gcloud network-security authz-policies import my-authz-policy-tag-allow --source=authz-policy-tag.yaml --location= LOCATION将
LOCATION替换为 Secure Web Proxy 实例的区域。
用于委托授权决策的授权政策
对于无法使用标准 ALLOW 或 DENY 规则表达的复杂授权决策,您可以创建包含 CUSTOM 操作的授权政策。然后,您可以将授权决策委托给授权扩展(Service Extensions)。
当您配置具有 CUSTOM 操作的政策时,Secure Web Proxy 会将请求元数据或载荷分流到 Service Extensions。根据 Service Extensions 的响应,代理会允许或拒绝流量。
Secure Web Proxy 支持以下类型的委托:
将请求授权决策委托给 Service Extensions:您可以使用配置了
CUSTOM操作和REQUEST_AUTHZ配置文件的授权政策,根据请求元数据和标头委托决策。在此模式下,访问权限决策会委托给授权扩展。您可以使用此模式来验证身份和权限。将内容授权决策委托给 Service Extensions:您可以使用具有
CUSTOM操作和CONTENT_AUTHZ配置文件的授权政策,根据请求的实际数据载荷将决策委托给授权扩展程序。此模式可让您启用深度内容检查和安全强制执行,通过与 Model Armor 等服务集成,扫描敏感信息或恶意模式。
限制
为 Secure Web Proxy 实现授权政策时,存在以下限制:
目标和连接限制:Secure Web Proxy 的授权扩展不支持将 IAP 作为直接目标。
政策冲突和兼容性:如果您有包含现有安全规则的网关安全政策,则无需移除这些规则。当您将授权政策应用于实例时,Secure Web Proxy 会忽略这些规则。
协议和检查要求:如需配置 Secure Web Proxy 授权政策,您必须启用 TLS 检查。