如何配置全面的 AWS WAF 日志记录以便将日志存储在 Amazon S3 中?
上次更新日期:2021 年 3 月 30 日
我已设置 AWS WAF,但现在我需要配置全面的日志记录,以便在 Amazon Simple Storage Service (Amazon S3) 中存储日志。该如何操作?
简短描述
您可以通过发往相同区域中 Amazon S3 存储桶的 Amazon Kinesis Data Firehose 流启用 Web 访问控制列表 (Web ACL) 上的全面日志记录。要执行此操作,您必须使用三项 AWS 服务:
- AWS WAF 用于创建日志
- Kinesis Data Firehose 用于接收日志
- Amazon S3 用于存储日志
注意:AWS WAF 和 Kinesis Data Firehose 必须在相同区域内运行。
解决方法
创建 Kinesis Data Firehose
- 打开 Kinesis 控制台。
- 在导航栏中,选择您要用于存储 Web ACL 的 Region (区域)。
- 在导航窗格中,选择 Data Firehose。
- 选择 Create Delivery Stream (创建传输流)。
- 在 Delivery stream name (传输流名称) 中输出您的传输流的名称。该名称必须以 aws-waf-logs- 开头,并以您选择的后缀结尾。例如,aws-waf-logs-demo。
- 在 Source (源) 中,保留默认选中的 Direct PUT or other sources (直接 PUT 或其他源)。然后选择 Next (下一步)。
- 保留以下设置的默认选项:
Record transformation (记录转换)(禁用)
Record format conversion (记录格式转换)(禁用) - 选择 Next (下一步)。
- 在 Destination (目的地) 中选择 Amazon S3。
- 在 S3 destination (S3 目的地) 部分选择 Create new (新建)。
- 在 S3 bucket name (S3 存储桶名称) 中输入一个名称。为了保持统一,您可以使用与在第 4 步中创建的传输流相同的名称。
- 选择用于存储 AWS WAF 日志的 Region (区域)。
- 选择 Create S3 bucket (创建 S3 存储桶)。
- (可选)配置一个 S3 prefix (S3 前缀) 和一个 Error prefix (错误前缀)。
注意:自定义前缀有助于与其他日志共享您的存储桶。 - 选择 Next (下一步)。
- 您可以保留以下设置的默认选项:
Buffer size (缓冲区大小) (5)
Buffer interval (缓冲区间隔) (300)
S3 压缩(已禁用)
S3 encryption (S3 加密)(禁用) - (可选)配置标签(如有需要)。
- 在 IAM role (IAM 角色)中,选择 Create new or choose (新建或选择)。
- 在 Role Name (角色名称) 中,输入一个描述性名称。例如,firehose_to_s3-waflogs-demo。
- 选择 Allow (允许),然后选择 Next (下一步)。
- 检查配置,然后选择 Create delivery stream (创建传输流)。
关联 AWS WAF 和 Kinesis Data Firehose
- 打开 AWS WAF 控制台。
- 在导航窗格中选择 Web ACL。
- 在 Filter (筛选) 中选择创建 Web ACL 的区域。
- 从结果列表选择相关的 Web ACL,然后选择 Logging (日志记录)。
- 选择 Enable Logging (启用日志记录)。
- 在 Amazon Kinesis Data Firehose 中,选择您在上述步骤中创建的传输流。
- (可选)配置任何应从日志编辑的字段。
- 选择 Create (创建)。所有 AWS WAF 日志均存储在 Amazon S3 存储桶中以供分析。
注意:一条 AWS WAF 日志相当于一条 Kinesis Data Firehose 记录。如果您每秒通常接收 10000 个请求,则在 Kinesis Data Firehose 中设置每秒 10000 条记录限制,以启用完整日志记录。否则,AWS WAF 不会记录所有日志。有关更多信息,请参阅 Amazon Kinesis Data Firehose 配额。