如何配置 AWS WAF 全面日志记录,以便在 Amazon S3 中存储日志?

上次更新时间:2019 年 11 月 19 日

我已设置过 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 和 Amazon S3 必须在相同区域内运行。

解决方法

创建 Kinesis Data Firehose

  1. 打开 Kinesis 控制台
  2. 在导航栏中,选择您要用于存储 web ACL 的区域
  3. 在导航窗格中,选择 Data Firehose
  4. 选择创建传输流
  5. 传输流名称中输出您的传输流的名称。该名称必须以 aws-waf-logs- 作为开头,并以您选择的后缀结尾。例如,aws-waf-logs-demo
  6. 中保留默认选中的直接 PUT 或其他源。然后选择下一步
  7. 保留以下设置的默认选项:
    记录转换(已禁用)
    记录格式转换(已禁用)
  8. 选择下一步
  9. 目的地中选择 Amazon S3
  10. S3 目的地部分选择新建
  11. S3 存储桶名称输入一个名称。为了保持统一,您可以使用与在第 4 步中创建的传输流相同的名称。
  12. 选择用于存储 AWS WAF 日志的区域
  13. 选择创建 S3 存储桶
  14. (可选)配置一个 S3 前缀和一个错误前缀
    注:自定义前缀有助于与其他日志共享您的存储桶。
  15. 选择下一步
  16. 您可以保留以下设置的默认选项:
    缓冲区大小 (5)
    缓冲间隔 (300)
    S3 压缩(已禁用)
    S3 加密(已禁用)
  17. (可选)配置标签(如有需要)。
  18. IAM 角色中,选择新建或选择
  19. 角色名称中,输入一个描述性名称。例如,firehose_to_s3-waflogs-demo
  20. 选择允许,然后选择下一步
  21. 检查配置,然后选择创建传输流

关联 AWS WAF 和 Kinesis Data Firehose

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中选择 Web ACL
  3. 筛选中选择要创建 web ACL 的区域。
  4. 从结果列表选择相关的 web ACL,然后选择日志记录
  5. 选择启用日志记录
  6. Amazon Kinesis Data Firehose 中,选择您在上述步骤中创建的传输流。
  7. (可选)配置任何应从日志编辑的字段。
  8. 选择创建。所有 AWS WAF 日志均存储在 Amazon S3 存储桶中以供分析。

注:一条 AWS WAF 日志相当于一条 Kinesis Data Firehose 记录。如果您每秒通常接收 10,000 个请求,则在 Kinesis Data Firehose 中设置每秒 10,000 条记录限制,以启用完整日志记录。否则,AWS WAF 不会记录所有日志。如需更多信息,见Amazon Kinesis Data Firehose 限制


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?