借助服务速率限制政策,您可以针对可能消耗大量资源的受信任客户端保持服务可用性。这些政策通过在服务过载期间优先处理重要的客户端流量,并限制超出预定义阈值的客户端来实现此目的。
您可以将服务速率限制政策与其他类型的速率限制(例如明确禁止不受信任的客户端以防止滥用的 Cloud Armor 安全政策)结合使用。如需详细了解安全 政策,请参阅 安全政策概览和 Cloud Armor 速率限制概览。
您可以将服务速率限制政策附加到受支持的负载均衡器的转发规则或 Secure Web Proxy 网关资源。如需详细了解如何将服务速率限制政策与 Secure Web Proxy 实例搭配使用,请参阅 配置服务速率限制政策。
支持的目标
服务速率限制政策适用于以下目标:
- 区域级内部应用负载均衡器
- Secure Web Proxy
请求过滤顺序
服务速率限制政策只是应用于请求的一种过滤器。下图显示了应用过滤器的顺序:
规则
每项服务速率限制政策都包含一个 HTTP 规则列表。每条规则都指定了匹配条件和一组速率限制操作。当请求满足规则的匹配条件时,系统会根据您配置的一个或多个速率限制存储桶评估该请求。
匹配条件
匹配条件及其属性如下所示。每个属性都可以匹配确切的字符串、前缀、后缀或子字符串:
Source:请求的来源。principal:从客户端的证书派生出的身份列表。 当任何主账号与规则匹配时,就会发生匹配。如需详细了解如何使用主账号进行服务速率限制,请参阅使用主账号进行服务速率限制。
Destination:请求的目标。如果您指定了多个属性,则这些属性会使用逻辑AND运算符进行组合。header_set:HTTP 标头列表。当header_set中的所有标头都与规则匹配时,就会发生匹配。hosts:HTTP 主机列表。当请求发送到列表中的任何指定主机时,就会发生匹配。paths:网址路径列表。当请求使用列表中的任何指定路径时,就会发生匹配。methods:有效 HTTP 方法(例如GET或POST)的列表。当请求使用列表中的任何指定方法时,就会发生匹配。
请注意,来源和目标属性会使用逻辑 AND 运算符进行组合,以确定规则是否与请求匹配。这意味着,如果您指定了来源和目标,则请求必须同时与两者匹配才能满足匹配条件。此外,空规则与所有请求匹配。
规则评估顺序
系统会按照从政策中定义的第一条规则到政策中定义的最后一条规则的顺序评估规则。与请求匹配的第一条规则会将其速率限制操作应用于该请求,并且系统不会再评估后续规则。如果某条规则有多个速率限制操作,并且其中任何一个操作超出了配置的阈值,则系统会限制该请求。
速率限制存储桶
您可以配置一个或多个速率限制存储桶,每个存储桶都有一个或多个速率限制键。当请求与规则的匹配条件匹配时,系统会根据您配置的一个或多个速率限制存储桶评估该请求。然后,存储桶会应用其配置的速率限制键来识别各个客户端并强制执行限制。
除了键类型之外,您还可以配置以下存储桶属性:
- 试运行:在试运行模式下,系统会评估规则并跟踪匹配项,但不会应用规则操作。这样,您就可以测试速率限制规则,而不会限制客户端或影响生产流量。
- 用户替换:您可以替换特定
键值的默认请求限制。例如,如果您有一个存储桶,其默认限制为每个客户端每分钟 100 个请求,并且该存储桶使用了
SOURCE_IP键类型,则您可以替换特定 IP 地址的限制,并改为每分钟 200 个请求的限制。
键类型
您可以使用以下键类型确定要进行速率限制的各个客户端,以便聚合请求并强制执行速率限制:
- ALL:满足规则匹配条件的所有请求的单个键。
- SOURCE_IP:其请求 满足规则匹配条件的每个客户端 IP 地址的唯一键。
- HTTP_HEADER:已配置名称的每个唯一 HTTP 标头值的唯一键。键值会被截断为标头值的前 128 个字节。如果不存在此类标头,则键类型默认为 ALL。
- HTTP_PATH:HTTP 请求的网址路径。键值被截断为前 128 个字节。
- PRINCIPAL:表示身份的字符串,该身份派生自
客户端的证书。唯一支持的主账号类型是
CLIENT_CERT_COMMON_NAME。
您可以在每条规则中指定一个或多个键类型。如果您指定了多个键类型,则每个客户端的键的总组合将用作唯一键。
例如,您可以使用 SOURCE_IP 和 HTTP_PATH 的组合来对特定 IP 地址访问特定端点的频率应用速率限制。
使用主账号进行服务速率限制
如需以高粒度识别流量来源,您可以根据从客户端证书派生的身份配置服务速率限制政策。此方法要求在负载均衡器上启用前端 mTLS
,并使用客户端证书通用名称 (CLIENT_CERT_COMMON_NAME) 属性作为用于
标识的主账号选择器。
如果未指定用于标识的主账号选择器,则系统会使用 CLIENT_CERT_URI_SAN 作为默认主账号选择器。这意味着,在做出速率限制决策时,系统会评估客户端证书的 URI SAN。
如需使基于主账号的速率限制正常运行,必须满足以下条件:
必须启用前端 mTLS 。如果未启用前端 mTLS,客户端将不会提供证书。因此,服务速率限制政策中的任何基于主账号的规则都找不到可供评估的证书信息。 例如,检查
CLIENT_CERT_URI_SAN的规则会看到一个空值。必须有有效的客户端证书 。即使启用了 mTLS,如果连接是使用缺失或无效的证书建立的,则客户端证书也不会用于速率限制。当 mTLS 客户端验证模式设置为宽容模式 时,会出现这种情况
ALLOW_INVALID_OR_MISSING_CLIENT_CERT。 同样在这种情况下,服务速率限制政策中的任何基于主账号的规则都找不到可供评估的证书信息。 例如,检查CLIENT_CERT_URI_SAN的规则会看到一个空值。
属性大小限制的影响
速率限制决策对客户端证书属性的大小很敏感。如果某个属性超出其大小限制,并且政策配置为验证该特定属性,则请求会被拒绝。
当政策针对 CLIENT_CERT_COMMON_NAME 进行验证,而证书的主体(包含通用名称)超出了大小限制时,可能会发生拒绝。