← Cloudflare Ruleset Engine / ruleset-engine / managed-rulesets
Развёртывание управляемого набора правил
Вы можете развернуть управляемый набор правил на уровне зоны или на уровне аккаунта. Чтобы развернуть управляемый набор правил в фазе, используйте Rulesets API.
Если вы используете Terraform, см. Настройка WAF Managed Rules с помощью Terraform, где это описано подробнее.
Если вы используете панель управления Cloudflare, обратитесь к следующим страницам:
- Развёртывание управляемого набора правил WAF в панели управления (зона)
- Развёртывание управляемого набора правил WAF в дашборде (аккаунт)
Развёртывание управляемого набора правил в фазу на уровне зоны
Чтобы развернуть управляемый набор правил в фазе на уровне зоны, выполните следующие действия.
- Получите ваш ID зоны.
- Вызовите Список наборов правил аккаунта операцию, чтобы получить доступные управляемые наборы правил. Управляемые наборы правил существуют на уровне аккаунта, но вы можете развернуть их в зоне. Найдите идентификатор набора правил того управляемого набора правил, который хотите развернуть.
- Определите фаза где вы хотите развернуть управляемый набор правил. Убедитесь, что управляемый набор правил относится к той же фазе, в которой вы хотите его развернуть.
- Добавление правила в фазу на уровне зоны ruleset точки входа которое выполняет управляемый набор правил. Подробности этого шага см. в следующем примере.
Пример
Следующий пример развёртывает Cloudflare Managed Ruleset к http_request_firewall_managed фаза заданной зоны ($ZONE_ID) путём создания правила, которое выполняет управляемый набор правил.
-
Вызовите Получить входной набор правил зоны операцию для получения определения входного набора правил для
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": [] } -
Если входной набор правил уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила набора правил зоны операцию для добавленияexecuteправило в существующий набор правил, разворачивающий Cloudflare Managed Ruleset (с IDefb7b8c949ac4650a09736fc376e9aee). По умолчанию правило добавляется в конец списка правил, уже присутствующих в наборе правил.Создание правила набора правил зоны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": [] } -
Если входной набор правил не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создание набора правил зоны операцию. Включите одно правило вrulesмассив, который выполняет Cloudflare Managed Ruleset (с IDefb7b8c949ac4650a09736fc376e9aee) для всех входящих запросов в зоне.Создание набора правил зоны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. Чтобы изменить поведение управляемых наборов правил, обратитесь к Переопределение управляемого набора правил.
Развёртывание управляемого набора правил на фазе на уровне аккаунта
Чтобы развернуть управляемый набор правил в фазе на уровне аккаунта, выполните следующие действия.
- Получите ваш ID аккаунта.
- Вызовите Список наборов правил аккаунта операцию, чтобы получить доступные управляемые наборы правил. Найдите идентификатор набора правил того управляемого набора правил, который хотите развернуть.
- Определите фаза где вы хотите развернуть управляемый набор правил. Убедитесь, что управляемый набор правил относится к той же фазе, в которой вы хотите его развернуть.
- Добавление правила в фазу на уровне аккаунта ruleset точки входа которое выполняет управляемый набор правил. Заключайте любые пользовательские условия в выражении правила в скобки и завершайте выражение
and cf.zone.plan eq "ENT"так, чтобы оно применялось только к зонам на плане Enterprise. Подробности этого шага см. в следующем примере.
Пример
Следующий пример развёртывает Cloudflare Managed Ruleset к http_request_firewall_managed фаза заданного аккаунта ($ACCOUNT_ID) путём создания правила, которое выполняет управляемый набор правил. Правила в управляемом наборе правил выполняются, когда имя зоны соответствует одному из example.com или anotherexample.com.
-
Вызовите Получить входной набор правил аккаунта операцию для получения определения входного набора правил для
http_request_firewall_managedфаза. Вам понадобится ID аккаунта для этой задачи.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount 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": [] } -
Если входной набор правил уже существует (то есть если вы получили
200 OKкод состояния и определение набора правил), запишите ID набора правил из ответа. Затем вызовите Создание правила набора правил аккаунта операцию для добавленияexecuteправило в существующий набор правил, разворачивающий Cloudflare Managed Ruleset (с IDefb7b8c949ac4650a09736fc376e9aee). По умолчанию правило добавляется в конец списка правил, уже присутствующих в наборе правил.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Account WAF WriteAccount 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": [] } -
Если входной набор правил не существует (то есть если вы получили
404 Not Foundкод состояния на шаге 1), создайте его с помощью Создайте account ruleset операцию. Включите одно правило вrulesмассив, который выполняет Cloudflare Managed Ruleset (с IDefb7b8c949ac4650a09736fc376e9aee) для всех входящих запросов, у которых имя зоны соответствует одному изexample.comилиanotherexample.com.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Account WAF WriteAccount Rulesets Write
Создайте account rulesetcurl "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. Чтобы узнать, как изменить поведение управляемых наборов правил, обратитесь к Переопределение управляемого набора правил.