リクエストコンポーネントオプション - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リクエストコンポーネントオプション

このセクションでは、検査のために指定できるウェブリクエストのコンポーネントについて説明します。ウェブリクエスト内のパターンを検索する一致ルールステートメントのリクエストコンポーネントを指定します。これらのタイプのステートメントには、文字列一致、正規表現一致、サイズ制約、インSQLジェクション攻撃ステートメントが含まれます。リクエストコンポーネント設定の使用方法については、「一致ルールステートメント」で個々のルールステートメントを参照してください。

特に明記されていない限り、ウェブリクエストにルールステートメントで指定されたリクエストコンポーネントがない場合、 はリクエストをルール基準に一致しないものとして AWS WAF 評価します。

注記

リクエストコンポーネントは、それを必要とするルールステートメントごとに 1 つずつ指定します。リクエストの複数のコンポーネントを検査するには、コンポーネントごとにルールステートメントを作成します。

AWS WAF コンソールとAPIドキュメントには、以下の場所にあるリクエストコンポーネント設定のガイダンスが記載されています。

  • コンソールのルールビルダー – 通常のルールタイプの [Statement] (ステートメント) 設定で、[Request components] (コンポーネントをリクエスト) の下の [Inspect] (検査) ダイアログで検査するコンポーネントを選択します。

  • API ステートメントの内容FieldToMatch

このセクションの残りの部分では、ウェブリクエストの検査対象部分のオプションについて説明します。

HTTP 方法

リクエストの HTTPメソッドを検査します。HTTP メソッドは、 POSTや など、ウェブリクエストが保護対象リソースに実行を要求しているオペレーションのタイプを示しますGET

単一ヘッダー

リクエスト内の単一の名前付きヘッダーが検査されます。

このオプションでは、User-AgentReferer などのヘッダー名を指定します。名前と一致する文字列は、大文字と小文字を区別しません。

すべてのヘッダー

すべてのリクエストヘッダー (cookie を含む) を検査します。フィルターを適用して、すべてのヘッダーのサブセットを検査できます。

このオプションでは、次の仕様を指定します。

  • 一致パターン – inspection 用のヘッダーのサブセットを取得するために使用するフィルター。 は、ヘッダーキーでこれらのパターン AWS WAF を探します。

    一致パターン設定は、次のいずれかになります。

    • [All] (すべて) – すべてのキーに一致します。すべてのヘッダーのルール検査基準を評価します。

    • [Excluded headers] (除外されるヘッダー) – ここで指定した文字列のいずれとも一致しないキーを持つヘッダーのみを検査します。キーと一致する文字列は大文字と小文字に区別されません。

    • [Included headers] (含まれるヘッダー) – ここで指定した文字列のいずれかに一致するキーを持つヘッダーのみを検査します。キーと一致する文字列は大文字と小文字に区別されません。

  • 一致範囲 – がルール検査基準で検査 AWS WAF するヘッダーの部分。[キー][値]、または [すべて] を指定して、キーと値の両方で一致するものがあるかどうかを検査することができます。

    [すべて] では、キーで一致するもの、および値で一致するものを見つける必要はありません。キー、値、またはその両方で一致するものを見つける必要があります。キーと値で一致するものを見つけるようにするには、論理 AND ステートメントを使用して、キーを検査する一致ルールと値を検査する一致ルールの 2 つを組み合わせます。

  • オーバーサイズ処理 — AWS WAF が検査 AWS WAF できるよりも大きいヘッダーデータを持つリクエストを処理する方法。 は、リクエストヘッダーの最初の 8 KB (8,192 バイト) まで、および最初の 200 個のヘッダーまで検査 AWS WAF できます。コンテンツは、最初の制限に達する AWS WAF まで検査できます。検査を続行するか、検査をスキップするかを選択できます。検査をスキップする場合、リクエストがルールに一致するとマークするか一致しないとマークするかを選択できます。オーバーサイズコンテンツの処理の詳細については、「でのオーバーサイズリクエストコンポーネントの処理 AWS WAF」を参照してください。

