Добавление сущностей-справочников и идентификаторов в схему домена

В этом сценарии мы расширим созданную на предыдущих этапах схему домена с помощью домена справочников и человекочитаемых идентификаторов.

Перечисления и сущности-справочники

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

  • Перечисление — это пользовательский тип данных атрибута с жестко заданным в схеме домена списком значений:

    • Изменять список значений могут только пользователи, имеющие разрешение на управление элементами экспертизы.

    • Перечисление используется там, где набор значений известен заранее и не меняется. Например, уровень критичности инцидента — низкий, средний, высокий; тип сети — виртуальная или физическая.

  • Справочник — это отдельная сущность в домене, значения которой могут изменять пользователи:

    • Добавлять и редактировать экземпляры могут все пользователи, которым выданы разрешения на действия в домене.

    • Справочник может иметь дополнительные атрибуты.

Создание домена для справочников

Создадим новый домен для сущностей-справочников и опишем сущность Категории инцидентов.

Пример описания домена и сущности
id: dictionaries.test
type: domain
version: 0.0.1
name: Dictionary Domain
description: Справочники
status: test
date: 2025-08-02
author: John Doe
tags: [dictionaries]

entities:
  - id: IncidentCategoryDict
    name: Категории
    label: "{categoryName}"
    attributes:

      - id: categoryName
        name: Название
        dataType: String

      - id: categoryDescription
        name: Описание
        dataType: String

      - id: categorySource
        name: Источник
        dataType: String

Опишем действия с сущностью, ее представления и меню домена:

Пример описания интерфейса в домене
id: dictionaries.test
...
actions:
  - id: actions_createCategory
    name: Добавить
    type: open_modal
    modal: forms_newCategory
    entity: IncidentCategoryDict
    operation: create
    description: Открыть форму для создания категории

  - id: actions_openCategoryPanel
    name: Категория
    type: open_panel
    panel: panels_CategoryPanel
    entity: IncidentCategoryDict

  - id: actions_bulkRemoveCategories
    name: Удалить
    type: bulk
    entity: IncidentCategoryDict
    operation: remove
    description: Удаление сущностей

views:
  - id: categoryViews
    type: entity
    entity: IncidentCategoryDict

    widgets:
      - id: editors_categoryName
        type: attribute
        attribute: categoryName
        description: Поле для ввода названия

      - id: editors_categoryDescription
        type: attribute
        attribute: categoryDescription
        description: Поле для ввода описания

      - id: editors_categorySource
        type: attribute
        attribute: categorySource
        description: Поле для источника

      - id: buttons_createCategory
        type: action
        action: actions_createCategory
        description: Кнопка регистрации категории
        control:
          type: regular_button

      - id: buttons_bulkRemoveCategories
        type: action
        action: actions_bulkRemoveCategories
        description: Кнопка удаления категорий
        control:
          type: regular_button

    groups:
      - id: blocks_categoryInfo
        type: block
        layout:
          direction: column
          expandable: false
        components:
          - widget: editors_categorySource
          - widget: editors_categoryDescription
          - widget: editors_categoryName

      - id: tabs_categoryInfo
        type: tab
        label: Информация
        description: Вкладка информации о категории
        components:
          - block: blocks_categoryInfo

      - id: blocks_forms_newCategory
        description: Блок формы для регистрации данных записи категории
        type: form
        layout:
          direction: column
        components:
          - widget: editors_categoryName
          - widget: editors_categoryDescription
          - widget: editors_categorySource

    views:
      - id: panels_CategoryPanel
        name: Панель просмотра категории
        type: panel
        label: "{categoryName}"
        tabs:
          - tab: tabs_categoryInfo

      - id: forms_newCategory
        description: Форма регистрации данных категории
        type: modal
        form: blocks_forms_newCategory
        label: Регистрация категории

  - id: lists_category_entities
    type: list
    actionPanel:
      - widget: buttons_createCategory
      - widget: buttons_bulkRemoveCategories
    source:
      type: operational
      entity: IncidentCategoryDict
    label: Список категорий
    table:
      columns:
        - id: name
          attribute: categoryName
          label: Название
          layout:
            visible: true
            width:
              default: 350
              min: 50
              max: 400
        - id: description
          attribute: categoryDescription
          label: Описание
          layout:
            visible: true
            width:
              default: 200
              min: 50
              max: 250

menus:
  - id: enumerations
    route: /enumerations
    label: Справочники
    type: root_group
    description: Справочники
    placement: top
    icon: icons
    items:
      - id: category
        route: /category
        label: Категории
        type: menu
        description: Категории
        placement: top
        view: lists_category_entities

Наполнение справочника

Создадим объекты категорий в домене справочника. Примеры категорий приведены в таблице.

Категории инцидентов
Название Описание

Attack

Атака

DataSecurity

Защита данных

HostCompromise

Компрометация узла

IllegalSoftwareUsage

