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

Динамические списки

Динамический список --- это изменяемый набор данных, который можно пополнять и использовать для обработки и корреляции событий. Динамические списки представляют собой таблицы с одним ключевым столбцом и произвольным количеством столбцов-значений (ноль и более). Тип значения каждого столбца соответствует одному из типов полей события.

Примеры динамических списков

НазваниеКлючЗначения
Чёрный список 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.