← Документация WAF / account / custom-rulesets
Создание пользовательского набора правил с помощью API
Чтобы развернуть пользовательские правила на уровне аккаунта:
- Создайте пользовательский набор правил с одним или несколькими правилами. Либо укажите существующий пользовательский набор правил, который нужно развернуть, с помощью Список наборов правил аккаунта операция API.
- Разверните пользовательский набор правил, чтобы он начал выполняться. Чтобы развернуть пользовательский набор правил, создайте правило с
executeдействие.
Используйте Rulesets API для работы с пользовательскими наборами правил через API.
Если вы используете Terraform, см. Настройка пользовательских правил WAF с помощью Terraform.
Процедура
Чтобы развернуть пользовательский набор правил, выполните следующие общие действия:
- Создайте пользовательский набор правил в
http_request_firewall_customфаза с одним или несколькими правилами. - Разверните набор правил в ruleset точки входа из
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), создайте его с помощью Создайте account ruleset операцию. Включите одно правило вrulesмассив, который выполняет пользовательский набор правил для всех входящих запросов зон Enterprise в вашем аккаунте.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создайте account rulesetcurl "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 для работы с созданным и развёрнутым вами пользовательским набором правил. В следующей таблице приведён список распространённых задач при работе с пользовательскими наборами правил на уровне аккаунта:
| Задача | Процедура |
|---|---|
| Получить список пользовательских наборов правил | Используйте Список наборов правил аккаунта операцию и найдите наборы правил с Подробнее см. в Список существующих наборов правил. |
| Список всех правил в пользовательском наборе правил | Используйте Получить набор правил аккаунта операцию с ID пользовательского набора правил, чтобы получить список настроенных правил и их ID. Подробнее см. в Просмотреть конкретный набор правил. |
| Обновление пользовательского правила | Используйте Обновление правила набора правил аккаунта операцию. Вам потребуется указать ID пользовательского набора правил и ID правила. Подробнее см. в Обновление правила в наборе правил. |
| Удаление пользовательского правила | Используйте Удаление правила набора правил аккаунта операцию. Вам потребуется указать ID пользовательского набора правил и ID правила. Подробнее см. в Удалите правило в наборе правил. |
Дополнительные ресурсы
Инструкции по созданию пользовательского набора правил на уровне зоны через API см. в Пользовательские наборы правил (на уровне зоны).
Дополнительную информацию о работе с пользовательскими наборами правил см. в Работа с пользовательскими наборами правил в документации по Ruleset Engine.