如何将 AWS WAF 日志发送到集中式日志记录账户中的 Amazon S3 存储桶?
上次更新日期:2022 年 6 月 28 日
如何将 AWS WAF 日志发送到不同账户或 AWS 区域中的 Amazon Simple Storage Service(Amazon S3)存储桶?
简短描述
要将 AWS WAF 日志发送到集中式日志记录账户中的 Amazon S3 存储桶,请执行以下操作:
- 在所选 AWS 区域中的集中式日志记录账户中创建一个 S3 存储桶,该账户的存储桶名称以 aws-waf-logs- 开头。
- 创建存储桶策略并将其添加到 S3 存储桶,以允许从源账户传输日志。
- 使用 AWS CLI 命令 put-logging-configuration 配置您的 Web 访问控制列表(Web ACL),以便将日志发送到集中式日志记录账户中的 S3 存储桶。
解决方法
在所选区域的集中式日志记录账户中创建 S3 存储桶
- 在集中式日志记录账户中为所选 AWS 区域创建 S3 存储桶。
- 输入以前缀 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 日志记录目的地