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

Плагин IF

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

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

mainNGINXZeekAuditdSuricata0-e970c7f1-e42d8f22-cb1fbf23-f9bb9ce4-bb5fff36-2cbed4b7-20cfd16

  • ветка для обработки событий 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 не будет выполнено, то событие пропускается, и дальнейшие плагины в данной ветке выполняться не будут.