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

Развёртывание управляемого набора правил

Вы можете развернуть управляемый набор правил на уровне зоны или на уровне аккаунта. Чтобы развернуть управляемый набор правил в фазе, используйте Rulesets API.

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

Если вы используете панель управления Cloudflare, обратитесь к следующим страницам:

Развёртывание управляемого набора правил в фазу на уровне зоны

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

  1. Получите ваш ID зоны.
  2. Вызовите Список наборов правил аккаунта операцию, чтобы получить доступные управляемые наборы правил. Управляемые наборы правил существуют на уровне аккаунта, но вы можете развернуть их в зоне. Найдите идентификатор набора правил того управляемого набора правил, который хотите развернуть.
  3. Определите фаза где вы хотите развернуть управляемый набор правил. Убедитесь, что управляемый набор правил относится к той же фазе, в которой вы хотите его развернуть.
  4. Добавление правила в фазу на уровне зоны ruleset точки входа которое выполняет управляемый набор правил. Подробности этого шага см. в следующем примере.

Пример

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

  1. Вызовите Получить входной набор правил зоны операцию для получения определения входного набора правил для http_request_firewall_managed фаза. Вам понадобится ID зоны для этой задачи.

    Получить входной набор правил зоны
    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": {
    		"description": "Zone-level phase entry point",
    		"id": "<RULESET_ID>",
    		"kind": "zone",
    		"last_updated": "2024-03-16T15:40:08.202335Z",
    		"name": "zone",
    		"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). По умолчанию правило добавляется в конец списка правил, уже присутствующих в наборе правил.

    Создание правила набора правил зоны
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"action": "execute",
    		"action_parameters": {
    				"id": "efb7b8c949ac4650a09736fc376e9aee"
    		},
    		"expression": "true",
    		"description": "Execute the Cloudflare Managed Ruleset"
    	}'
    {
    	"result": {
    		"id": "<RULESET_ID>",
    		"name": "Zone-level phase entry point",
    		"description": "",
    		"kind": "zone",
    		"version": "11",
    		"rules": [
    			// ... any existing rules
    			{
    				"id": "<RULE_ID>",
    				"version": "1",
    				"action": "execute",
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee",
    					"version": "latest"
    				},
    				"expression": "true",
    				"description": "Execute the Cloudflare Managed Ruleset",
    				"last_updated": "2024-03-18T18:08:14.003361Z",
    				"ref": "<RULE_REF>",
    				"enabled": true
    			}
    		],
    		"last_updated": "2024-03-18T18:08:14.003361Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  3. Если входной набор правил не существует (то есть если вы получили 404 Not Found код состояния на шаге 1), создайте его с помощью Создание набора правил зоны операцию. Включите одно правило в rules массив, который выполняет Cloudflare Managed Ruleset (с ID efb7b8c949ac4650a09736fc376e9aee) для всех входящих запросов в зоне.

    Создание набора правил зоны
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "My ruleset",
    		"description": "Entry point ruleset for WAF managed rulesets",
    		"kind": "zone",
    		"phase": "http_request_firewall_managed",
    		"rules": [
    				{
    						"action": "execute",
    						"action_parameters": {
    								"id": "efb7b8c949ac4650a09736fc376e9aee"
    						},
    						"expression": "true",
    						"description": "Execute the Cloudflare Managed Ruleset"
    				}
    		]
    	}'

В этом примере управляемый набор правил выполняет поведение, настроенное Cloudflare. Чтобы изменить поведение управляемых наборов правил, обратитесь к Переопределение управляемого набора правил.

Развёртывание управляемого набора правил на фазе на уровне аккаунта

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

  1. Получите ваш ID аккаунта.
  2. Вызовите Список наборов правил аккаунта операцию, чтобы получить доступные управляемые наборы правил. Найдите идентификатор набора правил того управляемого набора правил, который хотите развернуть.
  3. Определите фаза где вы хотите развернуть управляемый набор правил. Убедитесь, что управляемый набор правил относится к той же фазе, в которой вы хотите его развернуть.
  4. Добавление правила в фазу на уровне аккаунта ruleset точки входа которое выполняет управляемый набор правил. Заключайте любые пользовательские условия в выражении правила в скобки и завершайте выражение and cf.zone.plan eq "ENT" так, чтобы оно применялось только к зонам на плане Enterprise. Подробности этого шага см. в следующем примере.

Пример

Следующий пример развёртывает 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"
    				}
    		]
    	}'

В этом примере управляемый набор правил выполняет поведение, настроенное Cloudflare. Чтобы узнать, как изменить поведение управляемых наборов правил, обратитесь к Переопределение управляемого набора правил.