跳转到内容
搜索文档

使用 API 创建自定义规则集

最后更新 查看 MarkdownAgent 设置

使用 Rulesets API 创建账户级自定义规则集。

要在账户级部署自定义规则:

  1. 创建一个包含一条或多条规则的自定义规则集。或者,使用 列出账户规则集 API 操作来确定要部署的现有自定义规则集。
  2. 部署自定义规则集以使其执行。要部署自定义规则集,请创建一条具有 execute 动作的规则。

使用 Rulesets API,通过 API 操作自定义规则集。

如果您使用的是 Terraform,请参阅 使用 Terraform 配置 WAF 自定义规则

操作步骤

要部署自定义规则集,请遵循以下通用步骤:

  1. http_request_firewall_custom 阶段中创建一个包含一条或多条规则的自定义规则集。
  2. 将规则集部署到 http_request_firewall_custom 阶段账户级的 入口点规则集

1. 创建自定义规则集

以下示例在账户级创建了一个自定义规则集,其 rules 数组中包含单条规则。

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. 部署自定义规则集

要部署自定义规则集,请将一条具有 "action": "execute" 的规则添加到 http_request_firewall_custom 阶段入口点规则集。

  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。然后,调用创建账户规则集规则操作,向现有规则集中添加一条 execute 规则,以部署 custom ruleset。默认情况下,该规则将添加到规则集中已有规则列表的末尾。

    以下请求创建了一条规则,该规则针对账户中的所有 Enterprise zone 执行 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 数组中包含一条单一规则,以便为 all incoming requests of Enterprise zones in your account 执行 custom ruleset。

    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 中的不同操作来处理您创建并部署的自定义规则集。下表列出了在账户级处理自定义规则集的常见任务:

任务 步骤
获取自定义规则集列表

使用 列出账户规则集 操作,并搜索具有 "kind": "custom""phase": "http_request_firewall_custom" 的规则集。响应中将包含规则集 ID。

更多信息请参阅 列出已有的规则集

列出自定义规则集中的所有规则

使用带有自定义规则集 ID 的 获取账户规则集 操作以获取已配置规则及其 ID 的列表。

更多信息请参阅 查看特定规则集

更新自定义规则

使用 更新账户规则集规则 操作。您需要提供自定义规则集 ID 和规则 ID。

更多信息请参阅 更新规则集中的规则

删除自定义规则

使用 删除账户规则集规则 操作。您需要提供自定义规则集 ID 和规则 ID。

更多信息请参阅 删除规则集中的规则

更多资源

有关如何通过 API 在 zone 级创建自定义规则集的说明,请参阅 自定义规则集(zone 级)

有关使用自定义规则集的更多信息,请参阅规则集引擎文档中的 使用自定义规则集

这篇文档对您有帮助吗?