Перейти к основному содержимому
Версия: 4.6.X

Служба Asset-keeper

Asset-keeper -- это служба KOMRAD Enterprise SIEM, отвечающая за хранение и управление данными об активах. Служба использует СУБД PostgreSQL в качестве основного хранилища и обеспечивает работу с текущими свойствами активов, историей их изменений, группами и фильтрами.

Основные функции

Asset-keeper выполняет следующие задачи:

  • Хранение текущих свойств активов (таблица свойств)
  • Ведение истории изменений свойств (таблица истории)
  • Управление группами активов и фильтрами
  • Применение стратегий дедупликации при поступлении новых данных
  • Поддержание связей между активами различных типов

Структура базы данных

Служба Asset-keeper хранит данные в схеме preferences базы данных PostgreSQL. Основные таблицы:

Таблица типов активов (types)

Содержит перечень доступных типов активов с настройками стратегий дедупликации и разрешённых свойств.

CREATE TABLE preferences.types (
id UUID PRIMARY KEY,
name TEXT UNIQUE NOT NULL,
strategy JSONB NOT NULL,
allowed_properties JSONB
);

Таблица активов (assets)

Хранит основные записи об активах.

CREATE TABLE preferences.assets (
id UUID PRIMARY KEY,
is_deleted BOOLEAN NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
type TEXT NOT NULL REFERENCES preferences.types(name)
);

Таблица свойств (properties)

Содержит свойства активов в формате ключ-значение с поддержкой истории изменений.

CREATE TABLE preferences.properties (
asset_id UUID NOT NULL REFERENCES preferences.assets(id) ON DELETE CASCADE,
value TEXT NOT NULL,
name TEXT NOT NULL,
type TEXT NOT NULL,
created_at TIMESTAMP NOT NULL
);

Таблица групп (groups)

Хранит информацию о группах активов.

CREATE TABLE preferences.groups (
id UUID PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);

Таблица иерархии групп (groups_to_children)

Определяет древовидную структуру вложенности групп.

CREATE TABLE preferences.groups_to_children (
parent_id UUID REFERENCES preferences.groups(id),
child_id UUID REFERENCES preferences.groups(id)
);

Таблица фильтров (filters)

Содержит сохранённые фильтры для динамического формирования групп.

CREATE TABLE preferences.filters (
id UUID PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
created_at TIMESTAMP NOT NULL,
filter JSONB NOT NULL
);

Таблица связей фильтров с группами (groups_to_filters)

Связывает группы с фильтрами, определяя динамическое членство активов в группах.

Стратегии дедупликации по типам

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

Хост

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

Домен

Домены связываются с серверами (хостами). При обнаружении нового сервера для домена связь обновляется с сохранением истории.

Сетевой адрес

Для сетевых адресов выполняется валидация связей в реальном времени. Система проверяет актуальность привязки адреса к хосту на основе поступающих событий.

Операционная система

Операционные системы связываются с хостами. При обнаружении изменения ОС на хосте создаётся новая связь, а предыдущая переводится в исторические.

Учётная запись

Учётные записи привязываются к операционным системам и доменам. Одна учётная запись может быть связана с одной ОС и одним доменом.

Сотрудник

Связи между сотрудниками и учётными записями создаются только вручную. Один сотрудник может быть связан с несколькими учётными записями.

Связи между активами

Активы образуют типизированный граф связей:

СвязьТип связиОписание
Хост -- Сетевой адресМногие ко многимХост может иметь несколько адресов, адрес может принадлежать нескольким хостам
Домен -- Сетевой адрес / ХостСвязь с серверомДомен ассоциируется с обслуживающими его серверами
ОС -- ХостОдин ко многимНа одном хосте может быть установлено несколько ОС
Учётная запись -- ОС / ДоменОдин к одномуОдна учётная запись на ОС или домен
Сотрудник -- Учётная записьОдин ко многимСотрудник может иметь несколько учётных записей

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

Конфигурация

Параметры подключения к базе данных и другие настройки службы Asset-keeper задаются в конфигурационном файле komrad-scanner.yaml. Подробнее см. раздел Конфигурация KOMRAD-сканера.