本页介绍了安全 Web 代理政策的来源属性和目标属性。此外,本页面还介绍了基于规则的传输控制协议 (TCP) 代理以及如何为应用配置 TCP 代理规则。
安全 Web 代理政策基于以下两个参数:
- 流量来源:为了识别流量来源,安全 Web 代理使用服务账号、安全代码和IP 地址等属性。
- 允许的目标位置:为了确定允许的目标位置,安全 Web 代理会使用目标网域、完整网址路径(如果启用了 TLS 检查)、网址列表或目标端口。
默认情况下,安全 Web 代理的设置会拒绝通过代理发送任何出站 Web 流量(HTTP 或 HTTPS),除非您在安全 Web 代理实例的政策中添加了特定规则。
政策的来源属性
使用以下属性可让安全 Web 代理实例识别流量来源:
- 服务账号:使用服务账号来识别流量来源并配置安全 Web 代理政策。
- 安全标记:使用 Resource Manager 标记来控制对 Google Cloud 资源的访问。
- IP 地址:分配安全 Web 代理用于出站流量的企业 IP 地址(或静态 IP 地址)。 Google Cloud
支持的身份
您可以使用基于来源身份的安全政策(服务账号和安全代码)来保护多项 Google Cloud 服务的网络流量。下表显示了使用基于来源身份的安全政策时是否支持各种 Google Cloud 服务。
Google Cloud 服务 | 服务账号支持 | 安全代码支持 |
---|---|---|
虚拟机 | ||
GKE 节点 | ||
GKE 容器 | 1 | 1 |
适用于 Cloud Run 的直接 VPC | 1 | |
无服务器 VPC 访问通道连接器 | 2 | 2 |
Cloud VPN | 1 | 1 |
本地 Cloud Interconnect | 1 | 1 |
应用负载平衡器 | ||
网络负载平衡器 |
2 来源 IP 地址是唯一的,可以用来充当替代方案。
下表显示了使用基于来源身份的安全政策时是否支持各种虚拟私有云 (VPC) 架构:
VPC | VPC 架构 | 支持 |
---|---|---|
在 VPC 内 | 跨项目(共享 VPC) | |
在 VPC 内 | 跨区域 | |
跨 VPC | 跨对等互连链接(对等 VPC) | |
跨 VPC | 跨 Private Service Connect | |
跨 VPC | 跨 Network Connectivity Center spoke |
政策的目标平台属性
借助安全 Web 代理,您可以根据目标网域和完整网址路径(如果启用了 TLS 检查)为应用配置政策。
使用以下属性可让安全 Web 代理实例确定允许的流量目的地:
- 目的端口:安全 Web 代理实例发送流量的上游端口。
如需了解详情,请参阅可用于
SessionMatcher
和ApplicationMatcher
的属性。 - 网址列表:使用网址列表定义用户可以访问的网址。如需了解详情,请参阅网址列表。
对于基于 HTTP 的目标流量,您可以为应用使用 host()
目标属性。
对于基于 HTTPS 的目标流量,您可以为应用使用各种 request.*
与目标相关的属性(例如 request.method
)。
如需详细了解可用于 HTTP 和 HTTPS 流量的目标属性,请参阅属性。
TCP 代理规则
借助安全 Web 代理实例,您可以为传输控制协议 (TCP) 流量配置代理规则,包括与 Web 协议无关的流量。例如,您可以选择允许或屏蔽通过 80
(HTTP) 或 443
(HTTPS) 以外的任何端口发送流量的网站或应用的流量。
如果您的工作负载(例如应用和服务)使用安全 Web 代理作为下一个跃点,则应用 TCP 代理规则会很有帮助。这是因为,使用基于路线的重定向流程会将非 HTTP(S) 流量和非 Web 流量指向您的安全 Web 代理实例。这样,您就可以阻止恶意流量到达您的应用,并控制哪些应用或网站可以访问您的网络。
为应用配置 TCP 代理规则
如需实现 TCP 代理规则并为应用创建允许或屏蔽流量规则,您必须指定目的地端口。您可以选择添加以下任一 SessionMatcher
属性,以优化允许或屏蔽规则的条件。
属性 | 属性类型 | 说明 |
---|---|---|
source.ip |
字符串 | 发送请求的客户端的 IP 地址。 |
source.port |
字符串 | 发送请求的客户端端口。 |
destination.port |
字符串 | 安全 Web 代理实例将流量发送到的上游端口。 |
source.matchTag(SECURE_TAG) |
布尔值 |
该参数是安全标记的永久 ID,例如 |
source.matchServiceAccount(SERVICE_ACCOUNT) |
布尔值 | True ,如果来源与 SERVICE_ACCOUNT 相关联,例如 source.matchServiceAccount('x@my-project.iam.gserviceaccount.com') 。
|
inIpRange(IP_ADDRESS, |
布尔值 | True ,如果 IP_ADDRESS 包含在 IP_RANGE 中,例如 inIpRange(source.ip, '1.2.3.0/24') 。IPv6 地址的子网掩码不能大于 /64 。
|
限制
安全 Web 代理不支持为用户数据报协议 (UDP) 应用配置 TCP 代理规则。因此,安全 Web 代理会屏蔽基于 UDP 的应用的流量。
主机匹配规则
为安全 Web 代理实例配置出站规则时,请务必根据出站请求的目标主机定义规则。您还应根据安全 Web 代理实例的部署模式考虑主机匹配的工作原理。
显式代理模式
对于未加密的 HTTP 请求,您可以在
SessionMatcher
中使用host() == "myownpersonaldomain.com"
规则。安全 Web 代理会根据 HTTP 请求的CONNECT
标头中的host
字段验证此规则。如果您想启用 TLS 检查并根据
Application Matcher
设置规则,则必须设置一个评估为TRUE
的SessionMatcher
规则。例如,您可以在SessionMatcher
中使用host() == "myownpersonaldomain.com"
规则,然后在ApplicationMatcher
中添加request.host() == "myownpersonaldomain.com"
规则。安全 Web 代理会先根据 HTTP 请求的
CONNECT
标头中的host
字段验证SessionMatcher
。只有在SessionMatcher
规则有效的情况下,安全 Web 代理才会检查ApplicationMatcher
规则。
下一个跃点模式
对于未加密的 HTTP 请求,您可以在
SessionMatcher
中使用host() == "myownpersonaldomain.com"
规则。安全 Web 代理会根据标准 HTTP 请求标头中的host
字段验证此规则。不过,如果请求经过 TLS 加密,安全 Web 代理会根据出站请求中的服务器名称指示 (SNI) 标头对同一规则进行验证。
如果您想启用 TLS 检查并根据
ApplicationMatcher
设置规则,则必须设置一个评估为TRUE
的SessionMatcher
规则。例如,您可以在SessionMatcher
中使用host() == "myownpersonaldomain.com"
规则,然后在ApplicationMatcher
中添加request.host() == "myownpersonaldomain.com"
规则。安全 Web 代理会先根据出站请求中的 SNI 标头验证
SessionMatcher
。只有在SessionMatcher
规则有效的情况下,安全 Web 代理才会检查ApplicationMatcher
规则。