Skip to content

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

API で例外を追加する

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

API でマネージドルールの例外を追加するには、http_request_firewall_managed フェーズの フェーズエントリポイントルールセット に、skip アクションのルールを作成します。例外はアカウントレベルとゾーンレベルで定義できます。例外はスキップルールとも呼ばれます。

例外を設定するには、例外の種類に応じて action_parameters オブジェクトを定義します。次の例を参照してください。

API で例外を作成する詳細は、Ruleset Engine ドキュメントの 例外を作成する を参照してください。

残りのすべてのルールをスキップする

次の例は、dev.example.com ホスト名に一致するリクエストに対して、エントリポイントルールセット内の残りのすべてのルールをスキップするルールを追加します。

  1. Get a zone entry point ruleset オペレーションを呼び出し、http_request_firewall_managed フェーズのエントリポイントルールセットの現在の設定を取得します。

    Get a zone entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID
    		"name": "default",
    		"description": "",
    		"source": "firewall_managed",
    		"kind": "zone",
    		"version": "3",
    		"rules": [
    			// (...)
    		],
    		"last_updated": "2024-01-20T14:29:00.190643Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

    次の手順のために、エントリポイントルールセット ID(060013b1eeb14c93b0dcd896537e0d2c)を保存します。

  2. Create a zone ruleset rule オペレーション(POST リクエスト)を呼び出し、ルール一覧の先頭に例外(スキップルール)を追加します。スキップルールは、その後に並ぶルールにのみ適用されるためです。正確なルール位置は position オブジェクト で定義します。

    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 '{
    		"expression": "(http.host eq \"dev.example.com\")",
    		"description": "Skip managed rules for dev.example.com",
    		"action": "skip",
    		"action_parameters": {
    				"ruleset": "current"
    		},
    		"position": {
    				"before": ""
    		}
    	}'

API で残りのすべてのルールをスキップする詳細は、Ruleset Engine ドキュメントの 例外を作成する を参照してください。

Cloudflare Managed Ruleset をスキップする

