使用 Rulesets API 创建账户级自定义规则集。
要在账户级部署自定义规则:
- 创建一个包含一条或多条规则的自定义规则集。或者,使用 列出账户规则集 API 操作来确定要部署的现有自定义规则集。
- 部署自定义规则集以使其执行。要部署自定义规则集,请创建一条具有
execute动作的规则。
使用 Rulesets API,通过 API 操作自定义规则集。
如果您使用的是 Terraform,请参阅 使用 Terraform 配置 WAF 自定义规则。
要部署自定义规则集,请遵循以下通用步骤:
- 在
http_request_firewall_custom阶段中创建一个包含一条或多条规则的自定义规则集。 - 将规则集部署到
http_request_firewall_custom阶段账户级的 入口点规则集。
以下示例在账户级创建了一个自定义规则集,其 rules 数组中包含单条规则。
Required API token permissions
At least one of the following token permissions is required:Account WAF WriteAccount Rulesets Write
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,以便在下一步中使用。
要部署自定义规则集,请将一条具有 "action": "execute" 的规则添加到 http_request_firewall_custom 阶段入口点规则集。
调用获取账户入口点规则集操作,以获取
http_request_firewall_custom阶段的入口点规则集定义。您将需要账户 ID来执行此任务。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount 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": [] }如果入口点规则集已存在(即,如果您收到
200 OK状态代码和规则集定义),请记下响应中的规则集 ID。然后,调用创建账户规则集规则操作,向现有规则集中添加一条execute规则,以部署 custom ruleset。默认情况下,该规则将添加到规则集中已有规则列表的末尾。以下请求创建了一条规则,该规则针对账户中的所有 Enterprise zone 执行 ID 为
<CUSTOM_RULESET_ID>的自定义规则集:
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount 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 }'如果入口点规则集不存在(即,如果您在第 1 步中收到
404 Not Found状态代码),请使用创建账户规则集操作来创建它。在rules数组中包含一条单一规则,以便为 all incoming requests of Enterprise zones in your account 执行 custom ruleset。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount 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 中的不同操作来处理您创建并部署的自定义规则集。下表列出了在账户级处理自定义规则集的常见任务:
| 任务 | 步骤 |
|---|---|
| 获取自定义规则集列表 | 使用 列出账户规则集 操作,并搜索具有 更多信息请参阅 列出已有的规则集。 |
| 列出自定义规则集中的所有规则 | 使用带有自定义规则集 ID 的 获取账户规则集 操作以获取已配置规则及其 ID 的列表。 更多信息请参阅 查看特定规则集。 |
| 更新自定义规则 | 使用 更新账户规则集规则 操作。您需要提供自定义规则集 ID 和规则 ID。 更多信息请参阅 更新规则集中的规则。 |
| 删除自定义规则 | 使用 删除账户规则集规则 操作。您需要提供自定义规则集 ID 和规则 ID。 更多信息请参阅 删除规则集中的规则。 |
有关如何通过 API 在 zone 级创建自定义规则集的说明,请参阅 自定义规则集(zone 级)。
有关使用自定义规则集的更多信息,请参阅规则集引擎文档中的 使用自定义规则集。