如何将 AWS WAF 日志发送到集中式日志记录账户中的 Amazon S3 存储桶?

上次更新日期:2022 年 6 月 28 日

如何将 AWS WAF 日志发送到不同账户或 AWS 区域中的 Amazon Simple Storage Service(Amazon S3)存储桶?

简短描述

要将 AWS WAF 日志发送到集中式日志记录账户中的 Amazon S3 存储桶,请执行以下操作:

  1. 在所选 AWS 区域中的集中式日志记录账户中创建一个 S3 存储桶,该账户的存储桶名称以 aws-waf-logs- 开头。
  2. 创建存储桶策略并将其添加到 S3 存储桶,以允许从源账户传输日志。
  3. 使用 AWS CLI 命令 put-logging-configuration 配置您的 Web 访问控制列表(Web ACL),以便将日志发送到集中式日志记录账户中的 S3 存储桶。

解决方法

在所选区域的集中式日志记录账户中创建 S3 存储桶

  1. 在集中式日志记录账户中为所选 AWS 区域创建 S3 存储桶
  2. 输入以前缀 aws-waf-logs- 开头的存储桶名称。
    例如:aws-waf-logs-example-bucket

创建存储桶策略并将其添加到 S3 存储桶

将以下 S3 存储桶策略添加到 S3 存储桶:

重要提示:

  • aws:SourceAccount 中的账户 ID 替换为将向此存储桶发送日志的源账户的账户 ID 列表。
  • aws:SourceArn 中的 ARN 替换为将向此存储桶发布日志的源资源 ARN 列表,格式为 arn:aws:logs:*:source-account-id:*
  • 资源中的 S3 存储桶名称 aws-waf-logs-example-bucket 替换为您的 S3 存储桶的名称。
{
  "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/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": [
            "111111111111",
            "222222222222"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:*:111111111111:*",
            "arn:aws:logs:*:222222222222:*"
          ]
        }
      }
    },
    {
      "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": [
            "111111111111",
            "222222222222"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:*:111111111111:*",
            "arn:aws:logs:*:222222222222:*"
          ]
        }
      }
    }
  ]
}

配置 Web ACL 以将日志发送到所需的 S3 存储桶

您必须配置您的 Web ACL,以便将 AWS WAF 日志发送到集中式日志记录账户的 S3 存储桶。要配置您的 Web ACL,请从拥有 Web ACL 的账户运行以下 AWS CLI 命令:

重要提示:

  • ResourceArn 值替换为您的 Web ACL ARN。
  • LogDestinationConfigs 值替换为集中式日志记录账户中 S3 存储桶的 ARN。
  • region 替换为您的 Web ACL 所在的 AWS 区域。
aws wafv2 put-logging-configuration --logging-configuration ResourceArn=arn:aws:wafv2:eu-west-1: 111111111111:regional/webacl/testing/b4a768c9-4895-4f35-9354-3049ab8acc29,LogDestinationConfigs=arn:aws:s3:::aws-waf-logs-example-bucket --region eu-west-1

注意:对于 CloudFront(全球)区域中的 Web ACL,请在前面的命令中使用 us-east-1 作为 AWS 区域。

对每个 Web ACL 重复前面的 put-logging-configuration 命令。


Amazon Simple Storage Service 日志记录目的地

这篇文章对您有帮助吗?


您是否需要账单或技术支持?