コンテンツにスキップ

API Abuse Preventionの例外

本記事では、正当なボットを識別してマークし、特定の対象URLやリクエストタイプに対するボット保護を無効化することで、API Abuse Preventionを細かく調整する方法を説明します。

これらの機能は、API Abuse Preventionのprofilesによる設定を拡張します。

正当な自動化向けの例外

正当なボットやクローラーに関連付けられたIPをマークしてAPI Abuse Preventionによるブロックを避けるには、Exception listを使用します。

exception listにIPアドレスまたは範囲を追加し、対象アプリケーションを指定します。これにより、これらのアドレスから対象アプリケーションへのあらゆるリクエストは悪意のあるボットとしてマークされず、API Abuse Preventionによってdeny-またはgraylistに追加されません。

exception listにIPアドレスを追加する方法は2つあります。

  • API Abuse PreventionセクションのException listタブでAdd exceptionを使用します。ここでは、IPやサブネットに加えて、API Abuse Preventionが無視すべきロケーションやソースタイプも追加できます。

    API Abuse Prevention - exception list内から項目を追加

  • Attacksセクションから:api_abuseaccount_takeoverscrapingsecurity_crawlersの検索キーを使用するか、Typeフィルターで該当するオプションを選択し、目的のイベントを展開してAdd to exception listをクリックします。

    API Abuse Prevention - イベントからexception listに追加

IPアドレスをexception listに追加すると、そのアドレスがAPI Abuse Prevention自身によって追加されている場合(理由がBotの場合)に限り、deny-またはgraylistから自動的に削除されます。

IPからの他の攻撃タイプのブロック

exception list内のIPが総当たりや入力バリデーション攻撃などの他の攻撃タイプを発生させた場合、Wallarmはそのようなリクエストをブロックします。

デフォルトでは、IPはexception listに無期限で追加されます。これを変更して、そのアドレスをexception listから削除する時点を設定できます。また、いつでも直ちにアドレスをexception listから削除できます。

Exception listタブでは履歴データを提供します。過去の選択した期間にリストに存在していた項目を表示できます。

対象URLおよび特定リクエスト向けの例外

exception listで良性ボットのIPをマークすることに加えて、リクエストの宛先となるURLや、特定のヘッダーを含むリクエストなど特定のリクエストタイプについて、ボット保護を無効化できます。

これを行うために、WallarmはSet API Abuse Prevention modeルールを提供します(ノードバージョン4.8以降でサポートされます)。

ルールの作成と適用

特定のURLまたはリクエストタイプに対するボット保護を無効化するには、次のとおりです。

  1. Proceed to Wallarm Console:

    • RulesAdd rule or your branch → Add rule.
    • Attacks / Incidents → attack/incident → hit → Rule.
    • API Discovery (if enabled) → your endpoint → Create rule.
  2. Fine-tuning attack detectionOverride API abuse profilesを選択します。

  3. If request isで、このルールを適用するリクエストやURLを記述します。特定のbranch、hit、またはendpointからルール作成を開始した場合は、それらがスコープを定義します。必要に応じて条件を追加できます。

  4. 希望するモードを選択します。

    • Default - 記述したスコープ(特定のURLまたはリクエスト)については、API Abuse Preventionの一般的なprofilesで定義された通常の方法でボットからの保護が機能します。
    • Do not check for bot activity - 記述したURLやリクエストタイプについて、ボット活動のチェックを実行しません。
  5. 必要に応じて、コメントにこのURL/リクエストタイプ向けにルールを作成する理由を記載します。

ルールを削除せずに、そのURLやリクエストタイプの例外を一時的に無効化できます。その場合はDefaultモードを選択します。後からいつでもDo not check for bot activityに戻すことができます。

ルール例

リクエストヘッダーによる正当なボットの識別

あなたのアプリケーションが、複数のIPからリクエストを送信するマーケティングオートメーションツールKlaviyoと連携しているとします。そこで、特定のURIに対するKlaviyo/1.0ユーザーエージェントからのGETリクエストについては、自動化(ボット)活動のチェックを行わないように設定します。

特定のヘッダーを持つリクエストについてボット活動をチェックしない

テスト用エンドポイントでのボット保護の無効化

アプリケーションに属するエンドポイントがあるとします。アプリケーションはボット活動から保護すべきですが、そのテスト用エンドポイントは例外にしたいとします。さらに、APIインベントリはAPI Discoveryモジュールで発見済みです。

この場合は、API Discoveryのエンドポイント一覧からルールを作成する方が簡単です。そこに移動し、対象のエンドポイントを見つけて、そのページからルール作成を開始します。

API Discoveryのエンドポイントに対するSet API Abuse Prevention modeの作成

profilesの無効化と削除

無効化されたprofilesは、トラフィック解析中にAPI Abuse Preventionモジュールが使用しないものの、profiles一覧には表示されます。無効化されたprofilesはいつでも再有効化できます。有効なprofilesが1つもない場合、このモジュールは悪意のあるボットをブロックしません。

削除されたprofilesは復元できず、API Abuse Preventionモジュールはトラフィック解析中に使用しません。

profileメニューにDisableDeleteオプションがあります。