
AWSのWAFのマネージドルールあるあるにはまってしまった備忘録
今日は業務中に自社システムで画像データのアップロードができないという障害が発生しました。本人確認用の画像を送信しようとした際、システム側では問題が見当たらず、原因究明に時間がかかりました。
障害の概要
発生した問題: jQueryのAjax通信を使って非同期で画像データを送信しようとしたが、通信が失敗。
インフラの変更点: 最近、ECSへの不正なリクエスト攻撃を防ぐためにWAF(Web Application Firewall)を導入していました。
WAF導入による影響
WAF導入後、通信がブロックされていた可能性が浮上しました。WAFはウェブアプリケーションを保護するためのファイアウォールですが、設定が不十分だと正規の通信もブロックされてしまうことがあります。特に、WAFのマネージドルールの設定は慎重に行う必要があります。
問題点
WAFのログがCloudWatchやS3に出力されていなかった
ログの設定が有効化されていなかったため、障害のトラブルシューティングが困難に。
WAFのマネージドルールがデフォルトのままだった
導入時の設定で、デフォルトの閾値がそのまま適用されていたため、画像アップロードなど特定のリクエストがブロックされていた。
RateLimitの問題はなかった
リクエストのレート制限は問題なさそうでしたが、マネージドルールによる通信のブロックが発生していました。
解決策と学び
最終的に、WAFのルールに紐づいているAWSリソースを一時的に解除することで、障害は解消されました。今回の障害を通して、以下の点を学びました。
WAFのログ設定を有効化する重要性
ログをCloudWatchやS3に出力する設定を事前にしておけば、問題の原因をより早く特定できたはずです。
画像アップロードに対するWAFのブロックルール
画像アップロードのリクエストは、WAFのルールでブロックされやすいことを学びました。特にAjaxを使った非同期通信では、HTTPリクエストの形式によってブロックされることがあります。
WAFのマネージドルールの適切な設定
デフォルトのルール設定ではなく、サービスに応じてカスタマイズする必要があります。