Использование нелегитимного ПО

MalwareInfection

Заражение ВПО

SecurityToolsState

Состояние СЗИ

UnauthorizedConfigChange

Несанкционированное изменение конфигурации

Undefined

Не определено

Создание связи со справочником

Свяжем сущность Инцидент в домене индикаторов компрометации с сущностью Категории из домена справочников:

Пример описания связи
id: iocs.test
...
linkages:
  ...
  - id: Incident_Category
    name: Категория инцидента
    description: Категория инцидента
    # Ссылка на сущность Категория в домене Справочники.
    side1: dictionaries.test/IncidentCategoryDict
    # Ссылка на сущность Инцидент.
    side2: Incident
    type: 1_n
    undirected: false
    nameFrom:
      side1: Инциденты
      side2: Категория

Опишем виджет связи с категорией в представлении инцидента:

Пример описания виджета связи
id: iocs.test
...
views:
  # Представление Инцидента.
  - id: viewIncident
    widgets:
      ...
      - id: editors_link_Incident_Category
        type: linkage
        linkage: Incident_Category

    groups:
      # Группа Блок формы создания Инцидента.
      - id: blocks_forms_newIncident
        ...
        components:
          ...
          # Ссылка на виджет связи.
          - widget: editors_link_Incident_Category
      ...
      # Группа Блока информации.
      - id: blocks_infoIncident
        ...
        components:
          ...
          # Ссылка на виджет связи.
          - widget: editors_link_Incident_Category

Добавление идентификаторов

Для каждого объекта по умолчанию создается системный атрибут идентификатора с типом UUID. Однако для того, чтобы сформировать человекочитаемый код, по которому объект можно легко найти и отличить от других объектов, в схеме данных нужно настроить атрибуты с типом данных Identifier. Такие атрибуты позволяют формировать структурированные идентификаторы, по которым можно определить дату создания или происхождение объекта.

В схеме домена поддерживаются два основных типа идентификаторов:

  • Несегментированные — простая последовательность чисел с заданным шагом.

  • Сегментированные — составные идентификаторы, которые включают префикс, кодирующий дополнительные данные, и дату в настраиваемом формате.

Добавление несегментированного идентификатора

Индикаторы компрометации обычно создаются в большом количестве, для них достаточно простого несегментированного счётчика, использующего последовательность.

Настройка последовательности

Опишем последовательность в блоке sequences:

Пример описания последовательности
id: iocs.test
...
sequences:
  - id: IOCSeq
    startFrom: 1
    description: Последовательность для индикаторов

Добавление атрибута и виджетов

Добавим к сущности Индикатор атрибут идентификатора и опишем его в представлениях:

Пример описания несегментированного идентификатора
id: iocs.test
...
entities:
  - id: Ioc
    ...
    attributes:
      ...
      - id: iocId
        name: Идентификатор IOC
        dataType: Identifier
        # Ссылка на FQID последовательности, используемой в атрибуте.
        sequence: IOCSeq
...

views:
  # Представление Индикатора.
  - id: viewIoc
    widgets:
      # Виджет атрибута идентификатора.
      - id: editors_iocId
        type: attribute
        attribute: iocId
      ...

    groups:
      # Блок информации об индикаторе.
      - id: blocks_infoIoc
        ...
        components:
          # Ссылка на виджет атрибута.
          - widget: editors_iocId
          ...
    ...

  # Представление Списка индикаторов.
  - id: lists_iocs
    ...
    table:
      columns:
        ...
        - id: iocId
          # Ссылка на атрибут идентификатора.
          attribute: iocId
          label: Идентификатор

Сегментированный идентификатор с датой

Для источников индикаторов используем шаблон с датой, чтобы идентификатор отражал время создания записи. Шаблон описывается в поле template.

Пример описания сегментированного идентификатора с датой
id: iocs.test
...
entities:
  ...
  # Сущность Источник индикатора
  - id: IocSource
    ...
    attributes:
      ...
      - id: sourceId
        name: Идентификатор источника
        dataType: Identifier
        # Шаблон с годом, месяцем и инкрементом.
        template: "{@YYYY}-{@MM}-{@inc}"

Примеры идентификаторов, сгенерированных согласно шаблону:

  • 2025-10-1

  • 2025-10-2

Добавим атрибут идентификатора в представления:

Пример идентификатора в представлениях
id: iocs.test
...
views:
  - id: viewIocSource
    widgets:
      - id: editors_sourceId
        type: attribute
        # Ссылка на атрибут идентификатора.
        attribute: sourceId
        ...

    groups:
      - id: blocks_infoIocSource
        ...
        components:
          - widget: editors_sourceId
          ...
    ...

  - id: lists_iocSources
    ...
    table:
      columns:
        - id: sourceId
          attribute: sourceId
          label: Идентификатор
        ...

Сегментированный идентификатор с префиксом и датой

