AWS WAF のオーバーサイズウェブリクエストコンポーネント - AWS WAF、AWS Firewall Manager、AWS Shield Advanced、および AWS Shield ネットワークセキュリティディレクター

AWS WAF の新しいコンソールエクスペリエンスのご紹介

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、「更新されたコンソールエクスペリエンスを使用する」を参照してください。

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 は最初に評価されるようになります。詳細については、「ルールの優先度を設定する」を参照してください。