Skip to content

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

レート制限パラメーター

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

利用できるレート制限ルールのパラメーターは、次の各セクションで説明します。

現在のルール設定の制限については、設定上の制限 を参照してください。

パラメーターリファレンス

When incoming requests match(受信リクエストが一致する場合)

  • データ型: String
  • API のフィールド名: expression(ルールフィールド)

レート制限ルールがリクエストに一致する条件を定義します。

Also apply rate limiting to cached assets(キャッシュ済みアセットにもレート制限を適用する)

  • データ型: Boolean
  • API のフィールド名: requests_to_origin(省略可。Cloudflare ダッシュボードのオプションとは意味が逆です)

このパラメーターが無効な場合(または API の requests_to_origin フィールドが true の場合)、オリジンへ向かうリクエスト(つまりキャッシュされていないリクエスト)だけが、リクエストレートの判定に使われます。

設定上の制限により、Also apply rate limiting to cached assets パラメーターを無効にできない場合があります。詳細は 設定上の制限 を参照してください。

このルールパラメーターは、Cloudflare のプラン によっては利用できません。その場合、Cloudflare はキャッシュ済みアセットにもレート制限を適用します(パラメーターはデフォルトで有効です)。

With the same characteristics(同じ特性を持つ場合)

  • データ型: Array<String>
  • API のフィールド名: characteristics

ルールのリクエストレートを Cloudflare が追跡する方法を定義するパラメーターの集合です。

次の特性を 1 つ以上使います。

ダッシュボードの値 API の値 注記
N/A(暗黙的に含まれる) cf.colo.id(必須) 式では使わない
IP ip.src IP with NAT support と併用不可
IP with NAT support cf.unique_visitor_id IP と併用不可
Header value of(ヘッダー名を入力) http.request.headers["<header_name>"] API ではヘッダー名を小文字にする および フィールド欠落と空の値
Cookie value of(Cookie 名を入力) http.request.cookies["<cookie_name>"] 推奨設定 および フィールド欠落と空の値
Query value of(パラメーター名を入力) http.request.uri.args["<query_param_name>"] フィールド欠落と空の値
Host http.host
Path http.request.uri.path
AS Num ip.src.asnum
Country ip.src.country
JA3 Fingerprint cf.bot_management.ja3_hash
JA4 cf.bot_management.ja4
JSON string value of(キーを入力) lookup_json_string(http.request.body.raw, "<key>") フィールド欠落と空の値 および lookup_json_string() 関数リファレンス
JSON integer value of(キーを入力) lookup_json_integer(http.request.body.raw, "<key>") フィールド欠落と空の値 および lookup_json_integer() 関数リファレンス
Form input value of(フィールド名を入力) http.request.body.form["<input_field_name>"] フィールド欠落と空の値
JWT claim of(トークン設定 ID、クレーム名を入力) lookup_json_string( http.request.jwt.claims["<token_configuration_id>"][0], "<claim_name>") JWT 内のクレームの要件フィールド欠落と空の値JWT Validation のリファレンス
Body http.request.body.raw
Body size(演算子を選び、サイズを入力) http.request.body.size
Custom(式を入力) カスタム式を入力します。substring()lower() などの関数、またはより複雑な式を使えます。 関数

利用できる特性は、Cloudflare のプランによって異なります。詳細は 利用可否 を参照してください。

Increment counter when(次のときにカウンターを増やす)

  • データ型: String
  • API のフィールド名: counting_expression(省略可)

Use custom counting expression を有効にした場合のみ、Cloudflare ダッシュボードで利用できます。

リクエストレートの判定に使う条件を定義します。デフォルトでは、カウント式はルールの一致式(When incoming requests match で定義)と同じです。このフィールドを空文字("")にした場合も、同じデフォルトが適用されます。

カウント式には HTTP レスポンスフィールド を含められます。カウント式にレスポンスフィールドがある場合、カウントはレスポンス送信後に行われます。

設定上の制限により、カウント式に HTTP レスポンスフィールドを含められない場合があります。詳細は 設定上の制限 を参照してください。