Чтобы можно было визуально различать инциденты разных типов, используем идентификатор с датой и префиксом. Тип инцидента хранится в отдельном справочнике.

Создание справочника для определения префикса

Создадим сущность Тип инцидента в домене справочников с атрибутами полного названия, описания и короткого кода для идентификатора:

Пример описания справочника для идентификатора
# Домен справочников.
id: dictionaries.test
...
entities:
  ...
  - id: IncidentTypeDict
    name: Тип инцидента
    attributes:
      - id: fullName
        name: Название
        dataType: String
      - id: shortCode
        name: Код типа
        dataType: String
      - id: typeDescription
        name: Описание
        dataType: String

Опишем действия с сущностью и ее представления:

Пример описания действий и представлений
actions:
  ...
  # Действия с типом инцидента
  - id: actions_createType
    name: Добавить
    type: open_modal
    modal: forms_newType
    entity: IncidentTypeDict
    operation: create
    description: Открыть форму для создания типа

  - id: actions_openTypePanel
    name: Категория
    type: open_panel
    panel: panels_TypePanel
    entity: IncidentTypeDict

  - id: actions_bulkRemoveTypes
    name: Удалить
    type: bulk
    entity: IncidentTypeDict
    operation: remove
    description: Удаление типов

views:
  ...
  # Представление типа инцидента.
  - id: typeViews
    type: entity
    entity: IncidentTypeDict

    widgets:
      - id: editors_fullName
        type: attribute
        attribute: fullName
        description: Поле для ввода названия

      - id: editors_shortCode
        type: attribute
        attribute: shortCode
        description: Поле для ввода короткого кода

      - id: editors_typeDescription
        type: attribute
        attribute: typeDescription
        description: Поле для ввода короткого кода

      - id: buttons_createType
        type: action
        action: actions_createType
        description: Кнопка регистрации типа
        control:
          type: regular_button

      - id: buttons_bulkRemoveTypes
        type: action
        action: actions_bulkRemoveTypes
        description: Кнопка удаления типов
        control:
          type: regular_button

    groups:
      - id: blocks_typeInfo
        type: block
        layout:
          direction: column
          expandable: false
        components:
          - widget: editors_fullName
          - widget: editors_shortCode
          - widget: editors_typeDescription

      - id: tabs_typeInfo
        type: tab
        label: Информация
        description: Вкладка информации о типе
        components:
          - block: blocks_typeInfo

      - id: blocks_forms_newType
        description: Блок формы для регистрации данных типа
        type: form
        layout:
          direction: column
        components:
          - widget: editors_fullName
          - widget: editors_shortCode
          - widget: editors_typeDescription

    views:
      - id: panels_TypePanel
        name: Панель просмотра типа
        type: panel
        label: "{fullName}"
        tabs:
          - tab: tabs_typeInfo

      - id: forms_newType
        description: Форма регистрации данных типа
        type: modal
        form: blocks_forms_newType
        label: Регистрация категории

  # Представление списка типов.
  - id: lists_type_entities
    type: list
    actionPanel:
      - widget: buttons_createType
      - widget: buttons_bulkRemoveTypes
    source:
      type: operational
      entity: IncidentTypeDict
    label: Список типов
    table:
      columns:
        - id: fullName
          attribute: fullName
          label: Название
          layout:
            visible: true
            width:
              default: 200
              min: 50
              max: 400
        - id: shortCode
          attribute: shortCode
          label: Код
          layout:
            visible: true
            width:
              default: 50
              min: 50
              max: 250
        - id: typeDescription
          attribute: typeDescription
          label: Описание
          layout:
            visible: true
            width:
              default: 250
              min: 50
              max: 250

menus:
  - id: enumerations
    ...
    items:
      ...
      - id: type
        route: /type
        label: Типы
        type: menu
        description: Типы инцидентов
        placement: top
        view: lists_type_entities

Наполнение справочника для идентификатора

Создадим объекты типов в домене справочника. Примеры типов приведены в таблице.

Категории инцидентов
Название Код Описание

AntivirusDisabled

AVD

Отключение антивирусного ПО

Attack

ATK

Атака

AutorunModification

ARM

Модификация параметров автозапуска

BruteForce

BFC

Брутфорс

DataLeakage

DLK

Утечка данных

DataSecurity

DSC

Защита данных

HostCompromise

HCM

Компрометация узла

IllegalSoftwareUsage

ISU

Использование нелегитимного ПО

MaliciousActionsOnEvent

MAE

Выполнение вредоносных действий по событию

MaliciousResources

MRS

Вредоносные ресурсы

MalwareInfection

MIF

Заражение вредоносным ПО

MalwareInjection

MIJ

Внедрение вредоносного кода в компоненты системы

NetworkScan

NWS

Сканирование сети

RemoteControlUsage

RCU

Использование средств удалённого управления

SecurityToolsState

STS

Состояние СЗИ

SoftwareSuspiciousActivity