ヘッダーの順序

が検査のために AWS WAF 受け取るウェブリクエストに表示される順序で、リクエストのヘッダー名のリストを含む文字列を検査します。 AWS WAF は文字列を生成し、それを フィールドとして使用して、検査のコンポーネントを照合します。 は、文字列内のヘッダー名をコロンで AWS WAF 区切り、スペースを追加しません。例えば、 ですhost:user-agent:accept:authorization:referer

このオプションでは、次の仕様を指定します。

  • オーバーサイズ処理 — が検査 AWS WAF できる数よりも多い、または大きいヘッダーデータを持つリクエストを が処理 AWS WAF する方法。 は、リクエストヘッダーの最初の 8 KB (8,192 バイト) まで、および最初の 200 個のヘッダーまで検査 AWS WAF できます。コンテンツは、最初の制限に達する AWS WAF まで検査できます。使用可能なヘッダーの検査を続行するか、検査をスキップするかを選択できます。検査をスキップする場合、リクエストがルールに一致するか一致しないかをマークします。オーバーサイズコンテンツの処理の詳細については、「でのオーバーサイズリクエストコンポーネントの処理 AWS WAF」を参照してください。

cookie

すべてのリクエスト cookie を検査します。フィルターを適用して、すべての cookie のサブセットを検査できます。

このオプションでは、次の仕様を指定します。

  • [Match patterns] (一致パターン) – 検査用の cookie のサブセットを取得するために使用するフィルター。 AWS WAF は、cookie キーでこれらのパターンを検索します。

    一致パターン設定は、次のいずれかになります。

    • [All] (すべて) – すべてのキーに一致します。すべての cookie のルール検査基準を評価します。

    • [Excluded cookies] (除外される cookie) – ここで指定した文字列のいずれとも一致しないキーを持つ cookie のみを検査します。キーの文字列一致は大文字と小文字が区別され、完全に一致する必要があります。

    • [Included cookies] (含まれる cookie) – ここで指定した文字列のいずれかに一致するキーを持つ cookie のみを検査します。キーの文字列一致は大文字と小文字が区別され、完全に一致する必要があります。

  • 一致範囲 – がルール検査基準で検査 AWS WAF する必要がある Cookie の部分。キーと値の両方に、[Keys] (キー)、[Values] (値)、または [All] (すべて) を指定できます。

    [すべて] では、キーで一致するもの、および値で一致するものを見つける必要はありません。キー、値、またはその両方で一致するものを見つける必要があります。キーと値で一致するものを見つけるようにするには、論理 AND ステートメントを使用して、キーを検査する一致ルールと値を検査する一致ルールの 2 つを組み合わせます。

  • オーバーサイズ処理 — AWS WAF が検査 AWS WAF できるサイズよりも大きい Cookie データを持つリクエストを処理する方法。 は、リクエスト Cookie の最初の 8 KB (8,192 バイト) まで、および最初の 200 個の Cookie まで検査 AWS WAF できます。コンテンツは、最初の制限に達する AWS WAF まで検査できます。検査を続行するか、検査をスキップするかを選択できます。検査をスキップする場合、リクエストがルールに一致するとマークするか一致しないとマークするかを選択できます。オーバーサイズコンテンツの処理の詳細については、「でのオーバーサイズリクエストコンポーネントの処理 AWS WAF」を参照してください。

URI パス

リソースURLを識別する の部分を検査します/images/daily-ad.jpg。例えば、。詳細については、「Uniform Resource Identifier (URI): Generic Syntax」を参照してください。

このオプションでテキスト変換を使用しない場合、 AWS WAF は を正規化せず、リクエストでクライアントから受信したとおりURIに検査します。テキスト変換については、「テキスト変換オプション」を参照してください。

JA3 フィンガープリント

リクエストのJA3フィンガープリントを検査します。

注記

