← Документация WAF / custom-rules
Создание пользовательского правила через API
Используйте Rulesets API , чтобы создать пользовательское правило через API на уровне зоны.
Вы должны развернуть пользовательские правила в фазе http_request_firewall_custom набор правил точки входа фазы.
Если вы используете Terraform, см. Настройка пользовательских правил WAF с помощью Terraform.
Создание пользовательского правила
Чтобы создать пользовательское правило для зоны, добавьте правило в http_request_firewall_custom набора правил точки входа фазы.
-
Вызовите Получение набора правил точки входа зоны (операция), чтобы получить определение набора правил точки входа для фазы
http_request_firewall_custom(фаза). Вам понадобится ID зоны для этой задачи. -
Если набор правил точки входа уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила в наборе правил зоны (операция), чтобы добавить пользовательское правило в существующий набор. Подробности — в примерах ниже. -
Если набор правил точки входа не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создание набора правил зоны. Включите ваше пользовательское правило в массивrules(массив). См. Create ruleset для примера.
Пример A
Этот пример запроса добавляет правило в http_request_firewall_custom (набор правил точки входа этой фазы) для зоны с ID $ZONE_ID. Набор правил точки входа уже существует и имеет идентификатор $RULESET_ID.
Новое правило, которое станет последним в наборе, будет выдавать челлендж запросам из Великобритании или Франции с attack score ниже 20.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "My custom rule",
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and cf.waf.score lt 20",
"action": "challenge"
}'Чтобы задать конкретную позицию нового правила, включите position (объект) в теле запроса в соответствии с рекомендациями в Изменение порядка правила в наборе правил.
Инструкции по созданию набора правил точки входа и определению его правил одним вызовом API см. в Добавление правил в наборы правил точек входа фаз.
Пример B
Этот пример запроса добавляет правило в http_request_firewall_custom (набор правил точки входа этой фазы) для зоны с ID $ZONE_ID. Набор правил точки входа уже существует и имеет идентификатор $RULESET_ID.
Новое правило, которое станет последним в наборе, включает определение пользовательский ответ для заблокированных запросов.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "My custom rule with plain text response",
"expression": "(ip.src.country eq \"GB\" or ip.src.country eq \"FR\") and cf.waf.score lt 20",
"action": "block",
"action_parameters": {
"response": {
"status_code": 403,
"content": "Your request was blocked.",
"content_type": "text/plain"
}
}
}'Чтобы задать конкретную позицию нового правила, включите position (объект) в теле запроса в соответствии с рекомендациями в Изменение порядка правила в наборе правил.
Инструкции по созданию набора правил точки входа и определению его правил одним вызовом API см. в Добавление правил в наборы правил точек входа фаз.
Дальнейшие шаги
Используйте различные операции в Rulesets API для работы с только что созданным правилом. В следующей таблице перечислены типовые задачи:
| Задача | Порядок действий |
|---|---|
| Список всех правил в наборе | Используйте Получение набора правил точки входа зоны операцию с Подробнее см. Просмотр конкретного набора правил. |
| Обновление правила | Используйте Обновление правила набора правил зоны (операция API). Потребуется указать ID набора правил и ID правила. Чтобы получить эти ID, можно использовать Получение набора правил точки входа зоны операцию с Подробнее см. Обновление правила в наборе правил. |
| Удаление правила | Используйте Удаление правила из набора правил зоны (операция API). Потребуется указать ID набора правил и ID правила. Чтобы получить эти ID, можно использовать Получение набора правил точки входа зоны операцию с Подробнее см. Удаление правила из набора. |
Эти операции описаны в документации Ruleset Engine. Ruleset Engine лежит в основе разных продуктов Cloudflare, включая пользовательские правила.
Дополнительные ресурсы
Инструкции по развёртыванию пользовательских правил на уровне учётной записи через API см. в Создание пользовательского набора правил через API.