SSA

Подозрительная активность ПО

SuspiciousWebActivity

SWA

Подозрительная веб-активность

TaskManipulation

TMN

Манипуляции с запланированными задачами

UnauthorizedConfigChange

UCC

Несанкционированное изменение конфигурации

Undefined

INC

Не определено

Добавление атрибута-идентификатора

Опишем атрибут идентификатора для сущности инцидента. В описании атрибута нужно заполнить следующие поля:

  • template — шаблон идентификатора, указывающий формат и порядок сегментов;

  • defaultPrefix — префикс по умолчанию;

  • incrementTemplate — настройка дополнения инкремента ведущими нулями;

  • prefixRules — правила определения префикса:

    • id — идентификатор правила;

    • attribute — атрибут сущности, с которым будет сравниваться атрибут справочника;

    • source — источник префикса. Включает поля:

      • entity — сущность-справочник;

      • key: атрибут сущности-справочника для сравнения;

      • value: атрибут справочника, из которого берется значение префикса.

Пример описания атрибута-идентификатора с префиксом и датой
id: iocs.test
...
entities:
  ...
  - id: Incident
    ...
    attributes:
     ...
      - id: IncidentTypeDict
        name: Тип инцидента
        dataType: String

      - id: incidentId
        name: Идентификатор инцидента
        dataType: Identifier
        template: "{@prefix}-{@YY}/{@MM}/{@DD}-{@inc}"
        # Префикс по умолчанию.
        defaultPrefix: INC
        # Дополнение нулями до четырех цифр.
        incrementTemplate: "0000"
        prefixRules:
          - id: PrefixByType
            attribute: IncidentType
            source:
              entity: dictionaries.test/IncidentTypeDict
              key: fullName
              value: shortCode

Примеры сгенерированных идентификаторов:

  • DFC-25/10/08-0001

  • MIN-25/11/08-0016

  • DLK-25/12/15-0103

Добавим атрибут идентификатора в представления инцидента и списка инцидентов:

Пример идентификатора в представлениях
id: iocs.test
...
views:
  - id: viewIncident
    widgets:
      - id: editors_incidentType
        type: attribute
        attribute: incidentType
      - id: editors_incidentId
        type: attribute
        attribute: incidentId
        ...

    groups:
      - id: blocks_forms_newIncident
        ...
        components:
          ...
          - widget: editors_incidentType

      - id: blocks_infoIncident
        ...
        components:
          - widget: editors_incidentId
          ...
    ...

  - id: lists_Incidents
    ...
    table:
      columns:
        - id: incidentId
          attribute: incidentId
          label: Идентификатор
        ...

Примеры схем доменов

Пример схемы домена-справочника
id: dictionaries.test
type: domain
version: 0.0.1
name: Dictionary Domain
description: Справочники
status: test
date: 2025-08-02
author: John Doe
tags: [dictionaries]

entities:
  - id: IncidentCategoryDict
    name: Категории
    label: "{categoryName}"
    attributes:

      - id: categoryName
        name: Название
        dataType: String

      - id: categoryDescription
        name: Описание
        dataType: String

      - id: categorySource
        name: Источник
        dataType: String

  - id: IncidentTypeDict
    name: Тип инцидента
    attributes:
      - id: fullName
        name: Название
        dataType: String
      - id: shortCode
        name: Код типа
        dataType: String
      - id: typeDescription
        name: Описание
        dataType: String

actions:
  - id: actions_createCategory
    name: Добавить
    type: open_modal
    modal: forms_newCategory
    entity: IncidentCategoryDict
    operation: create
    description: Открыть форму для создания категории

  - id: actions_openCategoryPanel
    name: Категория
    type: open_panel
    panel: panels_CategoryPanel
    entity: IncidentCategoryDict

  - id: actions_bulkRemoveCategories
    name: Удалить
    type: bulk
    entity: IncidentCategoryDict
    operation: remove
    description: Удаление сущностей

  - id: actions_createType
    name: Добавить
    type: open_modal
    modal: forms_newType
    entity: IncidentTypeDict
    operation: create
    description: Открыть форму для создания типа

  - id: actions_openTypePanel
    name: Категория
    type: open_panel
    panel: panels_TypePanel
    entity: IncidentTypeDict

  - id: actions_bulkRemoveTypes
    name: Удалить
    type: bulk
    entity: IncidentTypeDict
    operation: remove
    description: Удаление типов

