INTEGRITY Документация

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

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

Чтобы настроить исключение, определите 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": []
    }

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

  2. Вызовите Создание правила в наборе правил зоны (запрос 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 (имя хоста).

  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 набора правил точки входа (060013b1eeb14c93b0dcd896537e0d2c в этом примере)
    • ID execute развёртывания управляемого набора правил (1bdb49371c1f46958fc8b985efcb79e7 в этом примере)
  2. Вызовите Создание правила в наборе правил зоны (запрос 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 (имя хоста).

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

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