Skip to content

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

カスタムルールセット(ゾーンレベル)

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

カスタムルールセットは、ゾーンまたは アカウントレベル でデプロイできるカスタムルールの集まりです。

カスタムルール と同様に、カスタムルールセットではリクエストを絞り込んで受信トラフィックを制御できます。

たとえば、ゾーンのすべての受信リクエスト、または受信リクエストの一部にカスタムルールセットを適用できます。

ゾーンレベルでは、すべてのお客様がカスタムルールセットを作成してデプロイできます。アカウントレベルのカスタムルールセットには Enterprise プランが必要です。詳細は 利用可否 を参照してください。

API でカスタムルールセットをデプロイする

カスタムルールセットを作成しただけでは有効になりません。execute アクションのルールが フェーズエントリポイントルールセット から参照したときだけ実行されます。フェーズエントリポイントルールセットは、指定した フェーズ で各リクエストに対して Cloudflare が評価する最上位のルールセットです。

ゾーンにカスタムルールセットをデプロイするには、次の手順を行います。

  1. ゾーンレベルで、1 つ以上のルールを持つカスタムルールセットを作成します。または、デプロイしたい既存のカスタムルールセットを List zone rulesets API 操作で特定します。
  2. http_request_firewall_custom フェーズのエントリポイントルールセットに、execute アクションのルールを追加し、カスタムルールセット ID を参照します。このルールは、式が一致したときにカスタムルールセットを実行するよう Cloudflare に指示します。

1. カスタムルールセットを作成する

次のリクエストは、ゾーンレベルで 2 つのルールを持つ新しいカスタムルールセットを作成します。レスポンスの id フィールドに、新しいカスタムルールセットの ID が含まれます。

Required API token permissions

At least one of the following token permissions is required:
  • Zone WAF Write
Create a zone rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Custom Ruleset 1",
		"description": "My First Custom Ruleset (zone)",
		"kind": "custom",
		"phase": "http_request_firewall_custom",
		"rules": [
				{
						"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
						"action": "challenge",
						"description": "challenge GB and FR based on bot score"
				},
				{
						"expression": "not http.request.uri.path wildcard \"/api/*\"",
						"action": "challenge",
						"description": "challenge not /api"
				}
		]
	}'
{
	"result": {
		"id": "f82ccda3d21f4a02825d3fe45b5e1c10",
		"name": "Custom Ruleset 1",
		"description": "My First Custom Ruleset (zone)",
		"kind": "custom",
		"version": "1",
		"rules": [
			{
				"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
				"action": "challenge",
				"description": "challenge GB and FR based on bot score"
			},
			{
				"expression": "not http.request.uri.path wildcard \"/api/*\"",
				"action": "challenge",
				"description": "challenge not /api"
			}
		],
		"last_updated": "2025-11-09T10:27:30.636197Z",
		"phase": "http_request_firewall_custom"
	},
	"success": true,
	"errors": [],
	"messages": []
}

2. カスタムルールセットをデプロイする

http_request_firewall_custom フェーズのエントリポイントルールセットに "action": "execute" のルールを追加して、カスタムルールセットをデプロイします。

  1. Get a zone entry point ruleset オペレーションを呼び出し、http_request_firewall_custom フェーズのエントリポイントルールセットの定義を取得します。この作業には ゾーン ID が必要です。

    Required API token permissions

    At least one of the following token permissions is required:
    • Zone WAF Write
    • Zone WAF Read
    Get a zone entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_custom/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"description": "Zone-level phase entry point",
    		"id": "<ENTRY_POINT_RULESET_ID>",
    		"kind": "zone",
    		"last_updated": "2025-11-16T15:40:08.202335Z",
    		"name": "zone",
    		"phase": "http_request_firewall_custom",
    		"rules": [
    			// ...
    		],
    		"version": "10"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  2. エントリポイントルールセットがすでに存在する場合(つまり、200 OK ステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、ゾーンルールセットのルールを作成する 操作を呼び出して、既存のルールセットに ステップ 1 で作成したカスタムルールセット(f82ccda3d21f4a02825d3fe45b5e1c10 をカスタムルールセット ID に置き換えます)。
    式が true のため、カスタムルールセットはすべての受信リクエストに対して実行されます をデプロイする execute ルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。

    Required API token permissions

    At least one of the following token permissions is required:
    • Zone WAF Write
    Create a zone ruleset rulebash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$ENTRY_POINT_RULESET_ID/rules" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"action": "execute",
    		"expression": "true",
    		"action_parameters": {
    				"id": "f82ccda3d21f4a02825d3fe45b5e1c10"
    		},
    		"description": "Execute custom ruleset"
    	}'
    {
    	"result": {
    		"id": "<ENTRY_POINT_RULESET_ID>",
    		"name": "zone",
    		"description": "Zone-level phase entry point",
    		"kind": "zone",
    		"version": "11",
    		"rules": [
    			// ... any existing rules
    			{
    				"id": "<RULE_ID>",
    				"version": "1",
    				"action": "execute",
    				"action_parameters": {
    					"id": "f82ccda3d21f4a02825d3fe45b5e1c10"
    				},
    				"expression": "true",
    				"description": "Execute custom ruleset",
    				"last_updated": "2025-11-18T18:08:14.003361Z",
    				"ref": "<RULE_REF>",
    				"enabled": true
    			}
    		],
    		"last_updated": "2025-11-18T18:08:14.003361Z",
    		"phase": "http_request_firewall_custom"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  3. エントリポイントルールセットが存在しない場合(ステップ 1 で 404 Not Found ステータスコードを受け取った場合)、ゾーンルールセットを作成する 操作で作成します。rules 配列に、カスタムルールセット を ゾーンのすべての受信リクエスト 向けに実行するルールを 1 件含めます。f82ccda3d21f4a02825d3fe45b5e1c10 をカスタムルールセット ID に置き換えます。

    Required API token permissions

    At least one of the following token permissions is required:
    • Zone WAF Write
    Create a zone rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "zone",
    		"description": "Zone-level phase entry point",
    		"kind": "zone",
    		"phase": "http_request_firewall_custom",
    		"rules": [
    				{
    						"action": "execute",
    						"action_parameters": {
    								"id": "f82ccda3d21f4a02825d3fe45b5e1c10"
    						},
    						"expression": "true",
    						"description": "Execute custom ruleset"
    				}
    		]
    	}'

次のステップ

作成してデプロイしたカスタムルールセットは、Rulesets API の各操作で扱えます。ゾーンレベルのカスタムルールセットでよく行う作業は次のとおりです。

作業 手順
カスタムルールセットの一覧を取得する

List zone rulesets 操作を使い、"kind": "custom" かつ "phase": "http_request_firewall_custom" のルールセットを探します。レスポンスにルールセット ID が含まれます。

詳細は 既存のルールセットを一覧する を参照してください。

カスタムルールセット内のすべてのルールを一覧する

カスタムルールセット ID を指定して Get a zone ruleset 操作を使い、設定済みルールとその ID の一覧を取得します。

詳細は 特定のルールセットを表示する を参照してください。

カスタムルールを更新する

Update a zone ruleset rule 操作を使います。カスタムルールセット ID とルール ID が必要です。

詳細は ルールセット内のルールを更新する を参照してください。

カスタムルールを削除する

Delete a zone ruleset rule 操作を使います。カスタムルールセット ID とルール ID が必要です。

詳細は ルールセット内のルールを削除する を参照してください。

関連リソース

Cloudflare API でカスタムルールセットを扱う詳細は、Ruleset Engine ドキュメントの カスタムルールセットを使う を参照してください。

役に立ちましたか?