AWS WAF でのオーバーサイズウェブリクエストコンポーネントの処理 - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

AWS WAF でのオーバーサイズウェブリクエストコンポーネントの処理

このセクションでは、AWS WAF でウェブリクエストのボディ、ヘッダー、および cookie を検査する際のサイズ制限を管理する方法を説明します。

AWS WAF は、ウェブリクエストコンポーネント本文、ヘッダー、または cookie の非常に大きなコンテンツの検査をサポートしていません。基盤となるホストサービスには、検査用に AWS WAF に転送する数とサイズの制限があります。例えば、ホストサービスは 200 個を超えるヘッダーを AWS WAF に送信しません。したがって、205 個のヘッダーを持つウェブリクエストの場合、AWS WAF は最後の 5 個のヘッダーを検査できません。

AWS WAF でウェブリクエストが保護されたリソースに進むことが許可されると、ウェブリクエスト全体が送信されます。これには、AWS WAF で検査できた、数とサイズの制限外にあるコンテンツも含まれます。

コンポーネント検査のサイズ制限

コンポーネント検査のサイズ制限は次のとおりです。

  • Body および JSON Body – Application Load Balancer とAWS AppSync の場合、AWS WAF はリクエストの最初の 8 KB のボディを検査できます。CloudFront、API Gateway、Amazon Cognito 、App Runner、Verified Access の場合、AWS WAF がデフォルトで最初の 16 KB を検査でき、ウェブ ACL 設定で制限を最大 64 KB まで引き上げることができます。詳細については、「AWS WAF のボディ検査サイズ制限の管理」を参照してください。

  • Headers – AWS WAF は、リクエストヘッダーの最初の 8 KB (8,192 バイト) まで、および最初の 200 個のヘッダーまでを検査できます。コンテンツは、最初の制限に達するまで、AWS WAF での検査に使用できます。

  • Cookies – AWS WAF は、リクエスト Cookie の最初の 8 KB (8,192 バイト) まで、および最初の 200 個の Cookie までを検査できます。コンテンツは、最初の制限に達するまで、AWS WAF での検査に使用できます。

ルールステートメントのオーバーサイズの処理オプション

これらのリクエストコンポーネントタイプのいずれかを検査するルールステートメントを記述するときは、オーバーサイズコンポーネントの処理方法を指定します。オーバーサイズの処理では、ルールで検査するリクエストコンポーネントがサイズ制限を超過しているときにウェブリクエストを処理する方法を AWS WAF に指示します。

オーバーサイズコンポーネントを処理するためのオプションは次のとおりです。

  • Continue – ルール検査基準に従って、リクエストコンポーネントを通常どおり検査します。AWS WAF は、サイズ制限内のリクエストコンポーネントのコンテンツを検査します。

  • Match – ウェブリクエストをルールステートメントと一致するものとして扱います。AWS WAF では、ルールの検査基準に対してリクエストを評価せずに、ルールアクションをリクエストに適用します。

  • No match – ウェブリクエストを、ルールの検査基準に照らして評価することなく、ルールステートメントと一致しないものとして処理します。AWS WAF は、一致しないルールの場合と同様に、ウェブ ACL 内の残りのルールを使用して、ウェブリクエストの検査を続行します。

AWS WAF コンソールで、これらの処理オプションのいずれかを選択する必要があります。コンソールの外では、デフォルトのオプションは Continue です。

Block に設定されたアクションを含むルールで Match オプションを使用する場合、そのルールは、検査したコンポーネントがオーバーサイズであるリクエストをブロックします。その他の設定では、リクエストの最終的な処理は、ウェブ ACL 内の他のルールの設定や、ウェブ ACL のデフォルトのアクション設定など、さまざまな要因によって異なります。

ユーザーが所有していないルールグループでのオーバーサイズの処理

コンポーネントのサイズと数の制限は、ウェブ ACL で使用するすべてのルールに適用されます。これには、マネージドルールグループ内および別のアカウントと共有しているルールグループ内にある、使用しているが管理されていないルールが含まれます。

ユーザーが管理していないルールグループを使用する場合、ルールグループに制限されたリクエストコンポーネントを検査するルールがあっても、そのルールではオーバーサイズのコンテンツが必要な方法で処理されない場合があります。AWS マネージドルールでオーバーサイズコンポーネントを管理する方法については、「AWS マネージドルールのルールグループのリスト」を参照してください。他のルールグループの詳細については、ルールグループプロバイダーにお問い合わせください。

ウェブ ACL 内のオーバーサイズコンポーネントを管理するためのガイドライン

