アカウントレベルでレート制限ルールをデプロイするには、1 つ以上のルールを含むレート制限ルールセットを作成します。API でレート制限ルールセットを作成・デプロイするには、Rulesets API を使います。
ルールパラメーターの詳細は、レート制限パラメーター を参照してください。
各レート制限ルールには、レート制限の設定を持つ ratelimit オブジェクトが含まれます。このオブジェクトとパラメーターの詳細は、レート制限パラメーター を参照してください。
Terraform を使う場合は、Terraform でレート制限ルールを設定する を参照してください。
アカウントにレート制限ルールセットをデプロイするときの、一般的な流れは次のとおりです。
- 1 つ以上のレート制限ルールを含むレート制限ルールセット(つまり
http_ratelimitフェーズのカスタムルールセット)を作成します。 - そのルールセットを、アカウントレベルの
http_ratelimitフェーズの エントリポイントルールセット にデプロイします。
次の例は、rules 配列にレート制限ルールを 1 つ持つレート制限ルールセットを作成します。
Required API token permissions
At least one of the following token permissions is required:Account WAF WriteAccount Rulesets Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "",
"kind": "custom",
"name": "My rate limiting ruleset",
"rules": [
{
"description": "Rate limit API requests",
"expression": "(starts_with(http.request.uri.path, \"/my-api/\"))",
"ratelimit": {
"characteristics": [
"ip.src",
"cf.colo.id"
],
"requests_to_origin": false,
"requests_per_period": 30,
"period": 60,
"mitigation_timeout": 120
},
"action": "block",
"action_parameters": {
"response": {
"status_code": 429,
"content_type": "application/json",
"content": "{ \"error\": \"Your API requests have been rate limited. Wait a couple of minutes and try again.\" }"
}
},
"enabled": true
}
],
"phase": "http_ratelimit"
}'利用できる特性(characteristics)は、Cloudflare のプランと製品サブスクリプションによって異なります。詳細は 利用可否 を参照してください。
次の手順のために、レスポンスのルールセット ID を保存します。
レート制限ルールセットをデプロイするには、アカウントレベルの http_ratelimit フェーズのエントリポイントルールセットに、"action": "execute" のルールを追加します。
-
アカウントのエントリポイントルールセットを取得する 操作を呼び出し、
http_ratelimitフェーズのエントリポイントルールセットの定義を取得します。この作業には アカウント ID が必要です。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount Rulesets Write
Get an account entry point rulesetbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_ratelimit/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Account-level phase entry point", "id": "<RULESET_ID>", "kind": "root", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "root", "phase": "http_ratelimit", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットがすでに存在する場合(つまり、
200 OKステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、アカウントルールセットのルールを作成する 操作を呼び出して、既存のルールセットに レート制限ルールセット をデプロイするexecuteルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。次のリクエストは、アカウント内のすべての Enterprise ゾーンに対して、ID
<RATE_LIMITING_RULESET_ID>のレート制限ルールセットを実行するルールを作成します。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount Rulesets Write
Create an account ruleset rulebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "Execute rate limiting ruleset", "expression": "(cf.zone.plan eq \"ENT\")", "action": "execute", "action_parameters": { "id": "<RATE_LIMITING_RULESET_ID>" }, "enabled": true }' -
エントリポイントルールセットが存在しない場合(ステップ 1 で
404 Not Foundステータスコードを受け取った場合)、アカウントルールセットを作成する 操作で作成します。rules配列に、レート制限ルールセット を アカウント内の Enterprise ゾーンへのすべての受信リクエスト 向けに実行するルールを 1 件含めます。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount Rulesets Write
Create an account rulesetbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "", "kind": "root", "name": "Account-level phase entry point", "rules": [ { "action": "execute", "expression": "(cf.zone.plan eq \"ENT\")", "action_parameters": { "id": "<RATE_LIMITING_RULESET_ID>" } } ], "phase": "http_ratelimit" }'
API 向けのレート制限ルール定義の例は、API でレート制限ルールを作成する を参照してください。
作成してデプロイしたルールセットは、Rulesets API の各操作で扱えます。アカウントレベルでレート制限ルールセットを扱うときの、よくある作業は次のとおりです。
| 作業 | 手順 |
|---|---|
| レート制限ルールセットの一覧を取得する | List account rulesets 操作を使い、 詳細は 既存のルールセットを一覧する を参照してください。 |
| レート制限ルールセット内のすべてのルールを一覧する | レート制限ルールセット ID を指定して Get an account ruleset 操作を使い、設定済みのレート制限ルールとその ID の一覧を取得します。 詳細は 特定のルールセットを表示する を参照してください。 |
| レート制限ルールを更新する | Update an account ruleset rule 操作を使います。レート制限ルールセット ID とルール ID が必要です。 詳細は ルールセット内のルールを更新する を参照してください。 |
| レート制限ルールを削除する | Delete an account ruleset rule 操作を使います。レート制限ルールセット ID とルール ID が必要です。 詳細は ルールセット内のルールを削除する を参照してください。 |
ゾーンレベルで API からレート制限ルールをデプロイする手順は、API でレート制限ルールを作成する を参照してください。
レート制限ルールで設定できる各パラメーターの詳細は、レート制限パラメーター を参照してください。