JA3 フィンガープリント検査は、Amazon CloudFront ディストリビューションと Application Load Balancer でのみ使用できます。

JA3 フィンガープリントは、受信リクエストの TLS Client Hello から派生した 32 文字のハッシュです。このフィンガープリントは、クライアントTLSの設定の一意の識別子として機能します。 AWS WAF は、計算に十分な TLS Client Hello 情報を持つ各リクエストについて、このフィンガープリントを計算してログに記録します。この情報は、ほとんどすべてのウェブリクエストに含まれています。

クライアントのJA3フィンガープリントを取得する方法

ウェブACLログからクライアントのリクエストのJA3フィンガープリントを取得できます。 AWS WAF がフィンガープリントを計算できる場合は、それをログに含めます。フィールドのログ記録については、「ログフィールド」を参照してください。

ルールステートメントの要件

JA3 フィンガープリントは、指定した文字列と完全に一致するように設定された文字列一致ステートメント内でのみ検査できます。文字列一致ステートメント仕様のログからJA3フィンガープリント文字列を指定して、同じTLS設定を持つ将来のリクエストと一致させます。文字列一致ルールステートメントの詳細については、「文字列一致ルールステートメント」を参照してください。

このルールステートメントにはフォールバック動作を指定する必要があります。フォールバック動作は、 がJA3フィンガープリント AWS WAF を計算できない場合にウェブリクエスト AWS WAF に割り当てる一致ステータスです。一致を選択した場合、 AWS WAF はリクエストをルールステートメントに一致するものとして処理し、ルールアクションをリクエストに適用します。一致しないことを選択した場合、 はリクエストをルールステートメントと一致しないものとして AWS WAF 処理します。

この一致オプションを使用するには、ウェブACLトラフィックをログに記録する必要があります。詳細については、「AWS WAF ウェブ ACL トラフィックのログ記録」を参照してください。

クエリ文字列

? 文字の後にURL表示されている の部分を検査します。

注記

クロスサイトスクリプティングの一致ステートメントについては、[Query string] (クエリ文字列) ではなく、[All query parameters] (すべてのクエリパラメータ) を選択することをお勧めします。すべてのクエリパラメータを選択すると、基本コストWCUsに 10 が追加されます。

Single query parameter (単一クエリパラメータ)

クエリ文字列の一部として定義した単一のクエリパラメータを検査します。 AWS WAF は、指定したパラメータの値を検査します。

このオプションでは、[Query argument] (クエリ引数) も指定します。例えば、 URLが の場合www.xyz.com?UserName=abc&SalesRegion=seattle、クエリ引数SalesRegionUserNameまたは を指定できます。引数の名前は最大 30 文字です。名前では大文字と小文字が区別されないため、UserName と指定すると、 AWS WAF では UserName のすべてのバリエーション (usernameUsERName など) と一致します。

クエリ文字列に、指定したクエリ引数の複数のインスタンスが含まれている場合、 はORロジックを使用して、一致のすべての値を AWS WAF 検査します。例えば、 ではwww.xyz.com?SalesRegion=boston&SalesRegion=seattle、 URL は bostonと に対して指定した名前 AWS WAF を評価しますseattle。いずれかが一致する場合、検査結果は一致となります。

All query parameters (すべてのクエリパラメータ)

リクエスト内のすべてのクエリパラメータが検査されます。これは、単一のクエリパラメータコンポーネントの選択に似ていますが、クエリ文字列内のすべての引数の値を AWS WAF 検査します。例えば、 URLが の場合www.xyz.com?UserName=abc&SalesRegion=seattle、 AWS WAF UserNameまたは の値が検査基準SalesRegionに一致すると、 は一致をトリガーします。

このオプションを選択すると、基本コストWCUsに 10 が追加されます。

[Body] (本文)

プレーンテキストとして評価されて、リクエストボディが検査されます。JSON コンテンツタイプJSONを使用して本文を として評価することもできます。

