← Документация WAF / custom-rules
Пользовательские наборы правил (на уровне зоны)
Пользовательские наборы правил являются коллекциями пользовательских правил, которые можно развернуть на уровне зоны или уровень аккаунта.
Подобно пользовательские правила, пользовательские наборы правил позволяют контролировать входящий трафик путем фильтрации запросов.
Например, можно применить пользовательский набор правил ко всем входящим запросам вашей зоны или к их подмножеству.
На уровне зоны все клиенты могут создавать и развёртывать пользовательские наборы правил. Пользовательские наборы правил на уровне аккаунта требуют тарифного плана Enterprise. Подробнее см. Доступность.
Развёртывание пользовательского набора правил через API
Создание пользовательского набора правил не активирует его. Пользовательские наборы правил выполняются только тогда, когда правило с execute действие ссылается на них из входной набор правил фазы, набор правил верхнего уровня, который Cloudflare оценивает для каждого запроса в заданной фаза.
Чтобы развернуть пользовательский набор правил для зоны:
- Создайте пользовательский набор правил на уровне зоны с одним или несколькими правилами. Либо укажите существующий пользовательский набор правил, который нужно развернуть, с помощью Список наборов правил зоны операция API.
- Добавьте правило с
executeдействие кhttp_request_firewall_customвходной набор правил фазы, ссылающийся на ID пользовательского набора правил. Это правило указывает Cloudflare выполнить пользовательский набор правил при совпадении выражения правила.
1. Создайте пользовательский набор правил
Следующий запрос создаёт новый пользовательский набор правил на уровне зоны с двумя правилами. Ответ будет содержать ID нового пользовательского набора правил в id поле.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone WAF Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Custom Ruleset 1",
"description": "My First Custom Ruleset (zone)",
"kind": "custom",
"phase": "http_request_firewall_custom",
"rules": [
{
"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
"action": "challenge",
"description": "challenge GB and FR based on bot score"
},
{
"expression": "not http.request.uri.path wildcard \"/api/*\"",
"action": "challenge",
"description": "challenge not /api"
}
]
}'{
"result": {
"id": "f82ccda3d21f4a02825d3fe45b5e1c10",
"name": "Custom Ruleset 1",
"description": "My First Custom Ruleset (zone)",
"kind": "custom",
"version": "1",
"rules": [
{
"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
"action": "challenge",
"description": "challenge GB and FR based on bot score"
},
{
"expression": "not http.request.uri.path wildcard \"/api/*\"",
"action": "challenge",
"description": "challenge not /api"
}
],
"last_updated": "2025-11-09T10:27:30.636197Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}2. Разверните пользовательский набор правил
Разверните пользовательский набор правил, добавив правило с "action": "execute" к http_request_firewall_custom набор правил точки входа фазы.
-
Вызовите Получить входной набор правил зоны операцию для получения определения входного набора правил для
http_request_firewall_customфаза. Вам понадобится ID зоны для этой задачи.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Zone WAF WriteZone WAF Read
Получить входной набор правил зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_custom/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Zone-level phase entry point", "id": "<ENTRY_POINT_RULESET_ID>", "kind": "zone", "last_updated": "2025-11-16T15:40:08.202335Z", "name": "zone", "phase": "http_request_firewall_custom", "rules": [ // ... ], "version": "10" }, "success": true, "errors": [], "messages": [] } -
Если входной набор правил уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила набора правил зоны операцию для добавленияexecuteправило в существующий набор правил, разворачивающий пользовательский набор правил, созданный вами на шаге 1 (заменитеf82ccda3d21f4a02825d3fe45b5e1c10с ID вашего пользовательского набора правил).
Поскольку выражение имеет видtrue, пользовательский набор правил будет выполняться для всех входящих запросов. По умолчанию правило добавляется в конец списка правил, уже имеющихся в наборе правил.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Zone WAF Write
Создание правила набора правил зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$ENTRY_POINT_RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "execute", "expression": "true", "action_parameters": { "id": "f82ccda3d21f4a02825d3fe45b5e1c10" }, "description": "Execute custom ruleset" }'{ "result": { "id": "<ENTRY_POINT_RULESET_ID>", "name": "zone", "description": "Zone-level phase entry point", "kind": "zone", "version": "11", "rules": [ // ... any existing rules { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "f82ccda3d21f4a02825d3fe45b5e1c10" }, "expression": "true", "description": "Execute custom ruleset", "last_updated": "2025-11-18T18:08:14.003361Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2025-11-18T18:08:14.003361Z", "phase": "http_request_firewall_custom" }, "success": true, "errors": [], "messages": [] } -
Если входной набор правил не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создание набора правил зоны операцию. Включите одно правило вrulesмассив, который выполняет пользовательский набор правил для всех входящих запросов в зоне. Заменитеf82ccda3d21f4a02825d3fe45b5e1c10с ID вашего пользовательского набора правил.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Zone WAF Write
Создание набора правил зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "zone", "description": "Zone-level phase entry point", "kind": "zone", "phase": "http_request_firewall_custom", "rules": [ { "action": "execute", "action_parameters": { "id": "f82ccda3d21f4a02825d3fe45b5e1c10" }, "expression": "true", "description": "Execute custom ruleset" } ] }'
Следующие шаги
Используйте различные операции в Rulesets API для работы с созданным и развёрнутым вами пользовательским набором правил. В следующей таблице приведён список распространённых задач при работе с пользовательскими наборами правил на уровне зоны:
| Задача | Процедура |
|---|---|
| Получить список пользовательских наборов правил | Используйте Список наборов правил зоны операцию и найдите наборы правил с Подробнее см. в Список существующих наборов правил. |
| Список всех правил в пользовательском наборе правил | Используйте Получить набор правил зоны операцию с ID пользовательского набора правил, чтобы получить список настроенных правил и их ID. Подробнее см. в Просмотреть конкретный набор правил. |
| Обновление пользовательского правила | Используйте Обновление правила в наборе правил зоны операцию. Вам потребуется указать ID пользовательского набора правил и ID правила. Подробнее см. в Обновление правила в наборе правил. |
| Удаление пользовательского правила | Используйте Удаление правила набора правил зоны операцию. Вам потребуется указать ID пользовательского набора правил и ID правила. Подробнее см. в Удалите правило в наборе правил. |
Дополнительные ресурсы
Дополнительную информацию о работе с пользовательскими наборами правил через API Cloudflare см. в Работа с пользовательскими наборами правил в документации по Ruleset Engine.