

**引入全新的主机体验 AWS WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

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

# 使用包含规则和规则组的保护包 (Web ACLs) AWS WAF
<a name="web-acl-processing"></a>

本节介绍保护包 (Web ACLs) 和 Web 如何 ACLs 使用规则和规则组。

保护包（web ACL）对 web 请求的处理方式取决于以下几点：
+ 保护包（web ACL）和内部规则组中规则的数字优先级设置
+ 规则和保护包（web ACL）上的操作设置
+ 您对添加的规则组中的规则的任何覆盖

有关规则操作设置的列表，请参阅 [在中使用规则操作 AWS WAF](waf-rule-action.md)。

您可以在规则操作设置和默认保护包（web ACL）操作设置中自定义请求和响应处理。有关信息，请参阅[自定义的 Web 请求和响应 AWS WAF](waf-custom-request-response.md)。

**Topics**
+ [

# 设置规则优先级
](web-acl-processing-order.md)
+ [

# 如何 AWS WAF 处理规则和规则组操作
](web-acl-rule-actions.md)
+ [

# 覆盖中的规则组操作 AWS WAF
](web-acl-rule-group-override-options.md)

# 设置规则优先级
<a name="web-acl-processing-order"></a>

本节介绍如何 AWS WAF 使用数字优先级设置来设置规则的评估顺序。

在保护包（web ACL）和任何规则组中，您可以使用数字优先级设置来确定规则的评估顺序。您必须为保护包（web ACL）中的每条规则指定该保护包（web ACL）中唯一的优先级设置，也必须为规则组中的每条规则指定该规则组中唯一的优先级设置。

**注意**  
当您管理规则组时，通过控制台的保护包 (Web ACLs) 会根据列表中规则的顺序为您 AWS WAF 分配唯一的数字优先级设置。 AWS WAF 为列表顶部的规则分配最低的数字优先级，为底部的规则分配最高的数字优先级。

当 AWS WAF 根据 Web 请求评估任何规则组，即保护包 (Web ACL) 时，它会从最低的数字优先级设置开始评估规则，直到找到终止评估的匹配项或用尽所有规则。

例如，假设保护包（web ACL）中有以下规则和规则组，其优先级如下所示：
+ Rule1：优先级 0
+ RuleGroupA — 优先级 100
  + RuleA1：优先级 1 万
  + RuleA2：优先级 2 万
+ Rule2：优先级 200
+ RuleGroupB — 优先级 300
  + RuleB1：优先级 0
  + RuleB2：优先级 1

AWS WAF 将按以下顺序评估此保护包 (Web ACL) 的规则：
+ Rule1
+ RuleGroupA rulea1
+ RuleGroupA rulea2
+ Rule2
+ RuleGroupB ruleB1
+ RuleGroupB ruleB2

# 如何 AWS WAF 处理规则和规则组操作
<a name="web-acl-rule-actions"></a>

本节介绍如何 AWS WAF 使用规则和规则组来处理操作。

配置规则和规则组时，您可以选择 AWS WAF 如何处理匹配的 Web 请求：
+ **Allow 和 Block 正在终止操作**：Allow 操作 Block 会停止对匹配的 web 请求进行保护包（web ACL）的所有其他处理。如果保护包 (Web ACL) 中的规则找到了与请求的匹配项，并且规则操作为Allow或Block，则该匹配将决定保护包 (Web ACL) 的 Web 请求的最终处置。 AWS WAF 不处理保护包（Web ACL）中匹配规则之后的任何其他规则。对于直接添加到保护包（web ACL）的规则以及已添加规则组中的规则，此原理同样适用。通过 Block 操作，受保护的资源将无法接收或处理 web 请求。
+ **Count 是非终止操作**：当具有 Count 操作的规则与请求匹配时， AWS WAF 会对请求进行计数，然后继续处理保护包（web ACL）规则集中的后续规则。
+ **CAPTCHA并且Challenge可以是非终止或终止操作** — 当具有其中一个操作的规则与请求匹配时， AWS WAF 会检查其令牌状态。如果请求具有有效的令牌，则将匹配项 AWS WAF 视为Count匹配项，然后继续处理保护包 (Web ACL) 规则集中遵循的规则。如果请求没有有效的令牌，则 AWS WAF 终止评估并向客户端发送验证码拼图或静默的后台客户端会话挑战来解决。

如果规则评估未导致任何终止操作，则对请求 AWS WAF 应用保护包 (Web ACL) 默认操作。有关信息，请参阅[在中设置保护包 (Web ACL) 的默认操作 AWS WAF](web-acl-default-action.md)。

