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