ウェブ ACL でオーバーサイズのコンポーネントを処理する方法は、リクエストコンポーネントのコンテンツの予想サイズ、ウェブ ACL のデフォルトリクエスト処理、ウェブ ACL 内の他のルールがリクエストと一致して処理する方法など、さまざまな要因によって異なります。

オーバーサイズのウェブリクエストコンポーネントを管理するための一般的なガイドラインは、以下のとおりです。

  • オーバーサイズのコンポーネントコンテンツを含む一部のリクエストを許可する必要がある場合は、可能な場合は、それらのリクエストのみを明示的に許可するルールを追加します。同じコンポーネントタイプを検査するウェブ ACL 内の他のルールより先に実行されるように、これらのルールの優先度を上げます。この方法では、AWS WAF を使用して、保護されたリソースに渡すことができるオーバーサイズコンポーネントのコンテンツ全体は検査できません。

  • 他のすべてのリクエストでは、次のように、制限を超えるリクエストをブロックすることで、余計なバイトが通過するのを防ぐことができます。

    • ルールとルールグループ – サイズ制限のあるコンポーネントを検査するルールで、制限を超過するリクエストをブロックするようにオーバーサイズの処理を設定します。例えば、ルールで特定のヘッダーコンテンツを含むリクエストをブロックする場合、オーバーサイズのヘッダーコンテンツを持つリクエストと一致するようにオーバーサイズの処理を設定できます。別の例として、ウェブ ACL によりデフォルトでリクエストがブロックされ、かつルールで特定のヘッダーコンテンツが許可されている場合、オーバーサイズのヘッダーコンテンツを持つすべてのリクエストと一致しないように、ルールのオーバーサイズ処理を設定できます。

    • 管理していないルールグループ – 管理していないルールグループでオーバーサイズのリクエストコンポーネントを許可しないようにするには、リクエストコンポーネントタイプを検査して制限を超えるリクエストをブロックする別のルールを追加します。ウェブ ACL でそのルールがルールグループより先に実行されるように、ルールの優先度を上げます。例えば、ウェブ ACL で本文検査ルールを実行する前に、オーバーサイズの本文コンテンツを含むリクエストをブロックできます。次の手順では、このタイプのルールを追加する方法について説明します。

オーバーサイズのウェブリクエストコンポーネントのブロック

ウェブ ACL にルールを追加して、オーバーサイズのコンポーネントを使用したリクエストをブロックできます。

オーバーサイズのコンテンツをブロックするルールを追加するには
  1. ウェブ ACL を作成または編集するときは、ルール設定で、[Add rules] (ルールを追加)、[Add my own rules and rule groups] (独自のルールとルールグループを追加)、[Rule builder] (ルールビルダー)、[Rule visual editor] (ルールビジュアルエディタ) の順に選択します。ウェブ ACL の作成または編集に関するガイダンスについては、「AWS WAF でのウェブトラフィックメトリクスの表示」を参照してください。

  2. ルールの名前を入力し、[Type] (タイプ) 設定を [Regular rule] (通常のルール) のままにします。

  3. 次の一致設定をデフォルトから変更します。

    1. [Statement] (ステートメント) の [Inspect] (検査) で、ドロップダウンを開き、必要なウェブリクエストコンポーネント ([Body] (本文)、[Headers] (ヘッダー)、[Cookies] (cookie) のいずれか) を選択します。

    2. [Match type] (一致タイプ) で、[Size greater than] (次より大きいサイズ:) を選択します。

    3. [サイズ] で、コンポーネントタイプの最小サイズ以上の数値を入力します。ヘッダーと Cookie の場合は、8192 を入力します。Application Load Balancer または AWS AppSync ウェブ ACL では、ボディに 8192 を入力します。CloudFront、API Gateway、Amazon Cognito 、App Runner、または Verified Access ウェブ ACL のボディで、デフォルトのボディサイズ制限を使用している場合は、16384 を入力します。それ以外の場合は、ウェブ ACL のために定義したボディサイズ制限を入力します。

    4. [Oversize handling] (オーバーサイズ処理) で、[Match] (一致) を選択します。

  4. [Action] (アクション) で、[Block] (ブロック) を選択します。

  5. [Add Rule] (ルールの追加) を選択します。

  6. ルールを追加したら、[Set rule priority] (ルールの優先度の設定) ページで、同じコンポーネントタイプを検査するウェブ ACL 内のルールまたはルールグループよりも上に移動します。これにより、新しいルールの優先順位の数値設定が低くなり、AWS WAF は最初に評価されるようになります。詳細については、「ウェブ ACL でのルール優先度の設定」を参照してください。