When rate exceeds(レートが次を超えたとき)

  • API のフィールド名: N/A(選んだオプションに応じて、必要な API フィールドが異なります)

レート制限のカウント方法は次のいずれかです。

  • Request based: 一定期間内の受信リクエスト数に基づいてレート制限します。複雑度ベースのレート制限が使えない場合は、このカウント方法だけが利用できます。
  • Complexity based: 一定期間内のリクエスト処理の 複雑度 またはコストに基づいてレート制限します。Advanced Rate Limiting 付きの Enterprise 顧客だけが利用できます。

When rate exceeds > Requests(レートが次を超えたとき > リクエスト)

  • データ型: Integer
  • API のフィールド名: requests_per_period

ルールをトリガーする、期間あたりのリクエスト数です。リクエストベースのレート制限に適用されます。

When rate exceeds > Period(レートが次を超えたとき > 期間)

  • データ型: Integer
  • API のフィールド名: period

リクエストレートを評価するときの期間(秒)です。利用できる値は Cloudflare のプランによって異なります

利用できる API の値は、1060(1 分)、120(2 分)、300(5 分)、600(10 分)、3600(1 時間)です。

When rate exceeds > Score per period(レートが次を超えたとき > 期間あたりのスコア)

  • データ型: Integer
  • API のフィールド名: score_per_period

期間あたりの最大スコアです。この値を超えると、ルールアクションが実行されます。複雑度ベースのレート制限 に適用されます。

When rate exceeds > Response header name(レートが次を超えたとき > レスポンスヘッダー名)

  • データ型: String
  • API のフィールド名: score_response_header_name

オリジンサーバーが設定する、現在のリクエストのスコアを持つレスポンス HTTP ヘッダーの名前です。複雑度ベースのレート制限 に適用されます。

Then take action(次のアクションを実行)

  • データ型: String
  • API のフィールド名: action(ルールフィールド)

ルールで指定したレートに達したときに実行するアクションです。

API では次のいずれかの値を使います。blockjs_challenge(Non-Interactive Challenge)、managed_challenge(Managed Challenge)、challenge(Interactive Challenge)、log

Block アクションを選んだ場合は、次のパラメーターでカスタムレスポンスを定義できます。

With response type(Block アクション向け)

  • データ型: String
  • API のフィールド名: response > content_type(省略可)

レート制限でリクエストをブロックするときの、カスタムレスポンスのコンテンツタイプを定義します。ルールアクションBlock にした場合のみ利用できます。

利用できる API の値: application/jsontext/htmltext/xmltext/plain

With response code(Block アクション向け)

  • データ型: Integer
  • API のフィールド名: response > status_code(省略可)

レート制限でリクエストをブロックするときに訪問者へ返す HTTP ステータスコードを定義します。ルールアクションBlock にした場合のみ利用できます。

400 から 499 の値を入力します。デフォルト値は 429Too many requests)です。

Response body(Block アクション向け)

  • データ型: String
  • API のフィールド名: response > content(省略可)

レート制限でリクエストをブロックするときに返す HTTP レスポンスの本文を定義します。ルールアクションBlock にした場合のみ利用できます。

フィールドの最大サイズは 30 KB です。

For duration(継続時間)

  • データ型: Integer
  • API のフィールド名: mitigation_timeout

レートに達したあと、レート制限ルールはこのフィールドで定義した期間(秒)、以降のリクエストにルールアクションを適用します。

ダッシュボードでは、Cloudflare のプランによって異なる 利用可能な値から選びます。利用できる API の値は、01060(1 分)、120(2 分)、300(5 分)、600(10 分)、3600(1 時間)、86400(1 日)です。

Free、Pro、Business プランの顧客は、チャレンジアクション を使うときに継続時間を選べません。これらのアクションでは、レート制限ルールは常にリクエストのスロットルを行います。リクエストのスロットルでは、継続時間は定義しません。訪問者がチャレンジに合格すると、対応する リクエストカウンター はゼロになります。同じルール特性の値を持つ訪問者が、ふたたびレート制限ルールをトリガーする件数のリクエストを送ると、新しいチャレンジを受けます。

