Динамические списки
Динамический список --- это изменяемый набор данных, который можно пополнять и использовать для обработки и корреляции событий. Динамические списки представляют собой таблицы с одним ключевым столбцом и произвольным количеством столбцов-значений (ноль и более). Тип значения каждого столбца соответствует одному из типов полей события.
Примеры динамических списков
| Название | Ключ | Значения |
|---|---|---|
| Чёрный список IP-адресов | IP-адрес | --- |
| Таблица DNS-имён | IP-адрес | Строка (домен) |
| Таблица уязвимостей | Строка (идентификатор уязвимости) | Дробное число (CVSS v3), дробное число (CVSS v4) |
Пополнение списка
Через API
Для пополнения списка через API используется эндпоинт:
POST /api/v2/dynamiclists/{name}/records
Подробная спецификация доступна в Swagger-документации API.
Через директиву корреляции
В директиву корреляции добавлено поле list_enrichment_rule, которое определяет правило пополнения динамического списка при срабатывании корреляции.
Поле состоит из следующих параметров:
| Параметр | Тип | Описание |
|---|---|---|
enabled | Булево | Активировано ли правило. По умолчанию --- false |
list_name | Строка | Название пополняемого динамического списка |
key_expression | Строка | CEL-выражение для определения ключа добавляемой записи |
values_expressions | Строка | CEL-выражения для определения значений добавляемой записи |
Примеры выражений:
-
Чёрный список IP-адресов:
key_expression = "vars.banned_ip" -
Таблица DNS-имён:
key_expression = "vars.ip"
values_expressions = "vars.domain"
В CEL-выражениях доступны все переменные, заданные в шагах директивы, а также прочие переменные окружения, не связанные с событиями.
Использование списка
В корреляции
Для обращения к динамическим спискам в правилах корреляции используется переменная lists. Эта переменная имеет тип словаря:
- Ключ верхнего уровня --- название динамического списка.
- Значение --- словарь, где ключом является ключ записи, а значением --- объект записи со следующими полями:
key--- ключ записи;values_arr--- массив значений записи;values--- словарь с отображением названия поля схемы на значение записи.
Пример. Проверка, пришло ли событие с хоста, находящегося в чёрном списке:
ep["ECS.Source.IP"] in lists["blacklist"]
Данное выражение добавляется в блок Событие правила корреляции.
В плагинах
Динамические списки также доступны в плагинах обработки событий, например, в плагине обогащения enrich.