

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

# 管理以下项的 Web ACL AWS WAF
<a name="managing-waf"></a>

使用 AWS 网络安全管理器，您可以跨组织中的账户和资源集中配置和部署 AWS WAF Web 访问控制列表 (Web ACL)。您可以为 AWS WAF 定义 AWS 网络安全管理器规则，将它们分组到保护模板中，然后通过 AWS 网络安全管理器策略和部署大规模实施这些规则。

## AWS WAF 的概念
<a name="concepts-waf"></a>

以下概念特定于将 AWS 网络安全管理器与 AWS WAF 配合使用。有关 AWS 网络安全管理器工作原理的更多信息，请参阅[操作方法 AWS 网络安全管理器起作用](concepts.md)。

### AWS WAF 规则类型
<a name="concepts-waf-rule-types"></a>

对于 AWS WAF，规则是以下两种类型之一：
+ **检查**-包含使用`PreProcessFirewallManagerRuleGroups`（在客户定义的规则之前运行的规则）或`PostProcessFirewallManagerRuleGroups`（之后运行的规则）的规则组定义。
+ **配置**-包含单个 Web ACL 配置设置。配置 JSON 必须包含一个与支持的设置（例如、、、、、、、、、`Description`、`DefaultAction`、、`VisibilityConfig`、`LoggingConfiguration`、`CaptchaConfig`、、`ChallengeConfig`、`CustomResponseBodies`、`DataProtectionConfig``AssociationConfig``OnSourceDDoSProtectionConfig``TokenDomains`、或`MonetizationConfig`）匹配的顶级密钥。

大多数 Web ACL 配置设置与 AWS WAF `CreateWebACL` 操作的参数相对应。有关这些设置及其定义的更多信息，请参阅 *AWS WAF API 参考*中的 [CreateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateWebACL.html)。

唯一的例外是`LoggingConfiguration`，您可以单独配置。有关更多信息，请参阅 [记录 Web ACL 流量](#managing-waf-logging)。

### AWS WAF 策略合并
<a name="concepts-priority-waf"></a>

对于 AWS WAF，每个配置设置都使用以下合并策略之一：

SingleValue  
只能有一个值的设置。优先级最高的策略获胜。优先级值是唯一的，因此两个策略不能在相同的优先级下定义不同的值。有关 AWS 网络安全管理器如何解析优先级的更多信息，请参阅[Priority-based 策略合并](concepts.md#concepts-priority)。以下设置使用 SingleValue：`DefaultAction`、`VisibilityConfig`、`CaptchaConfig`、`ChallengeConfig`、`OnSourceDDoSProtectionConfig``LoggingConfiguration`、`MonetizationConfig`、和`Description`。

附加（和 AppendAndSort）  
所有策略中的条目按优先顺序附加到列表中。 `TokenDomains`并`DataProtectionConfig.DataProtections`使用追加。 `PreProcessFirewallManagerRuleGroups`和 `PostProcessFirewallManagerRuleGroups` use AppendAndSort，它会从所有策略中追加规则组并按优先级对它们进行排序。顺序很重要，因为 AWS WAF 会按顺序评估规则组。

合并   
无论优先级如何，来自所有策略的条目都合并为一个集合。 `CustomResponseBodies`然后`AssociationConfig.RequestBody`使用 “合并”。

追加 AppendAndSort、和合并策略会移除重复的条目。当两个策略提供相同的配置时， AWS 网络安全管理器会保留优先级较高的策略中的条目。因此，有效配置包含该条目的一个副本，而不是每个贡献策略的一个副本。

### 现有 Web ACL 分辨率
<a name="concepts-waf-existing-webacl"></a>

使用 AWS WAF 策略的`existingCustomerWebACLResolution`设置来指定 AWS 网络安全管理器如何处理已有客户管理的 Web ACL 的资源：
+ `RETROFIT`— 更新现有的 Web ACL 以使其与有效配置保持一致。
+ `OVERRIDE_ASSOCIATION`— 改为将 AWS 网络安全管理器管理的 Web ACL 与资源相关联。
+ `NO_REMEDIATION`— 如果您的 Web ACL 存在，请不要进行修复。

### 记录 Web ACL 流量
<a name="managing-waf-logging"></a>

您可以使用策略上的`LoggingConfiguration`设置来控制 Web ACL 日志记录。 AWS 网络安全管理器使用 AWS WAF `PutLoggingConfiguration` 操作应用此设置。您可以为每个 Web ACL 定义一个日志记录目标。有关更多信息，请参阅 *AWS WAF API 参考[PutLoggingConfiguration](https://docs.aws.amazon.com/waf/latest/APIReference/API_PutLoggingConfiguration.html)*中的。

策略管理的每个范围内 Web ACL 都会将其日志发送到策略指定的目标。这使您可以集中记录组织中的帐户。使用它来获取有关您的 Web ACL 在组织范围内分析的流量的详细信息。

要实现跨多个账户的集中日志记录，您可以将日志发送到 Amazon S3 存储桶或 Amazon Data Firehose 传输流。每种目标类型都需要额外的配置，您必须先完成这些配置，然后 AWS 网络安全管理器才能在您的范围内资源和账户中管理 AWS WAF 日志记录。目标名称必须以开头`aws-waf-logs-`。

Amazon Data Firehose  
创建具有以下特征的传送流：  
+ 使用您的 AWS 网络安全管理员帐户创建
+ 例如，一个以开头`aws-waf-logs-`的名字 `aws-waf-logs-network-security-manager-central`
+ 一个`PUT`消息来源
+ 在您运营的地区创建，或者如果您为 Amazon 捕获日志，则在美国东部（弗吉尼亚北部）地区创建 CloudFront
在使用传输流之前，请对其进行测试，以确认其吞吐量是否足以容纳组织的日志。有关更多信息，请参阅《[亚马逊数据 Firehose 开发者指南》中的创建*亚马逊数据 Firehose* 传输流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。

Amazon S3  
按照 *AWS WAF 开发者指南中的 Amazon S3 指南*创建存储桶。您还必须为存储桶配置允许日志传输向其写入的权限。以下存储桶策略授予这些权限。  

```
{
    "Version":"2012-10-17",
    "Id": "AWSLogDeliveryForNetworkSecurityManager",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryAclCheckNetworkSecurityManager",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::aws-waf-logs-{{bucket-suffix}}"
        },
        {
            "Sid": "AWSLogDeliveryWriteNetworkSecurityManager",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::aws-waf-logs-{{bucket-suffix}}/{{policy-id}}/AWSLogs/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```
{{bucket-suffix}}替换为您自己的存储桶名称后缀，并{{policy-id}}替换为您的策略的 ID。

**CloudWatch 日志仅支持单账号使用**  
如果您在多个账户中使用 AWS 网络安全管理器，则不能使用 Amazon Log CloudWatch s 日志组作为日志目标。日志组必须与 Web ACL 位于同一个 AWS 账户和相同区域。对于多账户部署，请改用 Amazon S3 存储桶或 Amazon Data Firehose 传输流。