views:
  - id: categoryViews
    type: entity
    entity: IncidentCategoryDict

    widgets:
      - id: editors_categoryName
        type: attribute
        attribute: categoryName
        description: Поле для ввода названия

      - id: editors_categoryDescription
        type: attribute
        attribute: categoryDescription
        description: Поле для ввода описания

      - id: editors_categorySource
        type: attribute
        attribute: categorySource
        description: Поле для источника

      - id: buttons_createCategory
        type: action
        action: actions_createCategory
        description: Кнопка регистрации категории
        control:
          type: regular_button

      - id: buttons_bulkRemoveCategories
        type: action
        action: actions_bulkRemoveCategories
        description: Кнопка удаления категорий
        control:
          type: regular_button

    groups:
      - id: blocks_categoryInfo
        type: block
        layout:
          direction: column
          expandable: false
        components:
          - widget: editors_categorySource
          - widget: editors_categoryDescription
          - widget: editors_categoryName

      - id: tabs_categoryInfo
        type: tab
        label: Информация
        description: Вкладка информации о категории
        components:
          - block: blocks_categoryInfo

      - id: blocks_forms_newCategory
        description: Блок формы для регистрации данных записи категории
        type: form
        layout:
          direction: column
        components:
          - widget: editors_categoryName
          - widget: editors_categoryDescription
          - widget: editors_categorySource

    views:
      - id: panels_CategoryPanel
        name: Панель просмотра категории
        type: panel
        label: "{categoryName}"
        tabs:
          - tab: tabs_categoryInfo

      - id: forms_newCategory
        description: Форма регистрации данных категории
        type: modal
        form: blocks_forms_newCategory
        label: Регистрация категории

  - id: lists_category_entities
    type: list
    actionPanel:
      - widget: buttons_createCategory
      - widget: buttons_bulkRemoveCategories
    source:
      type: operational
      entity: IncidentCategoryDict
    label: Список категорий
    table:
      columns:
        - id: name
          attribute: categoryName
          label: Название
          layout:
            visible: true
            width:
              default: 350
              min: 50
              max: 400
        - id: description
          attribute: categoryDescription
          label: Описание
          layout:
            visible: true
            width:
              default: 200
              min: 50
              max: 250

  - id: typeViews
    type: entity
    entity: IncidentTypeDict

    widgets:
      - id: editors_fullName
        type: attribute
        attribute: fullName
        description: Поле для ввода названия

      - id: editors_shortCode
        type: attribute
        attribute: shortCode
        description: Поле для ввода короткого кода

      - id: editors_typeDescription
        type: attribute
        attribute: typeDescription
        description: Поле для ввода короткого кода

      - id: buttons_createType
        type: action
        action: actions_createType
        description: Кнопка регистрации типа
        control:
          type: regular_button

      - id: buttons_bulkRemoveTypes
        type: action
        action: actions_bulkRemoveTypes
        description: Кнопка удаления типов
        control:
          type: regular_button

    groups:
      - id: blocks_typeInfo
        type: block
        layout:
          direction: column
          expandable: false
        components:
          - widget: editors_fullName
          - widget: editors_shortCode
          - widget: editors_typeDescription

      - id: tabs_typeInfo
        type: tab
        label: Информация
        description: Вкладка информации о типе
        components:
          - block: blocks_typeInfo

      - id: blocks_forms_newType
        description: Блок формы для регистрации данных типа
        type: form
        layout:
          direction: column
        components:
          - widget: editors_fullName
          - widget: editors_shortCode
          - widget: editors_typeDescription

    views:
      - id: panels_TypePanel
        name: Панель просмотра типа
        type: panel
        label: "{fullName}"
        tabs:
          - tab: tabs_typeInfo

      - id: forms_newType
        description: Форма регистрации данных типа
        type: modal
        form: blocks_forms_newType
        label: Регистрация категории

  - id: lists_type_entities
    type: list
    actionPanel:
      - widget: buttons_createType
      - widget: buttons_bulkRemoveTypes
    source:
      type: operational
      entity: IncidentTypeDict
    label: Список типов
    table:
      columns:
        - id: fullName
          attribute: fullName
          label: Название
          layout:
            visible: true
            width:
              default: 200
              min: 50
              max: 400
        - id: shortCode
          attribute: shortCode
          label: Код
          layout:
            visible: true
            width:
              default: 50
              min: 50
              max: 250
        - id: typeDescription
          attribute: typeDescription
          label: Описание
          layout:
            visible: true
            width:
              default: 250
              min: 50
              max: 250

menus:
  - id: enumerations
    route: /enumerations
    label: Справочники
    type: root_group
    description: Справочники
    placement: top
    items:
      - id: category
        route: /category
        label: Категории
        type: menu
        description: Категории
        placement: top
        view: lists_category_entities

      - id: type
        route: /type
        label: Типы
        type: menu
        description: Типы инцидентов
        placement: top
        view: lists_type_entities
Пример схемы домена с идентификаторами и связью со справочником
id: iocs.test
type: domain
version: 0.0.3
name: IOCs Domain
description: Домен индикаторов компрометации
status: test
date: 2025-08-01
author: John Doe
tags: [iocs]

