跳转到内容
搜索文档

通过 API 添加例外

最后更新 查看 MarkdownAgent 设置

要使用 API 添加托管规则例外,请在 http_request_firewall_managed 阶段的阶段入口点规则集中创建一条动作为 skip 的规则。您可以在账户级别和 zone 级别定义例外。例外也称为 skip 规则。

要配置例外,请根据例外类型定义 action_parameters 对象。请参阅以下示例:

有关使用 API 创建例外的更多信息,请参阅 Ruleset Engine 文档中的 Create an exception

示例

跳过所有剩余规则

以下示例添加一条规则:对匹配 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 请求),在规则列表开头添加例外(或 skip 规则),因为 skip 规则仅应用于列在其后的规则。确切的规则位置在 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 文档中的 Create an exception

跳过 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 规则之前立即添加例外(或 skip 规则),因为 skip 规则仅应用于列在其后的规则。确切的规则位置在 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 跳过一个或多个托管规则集的更多信息,请参阅 Ruleset Engine 文档中的 Create an exception

跳过 WAF 托管规则集中的一条或多条规则

以下示例添加一条规则:对匹配 dev.example.com 主机名的请求,跳过 Cloudflare Managed Ruleset 中的特定规则。

  1. 调用 Get a zone ruleset 操作,以获取 Cloudflare Managed Ruleset(规则集 ID )中的规则列表。
    您可以使用账户级端点(Get an account ruleset)或 zone 级端点(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 规则之前立即添加例外(或 skip 规则),因为 skip 规则仅应用于列在其后的规则。

    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 关联列表(在本例中仅为一条规则)。position 对象定义入口点规则集中的确切规则位置(在规则 1bdb49371c1f46958fc8b985efcb79e7 之前)。

有关通过 API 跳过托管规则集中一条或多条规则的更多信息,请参阅 Ruleset Engine 文档中的 Create an exception

这篇文档对您有帮助吗?