

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

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

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

# 日志记录目标
<a name="waf-policies-logging-destinations"></a>

本节介绍您可以选择发送 AWS WAF 策略日志的日志目的地。每个部分都提供了有关配置目标类型日志记录的指导，以及有关特定于目标类型的任何行为的信息。配置日志目标后，您可以向 Firewall Manager AWS WAF 策略提供其规格以开始登录该目标。

创建日志记录配置后，Firewall Manager 无法查看日志故障。您应负责验证日志传输是否按预期运行。

Firewall Manager 不会修改您组织的成员账户中的任何现有日志记录配置。

**Topics**
+ [Amazon Data Firehose 数据流](#waf-policies-logging-destinations-kinesis-data-firehose)
+ [Amazon Simple Storage Service 存储桶](#waf-policies-logging-destinations-s3)

## Amazon Data Firehose 数据流
<a name="waf-policies-logging-destinations-kinesis-data-firehose"></a>

本主题提供有关将您的 Web ACL 流量日志发送到 Amazon Data Firehose 数据流的信息。

当您启用 Amazon Data Firehose 日志记录时，Firewall Manager 会将日志从您的策略网站发送 ACLs 到您已配置存储目标的亚马逊数据 Firehose。启用日志记录后，通过 Kinesis Data Firehose 的 HTTPS 端点将每个已配置的 Web ACL 的日志 AWS WAF 传送到配置的存储目标。在使用之前，请测试您的传输流，确保其吞吐量足以容纳组织的日志。有关如何使用 Amazon Kinesis Data Firehose 以及如何查看存储的日志的更多信息，请参阅[什么是 Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)。

您必须拥有以下权限才能使用 Kinesis 成功启用日志记录：
+ `iam:CreateServiceLinkedRole`
+ `firehose:ListDeliveryStreams`
+ `wafv2:PutLoggingConfiguration`

当您在 AWS WAF 策略上配置 Amazon Data Firehose 日志记录目标时，防火墙管理器会在防火墙管理器管理员账户中为该策略创建一个 Web ACL，如下所示：
+ Firewall Manager 会在 Firewall Manager 管理员账户中创建 Web ACL，无论该账户是否在策略的范围内。
+ Web ACL 启用了日志记录，日志名称为 `FMManagedWebACLV2-Logging{{policy name}}-{{timestamp}}`，时间戳为 Web ACL 启用日志的 UTC 时间（以毫秒为单位）。例如 `FMManagedWebACLV2-LoggingMyWAFPolicyName-1621880565180`。Web ACL 没有规则组，也没有关联的资源。
+ 根据 AWS WAF 定价指南，您需要为 Web ACL 付费。有关更多信息，请参阅[AWS WAF 定价](https://aws.amazon.com/waf/pricing/)。
+ 当您删除策略时，Firewall Manager 会删除 Web ACL。

有关服务相关角色以及 `iam:CreateServiceLinkedRole` 权限的信息，请参阅 [将服务相关角色用于 AWS WAF](using-service-linked-roles.md)。

有关创建传输流的更多信息，请参阅[创建 Amazon Data Firehose 传输流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。

## Amazon Simple Storage Service 存储桶
<a name="waf-policies-logging-destinations-s3"></a>

本主题提供有关将 Web ACL 流量日志发送到 Amazon S3 存储桶的信息。

选择作为日志记录目标的存储桶必须由 Firewall Manager 管理员账户所有。有关创建用于日志记录的 Amazon S3 存储桶的要求和存储桶命名要求的信息，请参阅*AWS WAF 开发人员指南*中的 [Amazon 简单存储服务](https://docs.aws.amazon.com/waf/latest/developerguide/logging-s3.html)。

**最终一致性**  
当您对配置有 Amazon S3 日志目标的 AWS WAF 策略进行更改时，Firewall Manager 会更新存储桶策略以添加记录所需的权限。在这样做时，Firewall Manager 会遵循亚马逊简单存储服务所遵循的 last-writer-wins语义和数据一致性模型。如果您在 Firewall Manager 控制台中或通过 [PutPolicy](https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PutPolicy.html)API 同时对 Amazon S3 目标进行多个策略更新，则可能无法保存某些权限。有关 Amazon S3 数据一致性模型的更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的 [Amazon S3 数据一致性模型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#ConsistencyModel)。

### 向 Amazon S3 存储桶发布日志的权限
<a name="waf-policies-logging-s3-permissions"></a>

在 AWS WAF 策略中为 Amazon S3 存储桶配置 Web ACL 流量日志需要以下权限设置。当您将 Amazon S3 配置为日志记录目标以授予服务向存储桶发布日志的权限时，Firewall Manager 会自动将这些权限附加到您的 Amazon S3 存储桶。如果您希望更精细地管理对日志和 Firewall Manager 资源的访问权限，您可以自己设置这些权限。有关管理权限的信息，请参阅*IAM 用户指南*中的 [AWS 资源的访问权限管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。有关 AWS WAF 托管策略的信息，请参阅[AWS 的托管策略 AWS WAF](security-iam-awsmanpol.md)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "AWSLogDeliveryForFirewallManager",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryAclCheckFMS",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::aws-waf-logs-{{amzn-s3-demo-destination-bucket}}-suffix"
        },
        {
            "Sid": "AWSLogDeliveryWriteFMS",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::aws-waf-logs-{{amzn-s3-demo-destination-bucket}}-suffix/{{policy-id}}/AWSLogs/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

为防止跨服务混淆代理问题，您可以将 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文密钥添加到存储桶的策略中。要添加这些密钥，您可以修改 Firewall Manager 在配置日志记录目标时为您创建的策略，或者如果您想要精细控制，则可以创建自己的策略。如果您将这些条件添加到日志记录目标策略中，Firewall Manager 将无法验证或监控混淆代理保护。有关混淆代理问题的更多信息，请参阅 *IAM 用户指南*中的[混淆代理问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

当您添加 `sourceAccount` 添加 `sourceArn` 属性时，将增加存储桶策略的大小。如果要添加一长串 `sourceAccount` 添加 `sourceArn` 属性，请注意不要超过 Amazon S3 [存储桶策略大小](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3)限额。

以下示例说明了如何通过在存储桶策略中使用 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键来防止混淆代理问题。{{member-account-id}}替换为 IDs 组织中成员的帐户。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"AWSLogDeliveryForFirewallManager",
   "Statement":[
      {
         "Sid":"AWSLogDeliveryAclCheckFMS",
         "Effect":"Allow",
         "Principal":{
            "Service":"delivery.logs.amazonaws.com"
         },
         "Action":"s3:GetBucketAcl",
         "Resource":"arn:aws:s3:::aws-waf-logs-{{amzn-s3-demo-destination-bucket}}-suffix",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":[
               "{{111122223333}}",
               "{{444455556666}}"
               ]
            },
            "ArnLike":{
               "aws:SourceArn":[
               "arn:aws:logs:*:{{111122223333}}:*",
               "arn:aws:logs:*:{{444455556666}}:*"
               ]
            }
         }
      },
      {
         "Sid":"AWSLogDeliveryWriteFMS",
         "Effect":"Allow",
         "Principal":{
            "Service":"delivery.logs.amazonaws.com"
         },
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::aws-waf-logs-{{amzn-s3-demo-destination-bucket}}-suffix/{{policy-id}}/AWSLogs/*",
         "Condition":{
            "StringEquals":{
               "s3:x-amz-acl":"bucket-owner-full-control",
               "aws:SourceAccount":[
               "{{111122223333}}",
               "{{444455556666}}"
               ]
            },
            "ArnLike":{
               "aws:SourceArn":[
               "arn:aws:logs:*:{{111122223333}}:*",
               "arn:aws:logs:*:{{444455556666}}:*"
               ]
            }
         }
      }
   ]
}
```

------

#### Amazon S3 存储桶服务器端加密
<a name="waf-policies-logging-s3-kms-permissions"></a>

您可以启用 Amazon S3 服务器端加密，也可以在 S3 存储桶上使用 AWS Key Management Service 客户托管密钥。如果您选择在 Amazon S3 存储桶上对 AWS WAF 日志使用默认 Amazon S3 加密，则无需采取任何特殊操作。但是，如果您选择使用客户提供的加密密钥对静态的 Amazon S3 数据进行加密，则必须在 AWS Key Management Service 密钥策略中添加以下权限声明：

```
{
            "Sid": "Allow Logs Delivery to use the key",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
}
```

有关在 Amazon S3 中使用客户提供的加密密钥的信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用客户提供的密钥进行服务器端加密 (SSE-C)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html)。