← Cloudflare Ruleset Engine / ruleset-engine / custom-rulesets
Nasazení vlastní sady pravidel
Chcete-li nasadit vlastní sadu pravidel, přidejte pravidlo s execute akci do seznamu pravidel fáze vstupní sada pravidel na úrovni účtu nebo zóny. Výraz nového pravidla určí, kdy se spustí vlastní sada pravidel.
Vlastní sady pravidel můžete nasadit pouze ve vstupní sadě pravidel se stejným rozsahem. Vlastní sadu pravidel definovanou na úrovni účtu lze například nasadit pouze na úrovni účtu.
Pokud používáte Terraform, přečtěte si Konfigurace vlastních pravidel WAF pomocí Terraformu najdete příklady vytváření a nasazování vlastních sad pravidel.
Pokud používáte Cloudflare dashboard, přečtěte si Práce s vlastními sadami pravidel v dashboardu.
Než začnete
- Získání názvu fáze kde chcete nasadit vlastní sadu pravidel.
- Vytvořte vlastní sadu pravidel a uložit si ID nové vlastní sady pravidel.
- Načtěte pravidla, která už jsou v sadě pravidel vstupního bodu fáze. Musíte zahrnout do
PUTpožadavku uveďte všechna existující pravidla, která chcete zachovat.
Příklad A - Nasazení na úrovni účtu
Následující PUT přidá pravidlo, které spustí vlastní sadu pravidel, pokud název zóny odpovídá example.com.
V PUT požadavku musíte uvést ID všech existujících pravidel, která chcete zachovat. Odpověď bude obsahovat všechna pravidla ve vstupní sadě pravidel fáze po provedení aktualizace.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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_custom/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"description": "Execute custom ruleset",
"expression": "(cf.zone.name == \"example.com\") and cf.zone.plan eq \"ENT\"",
"action_parameters": {
"id": "<CUSTOM_RULESET_ID>"
}
},
{
"id": "<EXISTING_PHASE_RULE_ID_1>"
},
{
"id": "<EXISTING_PHASE_RULE_ID_2>"
}
]
}'{
"result": {
"id": "<ACCOUNT_PHASE_RULESET_ID>",
"name": "http_request_firewall_custom phase entry point ruleset for my account",
"description": "Execute several rulesets",
"kind": "root",
"version": "3",
"rules": [
{
"id": "<PHASE_RULE_ID>",
"version": "1",
"action": "execute",
"description": "Execute custom ruleset",
"action_parameters": {
"id": "<CUSTOM_RULESET_ID>",
"version": "latest"
},
"expression": "(cf.zone.name == \"example.com\") and cf.zone.plan eq \"ENT\"",
"last_updated": "2021-03-18T18:35:14.135697Z",
"ref": "<PHASE_RULE_REF>",
"enabled": true
},
{
"id": "<EXISTING_PHASE_RULE_ID_1>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<EXECUTED_RULESET_ID_1>",
"version": "latest"
},
"expression": "(cf.zone.name eq \"example.com\") and cf.zone.plan eq \"ENT\"",
"last_updated": "2021-03-16T15:51:49.180378Z",
"ref": "<EXISTING_PHASE_RULE_REF_1>",
"enabled": true
},
{
"id": "<EXISTING_PHASE_RULE_ID_2>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<EXECUTED_RULESET_ID_2>",
"version": "latest"
},
"expression": "(cf.zone.name eq \"example.com\") and cf.zone.plan eq \"ENT\"",
"last_updated": "2021-03-16T15:50:29.861157Z",
"ref": "<EXISTING_PHASE_RULE_REF_2>",
"enabled": true
}
],
"last_updated": "2021-03-18T18:35:14.135697Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}Příklad B - Nasazení na úrovni zóny
Následující PUT přidá do vstupní sady pravidel na úrovni zóny pravidlo, které spouští vlastní sadu pravidel s ID "<CUSTOM_RULESET_ID>" pro požadavky směřující na /login cesta URI.
Musíte zahrnout do PUT požadavku uveďte ID všech existujících pravidel, která chcete zachovat. Odpověď bude obsahovat všechna pravidla ve vstupní sadě pravidel fáze po provedení aktualizace.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné: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_custom/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"description": "Execute custom ruleset (zone)",
"expression": "(http.request.uri.path eq \"/login\")",
"action_parameters": {
"id": "<CUSTOM_RULESET_ID>"
}
},
{
"id": "<EXISTING_PHASE_RULE_ID_1>"
}
]
}'{
"result": {
"id": "<ZONE_PHASE_RULESET_ID>",
"name": "http_request_firewall_custom phase entry point ruleset for my zone",
"description": "",
"kind": "zone",
"version": "3",
"rules": [
{
"id": "<PHASE_RULE_ID>",
"version": "1",
"action": "execute",
"description": "Execute custom ruleset (zone)",
"action_parameters": {
"id": "<CUSTOM_RULESET_ID>",
"version": "latest"
},
"expression": "(http.request.uri.path eq \"/login\")",
"last_updated": "2025-08-18T18:35:14.135697Z",
"ref": "<PHASE_RULE_REF>",
"enabled": true
},
{
"id": "<EXISTING_PHASE_RULE_ID_1>",
"version": "1",
"action": "managed_challenge",
"expression": "(cf.waf.score lt 20 and http.request.uri.path wildcard \"/admin/*\")",
"last_updated": "2025-08-16T15:51:49.180378Z",
"ref": "<EXISTING_PHASE_RULE_REF_1>",
"enabled": true
}
],
"last_updated": "2025-08-18T18:35:14.135697Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}