リクエストボディは、リクエストの一部で、リクエストヘッダーの直後に続く部分です。これには、フォームからのデータなど、ウェブリクエストに必要な追加データが含まれます。

  • コンソールで、[Content type] (コンテンツタイプ) の [Plain text] (プレーンテキスト) を選択して、[Request option] (リクエストオプション) の [Body] (本文) でこれを選択します。

  • ではAPI、ルールのFieldToMatch仕様で、リクエスト本文をプレーンテキストとして検査Bodyするように を指定します。

Application Load Balancer と の場合 AWS AppSync、 はリクエストの本文の最初の 8 KB を検査 AWS WAF できます。 CloudFront、APIGateway、Amazon CognitoApp Runner、Verified Access の場合、デフォルトでは最初の 16 KB を検査 AWS WAF でき、ウェブACL設定で制限を最大 64 KB まで増やすことができます。詳細については、「本文検査のサイズ制限の管理」を参照してください。

このコンポーネントタイプには、オーバーサイズの処理を指定する必要があります。オーバーサイズ処理は、 が検査 AWS WAF できるよりも大きい本文データを持つリクエストを が AWS WAF 処理する方法を定義します。検査を続行するか、検査をスキップするかを選択できます。検査をスキップする場合、リクエストがルールに一致するとマークするか一致しないとマークするかを選択できます。オーバーサイズコンテンツの処理の詳細については、「でのオーバーサイズリクエストコンポーネントの処理 AWS WAF」を参照してください。

解析された として本文を評価することもできますJSON。これに関する詳細については、次のセクションを参照してください。

JSON 本文

として評価されるリクエストボディを検査しますJSON。本文をプレーンテキストとして評価することもできます。

リクエストボディは、リクエストの一部で、リクエストヘッダーの直後に続く部分です。これには、フォームからのデータなど、ウェブリクエストに必要な追加データが含まれます。

  • コンソールで、コンテンツタイプの選択 を選択して、リクエストオプションの選択本文 でこれを選択しますJSON

  • ルールのFieldToMatch仕様APIで、 を指定しますJsonBody

Application Load Balancer と の場合 AWS AppSync、 はリクエストの本文の最初の 8 KB を検査 AWS WAF できます。 CloudFront、APIGateway、Amazon CognitoApp Runner、Verified Access の場合、デフォルトでは最初の 16 KB を検査 AWS WAF でき、ウェブACL設定で制限を最大 64 KB まで増やすことができます。詳細については、「本文検査のサイズ制限の管理」を参照してください。

このコンポーネントタイプには、オーバーサイズの処理を指定する必要があります。オーバーサイズ処理は、 が検査 AWS WAF できるよりも大きい本文データを持つリクエストを が AWS WAF 処理する方法を定義します。検査を続行するか、検査をスキップするかを選択できます。検査をスキップする場合、リクエストがルールに一致するとマークするか一致しないとマークするかを選択できます。オーバーサイズコンテンツの処理の詳細については、「でのオーバーサイズリクエストコンポーネントの処理 AWS WAF」を参照してください。

このオプションを選択すると、一致ステートメントの基本コストが 2 倍になりますWCUs。例えば、解析WCUsせずに一致ステートメントの基本コストが 5 JSON の場合、解析を使用するとコストが JSON 10 に倍増しますWCUs。

このオプションでは、次のセクションで説明するように、追加の仕様を指定します。

がJSON本文検査 AWS WAF を処理する方法

がウェブリクエストボディを として AWS WAF 検査する場合JSON、本文を解析し、インス AWS WAF ペクション用のJSON要素を抽出するステップを実行します。 は、設定の選択に従ってこれらのステップを実行します。

