← Документация 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вашим идентификатором пользовательского набора правил).
Поскольку выражение —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вашим идентификатором пользовательского набора правил.
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения 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 для работы с созданным и развёрнутым вами пользовательским набором правил. В следующей таблице приведён список типовых задач при работе с пользовательскими наборами правил на уровне зоны:
| Задача | Порядок действий |
|---|---|
| Получить список пользовательских наборов правил | Используйте Список наборов правил зоны операцию и найдите наборы правил с Подробнее см. Список существующих наборов правил. |
| Список всех правил пользовательского набора правил | Используйте Получение набора правил зоны операцию с идентификатором пользовательского набора правил, чтобы получить список настроенных правил и их идентификаторы. Подробнее см. Просмотр конкретного набора правил. |
| Обновление пользовательского правила | Используйте Обновление правила набора правил зоны операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила. Подробнее см. Обновление правила в наборе правил. |
| Удаление пользовательского правила | Используйте Удаление правила из набора правил зоны операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила. Подробнее см. Удаление правила из набора. |
Дополнительные ресурсы
Подробнее о работе с пользовательскими наборами правил через Cloudflare API см. Работа с пользовательскими наборами правил в документации по Ruleset Engine.