AWS::WAFRegional::RateBasedRule - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::WAFRegional::RateBasedRule

RateBasedRule 与常规 Rule 相同,但需补充一点:RateBasedRule 计算每五分钟从指定 IP 地址到达的请求数。例如,根据您发现的来自某个攻击者的最近请求,您可以创建一个包含以下条件的 RateBasedRule

  • 请求来自 192.0.2.44。

  • 请求在 User-Agent 标头中包含值 BadBot

在规则中,您还将速率限制定义为 15000。

当请求既符合这两个条件又超过每 5 分钟 15000 个请求的速率限制时,将触发在 Web ACL 中定义的该规则的操作(阻止或计数)。

请注意,只能使用 CloudFormation 模板创建基于费率的规则。要将通过 CloudFormation 创建的基于费率的规则添加到 Web ACL,请使用 AWS WAF 控制台、API 或命令行界面 (CLI)。有关更多信息,请参阅 UpdateWebACL

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::WAFRegional::RateBasedRule", "Properties" : { "MatchPredicates" : [ Predicate, ... ], "MetricName" : String, "Name" : String, "RateKey" : String, "RateLimit" : Integer } }

YAML

Type: AWS::WAFRegional::RateBasedRule Properties: MatchPredicates: - Predicate MetricName: String Name: String RateKey: String RateLimit: Integer

属性

MatchPredicates

Predicates 对象对于每个要在 RateBasedRule 中包含的 ByteMatchSetIPSetSqlInjectionMatchSet> 对象包含一个 Predicate 元素。

必需:否

类型谓词的列表

Update requires: No interruption

MetricName

RateBasedRule 的指标的易记名称或描述。该名称只能包含字母数字字符(A-Z、a-z、0-9),最大长度为 128 和最小长度为 1。它不能包含空格或为 AWS WAF 预留的指标名称,包括“All”和“Default_Action”。 创建 RateBasedRule 之后,无法更改指标名称。

必需:是

类型:字符串

最低1

最高128

模式.*\S.*

Update requires: Replacement

Name

RateBasedRule 的易记名称或描述。您在创建 RateBasedRule 后无法更改其名称。

必需:是

类型:字符串

最低1

最高128

模式.*\S.*

Update requires: Replacement

RateKey

AWS WAF 用于确定请求是否来自单个源因而需要受速率监控的字段。RateKey 的唯一有效值为 IPIP 指示从同一 IP 地址到达的请求受 RateBasedRule 中指定的 RateLimit 的约束。

必需:是

类型:字符串

允许的值IP

Update requires: Replacement

RateLimit

在五分钟内允许的最大请求数,具有与 RateKey 所指定的字段相同的值。如果请求数超过了 RateLimit 并且还满足规则中指定的其他谓词,则 AWS WAF 将触发为此规则指定的操作。

必需:是

类型:整数

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回资源的物理 ID,例如 1234a1a-a1b1-12a1-abcd-a123b123456。

For more information about using the Ref function, see Ref.

示例

将 IPSet 与基于费率的规则关联

以下示例将 MyIPSetBlacklist IPSet 对象与基于费率的规则关联。

JSON

"MyIPSetRateBasedRule" : { "Type": "AWS::WAFRegional::RateBasedRule", "Properties": { "Name": "MyIPSetRateBasedRule", "MetricName" : "MyIPSetRateBasedRule", "RateKey" : "IP", "RateLimit" : 8000 "MatchPredicates": [ { "DataId" : { "Ref" : "MyIPSetBlacklist" }, "Negated" : false, "Type" : "IPMatch" } ] } }

YAML

MyIPSetRateBasedRule: Type: "AWS::WAFRegional::RateBasedRule" Properties: Name: "MyIPSetRateBasedRule" MetricName: "MyIPSetRateBasedRule" RateKey : "IP" RateLimit : 8000 MatchPredicates: - DataId: Ref: "MyIPSetBlacklist" Negated: false Type: "IPMatch"