Enterprise の顧客は、チャレンジアクションのいずれかを使う場合でも、継続時間(または mitigation timeout)を常に設定できます。

With the following behavior(次の動作で)

  • データ型: Integer
  • API のフィールド名: mitigation_timeout

選んだアクションの正確な動作を定義します。

アクションの動作は次のいずれかです。

  • Perform action during the selected duration: 選んだ継続時間中に受け取ったすべてのリクエストに、設定したアクションを適用します。API でこの動作を設定するには、mitigation_timeout を 0 より大きい値にします。詳細は For duration(継続時間) を参照してください。

    緩和期間全体にアクションを適用するよう設定したレート制限ルールの動作を示すチャート
  • Throttle requests over the maximum configured rate: 設定した上限を超える受信リクエストに選んだアクションを適用し、それ以外のリクエストは許可します。API でこの動作を設定するには、mitigation_timeout0(ゼロ)にします。

    設定した上限を超えるリクエストをスロットルするレート制限の動作を示すチャート

レート制限特性に関する注記

IP with NAT support のユースケース

同じ IP アドレスを共有する NAT 配下のリクエストなどには、IP with NAT support を使います。Cloudflare は、セッション Cookie の利用を含む、さまざまなプライバシー保護の手法でユニークな訪問者を識別します。詳細は Cloudflare Cookies を参照してください。

IP with NAT support を使うときの考慮事項

IP with NAT support は、Cookie ベースの訪問者識別(_cfuvid cookie)に依存します。次の点に注意してください。

  • Cookie を消去する、プライベートブラウジングを使う、Cookie を受け入れない訪問者は、個別に識別されません。これらの訪問者からのリクエストは 1 つのカウンターバケットを共有するため、トラフィックの多い NAT 環境では誤検知が起きることがあります。
  • ログインや決済エンドポイントの保護など、セキュリティ上重要なレート制限では、識別漏れの影響を減らすために、IP with NAT supportPathHeader value of などの他の特性と組み合わせます。

併用できない特性

同じレート制限ルールの特性として、IP with NAT supportIP の両方は使えません。

式のフィールドとして cf.colo.id を使わない

cf.colo.id 特性(データセンター ID)は、ルール式のフィールドとして使わないでください。また、cf.colo.id の値は予告なく変わることがあります。このレート制限特性の詳細は、リクエストレートの計算 を参照してください。

ヘッダー名は小文字にする(API 利用者向け)

API リクエストで Header value of 特性を使う場合(http.request.headers["<header_name>"])、ヘッダー名は小文字で入力します。Cloudflare はグローバルネットワーク上でヘッダー名を正規化します。

フィールド欠落と空の値

Header value ofCookie value ofQuery value ofJSON string value oflookup_json_integer(...)Form input value of の特性を使い、該当するヘッダー / Cookie / パラメーター / JSON キー / フォームフィールド名がリクエストにない場合でも、カウント式によってはレート制限ルールがリクエストに適用されることがあります。

そのようなリクエストを除外しないと、フィールドが存在しないリクエスト専用の リクエストカウンター が作られ、フィールドは存在するが値が空のリクエスト用カウンターとは別になります。

たとえば、特定のレート制限ルールの文脈で、特定の HTTP ヘッダーが存在するリクエストだけを対象にするには、ルールのカウント式に次のような条件を含めます。

and len(http.request.headers["<header_name>"]) > 0

<header_name> は、レート制限特性として使ったヘッダー名と同じです。

レート制限ルールの特性として Cookie value of を使う場合は、次を推奨します。

  • その Cookie に複数の値があるリクエストをブロックする カスタムルール を作成します。
  • 負荷の高いサーバー処理を行う前に、オリジンで Cookie 値を検証します。

JSON Web Token(JWT)内のクレームを使う要件

JSON Web Token(JWT)内のクレームを使うには、先に API Shield で トークン検証の設定 を行う必要があります。

設定上の制限

役に立ちましたか?