← Cloudflare One / cloudflare-one / traffic-policies
Выражения политик Gateway
Политики Gateway используют язык выражений на основе wirefilter для сопоставления трафика с селекторами (критериями). Этот синтаксис похож на язык выражений, но отличается от Язык правил используется WAF, Rules и другими продуктами Cloudflare. См. Gateway против Ruleset Engine для сведений о различиях.
Синтаксис выражений
Выражения Gateway строятся по следующему шаблону:
<field> <operator> <value>Например:
dns.fqdn == "example.com"
http.request.host == "api.example.com"
identity.email == "[email protected]"Операторы
Gateway поддерживает следующие операторы:
| Оператор | Название | Пример |
|---|---|---|
== |
Equals | dns.fqdn == "example.com" |
!= |
Не равно | http.request.host != "blocked.com" |
in |
Значение находится в наборе | net.dst.port in {80 443} |
matches |
Соответствует регулярному выражению | http.request.host matches ".*\\.example\\.com" |
> |
Больше | http.upload.file.size > 10 |
>= |
Больше или равно | http.download.file.size >= 100 |
< |
Меньше | http.upload.file.size < 50 |
<= |
Меньше или равно | http.download.file.size <= 200 |
Логические операторы
Комбинируйте несколько условий с помощью логических операторов:
| Оператор | Название | Пример |
|---|---|---|
and |
Логическое И | dns.fqdn == "example.com" and identity.email == "[email protected]" |
or |
Логическое ИЛИ | net.dst.port == 80 or net.dst.port == 443 |
not |
Логическое НЕ | not(identity.email == "[email protected]") |
Обработка массивов
Некоторые поля Gateway возвращают массивы (несколько значений). Используйте any() функцию, чтобы найти совпадение, если хотя бы один элемент массива соответствует условию:
any(http.request.uri.content_category[*] in {17 85 102})any(identity.groups[*].name in {"Engineering" "Security"})any(http.request.domains[*] == "example.com") [*] нотация означает, что функция должна обработать все элементы массива.
Обработка списков
Вы можете ссылаться на lists в своих выражениях, используя UUID списка:
http.request.host in $<LIST_UUID>any(http.request.domains[*] in $<LIST_UUID>)Чтобы найти UUID списка, перейдите в My Team > Lists в Zero Trust и выберите список. UUID отображается в URL-адресе браузера.
Распространённые шаблоны полей
У каждого типа политик Gateway есть свой набор доступных полей. В следующей таблице показаны префиксы полей, используемые для каждого типа политик:
| Тип политики | Префикс поля | Примеры полей |
|---|---|---|
| DNS | dns. |
dns.fqdn, dns.content_category, dns.src_ip |
| HTTP | http. |
http.request.host, http.request.uri, http.request.domains |
| Сеть | net. |
net.dst.ip, net.dst.port, net.src.ip |
| Идентификация | identity. |
identity.email, identity.groups, identity.name |
| Состояние устройства | device_posture. |
device_posture.checks.passed |
Полный список доступных полей для каждого типа политики см. в документации по селекторам, ссылка на которую указана в начале этой страницы.
Примеры выражений
Заблокировать домен в политике DNS
dns.fqdn == "example.com"Заблокировать несколько категорий контента в HTTP-политике
any(http.request.uri.content_category[*] in {17 85 102})Разрешить трафик от определённой группы пользователей
any(identity.groups[*].name in {"Engineering"})Заблокировать трафик к диапазону IP-адресов назначения в сетевой политике
net.dst.ip in {10.0.0.0/8}Комбинирование условий идентификации и трафика
http.request.host == "internal.example.com" and identity.email matches ".*@company.com"Gateway против Ruleset Engine
В следующей таблице перечислены основные различия между языком Rules language](/ruleset-engine/rules-language/) (поддерживается Ruleset Engine) и выражениями политик Gateway:
| Ruleset Engine | Gateway | |
|---|---|---|
| Продукты | WAF, Transform Rules, Cache Rules, Configuration Rules | Политики DNS, HTTP, Network, Egress, Resolver |
| Примеры полей | http.request.uri.path, cf.bot_management.score, ip.src |
dns.fqdn, http.request.host, identity.email |
| Поля идентификации | Недоступно | Доступно (например, identity.email, identity.groups) |
| Поля DNS | Недоступно | Доступно (например, dns.fqdn, dns.content_category) |
| Документация | Язык правил | Политики трафика |