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

Выражения политик 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)
Документация Язык правил Политики трафика