

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

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

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

# AWS WAF ボットコントロール
<a name="waf-bot-control"></a>

このセクションでは、Bot Control の仕様について説明します。

Bot Control を使用すると、スクレーパー、スキャナ、クローラ、ステータスモニター、検索エンジンなどのボットを簡単にモニタリング、ブロック、レート制限の適用ができます。ルールグループの対象検査レベルを使用する場合、自己識別しないボットにチャレンジを仕掛けることができるため、悪意のあるボットがウェブサイトを狙うことが難しくなり、ボットの運用コストも高くなります。Bot Control マネージドルールグループのみを使用するか、他の AWS マネージドルールルールグループや独自のカスタム AWS WAF ルールと組み合わせてアプリケーションを保護することができます。

Bot Control には、リクエストサンプリングに基づいて、ボットからの現在のトラフィックの量を示すコンソールダッシュボードが含まれています。Bot Control マネージドルールグループを保護パック (ウェブ ACL) に追加すると、ボットトラフィックに対してアクションを実行したり、アプリケーションへの一般的なボットトラフィックに関する詳細なリアルタイム情報を受け取ったりすることができます。

**注記**  
このマネージドルールグループを使用する場合、追加料金が請求されます。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

Bot Control マネージドルールグループには、自己識別ボットにラベルを追加、一般的に望ましいボットを検証、信頼度の高いボットシグネチャを検出する基本かつ共通の保護レベルが用意されています。これにより、ボットトラフィックの共通カテゴリをモニタリングおよび制御できます。

Bot Control ルールグループには、自己識別を行わない高度なボットに対する検出機能が追加された、ターゲットを絞った保護レベルも用意されています。ターゲットを絞った保護では、ブラウザ調査、フィンガープリント、行動ヒューリスティックなどの検出技術を使用して不正なボットトラフィックを識別します。さらに、ターゲットを絞った保護では、ウェブサイトのトラフィック統計を機械学習で自動的に分析して、ボット関連のアクティビティを検出することもできます。機械学習を有効にすると、 AWS WAF はタイムスタンプ、ブラウザの特性、以前にアクセスした URL など、ウェブサイトのトラフィックに関する統計を使用して Bot Control の機械学習モデルを改善します。

が Bot Control マネージドルールグループに対してウェブリクエスト AWS WAF を評価すると、ルールグループはボット関連として検出したリクエストにラベルを追加します。たとえば、ボットのカテゴリやボット名などです。独自の AWS WAF ルールでこれらのラベルと照合して、処理をカスタマイズできます。Bot Control マネージドルールグループによって生成されるラベルは、Amazon CloudWatch メトリクスと保護パック (ウェブ ACL) ログに含まれます。

 AWS Firewall Manager AWS WAF ポリシーを使用して、組織の一部である複数のアカウントのアプリケーション全体に Bot Control マネージドルールグループをデプロイすることもできます AWS Organizations。

Bot Control マネージドルールグループの詳細については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

## AI エージェントのウェブボット認証
<a name="waf-bot-ai-agents"></a>

AWS WAF Bot Control は、CloudFront ディストリビューションにアクセスするボットと AI エージェントの暗号化検証方法としてウェブボット認証 (WBA) をサポートするようになりました。この機能により、正当な AI クローラとエージェントは、従来のチャレンジレスポンスメカニズムを必要とせずにアイデンティティを証明できます。

