

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

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

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

# AWS WAF インテリジェントな脅威の軽減におけるトークンの使用
<a name="waf-tokens"></a>

このセクションでは、 AWS WAF トークンの動作について説明します。

AWS WAF トークンは、 AWS WAF インテリジェントな脅威の軽減によって提供される強化された保護の不可欠な部分です。トークンは、フィンガープリントとも呼ばれ、クライアントが保存し、送信するすべてのウェブリクエストに提供する単一のクライアントセッションに関する情報のコレクションです。 はトークン AWS WAF を使用して、悪意のあるクライアントセッションを 1 つの IP アドレスから発信した場合でも、正当なセッションから識別して分離します。トークンの使用によるコストは、正規ユーザーにとってはごくわずかですが、ボットネットにとってはかなり高額になります。

AWS WAF はトークンを使用して、アプリケーション統合 SDKs とルールアクション Challengeおよび によって提供されるブラウザおよびエンドユーザーチャレンジ機能をサポートしますCAPTCHA。さらに、トークンは AWS WAF Bot Control とアカウント乗っ取り防止マネージドルールグループの機能を有効にします。

AWS WAF は、サイレントチャレンジや CAPTCHA パズルに正常に応答するクライアントのトークンを作成、更新、暗号化します。トークンを持つクライアントがウェブリクエストを送信すると、暗号化されたトークンが含まれ、トークンを AWS WAF 復号してその内容を検証します。

**Topics**
+ [がトークン AWS WAF を使用する方法](waf-tokens-usage.md)
+ [AWS WAF トークンの特性](waf-tokens-details.md)
+ [でのタイムスタンプの有効期限とトークンイミュニティ時間の設定 AWS WAF](waf-tokens-immunity-times.md)
+ [でのトークンドメインとドメインリストの指定 AWS WAF](waf-tokens-domains.md)
+ [のトークンラベルのタイプ AWS WAF](waf-tokens-labeling.md)
+ [有効な AWS WAF トークンを持たないリクエストのブロック](waf-tokens-block-missing-tokens.md)
+ [CloudFront からの Application Load Balancers に必要な設定](waf-tokens-with-alb-and-cf.md)

# がトークン AWS WAF を使用する方法
<a name="waf-tokens-usage"></a>

このセクションでは、 がトークン AWS WAF を使用する方法について説明します。

AWS WAF はトークンを使用して、次のタイプのクライアントセッション検証を記録および検証します。
+ **CAPTCHA** — CAPTCHA パズルは、ボットと人間のユーザーを区別するうえで役立ちます。CAPTCHA は CAPTCHA ルールアクションによってのみ実行されます。パズルの完了が成功すると、CAPTCHA スクリプトはトークンの CAPTCHA タイムスタンプを更新します。詳細については、「[CAPTCHA および Challengeの AWS WAF](waf-captcha-and-challenge.md)」を参照してください。
+ **チャレンジ** — 通常のクライアントセッションとボットセッションを区別しやすくし、ボットの運用コストを高めるために、チャレンジはサイレントで実行されます。チャレンジが正常に完了すると、チャレンジスクリプトは AWS WAF 必要に応じて から新しいトークンを自動的に取得し、トークンのチャレンジタイムスタンプを更新します。

  AWS WAF は、次の状況でチャレンジを実行します。
  + **アプリケーション統合 SDK** — アプリケーション統合 SDK は、クライアントアプリケーションセッション内で実行され、クライアントがチャレンジの応答に成功した後にのみログイン試行が許可されるようにします。詳細については、「[でのクライアントアプリケーション統合 AWS WAF](waf-application-integration.md)」を参照してください。
  + **Challenge ルールアクション** – 詳細については、「[CAPTCHA および Challengeの AWS WAF](waf-captcha-and-challenge.md)」を参照してください。
  + **CAPTCHA** — CAPTCHA インタースティシャルを実行するときにクライアントがまだトークンを持っていない場合、スクリプトは最初に自動的にチャレンジを実行し、クライアントセッションを検証してトークンを初期化します。

