Skip to content

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

API でカスタムルールセットを作成する

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

クォータ上限

アカウントレベルのカスタムルールセットには、次のクォータ上限があります。

  • ルールセットの上限: 10
  • ルールセットあたりのルール上限: 100
  • ルールの合計クォータ: リクエストパス上の全ルールセットで 1,000 ルール

合計 1,000 ルールのクォータは、すべてのプランに適用される固定の上限で、引き上げできません。この上限はアカウントレベルのカスタムルールセットだけでなく、リクエストが通過するすべてのルールセットに適用されます。

ルールセット間でルールを再配分する

ルールセット間のルール配分を変えたい場合(たとえば、ルールセット数を減らし、1 セットあたりのルール数を増やすなど)は、Cloudflare Support に問い合わせてください。アカウントレベルの利用枠を更新して、ルールセットとルールの配分を変えられるのは Cloudflare Support だけです。

問い合わせの前に、次の最適化を検討してください。

  • ルールをまとめる: 条件やアクションが似ているルールを、より広い一致条件を持つ 1 本のルールにまとめます。
  • 未使用のルールを削除する: ルールセットを監査し、発火しなくなったルールや機能が重複しているルールを削除します。
  • IP lists を使う: 個別の IP アドレスごとにルールを作る代わりに、IP lists で IP をまとめ、1 本のルールから参照します。

アカウントレベルでカスタムルールをデプロイするには、次の手順を行います。

  1. 1 本以上のルールを含むカスタムルールセットを作成します。または、List account rulesets API オペレーションで、デプロイしたい既存のカスタムルールセットを特定します。
  2. カスタムルールセットを実行されるようにデプロイします。デプロイするには、execute アクションのルールを作成します。

API でカスタムルールセットを扱うには、Rulesets API を使います。

Terraform を使う場合は、Terraform で WAF カスタムルールを設定する を参照してください。

手順

カスタムルールセットをデプロイする一般的な流れは次のとおりです。

  1. http_request_firewall_custom フェーズに、1 本以上のルールを含むカスタムルールセットを作成します。
  2. そのルールセットを、http_request_firewall_custom フェーズの エントリポイントルールセット にデプロイします。

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

次の例は、アカウントレベルで、rules 配列にルールを 1 本持つカスタムルールセットを作成します。

Required API token permissions

At least one of the following token permissions is required:
  • Account WAF Write
  • Account 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": "custom",
		"name": "My custom ruleset",
		"rules": [
				{
						"description": "Challenge web traffic (not /api)",
						"expression": "not starts_with(http.request.uri.path, \"/api/\")",
						"action": "managed_challenge"
				}
		],
		"phase": "http_request_firewall_custom"
	}'

レスポンスのルールセット ID を保存し、次の手順で使います。

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

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

  1. アカウントのエントリポイントルールセットを取得する 操作を呼び出し、http_request_firewall_custom フェーズのエントリポイントルールセットの定義を取得します。この作業には アカウント ID が必要です。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account WAF Read
    • Account Rulesets Read
    • Account Rulesets Write
    Get an account entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_custom/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_request_firewall_custom",
    		"rules": [
    			// ...
    		],
    		"version": "9"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  2. エントリポイントルールセットがすでに存在する場合(つまり、200 OK ステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、アカウントルールセットのルールを作成する 操作を呼び出して、既存のルールセットに custom ruleset をデプロイする execute ルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。

    次のリクエストは、アカウント内のすべての Enterprise ゾーンに対して、ID が <CUSTOM_RULESET_ID> のカスタムルールセットを実行するルールを作成します。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account 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 custom ruleset",
    		"expression": "(cf.zone.plan eq \"ENT\")",
    		"action": "execute",
    		"action_parameters": {
    				"id": "<CUSTOM_RULESET_ID>"
    		},
    		"enabled": true
    	}'
  3. エントリポイントルールセットが存在しない場合(ステップ 1 で 404 Not Found ステータスコードを受け取った場合)、アカウントルールセットを作成する 操作で作成します。rules 配列に、custom ruleset を all incoming requests of Enterprise zones in your account 向けに実行するルールを 1 件含めます。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account 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": "<CUSTOM_RULESET_ID>"
    						}
    				}
    		],
    		"phase": "http_request_firewall_custom"
    	}'

次のステップ

作成してデプロイしたカスタムルールセットは、Rulesets API の各オペレーションで操作します。アカウントレベルでカスタムルールセットを扱う一般的な作業は、次の表のとおりです。

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

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

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

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

カスタムルールセット ID を指定して Get an account ruleset オペレーションを呼び、設定済みルールとその ID の一覧を取得します。

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

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

Update an account ruleset rule オペレーションを使います。カスタムルールセット ID とルール ID が必要です。

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

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

Delete an account ruleset rule オペレーションを使います。カスタムルールセット ID とルール ID が必要です。

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

関連リソース

ゾーンレベルで API からカスタムルールセットを作成する手順は、カスタムルールセット(ゾーンレベル) を参照してください。

カスタムルールセットの操作について詳しくは、Ruleset Engine ドキュメントの カスタムルールセットを扱う を参照してください。

役に立ちましたか?