Триггер плейбука

Триггер плейбука – это фильтр, позволяющий выбрать алерты или инциденты, для которых необходимо запустить плейбук. Фильтр (триггер) применяется к каждому объекту (алерту или инциденту) индивидуально и принимает одно значение: true или false. Триггер состоит из выражений на языке jq, обрабатывающих структурированные данные в формате JSON. Для получения дополнительной информации о выражениях jq см. Руководство по jq.

В Open Single Management Platform используется gojq. Это реализация jq, написанная на языке go, которая имеет следующие отличия от jq:

Дополнительные сведения о различиях между gojq и jq см. на сайте GitHub.

Как написать триггер

Вы можете написать триггер в разделе Триггер при создании или изменении плейбука.

В зависимости от того, какой параметр вы выбрали в списке Область действия при создании или изменении плейбука, используется модель данных алерта или модель данных инцидента.

Названия параметров в триггере плейбука должны быть такими же, как в модели данных. Обратите внимание, что элементы выражений jq чувствительны к регистру.

Чтобы избежать перегрузки системы не рекомендуется указывать в триггере данные OriginalEvents, Observables, Extra и Alerts.

Когда вы начнете писать триггер, могут отобразится следующие предложения:

Подходящие значения фильтруются и отображаются в списке предложений, когда вы начинаете писать триггер. Для удобства некоторые предложения содержат строку поиска. Например, если вы хотите указать идентификатор типа инцидента или идентификатор статуса инцидента, вы можете выполнить поиск соответствующей записи по имени и этот идентификатор будет указан в триггере.

Обратите внимание, что стандартные статусы (Новый и Закрыт) имеют одинаковые идентификаторы в разных рабочих процессах. Это означает, что триггер будет запускаться для всех инцидентов с указанным идентификатором статуса. Чтобы ограничить количество инцидентов, для которых будет запущен плейбук, в триггере вам нужно указать идентификатор статуса инцидента и тип инцидента.

Язык jq также обеспечивает подсветку синтаксиса и проверку выражений jq. Если в триггере есть недопустимые выражения, вы не можете сохранить плейбук.

При написании триггера используются базовые синтаксические правила.

Чтобы обратиться к свойствам структуры, вам нужно использовать точку "." и указать атрибут, например:

Чтобы обратиться к дочерним свойствам, вы можете использовать вертикальную черту (|) или ту же комбинацию без вертикальной черты, например:

Чтобы получить значение, необходимо использовать следующие операторы: ==, >, <, >=, <=, !=, например:

Для перечисления значений в массиве объектов можно использовать метод any, например:

Если вы хотите повторно использовать вычисления, укажите переменную с помощью $. Например, выражение event.manual != true as $not_manual | [ .DetectionTechnologies[] | . == "IOC" ] | any and $not_manual определяет и использует переменную $not_manual, которая содержит флаг, показывающий, внесено ли изменение вручную или нет.

Для работы с датами вы можете использовать следующие функции:

Jq использует итераторы – интерфейс, который обеспечивает доступ к элементам набора, например к массиву, и позволяет вам перемещаться по ним. Итераторы всегда являются результатом расчета. Разница в количестве элементов, которые содержит итератор. В Open Single Management Platform итератор должен иметь только один элемент. Остальные случаи считаются ошибкой.

Чтобы написать правильный триггер, вам нужно заключить итератор в квадратные скобки ([...]). Например, триггер .DetectionTechnologies[] == "IOC" вызовет ошибку, так как возвращает итератор с двумя элементами. Правильный триггер должен иметь следующий вид: [ .DetectionTechnologies == "IOC" ] | any, где сначала вам нужно использовать [], чтобы обернуть результат сравнения в массив, а затем обработать его с помощью метода any, который возвращает значение true, если хотя бы один элемент массива true. Иначе возвращается false.

Когда запускается триггер

Поиск подходящего плейбука начинается при возникновении одного из следующих триггерных событий:

Поддерживаются следующие типы событий изменения алертов:

Поддерживаются следующие типы событий изменения инцидента:

Структура алерта/инцидента не содержит данных об изменении алерта/инцидента. Эти данные передаются в дополнительной информации. Если в триггере плейбука вы хотите сослаться на изменения, используйте функцию события без аргументов.

По умолчанию изменения, внесенные вручную в детали алерта или инцидента, игнорируются. Если вы хотите, чтобы плейбук запускался для изменений выполненных вручную, вы должны использовать функцию event.manual в триггере, например:

При необходимости вы можете протестировать примеры jq-выражений, применить фильтры и просмотреть результаты на сервисе Jq playground.

В начало