应用于应用负载均衡器转发规则的授权政策 (AuthzPolicy
) 定义了规则以指定传入流量的来源和针对该来源允许或限制的操作。此外,授权政策还概述了规则适用的条件,并具体说明了允许、拒绝或进一步评估流量的操作。
利用授权政策,您可以针对应用负载均衡器的传入流量设立访问权限控制检查。通过这些检查的请求会被路由到后端服务。未通过这些检查的请求会被终止,并返回未经授权的响应。
您可以针对所有负载均衡方案为 EXTERNAL_MANAGED
或 INTERNAL_MANAGED
的应用负载均衡器的转发规则配置授权政策。以下应用负载均衡器支持授权政策:
- 全球外部应用负载均衡器
区域级外部应用负载均衡器
区域级内部应用负载均衡器
- 跨区域内部应用负载均衡器
在应用负载均衡器中,授权政策是在评估路由扩展程序、网络安全政策(由 Google Cloud Armor 评估)、跨域资源共享 (CORS) 政策和 Identity-Aware Proxy (IAP) 政策之后,但在执行流量管理操作之前调用的。
如需详细了解在请求处理路径中何时调用授权政策,请参阅负载均衡数据路径中的可扩展点。
如果您想对使用 Cloud Service Mesh 部署的服务使用授权政策,请参阅设置使用 Envoy 的服务安全。
授权政策规则
授权政策包含一系列用于匹配传入请求的 HTTP 规则。
对于包含 ALLOW
或 DENY
操作的授权政策,HTTP 规则 (AuthzRule
) 定义了用于确定是否允许流量通过负载均衡器的条件。至少需要一条 HTTP 规则。
对于包含 CUSTOM
操作的授权政策,HTTP 规则 (AuthzRule
) 定义了用于确定是否将流量委托给自定义提供程序以进行授权的条件。自定义提供程序是必需的,而 HTTP 规则是可选的。
当至少有一项 HTTP 规则与请求匹配,或者政策中未定义任何 HTTP 规则时,就会发生政策匹配。
授权政策 HTTP 规则包含以下字段:
from
:指定规则允许的客户端的身份。身份可以从双向 TLS 连接中的客户端证书派生而来,也可以是与客户端虚拟机 (VM) 实例关联的环境身份,例如来自服务账号或安全标记的身份。to
:指定规则允许的操作,例如可访问的网址或允许的 HTTP 方法。when
:指定必须满足的其他约束条件。您可以使用通用表达式语言 (CEL) 表达式来定义约束条件。
授权政策操作
在评估请求时,授权政策会指定要对请求执行的操作 (AuthzAction
)。授权政策需要至少包含一项操作,该操作可以是以下操作之一:
ALLOW
:如果请求与ALLOW
政策中指定的任意规则匹配,则该操作允许请求传递到后端。如果存在ALLOW
政策,但没有发生匹配,则拒绝该请求。换言之,如果包含ALLOW
操作的已配置授权政策均不与请求匹配,则拒绝该请求。在 Cloud Logging 中,此操作会记录为denied_as_no_allow_policies_matched_request
。要应用
ALLOW
操作,您至少需要一个 HTTP 规则。DENY
:如果请求与DENY
政策中指定的任何规则匹配,则该操作会拒绝该请求。如果存在DENY
政策,但没有发生匹配,则允许该请求。换言之,如果包含DENY
操作的已配置授权政策均不与请求匹配,则允许该请求。在 Cloud Logging 中,此操作会记录为allowed_as_no_deny_policies_matched_request
。要应用
DENY
操作,您至少需要一个 HTTP 规则。CUSTOM
:该操作将授权决策委托给自定义授权提供方,例如 IAP 或服务扩展程序。如需了解详情,请参阅使用授权政策来委托授权决策。如果存在为
CUSTOM
政策配置的 HTTP 规则,则请求需要与 HTTP 规则匹配才能调用自定义提供程序。不过,如果未定义任何 HTTP 规则,则授权政策始终会将授权决策委托给自定义授权提供方。如需了解详情,请参阅以下介绍未定义任何 HTTP 规则以及授权政策将授权决策委托给 IAP 的示例:
授权政策评估顺序
授权政策支持使用 CUSTOM
、DENY
和 ALLOW
政策进行访问权限控制。如果多个授权政策与单个资源相关联,系统会先评估 CUSTOM
政策,然后评估 DENY
政策,最后评估 ALLOW
政策。评估结果由以下规则决定:
如果有与请求匹配的
CUSTOM
政策,系统会使用自定义授权提供方评估CUSTOM
政策,如果提供方拒绝请求,则该请求将被拒绝。即使已配置了任何DENY
或ALLOW
政策,系统也不会评估它们。如果有任何
DENY
政策与请求匹配,则该请求将被拒绝。即使已配置了任何ALLOW
政策,系统也不会评估它们。如果不存在任何
ALLOW
政策,则允许该请求。如果有任何
ALLOW
政策与请求匹配,则允许该请求。如果存在
ALLOW
政策,但没有发生匹配,则拒绝该请求。换言之,如果已配置的包含ALLOW
操作的AuthzPolicies
政策均不与请求匹配,则默认情况下,请求会被拒绝。
使用授权政策来委托授权决策
对于无法使用授权政策表达的复杂授权决策,请将授权决策委托给自定义授权提供方(例如 Identity-Aware Proxy [IAP]),或者创建您自己的使用服务扩展程序构建的授权扩展程序。如果您想通过 IAP 使用本地授权引擎或第三方身份提供方,此方法会非常有用。
IAP:配置 IAP 以控制对应用负载均衡器转发规则后面的应用的访问权限。IAP 会验证用户身份和上下文,以确定访问权限。它还可以验证 Identity and Access Management (IAM) 服务账号令牌并评估 IAM 政策,以保护对从应用负载均衡器公开的后端存储桶的访问权限。如需了解详情,请参阅将授权委托给 IAP 和 IAM。
在以下情况下,您可以选择将身份验证委托给 IAP 和 IAM:
- 使用 IAM 进行权限管理。
- 实现情境感知访问权限。
- 对于需要交互式身份验证的 Web 应用使用基于浏览器的身份验证。
服务扩展程序:将授权决策委托给在 Google Cloud 虚拟机实例或本地运行的自定义授权引擎。这为内置政策未涵盖的复杂授权政策提供了灵活性。如需了解详情,请参阅配置授权扩展程序。
基于服务账号或标记的授权政策
您可以使用服务账号或标记等属性来识别内部应用负载均衡器的流量来源。
对于内部应用负载均衡器,您可以根据附加到 Google Cloud 资源的服务账号或标记来应用授权政策。您可以允许或拒绝任何源自与特定服务账号或标记关联的 Google Cloud 资源的流量,也可以将其委托给外部服务。
下表列出了支持使用服务账号和标记的来源资源和各种虚拟私有云 (VPC) 架构。
来源 | 服务账号支持 | 标记支持 |
---|---|---|
虚拟机 | ||
GKE 节点 | ||
GKE 容器 | * | * |
适用于 Cloud Run 的直接 VPC | * | |
无服务器 VPC 访问通道连接器 | † | † |
Cloud VPN | * | * |
本地 Cloud Interconnect | * | * |
应用负载均衡器 | ||
网络负载均衡器 |
* 不受 Google Cloud支持。
†来源 IP 地址是唯一的,可以用来充当替代方案。
VPC | VPC 架构 | 支持 |
---|---|---|
在 VPC 内 | 跨项目(共享 VPC) | |
在 VPC 内 | 跨区域 | |
跨 VPC | 跨对等互连链接(对等 VPC) | |
跨 VPC | 跨 Private Service Connect | |
跨 VPC | 跨 Network Connectivity Center spoke |
如需详细了解如何设置基于服务账号和附加到 Google Cloud 虚拟机资源的标记的授权政策,请参阅基于服务账号或标记的授权政策。
配额
如需了解授权政策的配额,请参阅授权政策的配额和限制。
价格
在预览版期间,授权政策不收费。不过,在使用 Google Cloud 负载均衡器时,会产生网络费用。如需了解价格信息,请参阅价格。