Содержание
Переменные в корреляторах
Если для покрытия каких-то сценариев обеспечения безопасности недостаточно отслеживания значений в полях событий, активных листах или словарях, вы можете воспользоваться глобальными и локальными переменными. С их помощью можно выполнять различные действия над поступающими в корреляторы значениями, реализуя сложную логику выявления угроз. Переменные можно объявить в корреляторе (глобальные переменные) или в правиле корреляции (локальные переменные), присвоив им какую-либо функцию, а затем обращаться к ним из правил корреляции, как к обычным полям событий, получая в ответ результат срабатывания функции.
Область применения переменных:
- При поиске группирующих или уникальных значений полей в правилах корреляции.
- В селекторах правил корреляции в фильтрах условий, при которых должно срабатывать правило корреляции.
- При обогащении корреляционных событий. В качестве типа источника следует выбирать Событие.
- При наполнении активных листов значениями.
К переменным можно обращаться так же, как к полям события, предваряя их название символом $.
Свойства переменных
Локальные и глобальные переменные
Свойства глобальных и локальных переменных различаются.
Глобальные переменные:
- Глобальные переменные объявляются на уровне коррелятора и действуют только в пределах этого коррелятора.
- К глобальным переменным коррелятора можно обращаться из всех правил корреляции, которые в нем указаны.
- В правилах корреляции типа standard одна и та же глобальная переменная в каждом селекторе может принимать разные значения.
- Невозможно переносить глобальные переменные между разными корреляторами.
Локальные переменные:
- Локальные переменные объявляются на уровне правила корреляции и действуют только в пределах этого правила.
- В правилах корреляции типа standard областью действия локальной переменной является только тот селектор, в котором переменная была объявлена.
- Локальные переменные можно объявлять в любых типах правил корреляции.
- Невозможно переносить локальные переменные между правилами или селекторами.
- Локальная переменная не может быть использована в качестве глобальной переменной.
Переменные в разных типах правил корреляции
- В правилах корреляции типа operational в закладке Действия можно указывать все доступные или объявленные в этом правиле переменные.
- В правилах корреляции типа standard в закладке Действия можно указывать только переменные, указанные в этих правилах на закладке Общие в поле Группирующие поля.
- В правилах корреляции типа simple в закладке Действия можно указывать только переменные, указанные в этих правилах на закладке Общие в поле Наследуемые поля.
Требования к переменным
Добавляя функцию переменной необходимо сначала указать название функции, а затем в круглых скобках перечислить ее параметры. Исключением являются простейшие математические операции (сложение, вычитание, умножение, деление), при их использовании скобками обозначается приоритет выполнения операций.
Требования к названиям функций:
- Должно быть уникально в рамках коррелятора.
- Должно содержать от 1 до 128 символов Юникода.
- Не может начинаться с символа $.
- Должно быть написано в camelCase или CamelCase.
Особенности указания функций переменных:
- Последовательность указания параметров имеет значение.
- Параметры передаются через запятую:
,
. - Строковые параметры передаются в одинарных кавычках:
'
. - Наименования полей событий и переменные указываются без кавычек.
- При обращении к переменной как параметру перед ее названием необходимо добавлять символ
$
. - Ставить пробел между параметрами необязательно.
- Во всех функциях, где в качестве параметров допускается использование переменной, допускается создавать вложенные функции.
Функции переменных
Операции с активными листами и словарями
Функция "active_list"
Получение информации из активного листа о значении в указанном столбце.
Необходимо указать параметры в следующей последовательности:
- название активного листа;
- название столбца активного листа;
- ключ записи активного листа.
В качестве ключа записи активного листа используется название одного или нескольких полей события.
Пример использования
Результат выполнения
active_list('exampleActiveList', 'score', SourceAddress,SourceUserName)
Получение данных из активного листа
exampleActiveList
из записиSourceAddress,SourceUserName
из столбцаscore
.
Функция "table_dict"
Получение информации о значении в указанном столбце словаря типа таблица.
Необходимо указать параметры в следующей последовательности:
- название словаря;
- название столбца словаря;
- ключ строки словаря.
Пример использования
Результат выполнения
table_dict('exampleTableDict', 'office', SourceUserName)
Получение данных из словаря
exampleTableDict
из строки с ключомSourceUserName
из столбцаoffice
.
Функция "dict"
Получение информации о значении в указанном столбце словаря типа словарь.
Необходимо указать параметры в следующей последовательности:
- название словаря;
- ключ строки словаря.
Пример использования
Результат выполнения
dict('exampleDictionary', SourceAddress)
Получение данных из словаря
exampleDictionary
из строки с ключомSourceAddress
.
Операции со строками
Функция "len"
Возвращает число символов в строке.
Строку можно передать строкой, названием поля или переменной.
Примеры использования |
|
|
|
Функция "to_lower"
Перевод символов в строке в нижний регистр.
Строку можно передать строкой, названием поля или переменной.
Примеры использования |
|
|
|
Функция "to_upper"
Перевод символов в строке в верхний регистр. Строку можно передать строкой, названием поля или переменной.
Примеры использования |
|
|
|
Функция "append"
Добавление символов в конец строки.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- добавляемая строка.
Строки можно передать строкой, названием поля или переменной.
Примеры использования |
Результат использования |
|
Строка из поля |
|
Строка из переменной |
|
Строка из поля |
Функция "prepend"
Добавление символов в начало строки.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- добавляемая строка.
Строки можно передать строкой, названием поля или переменной.
Примеры использования |
Результат использования |
|
Строка из поля |
|
Строка из переменной |
|
Строка из поля |
Функция "substring"
Возвращает подстроку из строки.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- позиция начала подстроки (натуральное число или 0);
- (необязательно) позиция конца подстроки.
Строки можно передать строкой, названием поля или переменной. Если номер позиции больше, чем длина строки исходных данных, возвращается пустая строка.
Примеры использования |
Результат использования |
|
Возвращает часть строки из поля |
|
Возвращает часть строки из переменной |
|
Возвращает всю строку из поля |
Функция "tr"
Убирает из начала и конца строки указанные символы.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- (необязательно) строка, которую следует удалить из начала и конца исходной строки.
Строки можно передать строкой, названием поля или переменной. Если строку на удаление не указать, в начале и в конце исходной строки будут удалены пробелы.
Примеры использования |
Результат использования |
|
В начале и в конце строки из поля |
|
Если переменной |
|
Если в поле события |
Функция "replace"
Замена в строке всех вхождений последовательности символов А на последовательность символов B.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- строка поиска: последовательность символов, подлежащая замене;
- строка замены: последовательность символов, на которую необходимо заменить строку поиска.
Строки можно передать строкой, названием поля или переменной.
Примеры использования |
Результат использования |
|
Возвращается строка из поля события |
|
Возвращается строка из переменной |
Функция "regexp_replace"
Замена в строке последовательности символов, удовлетворяющих регулярному выражению, на последовательность символов и группы захвата регулярного выражения.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- строка поиска: регулярное выражение;
- строка замены: последовательность символов, на которую необходимо заменить строку поиска, и идентификаторы групп захвата регулярного выражения.
Строки можно передать строкой, названием поля или переменной. Допускается использовать неименованные группы захвата.
Примеры использования |
Результат использования |
|
Возвращается строка из поля события |
Функция "regexp_capture"
Получение из исходной строки результата, удовлетворяющего условию регулярного выражения.
Необходимо указать параметры в следующей последовательности:
- исходная строка;
- строка поиска: регулярное выражение.
Строки можно передать строкой, названием поля или переменной. Допускается использовать неименованные группы захвата.
Примеры использования |
Примеры значений |
Результат использования |
|
|
|
Операции с метками времени
Функция now
Получение временной метки в формате epoch. Запускается без аргументов.
Примеры использования |
|
Функция "extract_from_timestamp"
Получение атомарных представлений времени (в виде год, месяц, день, час, минута, секунда, день недели) из полей и переменных с временем в формате epoch.
Параметры необходимо указать в следующей последовательности:
- Поле события, имеющего тип timestamp, или переменная.
- Обозначение атомарного представления времени. Параметр регистрозависимый.
Возможные варианты обозначения атомарного времени:
- y – год в виде числа.
- M – месяц, числовое обозначение.
- d – число месяца.
- wd – день недели: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.
- h – часы в 24-часовом формате.
- m – минуты.
- s – секунды.
- (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.
Примеры использования
extract_from_timestamp(Timestamp, 'wd')
extract_from_timestamp(Timestamp, 'h')
extract_from_timestamp($otherVariable, 'h')
extract_from_timestamp(Timestamp, 'h', 'Europe/Moscow')
Функция "parse_timestamp"
Представление времени из формата RFC3339 (например, "2022-05-24 00:00:00", "2022-05-24 00:00:00+0300) в формат epoch.
Примеры использования |
|
|
Функция "format_timestamp"
Представление времени из формата epoch в формат RFC3339.
Параметры необходимо указать в следующей последовательности:
- Поле события, имеющего тип timestamp, или переменная.
- Обозначение формата времени: RFC3339.
- (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.
Примеры использования
format_timestamp(Timestamp, 'RFC3339')
format_timestamp($otherVariable, 'RFC3339')
format_timestamp(Timestamp, 'RFC3339', 'Europe/Moscow')
Функция "truncate_timestamp"
Округление времени в формате epoch. После округления время возвращается в формате epoch. Время округляется в меньшую сторону.
Параметры необходимо указать в следующей последовательности:
- Поле события, имеющего тип timestamp, или переменная.
- Параметр округления:
- 1s – округление до секунд;
- 1m – округление до минут;
- 1h – округление до часов;
- 24h – округление до суток.
- (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.
Примеры использования
Примеры округляемых значений
Результат использования
truncate_timestamp(Timestamp, '1m')
1654631774175 (7 June 2022 г., 19:56:14.175)
1654631760000 (7 June 2022 г., 19:56:00)
truncate_timestamp($otherVariable, '1h')
1654631774175 (7 June 2022 г., 19:56:14.175)
1654628400000 (7 June 2022 г., 19:00:00)
truncate_timestamp(Timestamp, '24h', 'Europe/Moscow')
1654631774175 (7 June 2022 г., 19:56:14.175)
1654560000000 (7 June 2022 г., 0:00:00)
Функция "time_diff"
Получение интервала времени между двумя метками времени в формате epoch.
Параметры необходимо указать в следующей последовательности:
- Время конца отрезка. Поле события, имеющего тип timestamp, или переменная.
- Время начала отрезка. Поле события, имеющего тип timestamp, или переменная.
- Представление временного интервала:
- ms – в миллисекундах;
- s – в секундах;
- m – в минутах;
- h – в часах;
- d – в днях.
Примеры использования
time_diff(EndTime, StartTime, 's')
time_diff($otherVariable, Timestamp, 'h')
time_diff(Timestamp, DeviceReceiptTime, 'd')
Математические операции
Представлены как простейшими математическими операциями, так и функциями.
Простейшие математические операции
Операции:
- сложение;
- вычитание;
- умножение;
- деление;
- деление по модулю.
Использование круглых скобок определяет последовательность действий
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- вещественные числа.
При делении по модулю в качестве аргументов можно использовать только натуральные числа.
Ограничения использования:
- деление на ноль возвращает ноль;
- математические операции между числами и строками возвращают ноль;
- целые числа, полученные в результате операций, возвращаются без точки.
Примеры использования
(Type=3; otherVariable=2; Message=text)
Результат использования
Type + 1
4
$otherVariable - Type
-1
2 * 2.5
5
2 / 0
0
Type * Message
0
(Type + 2) * 2
10
Type % $otherVariable
1
Функция "round"
Округление чисел.
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- числовые константы.
Примеры использования
(DeviceCustomFloatingPoint1=7.75; DeviceCustomFloatingPoint2=7.5 otherVariable=7.2)
Результат использования
round(DeviceCustomFloatingPoint1)
8
round(DeviceCustomFloatingPoint2)
8
round($otherVariable)
7
Функция "ceil"
Округление чисел в большую сторону.
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- числовые константы.
Примеры использования
(DeviceCustomFloatingPoint1=7.15; otherVariable=8.2)
Результат использования
ceil(DeviceCustomFloatingPoint1)
8
ceil($otherVariable)
9
Функция "floor"
Округление чисел в меньшую сторону.
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- числовые константы.
Примеры использования
(DeviceCustomFloatingPoint1=7.15; otherVariable=8.2)
Результат использования
floor(DeviceCustomFloatingPoint1)
7
floor($otherVariable)
8
Функция "abs"
Получение числа по модулю.
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- числовые константы.
Примеры использования
(DeviceCustomNumber1=-7; otherVariable=-2)
Результат использования
abs(DeviceCustomFloatingPoint1)
7
abs($otherVariable)
2
Функция "pow"
Возведение числа в степень.
Параметры необходимо указать в следующей последовательности:
- База. Вещественные числа.
- Степень. Натуральные числа.
Доступные аргументы:
- числовые поля события;
- числовые переменные;
- числовые константы.
Примеры использования
pow(DeviceCustomNumber1, DeviceCustomNumber2)
pow($otherVariable, DeviceCustomNumber1)
Объявление переменных
Для объявления переменных их необходимо добавить в коррелятор или правило корреляции.
Чтобы добавить глобальную переменную в существующий коррелятор:
- В веб-интерфейсе KUMA в разделе Ресурсы → Корреляторы выберите набор ресурсов нужного коррелятора.
Откроется мастер установки коррелятора.
- Выберите шаг мастера установки Глобальные переменные.
- Нажмите на кнопку Добавить переменную и укажите следующие параметры:
- В окне Переменная введите название переменной.
- В окне Значение введите функцию переменной.
Переменных можно добавить несколько. Добавленные переменные можно изменить или удалить с помощью значка
.
- Выберите шаг мастера установки Проверка параметров и нажмите Сохранить.
Глобальная переменная добавлена в коррелятор. К ней можно обращаться, как к полю события, указывая перед названием переменной символ $. Переменная будет использоваться при корреляции после перезапуска сервиса коррелятора.
Чтобы добавить локальную переменную в существующее правило корреляции:
- В веб-интерфейсе KUMA в разделе Ресурсы → Правила корреляции выберите ресурс нужного правила корреляции.
Откроется окно параметров правила корреляции. Параметры правила корреляции можно также открыть из коррелятора, в которое оно было добавлено, перейдя на шаг мастера установки Корреляция.
- Откройте закладку Селекторы.
- В селекторе откройте закладку Локальные переменные, нажмите на кнопку Добавить переменную и укажите следующие параметры:
- В окне Переменная введите название переменной.
- В окне Значение введите функцию переменной.
Переменных можно добавить несколько. Добавленные переменные можно изменить или удалить с помощью значка
.
Для правил корреляции типа standard повторите этот шаг для каждого селектора, в которым вы хотите объявить переменные.
- Нажмите Сохранить.
Локальная переменная добавлена в правило корреляции. К ней можно обращаться, как к полю события, указывая перед названием переменной символ $. Переменная будет использоваться при корреляции после перезапуска сервиса коррелятора.
Добавленные переменные можно изменить или удалить. Если правило корреляции обращается к необъявленной переменной (например, если ее название было изменено), в качестве результата возвращается пустая строка.
Если вы измените название переменной, вам потребуется вручную изменить название этой переменной во всех правилах корреляции, где вы ее использовали.
В начало