entities:
  - id: Ioc
    name: Индикатор
    label: "{type}: {value}"
    description: Индикатор компрометации

    attributes:
      - id: value
        name: Значение
        description: Значение индикатора компрометации
        dataType: String

      - id: type
        name: Тип
        description: Тип индикатора компрометации
        dataType: enumIocTypes

      - id: refIocSourcesArray
        name: Источник индикатора
        dataType: Array
        item:
         dataType: Reference
         entity: IocSource

      - id: iocId
        name: Идентификатор IOC
        dataType: Identifier
        sequence: IOCSeq

  - id: IocSource
    name: Источник индикатора
    label: "{sourceName}"
    description: Источник индикатора компрометации

    attributes:
      - id: sourceName
        name: Название
        description: Название источника индикатора
        dataType: String

      - id: sourceDescription
        name: Описание
        description: Описание источника индикатора
        dataType: String

      - id: sourceId
        name: Идентификатор источника
        dataType: Identifier
        template: "{@YYYY}-{@MM}-{@inc}"

  - id: Incident
    name: Инцидент
    label: "{incidentSubject}"
    attributes:
      - id: incidentSubject
        name: Тема
        dataType: String
      - id: incidentDescription
        name: Описание
        dataType: String
      - id: Urgency
        name: Срочность
        dataType: IncUrgency
      - id: incidentType
        name: Тип инцидента
        dataType: String
      - id: incidentId
        name: Идентификатор инцидента
        dataType: Identifier
        template: "{@prefix}-{@YY}/{@MM}/{@DD}-{@inc}"
        defaultPrefix: INC
        incrementTemplate: "0000"
        prefixRules:
          - id: PrefixByType
            attribute: incidentType
            source:
              entity: dictionaries.test/IncidentTypeDict
              key: fullName
              value: shortCode

dataTypes:
  - id: enumIocTypes
    name: Типы индикаторов компрометации
    dataType: Enum
    values:

    - id: Account
      name: Аккаунт
    - id: File
      name: Файл
    - id: Domain
      name: Домен
    - id: URL
      name: URL
    - id: Email
      name: Email
    - id: IP
      name: IP
    - id: IPv6
      name: IPv6
    - id: MD5Hash
      name: Хэш MD5
    - id: SHA1Hash
      name: Хэш SHA-1
    - id: SHA256Hash
      name: Хэш SHA-256

  - id: IncUrgency
    name: Критичность
    description: Критичность
    dataType: Enum
    values:
      - id: criticalityHigh
        name: Высокая
        value: 1
      - id: criticalityMedium
        name: Средняя
        value: 2
      - id: criticalityLow
        name: Низкая
        value: 3

sequences:
  - id: IOCSeq
    startFrom: 1
    description: Последовательность для индикаторов

linkages:
  - id: Incident_Ioc
    name: Инцидент связан с индикатором компрометации
    description: В данных инцидента обнаружен индикатор компрометации
    side1: Incident
    side2: Ioc
    type: n_n
    undirected: true
    nameFrom:
      side1: Содержит индикатор
      side2: Связан с инцидентом

  - id: Incident_Category
    name: Категория инцидента
    description: Категория инцидента
    side1: dictionaries.test/IncidentCategoryDict
    side2: Incident
    type: 1_n
    undirected: false
    nameFrom:
      side1: Инциденты
      side2: Категория

menus:
  - id: menus_iocs
    route: /iocs
    label: "Индикаторы компрометации"
    type: root_group
    description: Меню домена Индикаторы
    placement: top
    items:
      - id: IndicatorsMenu
        route: /iocs/indicators
        label: Индикаторы компрометации
        type: menu
        view: lists_iocs
        description: Меню раздела Индикаторы.

      - id: IocSourceMenu
        route: /iocs/sources
        label: Источники
        type: menu
        view: lists_iocSources
        description: Меню раздела Источники

      - id: IncidentMenu
        route: /iocs/incidents
        label: Инциденты
        type: menu
        view: lists_Incidents
        description: Меню раздела Инциденты.

actions:

  - id: actions_createIoc
    name: Добавить
    type: open_modal
    modal: forms_newIoc
    entity: Ioc
    operation: create
    description: Открыть модальное окно создания индикатора

  - id: actions_openIocPanel
    name: Детали
    type: open_panel
    panel: panels_infoIoc
    entity: Ioc
    description: Открыть панель с информацией об индикаторе

  - id: actions_bulkRemoveIocs
    name: Удалить
    type: bulk
    entity: Ioc
    operation: remove
    description: Удалить индикатор

  - id: actions_createIocSource
    name: Добавить
    type: open_modal
    modal: forms_newIocSource
    operation: create
    entity: IocSource
    description: Открыть модальное окно создания источника

  - id: actions_openIocSourcePanel
    name: Детали
    type: open_panel
    panel: panels_infoIocSource
    entity: IocSource
    description: Открыть панель с информацией об индикаторе

  - id: actions_bulkRemoveIocSources
    name: Удалить
    type: bulk
    entity: IocSource
    operation: remove
    description: Удалить индикаторы

  - id: actions_createIncident
    name: Добавить
    type: open_modal
    modal: forms_newIncident
    operation: create
    entity: Incident
    description: Открыть модальное окно создания инцидента

  - id: actions_openIncidentPanel
    name: Детали
    type: open_panel
    panel: panels_infoIncident
    entity: Incident
    description: Открыть панель с информацией об инциденте

  - id: actions_bulkRemoveIncidents
    name: Удалить
    type: bulk
    entity: Incident
    operation: remove
    description: Удалить инциденты

