Замена правил агрегации

PUT /xdr/api/v1/aggregator/<tenantID>/rules/

Заменяет правила агрегации на новые для указанного тенанта.

Чтобы отредактировать правила агрегации для тенанта:

  1. Используйте метод GET /xdr/api/v1/aggregator/<tenantID>/rules/, чтобы получить список правил тенанта.
  2. Отредактируйте полученный файл с правилами.
  3. Используйте метод PUT /xdr/api/v1/aggregator/<tenantID>/rules/, чтобы применить отредактированные правила к тенанту.

Параметры запроса

Имя

Тип данных

Обязательное ли поле

Описание

Пример значения

tenantID

Строка

Да

Идентификатор тенанта.

Если указано несколько значений, формируется список, к которому применяется логический оператор ИЛИ.

Если у пользователя нет права Чтение для указанного тенанта, запрос не выполняется.

00000000-0000-0000-0000-000000000000

Тело запроса

Формат: JSON

Массив правил.

[

{"TenantID":"{tenantID}", "ID":"2", "Name": "changedName", "Priority": 1, ...},

{"TenantID":"{tenantID}", "ID":"3", "Name": "name3", "Priority": 2, ...}

]

Имя

Тип данных

Обязательное ли поле

Описание

Пример значения

id

Строка

Нет

Идентификатор правила (UUID).

Идентификатор правила по умолчанию 8e5405a7-6740-471f-a15d-9f9414974060

00000000-0000-0000-0000-000000000000

name

Строка

Да

Название правила.

Rule1

description

Строка

Нет

Описание правила.

Агрегировать по pentest user name

tenantID

Строка

Да

Идентификатор тенанта (UUID).

00000000-0000-0000-0000-000000000000

enabled

Логическое значение

Да

Включено ли правило.

Да

trigger

Строка

Да

Триггер правила. Выражение jq, возвращает логическое значение.

any(.Observables[]? | select(.Type == "username") | .Value; . == "Alice" or . == "Bob")

aggregationID

Строка

Да

Идентификатор правила, по которому алерты будут объединяться. Выражение jq, возвращает строковое значение.

PentestByUserName

alertName

Строка

Да

Название алерта. Выражение jq, возвращает строковое значение.

В приведенном примере имя правила взято из первого созданного события. Название алерта не зависит от событий, которые создаются после первого.

"[PentestByUserName] " + ([.Rules[]?.Name] | join(","))

aggregationInterval

Объект:

  • значение, int32, минимальное значение 1
  • единица измерения: секунды, минуты

Нет

Интервал поиска (по умолчанию 30 секунд).

45

maxAlertsInAggregate

Целое число

Нет

Максимальное число алертов для агрегации. Минимум ‑ 1. Максимум 100.

10

priority

Целое число

Нет

Приоритет правила. Чем меньше число, которое вы укажете, тем выше приоритет правила

2

Если вы хотите получать алерты без ожидания 30 секунд, вы можете установить параметр aggregationInterval в значение меньше 30 либо установить параметр maxAlertsInAggregate в минимальное значение 1.

Возможные ошибки

HTTP-код

Описание

Значение поля message

Значение поля details

204

Указан пустой JSON-файл.

Переменная.

Переменная.

400

Нкорректный запрос.

Переменная.

Переменная.

409

Указанный JSON-файл содержит правила с правила с дублирующимися именами.

Переменная.

Переменная.

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

Пример правила агрегации для алерта, содержащего объект КИИ:

[

{

"tenantID": "укажите ваш tenantID",

"enabled": true,

"name": "КИИ",

"aggregationID": "\"CII-Asset/\" + ([.Assets[]?.ID] | sort | join(\";\")) + \"/\" + ([.Rules[]?.ID] | sort | join(\";\"))",

"trigger": ".IsCII == true",

"alertName": "\"[КИИ] \" + ([.Assets[]?.Name] | sort | join(\";\")) + \"/\" + ([.Rules[]?.Name] | sort | join(\";\"))",

"maxAlertsInAggregate": 100,

"aggregationInterval": {

"unit": "seconds",

"value": 30

},

"description": "Агрегация событий с КИИ активами, с разделением событий в алерты по Asset ID/IDs + Rule ID",

"priority": 0

},

{

"tenantID": "укажите ваш tenantID",

"id": "8e5405a7-6740-471f-a15d-9f9414974060",

"enabled": true,

"name": "Правило, которое объединяет алерты в соответствии с правилами корреляции.",

"aggregationID": "([.Rules[].ID // empty] | sort | join(\";\"))",

"trigger": ".Rules | length > 0",

"alertName": "([.Rules[]?.Name // empty] | sort | join(\",\")) + \" \" + (.SourceCreatedAt)",

"maxAlertsInAggregate": 100,

"aggregationInterval": {

"unit": "seconds",

"value": 30

},

"description": "Правило агрегации, которое объединяет алерты в соответствии со сработавшим правилом корреляции.",

"priority": 1

}

]

В начало