Перейти к основному содержимому
Версия: 4.5.X

Плагин IF

Плагин позволяет выстраивать ветвление в процессе обработки событий в коллекторе. Если результат применения регулярного выражения RE2, либо Common Expression Language(CEL) к событию вернул true - событие будет обрабатываться всеми последующими элементами ветки плагина. Если все выражения вернули false - обработка данного события в текущей ветке будет остановлена.

Позволяет создавать ветки вычислений над событием. Под веткой понимается один элемент плагина коллектора в формате Processors YAML. Можно создавать несколько элементов плагина (веток), и обрабатывать одно событие разными плагинами, примерно как на схеме:

mainNGINXZeekAuditdSuricata0-81dee9b1-4647f8d2-550f8e43-500b0764-3f01c096-0bb61a07-d5c6d32

  • ветка для обработки событий Suricata
  • ветка для обработки логов NGINX
  • ветка для обработки логов Zeek
  • ветка для обработки событий Auditd

На входе в каждую ветку верхним элементом yaml файла processors можно поставить плагин if, который будет проверять сигнатуру события и разрешать обработку в данной ветке лишь событий данного формата.

Таким образом можно направлять в один коллектор события с различных источников и обрабатывать их параллельно без конфликтов имён и значения.

Правила использования регулярных выражений:

regex:
- name: "name_1"
value: "regex_rule_1"
- name: "name_2"
value: "regex_rule_2"

regex - массив правил, где name - имя поля события, value - регулярное выражение.

Правила использования CEL:

cel:
- event.vars("ECS.Client.IP") == 10.0.10.11

cel - массив правил

event - map структура в которой хранятся все поля текущего события

Для того, чтобы обратиться к полю события, достаточно написать: event.someField.

Если название поля использует помимо букв ещё и другие символы, то к полю стоит обращаться так: event[\"Some.Field\"].

Если ни одно из правил regex или CEL не будет выполнено, то событие пропускается, и дальнейшие плагины в данной ветке выполняться не будут.