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

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

Amazon Simple Storage Service

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

注意

除了使用费用外,您还需要支付登录费用Amazon WAF。有关信息,请参阅 记录 Web ACL 流量信息的定价

要将您的网络 ACL 流量日志发送到 Amazon S3,您需要为日志设置 Amazon S3 存储桶。启用登录时Amazon WAF,您需要提供存储桶 ARN。有关创建日志记录桶的信息,请参阅 Amazon Simple Storage Service 用户指南中的创建桶

注意

Amazon WAF支持使用 Amazon S3 存储桶对密钥类型 Amazon S3 密钥 (SSE-S3) 和Amazon Key Management Service (SSE-KMS) 进行加密Amazon KMS keys。 Amazon WAF不支持对由管理的Amazon Key Management Service密钥进行加密Amazon。

您的 Web ACL 每隔 5 分钟将其日志文件发布到 Amazon S3 存储桶。每个日志文件包含在上一个 5 分钟期间内记录的流量的日志记录。

日志文件的最大文件大小为 75 MB。如果日志文件在 5 分钟期间内达到文件大小限制,则日志会停止向它添加记录,将其发布到 Amazon S3 存储桶,然后创建新的日志文件。

单个日志文件包含包含多条记录的交错条目。要查看 Web ACL 的所有日志文件,请查找按 Web ACL 名称、区域和您的账户 ID 汇总的条目。

命名要求和语法

用于Amazon WAF记录的存储段名称必须以您想要的任何后缀开头,aws-waf-logs-并且可以以任何后缀结尾。例如,aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX

存储段位置使用以下语法:

s3://aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX/

存储桶的 Amazon 资源名称 (ARN) 的格式如下:

arn:aws:s3:::aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX

在存储桶内,您的Amazon WAF日志写入一个文件夹结构,该结构由您的账户 ID、区域、Web ACL 名称以及日期和时间决定。

AWSLogs/account-id/WAFLogs/Region/web-acl-name/YYYY/MM/dd/HH/mm

在文件夹内,日志文件名遵循类似的格式:

account-id_waflogs_Region_web-acl-name_timestamp_hash.log.gz

文件夹结构和日志文件名中使用的时间规范符合时间戳格式规范YYYYMMddTHHmmZ

下面显示了 Amazon S3 存储桶中的一个名为的存储桶的示例日志文件DOC-EXAMPLE-BUCKET。Amazon Web Services 账户 为 11111111111。网络 ACL 是TEST-WEBACL,区域是us-east-1

s3://DOC-EXAMPLE-BUCKET/AWSLogs/11111111111/WAFLogs/us-east-1/TEST-WEBACL/2021/10/28/19/50/11111111111_waflogs_us-east-1_TEST-WEBACL_20211028T1950Z_e0ca43b5.log.gz
注意

用于Amazon WAF记录的存储段名称必须以您想要的任何后缀开头,aws-waf-logs-并且可以以任何后缀结尾。

将日志发布到 Amazon S3 的权限

为 Amazon S3 存储桶fice for Amazon S3 存储桶fice 进行以下权限设置。这些权限是在您使用Amazon WAF完全访问管理策略之一时为您设置的,AWSWAFConsoleFullAccess或者AWSWAFFullAccess。如果您想更细致地管理对您的日志记录和Amazon WAF资源的访问权限,可以自己设置这些权限。有关管理权限的信息,请参阅 IAM 用户指南中的Amazon资源访问管理。有关Amazon WAF托管策略的信息,请参阅Amazon适用于 Amazon WAF 的托管策略

以下权限允许您更改 Web ACL 日志配置和配置向 Amazon S3 存储桶传输日志。这些权限必须附加到您用来管理的用户Amazon WAF。

注意

设置下面列出的权限时,您可能会在Amazon CloudTrail日志中看到错误,表明访问被拒绝,但Amazon WAF登录的权限是正确的。

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "wafv2:PutLoggingConfiguration", "wafv2:DeleteLoggingConfiguration" ], "Resource":[ "*" ], "Effect":"Allow", "Sid":"LoggingConfigurationAPI" }, { "Sid":"WebACLLogDelivery", "Action":[ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*", "Effect":"Allow" }, { "Sid":"WebACLLoggingS3", "Action":[ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": [ "arn:aws:s3:::aws-waf-logs-example-bucket" ], "Effect":"Allow" } ] }

当允许对所有Amazon资源执行操作时,策略中将指明"Resource"设置为"*"。这意味着允许对每个操作支持的所有Amazon资源执行操作。例如,该操作wafv2:PutLoggingConfiguration仅支持wafv2记录配置资源。

默认情况下,Amazon S3 ple Storage Service。只有存储桶拥有者才能访问存储桶和其中存储的对象。但是,存储桶拥有者可以通过编写访问策略来向其他资源和用户授予访问权限。

如果创建日志的用户拥有存储桶,则服务自动将以下策略附加到存储桶,以授予向它发布日志的日志权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket/AWSLogs/account-id/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } } ] }
注意

用于Amazon WAF记录的存储段名称必须以您想要的任何后缀开头,aws-waf-logs-并且可以以任何后缀结尾。

如果创建日志的用户不拥有存储桶,也没有存储桶的GetBucketPolicyPutBucketPolicy权限,日志创建操作会失败。在这种情况下,存储桶拥有者必须手动将上述策略添加到存储桶,并指定日志创建者的Amazon Web Services 账户 ID。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的如何添加 S3 存储桶策略? 如果存储桶从多个账户接收日志,则将Resource元素条目添加到每个账户的AWSLogDeliveryWrite策略声明。

例如,以下存储桶策略允许Amazon Web Services 账户111122223333将日志发布到名为的存储桶aws-waf-logs-doc-example

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket/AWSLogs/111122223333/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } } ] }

Amazon S3 日志文件访问权限

除了必需的存储桶策略之外,Amazon S3 使用访问控制列表 (ACL) 管理对日志创建的日Amazon WAF志文件的访问。默认情况下,存储桶拥有者对每个日志文件具有 FULL_CONTROL 权限。如果日志传输拥有者与存储桶拥有者不同,则没有权限。日志传输账户具有 READWRITE 权限。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的访问控制列表 (ACL) 概述

日志文件是压缩文件。如果您使用 Amazon S3 控制台打开这些文件,Amazon S3 会解压缩并显示这些记录。如果您下载日志文件,则必须对其进行解压才能查看记录。