Выражения CEL в корреляции
В версии 4.6 выражения CEL (Common Expression Language) в корреляции поддерживают несколько типов окружения с различными наборами переменных и функций. Это обеспечивает совместимость с выражениями из предыдущих версий (4.3/4.5) и добавляет новый унифицированный формат.
Типы выражений CEL
Тип выражения CEL определяется параметром correlation.cel-expression-type в конфигурации komrad-server. Доступны три значения:
| Тип | Описание |
|---|---|
extracted_params | Выражения предыдущего формата, совместимые с версией 4.5 |
event | Выражения нового формата с улучшенной поддержкой типов полей событий |
extracted_params_event_hybrid | Гибридный вариант, поддерживающий оба формата |
Различные типы выражений необходимы, поскольку в формате extracted_params переменная event уже используется как псевдоним для ep, что создаёт коллизию с новым форматом.
Тип extracted_params
Тип extracted_params обеспечивает обратную совместимость с выражениями из версии 4.5.
Переменные
| Переменная | Тип | Описание |
|---|---|---|
ep | Словарь | Поля событий с приведением значений к string, bool или float64 |
event | Словарь | Псевдоним для ep |
edk | Строка | Ключ события |
asset_ips | Массив | Список IP-адресов активов |
Особенности типов базовых полей
Для некоторых базовых полей события типы отличаются от стандартного приведения:
| Поле | Тип |
|---|---|
CTime | timestamp |
GenerationTime | timestamp (при наличии) |
WTime | timestamp (при наличии) |
PluginIDs | Строка, значения разделены запятой |
AssetIPs | Строка, значения разделены запятой |
Пример выражения
ep['ECS.Event.Code'] > 4650 && ep['ECS.Event.Code'] < 4700
Тип event
Тип event предоставляет новый формат выражений с улучшенной поддержкой типов полей и унифицированный с выражениями в плагине deny.
Переменные event
| Переменная | Тип | Описание |
|---|---|---|
event | Объект события | Предоставляет доступ ко всем базовым полям по имени |
Методы объекта event
| Метод | Параметр | Описание |
|---|---|---|
vars | Строка (название поля) | Получить значение поля (базового или пользовательского) |
as_string | Строка (название поля) | Получить значение поля в виде строки |
Пример выражения event
event.vars('ECS.Event.Code') > 4650 && event.vars('ECS.Event.Code') < 4700
Тип extracted_params_event_hybrid
Гибридный тип объединяет переменные обоих форматов, позволяя использовать как старый, так и новый синтаксис в одном выражении.
Переменные hybrid
| Переменная | Тип | Описание |
|---|---|---|
ep | Словарь | Словарь полей событий (как в extracted_params) |
event | Объект события | Объект события (как в event) |
edk | Строка | Ключ события |
asset_ips | Массив | Список IP-адресов активов |
Пример выражения hybrid
ep['ECS.Event.Code'] > 4650 && event.vars('ECS.Event.Category') == "authentication"
Выбор типа выражения
При выборе типа выражения CEL рекомендуется учитывать следующее:
extracted_params-- используйте для сохранения совместимости с существующими директивами из версий 4.3/4.5event-- используйте для новых директив, когда важна корректная работа с типами полейextracted_params_event_hybrid-- используйте в переходный период, когда в системе одновременно используются директивы старого и нового формата
В данном разделе описаны только переменные и функции, зависящие от типа выражения CEL. Прочие объекты окружения (например, переменные для работы с динамическими списками) доступны во всех типах выражений.