Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Volumetric Abuse Detection

最終更新 Markdown で表示Agent セットアップ

Cloudflare の Volumetric Abuse Detection は、エンドポイントごと・セッションごとのレート制限の推奨値を生成します。トラフィックパターンの変化に合わせて、推奨値は自動で更新されます。

Cloudflare は、個々のエンドポイントへのユーザートラフィックから、エンドポイントの不正利用を検出します。

たとえば、/reset-password エンドポイントと /login エンドポイントでは、トラフィック量が異なることがあります。また、マーケティングキャンペーンが成功したあと、/login エンドポイントのトラフィックが平均より増えることもあります。

この 2 つの例は、従来のレート制限の限界を示しています。トラフィックはエンドポイントごとに違うだけでなく、同じエンドポイントでも時間とともに変わります。Volumetric Abuse Detection は教師なし学習(あらかじめ決めたルールなしでトラフィックパターンを分析する手法)を使い、エンドポイントごとにベースラインを作り、ユーザー行動の変化に合わせて調整します。

Volumetric Abuse Detection のレート制限は、IP アドレス単位ではなくセッション単位で生成されます。API へのトラフィックが増えても、共有 IP アドレスではなく個々のセッションを追跡するため、誤検知を抑えられます。

Volumetric Abuse Detection のレート制限は、明らかな量的不正利用を防ぎつつ、誤検知を抑える手段です。不正なボットトラフィックそのものを防ぎたい場合は、Cloudflare の Bot ソリューション を参照してください。

処理の流れ

Volumetric Abuse Detection は、API のセッションごとのトラフィック統計を分析し、エンドポイントごと・セッションごとのレート制限を推奨します。

エンドポイントを確認するには、Security > Web Assets > Endpoints を開きます。

トラフィックパターンが変わると、推奨値は更新され続けます。

要件

Volumetric Abuse Detection は、信頼できる推奨値を出せるだけのトラフィックデータを集めたあとで、レート制限のしきい値を生成します。検出済みエンドポイントに推奨値がない場合、トラフィックが必要な条件を満たしていない可能性が高いです。

しきい値が提案されるのは、直近 7 日間(または初回検出以降)に次の要件をすべて満たすエンドポイントだけです。

  • エンドポイントは、十分な有効トラフィック(API Discovery の条件を満たすトラフィック)を受信している必要があります。断続的または不規則なトラフィックでは、提案が出ないことがあります。
  • 直近 7 日間のいずれかの 24 時間で、少なくとも 50 の異なるセッションからアクセスされている必要があります。
  • リクエストヘッダーまたは Cookie として使える認可トークンなどの セッション識別子 を設定し、Cloudflare が個々のセッションを正確に検出し、セッション単位のレート分析を行えるようにする必要があります。

セッション識別子を追加したあと、Cloudflare ダッシュボードのエンドポイントにレート制限の推奨値が表示されるまで、24 時間待ってください。

レート制限推奨値の計算

Endpoints でエンドポイントの行を選ぶと、そのレート制限の推奨値を確認できます。詳細ビューには、総合的な推奨値とパーセンタイル値(p50、p90、p99)が表示されます。

Cloudflare は、直近 24 時間のリクエストにもとづき、推奨値を一日を通して再計算します。トラフィックの傾向が安定していれば、推奨値は変わらないことがあります。

単一のパーセンタイル値ではなく、総合的なレート制限の推奨値を使うことをおすすめします。総合推奨値は、すべての API セッションのばらつきを考慮します。パーセンタイル値だけを選ぶと、外れ値が多いために誤検知が増えることがあります。

Endpoints では、各推奨値の信頼度と、直近 7 日間に観測されたユニークセッション数を確認できます。一般に、ユニークセッションが少なく、ユーザー行動のばらつきが大きいエンドポイントは、信頼度スコアが低くなります。

信頼度が低いレート制限でも、API の不正利用防止には役立ちます。信頼度が低い場合は、レート制限ルールをまず log モードで開始し、誤検知がないか違反を確認してから block に切り替えてください。

レート制限の作成

Advanced Rate Limiting ルールの作成方法は、Rules のドキュメント を参照してください。

API

レート制限を時間とともに動的に更新したい場合は、API 経由でレート制限の推奨値を取得 できます。

Required API token permissions

At least one of the following token permissions is required:
  • Account API Gateway
  • Account API Gateway Read
  • Domain API Gateway
  • Domain API Gateway Read
Get a web or API operationbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/api_gateway/operations/$OPERATION_ID" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

特殊なケース

ユーザー単位のレート制限(JWT クレーム)

JSON Web Token(JWT)内の任意のクレームに基づいて、リクエストをレート制限できます。例:

  • audsub などの登録済みクレーム
  • userEmail などのカスタムクレーム。ネストしたカスタムクレーム(user.email)も含みます

JWT クレームの値によるレート制限は、有効な JSON Web Token でのみ動作します。パス上で無効な JSON Web Token をブロックしていない場合、JWT クレームはすべてカウントされ、Point of Presence(PoP)で高トラフィックが検出されるとブロックされる ことがあります。

ユーザーを一意に識別する JWT クレームをカウントする必要があります。多くのユーザーで同じ値になるクレームを選ぶと、それらのレート制限はまとめてカウントされます。

ユーザーティア単位のレート制限

ウェブサイトやアプリケーションで複数のティアを提供しており、ティアに応じてレート制限を適用したい場合の例:

  • "aud": "free-tier" の場合、1 分あたり 5 リクエストに制限します。
  • "aud": "premium-tier" の場合、1 分あたり 50 リクエストに制限します。

次のレート制限ルールの例に従ってください。

Example rule expressiontxt
(http.request.method eq "GET" and
http.host eq "<YOUR_DOMAIN>" and
http.request.uri.path matches "</EXAMPLE_PATH>" and
lookup_json_string(http.request.jwt.claims["<JWT_TOKEN_CONFIGURATION_ID>"][0], "aud") eq "free-tier"

制限

セッション識別子を設定すると、API Shield は常に推奨値を計算します。セッションベースのレート制限を有効にするには、Advanced Rate Limiting を契約 してください。

提供状況

Volumetric Abuse Detection は Enterprise のお客様のみ利用できます。この製品に関心がある Enterprise のお客様は、アカウントチームにお問い合わせください。

役に立ちましたか?