バージョン要件: `AWSManagedRulesBotControlRuleSet` Version\$14.0 以降。(静的バージョンは明示的に選択する必要があります）。ラベル分類とルールの動作の詳細については、以下を参照してください。
+ [AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)
+ [でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)
+ [AWS マネージドルールの変更ログ](aws-managed-rule-groups-changelog.md)

# AWS WAF Bot Control コンポーネント
<a name="waf-bot-control-components"></a>

Bot Control の実装の主なコンポーネントは次のとおりです。
+ **`AWSManagedRulesBotControlRuleSet`** – さまざまなカテゴリのボットを検出して処理するルールを持つ Bot Control マネージドルールグループ。このルールグループは、ボットトラフィックとして検出されたウェブリクエストにラベルを追加します。
**注記**  
このマネージドルールグループを使用する場合、追加料金が請求されます。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

Bot Control マネージドルールグループには、次の 2 レベルの保護から選択できます。
  + **共通** – ウェブスクレイピングフレームワーク、検索エンジン、自動ブラウザなど、さまざまな自己識別ボットを検出します。このレベルの Bot Control 保護は、静的リクエストデータ分析など、従来のボット検出技術を使用して一般的なボットを識別します。ルールはこれらのボットからのトラフィックにラベルを付け、検証できないものはブロックします。
  + **ターゲットを絞った** – 一般的な保護機能に加え、自己識別を行わない高度なボットに対するターゲットを絞った検出機能も追加されています。ターゲットを絞った保護は、レート制限と CAPTCHA およびバックグラウンドブラウザのチャレンジの組み合わせを使用してボットアクティビティを軽減します。
    + **`TGT_`** – ターゲットを絞った保護を提供するルールには、`TGT_` で始まる名前が付いています。すべてのターゲットを絞った保護では、ブラウザ調査、フィンガープリント、行動ヒューリスティックなどの検出技術を使用して不正なボットトラフィックを識別します。
    + **`TGT_ML_`** – 機械学習を使用するターゲットを絞った保護のルールには、`TGT_ML_` で始まる名前が付いています。これらのルールでは、ウェブサイトトラフィック統計の自動機械学習分析を使用して、分散された調整されたボットアクティビティを示す異常な動作を検出します。 は、タイムスタンプ、ブラウザの特性、以前にアクセスした URL などのウェブサイトトラフィックに関する統計 AWS WAF を分析し、Bot Control 機械学習モデルを改善します。機械学習機能はデフォルトで有効になっていますが、ルールグループ設定で無効にすることができます。機械学習が無効になっている場合、 AWS WAF はこれらのルールを評価しません。

  ルールグループルールに関する情報を含む詳細については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

  マネージドルールグループ参照ステートメントを使用して、このルールグループを保護パック (ウェブ ACL) に含め、使用する検査レベルを指定します。ターゲットレベルでは、機械学習を有効にするかどうかも指定します。このマネージドルールグループを保護パック (ウェブ ACL) に追加する方法については、「[AWS WAF Bot Control マネージドルールグループをウェブ ACL に追加する](waf-bot-control-rg-using.md)」を参照してください。
+ **[Bot Control dashboard]** (Bot Control ダッシュボード) – 保護パック (ウェブ ACL) のボットモニタリングダッシュボード。保護パック (ウェブ ACL) Bot Control のタブから利用できます。トラフィックをモニタリングし、さまざまなタイプのボットからのトラフィックの量を理解するために、このダッシュボードを使用します。これは、このトピックで説明するように、ボット管理をカスタマイズするための開始点とすることができます。また、これを使用して、変更を検証し、さまざまなボットやボットカテゴリのアクティビティをモニタリングすることもできます。
+ **AI トラフィック分析ダッシュボード** – 詳細な AI ボットとエージェントのアクティビティ分析専用のダッシュボード。保護パック (ウェブ ACL) AI トラフィック分析タブから入手できます。標準の Bot Control メトリクスを超えた AI 固有のトラフィックパターン、ボットインテント、アクセス動作の可視性を強化します。
+ **JavaScript とモバイルアプリケーションの統合 SDKs** – Bot Control ルールグループのターゲットを絞った保護レベルを使用する場合は、 AWS WAF JavaScript とモバイル SDKs を実装する必要があります。ターゲットルールは、クライアントトークン内で SDK から提供された情報を使用し、悪意のあるボットに対する検出を強化します。SDK の詳細については、「[でのクライアントアプリケーション統合 AWS WAF](waf-application-integration.md)」を参照してください。
+ **ログ記録とメトリクス** – AWS WAF ログ、Amazon Security Lake、Amazon CloudWatch で保護パック (ウェブ ACL) 用に収集されたデータを調査することで、ボットトラフィックをモニタリングし、Bot Control マネージドルールグループがトラフィックを評価して処理する方法を理解できます。Bot Control がウェブリクエストに追加するラベルは、そのデータに含まれています。これらのオプションの詳細については、[ログ記録 AWS WAF 保護パック (ウェブ ACL) トラフィック](logging.md)、[Amazon CloudWatch によるモニタリング](monitoring-cloudwatch.md)、及び「[What is Amazon Security Lake?](https://docs.aws.amazon.com/security-lake/latest/userguide/what-is-security-lake.html)」を参照してください。

  ニーズと確認できるトラフィックに応じて、Bot Control の実装をカスタマイズできます。最も一般的に使用されるオプションの一部は次のとおりです。
+ **スコープダウンステートメント** – Bot Control マネージドルールグループの参照ステートメント内にスコープダウンステートメントを追加することにより、Bot Control マネージドルールグループが評価するウェブリクエストからの一部トラフィックを除外できます。スコープダウンステートメントは、ネスト可能なルールステートメントとすることができます。リクエストがスコープダウンステートメントと一致しない場合、 は、ルールグループに対して AWS WAF 評価せずに、ルールグループ参照ステートメントと一致していないと評価します。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

  Bot Control マネージドルールグループを使用するためのコストは、 AWS WAF がルールグループを使用して評価するウェブリクエスト数に応じて上がります。スコープダウンステートメントを使用してルールグループが評価するリクエストを制限することで、これらのコストを削減できます。たとえば、ボットを含むすべてのユーザーにホームページのロードを許可し、その後にアプリケーション API に送信されるリクエスト、あるいは特定のタイプのコンテンツを含むリクエストにルールグループのルールを適用できます。
+ **ラベルとラベル一致ルール** – Bot Control ルールグループが AWS WAF ラベル一致ルールステートメントを使用して識別するボットトラフィックの一部を処理する方法をカスタマイズできます。Bot Control ルールグループは、ウェブリクエストにラベルを追加します。Bot Control ラベルと一致する Bot Control ルールグループの後にラベル一致ルールを追加し、必要な処理を適用できます。ラベル付けおよびラベル一致ステートメントの使用の詳細については、「[ラベル一致ルールステートメント](waf-rule-statement-type-label-match.md)」および「[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)」を参照してください。
+ **カスタムリクエストとレスポンス** – カスタムヘッダーを許可したリクエストに追加し、ラベルマッチングをカスタムリクエストとレスポンス機能と組み合わせることで、ブロックしたリクエストに対して AWS WAF カスタムレスポンスを送信できます。リクエストとレスポンスをカスタマイズする方法については、「[でカスタマイズされたウェブリクエストとレスポンス AWS WAF](waf-custom-request-response.md)」を参照してください。

# Bot Control のアプリケーション統合 SDK の使用
<a name="waf-bot-with-tokens"></a>

このセクションでは、アプリケーション統合 SDK を Bot Control で使用する方法について説明します。

Bot Control マネージドルールグループのターゲット保護のほどんどには、アプリケーション統合 SDK が生成するチャレンジトークンが必要です。リクエストにチャレンジトークンを必要としないルールは、Bot Control の共通レベルの保護とターゲットレベルの機械学習ルールです。ルールグループの保護レベルとルールの説明については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

Bot Control ルールグループを最も効果的に使用するためにも、アプリケーション統合 SDK を実装することを強くお勧めします。チャレンジスクリプトが取得するトークンからのメリットを Bot Control ルールグループが得るには、Bot Control ルールグループの前にチャレンジスクリプトを実行する必要があります。
+ アプリケーション統合 SDK では、スクリプトは自動的に実行されます。
+ SDK を使用できない場合は、Bot Control ルールグループが検査するすべてのリクエストに対して Challenge または CAPTCHA ルールアクションを実行するように保護パック (ウェブ ACL) を設定することができます。Challenge または CAPTCHA ルールアクションを使用すると、追加料金が発生する場合があります。料金の詳細については、「[AWS WAF の料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

アプリケーション統合 SDK をクライアントに実装、またはチャレンジスクリプトを実行するルールアクションの 1 つを使用するときは、ルールグループと、クライアントアプリケーションセキュリティ全体の機能が拡張されます。

トークンは、各ウェブリクエストでクライアント情報を提供します。この追加情報により、Bot Control のルールグループは、正規のクライアントセッションと動作の悪いクライアントセッションが両方とも単一の IP アドレスから発信された場合でも、前者を後者から分離できます。ルールグループは、トークン内の情報を使用してクライアントセッションリクエストの動作を集約し、ターゲットを絞った保護レベルが提供する微調整した検出および軽減を実現します。

SDK の詳細については、「[でのクライアントアプリケーション統合 AWS WAF](waf-application-integration.md)」を参照してください。 AWS WAF トークンの詳細については、「」を参照してください[AWS WAF インテリジェントな脅威の軽減におけるトークンの使用](waf-tokens.md)。ルールアクションの情報については、「[CAPTCHA および Challengeの AWS WAF](waf-captcha-and-challenge.md)」を参照してください。

# AWS WAF Bot Control マネージドルールグループをウェブ ACL に追加する
<a name="waf-bot-control-rg-using"></a>

このセクションでは、`AWSManagedRulesBotControlRuleSet` ルールグループを追加および設定する方法について説明します。

Bot Control マネージドルールグループ `AWSManagedRulesBotControlRuleSet` は、実装する保護レベルを特定するための追加設定が必要です。

ルールグループの説明とルールリストについては、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。

このガイダンスは、 AWS WAF 保護パック (ウェブ ACL)、ルール、およびルールグループを作成および管理する方法を一般的に認識しているユーザーを対象としています。これらのトピックは、このガイドの前のセクションでカバーされています。マネージドルールグループを保護パック (ウェブ ACL) に追加する方法の基本については、「[コンソールを通じた保護パック (ウェブ ACL) へのマネージドルールグループの追加](waf-using-managed-rule-group.md)」を参照してください。

**ベストプラクティスに従う**  
Bot Control ルールグループは、「[でのインテリジェントな脅威軽減のベストプラクティス AWS WAF](waf-managed-protections-best-practices.md)」に記載されているベストプラクティスに従って使用してください。

**保護パック (ウェブ ACL) で `AWSManagedRulesBotControlRuleSet` ルールグループを使用するには**

1.  AWS マネージドルールグループを保護パック (ウェブ ACL) `AWSManagedRulesBotControlRuleSet`に追加します。ルールグループの詳細な説明については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。
**注記**  
このマネージドルールグループを使用する場合、追加料金が請求されます。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

   ルールグループを追加する際は、ルールグループの設定ページを開くように編集します。

1. ルールグループの設定ページの **[Inspection level]** (検査レベル) ペインで、使用する検査レベルを選択します。
   + **共通** – ウェブスクレイピングフレームワーク、検索エンジン、自動ブラウザなど、さまざまな自己識別ボットを検出します。このレベルの Bot Control 保護は、静的リクエストデータ分析など、従来のボット検出技術を使用して一般的なボットを識別します。ルールはこれらのボットからのトラフィックにラベルを付け、検証できないものはブロックします。
   + **ターゲットを絞った** – 一般的な保護機能に加え、自己識別を行わない高度なボットに対するターゲットを絞った検出機能も追加されています。ターゲットを絞った保護は、レート制限と CAPTCHA およびバックグラウンドブラウザのチャレンジの組み合わせを使用してボットアクティビティを軽減します。
     + **`TGT_`** – ターゲットを絞った保護を提供するルールには、`TGT_` で始まる名前が付いています。すべてのターゲットを絞った保護では、ブラウザ調査、フィンガープリント、行動ヒューリスティックなどの検出技術を使用して不正なボットトラフィックを識別します。
     + **`TGT_ML_`** – 機械学習を使用するターゲットを絞った保護のルールには、`TGT_ML_` で始まる名前が付いています。これらのルールでは、ウェブサイトトラフィック統計の自動機械学習分析を使用して、分散された調整されたボットアクティビティを示す異常な動作を検出します。 は、タイムスタンプ、ブラウザの特性、以前にアクセスした URL などのウェブサイトトラフィックに関する統計 AWS WAF を分析し、Bot Control 機械学習モデルを改善します。機械学習機能はデフォルトで有効になっていますが、ルールグループ設定で無効にすることができます。機械学習が無効になっている場合、 AWS WAF はこれらのルールを評価しません。

1. ターゲットを絞った保護レベルを使用していて、ウェブトラフィックの分析に機械学習 (ML) AWS WAF を使用しない場合は、機械学習オプションを無効にします。名前が `TGT_ML_` で始まる Bot Control ルールでは機械学習が必要になります。これらのルールの詳細については、「[Bot Control のルールリスト](aws-managed-rule-groups-bot.md#aws-managed-rule-groups-bot-rules)」を参照してください。

1. ルールグループの使用コストを抑えるスコープダウンステートメントを追加します。スコープダウンステートメントは、ルールグループが検査する一連のリクエストを絞り込みます。ユースケースの例として、[Bot Control の例: ログインページにのみ Bot Control を使用します](waf-bot-control-example-scope-down-login.md) および [Bot Control の例: 動的コンテンツにのみ Bot Control を使用する](waf-bot-control-example-scope-down-dynamic-content.md) で始めてください。

1. ルールグループに必要な追加設定を指定します。

1. 変更を保護パック (ウェブ ACL) に保存します。

本番稼働トラフィックに Bot Control 実装をデプロイする前に、トラフィックへの潜在的な影響に慣れるまで、ステージング環境またはテスト環境でテストおよびチューニングします。その後、ルールを有効にする前に、本番稼働用トラフィックでカウントモードでルールをテストしてチューニングします。ガイダンスについては、次のセクションを参照してください。

# AWS WAF Bot Control を使用した誤検出のシナリオ例
<a name="waf-bot-control-false-positives"></a>

 このセクションでは、 AWS WAF Bot Control で誤検出が発生する可能性のある状況の例を示します。

誤検出を最小限に抑えるために、 AWS WAF Bot Control マネージドルールグループのルールを慎重に選択しました。グローバルトラフィックに対してルールをテストし、テスト保護パック (ウェブ ACL) に対する影響をモニタリングします。ただし、トラフィックパターンの変化が原因で誤検出が引き続き検出されることがあります。さらに、一部のユースケースは誤検出を引き起こすことが知られており、ウェブトラフィックに特化したカスタマイズが必要になります。

誤検出が発生する可能性のある状況には、次のような例が含まれます。
+ 通常、モバイルアプリにはブラウザ以外のユーザーエージェントがあり、`SignalNonBrowserUserAgent` ルールではデフォルトでブロックされます。モバイルアプリからのトラフィックや、ブラウザ以外のユーザーエージェントによるその他の正当なトラフィックが予想される場合は、例外を追加して許可する必要があります。
+ アップタイムのモニタリング、統合テスト、マーケティングツールなど、特定のボットトラフィックに依拠する場合があります。許可するボットトラフィックを Bot Control が識別してブロックする場合は、独自のルールを追加して処理を変更する必要があります。これは必ずしもすべてのお客様の誤検出のシナリオではありませんが、誤検出のシナリオに該当する場合、誤検出の場合と同じ処理が必要になります。
+ Bot Control マネージドルールグループは、IP アドレスを使用してボットを検証します AWS WAF。Bot Control を使用し、プロキシまたはロードバランサーを介してルーティングするボットを検証した場合は、カスタムルールを使用して明示的に許可する必要がある場合があります。このタイプのカスタムルールを作成する方法については、「[で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)」を参照してください。
+ グローバルに誤検出率が低い Bot Control ルールが特定のデバイスまたはアプリケーションに大きな影響を与える可能性があります。例えば、テストや検証では、トラフィック量の少ないアプリケーションや、あまり一般的でないブラウザまたはデバイスからのリクエストが観察されなかった可能性があります。
+ 以前から誤検出率が低い Bot Control ルールで有効なトラフィックの誤検出が増加している可能性があります。これは、新しいトラフィックパターンまたは有効なトラフィックを伴って出現するリクエスト属性が原因となっている可能性があります。これにより、以前は存在していなかったルールと一致するようになる可能性があります。これらの変更は、次のような状況によって発生する可能性があります。
  + ロードバランサーやコンテンツ配信ネットワーク (CDN) など、ネットワークアプライアンスを通じてトラフィックがフローする際に変更されたトラフィックの詳細。
  + トラフィックデータの新たな変化 (新しいブラウザや既存のブラウザの新しいバージョンなど)。

 AWS WAF Bot Control マネージドルールグループから発生する可能性のある誤検出を処理する方法については、後のセクション「[AWS WAF Bot Control のテストとデプロイ](waf-bot-control-deploying.md)」のガイダンスを参照してください。

# AWS WAF Bot Control のテストとデプロイ
<a name="waf-bot-control-deploying"></a>

このセクションでは、サイトの AWS WAF Bot Control 実装を設定およびテストするための一般的なガイダンスを提供します。実行する具体的なステップは、ニーズ、リソース、受け取るウェブリクエストによって異なります。

この情報は、[AWS WAF 保護のテストとチューニング](web-acl-testing.md) で提供されているテストおよび調整に関する一般情報とは別です。

**注記**  
AWS マネージドルールは、一般的なウェブ脅威から保護するように設計されています。ドキュメントに従って使用すると、 AWS マネージドルールルールグループはアプリケーションに別のセキュリティレイヤーを追加します。ただし、 AWS マネージドルールルールグループは、選択した AWS リソースによって決定されるセキュリティ責任に代わるものではありません。責任[共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)を参照して、 のリソースが適切に保護 AWS されていることを確認します。

**本番稼働トラフィックのリスク**  
本番稼働トラフィックに Bot Control 実装をデプロイする前に、トラフィックへの潜在的な影響に慣れるまで、ステージング環境またはテスト環境でテストおよびチューニングします。その後、ルールを有効にする前に、本番稼働用トラフィックでカウントモードでルールをテストしてチューニングします。

このガイダンスは、 AWS WAF 保護パック (ウェブ ACL)、ルール、およびルールグループを作成および管理する方法を一般的に認識しているユーザーを対象としています。これらのトピックは、このガイドの前のセクションでカバーされています。

**Bot Control の実装を設定およびテストするには**

これらのステップを最初にテスト環境で実行し、次に本番環境で実行します。

1. 

**Bot Control マネージドルールグループを追加する**
**注記**  
このマネージドルールグループを使用する場合、追加料金が請求されます。詳細については、「[AWS WAF 料金](https://aws.amazon.com/waf/pricing/)」を参照してください。

   マネージド AWS ルールグループ`AWSManagedRulesBotControlRuleSet`を新規または既存の保護パック (ウェブ ACL) に追加し、現在の保護パック (ウェブ ACL) の動作を変更しないように設定します。
   + マネージドルールグループを追加する際には、それを編集し、次の手順を実行します。
     + **[Inspection level]** (検査レベル) ペインで、使用する検査レベルを選択します。
       + **共通** – ウェブスクレイピングフレームワーク、検索エンジン、自動ブラウザなど、さまざまな自己識別ボットを検出します。このレベルの Bot Control 保護は、静的リクエストデータ分析など、従来のボット検出技術を使用して一般的なボットを識別します。ルールはこれらのボットからのトラフィックにラベルを付け、検証できないものはブロックします。
       + **ターゲットを絞った** – 一般的な保護機能に加え、自己識別を行わない高度なボットに対するターゲットを絞った検出機能も追加されています。ターゲットを絞った保護は、レート制限と CAPTCHA およびバックグラウンドブラウザのチャレンジの組み合わせを使用してボットアクティビティを軽減します。
         + **`TGT_`** – ターゲットを絞った保護を提供するルールには、`TGT_` で始まる名前が付いています。すべてのターゲットを絞った保護では、ブラウザ調査、フィンガープリント、行動ヒューリスティックなどの検出技術を使用して不正なボットトラフィックを識別します。
         + **`TGT_ML_`** – 機械学習を使用するターゲットを絞った保護のルールには、`TGT_ML_` で始まる名前が付いています。これらのルールでは、ウェブサイトトラフィック統計の自動機械学習分析を使用して、分散された調整されたボットアクティビティを示す異常な動作を検出します。 は、タイムスタンプ、ブラウザの特性、以前にアクセスした URL などのウェブサイトトラフィックに関する統計 AWS WAF を分析し、Bot Control 機械学習モデルを改善します。機械学習機能はデフォルトで有効になっていますが、ルールグループ設定で無効にすることができます。機械学習が無効になっている場合、 AWS WAF はこれらのルールを評価しません。

       この選択の詳細については、「[AWS WAF Bot Control ルールグループ](aws-managed-rule-groups-bot.md)」を参照してください。
     + **[Rules]** (ルール) ペインで、**[Override all rule actions]** (すべてのルールアクションをオーバーライド) ドロップダウンを開いて、**[Count]** を選択します。この設定では、 はルールグループ内のすべてのルールに対するリクエスト AWS WAF を評価し、その結果の一致のみをカウントしながら、リクエストにラベルを追加します。詳細については、「[ルールグループ内のルールアクションのオーバーライド](web-acl-rule-group-settings.md#web-acl-rule-group-rule-action-override)」を参照してください。

       このオーバーライドにより、Bot Control ルールがトラフィックに与える潜在的な影響をモニタリングでき、内部のユースケースや目的のボットなどの例外を追加するかどうか判断します。
   + 保護パック (ウェブ ACL) で最後に評価されるように、ルールグループを配置します。優先順位の設定の数値は、既に使用している他のルールまたはルールグループよりも高くなります。詳細については、「[ルールの優先度を設定する](web-acl-processing-order.md)」を参照してください。

     これにより、現在のトラフィックの処理が中断されることはありません。たとえば、SQL インジェクションやクロスサイトスクリプティングなどの悪意のあるトラフィックを検出するルールがある場合、そのようなリクエストを継続的に検出してログ記録します。または、既知の悪意のないトラフィックを許可するルールがある場合、Bot Control マネージドルールグループによってブロックされるようにすることなく、そのトラフィックを許可し続けることができます。テストおよび調整アクティビティ中に処理順序を調整することができますが、開始する方法としてお勧めします。

1. 

**保護パック (ウェブ ACL) のサンプリング、ログ記録、およびメトリクスの有効化**

   必要に応じて、保護パック (ウェブ ACL) のログ記録、Amazon Security Lake データ収集、リクエストサンプリング、Amazon CloudWatch メトリクスを設定します。これらの可視化ツールを使用して Bot Control マネージドルールグループとトラフィックとのインタラクションをモニタリングできます。
   + ログ作成の詳細については、「[ログ記録 AWS WAF 保護パック (ウェブ ACL) トラフィック](logging.md)」を参照してください。
   + Amazon Security Lake の詳細については、[「Amazon Security Lake とは](https://docs.aws.amazon.com/security-lake/latest/userguide/what-is-security-lake.html)」および*「Amazon Security Lake* [ユーザーガイド」の AWS 「サービスからのデータ収集](https://docs.aws.amazon.com/security-lake/latest/userguide/internal-sources.html)」を参照してください。
   + Amazon CloudWatch メトリクスの詳細については、「[Amazon CloudWatch によるモニタリング](monitoring-cloudwatch.md)」を参照してください。
   + ウェブリクエストサンプリングの詳細については、「[ウェブリクエストのサンプルの表示](web-acl-testing-view-sample.md)」を参照してください。

1. 

**保護パック (ウェブ ACL) をリソースに関連付ける**

   保護パック (ウェブ ACL) がリソースに関連付けられていない場合は、関連付けます。詳細については、「[AWS リソースとの保護の関連付けまたは関連付け解除](web-acl-associating-aws-resource.md)」を参照してください。

1. 

**トラフィックと Bot Control ルールの一致をモニタリングする**

   トラフィックがフローしていることと、Bot Control マネージドルールグループのルールが一致するウェブリクエストにラベルを追加していることを確認します。ログにラベルが表示され、Amazon CloudWatch メトリクスでボットとラベルのメトリクスを確認できます。ログでは、ルールグループでカウントするようにオーバーライドしたルールが、カウントに設定された `action` と、オーバーライドした設定済のルールアクションを示す `overriddenAction` とともに、`ruleGroupList` に表示されます。
**注記**  
Bot Control マネージドルールグループは、 AWS WAFからの IP アドレスを使用してボットを検証します。Bot Control を使用し、プロキシまたはロードバランサーを介してルーティングするボットを検証した場合は、カスタムルールを使用して明示的に許可する必要がある場合があります。カスタムルールの作成方法については、「[で転送された IP アドレスを使用する AWS WAF](waf-rule-statement-forwarded-ip-address.md)」を参照してください。ルールを使用して Bot Control ウェブリクエストの処理をカスタマイズする方法については、次のステップを参照してください。

   ウェブリクエスト処理を詳細にレビューして、カスタム処理で軽減する必要のある誤検出があるかどうかを確認してください。誤検知の例については、「[AWS WAF Bot Control を使用した誤検出のシナリオ例](waf-bot-control-false-positives.md)」を参照してください。

1. 

**Bot Control ウェブリクエストの処理をカスタマイズする**

   必要に応じて、リクエストを明示的に許可またはブロックする独自のルールを追加して、Bot Control ルールがそのリクエストを処理する方法を変更します。

   これをどのように実行するかはユースケースによって異なりますが、一般的な解決策は次のとおりです。
   + Bot Control マネージドルールグループの前に追加したルールを含むリクエストを明示的に許可します。これにより、許可されたリクエストが評価のためにルールグループに到達することはありません。これは、Bot Control マネージドルールグループの使用コストを抑えるのに役立ちます。
   + Bot Control マネージドルールグループのステートメント内のスコープダウンステートメントを追加し、Bot Control 評価からのリクエストを除外します。これは、前述のオプションと同じように機能します。スコープダウンステートメントと一致しないリクエストがルールグループの評価に到達することはないため、Bot Control マネージドルールグループの使用コストを抑えるのに役立ちます。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

     例については、以下を参照してください。
     + [ボット管理からの IP 範囲を除外する](waf-bot-control-example-scope-down-ip.md)
     + [コントロールしているボットからのトラフィックを許可する](waf-bot-control-example-scope-down-your-bot.md)
   + リクエスト処理に Bot Control ラベルを使用して、リクエストを許可またはブロックします。Bot Control マネージドルールグループの後にラベル一致ルールを追加して、ブロックするリクエストから、許可するラベル付きリクエストをブロックするリクエストを除外します。

     テスト後、関連する Bot Control ルールをカウントモードで維持し、カスタムルールでリクエストの処理に関する決定を維持します。ラベル一致ステートメントの詳細については、「[ラベル一致ルールステートメント](waf-rule-statement-type-label-match.md)」を参照してください。

     この種類のカスタマイズの例については、以下を参照してください。
     + [ブロックされたユーザーエージェントの例外を作成する](waf-bot-control-example-user-agent-exception.md)
     + [特定のブロックされたボットを許可する](waf-bot-control-example-allow-blocked-bot.md)
     + [検証済みボットをブロックする](waf-bot-control-example-block-verified-bots.md)

   その他の例については、「[AWS WAF Bot Control の例](waf-bot-control-examples.md)」を参照してください。

1. 

**必要に応じて、Bot Control マネージドルールグループ設定を有効にします**

   状況によっては、一部の Bot Control ルールをカウントモードの状態で維持する、あるいは異なるアクションのオーバーライドに適用すると判断する場合があります。ルールグループ内で設定されているときに実行するルールについては、通常のルール設定を有効にします。これを行うには、保護パック (ウェブ ACL) のルールグループステートメントを編集し、**[Rules]** (ルール) ペインで変更を行います。

# AWS WAF Bot Control の例
<a name="waf-bot-control-examples"></a>

このセクションでは、 AWS WAF Bot Control 実装のさまざまな一般的なユースケースを満たす設定例を示します。

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

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

**Topics**
+ [Bot Control の例: 簡単な設定](waf-bot-control-example-basic.md)
+ [Bot Control の例: 検証済みボットを明示的に許可する](waf-bot-control-example-allow-verified-bots.md)
+ [Bot Control の例: 検証済みボットをブロックする](waf-bot-control-example-block-verified-bots.md)
+ [Bot Control の例: 特定のブロックされたボットを許可する](waf-bot-control-example-allow-blocked-bot.md)
+ [Bot Control の例: ブロックされたユーザーエージェントの例外を作成する](waf-bot-control-example-user-agent-exception.md)
+ [Bot Control の例: ログインページにのみ Bot Control を使用します](waf-bot-control-example-scope-down-login.md)
+ [Bot Control の例: 動的コンテンツにのみ Bot Control を使用する](waf-bot-control-example-scope-down-dynamic-content.md)
+ [Bot Control の例: ボット管理から IP 範囲を除外する](waf-bot-control-example-scope-down-ip.md)
+ [Bot Control の例: コントロールしているボットからのトラフィックを許可する](waf-bot-control-example-scope-down-your-bot.md)
+ [Bot Control の例: ターゲット検査レベルの有効化](waf-bot-control-example-targeted-inspection-level.md)
+ [Bot Control の例: 2 つのステートメントを使用してターゲット検査レベルの使用を制限する](waf-bot-control-example-common-and-targeted-inspection-level.md)

# Bot Control の例: 簡単な設定
<a name="waf-bot-control-example-basic"></a>

次の JSON リストは、 AWS WAF Bot Control マネージドルールグループを使用した保護パック (ウェブ ACL) の例を示しています。可視性設定に注意してください。これにより、 AWS WAF はモニタリング目的でリクエストサンプルとメトリクスを保存します。

```
{
  "Name": "Bot-WebACL",
  "Id": "...",
  "ARN": "...",
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "Bot-WebACL",
  "Rules": [
      {
        ...
      },
      {
         "Name": "AWS-AWSBotControl-Example",
         "Priority": 5,
         "Statement": {
            "ManagedRuleGroupStatement": {
               "VendorName": "AWS",
               "Name": "AWSManagedRulesBotControlRuleSet",
               "ManagedRuleGroupConfigs": [
                 {
                   "AWSManagedRulesBotControlRuleSet": {
                     "InspectionLevel": "COMMON"
                   }
                 }
               ],
               "RuleActionOverrides": [],
               "ExcludedRules": []
            },
            "VisibilityConfig": {
               "SampledRequestsEnabled": true,
               "CloudWatchMetricsEnabled": true,
               "MetricName": "AWS-AWSBotControl-Example"
             }
          }
      }
    ],
    "VisibilityConfig": {
      ...
    },
    "Capacity": 1496,
    "ManagedByFirewallManager": false,
    "RetrofittedByFirewallManager": false
}
```

# Bot Control の例: 検証済みボットを明示的に許可する
<a name="waf-bot-control-example-allow-verified-bots"></a>

AWS WAF Bot Control は、 が一般的 AWS で検証可能なボットであることがわかっているボットをブロックしません。Bot Control が検証済みボットからのウェブリクエストを識別すると、ボットに名前を付けるラベルと、検証済みボットであることを示すラベルが追加されます。Bot Control は、既知の正常なボットがブロックされないように、シグナルラベルなどの他のラベルを追加しません。

検証済みボットをブロックする他の AWS WAF ルールがある場合があります。検証済みのボットが確実に許可されるようにするには、Bot Control ラベルに基づいてそれらのボットを許可するカスタムルールを追加します。ラベルを照合できるように、新しいルールは Bot Control マネージドルールグループの後に実行される必要があります。

次のルールは、検証済みボットを明示的に許可します。

```
{
    "Name": "match_rule",
    "Statement": {
      "LabelMatchStatement": {
        "Scope": "LABEL",
        "Key": "awswaf:managed:aws:bot-control:bot:verified"
      }
    },
    "RuleLabels": [],
    "Action": {
      "Allow": {}
    }
}
```

# Bot Control の例: 検証済みボットをブロックする
<a name="waf-bot-control-example-block-verified-bots"></a>

検証済みのボットをブロックするには、 AWS WAF Bot Control マネージドルールグループの後に実行されるボットをブロックするルールを追加する必要があります。これを行うには、ブロックするボット名を特定し、ラベル一致ステートメントを使用して、それらを識別してブロックします。検証済みのすべてのボットをブロックするだけの場合は、`bot:name:` ラベルとの照合を省略できます。

次のルールは、`bingbot` 検証済みボットのみをブロックします。このルールは、Bot Control マネージドルールグループの後に実行する必要があります。

```
{
    "Name": "match_rule",
    "Statement": {
      "AndStatement": {
        "Statements": [
          {
            "LabelMatchStatement": {
              "Scope": "LABEL",
              "Key": "awswaf:managed:aws:bot-control:bot:name:bingbot"
            }
          },
          {
            "LabelMatchStatement": {
              "Scope": "LABEL",
              "Key": "awswaf:managed:aws:bot-control:bot:verified"
            }
          }
        ]
      }
    },
    "RuleLabels": [],
    "Action": {
      "Block": {}
    }
  }
```

次のルールは、すべての検証済みボットをブロックします。

```
{
    "Name": "match_rule",
    "Statement": {
      "LabelMatchStatement": {
        "Scope": "LABEL",
        "Key": "awswaf:managed:aws:bot-control:bot:verified"
      }
    },
    "RuleLabels": [],
    "Action": {
      "Block": {}
    }
}
```

# Bot Control の例: 特定のブロックされたボットを許可する
<a name="waf-bot-control-example-allow-blocked-bot"></a>

複数の Bot Control ルールによってボットがブロックされる可能性があります。各ブロッキングルールについて、次の手順を実行します。

 AWS WAF Bot Control ルールがブロックしないボットをブロックしている場合は、次の操作を行います。

1. ログをチェックして、ボットをブロックしている Bot Control ルールを特定します。ブロックルールは、名前が `terminatingRule` で始まるフィールドのログで指定されます。保護パック (ウェブ ACL) ログの詳細については、「[ログ記録 AWS WAF 保護パック (ウェブ ACL) トラフィック](logging.md)」を参照してください。ルールがリクエストに追加するラベルに注意してください。

1. 保護パック (ウェブ ACL) で、ブロッキングルールのアクションをカウントするようにオーバーライドします。コンソールでこれを行うには、保護パック (ウェブ ACL) でルールグループのルールを編集し、ルールに Count のルールアクションオーバーライドを選択します。これにより、ボットがルールによってブロックされないようにしても、ルールは一致するリクエストにラベルを適用します。

1. Bot Control マネージドルールグループの後に、保護パック (ウェブ ACL) にラベル一致ルールを追加します。オーバーライドされたルールのラベルと照合し、ブロックしたくないボットを除くすべての一致するリクエストをブロックするようにルールを設定します。

   これで、保護パック (ウェブ ACL) が設定され、許可するボットが、ログを通じて特定したブロックルールによってブロックされなくなります。

トラフィックとログをもう一度チェックして、ボットの通過が許可されていることを確認します。許可されていない場合は、上記の手順を再度実行してください。

例えば、`pingdom` を除くすべてのモニタリングボットをブロックするとします。この場合、`CategoryMonitoring` ルールがカウントするようにオーバーライドし、その後にボット名ラベル `pingdom` が付いているものを除くすべてのモニタリングボットをブロックするルールを記述します。

次のルールは、Bot Control マネージドルールグループを使用しますが、`CategoryMonitoring` のルールアクションがカウントするようにオーバーライドします。カテゴリモニタリングルールは、一致するリクエストに通常どおりラベルを適用しますが、通常のブロックアクションを実行するのではなく、カウントするだけです。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
	  "RuleActionOverrides": [
        {
          "ActionToUse": {
            "Count": {}
          },
          "Name": "CategoryMonitoring"
        }
      ],
      "ExcludedRules": []
    }
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSBotControl-Example"
  }
}
```

次のルールは、前の `CategoryMonitoring` ルールが一致するウェブリクエストに追加するカテゴリモニタリングラベルと照合します。カテゴリモニタリングリクエストの中で、このルールはボット名 `pingdom` のラベルを持つものを除くすべてをブロックします。

次のルールは、保護パック (ウェブ ACL) の処理順序で、前の Bot Control マネージドルールグループの後に実行する必要があります。

```
{
      "Name": "match_rule",
      "Priority": 10,
      "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"
                  }
                }
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "match_rule"
      }
}
```

# Bot Control の例: ブロックされたユーザーエージェントの例外を作成する
<a name="waf-bot-control-example-user-agent-exception"></a>

一部のブラウザ以外のユーザーエージェントからのトラフィックが誤ってブロックされている場合は、問題のある AWS WAF Bot Control ルール`SignalNonBrowserUserAgent`をカウントに設定し、ルールのラベル付けを例外条件と組み合わせることで、例外を作成できます。

**注記**  
通常、モバイルアプリにはブラウザ以外のユーザーエージェントがあり、`SignalNonBrowserUserAgent` ルールではデフォルトでブロックされます。

次のルールは、Bot Control マネージドルールグループを使用しますが、`SignalNonBrowserUserAgent` のルールアクションがカウントするようにオーバーライドします。シグナルルールは、一致するリクエストに通常どおりラベルを適用しますが、通常のブロックアクションを実行するのではなく、カウントするだけです。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
	  "RuleActionOverrides": [
        {
          "ActionToUse": {
            "Count": {}
          },
          "Name": "SignalNonBrowserUserAgent"
        }
      ],
      "ExcludedRules": []
    }
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSBotControl-Example"
  }
}
```

次のルールは、Bot Control `SignalNonBrowserUserAgent` ルールが一致するウェブリクエストに追加したシグナルラベルと照合します。シグナルリクエストの中では、このルールは当社が許可するユーザーエージェントを持つものを除くすべてをブロックします。

次のルールは、保護パック (ウェブ ACL) の処理順序で、前の Bot Control マネージドルールグループの後に実行する必要があります。

```
{
    "Name": "match_rule",
    "Statement": {
      "AndStatement": {
        "Statements": [
          {
            "LabelMatchStatement": {
              "Scope": "LABEL",
              "Key": "awswaf:managed:aws:bot-control:signal:non_browser_user_agent"
            }
          },
          {
            "NotStatement": {
              "Statement": {
                "ByteMatchStatement": {
                  "FieldToMatch": {
                    "SingleHeader": {
                      "Name": "user-agent"
                    }
                  },
                  "PositionalConstraint": "EXACTLY",
                  "SearchString": "PostmanRuntime/7.29.2",
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ]
                }
              }
            }
          }
        ]
      }
    },
    "RuleLabels": [],
    "Action": {
      "Block": {}
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "match_rule"
    }
}
```

# Bot Control の例: ログインページにのみ Bot Control を使用します
<a name="waf-bot-control-example-scope-down-login"></a>

次の例では、スコープダウンステートメントを使用して、URI パス によって識別されるウェブサイトのログインページに送信されるトラフィックにのみ AWS WAF Bot Control を適用します`login`。ログインページへの URI パスは、アプリケーションや環境によっては、この例とは異なる場合があります。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
	  "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
      "RuleActionOverrides": [],
      "ExcludedRules": []
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "AWS-AWSBotControl-Example"
    },
    "ScopeDownStatement": {
      "ByteMatchStatement": {
        "SearchString": "login",
        "FieldToMatch": {
          "UriPath": {}
        },
        "TextTransformations": [
          {
            "Priority": 0,
            "Type": "NONE"
          }
        ],
        "PositionalConstraint": "CONTAINS"
      }
    }
  }
}
```

# Bot Control の例: 動的コンテンツにのみ Bot Control を使用する
<a name="waf-bot-control-example-scope-down-dynamic-content"></a>

この例では、スコープダウンステートメントを使用して、動的コンテンツにのみ AWS WAF Bot Control を適用します。

スコープダウンステートメントは、正規表現パターンセットの一致結果を否定することにより、静的コンテンツを除外します。
+ 正規表現パターンセットは、*静的コンテンツ*の拡張子と一致するように設定されています。例えば、正規表現パターンセットの指定は `(?i)\.(jpe?g|gif|png|svg|ico|css|js|woff2?)$` である場合があります。正規表現のパターンセットとステートメントの詳細については、「[正規表現パターンセット一致ルールステートメント](waf-rule-statement-type-regex-pattern-set-match.md)」を参照してください。
+ スコープダウンステートメントでは、`NOT` ステートメント内に正規表現パターンセットのステートメントをネストすることにより、一致する静的コンテンツを除外します。`NOT` ステートメントについては、「[NOT ルールステートメント](waf-rule-statement-type-not.md)」を参照してください。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
	  "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
      "RuleActionOverrides": [],
      "ExcludedRules": []
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "AWS-AWSBotControl-Example"
    },
    "ScopeDownStatement": {
      "NotStatement": {
        "Statement": {
          "RegexPatternSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:123456789:regional/regexpatternset/excludeset/00000000-0000-0000-0000-000000000000",
            "FieldToMatch": {
              "UriPath": {}
            },
            "TextTransformations": [
              {
                "Priority": 0,
                "Type": "NONE"
              }
            ]
          }
        }
      }
    }
  }
}
```