トークンは、インテリジェントな脅威の AWS Managed Rules ルールグループの多くのルールで必要です。このルールは、セッションレベルでのクライアントの区別、ブラウザの特性の判断、アプリケーションウェブページにおける人間のインタラクティビティのレベルの理解などを行うためにトークンを使用します。これらのルールグループは AWS WAF トークン管理を呼び出し、ルールグループが検査するトークンのラベル付けを適用します。
+ **AWS WAF Fraud Control Account Creation Fraud Prevention (ACFP)** – ACFP ルールには、有効なトークンを含むウェブリクエストが必要です。ルールの詳細については、「[AWS WAF Fraud Control アカウント作成不正防止 (ACFP) ルールグループ](aws-managed-rule-groups-acfp.md)」を参照してください。
+ **AWS WAF Fraud Control アカウント乗っ取り防止 (ATP)** – 大量のクライアントセッションや長時間のクライアントセッションを防ぐ ATP ルールには、有効期限が切れていないチャレンジタイムスタンプを持つ有効なトークンを持つウェブリクエストが必要です。詳細については、「[AWS WAF Fraud Control アカウント乗っ取り防止 (ATP) ルールグループ](aws-managed-rule-groups-atp.md)」を参照してください。
+ **AWS WAF Bot Control** – このルールグループのターゲットルールは、有効なトークンなしでクライアントが送信できるウェブリクエストの数を制限し、セッションレベルのモニタリングと管理にトークンセッション追跡を使用します。必要に応じて、ルールは Challenge および CAPTCHA ルールアクションを適用して、トークン取得および有効なクライアント動作を強制します。詳細については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

# AWS WAF トークンの特性
<a name="waf-tokens-details"></a>

各トークンには次の特徴があります。
+ トークンは、`aws-waf-token` という名前のクッキーに保存されます。
+ トークンは暗号化されます。
+ トークンは、次の情報を含む精度の高い識別子でクライアントセッションをフィンガープリントします。
  + クライアントがサイレントチャレンジに対して最後に成功した応答のタイムスタンプ。
  + エンドユーザーが CAPTCHA に対して最後に成功した応答のタイムスタンプ。これは保護機能で CAPTCHA を使用している場合にのみ表示されます。
  + 正規のクライアントを迷惑なトラフィックから切り離すうえで役立つクライアントおよびクライアント行動に関する追加情報。この情報には、自動化されたアクティビティを検出するために使用可能なさまざまなクライアント識別子およびクライアント側の信号が含まれます。収集される情報は一意ではなく、個別の人間を特定することはできません。
    + すべてのトークンには、オートメーションやブラウザ設定の不整合を示唆する要素など、クライアントブラウザの問い合わせから得られたデータが含まれています。この情報は、Challenge アクションによって実行されるスクリプトおよびクライアントアプリケーション SDK によって取得されます。スクリプトはブラウザに積極的に問い合わせて、結果をトークンに含めます。
    + さらに、クライアントアプリケーション統合 SDK を実装すると、トークンには、アプリケーションページとのエンドユーザーのインタラクティビティについて受動的に収集された情報が含まれます。インタラクティビティには、マウスの動き、キーの押下、およびページ上に存在する HTML フォームとのインタラクションが含まれます。この情報は、 AWS WAF  がクライアントにおける人間のインタラクティビティのレベルを検出し、人間ではないように見えるユーザーにチャレンジを提示するのに役立ちます。クライアント側の統合については、「[でのクライアントアプリケーション統合 AWS WAF](waf-application-integration.md)」を参照してください。

セキュリティ上の理由から、 AWS トークンの内容の完全な説明や AWS WAF トークン暗号化プロセスに関する詳細情報は提供しません。

# でのタイムスタンプの有効期限とトークンイミュニティ時間の設定 AWS WAF
<a name="waf-tokens-immunity-times"></a>

このセクションでは、チャレンジと CAPTCHA タイムスタンプの有効期限について説明します。

AWS WAF はチャレンジと CAPTCHA イミュニティ時間を使用して、1 つのクライアントセッションにチャレンジまたは CAPTCHA を提示できる頻度を制御します。エンドユーザーが CAPTCHA に応答に成功した後、そのエンドユーザーに対して別の CAPTCHA が表示されない期間は、CAPTCHA イミュニティ時間によって決まります。同様に、チャレンジのイミュニティ時間は、チャレンジへの応答に成功した後、クライアントセッションが再度チャレンジを受けない期間を決定します。

