Служба 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-сканера.