在保护包（web ACL）中，您可以覆盖规则组内规则的操作设置，也可以覆盖规则组返回的操作。有关信息，请参阅[覆盖中的规则组操作 AWS WAF](web-acl-rule-group-override-options.md)。

**操作和优先级设置之间的交互**  
 AWS WAF 适用于 Web 请求的操作受保护包 (Web ACL) 中规则的数字优先级设置的影响。例如，假设保护包（web ACL）有一条规则具有 Allow 操作且数字优先级为 50，另一条规则具有 Count 操作且数字优先级为 100。 AWS WAF 按优先级顺序评估保护包（web ACL）中的规则，从最低设置开始，因此在评估计数规则之前，将先评估允许规则。同时匹配两个规则的 web 请求将首先匹配允许规则。因为Allow是终止操作， AWS WAF 将停止对这场比赛的评估，并且不会根据计数规则评估请求。
+ 如果您只想在计数规则指标中包含与允许规则不匹配的请求，则可以采用规则的优先级设置。
+ 另一方面，如果您想要计数规则中的计数指标，即使请求与允许规则匹配也是如此，则需要为计数规则指定比允许规则更低的数字优先级设置，以便首先运行计数规则。

有关优先级设置的更多信息，请参阅 [设置规则优先级](web-acl-processing-order.md)。

# 覆盖中的规则组操作 AWS WAF
<a name="web-acl-rule-group-override-options"></a>

本节介绍了如何覆盖规则组操作。

将规则组添加到保护包（web ACL）时，您可以覆盖它对匹配的 web 请求所执行的操作。覆盖保护包（web ACL）配置中规则组的操作不会改变规则组本身。它只会改变在保护包（Web ACL）上下文中 AWS WAF 使用规则组的方式。

## 规则组规则操作的覆盖
<a name="web-acl-rule-group-override-options-rules"></a>

您可以将规则组内规则的操作覆盖为任何有效的规则操作。执行此操作时，将完全按照配置规则的操作为覆盖设置处理匹配的请求。

**注意**  
规则操作可以是终止，也可以是非终止。终止操作会停止对请求的保护包（web ACL）评估，要么允许请求继续访问受保护的应用程序，要么将其阻止。

以下是规则操作选项：
+ **Allow**— AWS WAF 允许将请求转发到受保护的 AWS 资源进行处理和响应。这是终止操作。在您定义的规则中，您可以在请求中插入自定义标头，然后再将其转发到受保护的资源。
+ **Block**— AWS WAF 阻止请求。这是终止操作。默认情况下，您的受保护 AWS 资源以 HTTP `403 (Forbidden)` 状态代码进行响应。在您定义的规则中，您可以自定义响应。当 AWS WAF 阻止请求时，Block操作设置将决定受保护资源发送回客户端的响应。
+ **Count**— 对请求进行 AWS WAF 计数，但不确定是允许还是阻止请求。这是一个非终止操作。 AWS WAF 继续处理保护包（web ACL）中的其余规则。在您定义的规则中，您可以将自定义标头插入请求中，也可以添加其他规则可以匹配的标签。
+ **CAPTCHA并且 Challenge** — AWS WAF 使用 CAPTCHA 谜题和静默挑战来验证请求不是来自机器人，并 AWS WAF 使用代币来跟踪最近成功的客户响应。

  只有当浏览器访问 HTTPS 端点时，才能运行验证码拼图和静默质询。浏览器客户端必须在安全环境中运行才能获取令牌。
