跳转到内容
搜索文档

覆盖托管规则集

最后更新 查看 MarkdownAgent 设置

要通过 API 自定义托管规则集的行为,请在部署时覆盖该规则集。覆盖规则集时,您指定要在默认配置之上执行的更改。这些更改优先于规则集的默认行为。

例如,要在强制执行托管规则集之前进行测试,可以考虑以所有规则均设为 log(而非其默认操作)的方式执行该规则集。为此,请在规则集级别覆盖托管规则集的已配置行为,使每条规则都使用 log 操作。

如果您使用 Terraform,请参阅以下页面:

要在 Cloudflare 仪表板中定义覆盖,请参阅以下资源:

使用覆盖

您可以在三个级别覆盖规则集:

  • 规则集覆盖 应用于所执行规则集中的所有规则。
  • 标签覆盖 应用于带有特定标签的所有规则。例如,使用标签覆盖自定义 Cloudflare Managed Ruleset,使所有带有 wordpress 标签的规则都设置为 Block。如果多个标签有覆盖,并且某条规则具有其中多个标签,则标签覆盖的顺序决定行为。对于带有多个被覆盖标签的规则,应用最后一个标签的覆盖。
  • 规则覆盖 应用于托管规则集中的特定规则,通过其 Rule ID 引用。

更具体的覆盖优先于更一般的覆盖;规则覆盖优先于标签覆盖,标签覆盖优先于规则集覆盖。

要为托管规则集应用覆盖:

  1. 使用某个 更新规则集操作 更新您的阶段入口点规则集。
  2. 在执行托管规则集的规则的 action_parameters 中指定 overrides
"action_parameters": {
  "id": "<RULESET_ID>",
  "overrides": {
    // ruleset overrides
    "property-to-modify": "value",
    "property-to-modify": "value",
    // tag overrides
    "categories": [
      {
        "category": "<TAG_NAME>",
        "property-to-modify": "value",
        "property-to-modify": "value"
      }
    ],
    // rule overrides
    "rules": [
      {
        "id": "<RULE_ID>",
        "property-to-modify": "value",
        "property-to-modify": "value"
      }
    ]
  }
}

您可以覆盖以下规则属性:

  • "action"
  • "enabled"

某些托管规则集可能有额外的覆盖要求,或者可能允许您覆盖其他规则属性。请查看各 Cloudflare 产品的文档以了解详情。

示例

规则覆盖示例

以下 PUT 请求添加一条规则,在 zone 级别的 http_request_firewall_managed 阶段执行托管规则集,并定义规则覆盖以启用规则 <RULE_ID> 并将其操作设置为 log

Required API token permissions

At least one of the following token permissions is required:
  • Response Compression Write
  • Config Settings Write
  • Dynamic URL Redirects Write
  • Cache Settings Write
  • Custom Errors Write
  • Origin Write
  • Managed headers Write
  • Zone Transform Rules Write
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • HTTP DDoS Managed Ruleset Write
  • Sanitize Write
  • Transform Rules Write
  • Select Configuration Write
  • Bot Management Write
  • Zone WAF Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
  • Logs Write
Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "Deploy managed ruleset, enabling a specific rule with log action",
		"rules": [
				{
						"action": "execute",
						"expression": "true",
						"action_parameters": {
								"id": "<MANAGED_RULESET_ID>",
								"overrides": {
										"rules": [
												{
														"id": "<RULE_ID>",
														"enabled": true,
														"action": "log"
												}
										]
								}
						}
				}
		]
	}'

规则集覆盖示例

以下 PUT 请求添加一条规则,在账户级别的 http_request_firewall_managed 阶段执行托管规则集,并定义规则集覆盖,将所有(已启用)规则的操作设置为 log

Required API token permissions

At least one of the following token permissions is required:
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • Transform Rules Write
  • Select Configuration Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
Update an account entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "Deploy managed ruleset for example.com, overriding the rules action to log",
		"rules": [
				{
						"action": "execute",
						"expression": "(cf.zone.name eq \"example.com\") and cf.zone.plan eq \"ENT\"",
						"action_parameters": {
								"id": "<MANAGED_RULESET_ID>",
								"overrides": {
										"action": "log"
								}
						}
				}
		]
	}'

更多资源

有关通过 API 配置覆盖的其他示例,请参阅 Override examples

这篇文档对您有帮助吗?