Документация Запланировать пилот

Добавьте исключение через API

Чтобы добавить исключение для управляемых правил через API, создайте правило с skip действие в входной набор правил фазы из http_request_firewall_managed фаза. Вы можете определять исключения на уровне аккаунта и на уровне зоны. Исключения также называют правилами пропуска.

Чтобы настроить исключение, определите action_parameters объект в соответствии с типом исключения. См. следующие примеры:

Дополнительную информацию о создании исключений с помощью API см. в Создание исключения в документации по Ruleset Engine.

Примеры

Пропустить все оставшиеся правила

Следующий пример добавляет правило, которое пропускает все оставшиеся правила входного набора правил для запросов, соответствующих dev.example.com имя хоста.

  1. Вызовите Получить входной набор правил зоны операцию для получения текущей конфигурации входного набора правил 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": []
    }

    Сохраните ID входного набора правил (060013b1eeb14c93b0dcd896537e0d2c) для следующего шага.

  2. Вызовите Создание правила набора правил зоны операцию ( POST запрос), чтобы добавить исключение (или правило пропуска) в начало списка правил, так как правило пропуска применяется только к правилам, расположенным после него. Точное расположение правила определяется в 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 имя хоста.

  1. Вызовите Получить входной набор правил зоны операцию для получения текущей конфигурации входного набора правил 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 для следующего шага:

    • ID входного набора правил (060013b1eeb14c93b0dcd896537e0d2c в этом примере)
    • ID execute правило, разворачивающее управляемый набор правил (1bdb49371c1f46958fc8b985efcb79e7 в этом примере)
  2. Вызовите Создание правила набора правил зоны операцию ( POST запрос), чтобы добавить исключение (или правило пропуска) непосредственно перед execute правило, разворачивающее Cloudflare Managed Ruleset, поскольку правило пропуска применяется только к правилам, указанным после него. Точное расположение правила определяется в 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 имя хоста.

  1. Вызовите Получить набор правил зоны операцию для получения списка правил в 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 правила, которое хотите пропустить ( в этом примере).

  2. Вызовите Получить входной набор правил зоны операцию для получения текущей конфигурации ruleset точки входа из 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 для следующего шага:

    • ID входного набора правил (060013b1eeb14c93b0dcd896537e0d2c в этом примере)
    • ID execute правило, разворачивающее Cloudflare Managed Ruleset (1bdb49371c1f46958fc8b985efcb79e7 в этом примере)

    Также потребуются следующие ID:

    • ID Cloudflare Managed Ruleset ()
    • ID правила для пропуска ( в этом примере)
  3. Вызовите Создание правила набора правил зоны операцию ( 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 объект содержит ID Cloudflare Managed Ruleset со связанным списком идентификаторов правил, которые нужно пропустить (в данном случае только одно правило). position объект определяет точное место правила во входном наборе правил (перед правилом 1bdb49371c1f46958fc8b985efcb79e7).

Дополнительную информацию о пропуске одного или нескольких правил управляемых наборов правил через API см. в Создание исключения в документации по Ruleset Engine.

Запросите бесплатный пилот

Запланировать пилот