LoginSignup
0
0

More than 1 year has passed since last update.

AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KBを超えるリクエストに失敗した件について

Last updated at Posted at 2022-12-16

はじめに

みなさん、こんにちは。AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KB以上のリクエストがブロックされてしまうといった事象に遭遇したので、今回はこちらの事象の原因と解決方法について紹介していきたいと思います。

リクエストがブロックされた原因

WAFのログを確認すると、そのままズバリAWS WAFのコアルールセット(CRS)マネージドルールグループ AWSManagedRulesCommonRuleSetSizeRestrictions_BODYルールに合致したため8KB(8,192バイト)を超えるBodyを持つリクエストがブロックされていることがわかりました。

余談ですが、なぜ8KBという制限が存在するかというとそもそもAWS WAFで検査できるBodyは最初の8KBという制限があります(おそらく性能の観点で)。そのため、8KBを超えるBodyを持つ(=全文検査ができない)リクエストをデフォルトでブロックしているのではないか、と個人的には考えております。

01-aws-managed-rule.png

解決方法

次の例のようにSizeRestrictions_BODYルールのデフォルトアクションをBlockからCountへ変更することによって、8KBを超えるBodyを持つリクエストがブロックされず、ちゃんと扱えるようになりました。めでたしめでたし。

02-override-action.png

余談、Terraformで設定する場合は

managed_rule_group_statementブロック内のexcluded_ruleブロックへ除外したいルールの名前を定義することで実装することが可能です。本定義を利用したサンプルコードを書いてみましたので興味のある方は次の記事をご参照いただければと思います。

終わりに

API Gatewayを扱ってきた方からするとなにを今更いってんだか…といった内容かもしれませんが、こんな情報でも誰かの役に経っていただければ幸いです。なお、今回ご紹介したマネージドルールを抜きにしても、AWS WAFにはBody以外にもHeaderやCookieにもサイズや数の制限がありますので、それを超えるリクエストを扱う場合は次のサイトを参考にしていただければと思います。

以上、AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KBを超えるリクエストがブロックされた事象の原因と解決方法のご紹介でした。


  • AWS は、米国その他の諸国における Amazon.com, Inc. またはその関連会社の商標です。
  • その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0