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

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

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

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

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

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

Процедура

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

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

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

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

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

Хотя бы одно из следующих права доступа токена требуется:
Создайте account ruleset
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), создайте его с помощью Создайте account ruleset операцию. Включите одно правило в rules массив, который выполняет пользовательский набор правил для всех входящих запросов зон Enterprise в вашем аккаунте.

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

    Хотя бы одно из следующих права доступа токена требуется:
    • Account WAF Write
    • Account Rulesets Write
    Создайте account ruleset
    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 пользовательского набора правил, чтобы получить список настроенных правил и их ID.

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

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

Используйте Обновление правила набора правил аккаунта операцию. Вам потребуется указать ID пользовательского набора правил и ID правила.

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

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

Используйте Удаление правила набора правил аккаунта операцию. Вам потребуется указать ID пользовательского набора правил и ID правила.

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

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

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

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

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

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