# Bot Control の例: ボット管理から IP 範囲を除外する
<a name="waf-bot-control-example-scope-down-ip"></a>

 AWS WAF Bot Control 管理からウェブトラフィックのサブセットを除外し、ルールステートメントを使用してそのサブセットを識別できるようにする場合は、Bot Control マネージドルールグループステートメントにスコープダウンステートメントを追加して除外します。

次のルールは、特定の IP アドレス範囲からのウェブリクエストを除き、すべてのウェブトラフィックに対して通常の Bot Control ボット管理を実行します。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
      "RuleActionOverrides": [],
      "ExcludedRules": []
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "AWS-AWSBotControl-Example"
    },
    "ScopeDownStatement": {
      "NotStatement": {
        "Statement": {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:123456789:regional/ipset/friendlyips/00000000-0000-0000-0000-000000000000"
          }
        }
      }
    }
  }
}
```

# Bot Control の例: コントロールしているボットからのトラフィックを許可する
<a name="waf-bot-control-example-scope-down-your-bot"></a>

一部のサイトモニタリングボットとカスタムボットは、カスタムヘッダーを送信するように設定できます。このようなボットからのトラフィックを許可する場合、ヘッダーに共有シークレットを追加するように設定できます。その後、 AWS WAF Bot Control マネージドルールグループステートメントにスコープダウンステートメントを追加することで、 ヘッダーを持つメッセージを除外できます。

次のルール例は、シークレットヘッダーを持つトラフィックを Bot Control 検査から除外します。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
      "RuleActionOverrides": [],
      "ExcludedRules": []
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "AWS-AWSBotControl-Example"
    },
    "ScopeDownStatement": {
      "NotStatement": {
        "Statement": {
          "ByteMatchStatement": {
            "SearchString": "YSBzZWNyZXQ=",
            "FieldToMatch": {
              "SingleHeader": {
                "Name": "x-bypass-secret"
              }
            },
            "TextTransformations": [
              {
                "Priority": 0,
                "Type": "NONE"
              }
            ],
            "PositionalConstraint": "EXACTLY"
          }
        }
      }
    }
  }
}
```

