OR 规则语句 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

OR 规则语句

OR 规则语句将嵌套语句与 OR 逻辑相结合,因此其中一个嵌套语句必须匹配 OR 语句才能进行匹配。这至少需要一个嵌套语句。

例如,如果您要阻止来自特定国家/地区或包含特定查询字符串的请求,则可以创建一个 OR 语句,并在其中嵌入该国家/地区的地理匹配语句和查询字符串的字符串匹配语句。

相反,如果您想阻止不是来自特定国家/地区或包含特定查询字符串的请求,则可以修改之前的 OR 语句,将地理匹配语句嵌套在 NOT 语句中更低的一个级别。此级别的嵌套要求您使用 JSON 格式,因为控制台仅支持一个级别的嵌套。

嵌套 – 您可以嵌套此语句类型。

WCU – 取决于嵌套语句。

在何处查找规则语句
  • 控制台上的规则生成器 – 对于如果有请求,选择至少匹配其中一条语句 (OR),然后填写嵌套语句。

  • APIOrStatement

示例

下表显示了使用 OR 来组合另外两个语句的情况。如果其中一个嵌套语句匹配,则 OR 语句是匹配的。

{ "Name": "neitherOfTwo", "Priority": 1, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "neitherOfTwo" }, "Statement": { "OrStatement": { "Statements": [ { "GeoMatchStatement": { "CountryCodes": [ "CA" ] } }, { "IPSetReferenceStatement": { "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777" } } ] } } }

使用控制台规则可视化编辑器,您可以在逻辑规则语句下嵌套大多数可嵌套语句,但不能使用可视化编辑器嵌套 OR 或 AND 语句。要配置这种类型的嵌套,您需要以 JSON 格式提供规则语句。例如,以下 JSON 规则列表包括嵌套在 AND 语句中的 OR 语句。

{ "Name": "match_rule", "Priority": 0, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom" } } } }, { "OrStatement": { "Statements": [ { "GeoMatchStatement": { "CountryCodes": [ "JM", "JP" ] } }, { "ByteMatchStatement": { "SearchString": "JCountryString", "FieldToMatch": { "Body": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "CONTAINS" } } ] } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "match_rule" } }