

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

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

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

# AWS WAF ルール
<a name="waf-rules"></a>

このセクションでは、 AWS WAF ルールとその仕組みについて説明します。

 AWS WAF ルールは、HTTP(S) ウェブリクエストを検査する方法と、検査基準に一致するリクエストに対して実行するアクションを定義します。ルールは、ルールグループまたは保護パック (ウェブ ACL) のコンテキストでのみ定義されます。

ルール自体は に存在しません AWS WAF 。これらは AWS リソースではなく、Amazon リソースネーム (ARNs) もありません。ルールが定義されているルールグループまたは保護パック (ウェブ ACL) に含まれる名前を使用してルールにアクセスします。ルールを管理し、他の保護パック (ウェブ ACL) にコピーするには、そのルールが含まれているルールグループまたは保護パック (ウェブ ACL) の JSON ビューを使用します。また、保護パック (ウェブ ACLs) とルールグループで使用できる AWS WAF コンソールルールビルダーを使用して管理することもできます。

**ルール名**  
各ルールには名前が必要です。`AWS` で始まる名前や、他のサービスによって管理されているルールグループまたはルールに使用されている名前は避けてください。「[他のサービスによって提供されるルールグループを識別する](waf-service-owned-rule-groups.md)」を参照してください。

**注記**  
ルールの名前を変更し、ルールのメトリクス名に変更を反映する場合は、メトリクス名も更新する必要があります。ルール名を変更しても、ルールのメトリクス名は自動的に更新 AWS WAF されません。ルールの JSON エディターを使用して、コンソールでルールを編集するときに、メトリック名を変更できます。API や、保護パック (ウェブ ACL) またはルールグループの定義に使用する JSON リストを使用して、両方の名前を変更することもできます。

**ルールステートメント**  
各ルールには、ルールがウェブリクエストを検査する方法を定義するルールステートメントも必要です。ルールステートメントには、ルールとステートメントのタイプに応じて、ネストされたステートメントを任意の深さに含めることができます。一部のルールステートメントは、条件のセットを採用します。例えば、IP セット一致ルールに最大 10,000 個の IP アドレスまたは IP アドレス範囲を指定できます。

次のような基準を検査するルールを定義できます。
+ 悪意のある可能性が高いスクリプト。攻撃者は、ウェブアプリケーションの脆弱性を悪用できるスクリプトを埋め込みます。これはクロスサイトスクリプティング (XSS) と呼ばれます。
+ リクエストの発生元の IP アドレスまたはアドレス範囲。
+ リクエスト送信元の国または地理的場所。
+ クエリ文字列など、リクエストの指定した部分の長さ。
+ 悪意のある可能性が高い SQL コード。攻撃者は、ウェブリクエストに悪意のある SQL コードを埋め込むことで、データベースからデータを抽出しようとします。これは SQL インジェクション と呼ばれます。
+ リクエストに表示される文字列。例えば、`User-Agent` ヘッダーに表示される値、またはクエリ文字列に表示されるテキスト文字列です。正規表現を使用してこれらの文字列を指定することもできます。
+ 保護パック (ウェブ ACL) の以前のルールがリクエストに追加したラベル。

上記のリストにあるようなウェブリクエスト検査基準を持つステートメントに加えて、 は、ルール内のステートメントを組み合わせるために`NOT`使用する `AND`、`OR`、および の論理ステートメント AWS WAF をサポートします。

例えば、攻撃者からの最近のリクエストに基づいて、次のネストされたステートメントを組み合わせた論理 `AND` ステートメントを使用してルールを作成できます。
+ リクエストが 192.0.2.44 から発生した。
+ リクエストの `User-Agent` ヘッダーに `BadBot` 値が含まれる。
+ それらのクエリ文字列には、SQL などのコードが含まれる。

この場合、上位のレベルの `AND` に一致するようにするには、ウェブリクエストはすべてのステートメントに一致する必要があります。

**Topics**
+ [でのルールアクションの使用 AWS WAF](waf-rule-action.md)
+ [でのルールステートメントの使用 AWS WAF](waf-rule-statements.md)
+ [での一致ルールステートメントの使用 AWS WAF](waf-rule-statements-match.md)
+ [での論理ルールステートメントの使用 AWS WAF](waf-rule-statements-logical.md)
+ [でのレートベースのルールステートメントの使用 AWS WAF](waf-rule-statement-type-rate-based.md)
+ [でのルールグループルールステートメントの使用 AWS WAF](waf-rule-statements-rule-group.md)

# でのルールアクションの使用 AWS WAF
<a name="waf-rule-action"></a>

このセクションでは、ルールアクションの仕組みについて説明します。

ルールアクションは、ウェブリクエストがルールで定義された条件と一致する場合に AWS WAF 、ウェブリクエストの処理を指示します。オプションで、各ルールアクションにカスタム動作を追加できます。

**注記**  
ルールアクションは、終了アクションまたは非終了アクションである場合があります。終了アクションは、リクエストの保護パック (ウェブ ACL) 評価を停止し、保護されたアプリケーションへのリクエストの継続を許可またはブロックします。

ルールアクションのオプションは以下のとおりです。
+ **Allow** – AWS WAF リクエストを保護された AWS リソースに転送して処理および応答できるようにします。これは終了アクションです。定義したルールでは、リクエストを保護されたリソースに転送する前に、カスタムヘッダーを挿入できます。
+ **Block** – リクエストを AWS WAF ブロックします。これは終了アクションです。デフォルトでは、保護された AWS リソースは HTTP `403 (Forbidden)`ステータスコードで応答します。定義したルールでは、応答をカスタマイズできます。がリクエストを AWS WAF ブロックすると、Blockアクション設定によって、保護されたリソースがクライアントに返すレスポンスが決まります。
+ **Count** – リクエストを AWS WAF カウントしますが、許可するかブロックするかは決定しません。これは非終了アクションです。 AWS WAF は保護パック (ウェブ ACL) の残りのルールの処理を継続します。定義したルールでは、リクエストにカスタムヘッダーを挿入し、他のルールで一致するラベルを追加できます。
+ **CAPTCHA および Challenge** – CAPTCHA パズルとサイレントチャレンジ AWS WAF を使用して、リクエストがボットから来ていないことを確認し、トークン AWS WAF を使用して最近成功したクライアントレスポンスを追跡します。

  CAPTCHA パズルとサイレントチャレンジは、ブラウザが HTTPS エンドポイントにアクセスしている場合にのみ実行できます。トークンを取得するには、ブラウザクライアントが安全なコンテキストで実行されている必要があります。
**注記**  
CAPTCHA または Challenge ルールアクションを 1 つのルールで使用、あるいはルールグループでルールアクションのオーバーライドとして使用すると、追加料金が請求されます。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

  これらのルールアクションは、リクエスト内のトークンの状態に応じて、終了アクションまたは非終了アクションである場合があります。
  + **有効で有効期限が切れていないトークンの非終了** – トークンが有効で、設定された CAPTCHA またはチャレンジイミュニティ時間に従って有効期限が切れていない場合、 は Count action のようなリクエスト AWS WAF を処理します。 AWS WAF は引き続き、保護パック (ウェブ ACL) の残りのルールに基づいてウェブリクエストを検査します。Count 設定と同様に、定義したルールでは、リクエストに挿入するカスタムヘッダーを使用してこれらのアクションを設定したり (オプション)、他のルールが照合できるラベルを追加したりできます。
  + 無効**または期限切れのトークンのブロックされたリクエストで終了** – トークンが無効であるか、指定されたタイムスタンプの有効期限が切れている場合、 は Block アクションと同様にウェブリクエストの検査 AWS WAF を終了し、リクエストをブロックします。 AWS WAF その後、 はカスタムレスポンスコードでクライアントに応答します。CAPTCHA には、リクエスト内容はクライアントのブラウザが処理できることが示された場合、 AWS WAF は人間のクライアントとボットを区別するように設計された JavaScript インタースティシャルで CAPTCHA パズルを送信します。Challenge アクションの場合、 は、通常のブラウザをボットによって実行されているセッションと区別するように設計されたサイレントチャレンジで JavaScript インタースティシャル AWS WAF を送信します。

  詳細については、「[CAPTCHA および Challengeの AWS WAF](waf-captcha-and-challenge.md)」を参照してください。

リクエストとレスポンスをカスタマイズする方法については、「[でカスタマイズされたウェブリクエストとレスポンス AWS WAF](waf-custom-request-response.md)」を参照してください。

一致するリクエストへのラベルの追加については、「[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)」を参照してください。

保護パック (ウェブ ACL) とルール設定の相互作用の詳細については、「[のルールとルールグループで保護パック (ウェブ ACLs) を使用する AWS WAF](web-acl-processing.md)」を参照してください。

# でのルールステートメントの使用 AWS WAF
<a name="waf-rule-statements"></a>

このセクションでは、ルールステートメントの仕組みについて説明します。

ルールステートメントは、ウェブリクエストを検査 AWS WAF する方法を に指示するルールの一部です。がウェブリクエストで検査基準 AWS WAF を見つけると、ウェブリクエストは ステートメントと一致すると表示されます。すべてのルールステートメントは、ステートメントのタイプに応じて、何をどのように検索するかを指定します。

のすべてのルール AWS WAF には 1 つの最上位ルールステートメントがあり、他のステートメントを含めることができます。ルールステートメントは非常にシンプルにすることができます。例えば、ウェブリクエストを検査するための送信国のセットを提供するステートメントを作成したり、保護パック (ウェブ ACL) でルールグループを参照するだけのルールステートメントを保持したりできます。ルールステートメントはまた、非常に複雑にすることもできます。例えば、他の多くのステートメントを論理 AND、OR、および NOT ステートメントと組み合わせたステートメントを作成できます。

ほとんどのルールでは、一致するリクエストにカスタム AWS WAF ラベルを追加できます。 AWS マネージドルールルールルールグループのルールは、一致するリクエストにラベルを追加します。ルールが追加するラベルは、保護パック (ウェブ ACL) および AWS WAF ログとメトリクスの後半で評価されるルールへのリクエストに関する情報を提供します。ラベル付けの詳細については、[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md) と [ラベル一致ルールステートメント](waf-rule-statement-type-label-match.md) を参照してください。

**ルールステートメントのネスト**  
AWS WAF は、多くのルールステートメントのネストをサポートしていますが、すべてではありません。例えば、ルールグループステートメントを別のステートメント内にネストすることはできません。スコープダウンステートメントや論理ステートメントなど、一部のシナリオではネストを使用する必要があります。ルールステートメントのリストとそれに続くルールの詳細では、各カテゴリとルールのネスト機能と要件について説明されています。

コンソール内のルールのビジュアルエディタでは、ルールステートメントの 1 レベルのネストしかサポートされません。例えば、論理 AND または OR ルール内に多くのタイプのステートメントをネストできますが、他の AND または OR ルールをネストすることはできません。2 レベルのネストが必要になるからです。複数のレベルのネストを実装するには、コンソールの JSON ルールエディタまたは API を使用して、JSON でルール定義を指定します。

**Topics**
+ [でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)
+ [でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)
+ [で再利用可能なエンティティを参照する AWS WAF](waf-rule-statement-reusable-entities.md)

# でのルールステートメント設定の調整 AWS WAF
<a name="waf-rule-statement-fields"></a>

このセクションでは、ウェブリクエストのコンポーネントを検査するルールステートメントで指定できる設定について説明します。使用の詳細については、「[での一致ルールステートメントの使用 AWS WAF](waf-rule-statements-match.md)」で個別のルールステートメントを参照してください。

これらのウェブリクエストコンポーネントのサブセットは、カスタムリクエスト集約キーとしてレートベースのルールで使用することもできます。詳細については、「[でのレートベースのルールの集計 AWS WAF](waf-rule-statement-type-rate-based-aggregation-options.md)」を参照してください。

リクエストコンポーネントの設定では、コンポーネントタイプ自体と、コンポーネントタイプに応じる追加オプションを指定します。例えば、テキストを含むコンポーネントタイプを検査する場合、検査する前にテキスト変換を適用できます。

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

**Contents**
+ [でコンポーネントをリクエストする AWS WAF](waf-rule-statement-fields-list.md)
  + [HTTP メソッド](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-http-method)
  + [単一ヘッダー](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-header)
  + [すべてのヘッダー](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-headers)
  + [ヘッダーの順序](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-header-order)
  + [cookie](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-cookies)
  + [URI フラグメント](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-fragment)
  + [URI パス](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-path)
  + [JA3 フィンガープリント](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja3-fingerprint)
  + [JA4 フィンガープリント](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja4-fingerprint)
  + [クエリ文字列](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-query-string)
  + [Single query parameter (単一クエリパラメータ)](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-query-param)
  + [All query parameters (すべてのクエリパラメータ)](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-all-query-params)
  + [[Body] (本文)](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-body)
  + [JSON 本文](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-json-body)
+ [で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)
+ [での HTTP/2 擬似ヘッダーの検査 AWS WAF](waf-rule-statement-request-components-for-http2-pseudo-headers.md)
+ [でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)

# でコンポーネントをリクエストする AWS WAF
<a name="waf-rule-statement-fields-list"></a>

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

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

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

 AWS WAF コンソールと API のドキュメントには、次の場所のリクエストコンポーネント設定に関するガイダンスが記載されています。
+ コンソールの**ルールビルダー** – 通常のルールタイプの **[Statement]** (ステートメント) 設定で、**[Request components]** (コンポーネントをリクエスト) の下の **[Inspect]** (検査) ダイアログで検査するコンポーネントを選択します。
+ **API ステートメントのコンテンツ** – `FieldToMatch`

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

