← Документация WAF / managed-rules / waf-exceptions
Добавление исключения через API
Чтобы добавить исключение для управляемых правил через API, создайте правило с skip в набор правил точки входа фазы http_request_firewall_managed . Исключения можно определять на уровне аккаунта и на уровне зоны. Исключения также называют правилами skip.
Чтобы настроить исключение, определите action_parameters объект в соответствии с типом исключения. См. следующие примеры:
- Пропуск всех остальных правил
- Пропуск Cloudflare Managed Ruleset
- Пропуск одного или нескольких правил управляемых наборов правил WAF
Подробнее о создании исключений через API см. Создание исключения в документации по Ruleset Engine.
Примеры
Пропуск всех остальных правил
Следующий пример добавляет правило, которое пропускает все оставшиеся правила в наборе правил точки входа для запросов, соответствующих dev.example.com (имя хоста).
-
Вызовите Получение набора правил точки входа зоны (операция), чтобы получить текущую конфигурацию набора правил точки входа фазы
http_request_firewall_managedфазе.Получение набора правил точки входа зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID "name": "default", "description": "", "source": "firewall_managed", "kind": "zone", "version": "3", "rules": [ // (...) ], "last_updated": "2024-01-20T14:29:00.190643Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] }Сохраните идентификатор набора правил точки входа (
060013b1eeb14c93b0dcd896537e0d2c) для следующего шага. -
Вызовите Создание правила в наборе правил зоны (запрос
POSTзапрос), чтобы добавить исключение (или правило skip) в начало списка правил, поскольку правило skip применяется только к правилам, перечисленным после него. Точное расположение правила задаётся вposition(объект).Создание правила в наборе правил зоны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 '{ "expression": "(http.host eq \"dev.example.com\")", "description": "Skip managed rules for dev.example.com", "action": "skip", "action_parameters": { "ruleset": "current" }, "position": { "before": "" } }'
Подробнее о пропуске всех оставшихся правил через API см. Создание исключения в документации по Ruleset Engine.
Пропуск Cloudflare Managed Ruleset
Следующий пример добавляет правило, которое пропускает Cloudflare Managed Ruleset для запросов, соответствующих dev.example.com (имя хоста).
-
Вызовите Получение набора правил точки входа зоны (операция), чтобы получить текущую конфигурацию набора правил точки входа фазы
http_request_firewall_managedфазе.Получение набора правил точки входа зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID "name": "default", "description": "", "source": "firewall_managed", "kind": "zone", "version": "3", "rules": [ // (...) { "id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute` rule ID "version": "1", "action": "execute", "expression": "true", "last_updated": "2024-01-20T14:21:28.643979Z", "ref": "1bdb49371c1f46958fc8b985efcb79e7", "enabled": true, "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare Managed Ruleset" ID "version": "latest" } } // (...) ], "last_updated": "2024-01-20T14:29:00.190643Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] }Определите правило, разворачивающее Cloudflare Managed Ruleset, найдя
executeсaction_parameters>idравным(идентификатор управляемого набора правил). Сохраните следующие ID для следующего шага:
- ID набора правил точки входа (
060013b1eeb14c93b0dcd896537e0d2cв этом примере) - ID
executeразвёртывания управляемого набора правил (1bdb49371c1f46958fc8b985efcb79e7в этом примере)
- ID набора правил точки входа (
-
Вызовите Создание правила в наборе правил зоны (запрос
POST(запрос), чтобы добавить исключение (правило пропуска) непосредственно передexecuteправилом, разворачивающим Cloudflare Managed Ruleset, поскольку правило skip применяется только к правилам, перечисленным после него. Точное расположение правила задаётся вposition(объект).Создание правила в наборе правил зоны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 '{ "expression": "(http.host eq \"dev.example.com\")", "description": "Skip the Cloudflare Managed Ruleset for dev.example.com", "action": "skip", "action_parameters": { "rulesets": [ "efb7b8c949ac4650a09736fc376e9aee" ] }, "position": { "before": "1bdb49371c1f46958fc8b985efcb79e7" } }'
Подробнее о пропуске одного или нескольких управляемых наборов правил через API см. Создание исключения в документации по Ruleset Engine.
Пропуск одного или нескольких правил управляемых наборов правил WAF
Следующий пример добавляет правило, которое пропускает конкретное правило из Cloudflare Managed Ruleset для запросов, соответствующих dev.example.com (имя хоста).
-
Вызовите Получение набора правил зоны , чтобы получить список правил Cloudflare Managed Ruleset (ID набора правил
).
Получить сведения об управляемом наборе правил можно через конечную точку уровня аккаунта (Получение набора правил аккаунта) или эндпоинт уровня зоны (Получение набора правил зоны).Получение набора правил зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/efb7b8c949ac4650a09736fc376e9aee" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "id": "efb7b8c949ac4650a09736fc376e9aee", "name": "Cloudflare Managed Ruleset", "description": "Created by the Cloudflare security team, this ruleset is designed to provide fast and effective protection for all your applications. It is frequently updated to cover new vulnerabilities and reduce false positives.", "source": "firewall_managed", "kind": "managed", "version": "180", "rules": [ // (...) { "id": "d9e350f1b72d4730899c8a420e48a85d", // ID of rule to skip "version": "180", "action": "block", "categories": ["file-inclusion", "october-cms"], "description": "October CMS - File Inclusion", "last_updated": "2024-02-05T07:12:54.565276Z", "ref": "adb550873eb92d32372ed08514d33241", "enabled": true } // (...) ], "last_updated": "2024-02-05T07:12:54.565276Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] }Запишите ID правила, которое вы хотите пропустить (
в этом примере). -
Вызовите Получение набора правил точки входа зоны , чтобы получить текущую конфигурацию набор правил точки входа
http_request_firewall_managedфазе.Получение набора правил точки входа зоныcurl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "id": "060013b1eeb14c93b0dcd896537e0d2c", // entry point ruleset ID "name": "default", "description": "", "source": "firewall_managed", "kind": "zone", "version": "3", "rules": [ // (...) { "id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute` rule ID "version": "1", "action": "execute", "expression": "true", "last_updated": "2024-01-20T14:21:28.643979Z", "ref": "1bdb49371c1f46958fc8b985efcb79e7", "enabled": true, "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare Managed Ruleset" ID "version": "latest" } } // (...) ], "last_updated": "2024-01-20T14:29:00.190643Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] }Определите правило, разворачивающее Cloudflare Managed Ruleset, найдя
executeсaction_parameters>idравным(идентификатор управляемого набора правил). Сохраните следующие ID для следующего шага:
- ID набора правил точки входа (
060013b1eeb14c93b0dcd896537e0d2cв этом примере) - ID
executeправило, развёртывающее Cloudflare Managed Ruleset (1bdb49371c1f46958fc8b985efcb79e7в этом примере)
Вы также будете использовать следующие ID:
- ID набора Cloudflare Managed Ruleset (
) - Идентификатор пропускаемого правила (
в этом примере)
- ID набора правил точки входа (
-
Вызовите Создание правила в наборе правил зоны (запрос
POST(запрос), чтобы добавить исключение (правило пропуска) непосредственно передexecuteправилом, развёртывающим Cloudflare Managed Ruleset, поскольку правило пропуска применяется только к правилам, идущим после него.Создание правила в наборе правил зоны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 '{ "expression": "(http.host eq \"dev.example.com\")", "description": "Skip a single rule for dev.example.com", "action": "skip", "action_parameters": { "rules": { "efb7b8c949ac4650a09736fc376e9aee": [ "d9e350f1b72d4730899c8a420e48a85d" ] } }, "position": { "before": "1bdb49371c1f46958fc8b985efcb79e7" } }'
action_parameters > rules объект содержит идентификатор Cloudflare Managed Ruleset со связанным списком идентификаторов правил для пропуска (в данном случае только одно правило). position (объект) определяет точное размещение правила в наборе правил точки входа (перед правилом 1bdb49371c1f46958fc8b985efcb79e7).
Подробнее о пропуске одного или нескольких правил управляемых наборов через API см. Создание исключения в документации по Ruleset Engine.