AWS WAF ログを、別のアカウントまたは AWS リージョンの Amazon Simple Storage Service (Amazon S3) バケットに送信するにはどうすればよいですか?
簡単な説明
一元化されたログ記録アカウントの Amazon S3 バケットに AWS WAF ログを送信するには、次の操作実行します。
- 選択した AWS リージョンで、aws-waf-logs- で始まるバケット名を持つ一元化されたログ記録アカウントに S3 バケットを作成します。
- ソースアカウントからのログの配信を許可するバケットポリシーを作成して、S3 バケットに追加します。
- AWS CLI コマンド put-logging-configuration を使用して、一元化されたログ記録アカウントの S3 バケットにログを送信するようにウェブアクセスコントロールリスト (ウェブ ACL) を設定します。
解決方法
選択したリージョンの一元化されたログ記録アカウントに S3 バケットを作成する
- 選択した AWS リージョンの一元化されたログ記録アカウントに S3 バケットを作成します。
- プレフィックス aws-waf-logs- で始まるバケット名を入力します。
例: aws-waf-logs-example-bucket
バケットポリシーを作成して S3 バケットに追加する
S3 バケットに次の S3 バケットポリシーを追加します。
重要:
- aws:SourceAccount のアカウント ID を、このバケットにログを送信するソースアカウントのアカウント ID のリストに置き換えます。
- aws:SourceArn の ARN を、arn:aws:logs:*:source-account-id:* の形式で、このバケットにログを発行するソースリソースの ARN のリストに置き換えます。
- リソースの 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:*"
]
}
}
}
]
}
目的の S3 バケットにログを送信するようにウェブ ACL を設定する
AWS WAF ログを一元化されたログ記録アカウントの S3 バケットに送信するようにウェブ ACL を設定する必要があります。ウェブ ACL を設定するには、ウェブ ACL を所有するアカウントから次の AWS CLI コマンドを実行します。
重要:
- ResourceArn の値を、ウェブ ACL の ARN に置き換えます。
- LogDestinationConfigs の値を、一元化されたログ記録アカウントの S3 バケットの ARN に置き換えます。
- region を、ウェブ 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(Global) リージョンのウェブ ACL の場合は、前述のコマンドで AWS リージョンとして us-east-1 を使用します。
ウェブ ACL ごとに、前述の put-logging-configuration コマンドを繰り返します。
関連情報
Amazon Simple Storage Service のログ記録先