

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 AWS WAF ACLs
<a name="managing-waf"></a>

使用 AWS Network Security Manager，您可以集中設定和部署組織中帳戶和資源的 AWS WAF Web 存取控制清單 (Web ACLs)。您可以定義 AWS WAF 的 AWS Network Security Manager 規則，將其分組為保護範本，並透過 AWS Network Security Manager 政策和部署大規模強制執行這些規則。

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

下列概念專屬於搭配 AWS WAF 使用 AWS Network Security Manager。如需 AWS Network Security Manager 運作方式的詳細資訊，請參閱 [AWS Network Security Manager 的運作方式](concepts.md)。

### AWS WAF 規則類型
<a name="concepts-waf-rule-types"></a>

對於 AWS WAF，規則是兩種類型之一：
+ **INSPECTION** – 包含使用 `PreProcessFirewallManagerRuleGroups`（在客戶定義規則之前執行的規則） 或 `PostProcessFirewallManagerRuleGroups`（在之後執行的規則） 的規則群組定義。
+ **CONFIGURATION** – 包含單一 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 Network Security Manager 如何解決優先順序的詳細資訊，請參閱 [優先順序型政策合併](concepts.md#concepts-priority)。下列設定使用 SingleValue：`DefaultAction`、`VisibilityConfig`、`CaptchaConfig`、`ChallengeConfig`、`OnSourceDDoSProtectionConfig`、`LoggingConfiguration`、 `MonetizationConfig`和 `Description`。

附加 （和 AppendAndSort)  
所有政策的項目會依優先順序附加至清單。 `TokenDomains` 和 `DataProtectionConfig.DataProtections` 使用附加。 `PreProcessFirewallManagerRuleGroups` 和 `PostProcessFirewallManagerRuleGroups`使用 AppendAndSort，這會附加所有政策的規則群組，並依優先順序排序。排序很重要，因為 AWS WAF 會循序評估規則群組。

Merge  
無論優先順序為何，所有政策的項目都會合併為單一集合。 `CustomResponseBodies`和 `AssociationConfig.RequestBody`使用合併。

附加、AppendAndSort和合併策略會移除重複的項目。當兩個政策提供相同的組態時， AWS Network Security Manager 會保留較高優先順序政策中的項目。因此，有效組態包含該項目的一個副本，而不是每個貢獻政策一個副本。

### 現有的 Web ACL 解析度
<a name="concepts-waf-existing-webacl"></a>

使用 AWS WAF 政策上的 `existingCustomerWebACLResolution`設定，指定 AWS Network Security Manager 如何處理已有客戶受管 Web ACL 的資源：
+ `RETROFIT` – 更新現有的 Web ACL，以符合有效的組態。
+ `OVERRIDE_ASSOCIATION` – 改為將 AWS Network Security Manager 管理的 Web ACL 與 資源建立關聯。
+ `NO_REMEDIATION` – 如果您的 Web ACL 存在，請勿修復 。

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

您可以使用政策上的 `LoggingConfiguration`設定來控制 Web ACL 記錄。 AWS Network Security Manager 會使用 AWS WAF `PutLoggingConfiguration`操作套用此設定。您可以為每個 Web ACL 定義一個記錄目的地。如需詳細資訊，請參閱 *AWS WAF API 參考*中的 [PutLoggingConfiguration](https://docs.aws.amazon.com/waf/latest/APIReference/API_PutLoggingConfiguration.html)。

政策管理的每個範圍內 Web ACL 都會將其日誌傳送至政策指定的目的地。這可讓您集中記錄組織中的各個帳戶。使用它來取得 Web ACLs 分析整個組織之流量的詳細資訊。

若要跨多個帳戶集中記錄，您可以將日誌傳送至 Amazon S3 儲存貯體或 Amazon Data Firehose 交付串流。每個目的地類型都需要額外的組態，您必須先完成這些組態， AWS Network Security Manager 才能管理跨範圍內資源和帳戶的 AWS WAF 記錄。目的地名稱必須以 開頭`aws-waf-logs-`。

Amazon Data Firehose  
建立具有下列特性的交付串流：  
+ 使用您的 AWS Network Security Manager 管理員帳戶建立
+ 以 開頭的名稱`aws-waf-logs-`，例如 `aws-waf-logs-network-security-manager-central`
+ `PUT` 來源
+ 在您操作的 區域中建立，或者如果您擷取 Amazon CloudFront 的日誌，則在美國東部 （維吉尼亞北部） 區域中建立
使用交付串流之前，請先進行測試，確認它有足夠的輸送量可供組織日誌使用。如需詳細資訊，請參閱[《Amazon Data Firehose 開發人員指南》中的建立 Amazon Data 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"
                }
            }
        }
    ]
}
```
將儲存{{貯體尾碼}}取代為您自己的儲存貯體名稱尾碼，並將 {{policy-id}} 取代為政策的 ID。

**CloudWatch Logs 僅支援單一帳戶使用**  
如果您跨多個帳戶使用 AWS Network Security Manager，則無法使用 Amazon CloudWatch Logs 日誌群組做為記錄目的地。日誌群組必須位於與 Web ACL 相同的 AWS 帳戶和相同區域。對於多帳戶部署，請改用 Amazon S3 儲存貯體或 Amazon Data Firehose 交付串流。