要通过 API 自定义托管规则集的行为,请在部署时覆盖该规则集。覆盖规则集时,您指定要在默认配置之上执行的更改。这些更改优先于规则集的默认行为。
例如,要在强制执行托管规则集之前进行测试,可以考虑以所有规则均设为 log(而非其默认操作)的方式执行该规则集。为此,请在规则集级别覆盖托管规则集的已配置行为,使每条规则都使用 log 操作。
如果您使用 Terraform,请参阅以下页面:
要在 Cloudflare 仪表板中定义覆盖,请参阅以下资源:
您可以在三个级别覆盖规则集:
- 规则集覆盖 应用于所执行规则集中的所有规则。
- 标签覆盖 应用于带有特定标签的所有规则。例如,使用标签覆盖自定义 Cloudflare Managed Ruleset,使所有带有
wordpress标签的规则都设置为 Block。如果多个标签有覆盖,并且某条规则具有其中多个标签,则标签覆盖的顺序决定行为。对于带有多个被覆盖标签的规则,应用最后一个标签的覆盖。 - 规则覆盖 应用于托管规则集中的特定规则,通过其 Rule ID 引用。
更具体的覆盖优先于更一般的覆盖;规则覆盖优先于标签覆盖,标签覆盖优先于规则集覆盖。
要为托管规则集应用覆盖:
- 使用某个 更新规则集操作 更新您的阶段入口点规则集。
- 在执行托管规则集的规则的
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 WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
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 WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
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。