Шаблоны уведомлений

Шаблоны уведомлений используются в уведомлениях о создании алертов.

Параметры шаблонов уведомлений

Параметр

Описание

Название

Обязательный параметр.

Уникальное имя ресурса. Должно содержать от 1 до 128 символов в кодировке Unicode.

Тенант

Обязательный параметр.

Название тенанта, которому принадлежит ресурс.

Тема

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

Пример: Новый алерт в KUMA: {{.CorrelationRuleName}}. Вместо {{.CorrelationRuleName}} в теме письма с уведомлением будет подставлено название правила корреляции, содержащееся в поле алерта CorrelationRuleName.

Шаблон

Обязательный параметр.

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

Для удобства можно открыть текст письма в отдельном окне, нажав на значок full-screen. При этом открывается окно Шаблон, в котором можно править текст письма с уведомлением. Сохранить изменения и закрыть окно можно с помощью кнопки Сохранить.

Предустановленные шаблоны уведомлений

В поставку KUMA включены перечисленные в таблице ниже шаблоны уведомлений.

Предустановленные шаблоны уведомлений

Название шаблона

Описание

[OOTB] New alert in KUMA

Базовый шаблон уведомлений.

Функции в шаблонах уведомлений

В шаблонах доступны функции, перечисленные в таблице ниже.

Функции в шаблонах

Параметр

Описание

date

Принимает первым параметром время в миллисекундах (unix time), вторым параметром можно передать формат времени по стандартам RFC. Часовой пояс изменить нельзя.

Пример вызова: {{ date .FirstSeen "02 Jan 06 15:04" }}

Результат вызова: 18 Nov 2022 13:46

Примеры форматов дат, поддерживаемые функцией:

  • "02 Jan 06 15:04 MST"
  • "02 Jan 06 15:04 -0700"
  • "Monday, 02-Jan-06 15:04:05 MST"
  • "Mon, 02 Jan 2006 15:04:05 MST"
  • "Mon, 02 Jan 2006 15:04:05 -0700"
  • "2006-01-02T15:04:05Z07:00"

limit

Функция вызывается внутри функции range для ограничения списка данных. Обрабатывает списки которые не имеют ключей, принимает любой список данных первым параметром и обрезает список по второму значению. Например, в функцию можно передавать поля алерта .Events, .Assets, .Accounts, .Actions.

Пример вызова:

{{ range (limit .Assets 5) }}

<strong>Устройство</strong>: {{ .DisplayName }},

<strong>Дата создания</strong>: {{ .CreatedAt }}

{{ end }}

link_alert

Формирует ссылку на алерт с URL, указанным в настройках подключения к SMTP-серверу в качестве псевдонима сервера Ядра KUMA или с реальным URL сервиса Ядра KUMA, если псевдоним не задан.

Пример вызова:

{{ link_alert }}

link

Принимает вид ссылки, доступной для перехода.

Пример вызова:

{{ link "https://support.kaspersky.com/KUMA/2.1/ru-RU/233508.htm" }}

Синтаксис шаблона уведомления

В шаблоне можно обращаться к полям алерта, содержащим строку или число:

{{ .CorrelationRuleName }}

В письме будет отображаться название алерта, то есть содержимое поля CorrelationRuleName.

Некоторые поля алерта содержат массивы данных. Например, это поля алерта с относящимися к нему событиями, активами, учетными записями. К таким вложенным объектам можно обращаться с помощью функции range, которая последовательно обращается к полям 50 первых вложенных объектов. При обращении с помощью функции range к полю, в котором нет массива данных, возвращается ошибка. Пример:

{{ range .Assets }}

Устройство: {{ .DisplayName }}, дата создания: {{ .CreatedAt }}

{{ end }}

В письме будут отображаться значения полей DeviceHostName и CreatedAt из 50 связанных с алертом активов:

Устройство: <значение поля DisplayName из актива 1>, дата создания: <значение поля CreatedAt из актива 1>

Устройство: <значение поля DisplayName из актива 2>, дата создания: <значение поля CreatedAt из актива 2>