**Topics**
+ [HTTP メソッド](#waf-rule-statement-request-component-http-method)
+ [単一ヘッダー](#waf-rule-statement-request-component-single-header)
+ [すべてのヘッダー](#waf-rule-statement-request-component-headers)
+ [ヘッダーの順序](#waf-rule-statement-request-component-header-order)
+ [cookie](#waf-rule-statement-request-component-cookies)
+ [URI フラグメント](#waf-rule-statement-request-component-uri-fragment)
+ [URI パス](#waf-rule-statement-request-component-uri-path)
+ [JA3 フィンガープリント](#waf-rule-statement-request-component-ja3-fingerprint)
+ [JA4 フィンガープリント](#waf-rule-statement-request-component-ja4-fingerprint)
+ [クエリ文字列](#waf-rule-statement-request-component-query-string)
+ [Single query parameter (単一クエリパラメータ)](#waf-rule-statement-request-component-single-query-param)
+ [All query parameters (すべてのクエリパラメータ)](#waf-rule-statement-request-component-all-query-params)
+ [[Body] (本文)](#waf-rule-statement-request-component-body)
+ [JSON 本文](#waf-rule-statement-request-component-json-body)

## HTTP メソッド
<a name="waf-rule-statement-request-component-http-method"></a>

リクエストの HTTP メソッドが検査されます。HTTP メソッドは、ウェブリクエストが保護対象リソースに対して実行を求めている操作のタイプ (`POST` または `GET` など) を示しています。

## 単一ヘッダー
<a name="waf-rule-statement-request-component-single-header"></a>

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

このオプションでは、`User-Agent` や `Referer` などのヘッダー名を指定します。名前の文字列一致では大文字と小文字は区別されず、リクエストヘッダーとルールの両方から先頭と末尾のスペースをトリミングした後に実行されます。

## すべてのヘッダー
<a name="waf-rule-statement-request-component-headers"></a>

すべてのリクエストヘッダー (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](waf-oversize-request-components.md)」を参照してください。

## ヘッダーの順序
<a name="waf-rule-statement-request-component-header-order"></a>

が検査のために 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](waf-oversize-request-components.md)」を参照してください。

## cookie
<a name="waf-rule-statement-request-component-cookies"></a>

すべてのリクエスト 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](waf-oversize-request-components.md)」を参照してください。

## URI フラグメント
<a name="waf-rule-statement-request-component-uri-fragment"></a>

**注記**  
フラグメント検査は、CloudFront ディストリビューションと Application Load Balancer でのみ利用可能です。

「\$1」記号の後に続く URL の一部を検査し、\$1section2 など、リソースに関する追加情報を提供します。詳細については、「[Uniform Resource Identifier (URI): 一般的な構文](https://tools.ietf.org/html/rfc3986#section-3)」を参照してください。

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

**ルールステートメントの要件**  
このルールステートメントにはフォールバック動作を指定する必要があります。フォールバック動作は、URI にフラグメントがないか、関連するサービスが Application Load Balancer または CloudFront でない場合にウェブリクエスト AWS WAF に割り当てる一致ステータスです。一致を選択した場合、 はリクエストをルールステートメントに一致するものとして AWS WAF 処理し、ルールアクションをリクエストに適用します。一致しないことを選択した場合、 はリクエストをルールステートメントと一致しないものとして AWS WAF 扱います。

## URI パス
<a name="waf-rule-statement-request-component-uri-path"></a>

URL 内でリソースを識別する部分 (`/images/daily-ad.jpg` など) が検査されます。詳細については、「[Uniform Resource Identifier (URI): 一般的な構文](https://tools.ietf.org/html/rfc3986#section-3)」を参照してください。

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

## JA3 フィンガープリント
<a name="waf-rule-statement-request-component-ja3-fingerprint"></a>

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

**注記**  
JA3 フィンガープリント検査は、Amazon CloudFront ディストリビューションと Application Load Balancer でのみ利用可能です。

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

**クライアントの JA3 フィンガープリントを取得する方法**  
クライアントリクエストの JA3 フィンガープリントは、保護パック (ウェブ ACL) ログからを取得できます。 AWS WAF がフィンガープリントを計算できる場合は、それをログに含めます。フィールドのログ記録については、「[保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)」を参照してください。

**ルールステートメントの要件**  
JA3 フィンガープリントは、指定した文字列と完全に一致するように設定されている文字列一致ステートメント内のみで検査することができます。同じ TLS 設定を持つ将来のリクエストと一致させるために、文字列一致ステートメントの仕様のログから JA3 フィンガープリント文字列を指定します。文字列一致ルールステートメントの詳細については、「[文字列一致ルールステートメント](waf-rule-statement-type-string-match.md)」を参照してください。

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

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

## JA4 フィンガープリント
<a name="waf-rule-statement-request-component-ja4-fingerprint"></a>

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

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

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

**クライアントの JA4 フィンガープリントを取得する方法**  
クライアントリクエストの JA4 フィンガープリントは、保護パック (ウェブ ACL) ログからを取得できます。 AWS WAF がフィンガープリントを計算できる場合は、それをログに含めます。フィールドのログ記録については、「[保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)」を参照してください。

**ルールステートメントの要件**  
JA4 フィンガープリントは、指定した文字列と完全に一致するように設定された文字列一致ステートメント内でのみ検査できます。同じ TLS 設定を持つ将来のリクエストと一致するように、文字列一致ステートメント仕様のログから JA4 フィンガープリント文字列を指定します。文字列一致ルールステートメントの詳細については、「[文字列一致ルールステートメント](waf-rule-statement-type-string-match.md)」を参照してください。

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

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

## クエリ文字列
<a name="waf-rule-statement-request-component-query-string"></a>

URL 内で `?` 文字の後に続く部分 (ある場合) が検査されます。

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

## Single query parameter (単一クエリパラメータ)
<a name="waf-rule-statement-request-component-single-query-param"></a>

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

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

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

## All query parameters (すべてのクエリパラメータ)
<a name="waf-rule-statement-request-component-all-query-params"></a>

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

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

## [Body] (本文)
<a name="waf-rule-statement-request-component-body"></a>

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

リクエストボディは、リクエストの一部で、リクエストヘッダーの直後に続く部分です。これには、フォームからのデータなど、ウェブリクエストに必要な追加データが含まれます。
+ コンソールで、**[Content type]** (コンテンツタイプ) の **[Plain text]** (プレーンテキスト) を選択して、**[Request option]** (リクエストオプション) の **[Body]** (本文) でこれを選択します。
+ API では、ルールの `FieldToMatch` の指定で、リクエストボディをプレーンテキストとして検査するように `Body` を指定します。

Application Load Balancer および の場合 AWS AppSync、 はリクエストの本文の最初の 8 KB を検査 AWS WAF できます。CloudFront、API Gateway、Amazon Cognito、App Runner、Verified Access では、デフォルトで最初の 16 KB を検査 AWS WAF でき、保護パック (ウェブ ACL) 設定で制限を最大 64 KB まで増やすことができます。詳細については、「[でのボディ検査の管理に関する考慮事項 AWS WAF](web-acl-setting-body-inspection-limit.md)」を参照してください。

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

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

## JSON 本文
<a name="waf-rule-statement-request-component-json-body"></a>

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

リクエストボディは、リクエストの一部で、リクエストヘッダーの直後に続く部分です。これには、フォームからのデータなど、ウェブリクエストに必要な追加データが含まれます。
+ コンソールで、**[Content type]** (コンテンツタイプ) の **[JSON]** を選択して、**[Request option]** (リクエストオプション) の **[Body]** (本文) でこれを選択します。
+ API で、ルールの `FieldToMatch` の指定で `JsonBody` を指定します。

Application Load Balancer および の場合 AWS AppSync、 はリクエストの本文の最初の 8 KB を検査 AWS WAF できます。CloudFront、API Gateway、Amazon Cognito、App Runner、Verified Access では、デフォルトで最初の 16 KB を検査 AWS WAF でき、保護パック (ウェブ ACL) 設定で制限を最大 64 KB まで増やすことができます。詳細については、「[でのボディ検査の管理に関する考慮事項 AWS WAF](web-acl-setting-body-inspection-limit.md)」を参照してください。

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

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

このオプションでは、以下のセクションで説明されている通り追加の仕様を提供します。

**が JSON 本文検査 AWS WAF を処理する方法**  
は、ウェブリクエスト本文を JSON として AWS WAF 検査する場合、本文を解析し、検査用に JSON 要素を抽出するステップを実行します。 は、設定の選択に従ってこれらのステップ AWS WAF を実行します。

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

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

   オプションの**本文解析フォールバック動作**によって AWS WAF 、JSON 本文を完全に解析できなかった場合の動作が決まります。
   + **None (デフォルトの動作)** - 解析エラーが発生した時点までのみコンテンツ 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 を処理することをお勧めします。

1. **JSON 要素を抽出** – 設定に従って検査する JSON 要素のサブセット AWS WAF を識別します。
   + オプション **JSON 一致スコープ**は、 が検査 AWS WAF する JSON 内の要素のタイプを指定します。

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

     **[すべて]** では、キーで一致するもの、および値で一致するものを見つける必要はありません。キー、値、またはその両方で一致するものを見つける必要があります。キーと値で一致するものを見つけるようにするには、論理 `AND` ステートメントを使用して、キーを検査する一致ルールと値を検査する一致ルールの 2 つを組み合わせます。
   + **検査するコンテンツ**オプションは、 AWS WAF 検査するサブセットに設定された要素をフィルタリングする方法を指定します。

     いずれかを指定する必要があります。
     + **[完全な JSON コンテンツ]** – すべての要素を評価します。
     + **[含まれる要素のみ]** – パスが提供された JSON ポインタの基準に一致する要素のみを評価します。このオプションで JSON 内のすべてのパスを表示しないでください。**代わりに **[完全な JSON コンテンツ]** を使用してください。

       JSON ポインタ構文の詳細については、インターネットエンジニアリングタスクフォース (IETF) ドキュメントの「[JavaScript オブジェクト表記 (JSON) ポインタ](https://tools.ietf.org/html/rfc6901)」を参照してください。

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

       ```
       /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` は評価されないことを注意してください。
   + **すべて**: `e`、`f,` および `g`。
   + **キー **: `e` および `f`。
   + **値**: `g`。

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

# で転送された IP アドレスを使用する AWS WAF
<a name="waf-rule-statement-forwarded-ip-address"></a>

このセクションは、ウェブリクエストの IP アドレスを使用するルールステートメントに適用されます。デフォルトでは、 はウェブリクエストオリジンの IP アドレス AWS WAF を使用します。ただし、ウェブリクエストが 1 つ以上のプロキシまたはロードバランサーを通過する場合、ウェブリクエストの発信元には、クライアントの発信アドレスではなく、最後のプロキシのアドレスが含まれます。この場合、通常、発信元のクライアントアドレスは別の HTTP ヘッダーに転送されます。このヘッダーは通常 `X-Forwarded-For` (XFF) ですが、別のヘッダーにすることもできます。

**IP アドレスを使用するルールステートメント**  
IP アドレスを使用するルールステートメントは次のとおりです。
+ [IP セット一致](waf-rule-statement-type-ipset-match.md) - IP セットで定義されているアドレスと一致する IP アドレスを検査します。
+ [地理的一致](waf-rule-statement-type-geo-match.md) - IP アドレスを使用して発信元の国と地域を特定し、それを国のリストと照合します。
+ [ASN 一致](waf-rule-statement-type-asn-match.md) - IP アドレスを使用して AS 番号 (ASN) を判別し、ASN のリストに対して ASN を照合します。
+ [レートベースのルールステートメントの使用](waf-rule-statement-type-rate-based.md) - IP アドレスでリクエストを集約して、個々の IP アドレスがリクエストを過度に高いレートで送信しないようにできます。IP アドレスの集約は、単独で使用することも、他の集約キーと組み合わせて使用することもできます。

ウェブリクエストのオリジンを使用する代わりに、 `X-Forwarded-For` ヘッダーまたは別の HTTP ヘッダーのいずれかから、これらのルールステートメントに転送された IP アドレスを使用する AWS WAF ように に指示できます。仕様を指定する方法の詳細については、個別のルールステートメントタイプのガイダンスを参照してください。

**注記**  
ヘッダーがない場合、 はそのヘッダーを「一致なし」として使用するステートメント AWS WAF を評価します。NOT ステートメントを「一致なし」の結果で使用すると、 は評価を「一致 AWS WAF 」に変換します。ヘッダーが見つからない場合、フォールバック動作はトリガーされません。無効なヘッダー値のみがトリガーされます。

**フォールバック動作**  
転送された IP アドレスを使用する場合、リクエストに指定された位置に有効な IP アドレスがない場合 AWS WAF に がウェブリクエストに割り当てる一致ステータスを指定します。
+ **MATCH** - ウェブリクエストをルールステートメントに一致するものとして扱います。 はルールアクションをリクエスト AWS WAF に適用します。
+ **一致なし** - ウェブリクエストをルールステートメントと一致しないものとして処理します。

**AWS WAF Bot Control で使用される IP アドレス**  
Bot Control マネージドルールグループは、IP アドレスを使用してボットを検証します AWS WAF。Bot Control を使用し、プロキシまたはロードバランサーを介してルーティングするボットを検証した場合は、カスタムルールを使用して明示的に許可する必要があります。例えば、転送された IP アドレスを使用して検証済みボットを検出および許可するカスタム IP セット一致ルールを設定できます。ルールを使用して、さまざまな方法でボット管理をカスタマイズできます。説明と例については、「[AWS WAF ボットコントロール](waf-bot-control.md)」を参照してください。

**転送された IP アドレスの使用に関する一般的な考慮事項**  
転送された IP アドレスを使用する前に、次の一般的な注意事項に留意してください。
+ ヘッダーは途中でプロキシによって変更でき、プロキシはヘッダーをさまざまな方法で処理することがあります。
+ 攻撃者は、 AWS WAF 検査をバイパスしようとしてヘッダーの内容を変更する可能性があります。
+ ヘッダー内の IP アドレスは、形式が正しくないか、無効である可能性があります。
+ 指定したヘッダーは、リクエストにまったく存在しない可能性があります。

**で転送された IP アドレスを使用する際の考慮事項 AWS WAF**  
次のリストでは、転送された IP アドレスを で使用するための要件と注意点について説明します AWS WAF。
+ 単一のルールでは、転送された IP アドレス用に 1 つのヘッダーを指定できます。ヘッダーの仕様では、大文字と小文字は区別されません。
+ レートベースのルールステートメントでは、ネストされたスコープステートメントは、転送された IP 設定を継承しません。転送された IP アドレスを使用する各ステートメントの設定を指定します。
+ 地理的一致、ASN 一致、レートベースのルールの場合、 は ヘッダーの最初のアドレス AWS WAF を使用します。たとえば、ヘッダーに が含まれている場合、 は `10.1.1.1, 127.0.0.0, 10.10.10.10` AWS WAF を使用します。 `10.1.1.1`
+ IP セットの一致では、ヘッダーの最初のアドレス、最後のアドレス、または任意のアドレスのいずれと照合するかを指定します。指定した場合、 はヘッダー内のすべてのアドレスに一致がないか、最大 10 個のアドレス AWS WAF を検査します。ヘッダーに 10 個を超えるアドレスが含まれている場合、 は最後の 10 個 AWS WAF を検査します。
+ 複数のアドレスを含むヘッダーでは、アドレスの間にカンマ区切り文字を使用する必要があります。リクエストでカンマ以外の区切り文字が使用されている場合、 AWS WAF はヘッダーの IP アドレスの形式が正しくないとみなします。
+ ヘッダー内の IP アドレスが不正な形式であるか、または無効である場合、 AWS WAF は、転送された IP 設定で指定したフォールバック動作に従って、ウェブリクエストをルールに一致するか一致しないかを指定します。
+ 指定したヘッダーがリクエストに存在しない場合、 AWS WAF はリクエストにルールをまったく適用しません。つまり、 AWS WAF はルールアクションを適用せず、フォールバック動作も適用しません。
+ IP アドレス用に転送された IP ヘッダーを使用するルールステートメントでは、ウェブリクエストの発信元によって報告された IP アドレスは使用されません。

**で転送された IP アドレスを使用するためのベストプラクティス AWS WAF**  
転送された IP アドレスを使用する場合は、次のベストプラクティスを使用します。
+ 転送された IP 設定を有効にする前に、リクエストヘッダーの可能な状態をすべて慎重に検討してください。目的の動作を実現するには、複数のルールを使用する必要がある場合があります。
+ 複数の転送された IP ヘッダーを検査したり、ウェブリクエストの発信元と転送された IP ヘッダーを検査したりするには、IP アドレスのソースごとに 1 つのルールを使用します。
+ 無効なヘッダーを持つウェブリクエストをブロックするには、ブロックするようにルールアクションを設定し、転送された IP 設定のフォールバック動作を一致するように設定します。

**転送された IP アドレスの JSON の例**  
次の地理一致ステートメントは、発信元の国が `US` である IP が `X-Forwarded-For` ヘッダーに含まれている場合にのみ一致します。

```
{
  "Name": "XFFTestGeo",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "XFFTestGeo"
  },
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ],
      "ForwardedIPConfig": {
        "HeaderName": "x-forwarded-for",
        "FallbackBehavior": "MATCH"
      }
    }
  }
}
```

次のレートベースのルールは、`X-Forwarded-For` ヘッダーの最初の IP に基づいてリクエストを集約します。ルールは、ネストされた地理一致ステートメントに一致するリクエストのみをカウントし、地理一致ステートメントに一致するリクエストのみをブロックします。ネストされた地理一致ステートメントは、`X-Forwarded-For` ヘッダーを使用して、IP アドレスが `US` の発信元の国を示しているかどうかも判断します。示している場合、またはヘッダーが存在していても形式が間違っている場合、地理一致ステートメントは一致を返します。

```
{
  "Name": "XFFTestRateGeo",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "XFFTestRateGeo"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": "100",
      "AggregateKeyType": "FORWARDED_IP",
      "ScopeDownStatement": {
        "GeoMatchStatement": {
          "CountryCodes": [
            "US"
          ],
          "ForwardedIPConfig": {
            "HeaderName": "x-forwarded-for",
            "FallbackBehavior": "MATCH"
          }
        }
      },
      "ForwardedIPConfig": {
        "HeaderName": "x-forwarded-for",
        "FallbackBehavior": "MATCH"
      }
    }
  }
}
```

# での HTTP/2 擬似ヘッダーの検査 AWS WAF
<a name="waf-rule-statement-request-components-for-http2-pseudo-headers"></a>

このセクションでは、 AWS WAF を使用して HTTP/2 擬似ヘッダーを検査する方法について説明します。

HTTP/2 トラフィックをサポートする保護された AWS リソースは、検査 AWS WAF のために HTTP/2 擬似ヘッダーを に転送しませんが、 AWS WAF 検査するウェブリクエストコンポーネントに擬似ヘッダーのコンテンツを提供します。

を使用して AWS WAF 、次の表に示す擬似ヘッダーのみを検査できます。


**ウェブリクエストコンポーネントにマップされた HTTP/2 疑似ヘッダーの内容**  

| HTTP/2 擬似ヘッダー | 検査するウェブリクエストコンポーネント | ドキュメント | 
| --- | --- | --- | 
|  `:method`  |  HTTP メソッド   |  [HTTP メソッド](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-http-method)  | 
|  `:authority`  |  `Host` ヘッダー   |  [単一ヘッダー](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-header)  [すべてのヘッダー](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-headers)  | 
|  `:path` URI パス  | URI パス  | [URI パス](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-uri-path) | 
|  `:path` クエリ  |  クエリ文字列  |  [クエリ文字列](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-query-string) [Single query parameter (単一クエリパラメータ)](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-single-query-param) [All query parameters (すべてのクエリパラメータ)](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-all-query-params)  | 

# でのテキスト変換の使用 AWS WAF
<a name="waf-rule-statement-transformation"></a>

このセクションでは、リクエストを検査する前に が適用 AWS WAF する変換を提供する方法について説明します。

パターンを探したり制約を設定したりするステートメントでは、リクエストを検査する前に が適用 AWS WAF する変換を指定できます。変換では、 AWS WAFをバイパスするために攻撃者が使用する異常なフォーマットの一部を削除するために、ウェブリクエストが再フォーマットされます。

これを JSON 本文リクエストコンポーネントの選択で使用する場合、 AWS WAF は JSON から検査する要素を解析および抽出した後、変換を適用します。詳細については、「[JSON 本文](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-json-body)」を参照してください。

複数の変換が指定された場合、 AWS WAF は変換の適用順序も設定します。

**WCU** - テキスト変換ごとには 10 個の WCU。

 AWS WAF コンソールと API のドキュメントには、以下の場所におけるこれらの設定に関するガイダンスも記載されています。
+ コンソールの**ルールビルダー** - **[Text transformation]** (テキスト変換)。このオプションは、リクエストコンポーネントの使用時に選択できます。
+ **API ステートメントのコンテンツ** – `TextTransformations`テキスト変換のオプション

各変換リストには、コンソールと API の仕様が表示され、説明が続きます。

Base64 decode – `BASE64_DECODE`  
AWS WAF は Base64-encodedされた文字列をデコードします。

Base64 decode extension – `BASE64_DECODE_EXT`  
AWS WAF は Base64-encodedされた文字列をデコードしますが、無効な文字を無視する寛容な実装を使用します。

Command line – `CMD_LINE`  
このオプションは、攻撃者がオペレーティングシステムのコマンドラインコマンドを挿入し、異常なフォーマットを使用して、コマンドの一部またはすべてを偽装する状況を緩和します。  
このオプションを使用して、次の変換を実行します。  
+ 次の文字を削除します: `\ " ' ^`
+ 次の文字の前にあるスペースを削除します: `/ (`
+ 次の文字をスペースに置き換えます: `, ;`
+ 複数のスペースを 1 つのスペースに置き換えます。
+ 大文字 `A-Z` を小文字 `a-z` に変換します。

Compress whitespace – `COMPRESS_WHITE_SPACE`  
AWS WAF は、複数のスペースを 1 つのスペースに置き換え、次の文字をスペース文字 (ASCII 32) に置き換えることで、空白を圧縮します。  
+ フォームフィード (ASCII 12)
+ タブ (ASCII 9)
+ 改行 (ASCII 10)
+ キャリッジリターン (ASCII 13)
+ 垂直タブ (ASCII 11)
+ 改行なしスペース (ASCII 160)

CSS decode – `CSS_DECODE`  
AWS WAF は、CSS 2.x エスケープルール を使用してエンコードされた文字をデコードします`syndata.html#characters`。この関数は、デコード処理で最大 2 バイトを使用するため、通常はエンコードされない CSS エンコーディングを使用してエンコードされた ASCII 文字を発見するのに役立ちます。また、バックスラッシュと 16 進数以外の文字の組み合わせである回避対策にも役立ちます。たとえば、`javascript` の `ja\vascript` を設定します。

Escape sequences decode – `ESCAPE_SEQ_DECODE`  
AWS WAF は、次の ANSI C エスケープシーケンスをデコードします: `\a`、`\b`、、`\f`、`\n``\r`、`\t`、`\v`、、`\\``\?`、`\xHH`、 (16 進数)`\"`、 `\0OOO` (8 `\'`進数）。有効でないエンコーディングは出力に残ります。

Hex decode – `HEX_DECODE`  
AWS WAF は 16 進数の文字の文字列をバイナリにデコードします。

HTML entity decode – `HTML_ENTITY_DECODE`  
AWS WAF は、16 進数形式`&#xhhhh;`または 10 進数形式で表される文字を対応する文字`&#nnnn;`に置き換えます。  
AWS WAF は、次の HTML エンコード文字をエンコードされていない文字に置き換えます。このリストでは小文字の HTML エンコーディングを使用しますが、処理では大文字と小文字が区別されません。例えば、`&QuOt;` と `&quot;` は同じように扱われます。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-rule-statement-transformation.html)

JS decode – `JS_DECODE`  
AWS WAF は JavaScript エスケープシーケンスをデコードします。`\uHHHH` コードが `FF01-FF5E` の全角 ASCII コード範囲内にある場合、高位バイトを使用して下位バイトが検出され、調整されます。そうでない場合は、下位バイトのみが使用され、上位バイトはゼロになり、情報が失われる可能性があります。

Lowercase – `LOWERCASE`  
AWS WAF は大文字 (A～Z) を小文字 (a～z) に変換します。

MD5 – `MD5`  
AWS WAF は、入力内のデータから MD5 ハッシュを計算します。計算されたハッシュは生のバイナリ形式です。

None – `NONE`  
AWS WAF は、テキスト変換なしで、受信したウェブリクエストを検査します。

Normalize path – `NORMALIZE_PATH`  
AWS WAF は、入力の先頭にない複数のスラッシュ、ディレクトリの自己参照、およびディレクトリのバックリファレンスを削除することで、入力文字列を正規化します。

Normalize path Windows – `NORMALIZE_PATH_WIN`  
AWS WAF はバックスラッシュ文字をスラッシュに変換し、`NORMALIZE_PATH`変換を使用して結果の文字列を処理します。

Remove nulls – `REMOVE_NULLS`  
AWS WAF は入力からすべての`NULL`バイトを削除します。

Replace comments – `REPLACE_COMMENTS`  
AWS WAF は、C 形式のコメント (/\$1 ... \$1/) の各出現を 1 つのスペースに置き換えます。コメントが複数連続しているときは、圧縮しません。コメントの終端がないときもスペース (ASCII 0x20) に置き換えられます。コメントの終端 (\$1/) のみがあるときは変更されません。

Replace nulls – `REPLACE_NULLS`  
AWS WAF は、入力の各バイトをスペース文字 (ASCII `NULL` 0x20) に置き換えます。

SQL hex decode – `SQL_HEX_DECODE`  
AWS WAF は SQL 16 進数のデータをデコードします。たとえば、 は (`0x414243`) を () に AWS WAF デコードします`ABC`。

URL decode – `URL_DECODE`  
AWS WAF は URL エンコードされた値をデコードします。

URL decode Unicode – `URL_DECODE_UNI`  
`URL_DECODE` と同様ですが、Microsoft 固有の `%u` エンコーディングをサポートしています。コードが `FF01-FF5E` の全角 ASCII コード範囲内にある場合、高位バイトを使用して下位バイトが検出され、調整されます。それ以外の場合は、下位バイトのみが使用され、高位バイトはゼロになります。

UTF8 to Unicode – `UTF8_TO_UNICODE`  
AWS WAF は、すべての UTF-8 文字シーケンスを Unicode に変換します。これは、入力を正規化し、非英語の言語における誤検知（偽陽性や偽陰性）を最小限に抑えるのに役立ちます。

# でのスコープダウンステートメントの使用 AWS WAF
<a name="waf-rule-scope-down-statements"></a>

このセクションでは、スコープダウンステートメントとその仕組みについて説明します。

スコープダウンステートメントは、マネージドルールグループステートメントまたはレートベースのステートメント内に追加できるネスト可能なルールステートメントで、包含ルールが評価するリクエストのセットを絞り込むことができます。包含ルールは、スコープダウンステートメントに最初に一致するリクエストのみを評価します。
+ **マネージドルールグループステートメント** – マネージドルールグループステートメントにスコープダウンステートメントを追加すると、 はスコープダウンステートメントと一致しないリクエストをルールグループと一致しないものとして AWS WAF 評価します。スコープダウンステートメントに一致するリクエストのみがルールグループに対して評価されます。評価されたリクエスト数に基づいて料金が発生するマネージドルールグループでは、スコープダウンステートメントはコストを抑えるのに役立ちます。

  マネージドルールグループステートメントの詳細については、「[でのマネージドルールグループステートメントの使用 AWS WAF](waf-rule-statement-type-managed-rule-group.md)」を参照してください。
+ **レートベースのルールステートメント** – スコープダウンステートメントのレートを含まないレートベースのルールステートメントは、評価するすべてのリクエストのレートを制限します。特定のカテゴリのリクエストのレートのみを制御する場合は、レートベースのルールにスコープダウンステートメントを追加します。例えば、特定の地理的エリアから送信されたリクエストのレートだけを追跡および制御するには、地理的照合ステートメントでその地理的エリアを指定することで、スコープダウンステートメントとしてレートベースのルールに追加できます。

  レートベースのルールステートメントの詳細については、「[でのレートベースのルールステートメントの使用 AWS WAF](waf-rule-statement-type-rate-based.md)」を参照してください。

スコープダウンステートメントでは、任意のネスト可能なルールを使用できます。利用可能なステートメントについては、「[での一致ルールステートメントの使用 AWS WAF](waf-rule-statements-match.md)」および「[での論理ルールステートメントの使用 AWS WAF](waf-rule-statements-logical.md)」を参照してください。スコープダウンステートメントの WCU は、その中で定義するルールステートメントに必要な WCU です。スコープダウンステートメントの使用に追加コストは発生しません

スコープダウンステートメントは、通常のルールでステートメントを使用する場合と同じ方法で設定できます。例えば、検査対象のウェブリクエストコンポーネントにテキスト変換を適用したり、IP アドレスとして使用するために転送された IP アドレスを指定したりできます。これらの設定はスコープダウンステートメントにのみ適用され、包含マネージドルールグループやレートベースのルールステートメントには継承されません。

例えば、スコープダウンステートメントのクエリ文字列にテキスト変換を適用すると、スコープダウンステートメントは変換を適用後、クエリ文字列を検査します。リクエストがスコープダウンステートメントの基準に一致する場合は、 AWS WAF スコープダウンステートメントの変換を行わずに、元の状態でウェブリクエストを包含ルールに渡します。スコープダウンステートメントを含むルールは、独自のテキスト変換を適用する場合がありますが、スコープダウンステートメントから継承されるものはありません。

スコープダウンステートメントを使用して、包含ルールステートメントのリクエスト検査設定を指定することはできません。スコープダウンステートメントを、包含ルールステートメントのウェブリクエストプリプロセッサとして使用することはできません。スコープダウンステートメントの唯一の役割は、どのリクエストを包含ルールステートメントに渡して検査するかを決定することです。

# で再利用可能なエンティティを参照する AWS WAF
<a name="waf-rule-statement-reusable-entities"></a>

このセクションでは、 AWS WAFでの再利用可能なエンティティの仕組みについて説明します。

一部のルールでは、再利用可能なエンティティを使用し、ユーザー AWSまたは AWS Marketplace 販売者がウェブ ACLs の外部で管理します。再利用可能なエンティティが更新されると、 AWS WAF は更新をルールに伝達します。たとえば、保護パック (ウェブ ACL) で AWS マネージドルールルールグループを使用する場合、 がルールグループ AWS を更新すると、 はウェブ ACL に変更を AWS 伝播して動作を更新します。ルールで IP セットステートメントを使用する場合、セットを更新すると、 はそれを参照するすべてのルールに変更 AWS WAF を伝達するため、これらのルールを使用する保護パック (ウェブ ACLs) は変更に合わせてup-to-date状態を維持します。

ルールステートメントで使用できる再利用可能なエンティティを次に示します。
+ **IP セット** - 独自の IP セットを作成および管理します。コンソールでは、ナビゲーションペインからこれらにアクセスできます。IP セットの管理については、「[の IP セットと正規表現パターンセット AWS WAF](waf-referenced-set-managing.md)」を参照してください。
+ **正規表現一致セット** - 独自の正規表現一致セットを作成および管理します。コンソールでは、ナビゲーションペインからこれらにアクセスできます。正規表現パターンセットの管理については、「[の IP セットと正規表現パターンセット AWS WAF](waf-referenced-set-managing.md)」を参照してください。
+ **AWS マネージドルールルールグループ** – これらのルールグループ AWS を管理します。コンソールでは、マネージドルールグループを保護パック (ウェブ ACL) に追加する際にこれらを使用できます。これらの詳細については、「[AWS マネージドルールのルールグループリスト](aws-managed-rule-groups-list.md)」を参照してください。
+ **AWS Marketplace マネージドルールグループ** – AWS Marketplace 販売者はこれらのルールグループを管理し、それらをサブスクライブして使用できます。サブスクリプションを管理するには、コンソールのナビゲーションペインで [**AWS Marketplace**] を選択します。 AWS Marketplace マネージドルールグループは、マネージドルールグループを保護パック (ウェブ ACL) に追加すると一覧表示されます。まだサブスクライブしていないルールグループについては、そのページ AWS Marketplace にも へのリンクがあります。 AWS Marketplace 販売者マネージドルールグループの詳細については、「」を参照してください[AWS Marketplace ルールグループ](marketplace-rule-groups.md)。
+ **独自のルールグループ** - マネージドルールグループでは利用できない動作が必要な場合は通常、独自のルールグループを管理します。コンソールでは、ナビゲーションペインからこれらにアクセスできます。詳細については、「[独自のルールグループの管理](waf-user-created-rule-groups.md)」を参照してください。

**参照先のセットまたはルールグループの削除**  
参照されるエンティティを削除すると、 AWS WAF は、そのエンティティが保護パック (ウェブ ACL) で現在使用されているかどうかを確認します。が使用中である AWS WAF と判断した場合、警告が表示されます。 AWS WAF はほとんどの場合、エンティティが保護パック (ウェブ ACL) によって参照されているかどうかを判断できます。ただし、まれに判別できないことがあります。削除するエンティティが使用中でないことを確認する必要がある場合は、削除する前にウェブ ACL でエンティティを確認してください。

# での一致ルールステートメントの使用 AWS WAF
<a name="waf-rule-statements-match"></a>

このセクションでは、一致ステートメントとは何か、またその仕組みについて説明します。

一致ステートメントは、ウェブリクエストまたはその送信元を、指定された基準と比較します。このタイプの多くのステートメントでは、 はコンテンツのマッチングリクエストの特定のコンポーネント AWS WAF を比較します。

一致ステートメントはネスト可能です。これらのステートメントはいずれも論理ルールステートメント内にネストできる他、スコープダウンステートメントで使用できます。倫理ルールステートメントの詳細については、「[での論理ルールステートメントの使用 AWS WAF](waf-rule-statements-logical.md)」を参照してください。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

この表では、ルールに追加できる標準の一致ステートメントについて説明し、それぞれの保護パック (ウェブ ACL) キャパシティーユニット (WCU) 使用量を計算するためのガイドラインを提供します。WCU の詳細については、「[のウェブ ACL キャパシティユニット (WCUs) AWS WAF](aws-waf-capacity-units.md)」を参照してください。


| 一致ステートメント | 説明 | WCU | 
| --- | --- | --- | 
| [地理的一致](waf-rule-statement-type-geo-match.md) | リクエストの送信元の国を検査し、その国および地域のラベルを適用します。 | 1 | 
|  [ASN 一致](waf-rule-statement-type-asn-match.md)  |  リクエストを IP アドレスおよびアドレス範囲に関連付けられた ASN と照合します。  |  1  | 
|  [IP セット一致](waf-rule-statement-type-ipset-match.md)  |  リクエストを一連の IP アドレスおよびアドレス範囲と照合します。  |  ほとんどの場合 1。転送された IP アドレスを持つヘッダーを使用するようにステートメントを設定し、Any のヘッダー内の位置を指定すると、WCU が 4 増えます。  | 
|  [ラベル一致ルールステートメント](waf-rule-statement-type-label-match.md)  |  同じ保護パック (ウェブ ACL) 内の他のルールによって追加されたラベルのリクエストを検査します。  |  1   | 
| [正規表現一致ルールステートメント](waf-rule-statement-type-regex-match.md) | 正規表現パターンを指定されたリクエストコンポーネントと比較します。 | 3 (基本コストとして)。 **[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。  | 
|  [正規表現パターンセット](waf-rule-statement-type-regex-pattern-set-match.md)  |  正規表現パターンを指定されたリクエストコンポーネントと比較します。  |  パターンセットあたり 25 (基本コストとして)。 **[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。  | 
| [サイズ制約](waf-rule-statement-type-size-constraint-match.md) | 指定されたリクエストコンポーネントに対してサイズ制約をチェックします。 | 1 (基本コストとして)。 **[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。  | 
| [SQLi 攻撃](waf-rule-statement-type-sqli-match.md) | 指定されたリクエストコンポーネント内の悪意のある SQL コードを検査します。 | 20 (基本コストとして)。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。 | 
| [文字列一致](waf-rule-statement-type-string-match.md) | 指定されたリクエストコンポーネントと文字列を比較します。 |  基本コストは、文字列の一致のタイプによって異なり、1 ～ 10 の範囲です。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。  | 
| [XSS スクリプティング攻撃](waf-rule-statement-type-xss-match.md) | 指定されたリクエストコンポーネントでのクロスサイトスクリプティング攻撃を検査します。 | 40 (基本コストとして)。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。 | 

# 地理的一致ルールステートメント
<a name="waf-rule-statement-type-geo-match"></a>

このセクションでは、地理的な一致ステートメントとは何か、またその仕組みについて説明します。

地理的または地理照合ステートメントを使用して、発信元の国や地域に基づいてウェブリクエストを管理します。地理的照合ステートメントは、ウェブリクエストに発信国や発信地域を示すラベルを追加します。これらのラベルは、ステートメントの条件がリクエストと一致するかどうかに関係なく追加されます。また、地理的照合ステートメントは、リクエストの発信国に対する一致も実行します。

## 地理的一致ステートメントの使用方法
<a name="waf-rule-statement-geo-how-to-use"></a>

地理的一致ステートメントは、次のような国や地域のマッチングに使用できます。
+ **国** — 地理的一致ルールを単独で使用し、発信国のみに基づいてリクエストを管理できます。ルールステートメントは国コードに対する一致を実行します。また、発信元のラベルに一致するラベル一致ルールが適用されている地域的一致ルールに従うこともできます。
**注記**  
香港からのトラフィックをフィルタリングするには、地理一致ステートメントで ISO 3166-1 alpha-2 国コード `HK` を使用します。
+ **地域** — 地理的一致ルールに続いてラベル一致ルールを使用し、発信地域に基づいてリクエストを管理します。地理的一致ルールだけを使用して地域コードとの一致を実行することはできません。

ラベルマッチルールの使用方法については、「[ラベル一致ルールステートメント](waf-rule-statement-type-label-match.md)」および「[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)」を参照してください。

## 地理的一致ステートメントのしくみ
<a name="waf-rule-statement-geo-how-it-works"></a>

geo 一致ステートメントでは、 は各ウェブリクエストを次のように AWS WAF 管理します。

1. **リクエストの国とリージョンコードを決定します**。IP アドレスに基づいてリクエストの国とリージョン AWS WAF を決定します。デフォルトでは、 はウェブリクエストのオリジンの IP アドレス AWS WAF を使用します。ルールステートメント設定で転送された IP 設定を有効にする`X-Forwarded-For`ことで、 などの代替リクエストヘッダーから IP アドレスを使用する AWS WAF ように に指示できます。

   AWS WAF は、MaxMind GeoIP データベースを使用してリクエストの場所を決定します。MaxMind は、国レベルでの非常に高精度なデータを報告しますが、精度は国や IP の種類などの要因によって異なります。MaxMind の詳細については、「[MaxMind IP Geolocation](https://support.maxmind.com/hc/en-us/sections/4407519834267-IP-Geolocation)」を参照してください。GeoIP データのいずれかが正しくないと思われる場合は、[MaxMind Correct GeoIP2 Data](https://support.maxmind.com/hc/en-us/articles/4408252036123-GeoIP-Correction) で Maxmind に修正リクエストを送信できます。

   AWS WAF は、国際標準化機構 (ISO) 3166 規格の alpha-2 の国と地域のコードを使用します。コードは次の場所にあります。
   + ISO ウェブサイトでは、「[ISO Online Browsing Platform (OBP)](https://www.iso.org/obp/ui#home)」(ISO オンラインブラウジングプラットフォーム (OBP)) で国コードを検索できます。
   + ウィキペディアでは、国コードは「[ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)」に一覧表示されています。

     国の地域コードは `https://en.wikipedia.org/wiki/ISO_3166-2:<ISO country code>` の URL に一覧表示されています。たとえば、米国の地域は「[ISO 3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US)」にあり、ウクライナの地域は「[ISO 3166-2:UA](https://en.wikipedia.org/wiki/ISO_3166-2:UA)」にあります。

1. **リクエストに追加する国ラベルおよび地域ラベルを決定します** — ラベルは、地理一致ステートメントが発信元 IP 設定を使用するか、転送された IP 設定を使用するかを示します。
   + **発信元 IP** 

     国ラベルは `awswaf:clientip:geo:country:<ISO country code>` です。米国の例は `awswaf:clientip:geo:country:US` です。

     地域ラベルは `awswaf:clientip:geo:region:<ISO country code>-<ISO region code>` です。米国のオレゴン州の例は `awswaf:clientip:geo:region:US-OR` です。
   + **転送された IP** 

     国ラベルは `awswaf:forwardedip:geo:country:<ISO country code>` です。米国の例は `awswaf:forwardedip:geo:country:US` です。

     地域ラベルは `awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>` です。米国のオレゴン州の例は `awswaf:forwardedip:geo:region:US-OR` です。

   リクエストが指定した IP アドレスの国または地域コードがない場合、 AWS WAF はラベル内で値の代わりに `XX` を使用します。たとえば、次のラベルは国コードがないクライアント IP 用です。`awswaf:clientip:geo:country:XX` および次のラベルは、国が米国であるが地域コードがない転送先 IP 用です。`awswaf:forwardedip:geo:region:US-XX`。

1. **リクエストの国コードをルール基準に参照して評価** 

地理一致ステートメントは、一致するものを見つけるかどうかにかかわらず、検査するすべてのリクエストに国と地域のラベルを追加します。

**注記**  
AWS WAF は、ルールのウェブリクエスト評価の最後にラベルを追加します。そのため、地理的一致ステートメントのラベルに対して使用するラベル一致は、地理的一致ステートメントを含むルールとは別のルールで定義する必要があります。

地域値のみを調べる場合、Count アクションと単一の国コード一致で地域的一致ルールを記述し、その後に地域ラベルのラベル一致ルールを作成することができます。この方法でも、地域一致ルールを評価するには国コードを入力する必要があります。サイトへのトラフィック元になる可能性が非常に低い国を指定することで、ログ記録およびカウントメトリクスを減らすことができます。

## CloudFront ディストリビューションおよび CloudFront 地域制限機能
<a name="cloudfront-distributions-geo-restriction"></a>

CloudFront ディストリビューションでは、CloudFront の地域制限機能を使用する場合、ブロックされたリクエストは AWS WAFに転送されないことに注意してください。許可されたリクエストは に転送されます AWS WAF。地域と指定できるその他の基準に基づいてリクエストをブロックする場合は AWS WAF、 AWS WAF 地理的一致ステートメントを使用し、CloudFront の地理的制限機能を使用しないでください。

## ルールステートメントの特性
<a name="geo-match-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - 1 つの WCU。

**設定** – このステートメントは次の設定を使用します。
+ **国コード** – 地理一致のために比較する国コードの配列。これらは、ISO 3166 国際規格の alpha-2 の国 ISO コード (たとえば、`["US","CN"]` など) を基準とした 2 文字の国コードである必要があります。
+ **(オプション) 転送された IP 設定** – デフォルトでは、 はウェブリクエストオリジンの IP アドレス AWS WAF を使用して、オリジンの国を決定します。または、 `X-Forwarded-For` などの HTTP ヘッダーで転送された IP を使用するようにルールを設定できます。 は、ヘッダーの最初の IP アドレス AWS WAF を使用します。この設定では、ヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「[転送された IP アドレスの使用](waf-rule-statement-forwarded-ip-address.md)」を参照してください。

## このルールステートメントの場所
<a name="geo-match-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Request option]** (リクエストオプション) で **[Originates from a country in]** (次の国からの送信) を選択します。
+ **API** – 「[GeoMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_GeoMatchStatement.html)」

## 例
<a name="waf-rule-statement-geo-examples"></a>

地域一致ステートメントを使用して、特定の国または地域からのリクエストを管理できます。たとえば、特定の国からのリクエストをブロックしても、それらの国に属する一連の IP アドレスからのリクエストを許可するには、Block に設定されたアクションと次のネストされたステートメント (次の疑似コードで表示) を含めたルール作成できます。
+ AND ステートメント
  + ブロックする国をリストした 地理一致ステートメント
  + NOT ステートメント 
    + 許可する IP アドレスを指定する IP セットステートメント

または、特定の国の一部地域をブロックしても、それらの国における他の地域からのリクエストを許可するには、まずアクションセットを持った地理一致リールを Count に定義できます。その後、追加された地理一致ラベルと照合し、必要に応じてリクエストを処理するラベルマッチルールを定義します。

次の擬似コードは、このアプローチの例について説明しています。

1. 地理一致ステートメントはブロックする地域がある国をリストしますが、アクションを Count に設定された状態で実行します。これにより、マッチステータスに関係なくすべてのウェブリクエストにラベルが付けられ、対象国のカウントメトリクスも表示されます。

1. Block アクションを含む `AND` ステートメント
   + ブロックする国のラベルを指定するラベル一致ステートメント
   + `NOT` ステートメント 
     + 許可する国の地域のラベルを指定するラベル一致ステートメント

次の JSON リストは、前述の擬似コードで説明した 2 つのルールの実装を示しています。これらのルールは、オレゴン州とワシントン州からのトラフィックを除く米国からのトラフィックをすべてブロックします。地理一致ステートメントは、検査するすべてのリクエストに国と地域のラベルを追加します。ラベル一致ルールは地理一致ルールの後に実行されるため、地理一致ルールが追加したばかりの国や地域のラベルと照合できます。地理一致ステートメントは転送された IP アドレスを使用するため、ラベル一致は転送された IP ラベルも指定します。

```
{
   "Name": "geoMatchForLabels",
   "Priority": 10,
   "Statement": {
     "GeoMatchStatement": {
       "CountryCodes": [
         "US"
       ],
       "ForwardedIPConfig": {
           "HeaderName": "X-Forwarded-For",
           "FallbackBehavior": "MATCH"
       }
     }
   },
   "Action": {
     "Count": {}
   },
   "VisibilityConfig": {
     "SampledRequestsEnabled": true,
     "CloudWatchMetricsEnabled": true,
     "MetricName": "geoMatchForLabels"
   }
},
{
   "Name": "blockUSButNotOROrWA",
   "Priority": 11,
   "Statement": {
     "AndStatement": {
       "Statements": [
         {
           "LabelMatchStatement": {
             "Scope": "LABEL",
             "Key": "awswaf:forwardedip:geo:country:US"
           }
         },
         {
           "NotStatement": {
             "Statement": {
                "OrStatement": {
                  "Statements": [
                    {
                       "LabelMatchStatement": {
                         "Scope": "LABEL",
                         "Key": "awswaf:forwardedip:geo:region:US-OR"
                       }
                    },
                    {
                       "LabelMatchStatement": {
                         "Scope": "LABEL",
                         "Key": "awswaf:forwardedip:geo:region:US-WA"
                       }
                    }
                 ]
               }
             }
           }
         }
       ]
     }
   },
   "Action": {
     "Block": {}
   },
   "VisibilityConfig": {
     "SampledRequestsEnabled": true,
     "CloudWatchMetricsEnabled": true,
     "MetricName": "blockUSButNotOROrWA"
   }
}
```

別の例として、地理一致とレートベースのルールを組み合わせて、特定の国または地域のユーザーのリソースに優先順位を付けることができます。ユーザーを区別するために使用する地理一致またはラベル一致のステートメントごとに、異なるレートベースのステートメントを作成します。優先させる国または地域のユーザーのレート制限をより高く設定し、他のユーザーのレート制限をより低く設定します。

次の JSON リストは、米国からのトラフィック量を制限する地理一致ルールの次にレートベースのルールを示しています。このルールにより、オレゴン州からのトラフィックは、同国の他の地域からのトラフィックよりも高いレートで許可されます。

```
{
  "Name": "geoMatchForLabels",
  "Priority": 190,
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": [
        "US"
      ]
    }
  },
  "Action": {
    "Count": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "geoMatchForLabels"
  }
},
{
  "Name": "rateLimitOregon",
  "Priority": 195,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 3000,
      "AggregateKeyType": "IP",
      "ScopeDownStatement": {
        "LabelMatchStatement": {
          "Scope": "LABEL",
          "Key": "awswaf:clientip:geo:region:US-OR"
        }
      }
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "rateLimitOregon"
  }
},
{
  "Name": "rateLimitUSNotOR",
  "Priority": 200,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "AggregateKeyType": "IP",
      "ScopeDownStatement": {
        "AndStatement": {
          "Statements": [
            {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:clientip:geo:country:US"
              }
            },
            {
              "NotStatement": {
                "Statement": {
                  "LabelMatchStatement": {
                    "Scope": "LABEL",
                    "Key": "awswaf:clientip:geo:region:US-OR"
                  }
                }
              }
            }
          ]
        }
      }
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "rateLimitUSNotOR"
  }
}
```

# IP セット一致ルールステートメント
<a name="waf-rule-statement-type-ipset-match"></a>

このセクションでは、IP セット一致ステートメントとは何か、またその仕組みについて説明します。

IP セット一致ステートメントは、一連の IP アドレスおよびアドレス範囲に対してウェブリクエストの IP アドレスを検査します。これを使用して、リクエストの送信元の IP アドレスに基づいてウェブリクエストを許可またはブロックします。デフォルトでは、 AWS WAF はウェブリクエストの発信元からの IP アドレスを使用しますが、代わりに `X-Forwarded-For` などの HTTP ヘッダーを使用するようにルールを設定できます。



AWS WAF は、 を除くすべての IPv4 および IPv6 CIDR 範囲をサポートします`/0`。CIDR 表記の詳細については、Wikipedia の「[Classless Inter-Domain Routing](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)」(クラスレスドメイン間ルーティング) を参照してください。IP セットには、チェック対象として最大 10,000 個の IP アドレスまたは IP アドレス範囲を保持できます。

**注記**  
各 IP セット一致ルールは IP セットを参照します。このセットは、ルールとは無関係に作成し、維持します。複数のルールで 1 つの IP セットを使用できます。参照されるセットを更新すると、 はそれを参照するすべてのルール AWS WAF を自動的に更新します。  
IP セットの作成および管理については、「[での IP セットの作成と管理 AWS WAF](waf-ip-set-managing.md)」を参照してください。

ルールグループまたは保護パック (ウェブ ACL) でルールを追加または更新する場合は、**[IP set]** (IP セット) オプションを選択し、使用する IP セットの名前を選択します。

## ルールステートメントの特性
<a name="ipset-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU**- ほとんどの場合 1 WCU。転送された IP アドレスを使用するようにステートメントを設定し、ANY の位置を指定すると、WCU の使用量が 4 増えます。

このステートメントには、次の設定を使用します。
+ **IP セットの指定** - 使用する IP セットをリストから選択するか、新しい IP セットを作成します。
+ **(オプション) 転送された IP 設定** – リクエストの発信元の代わりに使用する代替の転送された IP ヘッダー名。ヘッダーの最初のアドレス、最後のアドレス、または任意のアドレスを照合するかどうかを指定します。指定したヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「[転送された IP アドレスの使用](waf-rule-statement-forwarded-ip-address.md)」を参照してください。

## このルールステートメントの場所
<a name="ipset-match-where-to-find"></a>

**このルールステートメントの場所**
+ コンソールの**ルールビルダー** - **[Request option]** (リクエストオプション) で **[Originates from an IP address in]** (次の IP アドレスからの送信) を選択します。
+ コンソールの **[Add my own rules and rule groups]** (独自のルールとルールグループの追加) ページ - **[IP set]** (IP セット) オプションを選択します。
+ **API** – 「[IPSetReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_IPSetReferenceStatement.html)」

# AS 番号 (ASN) 一致ルールステートメント
<a name="waf-rule-statement-type-asn-match"></a>

の ASN 一致ルールステートメント AWS WAF を使用すると、リクエストの IP アドレスに関連付けられた自律システム番号 (ASN) に基づいてウェブトラフィックを検査できます。ASN は、インターネットサービスプロバイダー、企業、大学、政府機関などの組織が管理する大規模なインターネットネットワークに割り当てられる一意の識別子です。ASN 一致ステートメントを使用すると、個々の IP アドレスを管理することなく、特定のネットワーク組織からのトラフィックを許可またはブロックできます。このアプローチでは、ASN は IP 範囲より変化の頻度が低くなるため、IP ベースのルールと比較して、より安定して効率的にアクセスを制御できます。

ASN マッチングは、既知の問題のあるネットワークからのトラフィックをブロックしたり、信頼できるパートナーネットワークからのアクセスのみを許可したりするなどのシナリオで特に役立ちます。ASN 一致ステートメントは、オプションの転送された IP 設定を使用してクライアント IP アドレスを柔軟に判断できるため、コンテンツ配信ネットワーク (CDN) やリバースプロキシを使用するネットワーク設定など、さまざまなネットワーク設定との互換性を確保します。

**注記**  
ASN マッチングは、標準の認証と認可のコントロールを補完しますが、置き換えるものではありません。アプリケーション内のすべてのリクエストの ID を検証するために、IAM などの認証および認可メカニズムを実装することをお勧めします。

## ASN 一致ステートメントの仕組み
<a name="waf-rule-statement-type-asn-match-how-it-works"></a>

AWS WAF は、IP アドレスに基づいてリクエストの ASN を決定します。デフォルトでは、 はウェブリクエストのオリジンの IP アドレス AWS WAF を使用します。ルールステートメント設定で転送された IP 設定を有効にする`X-Forwarded-For`ことで、 などの代替リクエストヘッダーから IP アドレスを使用する AWS WAF ように を設定できます。

ASN 一致ステートメントは、リクエストの ASN をルールで指定された ASN のリストと比較します。ASN がリスト内の ASN と一致する場合、ステートメントは true と評価され、関連付けられたルールアクションが適用されます。

### マッピングされていない ASN の処理
<a name="waf-rule-statement-type-asn-match-unmapped"></a>

が有効な IP アドレスの ASN を決定 AWS WAF できない場合、ASN 0 が割り当てられます。これらのケースを明示的に処理するために、ルールに ASN 0 を含めることができます。

### 無効な IP アドレスのフォールバック動作
<a name="waf-rule-statement-type-asn-match-fallback"></a>

転送された IP アドレスを使用するように ASN 一致ステートメントを設定する場合、指定されたヘッダーに無効または欠落している IP アドレスを持つリクエストに対して、*一致* または *一致なし* のフォールバック動作を指定できます。

## ルールステートメントの特性
<a name="waf-rule-statement-type-asn-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - 1 つの WCU

このステートメントには、次の設定を使用します。
+ **ASN リスト** – ASN 一致と比較する ASN 番号の配列。有効な値の範囲は 0～4294967295 です。ルールごとに最大 100 個の ASN を指定できます。
+ **(オプション) 転送された IP 設定** – デフォルトでは、 はウェブリクエストオリジンの IP アドレス AWS WAF を使用して ASN を決定します。または、代わりに `X-Forwarded-For` などの HTTP ヘッダーで転送された IP を使用するようにルールを設定することもできます。ヘッダーの最初のアドレス、最後のアドレス、または任意のアドレスを使用するかどうかを指定します。この設定では、ヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「[転送した IP アドレスの使用](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-forwarded-ip-address.html)」を参照してください。

## このルールステートメントの場所
<a name="waf-rule-statement-type-asn-match-where-to-find"></a>
+ コンソールの **ルールビルダー** - **[リクエストオプション]** では、**[次の ASN からの送信]** を選択します。
+ **API** – [AsnMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AsnMatchStatement.html)

## 例
<a name="waf-rule-statement-type-asn-match-examples"></a>

この例では、`X-Forwarded-For` ヘッダーから派生した 2 つの特定の ASN からのリクエストをブロックします。ヘッダーの IP アドレスの形式が正しくない場合、設定されたフォールバック動作は `NO_MATCH` です。

```
{
  "Action": {
    "Block": {}
  },
  "Name": "AsnMatchStatementRule",
  "Priority": 1,
  "Statement": {
    "AsnMatchStatement": {
      "AsnList": [64496, 64500]
    },
    "ForwardedIPConfig": {
      "FallbackBehavior": "NO_MATCH",
      "HeaderName": "X-Forwarded-For"
    }
  },
  "VisibilityConfig": {
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AsnMatchRuleMetrics",
    "SampledRequestsEnabled": true
  }
},
"VisibilityConfig": {
  "CloudWatchMetricsEnabled": true,
  "MetricName": "WebAclMetrics",
  "SampledRequestsEnabled": true
}
}
```

# ラベル一致ルールステートメント
<a name="waf-rule-statement-type-label-match"></a>

このセクションでは、ラベル一致ステートメントとは何か、またその仕組みについて説明します。

ラベル一致ステートメントは、ウェブリクエストにあるラベルを文字列指定に照らして検査します。検査用のルールで使用できるラベルは、同じ保護パック (ウェブ ACL) 評価内の他のルールによってウェブリクエストに既に追加されているラベルです。

ラベルは保護パック (ウェブ ACL) 評価の外では保持されませんが、CloudWatch のラベルメトリクスにアクセスでき、 AWS WAF コンソールで任意の保護パック (ウェブ ACL) のラベル情報の概要を確認できます。詳細については、「[ラベルメトリクスとディメンション](waf-metrics.md#waf-metrics-label)」および「[AWS WAF 保護のモニタリングと調整](web-acl-testing-activities.md)」を参照してください。ログにはラベルも表示されます。詳細については、「[保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)」を参照してください。

**注記**  
ラベル一致ステートメントは、保護パック (ウェブ ACL) で以前に評価されたルールのラベルのみを表示できます。が保護パック (ウェブ ACL) 内のルールとルールグループ AWS WAF を評価する方法については、「」を参照してください[ルールの優先度を設定する](web-acl-processing-order.md)。

ラベルの追加と一致の詳細については、「[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)」を参照してください。

## ルールステートメントの特性
<a name="label-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - 1 つの WCU

このステートメントには、次の設定を使用します。
+ **[Match scope]** (一致範囲) – これを **[Label]** (ラベル) に設定して、ラベル名と、ならびにオプションで、先行する名前空間およびプレフィックスと照合します。これを **[Namespace]** (名前空間) に設定して、名前空間の指定の一部または全部、およびオプションで、先行するプレフィックスと照合します。
+ **[Key]** (キー) – 照合する文字列。名前空間一致の範囲を指定する場合、これは、名前空間と、オプションでプレフィックスのみを指定する必要があり、末尾にコロンを付けます。ラベル一致の範囲を指定する場合、これはラベル名を含む必要があり、オプションで前述の名前空間とプレフィックスを含めることができます。

これらの設定の詳細については、「[AWS WAF ラベルに一致する ルール](waf-rule-label-match.md)」および「[AWS WAF ラベル一致の例](waf-rule-label-match-examples.md)」を参照してください。

## このルールステートメントの場所
<a name="label-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Request option]** (リクエストオプション) で **[Has label]** (ラベルあり) を選択します。
+ **API** – 「[LabelMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_LabelMatchStatement.html)」

# 正規表現一致ルールステートメント
<a name="waf-rule-statement-type-regex-match"></a>

このセクションでは、正規表現一致ステートメントとは何か、またその仕組みについて説明します。

正規表現一致ステートメントは、リクエストコンポーネントを単一の正規表現 (正規表現) と照合 AWS WAF するように に指示します。リクエストコンポーネントが指定した正規表現と一致する場合、ウェブリクエストはステートメントと一致します。

このステートメントタイプは、数理論理を使用して一致基準を組み合わせることを希望する状況において、[正規表現パターンセット一致ルールステートメント](waf-rule-statement-type-regex-pattern-set-match.md) に代わる優れた方法です。例えば、リクエストコンポーネントを一部の正規表現パターンと照合し、他の正規表現パターンと照合しないようにする場合は、[AND ルールステートメント](waf-rule-statement-type-and.md) と [NOT ルールステートメント](waf-rule-statement-type-not.md) を使用して正規表現一致ステートメントを組み合わせることができます。

AWS WAF は、いくつかの例外`libpcre`を除いて、PCRE ライブラリで使用されるパターン構文をサポートします。ライブラリは、「[PCRE - Perl Compatible Regular Expressions](http://www.pcre.org/)」で文書化されています。 AWS WAF サポートの詳細については、「」を参照してください[でサポートされている正規表現構文 AWS WAF](waf-regex-pattern-support.md)。

## ルールステートメントの特性
<a name="regex-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU**- 3 WCU (基本コストとして)。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。
**警告**  
リクエストコンポーネントの**本文**、**JSON 本文**、**ヘッダー**、または **Cookie** を検査する場合は、 で検査 AWS WAF できるコンテンツの量に関する制限についてお読みください[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)。

  ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。
+ **オプションのテキスト変換** – 検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

## このルールステートメントの場所
<a name="regex-match-where-to-find"></a>
+ コンソールの**ルールビルダー** – **[Match type]** (一致タイプ) で、**Matches regular expression]** (正規表現に一致) を選択します。
+ **API** – 「[RegexMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RegexMatchStatement.html)」

# 正規表現パターンセット一致ルールステートメント
<a name="waf-rule-statement-type-regex-pattern-set-match"></a>

このセクションでは、正規表現パターンセット一致ステートメントとは何か、またその仕組みについて説明します。

正規表現パターンセット一致は、ウェブリクエストの指定した部分を、正規表現パターンセット内の指定した正規表現パターンに照らして検査します。

AWS WAF は、いくつかの例外`libpcre`を除いて、PCRE ライブラリで使用されるパターン構文をサポートします。ライブラリは、「[PCRE - Perl Compatible Regular Expressions](http://www.pcre.org/)」で文書化されています。 AWS WAF サポートの詳細については、「」を参照してください[でサポートされている正規表現構文 AWS WAF](waf-regex-pattern-support.md)。

**注記**  
各正規表現パターンセット一致ルールは、正規表現パターンセットを参照します。このパターンセットは、ルールとは無関係に作成し、維持します。複数のルールで 1 つの正規表現パターンセットを使用できます。参照されるセットを更新すると、 はそれを参照するすべてのルール AWS WAF を自動的に更新します。  
正規表現パターンセットの作成および管理については、「[での正規表現パターンセットの作成と管理 AWS WAF](waf-regex-pattern-set-managing.md)」を参照してください。

正規表現パターンセット一致ステートメントは、選択したリクエストコンポーネント内のセット内のパターンを検索する AWS WAF ように に指示します。リクエストコンポーネントがセット内のいずれかのパターンに一致する場合、ウェブリクエストはパターンセットルールステートメントと一致します。

論理を使用して正規表現パターンの一致を組み合わせる場合、例えば、一部の正規表現と照合し、他の正規表現とは照合しない場合は、[正規表現一致ルールステートメント](waf-rule-statement-type-regex-match.md) を使用することを検討してください。

## ルールステートメントの特性
<a name="regex-pattern-set-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - 基本コストとして 25 WCU。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。
**警告**  
リクエストコンポーネント**本文**、**JSON 本文**、**ヘッダー**、または **Cookie** を検査する場合は、 で検査 AWS WAF できるコンテンツ量の制限についてお読みください[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)。

  ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。
+ **オプションのテキスト変換** – 検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

このステートメントには、次の設定が必要です。
+ 正規表現パターンセットの指定 - 使用する正規表現パターンセットをリストから選択するか、新しい IP セットを作成します。

## このルールステートメントの場所
<a name="regex-pattern-set-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Match type]** (一致タイプ) で **[String match condition]** (文字列一致条件) > **[Matches pattern from regular expression set]** (正規表現セットのパターンに一致) を選択します。
+ **API** – 「[RegexPatternSetReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RegexPatternSetReferenceStatement.html)」

# サイズ制約ルールステートメント
<a name="waf-rule-statement-type-size-constraint-match"></a>

このセクションでは、サイズ制約ステートメントとは何か，またその仕組みについて説明します。

サイズ制約ステートメントは、ウェブリクエストコンポーネントに対して が AWS WAF 受け取るバイト数と、指定したバイト数を比較し、比較基準に従って一致させます。

比較基準は、「より大きい (>)」や「より小さい (<)」などの演算子です。例えば、100 バイトを超えるサイズのクエリ文字列を含むリクエストの一致を実行できます。

URI パスを検査する場合、パス内の `/` は 1 文字としてカウントされます。例えば、URI パスの `/logo.jpg` は 9 文字の長さになります。

**注記**  
このステートメントはウェブリクエストコンポーネントのサイズのみを検査します。コンポーネントのコンテンツは検査されません。

## ルールステートメントの特性
<a name="size-constraint-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU**- 1 WCU (基本コストとして)。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。

  サイズ制約ステートメントは、何らかの変換が適用された後のコンポーネントのサイズのみを検査します。コンポーネントのコンテンツは検査されません。
+ **オプションのテキスト変換** – サイズを検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、空白を圧縮したり、HTML エンティティをデコードしたりすることができます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

さらに、このステートメントには、次の設定が必要です。
+ **Size match condition (サイズ一致条件)** - これは、提供するサイズと選択したリクエストコンポーネントを比較するために使用する数値比較演算子を示します。リストから演算子を選択します。
+ **Size** (サイズ) - 比較で使用するサイズ設定 (バイト単位)。

## このルールステートメントの場所
<a name="size-constraint-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Match type]** (一致タイプ) の **[Size match condition]** (サイズ一致条件) で、使用する条件を選択します。
+ **API** – 「[SizeConstraintStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_SizeConstraintStatement.html)」

# SQL インジェクション攻撃ルールステートメント
<a name="waf-rule-statement-type-sqli-match"></a>

このセクションでは、SQL インジェクションルールステートメントとは何か、またその仕組みについて説明します。

SQL インジェクションルールステートメントは、悪意のある SQL コードを検査します。攻撃者は、データベースを変更したり、データベースからデータを抽出したりするために、悪意のある SQL コードをウェブリクエストに挿入します。

## ルールステートメントの特性
<a name="sqli-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** – 基本コストは、ルールステートメントの感度レベルの設定によって異なります。Low のコストは 20 で、High のコストは 30 です。

**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。
**警告**  
リクエストコンポーネントの**本文**、**JSON 本文**、**ヘッダー**、または **Cookie** を検査する場合は、 で検査 AWS WAF できるコンテンツの量に関する制限についてお読みください[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)。

  ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。
+ **オプションのテキスト変換** – 検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

さらに、このステートメントには、次の設定が必要です。
+ **感度レベル** – この設定は、SQL インジェクション一致基準の感度を調整します。オプションは LOW と HIGH です。デフォルトの設定は LOW です。

  HIGH 設定は、より多くの SQL インジェクション攻撃を検出するため、推奨される設定です。感度が高いため、この設定では、特にウェブリクエストに通常とは異なる文字列が一般的に含まれている場合に、より多くの誤検知が生成されます。保護パック (ウェブ ACL) のテストとチューニング中に、誤検知を軽減するためにさらに多くの作業が必要になる場合があります。詳細については、「[AWS WAF 保護のテストとチューニング](web-acl-testing.md)」を参照してください。

  設定が低いほど、SQL インジェクションの検出の厳格度も緩くなり、誤検知も少なくなります。LOW は、SQL インジェクション攻撃に対する他の保護を備えているリソースや、誤検知に対する許容度が低いリソースにとって、より適切な選択肢である可能性があります。

## このルールステートメントの場所
<a name="sqli-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Match type]** (一致タイプ) で **[Attack match condition]** (攻撃一致条件) > **[Contains SQL injection attacks]** (SQL インジェクション攻撃を含む) を選択します。
+ **API** – 「[SqliMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_SqliMatchStatement.html)」

# 文字列一致ルールステートメント
<a name="waf-rule-statement-type-string-match"></a>

このセクションでは、文字列一致ステートメントとは何か、またその仕組みについて説明します。

文字列一致ステートメントは、リクエストで AWS WAF 検索する文字列、検索するリクエスト内の場所、および方法を示します。例えば、リクエストに含まれるクエリ文字列の先頭にある特定の文字列、またはリクエストの `User-agent` ヘッダーと完全に一致する特定の文字列を検索できます。通常、文字列は印刷可能な ASCII 文字で構成されますが、16 進数 0x00 〜 0xFF (10 進数 0 〜 255) の任意の文字を使用できます。

## ルールステートメントの特性
<a name="string-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** – 基本コストは、使用する一致のタイプによって異なります。
+ **次の文字列に完全一致** - 2 
+ **文字列で始まる** - 2 
+ **文字列で終わる** - 2 
+ **文字列を含む** - 10 
+ **単語を含む** – 10 

**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。
**警告**  
リクエストコンポーネント**本文**、**JSON 本文**、**ヘッダー**、または **Cookie** を検査する場合は、 で検査 AWS WAF できるコンテンツ量の制限についてお読みください[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)。

  ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。
+ **オプションのテキスト変換** – 検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

さらに、このステートメントには、次の設定が必要です。
+ **一致する文字列** – これは、指定されたリクエストコンポーネント AWS WAF と比較する文字列です。通常、文字列は印刷可能な ASCII 文字で構成されますが、16 進数 0x00 〜 0xFF (10 進数 0 〜 255) の任意の文字を使用できます。
+ **文字列一致条件** – AWS WAF 実行する検索タイプを示します。
  + **Exactly matches string** (次の文字列に完全一致) - リクエストコンポーネントの文字列と値が同一です。
  + **Starts with string** (次の文字列で始まる) - この文字列は、リクエストコンポーネントの先頭に出現します。
  + **Ends with string** (次の文字列で終わる) - この文字列は、リクエストコンポーネントの末尾に出現します。
  + **Contains string** (次の文字列を含む) - この文字列は、リクエストコンポーネント内の任意の場所に出現します。
  + **Contains word** (次の文字列を含む) - 指定した文字列がリクエストコンポーネントに出現する必要があります。

    このオプションの場合、指定する文字列には英数字またはアンダースコア (A〜Z、a〜z、0〜9、または\$1) のみを使用できます。

    リクエストが一致するには、次のいずれかに当てはまる必要があります。
    + 文字列が、ヘッダーの値など、リクエストコンポーネントの値と正確に一致する。
    + 文字列が、リクエストコンポーネントの先頭にあり、英数字または下線 (\$1) 以外の文字が続く (例: `BadBot;`)。
    + 文字列が、リクエストコンポーネントの末尾にあり、英数字または下線 (\$1) 以外の文字が先行する (例: `;BadBot`)。
    + 文字列が、リクエストコンポーネントの中央にあり、英数字または下線 (\$1) 以外の文字が前後にある (例: `-BadBot;`)。

## このルールステートメントの場所
<a name="string-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Match type]** (一致タイプ) で **[String match condition]** (文字列一致条件) を選択し、一致させる文字列を入力します。
+ **API** – 「[ByteMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_ByteMatchStatement.html)」

# クロスサイトスクリプティング攻撃ルールステートメント
<a name="waf-rule-statement-type-xss-match"></a>

このセクションでは、XSS (クロスサイトスクリプティング) 攻撃ステートメントとは何か、またその仕組みについて説明します。

XSS 攻撃ステートメントは、ウェブリクエストコンポーネント内の悪意のあるスクリプトを検査します。XSS 攻撃では、攻撃者は、悪意のあるクライアントサイトスクリプトを他の正当なウェブブラウザに挿入するための手段として、悪意のないウェブサイトの脆弱性を利用します。

## ルールステートメントの特性
<a name="xss-match-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU**- 40 WCU (基本コストとして)。**[All query parameters]** (すべてのクエリパラメータ) のリクエストコンポーネントを使用する場合、10 WCU を追加します。**[JSON body]** (JSON 本文) のリクエストコンポーネントを使用する場合、基本コストの WCU を倍増させます。適用する各**テキスト変換**について、10 WCU を追加します。

このステートメントタイプは、ウェブリクエストコンポーネントで動作し、次のリクエストコンポーネント設定が必要です。
+ **[リクエストコンポーネント]** — ウェブリクエストの検査対象部分 (クエリ文字列や本文など)。
**警告**  
リクエストコンポーネントの**本文**、**JSON 本文**、**ヘッダー**、または **Cookie** を検査する場合は、 で検査 AWS WAF できるコンテンツの量に関する制限についてお読みください[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)。

  ウェブリクエストコンポーネントの詳細については、「[でのルールステートメント設定の調整 AWS WAF](waf-rule-statement-fields.md)」を参照してください。
+ **オプションのテキスト変換** – 検査する前にリクエストコンポーネントで AWS WAF 実行する変換。例えば、小文字に変換したり、空白を正規化したりできます。複数の変換を指定すると、 はリストされた順序で変換 AWS WAF を処理します。詳細については、「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。

## このルールステートメントの場所
<a name="xss-match-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[Match type]** (一致タイプ) で **[Attack match condition]** (攻撃一致条件) > **[Contains XSS injection attacks]** (SQL インジェクション攻撃を含む) を選択します。
+ **API** – 「[XssMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_XssMatchStatement.html)」

# での論理ルールステートメントの使用 AWS WAF
<a name="waf-rule-statements-logical"></a>

このセクションでは、ロジックルールステートメントとは何か、またその仕組みについて説明します。

論理ルールステートメントを使用して他のステートメントを組み合わせたり、結果を否定したりします。すべての論理ルールステートメントに、1 つ以上のネストされたステートメントが必要です。

ルールステートメントの結果を論理的に結合または否定するには、ステートメントを論理ルールステートメントの下にネストします。

論理ルールステートメントはネスト可能です。他の論理ルールステートメント内にネストして、スコープダウンステートメントで使用できます。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

**注記**  
コンソールのビジュアルエディタは、1 レベルのルールステートメントのネストをサポートしており、多くのニーズに対応しています。より多くのレベルをネストするには、コンソールでルールの JSON 表現を編集するか、API を使用します。

この表では、論理ルールステートメントについて説明し、それぞれの保護パック (ウェブ ACL) キャパシティーユニット (WCU) 使用量を計算するためのガイドラインを提供します。WCU の詳細については、「[のウェブ ACL キャパシティユニット (WCUs) AWS WAF](aws-waf-capacity-units.md)」を参照してください。


| 論理ステートメント  | 説明 | WCU | 
| --- | --- | --- | 
| [AND のロジック](waf-rule-statement-type-and.md) | ネストされたステートメントを AND ロジックと組み合わせます。 | ネストされたステートメントに基づく | 
|  [NOT のロジック](waf-rule-statement-type-not.md)  |  ネストされたステートメントの結果を否定します。  |  ネストされたステートメントに基づく  | 
| [OR のロジック](waf-rule-statement-type-or.md) | ネストされたステートメントを OR ロジックと組み合わせます。 | ネストされたステートメントに基づく | 

# AND ルールステートメント
<a name="waf-rule-statement-type-and"></a>

AND ルールステートメントは、ネストされたステートメントを論理 AND 演算と組み合わせるため、AND ステートメントが一致するには、ネストされたステートメントがすべて一致する必要があります。これには、1 つ以上のネストされたステートメントが必要です。

## ルールステートメントの特性
<a name="and-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="and-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[matches all the statements (AND)]** (すべてのステートメントに一致する場合 (AND)) を選択してから、ネストされたステートメントに入力します。
+ **API** – [AndStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AndStatement.html)

## 例
<a name="and-rule-statement-examples"></a>

次のリストは、AND および NOT 論理ルールステートメントを使用して、SQL インジェクション攻撃ステートメントの一致から誤検知を排除する方法を示しています。この例では、誤検知につながるリクエストと一致する 1 バイトの一致ステートメントを記述できるとします。

AND ステートメントは、バイト一致ステートメントと一致せず、SQL インジェクション攻撃ステートメントと一致するリクエストと一致します。

```
{
      "Name": "SQLiExcludeFalsePositives",
      "Priority": 0,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "NotStatement": {
                "Statement": {
                  "ByteMatchStatement": {
                    "SearchString": "string identifying a false positive",
                    "FieldToMatch": {
                      "Body": {
                        "OversizeHandling": "MATCH"
                      }
                    },
                    "TextTransformations": [
                      {
                        "Priority": 0,
                        "Type": "NONE"
                      }
                    ],
                    "PositionalConstraint": "CONTAINS"
                  }
                }
              }
            },
            {
              "SqliMatchStatement": {
                "FieldToMatch": {
                  "Body": {
                    "OversizeHandling": "MATCH"
                  }
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "SQLiExcludeFalsePositives"
      }
    }
```

コンソールルールビジュアルエディタを使用して、非論理ステートメントまたは NOT ステートメントを OR または AND ステートメントの下にネストできます。NOT ステートメントのネストは、前の例に示されています。

コンソールルールビジュアルエディタを使用すると、ほとんどのネスト可能なステートメントを、前の例に示したような論理ルールステートメントの下にネストできます。ビジュアルエディタを使用して OR または AND ステートメントをネストすることはできません。このタイプのネストを設定するには、JSON でルールステートメントを指定する必要があります。例えば、次の JSON ルールリストには、AND ステートメント内にネストされた OR ステートメントが含まれています。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# NOT ルールステートメント
<a name="waf-rule-statement-type-not"></a>

NOT ルールステートメントは、単一のネストされたステートメントの結果を論理的に否定するため、NOT ステートメントが一致するには、ネストされたステートメントが一致してはならず、その逆も同様です。これには、ネストされたステートメントが 1 つ必要です。

例えば、特定の国を送信元としないリクエストをブロックする場合は、アクションをブロックに設定した NOT ステートメントを作成し、国を指定する地理的一致ステートメントをネストします。

## ルールステートメントの特性
<a name="not-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="not-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[doesn't match the statement (NOT)]** (すべてのステートメントに一致しない場合 (NOT)) を選択してから、ネストされたステートメントに入力します。
+ **API** – 「[NotStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_NotStatement.html)」

# OR ルールステートメント
<a name="waf-rule-statement-type-or"></a>

OR ルールステートメントは、ネストされたステートメントを OR ロジックと組み合わせるため、OR ステートメントが一致するには、ネストされたステートメントのいずれか 1 つが一致する必要があります。これには、1 つ以上のネストされたステートメントが必要です。

例えば、特定の国から送信されたリクエストや特定のクエリ文字列を含むリクエストをブロックする場合は、OR ステートメントを作成し、その国の地理的照合ステートメントとクエリ文字列の文字列照合ステートメントをネストします。

代わりに、特定の国から送信されて*いない*リクエストや特定のクエリ文字列を含むリクエストをブロックする場合は、前述の OR ステートメントを変更して、NOT ステートメント内の 1 レベル下に地理的照合ステートメントをネストします。コンソールでは 1 レベルのネストしかサポートされないため、このレベルのネストでは JSON 形式を使用する必要があります。

## ルールステートメントの特性
<a name="or-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="or-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[matches at least one of the statements (OR)]** (1 つ以上のステートメントに一致する場合 (OR)) を選択してから、ネストされたステートメントに入力します。
+ **API** – 「[OrStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_OrStatement.html)」

**例**  
次のリストは、OR を使用して他の 2 つのステートメントを結合する方法を示しています。ネストされたステートメントのいずれかが一致する場合、OR ステートメントは一致します。

```
{
  "Name": "neitherOfTwo",
  "Priority": 1,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "neitherOfTwo"
  },
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "GeoMatchStatement": {
            "CountryCodes": [
              "CA"
            ]
          }
        },
        {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777"
          }
        }
      ]
    }
  }
}
```

コンソールルールビジュアルエディタを使用すると、ネスト可能なステートメントのほとんどを論理ルールステートメントの下にネストできますが、ビジュアルエディタを使用して OR または AND ステートメントをネストすることはできません。このタイプのネストを設定するには、JSON でルールステートメントを指定する必要があります。例えば、次の JSON ルールリストには、AND ステートメント内にネストされた OR ステートメントが含まれています。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# でのレートベースのルールステートメントの使用 AWS WAF
<a name="waf-rule-statement-type-rate-based"></a>

このセクションでは、レートベースのルールステートメントとは何か、またその仕組みについて説明します。

レートベースのルールでは、受信リクエストをカウントし、レートが速すぎる場合にはリクエストを制限します。このルールは、条件に従ってリクエストを集約し、ルールの評価ウインドウ、リクエスト制限とアクション設定に基づいて集約されたグループを記入およびレート制限します。

**注記**  
Bot Control AWS マネージドルールルールグループのターゲットを絞った保護レベルを使用して、ウェブリクエストをレート制限することもできます。マネージドルールグループの使用には追加料金が発生します。詳細については、「[レートベースのルールとターゲットを絞った Bot Control ルールにおけるレート制限のオプション](waf-rate-limiting-options.md)」を参照してください。

AWS WAF は、使用するレートベースのルールのインスタンスごとにウェブリクエストを個別に追跡および管理します。たとえば、2 つのウェブ ACLs で同じレートベースのルール設定を指定すると、2 つのルールステートメントはそれぞれレートベースのルールの個別のインスタンスを表し、それぞれが独自の追跡と管理を取得します AWS WAF。ルールグループ内でレートベースのルールを定義し、そのルールグループを複数の場所で使用する場合、各使用により、独自の追跡および管理を取得するレートベースのルールの個別のインスタンスが作成されます AWS WAF。

**ネスト不可** - このステートメントタイプを他のステートメント内にネストすることはできません。このタイプは、保護パック (ウェブ ACL) およびルールグループに直接含めることができます。

**スコープダウンステートメント** – このルールタイプは、オプションのスコープダウンステートメントを使用して、レートベースのステートメントが追跡するリクエストの範囲を絞り込むことができます。スコープダウンステートメントは、他のルール設定に応じて、オプションでも必須でもかまいません。詳細については、このセクションで説明します。スコープダウンステートメントの詳細については、[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md) を参照してください。

**WCU** - 2 個の WCU (基本コストとして)。指定するカスタム集約キーごとに、30 個の WCU を追加します。ルールでスコープダウンステートメントを使用する場合は、その分の WCU を計算して追加します。

**このルールステートメントの場所**
+ 保護パック (ウェブ ACL) のコンソールの**ルールビルダー** – **[Rule]** (ルール) の **[Type]** (タイプ) で、**[Rate-based rule]** (レートベースのルール) を選択します。
+ **API** – 「[RateBasedStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RateBasedStatement.html)」

**Topics**
+ [でのレートベースのルールの高レベル設定 AWS WAF](waf-rule-statement-type-rate-based-high-level-settings.md)
+ [のレートベースのルールに関する注意事項 AWS WAF](waf-rule-statement-type-rate-based-caveats.md)
+ [でのレートベースのルールの集計 AWS WAF](waf-rule-statement-type-rate-based-aggregation-options.md)
+ [レートベースのルール集約インスタンスとカウント](waf-rule-statement-type-rate-based-aggregation-instances.md)
+ [でのリクエストへのレート制限の適用 AWS WAF](waf-rule-statement-type-rate-based-request-limiting.md)
+ [のレートベースのルールの例 AWS WAF](waf-rule-statement-type-rate-based-examples.md)
+ [レートベースのルールによってレート制限されている IP アドレスの一覧表示](listing-managed-ips.md)

# でのレートベースのルールの高レベル設定 AWS WAF
<a name="waf-rule-statement-type-rate-based-high-level-settings"></a>

レートベースのルールステートメントでは、次の概要レベル設定を使用します。
+ **評価ウィンドウ** – 現在の時点から遡って、 AWS WAF がリクエスト数に含めるべき時間（秒単位）。たとえば、設定が 120 の場合、 がレート AWS WAF をチェックすると、現在の時刻の直前の 2 分間のリクエストがカウントされます。有効な設定は、60 (1 分）、120 (2 分）、300 (5 分）、600 (10 分) で、300 (5 分) がデフォルトです。

  この設定では、レート AWS WAF をチェックする頻度ではなく、チェックするたびにレートがどの程度戻るかが決まります。 AWS WAF は、評価ウィンドウの設定とは無関係のタイミングでレートを頻繁にチェックします。
+ **レート制限** – 指定された評価ウィンドウに対して追跡 AWS WAF する基準に一致するリクエストの最大数。許可される最小制限設定は 10 です。この制限を超えると、 は条件に一致する追加のリクエストにルールアクション設定 AWS WAF を適用します。

  AWS WAF は、設定した制限の近くにレート制限を適用しますが、 は制限の完全一致を保証しません。詳細については、「[レートベースのルールの規制](waf-rule-statement-type-rate-based-caveats.md)」を参照してください。
+ **リクエスト集約** – レートベースのルールがカウントおよびレート制限するウェブリクエストで使用する集約条件です。設定したレート制限は、各集約インスタンスに適用されます。詳細については、「[レートベースのルールの集計](waf-rule-statement-type-rate-based-aggregation-options.md)」および「[集約インスタンスおよびカウント](waf-rule-statement-type-rate-based-aggregation-instances.md)」を参照してください。
+ **アクション** – ルールによってレート制限されているリクエストに対して実行するアクションです。Allow 以外のルールアクションを使用できます。これは通常どおりルールレベルで設定されますが、レートベースのルールに固有の制限と動作があります。ルールアクションの一般情報については、「[でのルールアクションの使用 AWS WAF](waf-rule-action.md)」を参照してください。レート制限の固有情報については、このセクションの [でのリクエストへのレート制限の適用 AWS WAF](waf-rule-statement-type-rate-based-request-limiting.md) を参照してください。
+ **検査の範囲とレート制限** – スコープダウンステートメントを追加して、レートベースのステートメントが追跡およびレート制限するリクエストの範囲を絞り込むことができます。スコープダウンステートメントを指定すると、ルールはスコープダウンステートメントに一致するリクエストのみを集約、カウント、およびリスト制限します。リクエスト集約オプションの **[すべてをカウント]** を選択する場合は、スコープダウンステートメントが必要です。スコープダウンステートメントの詳細については、「[スコープダウンステートメントの使用](waf-rule-scope-down-statements.md)」を参照してください。
+ **(オプション) 転送された IP 設定** – 単独で、またはカスタムキー設定の一部としてリクエスト集約で **[ヘッダーの IP アドレス]** を指定する場合にのみ使用されます。 AWS WAF は指定されたヘッダーの最初の IP アドレスを取得し、それを集約した値として使用します。この用途によく使用されるヘッダーは `X-Forwarded-For` ですが、任意のヘッダーを指定できます。詳細については、「[転送された IP アドレスの使用](waf-rule-statement-forwarded-ip-address.md)」を参照してください。

# のレートベースのルールに関する注意事項 AWS WAF
<a name="waf-rule-statement-type-rate-based-caveats"></a>

このセクションでは、レートベースのルールを使用するための規制を一覧表示します。

AWS WAF レート制限は、高いリクエストレートを制御し、アプリケーションの可用性を可能な限り最も効率的かつ効果的な方法で保護するように設計されています。リクエストレートを正確に制限することを意図したものではありません。
+ AWS WAF は、より最近のリクエストをより重視するアルゴリズムを使用して、現在のリクエストレートを推定します。このため、 AWS WAF は設定した制限の近くにレート制限を適用しますが、 は正確な制限の一致を保証しません。
+ がリクエストのレートを AWS WAF 見積もるたびに、 は設定された評価ウィンドウ中に着信したリクエストの数を AWS WAF 振り返ります。このような要因や伝播の遅延などの要因により、 AWS WAF が検出してレート制限する前に、リクエストが最大数分間高すぎる可能性があります。同様に、リクエスト率が一定期間制限以下になると、 AWS WAF がその減少を検出してレート制限のアクションを停止するまで時間がかかることがあります。通常、この遅延は 30 秒未満です。
+ 使用中のルールのレート制限設定を変更すると、その変更はルールのレート制限カウントをリセットします。これにより、ルールのレート制限アクティビティを最大 1 分間一時停止できます。レート制限設定は、評価ウィンドウ、レート制限、リクエスト集約設定、転送された IP 設定、検査範囲です。

# でのレートベースのルールの集計 AWS WAF
<a name="waf-rule-statement-type-rate-based-aggregation-options"></a>

このセクションでは、リクエストを集約するためのオプションについて説明します。

デフォルトでは、レートベースのルールはリクエスト IP アドレスに基づき、リクエストを集約してレート制限します。他のさまざまな集約キーやキーの組み合わせを使用するようにルールを設定できます。例えば、転送された IP アドレス、HTTP メソッド、またはクエリ引数に基づいて集約できます。IP アドレスと HTTP メソッド、または 2 つの異なる Cookie の値など、集約キーの組み合わせを指定できます。

**注記**  
リクエストを評価したり、ルールによってレート制限したりするには、集約キーで指定するすべてのリクエストコンポーネントがウェブリクエストに含まれている必要があります。

レートベースのルールは、次の集約オプションを使用して設定できます。
+ **送信元 IP アドレス** – ウェブリクエストの発信元 IP アドレスのみを使用して集約します。

  送信元 IP アドレスには、発信元クライアントのアドレスが含まれていない場合があります。ウェブリクエストが 1 つ以上のプロキシまたはロードバランサーを経由する場合、これには最後のプロキシのアドレスが含まれます。
+ **ヘッダーの IP アドレス** – HTTP ヘッダー内のクライアントアドレスのみを使用して集約します。これは転送された IP アドレスとも呼ばれます。

  この設定では、ヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。不一致の場合、レートベースのルールは、リクエストをカウントまたはレート制限しません。一致の場合、レートベースのルールは、指定されたヘッダーに不正な形式の IP アドレスを持つ他のリクエストとともに、リクエストをグループ化します。

  このオプションでは、プロキシによって一貫性のないヘッダー処理が行われ、検査を回避するように変更される可能性があるため、注意が必要です。追加情報とベストプラクティスについては、「[で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)」を参照してください。
+ **ASN** – ソース IP アドレスに関連付けられた AS 番号 (ASN) を集約キーとして使用して集約します。これは、発信元クライアントのアドレスでは可能性があります。ウェブリクエストが 1 つ以上のプロキシまたはロードバランサーを経由する場合、これには最後のプロキシのアドレスが含まれます。

  が IP アドレスから ASN を取得 AWS WAF できない場合、ASN は ASN 0 としてカウントされます。マッピングされていない ASN にレート制限を適用しない場合は、ASN 0 のリクエストを除外するスコープダウンルールを作成できます。
+ **ヘッダーの ASN** – HTTP ヘッダー内のクライアント IP アドレスに関連付けられた ASN を使用して集約します。これは転送された IP アドレスとも呼ばれます。この設定では、無効または不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。転送された IP 設定でフォールバック動作が一致するように設定した場合、 は無効な IP アドレスを一致する値として AWS WAF 扱います。これにより、 AWS WAF はレートベースのルールの複合キーの残りの部分の評価を継続できます。不一致の場合、レートベースのルールは、リクエストをカウントまたはレート制限しません。

  このオプションでは、プロキシによって一貫性のないヘッダー処理が行われ、検査を回避するように変更される可能性があるため、注意が必要です。追加情報とベストプラクティスについては、「[で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)」を参照してください。
+ **すべてをカウント** – ルールのスコープダウンステートメントに一致するすべてのリクエストをカウントおよびレート制限します。このオプションには、スコープダウンステートメントが必要です。これは通常、特定のラベルが付いた全リクエストや特定の地域からの全リクエストなど、特定のリクエストセットをレート制限するために使用されます。
+ **カスタムキー** – 1 つ以上のカスタム集約キーを使用して集約します。いずれかの IP アドレスオプションを他の集約キーと組み合わせるには、それらをカスタムキーで定義します。

  カスタム集約キーは、「[でコンポーネントをリクエストする AWS WAF](waf-rule-statement-fields-list.md)」で説明されているウェブリクエストコンポーネントオプションのサブセットです。

  キーオプションは次のとおりです。特に明記されていない限り、オプションは複数回使用できます。例えば、2 つのヘッダーや 3 つのラベル名前空間などが使用可能です。
  + **ラベル名前空間** – ラベル名前空間を集約キーとして使用します。指定されたラベル名前空間を持つ個別の完全修飾ラベル名はそれぞれ、集約インスタンスに影響します。カスタムキーとしてラベル名前空間を 1 つだけ使用する場合、各ラベル名は集約インスタンスを完全に定義します。

    レートベースのルールが使用するラベルは、保護パック (ウェブ ACL) であらかじめ評価されたルールによってリクエストに追加されたものに限ります。

    ラベル名前空間とラベル名の詳細については、「[でのラベル構文と命名要件 AWS WAF](waf-rule-label-requirements.md)」を参照してください。
  + **ヘッダー** – 名前付きヘッダーを集約キーとして使用します。ヘッダー内の個別の値はそれぞれ、集約インスタンスに影響します。

    ヘッダーはオプションでテキスト変換を実行します。「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。
  + **Cookie** – 名前付き Cookie を集約キーとして使用します。Cookie 内の個別の値はそれぞれ、集約インスタンスに影響します。

    Cookie はオプションでテキスト変換を実行します。「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。
  + **クエリ引数** – リクエスト内で 1 つのクエリ引数を集約キーとして使用します。名前付きクエリ引数の個別の値はそれぞれ、集約インスタンスに影響します。

    クエリ引数はオプションでテキスト変換を実行します。「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。
  + **クエリ文字列** – リクエスト内のクエリ文字列全体を集約キーとして使用します。個別のクエリ文字列はそれぞれ、集約インスタンスに影響します。このキータイプは一度だけ使用できます。

    クエリ文字列はオプションでテキスト変換を実行します。「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。
  + **URI パス** — リクエスト内の URI パスを集約キーとして使用します。個別の URI パスはそれぞれ、集約インスタンスに影響します。このキータイプは一度だけ使用できます。

    URI パスはオプションでテキスト変換を実行します。「[でのテキスト変換の使用 AWS WAF](waf-rule-statement-transformation.md)」を参照してください。
  + **JA3 フィンガープリント** – リクエストで JA3 フィンガープリントを集計キーとして使用します。個別の JA3 フィンガープリントはそれぞれ、集約インスタンスに影響します。このキータイプは一度だけ使用できます。
  + **JA4 フィンガープリント** – リクエストで JA4 フィンガープリントを集計キーとして使用します。個別の JA4 フィンガープリントはそれぞれ、集約インスタンスに影響します。このキータイプは一度だけ使用できます。
  + **HTTP メソッド** – リクエストの HTTP メソッドを集約キーとして使用します。個別の HTTP メソッドはそれぞれ、集約インスタンスに影響します。このキータイプは一度だけ使用できます。
  + **IP アドレス** – ウェブリクエストの発信元 IP アドレスを他のキーと組み合わせて集約します。

    これには、発信元クライアントのアドレスが含まれていない可能性があります。ウェブリクエストが 1 つ以上のプロキシまたはロードバランサーを経由する場合、これには最後のプロキシのアドレスが含まれます。
  + **ヘッダーの IP アドレス** – HTTP ヘッダー内のクライアントアドレスを他のキーと組み合わせて集約します。これは転送された IP アドレスとも呼ばれます。

    このオプションでは、プロキシによって一貫性のないヘッダー処理が行われ、検査を回避するように変更される可能性があるため、注意が必要です。追加情報とベストプラクティスについては、「[で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)」を参照してください。

# レートベースのルール集約インスタンスとカウント
<a name="waf-rule-statement-type-rate-based-aggregation-instances"></a>

このセクションでは、レートベースのルールがウェブリクエストを評価する方法について説明します。

レートベースのルールが集約条件を使用してウェブリクエストを評価する場合、指定された集約キーに対してルールが検出した一意の値セットはそれぞれ、一意の *集約インスタンス* を定義します。
+ **複数キー** - 複数のカスタムキーを定義した場合、各キーの値は集約インスタンスの定義に影響します。値の一意の組み合わせはそれぞれ、集約インスタンスを定義します。
+ **単一キー** - カスタムキーで単一キーを選択した場合、またはシングルトン IP アドレスの選択肢の中から単一キーを選択した場合、キーの一意の値はそれぞれ、集約インスタンスを定義します。
+ **すべてをカウント - キーなし** - 集約オプションの **[すべてをカウント]** を選択した場合、ルールが評価するすべてのリクエストは、ルールの 1 つの集約インスタンスに属します。この選択には、スコープダウンステートメントが必要です。

 

レートベースのルールは、識別された集約インスタンスごとにウェブリクエストを個別にカウントします。

例えば、レートベースのルールが次の IP アドレスと HTTP メソッドの値を持つウェブリクエストを評価するとします。
+ IP アドレス 10.1.1.1、HTTP メソッド POST
+ IP アドレス 10.1.1.1、HTTP メソッド GET
+ IP アドレス 127.0.0.0、HTTP メソッド POST
+ IP アドレス 10.1.1.1、HTTP メソッド GET

このルールは、集約条件に従ってさまざまな集約インスタンスを作成します。
+ 集約基準が IP アドレスのみの場合、個々の IP アドレスは集約インスタンスであり、 はリクエストを個別に AWS WAF カウントします。この例の集約インスタンスおよびリクエストカウントは次のようになります。
  + IP アドレス 10.1.1.1: カウント 3
  + IP アドレス 127.0.0.0: カウント 1
+ 集約条件が HTTP メソッドの場合、個々の HTTP メソッドが集約インスタンスになります。この例の集約インスタンスおよびリクエストカウントは次のようになります。
  + HTTP メソッド POST: カウント 2
  + HTTP メソッド GET: カウント 2
+ 集約条件が IP アドレスと HTTP メソッドの場合、各 IP アドレスと各 HTTP メソッドは、複合的な集約インスタンスに影響します。この例の集約インスタンスおよびリクエストカウントは次のようになります。
  + IP アドレス 10.1.1.1、HTTP メソッド POST: カウント 1
  + IP アドレス 10.1.1.1、HTTP メソッド GET: カウント 2
  + IP アドレス 127.0.0.0、HTTP メソッド POST: カウント 1

# でのリクエストへのレート制限の適用 AWS WAF
<a name="waf-rule-statement-type-rate-based-request-limiting"></a>

このセクションでは、レートベースのルールでレート制限の動作の仕組みについて説明します。

レートベースのルールのリクエストをレート制限するために AWS WAF が使用する条件は、 AWS WAF がルールのリクエストを集計するために使用する条件と同じです。ルールのスコープダウンステートメントを定義すると、 はスコープダウンステートメントに一致するリクエスト AWS WAF のみを集計、カウント、レート制限します。

レートベースのルールが特定のウェブリクエストにルールアクション設定を適用する一致条件は、次のとおりです。
+ ウェブリクエストは、ルールのスコープダウンステートメントと一致している（定義されている場合）。
+ ウェブリクエストは、現在リクエストカウントがルールの制限を超えている集約インスタンスに属している。

**がルールアクション AWS WAF を適用する方法**  
レートベースのルールがリクエストにレート制限を適用すると、ルールアクションが適用されます。アクション仕様でカスタム処理やラベル付けを定義している場合、ルールはそれらを適用します。このリクエスト処理は、一致ルールが一致したウェブリクエストにアクション設定を適用する方法と同じです。レートベースのルールは、レート制限が積極的に行われているリクエストにのみラベルを適用したり、他のアクションを実行したりします。

Allow 以外のルールアクションを使用できます。ルールアクションの一般情報については、「[でのルールアクションの使用 AWS WAF](waf-rule-action.md)」を参照してください。

次のリストは、各アクションのレート制限の仕組みを示しています。
+ **Block** – リクエストを AWS WAF ブロックし、定義したカスタムブロック動作を適用します。
+ **Count** – リクエストを AWS WAF カウントし、定義したカスタムヘッダーまたはラベルを適用し、リクエストの保護パック (ウェブ ACL) の評価を続行します。

  このアクションはリクエストのレートを制限しません。制限を超えるリクエストのみを記入します。
+ **CAPTCHA または Challenge** - AWS WAF はリクエストのトークンの状態に応じて、Count または Block のいずれかのようにリクエストを処理します。

  このアクションは、有効なトークンを持つリクエストのレートを制限しません。これは、リクエストが指定された上限を超えていて、さらに有効なトークンが含まれていない場合、そのリクエストの数を制限します。
  + リクエストに有効期限が切れていない有効なトークンがない場合、このアクションはリクエストをブロックし、CAPTCHA パズルまたはブラウザのチャレンジをクライアントに返送します。

    エンドユーザーまたはクライアントブラウザが正常に応答すると、クライアントは有効なトークンを受け取り、元のリクエストが自動的に再送信されます。集約インスタンスのレート制限がまだ有効である場合、有効期限が切れていない有効なトークンを含むこの新しいリクエストには、次の箇条書きで説明するアクションが適用されます。
  + リクエストに有効期限が切れていない有効なトークンがある場合、CAPTCHA また Challenge アクションはトークンを検証し、Count アクションと同様にリクエストに対してアクションを実行しません。レートベースのルールは、終了アクションを実行せずにリクエスト評価を保護パック (ウェブ ACL) に戻し、保護パック (ウェブ ACL) はリクエストの評価を続行します。

  詳細については、「[CAPTCHA および Challengeの AWS WAF](waf-captcha-and-challenge.md)」を参照してください。

**IP アドレスまたは転送された IP アドレスのみをレート制限する場合**  
転送されたIPアドレスに対してのみIPアドレスのレート制限を行うようにルールを設定すると、そのルールが現在レート制限を適用しているIPアドレスのリストを取得できます。スコープダウンステートメントを使用する場合、レート制限されるリクエストは、スコープダウンステートメントと一致する IP リスト内のリクエストだけです。IP アドレスリストの取得の詳細については、「[レートベースのルールによってレート制限されている IP アドレスの一覧表示](listing-managed-ips.md)」を参照してください。

# のレートベースのルールの例 AWS WAF
<a name="waf-rule-statement-type-rate-based-examples"></a>

このセクションでは、一般的なレートベースのルールのさまざまなユースケースにおける設定例について説明します。

各例は、ユースケースの説明を提供し、カスタム設定ルールの JSON リストにそのソリューションを示します。

**注記**  
これらの例に示されている JSON リストは、ルールを設定し、**Rule JSON エディタ**を使用して編集することにより、コンソールで作成されました。

**Topics**
+ [ログインページへのリクエストをレート制限する](waf-rate-based-example-limit-login-page.md)
+ [任意の IP アドレス、ユーザーエージェントペアからのログインページへのリクエストをレート制限する](waf-rate-based-example-limit-login-page-keys.md)
+ [特定のヘッダーが欠落しているリクエストをレート制限する](waf-rate-based-example-limit-missing-header.md)
+ [特定のラベルを使用してリクエストをレート制限する](waf-rate-based-example-limit-labels.md)
+ [ラベル名前空間が指定されたラベルのリクエストをレート制限する](waf-rate-based-example-limit-label-aggregation.md)
+ [特定の ASN を使用してリクエストをレート制限する](waf-rate-based-example-limit-asn.md)

# ログインページへのリクエストをレート制限する
<a name="waf-rate-based-example-limit-login-page"></a>

ウェブサイトのログインページへのリクエスト数を、サイトの他の部分へのトラフィックに影響を与えることなく制限するには、ログインページへのリクエストに一致するスコープダウンステートメントを含むレートベースのルールを作成し、リクエスト集約を **[すべてをカウント]** に設定します。

レートベースのルールは、単一の集約インスタンス内のログインページのすべてのリクエストをカウントし、リクエストが制限を超えたときに、スコープダウンステートメントに一致するすべてのリクエストにルールアクションを適用します。

次の JSON リストは、このルール設定の例を示しています。集約をすべてカウントするオプションは、`CONSTANT` 設定として JSON に記載されています。この例は、`/login` で始まるログインページと一致します。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 1000,
      "EvaluationWindowSec": 300,
      "AggregateKeyType": "CONSTANT",
      "ScopeDownStatement": {
        "ByteMatchStatement": {
          "FieldToMatch": {
            "UriPath": {}
          },
          "PositionalConstraint": "STARTS_WITH",
          "SearchString": "/login",
          "TextTransformations": [
            {
              "Type": "NONE",
              "Priority": 0
            }
          ]
        }
      }
    }
  }
}
```

# 任意の IP アドレス、ユーザーエージェントペアからのログインページへのリクエストをレート制限する
<a name="waf-rate-based-example-limit-login-page-keys"></a>

IP アドレス、ユーザーエージェントペアが制限を超えた場合に、ウェブサイトのログインページへのリクエスト数を制限するには、リクエスト集約を **[カスタムキー]** に設定して集約条件を指定します。

次の JSON リストは、このルール設定の例を示しています。この例では、IP アドレス、ユーザーエージェントペアごとに 5 分間の時間枠でのお制限を 100 リクエストに設定しています。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "EvaluationWindowSec": 300,
      "AggregateKeyType": "CUSTOM_KEYS",
      "CustomKeys": [
        {
          "Header": {
            "Name": "User-Agent",
            "TextTransformations": [
              {
                "Priority": 0,
                "Type": "NONE"
              }
            ]
          }
        },
        {
          "IP": {}
        }
      ],
      "ScopeDownStatement": {
        "ByteMatchStatement": {
          "FieldToMatch": {
            "UriPath": {}
          },
          "PositionalConstraint": "STARTS_WITH",
          "SearchString": "/login",
          "TextTransformations": [
            {
              "Type": "NONE",
              "Priority": 0
            }
          ]
        }
      }
    }
  }
}
```

# 特定のヘッダーが欠落しているリクエストをレート制限する
<a name="waf-rate-based-example-limit-missing-header"></a>

特定のヘッダーが欠落しているリクエスト数を制限するには、スコープダウンステートメントで **[すべてをカウント]** 集約オプションを使用できます。ヘッダーが存在していて値がある場合にのみ true を返すステートメントを含む、論理 `NOT` ステートメントを使用してスコープダウンステートメントを設定します。

次の JSON リストは、このルール設定の例を示しています。

```
{
  "Name": "test-rbr",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-rbr"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 1000,
      "AggregateKeyType": "CONSTANT",
      "EvaluationWindowSec": 300,
      "ScopeDownStatement": {
        "NotStatement": {
          "Statement": {
            "SizeConstraintStatement": {
              "FieldToMatch": {
                "SingleHeader": {
                  "Name": "user-agent"
                }
              },
              "ComparisonOperator": "GT",
              "Size": 0,
              "TextTransformations": [
                {
                  "Type": "NONE",
                  "Priority": 0
                }
              ]
            }
          }
        }
      }
    }
  }
}
```

# 特定のラベルを使用してリクエストをレート制限する
<a name="waf-rate-based-example-limit-labels"></a>

複数のカテゴリのリクエストの数を制限するには、リクエストにラベルを追加する任意のルールまたはルールグループとレート制限を組み合わせることができます。そのためには、保護パック (ウェブ ACL) を次のように設定します。
+ ラベルを追加するルールまたはルールグループを追加し、レート制限するリクエストがブロックまたは許可されないように設定します。マネージドルールグループを使用する場合、この動作を実現するために一部のルールグループのルールアクションを Count にオーバーライドすることが必要になる場合があります。
+ ラベル付けルールとルールグループよりも高い優先度番号設定のレートベースのルールを保護パック (ウェブ ACL) に追加します。 は、最も低いものから順にルール AWS WAF を評価するため、レートベースのルールはラベル付けルールの後に実行されます。ルールのスコープダウンステートメントのラベル一致とラベル集約を組み合わせて、ラベルのレート制限を設定します。

次の例では、Amazon IP 評価リストの AWS Managed Rules ルールグループを使用します。このルールグループのルールである `AWSManagedIPDDoSList` は、IP が DDoS 攻撃に積極的に関与していることがわかっているリクエストを検出し、ラベルを付けます。ルールのアクションは、ルールグループ定義で Count に設定されています。ルールグループの詳細については、「[Amazon IP 評価リストマネージドルールグループ](aws-managed-rule-groups-ip-rep.md#aws-managed-rule-groups-ip-rep-amazon)」を参照してください。

次の保護パック (ウェブ ACL) JSON リストでは、IP 評価ルールグループの後にラベル一致のレートベースのルールが続いています。レートベースのルールでは、スコープダウンステートメントを使用して、ルールグループのルールでマークされたリクエストをフィルタリングします。レートベースのルールステートメントは、フィルタリングされたリクエストを IP アドレスで集約してレート制限します。

```
{
  "Name": "test-web-acl",
  "Id": ... 
  "ARN": ...
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesAmazonIpReputationList",
      "Priority": 0,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesAmazonIpReputationList"
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesAmazonIpReputationList"
      }
    },
    {
      "Name": "test-rbr",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "EvaluationWindowSec": 300,
          "AggregateKeyType": "IP",
          "ScopeDownStatement": {
            "LabelMatchStatement": {
              "Scope": "LABEL",
              "Key": "awswaf:managed:aws:amazon-ip-list:AWSManagedIPDDoSList"
            }
          }
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr"
      }
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-web-acl"
  },
  "Capacity": 28,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:0000000000:webacl:test-web-acl:"
}
```

# ラベル名前空間が指定されたラベルのリクエストをレート制限する
<a name="waf-rate-based-example-limit-label-aggregation"></a>

**注記**  
Bot Control マネージドルールグループの共通レベルルールは、さまざまなカテゴリのボットにラベルを追加しますが、ブロックするのは未検証ボットからのリクエストに限ります。これらのルールの詳細については、「[Bot Control のルールリスト](aws-managed-rule-groups-bot.md#aws-managed-rule-groups-bot-rules)」を参照してください。

Bot Control マネージドルールグループを使用する場合、個々の検証済みボットからのリクエストにレート制限を追加できます。そのためには、Bot Control ルールグループの後に実行されて、リクエストをボット名のラベル別に集約するレートベースのルールを追加します。**[ラベル名前空間]** 集約キーを指定し、名前空間キーを `awswaf:managed:aws:bot-control:bot:name:` と設定します。指定された名前空間を持つ一意のラベルはそれぞれ、集約インスタンスを定義します。例えば、`awswaf:managed:aws:bot-control:bot:name:axios` と `awswaf:managed:aws:bot-control:bot:name:curl` というラベルは、それぞれに集約インスタンスを定義します。

次の保護パック (ウェブ ACL) JSON リストは、この設定を示しています。この例のルールでは、単一のボット集約インスタンスに対するリクエストを 2 分間で最大 1,000 件に制限しています。

```
{
  "Name": "test-web-acl",
  "Id": ... 
  "ARN": ...
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesBotControlRuleSet",
      "Priority": 0,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesBotControlRuleSet",
          "ManagedRuleGroupConfigs": [
            {
              "AWSManagedRulesBotControlRuleSet": {
                "InspectionLevel": "COMMON"
              }
            }
          ]
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesBotControlRuleSet"
      }
    },
    {
      "Name": "test-rbr",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 1000,
          "EvaluationWindowSec": 120,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "LabelNamespace": {
                "Namespace": "awswaf:managed:aws:bot-control:bot:name:"
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr"
      }
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "test-web-acl"
  },
  "Capacity": 82,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:0000000000:webacl:test-web-acl:"
}
```

# 特定の ASN を使用してリクエストをレート制限する
<a name="waf-rate-based-example-limit-asn"></a>

リクエストの IP アドレスに基づいて特定の AS 番号 (ASN)からのリクエスト数を制限するには、リクエスト集約を *カスタムキー* に設定し、集約基準を指定します。

次の JSON は、`X-Forwarded-For` ヘッダーにある転送された IP アドレスから派生した ASN を集計するルールの例を示しています。IP アドレスの形式が正しくないために が ASN を取得 AWS WAF できない場合、フォールバック動作は に設定されます`MATCH`。

```
{
    "Name": "test-rbr",
    "Priority": 0,
    "Statement": {
        "RateBasedStatement": {
            "AggregateKeyType": "CUSTOM_KEYS",
            "CustomKeys": [
                {
                    "ASN": {}
                },
                {
                    "ForwardedIP": {}
                }
            ],
            "EvaluationWindowSec": 300,
            "ForwardedIPConfig": {
                "FallbackBehavior": "MATCH",
                "HeaderName": "X-Forwarded-For"
            },
            "Limit": 2000
        }
    },
    "VisibilityConfig": {
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test-rbr",
        "SampledRequestsEnabled": true
    }
}
```

# レートベースのルールによってレート制限されている IP アドレスの一覧表示
<a name="listing-managed-ips"></a>

このセクションでは、CLI、API、または任意の SDK を使用して、レートベースのルールによって現在レート制限されている IP アドレスのリストにアクセスする方法を調べる方法について説明します。

レートベースのルールが IP アドレスまたは転送された IP アドレスでのみ集計される場合、ルールが現在レート制限している IP アドレスのリストを取得できます。 は、これらの IP アドレスをルールのマネージドキーリストに AWS WAF 保存します。

**注記**  
このオプションは、IP アドレスのみ、またはヘッダーの IP アドレスのみを集約する場合に限り使用できます。カスタムキーのリクエスト集約を使用する場合、カスタムキーでいずれかの IP アドレス仕様を使用しても、レート制限されている IP アドレスのリストは取得できません。

レートベースのルールは、そのルールのスコープダウンステートメントと一致する、ルールのマネージドキーリストからのリクエストにルールアクションを適用します。ルールにスコープダウンステートメントがない場合は、リストに含まれている IP アドレスからのすべてのリクエストにアクションが適用されます。ルールアクションはデフォルトで Block ですが、Allow を除く有効なルールアクションであればどれでもかまいません。単一のレートベースのルールインスタンスを使用して制限をレート AWS WAF できる IP アドレスの最大数は 10,000 です。10,000 を超えるアドレスがレート制限を超えると、 はレートが最も高いアドレス AWS WAF を制限します。

CLI、API、または任意の SDK を使用して、レートベースのルールのマネージドキーリストにアクセスできます。このトピックでは、CLI および API を使用したアクセスについて説明します。現時点では、コンソールからリストにアクセスすることはできません。

 AWS WAF API の場合、コマンドは [GetRateBasedStatementManagedKeys](https://docs.aws.amazon.com/waf/latest/APIReference/API_GetRateBasedStatementManagedKeys.html) です。

 AWS WAF CLI の場合、コマンドは [get-rate-based-statement-managed-keys](https://docs.aws.amazon.com/cli/latest/reference/wafv2/get-rate-based-statement-managed-keys.html) です。

Amazon CloudFront ディストリビューションの保護パック (ウェブ ACL) で使用されているレートベースのルールのレート制限されている IP アドレスのリストを取得する構文を次に示します。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=CLOUDFRONT --region=us-east-1 --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-name=RuleName
```

以下は、リージョンアプリケーション、Amazon API Gateway REST API、Application Load Balancer、 AWS AppSync GraphQL API、Amazon Cognito ユーザープール、 AWS App Runner サービス AWS Amplify、または AWS Verified Access インスタンスの構文を示しています。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=REGIONAL --region=region --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-name=RuleName
```

AWS WAF はウェブリクエストをモニタリングし、保護パック (ウェブ ACL)、オプションのルールグループ、レートベースのルールの一意の組み合わせごとにキーを個別に管理します。例えば、ルールグループ内でレートベースのルールを定義してから、ウェブ ACL でルールグループを使用すると、 AWS WAF はウェブリクエストをモニタリングし、その保護パック (ウェブ ACL)、ルールグループ参照ステートメント、およびレートベースのルールインスタンスのキーを管理できます。2 番目の保護パック (ウェブ ACL) で同じルールグループを使用する場合、 はウェブリクエスト AWS WAF を監視し、この 2 番目の使用のキーを最初とは完全に独立して管理します。

ルールグループ内で定義したレートベースのルールの場合は、ルールグループ内の保護パック (ウェブ ACL) 名とレートベースのルール名に加えて、リクエストでルールグループ参照ステートメントの名前を指定する必要があります。レートベースのルールがルールグループ内で定義され、保護パック (ウェブ ACL) でルールグループが使用されるリージョンレベルのアプリケーションの構文を次に示します。

```
aws wafv2 get-rate-based-statement-managed-keys --scope=REGIONAL --region=region --web-acl-name=WebACLName --web-acl-id=WebACLId --rule-group-rule-name=RuleGroupRuleName --rule-name=RuleName
```

# でのルールグループルールステートメントの使用 AWS WAF
<a name="waf-rule-statements-rule-group"></a>

**注記**  
ルールグループのルールステートメントはネストできません。

このセクションでは、保護パック (ウェブ ACL) で使用できるルールグループのルールステートメントについて説明します。ルールグループの保護パック (ウェブ ACL) キャパシティーユニット (WCU) は、ルールグループの作成時にルールグループの所有者によって設定されます。WCU の詳細については、「[のウェブ ACL キャパシティユニット (WCUs) AWS WAF](aws-waf-capacity-units.md)」を参照してください。


| ルールグループステートメント | 説明 | WCU | 
| --- | --- | --- | 
|  [マネージドルールグループステートメントを使用する](waf-rule-statement-type-managed-rule-group.md)  |  指定されたマネージドルールグループで定義されているルールを実行します。 スコープダウンステートメントを追加することで、ルールグループで評価されるリクエストの範囲を絞り込むことができます。 マネージドルールグループステートメントは、他のステートメントタイプ内にネストできません。  |  ルールグループと、スコープダウンステートメント用の追加の WCU によって定義されます。  | 
| [ルールグループステートメントの使用](waf-rule-statement-type-rule-group.md) | 管理するルールグループで定義されているルールを実行します。 独自のルールグループのルールグループ参照ステートメントにスコープダウンステートメントを追加することはできません。 ルールグループステートメントは、他のステートメントタイプ内にネストできません。  | WCU の制限は、ルールグループを作成するときに定義します。 | 

# でのマネージドルールグループステートメントの使用 AWS WAF
<a name="waf-rule-statement-type-managed-rule-group"></a>

このセクションでは、マネージドルールグループのルールステートメントの仕組みについて説明します。

マネージドルールグループルールステートメントは、保護パック (ウェブ ACL) ルールリストに含まれる参照をマネージドルールグループに追加します。コンソールのルールステートメントにはこのオプションは表示されませんが、保護パック (ウェブ ACL) の JSON 形式を操作しているときには、追加したマネージドルールグループがこのタイプとしてウェブ ACL ルールに表示されます。

マネージドルールグループは、 AWS マネージドルールルールグループのいずれかであり、そのほとんどは AWS WAF お客様が無料で利用できます AWS Marketplace 。有料の AWS マネージドルールルールグループを保護パック (ウェブ ACL) に追加すると、自動的にサブスクライブします。 AWS Marketplace マネージドルールグループは、 を通じてサブスクライブできます AWS Marketplace。詳細については、「[でのマネージドルールグループの使用 AWS WAF](waf-managed-rule-groups.md)」を参照してください。

ルールグループを保護パック (ウェブ ACL) に追加すると、グループ内のルールのアクションを Count またはその他のルールアクションにオーバーライドできます。詳細については、「[でのルールグループアクションの上書き AWS WAF](web-acl-rule-group-override-options.md)」を参照してください。

がルールグループで AWS WAF 評価するリクエストの範囲を絞り込むことができます。これを行うには、ルールグループステートメント内にスコープダウンステートメントを追加します。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。これは、ルールグループがトラフィックに与える影響を管理し、ルールグループを使用するときにトラフィック量に関連するコストを抑えるのに役立ちます。 AWS WAF Bot Control マネージドルールグループでスコープダウンステートメントを使用する情報と例については、「」を参照してください[AWS WAF ボットコントロール](waf-bot-control.md)。

## ルールステートメントの特性
<a name="managed-rule-group-rule-statement-characteristics"></a>

**ネスト不可** - このステートメントタイプを他のステートメント内にネストしたり、ルールグループに含めたりすることはできません。このタイプは保護パック (ウェブ ACL) に直接含めることができます。

**(オプション) スコープダウンステートメント** – このルールタイプは、オプションのスコープダウンステートメントを使用して、ルールグループが評価するリクエストの範囲を絞り込みます。詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

**WCU** - 作成時にルールグループに設定します。

## このルールステートメントの場所
<a name="managed-rule-group-rule-statement-where-to-find"></a>
+ **コンソール** - 保護パック (ウェブ ACL) の作成プロセス中に、**[Add rules and rule groups]** (ルールとルールグループの追加) ページで **[Add managed rule groups]** (マネージドルールグループの追加) を選択し、使用するルールグループを見つけて選択します。
+ **API** – 「[ManagedRuleGroupStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_ManagedRuleGroupStatement.html)」

# でのルールグループステートメントの使用 AWS WAF
<a name="waf-rule-statement-type-rule-group"></a>

このセクションでは、ルールグループルールステートメントの仕組みについて説明します。

ルールグループルールステートメントは、保護パック (ウェブ ACL) ルールリストへの参照を、管理されているルールグループに追加します。コンソールのルールステートメントにはこのオプションは表示されませんが、保護パック (ウェブ ACL) の JSON 形式を操作しているときには、追加した独自のルールグループがこのタイプとして保護パック (ウェブ ACL) ルールに表示されます。独自のルールグループの使用については、「[独自のルールグループの管理](waf-user-created-rule-groups.md)」を参照してください。

ルールグループを保護パック (ウェブ ACL) に追加すると、グループ内のルールのアクションを Count またはその他のルールアクションにオーバーライドできます。詳細については、「[でのルールグループアクションの上書き AWS WAF](web-acl-rule-group-override-options.md)」を参照してください。

## ルールステートメントの特性
<a name="rule-group-rule-statement-characteristics"></a>

**ネスト不可** - このステートメントタイプを他のステートメント内にネストしたり、ルールグループに含めたりすることはできません。このタイプは保護パック (ウェブ ACL) に直接含めることができます。

**WCU** - 作成時にルールグループに設定します。

## このルールステートメントの場所
<a name="rule-group-rule-statement-where-to-find"></a>
+ **コンソール** - 保護パック (ウェブ ACL) の作成プロセス中に、**[Add rules and rule groups]** (ルールとルールグループの追加) ページで、**[Add my own rules and rule groups]** (独自のルールとルールグループの追加)、**[Rule group]** (ルールグループ) を選択し、使用するルールグループを追加します。
+ **API** – 「[RuleGroupReferenceStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_RuleGroupReferenceStatement.html)」