**注意**  
当您在其中一个规则中使用 CAPTCHA 或 Challenge 规则操作或在规则组中将其作为规则操作覆盖时，您需要支付额外费用。有关更多信息，请参阅[AWS WAF 定价](https://aws.amazon.com/waf/pricing/)。

  这些规则操作可以是终止操作，也可以是非终止操作，具体取决于请求中令牌的状态：
  + **未过期的有效令牌不终止** — 如果根据配置的验证码或质疑免疫时间，令牌有效且未过期，则 AWS WAF 处理与操作类似的请求。Count AWS WAF 继续根据保护包 (Web ACL) 中的其余规则检查 Web 请求。与 Count 配置类似，在您定义的规则中，您可以选择使用自定义标头配置这些操作以插入到请求中，也可以添加其他规则可以匹配的标签。
  + **以对无效或过期令牌的请求被阻止而终止** — 如果令牌无效或指定的时间戳已过期，则 AWS WAF 终止对 Web 请求的检查并阻止请求，类似于操作。Block AWS WAF 然后使用自定义响应代码响应客户端。因为CAPTCHA，如果请求内容表明客户端浏览器可以处理它，则会在 JavaScript 插页式广告中 AWS WAF 发送一个验证码拼图，该拼图旨在区分人类客户端和机器人。对于Challenge操作， AWS WAF 会发送带有静默挑战的 JavaScript 插页式广告，该挑战旨在将普通浏览器与机器人运行的会话区分开来。

  有关更多信息，请参阅 [CAPTCHA然后Challenge在 AWS WAF](waf-captcha-and-challenge.md)。

有关如何使用此选项的信息，请参阅 [覆盖规则组的规则操作](web-acl-rule-group-settings.md#web-acl-rule-group-rule-action-override)。

### 将规则操作覆盖为 Count
<a name="web-acl-rule-group-override-to-count"></a>

规则操作覆盖的最常见使用案例是将部分或全部规则操作覆盖到 Count，以测试和监控规则组的行为，然后再将其投入生产。

您也可以使用它对生成误报的规则组进行故障排除。当规则组阻止了您不希望阻止的流量时，就会出现误报。如果您在规则组中发现某条规则将阻止您希望允许通过的请求，则您可以保留该规则的计数操作覆盖，使其无法对您的请求采取行动。

有关在测试中使用规则操作覆盖的更多信息，请参阅 [测试和调整您的 AWS WAF 保护措施](web-acl-testing.md)。

### JSON 列表：`RuleActionOverrides` 取代 `ExcludedRules`
<a name="web-acl-rule-group-override-replaces-exclude"></a>

如果您在 2022 年 10 月 27 日之前Count在保护包 (Web ACL) 配置中将规则组规则操作设置为，请 AWS WAF 将保护包 (Web ACL) JSON 中的替换内容保存为`ExcludedRules`。现在，用于将规则替换为 Count 的 JSON 设置位于 `RuleActionOverrides` 设置中。

我们建议您将您的 JSON 列表中的所有 `ExcludedRules` 设置更新为 `RuleActionOverrides` 设置，并将操作设置为 Count。API 接受任一设置，但如果您只使用新 `RuleActionOverrides` 设置，则您的控制台工作和 API 工作之间的 JSON 列表都将保持一致。

**注意**  
在 AWS WAF 控制台中，保护包 (Web ACL) “**采样请求**” 选项卡不显示使用旧设置的规则的示例。有关更多信息，请参阅 [查看 web 请求示例](web-acl-testing-view-sample.md)。

当您使用 AWS WAF 控制台编辑现有规则组设置时，控制台会自动将 JSON 中的任何`ExcludedRules``RuleActionOverrides`设置转换为设置，覆盖操作设置为Count。
+ 当前设置示例：

  ```
         "ManagedRuleGroupStatement": {
            "VendorName": "AWS",
            "Name": "AWSManagedRulesAdminProtectionRuleSet",
            "RuleActionOverrides": [
              {
                "Name": "AdminProtection_URIPATH",
                "ActionToUse": {
                  "Count": {}
                }
              }
            ]
  ```
+ 旧设置示例：

  ```
  OLD SETTING
         "ManagedRuleGroupStatement": {
            "VendorName": "AWS",
            "Name": "AWSManagedRulesAdminProtectionRuleSet",
            "ExcludedRules": [
              {
                "Name": "AdminProtection_URIPATH"
              }
            ]
  OLD SETTING
  ```

## 规则组返回操作覆盖为 Count
<a name="web-acl-rule-group-override-options-rule-group"></a>

您可以覆盖规则组返回的操作，将其设置为 Count。

**注意**  
这不是测试规则组中规则的好选择，因为它不会改变 AWS WAF 评估规则组本身的方式。它仅影响如何 AWS WAF 处理从规则组评估返回到保护包 (Web ACL) 的结果。如果要测试规则组中的规则，请使用上一节中描述的方式 [规则组规则操作的覆盖](#web-acl-rule-group-override-options-rules)。

当您将规则组操作改写为时Count，将正常 AWS WAF 处理规则组评估。

如果规则组中没有匹配的规则，或者所有匹配的规则都有 Count 操作，则此覆盖对规则组或保护包（web ACL）的处理没有影响。

规则组中第一个与 Web 请求匹配且具有终止规则操作的规则会导致 AWS WAF 停止评估该规则组，并将终止操作结果返回到保护包 (Web ACL) 评估级别。此时，在保护包 (Web ACL) 评估中，此替代生效。 AWS WAF 覆盖终止操作，因此规则组评估的结果只是一个Count操作。 AWS WAF 然后继续处理保护包 (Web ACL) 中的其余规则。

有关如何使用此选项的信息，请参阅 [将规则组的评估结果覆盖为 Count](web-acl-rule-group-settings.md#web-acl-rule-group-action-override)。