...

// Всего 50 строк

С помощью параметра limit можно ограничить количество объектов, возвращаемых функцией range:

{{ range (limit .Assets 5) }}

<strong>Устройство</strong>: {{ .DisplayName }},

<strong>Дата создания</strong>: {{ .CreatedAt }}

{{ end }}

В письме будут отображаться значения полей DisplayName и CreatedAt из 5 связанных с алертом активов, слова "Устройства" и "Дата создания" выделены HTML-тегами <strong>:

<strong>Устройство</strong>: <значение поля DeviceHostName из актива 1>,

<strong>Дата создания</strong>: <значение поля CreatedAt из актива 1>

<strong>Устройство</strong>: <значение поля DeviceHostName из актива N>,

<strong>Дата создания</strong>: <значение поля CreatedAt из актива N>

...

// Всего 10 строк

Вложенные объекты могут иметь свои вложенные объекты. К ним можно обратиться с помощью вложенных функций range:

{{ range (limit .Events 5) }}

    {{ range (limit .Event.BaseEvents 10) }}

    Идентификатор сервиса: {{ .ServiceID }}

    {{ end }}

{{ end }}

В письме будет отображаться по десять идентификаторов сервисов (поле ServiceID) из базовых событий, относящихся к пяти корреляционным событиям алерта. Всего 50 строк. Обратите внимание, что обращение к событиям происходит через вложенную структуру EventWrapper, которая находится в алерте в поле Events. События доступны в поле Event этой структуры, что отражено в примере выше. Таким образом, если поле A содержит вложенную структуру [B] и в структуре [B] есть поле C, которое является строкой или числом, то чтобы обратиться к полю C необходимо указать путь {{ A.C }}.

Некоторые поля объектов содержат вложенные словари в формате "ключ - значение" (например, поле событий Extra). К ним можно обратиться с помощью функции range с переданными ей переменными: range $placeholder1, $placeholder2 := .FieldName. Значения переменных затем можно вызывать, указывая из названия. Пример:

{{ range (limit .Events 3) }}

    {{ range (limit .Event.BaseEvents 5) }}

    Список полей в поле события Extra: {{ range $name, $value := .Extra }} {{ $name }} - {{ $value }} <br> {{ end }}

    {{ end }}

{{ end }}

В письме через HTML-тег <br> будут отображаться пары "ключ - значение" из полей Extra базовых событий, принадлежащих корреляционным событиям. Вызываются данные из пяти базовых событий из каждого из трех корреляционных событий.

В шаблонах уведомлений можно использовать HTML-теги, выстраивая их в сложные структуры. Ниже приводится пример таблицы для полей корреляционного события:

<style type="text/css">

  TD, TH {

    padding: 3px;

    border: 1px solid black;

  }

</style>

<table>

  <thead>

    <tr>

        <th>Название сервиса</th>

        <th>Название корреляционного правила</th>

        <th>Версия устройства</th>

    </tr>

  </thead>

  <tbody>

    {{ range .Events }}

    <tr>

        <td>{{ .Event.ServiceName }}</td>

        <td>{{ .Event.CorrelationRuleName }}</td>

        <td>{{ .Event.DeviceVersion }}</td>

    </tr>

    {{ end }}

  </tbody>

</table>

С помощью функции link_alert в письмо с уведомлением можно вставить HTML-ссылку на алерт:

{{link_alert}}

В письме будет отображаться ссылка на окно алерта.

Ниже приведен пример, как можно из связанных с алертом данных извлечь сведения о наивысшей категории активов и поместить ее в уведомления:

{{ $criticalCategoryName := "" }}{{ $maxCategoryWeight := 0 }}{{ range .Assets }}{{ range .CategoryModels }}{{ if gt .Weight $maxCategoryWeight }}{{ $maxCategoryWeight = .Weight }}{{ $criticalCategoryName = .Name }}{{ end }}{{ end }}{{ end }}{{ if gt $maxCategoryWeight 1 }}

Наивысшая категория активов: {{ $criticalCategoryName }}{{ end }}

В начало