** AWS WAF トークンイミュニティ時間の仕組み**

AWS WAF は、トークン内の対応するタイムスタンプを更新することで、チャレンジまたは CAPTCHA への正常な応答を記録します。がトークンにチャレンジまたは CAPTCHA がないか AWS WAF 検査すると、現在の時刻からタイムスタンプが減算されます。結果が設定されたイミュニティ時間よりも大きい場合、タイムスタンプは期限切れになります。

** AWS WAF トークンイミュニティ時間の設定可能な側面**

チャレンジおよび CAPTCHA のイミュニティ時間は、保護パック (ウェブ ACL) および CAPTCHA または Challenge ルールアクションを使用する任意のルールで設定できます。
+ 両方のイミュニティ時間におけるデフォルトの保護パック (ウェブ ACL) 設定は 300 秒です。
+ CAPTCHA または Challenge アクションを使用するすべてのルールにイミュニティ時間を指定できます。ルールにイミュニティ時間を指定しない場合、保護パック (ウェブ ACL) の設定が継承されます。
+ CAPTCHA または Challenge アクションを使用するルールグループ内のルールには、ルールのイミュニティ時間を定義しない場合、ルールグループを使用する各保護パック (ウェブ ACL) から設定が継承されます。
+ アプリケーション統合 SDK は、保護パック (ウェブ ACL) のチャレンジイミュニティ時間を使用します。
+ チャレンジイミュニティ時間の最小値は 300 秒です。CAPTCHA イミュニティ時間の最小値は 60 秒です。両方のイミュニティ時間の最大値は 259,200 秒、または 3 日間です。

保護パック (ウェブ ACL) およびルールレベルのイミュニティ時間設定を使用して、CAPTCHA アクション、Challenge、SDK チャレンジ管理の動作を調整できます。たとえば、機密性の高いデータへのアクセスを制御するルールを低いイミュニティ時間で設定し、その後に保護パック (ウェブ ACL) 内で他のルールや SDK が承継するより高いイミュニティ時間を設定できます。

特に CAPTCHA の場合、パズルを解くことは顧客のウェブサイトエクスペリエンスを低下させる恐れがあるため、CAPTCHA のイミュニティ時間を調整すると必要な保護を提供し続けながら、顧客エクスペリエンスへの影響を軽減することに役立ちます。

Challenge および CAPTCHA ルールアクションを使用する際にイミュニティ時間の調整に関する詳細については、「[CAPTCHA および Challenge アクションを使用するベストプラクティス](waf-captcha-and-challenge-best-practices.md)」を参照してください。

# AWS WAF トークンのイミュニティ時間を設定する場所
<a name="waf-tokens-immunity-times-setting"></a>

イミュニティ時間は、保護パック (ウェブ ACL) および Challenge や CAPTCHA ルールアクションを使用するルールで設定できます。

保護パック (ウェブ ACL) およびそのルールの管理に関する一般情報については、「[でのウェブトラフィックメトリクスの表示 AWS WAF](web-acl-working-with.md)」を参照してください。

**保護パック (ウェブ ACL) のイミュニティ時間を設定する場所**
+ **コンソール** — 保護パック (ウェブ ACL) を編集するとき、**[Rules]** (ルール) タブで、**[保護パック (ウェブ ACL) の CAPTCHA 設定]** および **[保護パック (ウェブ ACL) のチャレンジ設定]** ペインの設定を編集して変更します。コンソールでは、保護パック (ウェブ ACL) を作成した後にのみ、保護パック (ウェブ ACL) の CAPTCHA およびチャレンジのイミュニティ時間を設定できます。
+ **コンソールの外部** – 保護パック (ウェブ ACL) のデータタイプには CAPTCHA およびチャレンジの設定パラメータがあり、保護パック (ウェブ ACL) の作成および更新操作に設定して提供できます。

**ルールのイミュニティ時間を設定する場所**
+ **コンソール** – ルールを作成または編集して CAPTCHA または Challenge アクションを指定すると、ルールのイミュニティ時間設定を変更できます。
+ **コンソールの外部** – ルールのデータタイプには CAPTCHA およびチャレンジの設定パラメータがあり、ルールを定義するときに設定できます。

