レート制限ルールでは、式に一致するリクエストのレート制限と、その上限に達したときに実行するアクションを定義できます。Web サイトや API の不正利用を防ぐために使います。たとえば、ログインエンドポイントをブルートフォース攻撃から守る、または 1 クライアントが一定時間内に呼べる API 回数の上限を設ける、といった用途です。
新しいセキュリティダッシュボード では、レート制限ルールは セキュリティルール の種類の 1 つです。セキュリティルールは、指定したフィルターに一致する受信リクエストに対して、セキュリティ関連のアクションを実行します。
一部の Enterprise のお客様は、アカウントレベルで レート制限ルールセット を作成し、複数の Enterprise ゾーンへデプロイできます。
Cloudflare の Ruleset Engine で評価されるほかのルールと同様、レート制限ルールには次の基本パラメーターがあります。
- Rules language で、一致させるトラフィックの条件を指定する 式 です。
- ルールに一致し、追加の条件も満たしたときに実行する内容を指定する アクション です。レート制限ルールでは、レートが指定した上限に達したときにアクションが実行されます。
これら 2 つのパラメーターに加え、レート制限ルールでは次の追加パラメーターが必要です。
- 特性(Characteristics): このルールのレートを Cloudflare が追跡する方法を定義するパラメーターの集合です。
- 期間(Period): レートを評価するときに考慮する期間(秒)です。
- 期間あたりのリクエスト数(Requests per period): この期間内に、レート制限ルールをトリガーするリクエスト数です。
- 継続時間(Duration)(または mitigation timeout): レートに達したあと、このフィールドで定義した期間、以降のリクエストをブロックします。
- アクションの動作(Action behavior): 既定では、この期間中のリクエストレートに関係なく、設定した継続時間(または mitigation timeout)のあいだ、Cloudflare はルールアクションを適用します。一部の Enterprise のお客様は、最大レートを超える リクエストをスロットル するようルールを設定できます。レートが設定した上限より低いときは、受信リクエストを許可します。
必須パラメーターと任意パラメーターの詳細は、レート制限のパラメーター を参照してください。
Cloudflare が上記のパラメーターを使って受信リクエストのレートをどう判定するかは、Cloudflare がリクエストレートを判定する方法 を参照してください。
カスタムルール、Managed Rules、Super Bot Fight Mode など、複数のアプリケーションセキュリティ機能を使っている場合は、これらの機能がどのように連携するか、どの順序で実行されるかを把握することが重要です。詳細は セキュリティ機能の相互運用性 を参照してください。
-
レート制限ルールは順番に評価されます。Block などの一部のアクションは、ほかのルールの評価を止めます。アクションとその動作の詳細は アクション を参照してください。
-
レート制限ルールは、正確な件数のリクエストだけをオリジンサーバーへ届けるための機能ではありません。リクエストの検出からレートカウンターの更新まで、最大で数秒の遅れが出ることがあります。この遅れのため、Cloudflare がブロックや Challenge などの緩和アクションを適用する前に、上限を超えたリクエストがオリジンへ届く場合があります。カウンターの仕組み(データセンター単位のスコープを含む)は、リクエストレートの算出 を参照してください。
-
検証済みボットにレート制限ルールを適用すると、Search Engine Optimization(SEO)に影響することがあります。詳細は SEO を改善する を参照してください。
| 機能 | Free | Pro | Business | アプリケーションセキュリティ付き Enterprise | Advanced Rate Limiting 付き Enterprise |
|---|---|---|---|---|---|
| ルール式で使えるフィールド | Path、Verified Bot | Host、URI、Path、Full URI、Query、Verified Bot | Host、URI、Path、Full URI、Query、Method、Source IP、User Agent、Verified Bot | 一般的なリクエストフィールド、リクエストヘッダーフィールド、Verified Bot、Bot Management フィールド1 | 一般的なリクエストフィールド、リクエストヘッダーフィールド、Verified Bot、Bot Management フィールド1、リクエストボディフィールド2 |
| キャッシュ除外 | いいえ | いいえ | はい | はい | はい |
| カウント特性 | IP | IP | IP、IP with NAT support | IP、IP with NAT support | IP、IP with NAT support、Query、Host、Headers、Cookie、ASN、Country、Path、JA3/JA4 Fingerprint1、JSON フィールド値2、Body2、Form input value2、Custom |
| カスタムカウント式 | いいえ | いいえ | はい | はい | はい |
| カウント式で使えるフィールド | N/A | N/A | ルール式の全フィールド、レスポンスコード、レスポンスヘッダー | ルール式の全フィールド、レスポンスコード、レスポンスヘッダー | ルール式の全フィールド、レスポンスコード、レスポンスヘッダー |
| カウントモデル | リクエスト数 | リクエスト数 | リクエスト数 | リクエスト数 | リクエスト数、複雑度スコア |
| レート制限アクションの動作 | 緩和期間中にアクションを実行する | 緩和期間中にアクションを実行する | 緩和期間中にアクションを実行する | 緩和期間中にアクションを実行する、block アクションでレート超過リクエストをスロットルする | 緩和期間中にアクションを実行する、block アクションでレート超過リクエストをスロットルする |
| カウント期間 | 10 秒 | 対応するすべての値(最大 1 分)3 | 対応するすべての値(最大 10 分)3 | 対応するすべての値(最大 65,535 秒)3 | 対応するすべての値(最大 65,535 秒)3 |
| 緩和タイムアウト期間 | 10 秒 | 対応するすべての値(最大 1 時間)3 | 対応するすべての値(最大 1 日)3 | 対応するすべての値(最大 1 日)3 4 | 対応するすべての値(最大 1 日)3 4 |
| ルール数 | 1 | 2 | 5 | 1005 | 100 |
脚注
1: Bot Management を購入した Enterprise のお客様のみ利用できます。
2: 利用可否は WAF プランによります。
3: 対応するカウント期間 / 緩和期間の値(秒):
10、15、20、30、40、45、60(1 分)、90、120(2 分)、180(3 分)、240(4 分)、300(5 分)、480、600(10 分)、900、1200(20 分)、1800、2400、3600(1 時間)、65535、86400(1 日)。
すべての値がすべてのプランで使えるわけではありません。
4: Enterprise のお客様は、API でカスタムの緩和タイムアウト期間を指定できます。
5: Enterprise のお客様がレート制限ルールを使うには、契約に application security が含まれている必要があります。ルール数は契約内容によります。
-
Bot Management を購入した Enterprise のお客様のみ利用できます。 ↩ ↩2 ↩3
-
対応する期間の値(秒):
10、15、20、30、40、45、60(1 分)、90、120(2 分)、180(3 分)、240(4 分)、300(5 分)、480、600(10 分)、900、1200(20 分)、1800、2400、3600(1 時間)、65535、86400(1 日)。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 -
Enterprise のお客様がレート制限ルールを使うには、契約に application security が含まれている必要があります。ルール数は契約内容によります。 ↩
次のリソースを参照してください。
Terraform の例は、Terraform でレート制限ルールを設定する を参照してください。
-
Cloudflare Rate Limiting(以前のバージョン。現在は利用不可): 以前のバージョンのレート制限ルール(利用量に応じて課金)のドキュメントです。