Cloudflare は、以前のバージョン で作成したすべてのレート制限ルールを、新しいバージョンのレート制限ルール へアップグレードしました。
Cloudflare ダッシュボードでは、すべてのレート制限ルールが 1 つの一覧に表示されます。
-
課金モデル: 以前のバージョンの Rate Limiting は使用量に基づく課金で、すべてのプランのアドオンとして提供されていました。新しいバージョンは Cloudflare プランに含まれます。Enterprise プランでは、Rate Limiting は契約上の HTTP トラフィック総量に基づいて価格が決まります。新しいレート制限ルールは、以前のバージョンの機能に加えて、いくつかの追加機能を提供します。
-
高度なスコープ式: 以前のバージョンの Rate Limiting では、リクエストのパスとメソッドを 1 つずつ指定してルールのスコープを決めました。新しいバージョンでは、WAF カスタムルール と同様に、HTTP リクエストの複数パラメーターを組み合わせてルールを書けます。
-
カウンターのスコープ: 新しいバージョンのレート制限は、データセンター単位のカウンターを使い、特性として常に
cf.colo.idを含めます。そのため、複数の Cloudflare ロケーションに分散するトラフィックでは、しきい値の動きが変わることがあります。同じ地理的ロケーション内のデータセンターはカウンターを共有します。詳細は Cloudflare がリクエストレートを決める方法 を参照してください。 -
カウント式と緩和式の分離: 新しいバージョンの Rate Limiting では、カウント式と緩和式が分かれています(Business および Enterprise のお客様)。カウント式は、レート計算に使うリクエストを定義します。緩和式は、しきい値に達したあとに緩和するリクエストを定義します。これらの式を分けると、
/loginなどの特定パスのリクエストレートを追跡し、ある IP がしきい値を超えたときに、同じ IP からドメイン宛てのすべてのリクエストをブロックできます。 -
追加のカウント次元(Advanced Rate Limiting のみ): 以前のバージョンと同様に、新しい Rate Limiting のお客様は IP ベースのレート制限を使えます。Cloudflare は受信リクエストの送信元 IP アドレスに基づいてリクエストを数えます。加えて、Advanced Rate Limiting を契約している新しい Rate Limiting のお客様は、API キー、Cookie、セッションヘッダー、ASN、クエリパラメーター、特定の JSON 本文フィールドなど、ほかの特性でもリクエストをグループ化できます。例は レート制限のベストプラクティス を参照してください。
-
プランごとのルール数: Cloudflare プランごとの機能差に加え、新しいバージョンの Rate Limiting ではプランごとのルール数が異なります(新しいバージョンの上限は レート制限ルール を参照してください):
製品 Free Pro Business RL アドオン付き Enterprise、
または同等プランRate Limiting(以前のバージョン) 1 10 15 100 Rate Limiting(新バージョン) 1 2 5 100 Enterprise のお客様がレート制限ルールを使うには、契約にアプリケーションセキュリティが含まれている必要があります。
アップグレード後に Cloudflare がルール枠をどのように調整するかは、アップグレードに関する注意点 を参照してください。
以前のレート制限ルールと新しいレート制限ルールの違いの詳細は、ブログ記事 ↗ を参照してください。
-
アップグレード後、Cloudflare プランの新しいルール枠を超えているあいだは、レート制限ルールの作成や編集はできません。 プランに含まれるレート制限ルール数は、以前より少なくなることがあります。新しい上限を超えている場合は、より多くのルールを使えるプランへアップグレードするか、ルール数が新しい上限以下になるまで既存ルールを削除する必要があります。
-
カスタムのタイムアウトは、対応している最も近いタイムアウトに丸められます。 カスタムのカウント期間とカスタムの緩和タイムアウトは、新しいバージョンで対応している最も近いカウント期間と緩和タイムアウトへ切り上げまたは切り下げられます(プランごとの利用可能な値は 提供状況 を参照してください)。
たとえば、緩和タイムアウトが 55 秒のレート制限ルールがあった場合、このタイムアウトは 1 分(最も近い値)に切り上げられます。
Enterprise のお客様は、アップグレード後にルールのカスタム緩和タイムアウトを設定できます。ただし、この設定は API からのみ利用できます。 -
Business プラン以上のお客様は、IP with NAT support 特性を使えます。 この特性は、NAT 配下で同じ IP アドレスを共有するリクエストなどを扱うときに使います。
-
以前の Rate Limiting をスキップしていた既存のカスタムルールは、新しいバージョンをスキップするよう自動更新されません。 以前のバージョンの Rate Limiting をスキップする既存のカスタムルール(More components to skip > Rate limiting rules (Previous version) オプション付きのスキップルール)を、新しいバージョンをスキップするよう Cloudflare が更新することはありません。
既存のスキップルール(Skip アクションのカスタムルール)は、必要に応じて手動で更新し、以前の実装ではなく新しいバージョンのレート制限ルール(WAF components to skip > All rate limiting rules オプション)をスキップするようにしてください。
以前のバージョンの Cloudflare Rate Limiting を使っていた場合、すべてのレート制限ルールは Security > WAF > Rate limiting rules の同じ一覧に表示されます。
以前のバージョンで作成したレート制限ルールには、Cloudflare ダッシュボードで Previous version のタグが付きます。
新しい アプリケーションセキュリティダッシュボード を使っている場合、Security > Security rules に表示されるのは、新しいバージョンへアップグレード済みのレート制限ルールだけです。
このタグ付きルールをダッシュボードで編集すると、以前のバージョンのレート制限ルール向け API と Terraform リソースでは、そのルールを編集できなくなります。この場合は、Rulesets API または cloudflare_ruleset ↗ Terraform リソースを使ってください。詳細は API 利用者向けの主な変更 と Terraform 利用者向けの主な変更 を参照してください。
以前の Rate Limiting API は非推奨です。 この API は 2025-06-15 以降サポートされていません。問題を防ぐため、以前の Rate Limiting API に基づく自動化は、Rulesets API へ更新してください。
新しいレート制限ルールは Ruleset Engine に基づきます。API でこれらのレート制限ルールを設定するには、Rulesets API を使います。以前のバージョンで作成したレート制限ルールは新しいバージョンへアップグレード済みのため、この API は新しいバージョンで作成されたそれらのルールも返します。
どの実装バージョンで作成したかに関係なく、任意のレート制限ルールを作成、編集、削除できるのは Rulesets API だけです。以前の Rate Limiting API が対象にするのは、以前のバージョンで作成し、新しいバージョンへアップグレードされたあとにダッシュボードで編集していない、または新しい API / Terraform リソースで変更していないレート制限ルールだけです。
API の提供終了日までは、以前の Rate Limiting API で、以前のバージョンで作成したレート制限ルール(Cloudflare が新しいバージョンへアップグレードしたもの)を作成、編集、削除できます。ただし、Rulesets API で以前のバージョンで作成したルールを編集した場合、または Cloudflare ダッシュボードでそのようなルールを変更した場合(ルールの順序変更を含む)は、古い API 操作ではこのルール(以前のバージョンからアップグレードしたあと、Rulesets API で更新したもの)を管理できなくなります。この場合は、そのルールの管理を Rulesets API へ完全に切り替える必要があります。
cloudflare_rate_limit Terraform リソースは非推奨です。 このリソースは 2025-06-15 以降サポートされていません。問題を防ぐため、Terraform のレート制限構成を cloudflare_rate_limit ↗ リソースから cloudflare_ruleset ↗ リソースへ手動で更新してください。
新しいレート制限ルールは Ruleset Engine に基づきます。Terraform でこれらのレート制限ルールを設定するには、cloudflare_ruleset Terraform リソースを使います。
どの実装バージョンで作成したかに関係なく、任意のレート制限ルールを作成、編集、削除できるのは cloudflare_ruleset ↗ Terraform リソースだけです。cloudflare_rate_limit Terraform リソースが対象にするのは、以前のバージョンで作成し、新しいバージョンへアップグレードされたあとにダッシュボードで編集していない、または新しい API / Terraform リソースで変更していないレート制限ルールだけです。
cloudflare_rate_limit Terraform リソースの提供終了日までは、このリソースで、以前のバージョンで作成したレート制限ルール(Cloudflare が新しいバージョンへアップグレードしたもの)を作成、編集、削除できます。ただし、以前のバージョンで作成したルールの管理を cloudflare_ruleset Terraform リソースで始めた場合、または Cloudflare ダッシュボードでそのようなルールを編集した場合(ルールの順序変更を含む)は、古い Terraform リソースではこのルール(以前のバージョンからアップグレードしたあと、新しいリソースで更新したもの)を管理できなくなります。この場合は、そのルールの管理を cloudflare_ruleset Terraform リソースへ完全に切り替える必要があります。
Terraform で新しいレート制限ルールを設定する例は、Terraform ドキュメントの Terraform で新しいレート制限ルールを設定する例 を参照してください。
cf-terraforming ↗ ツールを使うと、以前のバージョンで作成したレート制限ルール向けの新しい Terraform 構成を生成できます。そのあと、新しいリソースを Terraform 状態へインポートできます。
Terraform の以前のレート制限構成を、新しいルールセット構成へ置き換える推奨手順は次のとおりです。
-
次のコマンドを実行し、ゾーンのすべてのルールセット構成を生成します。
cf-terraforming generate --zone <ZONE_ID> --resource-type "cloudflare_ruleset"resource "cloudflare_ruleset" "terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31" { kind = "zone" name = "default" phase = "http_ratelimit" zone_id = "<ZONE_ID>" rules { # (...) } # (...) } # (...) -
前のコマンドは、Ruleset Engine に基づくほかの Cloudflare 製品のルールセット構成も返すことがあります。レート制限ルールの構成を更新しているので、
http_ratelimitフェーズの Terraform リソースだけを残し、.tf構成ファイルへ保存します。次のステップでは、リソースの完全な名前が必要です。 -
前の手順で特定した
cloudflare_rulesetリソースを、terraform importコマンドで Terraform 状態へインポートします。例:terraform import cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31 zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Importing from ID "zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31"... cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Import prepared! Prepared cloudflare_ruleset for import cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31] Import successful! The resources that were imported are shown above. These resources are now in your Terraform state and will henceforth be managed by Terraform. -
terraform planを実行し、Terraform が新しいcloudflare_rulesetリソースの状態を、すでに管理しているほかの既存リソースに加えて確認することを検証します。例:terraform plancloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31] [...] cloudflare_rate_limit.my_rate_limiting_rules: Refreshing state... [id=0580eb5d92e344ddb2374979f74c3ddf] [...] -
古い
cloudflare_rate_limitリソースで構成したレート制限ルールに関する状態を、Terraform 状態から削除します。-
次のコマンドを実行し、レート制限ルール(以前のバージョン)に関連するすべてのリソースを探します。
terraform state list | grep -E '^cloudflare_rate_limit\.'cloudflare_rate_limit.my_rate_limiting_rules -
変更を加えずに影響を把握するため、
terraform state rm ...コマンドを dry-run モードで実行します。terraform state rm -dry-run cloudflare_rate_limit.my_rate_limiting_rulesWould remove cloudflare_rate_limit.my_rate_limiting_rules -
影響が正しければ、
-dry-runパラメーターなしで同じコマンドを実行し、Terraform 状態からリソースを実際に削除します。terraform state rm cloudflare_rate_limit.my_rate_limiting_rulesRemoved cloudflare_rate_limit.my_rate_limiting_rules Successfully removed 1 resource instance(s).
-
-
Terraform 状態から
cloudflare_rate_limitリソースを削除したあと、これらのリソースを.tf構成ファイルからもすべて削除します。 -
terraform planを実行し、構成ファイルから削除したリソースが表示されなくなったことを確認します。保留中の変更はないはずです。terraform plancloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31: Refreshing state... [id=3c0b456bc2aa443089c5f40f45f51b31] [...] No changes. Your infrastructure matches the configuration. Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
Cloudflare リソースの Terraform へのインポートと cf-terraforming ツールの詳細は、次のリソースを参照してください。
新しいレート制限の実装と、各 Cloudflare プランで使える機能の詳細は、レート制限ルール を参照してください。
Cloudflare は、Enterprise のお客様向けに Advanced Rate Limiting も提供しています。詳細は Introducing Advanced Rate Limiting ↗ のブログ記事を参照してください。
新しいレート制限でできることの詳細は、レート制限のベストプラクティス を参照してください。