が AWS WAF 実行するステップを次に示します。

  1. 本文の内容を解析する - ウェブリクエスト本文の内容を AWS WAF 解析してインスペクション用のJSON要素を抽出します。本文の内容を解析するには最善を AWS WAF 尽くしますが、コンテンツのさまざまなエラー状態で解析が失敗する可能性があります。例としては、無効な文字、重複するキー、切り捨て、ルートノードがオブジェクトまたは配列ではないコンテンツなどがあります。

    本文解析フォールバック動作オプション AWS WAF は、JSON本文を完全に解析できなかった場合の動作を決定します。

    • なし (デフォルトの動作) - 解析エラーが発生した時点までのみコンテンツ AWS WAF を評価します。

    • 文字列として評価 - 本文をプレーンテキストとして検査します。 は、検査用に定義したテキスト変換とJSON検査基準を本文テキスト文字列 AWS WAF に適用します。

    • 一致 - ウェブリクエストをルールステートメントと一致するものとして扱います。 AWS WAF は、ルールアクションをリクエストに適用します。

    • 一致なし - ウェブリクエストをルールステートメントと一致しないものとして処理します。

    注記

    このフォールバック動作は、 がJSON文字列の解析中にエラー AWS WAF を検出したときにのみトリガーされます。

    解析では が完全に検証されない JSON

    AWS WAF 解析では入力JSON文字列が完全に検証されないため、無効な であっても解析が成功する可能性がありますJSON。

    例えば、 はエラーJSONなしで次の無効な を AWS WAF 解析します。

    • カンマ不足: {"key1":"value1""key2":"value2"}

    • コロン不足: {"key1":"value1","key2""value2"}

    • 余分なコロン: {"key1"::"value1","key2""value2"}

    解析は成功したが、結果が完全に有効ではないなどの場合JSON、評価の以降のステップの結果は異なる場合があります。抽出で一部の要素が欠落したり、ルール評価で予期しない結果が生じる可能性があります。アプリケーションで受信した を検証しJSON、JSON必要に応じて無効を処理することをお勧めします。

  2. JSON 要素を抽出する – 設定に従って検査するJSON要素のサブセット AWS WAF を識別します。

    • オプションJSON一致スコープは、 が検査JSON AWS WAF する 内の要素のタイプを指定します。

      キーと値の両方に、[Keys] (キー)、[Values] (値)、または [All] (すべて) を指定できます。

      [すべて] では、キーで一致するもの、および値で一致するものを見つける必要はありません。キー、値、またはその両方で一致するものを見つける必要があります。キーと値で一致するものを見つけるようにするには、論理 AND ステートメントを使用して、キーを検査する一致ルールと値を検査する一致ルールの 2 つを組み合わせます。

    • 検査するコンテンツオプションは、 AWS WAF 検査するサブセットに要素セットをフィルタリングする方法を指定します。

      いずれかを指定する必要があります。

      • フルJSONコンテンツ - すべての要素を評価します。

      • 含まれている要素のみ - パスが指定したJSONポインター基準に一致する要素のみを評価します。このオプションを使用して、 内のすべてのパスを指定しないでくださいJSON。代わりに、フルJSONコンテンツ を使用します。

        JSON ポインタ構文の詳細については、「Internet Engineering Task Force (IETF)」ドキュメントJavaScript 「Object Notation (JSON) Pointer」を参照してください。

        例えば、コンソールで次の内容を指定できます。

        /dogs/0/name /dogs/1/name

        API または ではCLI、以下を指定できます。

        "IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]

    例えば、検査するコンテンツ設定が含められる要素のみ で、含められる要素設定が であるとします/a/b

    次のJSON本文の例:

    { "a":{ "c":"d", "b":{ "e":{ "f":"g" } } } }

    が各JSON一致範囲設定を検査 AWS WAF する要素セットを以下に示します。含まれbている要素パスの一部であるキー は評価されないことに注意してください。

    • すべての : ef,、および g

    • キー: eおよび f

    • : g

  3. JSON 要素セットの検査 – 抽出されたJSON要素に指定したテキスト変換 AWS WAF を適用し、結果の要素セットをルールステートメントの一致基準と照合します。これは、他のウェブリクエストコンポーネントと同じ変換および評価動作です。抽出されたJSON要素のいずれかが一致する場合、ウェブリクエストはルールと一致します。