← Документация WAF / account / custom-rulesets
Создание пользовательского набора правил через API
Чтобы развернуть пользовательские правила на уровне аккаунта:
- Создайте пользовательский набор с одним или несколькими правилами. Либо определите существующий пользовательский набор, который хотите развернуть, с помощью Список наборов правил учётной записи (операция API).
- Разверните пользовательский набор правил, чтобы он выполнялся. Для развёртывания пользовательского набора создайте правило с действием
execute(действие).
Используйте Rulesets API для работы с пользовательскими наборами правил через API.
Если вы используете Terraform, см. Настройка пользовательских правил WAF с помощью Terraform.
Порядок действий
Чтобы развернуть пользовательский набор правил, выполните следующие общие шаги:
- Создайте пользовательский набор правил в фазе
http_request_firewall_custom(фаза) с одним или несколькими правилами. - Разверните набор правил в фазе набор правил точки входа
http_request_firewall_customфазе.
1. Создайте пользовательский набор правил
Следующий пример создаёт пользовательский набор правил на уровне аккаунта с одним правилом в rules (массив).
Необходимые разрешения API-токена
Хотя бы одно из следующих разрешения токена обязательно:Account WAF WriteAccount Rulesets Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "",
"kind": "custom",
"name": "My custom ruleset",
"rules": [
{
"description": "Challenge web traffic (not /api)",
"expression": "not starts_with(http.request.uri.path, \"/api/\")",
"action": "managed_challenge"
}
],
"phase": "http_request_firewall_custom"
}'Сохраните ID набора правил из ответа для следующего шага.
2. Разверните пользовательский набор правил
Чтобы развернуть пользовательский набор правил, добавьте правило с "action": "execute" в http_request_firewall_custom набора правил точки входа фазы.
-
Вызовите Получение набора правил точки входа аккаунта (операция), чтобы получить определение набора правил точки входа для фазы
http_request_firewall_custom(фаза). Вам понадобится ID аккаунта для этой задачи.
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount Rulesets Write
Получение набора правил точки входа аккаунтаcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_custom/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Account-level phase entry point", "id": "<RULESET_ID>", "kind": "root", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "root", "phase": "http_request_firewall_custom", "rules": [ // ... ], "version": "9" }, "success": true, "errors": [], "messages": [] } -
Если набор правил точки входа уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила в наборе правил учётной записи операцию, чтобы добавитьexecute(правило) в существующий набор, развёртывающее пользовательский набор правил. По умолчанию правило добавляется в конец списка правил набора.Следующий запрос создаёт правило, выполняющее пользовательский набор правил с ID
<CUSTOM_RULESET_ID>для всех зон Enterprise в учётной записи:
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создание правила в наборе правил учётной записиcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "Execute custom ruleset", "expression": "(cf.zone.plan eq \"ENT\")", "action": "execute", "action_parameters": { "id": "<CUSTOM_RULESET_ID>" }, "enabled": true }' -
Если набор правил точки входа не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создание набора правил аккаунта. Включите одно правило в массивrules(массив), который выполняет пользовательский набор правил для всех входящих запросов зон Enterprise вашего аккаунта.
Хотя бы одно из следующих разрешения токена обязательно:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создание набора правил аккаунтаcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "description": "", "kind": "root", "name": "Account-level phase entry point", "rules": [ { "action": "execute", "expression": "(cf.zone.plan eq \"ENT\")", "action_parameters": { "id": "<CUSTOM_RULESET_ID>" } } ], "phase": "http_request_firewall_custom" }'
Дальнейшие шаги
Используйте различные операции в Rulesets API для работы с созданным и развёрнутым вами пользовательским набором правил. В следующей таблице приведён список типовых задач при работе с пользовательскими наборами правил на уровне учётной записи:
| Задача | Порядок действий |
|---|---|
| Получить список пользовательских наборов правил | Используйте Список наборов правил учётной записи операцию и найдите наборы правил с Подробнее см. Список существующих наборов правил. |
| Список всех правил пользовательского набора правил | Используйте Получение набора правил аккаунта операцию с идентификатором пользовательского набора правил, чтобы получить список настроенных правил и их идентификаторы. Подробнее см. Просмотр конкретного набора правил. |
| Обновление пользовательского правила | Используйте Обновление правила в наборе правил учётной записи операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила. Подробнее см. Обновление правила в наборе правил. |
| Удаление пользовательского правила | Используйте Удаление правила из набора правил учётной записи операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила. Подробнее см. Удаление правила из набора. |
Дополнительные ресурсы
Инструкции по созданию пользовательского набора правил на уровне зоны через API см. в Пользовательские наборы правил (уровень зоны).
Подробнее о работе с пользовательскими наборами правил см. Работа с пользовательскими наборами правил в документации по Ruleset Engine.