views:
  - id: viewIoc
    type: entity
    entity: Ioc

    widgets:
      - id: editors_iocType
        type: attribute
        attribute: type
        description: Поле для ввода типа индикатора

      - id: editors_iocValue
        type: attribute
        attribute: value
        description: Поле для ввода значения индикатора

      - id: editors_iocSource
        type: attribute
        attribute: refIocSourcesArray
        description: Поле для выбора источников индикатора

      - id: editors_iocId
        type: attribute
        attribute: iocId

      - id: buttons_createIoc
        type: action
        action: actions_createIoc
        description: Кнопка, которая запускает действие создания индикатора. Действие открывает модальную форму создания записи.
        control:
          type: regular_button
          label: Добавить
      - id: buttons_removeIocs
        type: action
        action: actions_bulkRemoveIocs
        description: Кнопка для удаления индикаторов
        control:
          type: regular_button
          label: Удалить

      - id: editors_link_Ioc_Incident
        type: linkage
        linkage: Incident_Ioc
        label: Инциденты
        description: Связанные инциденты
        side: 1
        control:
          type: table
          addLinksView: lists_Incidents
          columns:
            - id: incidentSubject
              attribute: incidentSubject

    groups:
      - id: blocks_infoIoc
        description: Информация об индикаторе
        type: block
        layout:
          direction: column
          expandable: false
        components:
          - widget: editors_iocId
          - widget: editors_iocType
          - widget: editors_iocValue
          - widget: editors_iocSource
          - widget: editors_link_Ioc_Incident

      - id: tabs_infoIoc
        description: Информация об индикаторе
        type: tab
        label: Детали
        components:
          - block: blocks_infoIoc
      - id: blocks_forms_newIoc
        description: Блок формы для создания индикатора
        type: form
        layout:
          direction: column
        components:
          - widget: editors_iocType
          - widget: editors_iocValue
          - widget: editors_iocSource
          - widget: editors_link_Ioc_Incident

    views:
      - id: panels_infoIoc
        description: Детали индикатора
        type: panel
        label: "Ioc {type}: {value}"
        tabs:
          - tab: tabs_infoIoc

      - id: forms_newIoc
        description: Форма создания индикатора
        type: modal
        form: blocks_forms_newIoc
        label: Добавление индикатора

  - id: lists_iocs
    type: list
    source:
      type: operational
      entity: Ioc
    label: Индикаторы компрометации
    actionPanel:
      - widget: buttons_createIoc
      - widget: buttons_removeIocs
    table:
      columns:
        - id: iocId
          attribute: iocId
          label: Идентификатор

        - id: type
          attribute: type
          label: Тип
          layout:
            width:
              default: 100
              min: 50
              max: 100

        - id: value
          attribute: value
          label: Значение
          layout:
            width:
              default: 100
              min: 50
              max: 150

        - id: createdAt
          attribute: createdAt
          label: Дата создания
          type: timestamp
          layout:
            width:
              default: 100
              min: 50
              max: 100

        - id: updatedAt
          attribute: updatedAt
          label: Дата изменения
          type: timestamp
          layout:
            width:
              default: 100
              min: 50
              max: 100

      actions:
        - type: row_click
          action: actions_openIocPanel

      selection: true

  - id: viewIocSource
    type: entity
    entity: IocSource
    widgets:
      - id: editors_iocSourceName
        type: attribute
        attribute: sourceName
        description: Поле для ввода названия источника

      - id: editors_iocSourceDescription
        type: attribute
        attribute: sourceDescription
        description: Поле для ввода описания источника

      - id: editors_sourceId
        type: attribute
        attribute: sourceId

      - id: buttons_createIocSource
        type: action
        action: actions_createIocSource
        description: Кнопка, которая запускает действие создания источника. Действие открывает модальную форму создания записи.
        control:
          type: regular_button
          label: Добавить

      - id: buttons_removeIocSources
        type: action
        action: actions_bulkRemoveIocSources
        description: Кнопка для удаления источников индикаторов
        control:
          type: regular_button
          label: Удалить

    groups:
      - id: blocks_forms_newIocSource
        description: Блок формы для создания источника индикатора
        type: form
        layout:
          direction: column
        components:
          - widget: editors_iocSourceName
          - widget: editors_iocSourceDescription

      - id: blocks_infoIocSource
        description: Информация об источнике индикатора
        type: block
        layout:
          direction: column
        components:
          - widget: editors_sourceId
          - widget: editors_iocSourceName
          - widget: editors_iocSourceDescription

      - id: tabs_infoIocSource
        description: Информация об источнике индикатора
        type: tab
        label: Детали
        components:
          - block: blocks_infoIocSource

    views:
      - id: forms_newIocSource
        description: Форма создания источника индикатора
        type: modal
        form: blocks_forms_newIocSource
        label: Добавление индикатора

      - id: panels_infoIocSource
        description: Детали источника индикатора
        type: panel
        label: "Источник {sourceName}"
        tabs:
          - tab: tabs_infoIocSource

  - id: lists_iocSources
    type: list
    source:
      type: operational
      entity: IocSource
    label: Источники индикаторов
    table:
      columns:
        - id: sourceId
          attribute: sourceId
          label: Идентификатор
        - id: name
          attribute: sourceName
          label: Название
          layout:
            width:
              default: 100
              min: 50
              max: 100
        - id: description
          attribute: sourceDescription
          label: Описание
          layout:
            width:
              default: 100
              min: 50
              max: 150
      actions:
        - type: row_click
          action: actions_openIocSourcePanel

      selection: true

    actionPanel:
      - widget: buttons_createIocSource
      - widget: buttons_removeIocSources

  - id: viewIncident
    type: entity
    entity: Incident
    widgets:
      - id: editors_incidentSubject
        type: attribute
        attribute: incidentSubject
        description: Поле для темы
      - id: editors_incidentDescription
        type: attribute
        attribute: incidentDescription
        description: Поле для описания
      - id: editors_Author
        type: attribute
        attribute: createdBy
        description: Поле для указания автора инцидента
      - id: editors_Opened
        type: attribute
        attribute: createdAt
        description: Поле для указания даты создания инцидента
      - id: editors_Urgency
        type: attribute
        attribute: Urgency
        description: Поле для указания срочности
      - id: editors_link_Incident_Category
        type: linkage
        linkage: Incident_Category
      - id: editors_incidentType
        type: attribute
        attribute: incidentType
      - id: editors_incidentId
        type: attribute
        attribute: incidentId

      - id: buttons_createIncident
        type: action
        action: actions_createIncident
        description: Кнопка, которая запускает действие создания инцидента. Действие открывает модальную форму создания записи.
        control:
          type: regular_button
          label: Добавить

      - id: buttons_removeIncidents
        type: action
        action: actions_bulkRemoveIncidents
        description: Кнопка для удаления инцидентов
        control:
          type: regular_button
          label: Удалить

    groups:
      - id: blocks_forms_newIncident
        description: Блок формы для создания инцидента
        type: form
        layout:
          direction: column
        components:
          - widget: editors_incidentSubject
          - widget: editors_incidentDescription
          - widget: editors_Urgency
          - widget: editors_link_Incident_Category
          - widget: editors_incidentType

      - id: blocks_infoIncident
        description: Информация об инциденте
        type: block
        layout:
          direction: column
        components:
          - widget: editors_incidentId
          - widget: editors_incidentSubject
          - widget: editors_incidentDescription
          - widget: editors_Urgency
          - widget: editors_Author
          - widget: editors_Opened
          - widget: editors_link_Incident_Category

      - id: tabs_infoIncident
        description: Информация об инциденте
        type: tab
        label: Детали
        components:
          - block: blocks_infoIncident

    views:
      - id: forms_newIncident
        description: Форма создания инцидента
        type: modal
        form: blocks_forms_newIncident
        label: Добавление инцидента

      - id: panels_infoIncident
        description: Детали источника индикатора
        type: panel
        label: "{incidentSubject}"
        tabs:
          - tab: tabs_infoIncident

  - id: lists_Incidents
    type: list
    source:
      type: operational
      entity: Incident
    label: Источники индикаторов

    table:
      columns:
        - id: incidentId
          attribute: incidentId
          label: Идентификатор
        - id: incidentSubject
          attribute: incidentSubject
          label: Тема
          layout:
            width:
              default: 100
              min: 100
              max: 150
        - id: incidentDescription
          attribute: incidentDescription
          label: Описание
          layout:
            width:
              default: 200
              min: 200
              max: 250
        - id: Opened
          attribute: createdAt
          label: Дата регистрации
          layout:
            width:
              default: 100
              min: 100
              max: 150
        - id: Urgency
          attribute: Urgency
          label: Срочность
          layout:
            width:
              default: 100
              min: 100
              max: 150
        - id: Author
          attribute: createdBy
          label: Автор
          layout:
            width:
              default: 100
              min: 100
              max: 150
      actions:
        - type: row_click
          action: actions_openIncidentPanel

      selection: true

    actionPanel:
      - widget: buttons_createIncident
      - widget: buttons_removeIncidents

Была ли полезна эта страница?

Обратная связь