# Bot Control の例: ターゲット検査レベルの有効化
<a name="waf-bot-control-example-targeted-inspection-level"></a>

保護レベルを強化するために、 AWS WAF Bot Control マネージドルールグループでターゲット検査レベルを有効にできます。

次の例では、機械学習機能が有効になっています。`EnableMachineLearning` を `false` に設定することで、この動作をオプトアウトできます。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "TARGETED",
            "EnableMachineLearning": true
          }
        }
      ],
      "RuleActionOverrides": [],
      "ExcludedRules": []
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "AWS-AWSBotControl-Example"
    }
  }
}
```

# Bot Control の例: 2 つのステートメントを使用してターゲット検査レベルの使用を制限する
<a name="waf-bot-control-example-common-and-targeted-inspection-level"></a>

コスト最適化として、保護パック (ウェブ ACL) で 2 つの AWS WAF Bot Control マネージドルールグループステートメントを使用し、個別の検査レベルとスコープを設定できます。例えば、より機密性の高いアプリケーションエンドポイントにのみ、ターゲット検査レベルのステートメントを評価できます。

次の例の 2 つのステートメントには、相互に排他的な評価があります。この設定がない場合、リクエストによって 2 つの Bot Control 評価が請求される可能性があります。

**注記**  
コンソールのビジュアルエディターでは、複数のステートメントリファレンス `AWSManagedRulesBotControlRuleSet` はサポートされていません。代わりに、JSON エディターを使用します。

```
{
  "Name": "Bot-WebACL",
  "Id": "...",
  "ARN": "...",
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "Bot-WebACL",
  "Rules": [
      {
        ...
      },
      {
       "Name": "AWS-AWSBotControl-Common",
       "Priority": 5,
       "Statement": {
          "ManagedRuleGroupStatement": {
             "VendorName": "AWS",
             "Name": "AWSManagedRulesBotControlRuleSet",
             "ManagedRuleGroupConfigs": [
               {
                 "AWSManagedRulesBotControlRuleSet": {
                   "InspectionLevel": "COMMON"
                 }
               }
             ],
             "RuleActionOverrides": [],
             "ExcludedRules": []
          },
          "VisibilityConfig": {
             "SampledRequestsEnabled": true,
             "CloudWatchMetricsEnabled": true,
             "MetricName": "AWS-AWSBotControl-Common"
           },
           "ScopeDownStatement": {
              "NotStatement": {
                "Statement": {
                  "ByteMatchStatement": {
                    "FieldToMatch": {
                      "UriPath": {}
                    },
                    "PositionalConstraint": "STARTS_WITH",
                    "SearchString": "/sensitive-endpoint",
                    "TextTransformations": [
                      {
                        "Type": "NONE",
                        "Priority": 0
                      }
                    ]
                  }
                }
              }
            }
        }
      },
      {
       "Name": "AWS-AWSBotControl-Targeted",
       "Priority": 6,
       "Statement": {
          "ManagedRuleGroupStatement": {
             "VendorName": "AWS",
             "Name": "AWSManagedRulesBotControlRuleSet",
             "ManagedRuleGroupConfigs": [
               {
                 "AWSManagedRulesBotControlRuleSet": {
                   "InspectionLevel": "TARGETED",
                   "EnableMachineLearning": true
                 }
               }
             ],
             "RuleActionOverrides": [],
             "ExcludedRules": []
          },
          "VisibilityConfig": {
             "SampledRequestsEnabled": true,
             "CloudWatchMetricsEnabled": true,
             "MetricName": "AWS-AWSBotControl-Targeted"
           },
           "ScopeDownStatement": {
              "Statement": {
                "ByteMatchStatement": {
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "PositionalConstraint": "STARTS_WITH",
                  "SearchString": "/sensitive-endpoint",
                  "TextTransformations": [
                    {
                      "Type": "NONE",
                      "Priority": 0
                    }
                  ]
                }
              }
            }
        }
      }
    ],
    "VisibilityConfig": {
      ...
    },
    "Capacity": 1496,
    "ManagedByFirewallManager": false,
    "RetrofittedByFirewallManager": false
}
```