Плагин IF
Плагин позволяет выстраивать ветвление в процессе обработки событий в коллекторе. Если результат применения регулярного выражения RE2, либо Common Expression Language(CEL) к событию вернул true - событие будет обрабатываться всеми последующими элементами ветки плагина. Если все выражения вернули false - обработка данного события в текущей ветке будет остановлена.
Позволяет создавать ветки вычислений над событием. Под веткой понимается один элемент плагина коллектора в формате Processors YAML. Можно создавать несколько элементов плагина (веток), и обрабатывать одно событие разными плагинами, примерно как на схеме:
- ветка для обработки событий 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 не будет выполнено, то событие пропускается, и дальнейшие плагины в данной ветке выполняться не будут.