# でのトークンドメインとドメインリストの指定 AWS WAF
<a name="waf-tokens-domains"></a>

このセクションでは、 がトークンで AWS WAF 使用し、 がトークンで受け入れるドメインを設定する方法について説明します。

がクライアントのトークン AWS WAF を作成すると、トークンドメインで設定されます。 AWS WAF がウェブリクエスト内のトークンを検査するとき、そのドメインが保護パック (ウェブ ACL) で有効と見なされるドメインと一切一致しない場合、そのトークンは無効として拒否されます。

デフォルトでは、 は、ドメイン設定が保護パック (ウェブ ACL) に関連付けられているリソースのホストドメインと完全に一致するトークン AWS WAF のみを受け入れます。これはウェブリクエスト内の `Host` ヘッダーの値です。ブラウザでは、このドメインは JavaScript `window.location.hostname` プロパティ、ならびにユーザーのアドレスバーに表示されるアドレスに含まれます。

次のセクションで説明するように、保護パック (ウェブ ACL) 設定で許容されるトークンドメインを指定することもできます。この場合、 はホストヘッダーと完全一致とトークンドメインリストのドメインの両方 AWS WAF を受け入れます。

ドメインを設定するとき AWS WAF 、および保護パック (ウェブ ACL) でトークンを評価するときに使用する のトークンドメインを指定できます。指定するドメインには `gov.au` など、パブリックサフィックスを使用できません。使用できないドメインについては、「[パブリックサフィックスリスト](https://publicsuffix.org/list/)」のリスト ([https://publicsuffix.org/list/public_suffix_list.dat](https://publicsuffix.org/list/public_suffix_list.dat)) を参照してください。

## AWS WAF 保護パック (ウェブ ACL) トークンドメインリスト設定
<a name="waf-tokens-domain-lists"></a>

トークンドメインリストに AWS WAF 受け入れる追加のドメインを指定することで、複数の保護されたリソース間でトークンを共有するように保護パック (ウェブ ACL) を設定できます。トークンドメインリストを使用して、 AWS WAF はリソースのホストドメインを受け入れます。さらに、プレフィックス付きのサブドメインを含め、トークンドメインリスト内のすべてのドメインを受け入れます。

たとえば、トークンドメインリスト内のドメイン仕様 `example.com` は `example.com` (`http://example.com/` から)、`api.example.com` (`http://api.example.com/` から)、`www.example.com` (`http://www.example.com/` から) と一致します。`example.api.com` (`http://example.api.com/` から) または `apiexample.com` (`http://apiexample.com/` から) と一致しません。

トークンドメインリストは、作成または編集するときに保護パック (ウェブ ACL) で設定できます。保護パック (ウェブ ACL) の管理に関する一般情報については、「[でのウェブトラフィックメトリクスの表示 AWS WAF](web-acl-working-with.md)」を参照してください。

## AWS WAF トークンドメイン設定
<a name="waf-tokens-domain-in-token"></a>

AWS WAF は、アプリケーション統合 SDKs と Challengeおよび CAPTCHAルールアクションによって実行されるチャレンジスクリプトのリクエストでトークンを作成します。

がトークン AWS WAF に設定するドメインは、トークンをリクエストするチャレンジスクリプトのタイプと、指定した追加のトークンドメイン設定によって決まります。 AWS WAF は、トークンのドメインを、設定で確認できる最も短く、最も一般的な設定に設定します。
+ **JavaScript SDK** — JavaScript SDK は、1 つ以上のドメインを含むことができるトークンドメイン仕様で構成できます。設定するドメインは、保護されたホストドメインと保護パック (ウェブ ACL) のトークンドメインリストに基づいて、 AWS WAF が受け入れるドメインである必要があります。

  がクライアントのトークン AWS WAF を発行すると、ホストドメインと設定済みリスト内のドメインの中から、トークンドメインをホストドメインに一致する最短のトークンドメインに設定します。たとえば、ホストドメインが `api.example.com`で、トークンドメインリストに がある場合`example.com`、 はトークン`example.com`で AWS WAF を使用します。これは、ホストドメインと一致し、短いためです。JavaScript API 設定でトークンドメインリストを指定しない場合、 は保護されたリソースのホストドメインにドメイン AWS WAF を設定します。

  詳細については、「[トークンで使用するドメインの提供](waf-js-challenge-api-set-token-domain.md)」を参照してください。
+ **モバイル SDK** — アプリケーションコードでは、トークンドメインプロパティでモバイル SDK を設定する必要があります。このプロパティは、保護されたホストドメインおよび保護パック (ウェブ ACL) のトークンドメインリストに基づき、 AWS WAF が受け入れるドメインでなければなりません。

  がクライアントのトークン AWS WAF を発行する場合、このプロパティをトークンドメインとして使用します。 は、モバイル SDK AWS WAF クライアントに対して発行するトークンでホストドメインを使用しません。

  詳細については、「[AWS WAF モバイル SDK 仕様](waf-mobile-sdk-specification.md)」で `WAFConfiguration` `domainName` 設定を参照してください。
+ **Challenge アクション** – 保護パック (ウェブ ACL) でトークンドメインリストを指定すると、 は、ホストドメインとリスト内のドメインの中から、 AWS WAF トークンドメインをホストドメインと一致するものに設定します。たとえば、ホストドメインが `api.example.com`で、トークンドメインリストに がある場合`example.com`、 はトークン`example.com`で AWS WAF を使用します。これは、ホストドメインと一致し、短いためです。保護パック (ウェブ ACL) にトークンドメインリストを指定しない場合、 は保護されたリソースのホストドメインにドメイン AWS WAF を設定します。

# のトークンラベルのタイプ AWS WAF
<a name="waf-tokens-labeling"></a>

このセクションでは、 AWS WAF トークン管理がウェブリクエストに追加するラベルについて説明します。ラベルの一般情報については、[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)を参照してください。

 AWS WAF ボットまたは不正コントロールマネージドルールグループを使用する場合、ルールグループは AWS WAF トークン管理を使用してウェブリクエストトークンを検査し、リクエストにトークンラベルを適用します。マネージドルールグループの詳細については、「[AWS WAF Fraud Control アカウント作成不正防止 (ACFP) ルールグループ](aws-managed-rule-groups-acfp.md)」、「[AWS WAF Fraud Control アカウント乗っ取り防止 (ATP) ルールグループ](aws-managed-rule-groups-atp.md)」、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

**注記**  
AWS WAF は、これらのインテリジェントな脅威軽減マネージドルールグループのいずれかを使用する場合にのみトークンラベルを適用します。

トークン管理では、以下のラベルをウェブリクエストに追加できます。

**クライアントセッションラベル**  
ラベルには、 AWS WAF トークン管理がクライアントセッションを識別するために使用する一意の識別子`awswaf:managed:token:id:identifier`が含まれています。この識別子は、クライアントが使用していたトークンを破棄した後など、新しいトークンを取得すると変わる可能性があります。

**注記**  
AWS WAF は、このラベルの Amazon CloudWatch メトリクスを報告しません。

**ブラウザフィンガープリントラベル**  
ラベルには、 AWS WAF トークン管理がさまざまなクライアントブラウザシグナルから計算する堅牢なブラウザフィンガープリント識別子`awswaf:managed:token:fingerprint:fingerprint-identifier`が含まれています。この識別子は、複数のトークン取得の試行全体で同じままです。フィンガープリント識別子は、単一のクライアントに対して一意ではありません。

**注記**  
AWS WAF は、このラベルの Amazon CloudWatch メトリクスを報告しません。

**トークンステータスラベル: ラベル名前空間プレフィックス**  
トークンステータスラベルは、トークン、チャレンジのステータス、およびそれに含まれる CAPTCHA 情報を報告します。

各トークンステータスラベルは、次のプレフィクスの 1 つで始まります。
+ `awswaf:managed:token:`— トークンの一般的なステータスを報告したり、トークンのチャレンジ情報のステータスを報告したりするために使用されます。
+ `awswaf:managed:captcha:`— トークンの CAPTCHA 情報のステータスを報告するために使用されます。

**トークンステータスラベル: ラベル名**  
プレフィックスに続いて、ラベルの残りの部分には詳細なトークンステータス情報が表示されます。
+ `accepted` - リクエストトークンが存在し、以下の内容が含まれています。
  + 有効なチャレンジまたは CAPTCHA ソリューション。
  + 有効期限が切れていないチャレンジまたは CAPTCHA タイムスタンプ。
  + 保護パック (ウェブ ACL) に有効なドメイン仕様。

  例: ラベル `awswaf:managed:token:accepted` には、ウェブリクエストのトークンに有効なチャレンジソリューション、有効期限が切れていないチャレンジタイムスタンプ、および有効なドメインがあることが示されています。
+ `rejected` - リクエストトークンは存在するが、承認基準を満たしていない。

  トークン管理では、拒否されたラベルに加えて、理由を示すカスタムラベル名前空間と名前が追加されます。
  + `rejected:not_solved` — トークンにチャレンジまたは CAPTCHA ソリューションがない。
  + `rejected:expired` — 保護パック (ウェブ ACL) に設定されているトークンイミュニティ時間によると、トークンのチャレンジまたは CAPTCHA タイムスタンプの有効期限が切れている。
  + `rejected:domain_mismatch` — トークンのドメインが、保護パック (ウェブ ACL) のトークンドメイン設定と一致しない。
  + `rejected:invalid` – 指定されたトークンを読み取ることが AWS WAF できませんでした。

  例: ラベル `awswaf:managed:captcha:rejected` と `awswaf:managed:captcha:rejected:expired` とともに、トークンの CAPTCHA タイムスタンプがウェブ ACL で設定されている CAPTCHA トークンのイミュニティ時間を超えたために、リクエストには有効な CAPTCHA 解決がなかったことが示されています。
+ `absent` — リクエストにトークンがないか、トークンマネージャーがそれを読み取れなかった。

  例: ラベル `awswaf:managed:captcha:absent` には、リクエストにトークンがないことが示されています。

# 有効な AWS WAF トークンを持たないリクエストのブロック
<a name="waf-tokens-block-missing-tokens"></a>

このセクションでは、 AWS WAF モバイル SDK の使用時にトークンが欠落しているログインリクエストをブロックする方法について説明します。

インテリジェントな脅威の AWS Managed Rules ルールグループ `AWSManagedRulesACFPRuleSet`、`AWSManagedRulesATPRuleSet`、および を使用すると`AWSManagedRulesBotControlRuleSet`、ルールグループは AWS WAF トークン管理を呼び出してウェブリクエストトークンのステータスを評価し、それに応じてリクエストにラベルを付けます。

**注記**  
トークンのラベル付けは、これらのマネージドルールグループのいずれかを使用して評価したウェブリクエストにのみ適用されます。

適用されるトークン管理のラベル付けについては、前述の「[のトークンラベルのタイプ AWS WAF](waf-tokens-labeling.md)」セクションを参照してください。

その後、インテリジェントな脅威軽減マネージドルールグループは、トークンの要件を次のように処理します。
+ `AWSManagedRulesACFPRuleSet` `AllRequests` ルールは、すべてのリクエストに対して Challenge アクションを実行するように設定されており、`accepted` トークンラベルのないリクエストは効果的にブロックされます。
+ `AWSManagedRulesATPRuleSet` は、`rejected` トークンラベルを持つリクエストをブロックしますが、`absent` トークンラベルを持つリクエストはブロックしません。
+ `accepted`トークンラベルなしでリクエストを 5 回送信すると、`AWSManagedRulesBotControlRuleSet` のターゲットを絞った保護レベルが、クライアントにチャレンジを送信します。有効なトークンを持たない個別のリクエストはブロックされません。ルールグループの共通の保護レベルでは、トークンの要件は管理されません。

インテリジェントな脅威ルールグループの詳細については、「[AWS WAF Fraud Control アカウント作成不正防止 (ACFP) ルールグループ](aws-managed-rule-groups-acfp.md)」、「[AWS WAF Fraud Control アカウント乗っ取り防止 (ATP) ルールグループ](aws-managed-rule-groups-atp.md)」、および「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

**Bot Control または ATP マネージドルールグループの使用時にトークンを持たないリクエストをブロックするには**  
Bot Control と ATP ルールグループを使用すると、有効なトークンを持たないリクエストがルールグループの評価を終了し、保護パック (ウェブ ACL) によって引き続き評価される可能性があります。

トークンが不足ているリクエスト、あるいはトークンが拒否されたリクエストをすべてブロックするには、マネージドルールグループの直後に実行するルールを追加し、ルールグループがユーザーに代わって処理しないリクエストをキャプチャしてブロックします。

次の内容では、ATP マネージドルールグループを使用する保護パック (ウェブ ACL) の JSON リストの例を示します。保護パック (ウェブ ACL) には、`awswaf:managed:token:absent` ラベルをキャプチャして処理するルールが追加されています。このルールは、ATP ルールグループの範囲に合わせて、ログインエンドポイントに送信されるウェブリクエストに評価を絞り込みます。追加されたルールは太字で表示されます。

```
{
  "Name": "exampleWebACL",
  "Id": "55555555-6666-7777-8888-999999999999",
  "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/webacl/exampleWebACL/55555555-4444-3333-2222-111111111111",
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesATPRuleSet",
      "Priority": 1,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesATPRuleSet",
          "ManagedRuleGroupConfigs": [
            {
              "AWSManagedRulesATPRuleSet": {
                "LoginPath": "/web/login",
                "RequestInspection": {
                  "PayloadType": "JSON",
                  "UsernameField": {
                    "Identifier": "/form/username"
                  },
                  "PasswordField": {
                    "Identifier": "/form/password"
                  }
                },
                "ResponseInspection": {
                  "StatusCode": {
                    "SuccessCodes": [
                      200
                    ],
                    "FailureCodes": [
                      401,
                      403,
                      500
                    ]
                  }
                }
              }  
            }
          ]
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesATPRuleSet"
      }
    },
    {
      "Name": "RequireTokenForLogins",
      "Priority": 2,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "Statement": {
                "LabelMatchStatement": {
                  "Scope": "LABEL",
                  "Key": "awswaf:managed:token:absent"
                }
              }
            },
            {
              "ByteMatchStatement": {
                "SearchString": "/web/login",
                "FieldToMatch": {
                  "UriPath": {}
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                 }
                ],
                "PositionalConstraint": "STARTS_WITH"
              }
            },
            {
              "ByteMatchStatement": {
                "SearchString": "POST",
                "FieldToMatch": {
                  "Method": {}
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ],
                "PositionalConstraint": "EXACTLY"
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RequireTokenForLogins"
      } 
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "exampleWebACL"
  },
  "Capacity": 51,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:"
}
```

# CloudFront からの Application Load Balancers に必要な設定
<a name="waf-tokens-with-alb-and-cf"></a>

保護パック (ウェブ ACL) を Application Load Balancer に関連付けし、その Application Load Balancer を CloudFront ディストリビューションのオリジンとしてデプロイする場合、このセクションをお読みください。

このアーキテクチャでは、トークン情報が正しく処理されるには、次の追加設定を行う必要があります。
+ `aws-waf-token` クッキーを Application Load Balancer に転送するように CloudFront を設定します。デフォルトでは、CloudFront はウェブリクエストをオリジンに転送する前にクッキーを削除します。トークンクッキーをウェブリクエストに含めるには、トークンキッキーのみまたはすべてのクッキーを含むように CloudFront キャッシュ動作を設定します。これを行う方法の情報については、「*Amazon CloudFront デベロッパーガイド*」の「[クッキーに基づくコンテンツのキャッシュ](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html)」を参照してください。
+ CloudFront ディストリビューションのドメインを有効なトークンドメインとして認識 AWS WAF するように を設定します。デフォルトでは、CloudFront は `Host`ヘッダーを Application Load Balancer オリジンに設定し、保護されたリソースのドメイン AWS WAF として使用します。ただし、クライアントブラウザは CloudFront ディストリビューションをホストドメインとして見なし、クライアント用に生成されたトークンは CloudFront ドメインをトークンドメインとして使用します。追加の設定がない場合、 が保護されたリソースドメインをトークンドメインと AWS WAF 照合すると、不一致が発生します。これを修正するには、CloudFront ディストリビューションのドメイン名を保護パック (ウェブ ACL) 設定のトークンドメインリストに追加します。これを行う方法については、「[AWS WAF 保護パック (ウェブ ACL) トークンドメインリスト設定](waf-tokens-domains.md#waf-tokens-domain-lists)」を参照してください。