AWS WAF ログを一元化されたログ記録アカウントの Amazon S3 バケットに送信するにはどうすればよいですか?

最終更新日: 2022 年 6 月 28 日

AWS WAF ログを、別のアカウントまたは AWS リージョンの Amazon Simple Storage Service (Amazon S3) バケットに送信するにはどうすればよいですか?

簡単な説明

一元化されたログ記録アカウントの Amazon S3 バケットに AWS WAF ログを送信するには、次の操作実行します。

  1. 選択した AWS リージョンで、aws-waf-logs- で始まるバケット名を持つ一元化されたログ記録アカウントに S3 バケットを作成します。
  2. ソースアカウントからのログの配信を許可するバケットポリシーを作成して、S3 バケットに追加します。
  3. AWS CLI コマンド put-logging-configuration を使用して、一元化されたログ記録アカウントの S3 バケットにログを送信するようにウェブアクセスコントロールリスト (ウェブ ACL) を設定します。

解決方法

選択したリージョンの一元化されたログ記録アカウントに S3 バケットを作成する

  1. 選択した AWS リージョンの一元化されたログ記録アカウントに S3 バケットを作成します。
  2. プレフィックス 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 のログ記録先

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?