次の例は、dev.example.com ホスト名に一致するリクエストに対して、Cloudflare Managed Ruleset をスキップするルールを追加します。

  1. Get a zone entry point ruleset オペレーションを呼び出し、http_request_firewall_managed フェーズのエントリポイントルールセットの現在の設定を取得します。

    Get a zone entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID
    		"name": "default",
    		"description": "",
    		"source": "firewall_managed",
    		"kind": "zone",
    		"version": "3",
    		"rules": [
    			// (...)
    			{
    				"id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute` rule ID
    				"version": "1",
    				"action": "execute",
    				"expression": "true",
    				"last_updated": "2024-01-20T14:21:28.643979Z",
    				"ref": "1bdb49371c1f46958fc8b985efcb79e7",
    				"enabled": true,
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare Managed Ruleset" ID
    					"version": "latest"
    				}
    			}
    			// (...)
    		],
    		"last_updated": "2024-01-20T14:29:00.190643Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

    action_parameters > id(マネージドルールセット ID)と等しい execute ルールを探し、Cloudflare Managed Ruleset をデプロイしているルールを特定します。

    次の手順のために、次の ID を保存します。

    • エントリポイントルールセットの ID(この例では 060013b1eeb14c93b0dcd896537e0d2c
    • マネージドルールセットをデプロイしている execute ルールの ID(この例では 1bdb49371c1f46958fc8b985efcb79e7
  2. Create a zone ruleset rule オペレーション(POST リクエスト)を呼び出し、Cloudflare Managed Ruleset をデプロイしている execute ルールの直前に例外(スキップルール)を追加します。スキップルールは、その後に並ぶルールにのみ適用されるためです。正確なルール位置は position オブジェクト で定義します。

    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 '{
    		"expression": "(http.host eq \"dev.example.com\")",
    		"description": "Skip the Cloudflare Managed Ruleset for dev.example.com",
    		"action": "skip",
    		"action_parameters": {
    				"rulesets": [
    						"efb7b8c949ac4650a09736fc376e9aee"
    				]
    		},
    		"position": {
    				"before": "1bdb49371c1f46958fc8b985efcb79e7"
    		}
    	}'

API で 1 つ以上のマネージドルールセットをスキップする詳細は、Ruleset Engine ドキュメントの 例外を作成する を参照してください。

WAF マネージドルールセットの 1 つ以上のルールをスキップする

次の例は、dev.example.com ホスト名に一致するリクエストに対して、Cloudflare Managed Ruleset の特定のルールをスキップするルールを追加します。

  1. Get a zone ruleset オペレーションを呼び出し、Cloudflare Managed Ruleset(ルールセット ID )内のルール一覧を取得します。
    マネージドルールセットの詳細は、アカウントレベルのエンドポイント(Get an account ruleset)またはゾーンレベルのエンドポイント(Get a zone ruleset)で取得できます。

    Get a zone rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/efb7b8c949ac4650a09736fc376e9aee" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"id": "efb7b8c949ac4650a09736fc376e9aee",
    		"name": "Cloudflare Managed Ruleset",
    		"description": "Created by the Cloudflare security team, this ruleset is designed to provide fast and effective protection for all your applications. It is frequently updated to cover new vulnerabilities and reduce false positives.",
    		"source": "firewall_managed",
    		"kind": "managed",
    		"version": "180",
    		"rules": [
    			// (...)
    			{
    				"id": "d9e350f1b72d4730899c8a420e48a85d", // ID of rule to skip
    				"version": "180",
    				"action": "block",
    				"categories": ["file-inclusion", "october-cms"],
    				"description": "October CMS - File Inclusion",
    				"last_updated": "2024-02-05T07:12:54.565276Z",
    				"ref": "adb550873eb92d32372ed08514d33241",
    				"enabled": true
    			}
    			// (...)
    		],
    		"last_updated": "2024-02-05T07:12:54.565276Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

    スキップしたいルールの ID を控えます(この例では )。

  2. Get a zone entry point ruleset オペレーションを呼び出し、http_request_firewall_managed フェーズの エントリポイントルールセット の現在の設定を取得します。

    Get a zone entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID
    		"name": "default",
    		"description": "",
    		"source": "firewall_managed",
    		"kind": "zone",
    		"version": "3",
    		"rules": [
    			// (...)
    			{
    				"id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute` rule ID
    				"version": "1",
    				"action": "execute",
    				"expression": "true",
    				"last_updated": "2024-01-20T14:21:28.643979Z",
    				"ref": "1bdb49371c1f46958fc8b985efcb79e7",
    				"enabled": true,
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare Managed Ruleset" ID
    					"version": "latest"
    				}
    			}
    			// (...)
    		],
    		"last_updated": "2024-01-20T14:29:00.190643Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }

    action_parameters > id(マネージドルールセット ID)と等しい execute ルールを探し、Cloudflare Managed Ruleset をデプロイしているルールを特定します。

    次の手順のために、次の ID を保存します。

    • エントリポイントルールセットの ID(この例では 060013b1eeb14c93b0dcd896537e0d2c
    • Cloudflare Managed Ruleset をデプロイしている execute ルールの ID(この例では 1bdb49371c1f46958fc8b985efcb79e7

    次の ID も使います。

    • Cloudflare Managed Ruleset の ID(
    • スキップするルールの ID(この例では
  3. Create a zone ruleset rule オペレーション(POST リクエスト)を呼び出し、Cloudflare Managed Ruleset をデプロイしている execute ルールの直前に例外(スキップルール)を追加します。スキップルールは、その後に並ぶルールにのみ適用されるためです。

    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 '{
    		"expression": "(http.host eq \"dev.example.com\")",
    		"description": "Skip a single rule for dev.example.com",
    		"action": "skip",
    		"action_parameters": {
    				"rules": {
    						"efb7b8c949ac4650a09736fc376e9aee": [
    								"d9e350f1b72d4730899c8a420e48a85d"
    						]
    				}
    		},
    		"position": {
    				"before": "1bdb49371c1f46958fc8b985efcb79e7"
    		}
    	}'

action_parameters > rules オブジェクトには、Cloudflare Managed Ruleset の ID と、スキップするルール ID の一覧(この場合は 1 件のみ)が含まれます。position オブジェクト は、エントリポイントルールセット内の正確な配置(ルール 1bdb49371c1f46958fc8b985efcb79e7 の前)を定義します。

API でマネージドルールセットの 1 つ以上のルールをスキップする詳細は、Ruleset Engine ドキュメントの 例外を作成する を参照してください。

役に立ちましたか?