AWS WAF で「特定HTTPヘッダーの有無」を判定する方法を教えてください

AWS WAF で「特定HTTPヘッダーの有無」を条件にするルールの設定方法をご紹介します。
2024.04.18

困っていたこと

AWS WAF のルール設定で、リクエストの特定HTTPヘッダーの値をもとにアクセス制御ができることは認識しています。
しかしながら「その特定HTTPヘッダー自体が存在するか否か」を条件に設定する方法はありますか?

どう対応すればいいの?

リクエストにおける特定HTTPヘッダーの有無については、AWS WAF のサイズ制約ルールステートメントを用いることで実現できます。
具体的には「該当するHTTPヘッダーのサイズが1バイト以上であれば、そのHTTPヘッダーが存在する」というルールで判定します。

例えば「X-Forwarded-For ヘッダーが付与されているリクエストにのみアクセスを許可したい」という場合、以下のようなルール設定で実現できます。

If a request matches the statement

Statement
Inspect: Single header
Header field name: X-Forwarded-For
Match type: Size greater than or equal to
Size in bytes: 1
Text transformation: None

Then

Action: Allow

参考資料