目次

  1. 1.はじめに
  2. 2.通知の仕組み
  3. 3.お客様環境での確認ポイントと間違い例
  4. 4.その他の間違い例
  5. 5.おわりに

1. はじめに

WafCharm AWS 版を利用しているお客様は WafCharm のレポート機能/通知機能も合わせて設定することがあるかと思います。レポート機能は月次で生成しているため、設定に問題があることに気づくのが次の月となることもあります。
今回は設定時の確認ポイントと間違い例を解説させていただきます。

設定マニュアル
AWS WAF Classic マニュアル:
https://docs.wafcharm.com/manual/classic_aws_waf/aws_waf_classic_reporting_and_notification_JA.pdf
AWS WAF マニュアル:
https://docs.wafcharm.com/manual/new_aws_waf/new_aws_waf_reporting_and_notification_JA.pdf

2022/05/17追記
ーー
2022/05/11 「直接 S3 に WAF ログを出力する設定」に対応しました。
設定マニュアル
https://docs.wafcharm.com/manual/new_aws_waf/new_aws_waf_reporting_and_notification_JA_S3_version.pdf

Kinesis Data Firehose を経由する設定から、直接 S3 に出力する設定にする場合は以下のブログを参照してください。
https://www.wafcharm.com/blog/about-wafcharm-report-change-to-s3-direct-jp/

WAF ログが転送がされない場合の確認ポイントは Kinesis Data Firehose 経由と同様となりますので、直接 S3 に出力する設定の場合でも、引き続き本ブログを参照してください。
ーー

2. 通知の仕組み

以下がレポート機能/通知機能で必要な WAF ログ転送の仕組みとなります。

auto

お客様環境で実施する処理は以下となります。

1. Kinesis Data Firehose を利用してお客様環境の S3 に WAF ログ出力
2. Lambda にて S3 に WAF ログが出力されたことをトリガーに WafCharm 環境へ該当WAF ログを put

3. お客様環境での確認ポイントと間違い例

確認ポイントは大きく分けて二つとなります。
・WAF ログが出力されているか。
・Lambda の処理が意図された通り実行されたか。

3-1. WAF ログが出力されているか。

WAF ログが出力されているかの確認は対象の S3 にファイルが作成されているかを確認してください。
ファイルが出力されていない場合は AWS WAF ログ出力設定に意図した Kinesis Data Firehose が紐づいているか再確認し、修正してください。

3-2. Lambda の処理が意図された通り実行されたか。

Lambda の処理が意図された通り実行されたかについては、実行ログを確認してください。

確認方法
CloudWatch -> Log groups(ロググループ) -> /aws/lambda/Lambda関数名(マニュアルの場合:wafcharm-waflog)
-> 最新(一番上)の Log Stream を選択 -> ERROR のメッセージ有無確認

ERROR があった場合は内容を確認の上で修正してください。

Lambda 関連でよくある間違いは Lambda 用に設定する IAM の権限となります。
Resources の記載間違いが多く、 S3bucket 名の前に”/”を入れてしまっていることや最後に”∗”が入っていないなどがあります。単純に指定したリソースが間違っていることもあるので確認してみてください。
正しい例   :“arn:aws:s3:::csc-waftest/waflog/∗”
間違っている例:“arn:aws:s3:::/csc-waftest/waflog/∗”
        “arn:aws:s3:::csc-waftest/waflog/ _

また、Put 側の権限に指定する Resources は WafCharm 側の Resources を指定する必要がありますが、誤ってお客様側の S3 を指定してしまってることもありますので確認してみてください。

上記のような IAM の権限を編集した場合、動作中の Lambda に変更点が反映されない可能性があるため、 index.js の最終行に空白行の追加等を行い、再度デプロイを実施してください。

4. その他の間違い例

AWS WAF は現在二つのバージョンがあります。バージョン毎にレポート機能/通知機能の手順は分かれていますが、誤ったバージョンで設定している場合があります。
具体的な差分は Lambda で設定する index.js にバージョンで差分があります。
異なるバージョンで WafCharm を利用する場合は注意してください。

Kinesis Data Firehose の設定で S3 bucket prefix を指定する際、意図せず前後に半角スペースが入っている場合があります。
非常にわかりづらいケースではございますが、権限や各種設定に問題がなさそうということでしたら、念の為確認することを推奨します。

5. おわりに

具体例を含め、よくあるミスを解説させていただきました。
上記確認の上で上手くいかないといったことがあれば、対象の Web ACL と Kinesis Data Firehose の Delivery Stream Name をサポート窓口までお伝えください。取得状況を確認させていただきます。

2022/05/17追記
ーー
直接 S3 に WAF ログを出力している場合は、ログファイルのプレフィックスと対象の Web ACL ID をサポート窓口までお伝えください。
ーー