API でマネージドルールの例外を追加するには、http_request_firewall_managed フェーズの フェーズエントリポイントルールセット に、skip アクションのルールを作成します。例外はアカウントレベルとゾーンレベルで定義できます。例外はスキップルールとも呼ばれます。
例外を設定するには、例外の種類に応じて action_parameters オブジェクトを定義します。次の例を参照してください。
API で例外を作成する詳細は、Ruleset Engine ドキュメントの 例外を作成する を参照してください。
次の例は、dev.example.com ホスト名に一致するリクエストに対して、エントリポイントルールセット内の残りのすべてのルールをスキップするルールを追加します。
-
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)を保存します。 -
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 ドキュメントの 例外を作成する を参照してください。
次の例は、dev.example.com ホスト名に一致するリクエストに対して、Cloudflare Managed Ruleset をスキップするルールを追加します。
-
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)
- エントリポイントルールセットの ID(この例では
-
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 ドキュメントの 例外を作成する を参照してください。
次の例は、dev.example.com ホスト名に一致するリクエストに対して、Cloudflare Managed Ruleset の特定のルールをスキップするルールを追加します。
-
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 を控えます(この例では )。
-
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(この例では )
- エントリポイントルールセットの ID(この例では
-
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 ドキュメントの 例外を作成する を参照してください。