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

Развёртывание управляемого набора правил WAF через API (аккаунт)

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

WAF Managed Rules страница содержит ID разных управляемых наборов правил WAF. Эта информация понадобится вам при развёртывании наборов правил через API.

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

Пример

Следующий пример развёртывает Cloudflare Managed Ruleset к http_request_firewall_managed фаза заданного аккаунта ($ACCOUNT_ID) путём создания правила, которое выполняет управляемый набор правил. Правила в управляемом наборе правил выполняются, когда имя зоны соответствует одному из example.com или anotherexample.com.

  1. Вызовите Получить входной набор правил аккаунта операцию для получения определения входного набора правил для http_request_firewall_managed фаза. Вам понадобится 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_managed/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_managed",
    		"rules": [
    			// ...
    		],
    		"source": "firewall_managed",
    		"version": "10"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  2. Если входной набор правил уже существует (то есть если вы получили 200 OK код состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила набора правил аккаунта операцию для добавления execute правило в существующий набор правил, разворачивающий Cloudflare Managed Ruleset (с ID efb7b8c949ac4650a09736fc376e9aee). По умолчанию правило добавляется в конец списка правил, уже присутствующих в наборе правил.

    Необходимые разрешения 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 '{
    		"action": "execute",
    		"action_parameters": {
    				"id": "efb7b8c949ac4650a09736fc376e9aee"
    		},
    		"expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"",
    		"description": "Execute the Cloudflare Managed Ruleset"
    	}'
    {
    	"result": {
    		"id": "<RULESET_ID>",
    		"name": "Account-level phase entry point",
    		"description": "",
    		"kind": "root",
    		"version": "11",
    		"rules": [
    			// ... any existing rules
    			{
    				"id": "<RULE_ID>",
    				"version": "1",
    				"action": "execute",
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee",
    					"version": "latest"
    				},
    				"expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"",
    				"description": "Execute the Cloudflare Managed Ruleset",
    				"last_updated": "2024-03-18T18:30:08.122758Z",
    				"ref": "<RULE_REF>",
    				"enabled": true
    			}
    		],
    		"last_updated": "2024-03-18T18:30:08.122758Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  3. Если входной набор правил не существует (то есть если вы получили 404 Not Found код состояния на шаге 1), создайте его с помощью Создайте account ruleset операцию. Включите одно правило в rules массив, который выполняет Cloudflare Managed Ruleset (с ID efb7b8c949ac4650a09736fc376e9aee) для всех входящих запросов, у которых имя зоны соответствует одному из example.com или anotherexample.com.

    Необходимые разрешения 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 '{
    		"name": "My ruleset",
    		"description": "Entry point ruleset for WAF managed rulesets",
    		"kind": "root",
    		"phase": "http_request_firewall_managed",
    		"rules": [
    				{
    						"action": "execute",
    						"action_parameters": {
    								"id": "efb7b8c949ac4650a09736fc376e9aee"
    						},
    						"expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"",
    						"description": "Execute the Cloudflare Managed Ruleset"
    				}
    		]
    	}'

Следующие шаги

Чтобы настроить поведение правил, входящих в управляемый набор правил, создайте переопределение.

Чтобы пропустить выполнение управляемых наборов правил WAF или части их правил, создание исключения (также называется правилом пропуска).

Исключения имеют приоритет над переопределениями.

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

Инструкции по развёртыванию управляемого набора правил на уровне зоны через API см. в Развёртывание управляемого набора правил WAF через API (зона).

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

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

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