WAF ログが S3 バケットに送信されないのは何故でしょうか?

2023.08.22

困っていた内容

WAFのログがS3バケットに配信されません。原因として何が考えられるでしょうか?

具体的な解決方法

AWS WAF のログが S3 バケットに配信されない場合、主に以下の原因が考えられます。

1. 設定の不足:

  • WAF のログ記録が有効化されているか確認してください。
  • 正しい S3 バケットを指定しているか確認してください。
  • WAF と S3 バケットが同じリージョンにあることを確認してください。

2. 権限の問題:

  • 設定者が WAF から S3 バケットにログを書き込むための必要な権限を持っているか確認してください。

Amazon Simple Storage Service - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

Amazon S3 にログを発行するための全般的なアクセス許可... AWS WAF フルアクセスマネージドポリシーのいずれか (AWSWAFConsoleFullAccess または AWSWAFFullAccess) を使用すると、これらの許可が設定されます。

3. S3 バケットの設定:

  • ログ配信先のバケット名が命名規則に従っているか確認してください。

Amazon Simple Storage Service - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

AWS WAF ログ記録用のバケット名は aws-waf-logs- で始まる必要があります。

  • バケットの公開設定やバケットポリシーを確認し、WAF からのアクセスが許可されているか確認してください。

4. ログデータが存在するか:

  • WAF ルールに合致するトラフィックがない場合、ログにデータが出力されません。
  • WAF のログ設定を確認し、フィルターで配信すべきログを除外していないか確認してください。

5. KMS キーの問題:

  • バケットに KMS キーを使用して暗号化を適用している場合、WAF がそのキーを使用してデータを暗号化/復号する権限が必要です。

Amazon Simple Storage Service - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

ログ記録先でKMSキーによるサーバー側暗号化を使用する場合、AWS WAF に KMS キーの使用許可が必要。以下のキーポリシーをKMSキーに追加することで、WAFがログファイルをS3バケットに書き込めます。

{
    "Sid": "Allow AWS WAF to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "delivery.logs.amazonaws.com"
        ]
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}

参考情報