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

Создание пользовательского набора правил через API

Чтобы развернуть пользовательские правила на уровне аккаунта:

  1. Создайте пользовательский набор с одним или несколькими правилами. Либо определите существующий пользовательский набор, который хотите развернуть, с помощью Список наборов правил учётной записи (операция API).
  2. Разверните пользовательский набор правил, чтобы он выполнялся. Для развёртывания пользовательского набора создайте правило с действием execute (действие).

Используйте Rulesets API для работы с пользовательскими наборами правил через API.

Если вы используете Terraform, см. Настройка пользовательских правил WAF с помощью Terraform.

Порядок действий

Чтобы развернуть пользовательский набор правил, выполните следующие общие шаги:

  1. Создайте пользовательский набор правил в фазе http_request_firewall_custom (фаза) с одним или несколькими правилами.
  2. Разверните набор правил в фазе набор правил точки входа http_request_firewall_custom фазе.

1. Создайте пользовательский набор правил

Следующий пример создаёт пользовательский набор правил на уровне аккаунта с одним правилом в rules (массив).

Необходимые разрешения API-токена

Хотя бы одно из следующих разрешения токена обязательно:
Создание набора правил аккаунта
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "",
		"kind": "custom",
		"name": "My custom ruleset",
		"rules": [
				{
						"description": "Challenge web traffic (not /api)",
						"expression": "not starts_with(http.request.uri.path, \"/api/\")",
						"action": "managed_challenge"
				}
		],
		"phase": "http_request_firewall_custom"
	}'

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

2. Разверните пользовательский набор правил

Чтобы развернуть пользовательский набор правил, добавьте правило с "action": "execute" в http_request_firewall_custom набора правил точки входа фазы.

  1. Вызовите Получение набора правил точки входа аккаунта (операция), чтобы получить определение набора правил точки входа для фазы http_request_firewall_custom (фаза). Вам понадобится ID аккаунта для этой задачи.

    Необходимые разрешения API-токена

    Хотя бы одно из следующих разрешения токена обязательно:
    • Account WAF Write
    • Account WAF Read
    • Account Rulesets Read
    • Account Rulesets Write
    Получение набора правил точки входа аккаунта
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_custom/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"description": "Account-level phase entry point",
    		"id": "<RULESET_ID>",
    		"kind": "root",
    		"last_updated": "2024-03-16T15:40:08.202335Z",
    		"name": "root",
    		"phase": "http_request_firewall_custom",
    		"rules": [
    			// ...
    		],
    		"version": "9"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  2. Если набор правил точки входа уже существует (то есть если вы получили 200 OK код состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила в наборе правил учётной записи операцию, чтобы добавить execute (правило) в существующий набор, развёртывающее пользовательский набор правил. По умолчанию правило добавляется в конец списка правил набора.

    Следующий запрос создаёт правило, выполняющее пользовательский набор правил с ID <CUSTOM_RULESET_ID> для всех зон Enterprise в учётной записи:

    Необходимые разрешения API-токена

    Хотя бы одно из следующих разрешения токена обязательно:
    • Account WAF Write
    • Account Rulesets Write
    Создание правила в наборе правил учётной записи
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"description": "Execute custom ruleset",
    		"expression": "(cf.zone.plan eq \"ENT\")",
    		"action": "execute",
    		"action_parameters": {
    				"id": "<CUSTOM_RULESET_ID>"
    		},
    		"enabled": true
    	}'
  3. Если набор правил точки входа не существует (то есть если вы получили 404 Not Found код состояния на шаге 1), создайте его с помощью Создание набора правил аккаунта. Включите одно правило в массив rules (массив), который выполняет пользовательский набор правил для всех входящих запросов зон Enterprise вашего аккаунта.

    Необходимые разрешения API-токена

    Хотя бы одно из следующих разрешения токена обязательно:
    • Account WAF Write
    • Account Rulesets Write
    Создание набора правил аккаунта
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"description": "",
    		"kind": "root",
    		"name": "Account-level phase entry point",
    		"rules": [
    				{
    						"action": "execute",
    						"expression": "(cf.zone.plan eq \"ENT\")",
    						"action_parameters": {
    								"id": "<CUSTOM_RULESET_ID>"
    						}
    				}
    		],
    		"phase": "http_request_firewall_custom"
    	}'

Дальнейшие шаги

Используйте различные операции в Rulesets API для работы с созданным и развёрнутым вами пользовательским набором правил. В следующей таблице приведён список типовых задач при работе с пользовательскими наборами правил на уровне учётной записи:

Задача Порядок действий
Получить список пользовательских наборов правил

Используйте Список наборов правил учётной записи операцию и найдите наборы правил с "kind": "custom" и "phase": "http_request_firewall_custom". Ответ будет включать ID наборов правил.

Подробнее см. Список существующих наборов правил.

Список всех правил пользовательского набора правил

Используйте Получение набора правил аккаунта операцию с идентификатором пользовательского набора правил, чтобы получить список настроенных правил и их идентификаторы.

Подробнее см. Просмотр конкретного набора правил.

Обновление пользовательского правила

Используйте Обновление правила в наборе правил учётной записи операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила.

Подробнее см. Обновление правила в наборе правил.

Удаление пользовательского правила

Используйте Удаление правила из набора правил учётной записи операцию. Потребуется указать идентификатор пользовательского набора правил и идентификатор правила.

Подробнее см. Удаление правила из набора.

Дополнительные ресурсы

Инструкции по созданию пользовательского набора правил на уровне зоны через API см. в Пользовательские наборы правил (уровень зоны).

Подробнее о работе с пользовательскими наборами правил см. Работа с пользовательскими наборами правил в документации по Ruleset Engine.