Экспорт данных
Система Пуаро предоставляет возможность экспорта данных для интеграции с внешними системами, такими как SIEM, системы аналитики и другие инструменты мониторинга безопасности.
Обзор
Данные хранятся в двух базах данных:
- PostgreSQL — события центра управления, конфигурация, метаданные
- ClickHouse — данные аудита, профилирования, поведенческая аналитика
Это позволяет:
- Интегрировать данные аудита с SIEM-системами (Splunk, QRadar, ArcSight и др.)
- Строить собственные аналитические отчёты
- Экспортировать данные для архивного хранения
- Создавать кастомные дашборды
Подключение к базам данных
Подключение к PostgreSQL
Для подключения к базе данных PostgreSQL используйте следующие параметры:
| Параметр | Описание |
|---|---|
| Хост | IP-адрес или DNS-имя сервера PostgreSQL |
| Порт | 5432 (по умолчанию) |
| База данных | lector |
| Пользователь | Учётная запись для подключения |
| Пароль | Пароль учётной записи |
Подключение к ClickHouse
Для подключения к базе данных ClickHouse используйте следующие параметры:
| Параметр | Описание |
|---|---|
| Хост | IP-адрес или DNS-имя сервера ClickHouse |
| Порт | 8123 (HTTP) или 9000 (Native) |
| База данных | lector / lector_ai |
| Пользователь | Учётная запись для подключения |
| Пароль | Пароль учётной записи |
Поддерживаемые протоколы
PostgreSQL:
- TCP/IP — стандартное подключение через порт 5432
- JDBC/ODBC — через соответствующие драйверы
ClickHouse:
- HTTP/HTTPS — порт 8123, подходит для большинства интеграций
- Native — порт 9000, оптимальная производительность
- JDBC/ODBC — через соответствующие драйверы
Таблицы PostgreSQL
Таблица событий центра управления (pu_main_center)
Основная таблица событий и инцидентов системы. Содержит информацию о всех зарегистрированных событиях безопасности.
База данных: PostgreSQL Таблица: pu_main_center
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| event_num | Номер события | Integer (PK) | Уникальный идентификатор события |
| event_type | Тип события | String | Тип события (сервер, база данных, учетная запись, события lector, сетевой трафик) |
| event_name | Название события | String | Описательное название события |
| event_crit | Критичность | String | Уровень критичности (критический, высокий, средний, низкий) |
| pu_db_name | Экземпляр БД | String | Имя экземпляра базы данных |
| pu_ip | IP-адрес | String | IP-адрес источника |
| pu_db_hostname | Сервер БД | String | Имя хоста сервера БД |
| pu_db_port | Порт | Integer | Порт подключения |
| event_start_datetime | Дата/время события | DateTime | Время возникновения события |
| event_status | Статус | String | Статус обработки (новый, взят в работу, закрыт) |
| event_personal | Ответственный | Integer (FK) | Пользователь, взявший событие в работу |
| event_status_datetime | Дата изменения статуса | DateTime | Время последнего изменения статуса |
| event_info | Информация | Text | Детальное описание события |
| pu_is | Домен ИС | String | Информационная система |
| is_event_group | Групповое событие | Boolean | Признак группового события |
| event_group_count | Количество в группе | Integer | Количество событий в группе |
| pu_db_username | Пользователь БД | String | Учётная запись пользователя |
| pu_db_appname | Приложение | String | Клиентское приложение |
| pu_clienthostname | Рабочая станция | String | Хост клиента |
Типы событий:
| Значение | Описание |
|---|---|
| сервер | События сервера БД |
| база данных | События базы данных |
| учетная запись | События учётных записей |
| события lector | Системные события Пуаро |
| сетевой трафик | События сетевого мониторинга |
Уровни критичности:
| Значение | Описание |
|---|---|
| критический | Требует немедленного реагирования |
| высокий | Высокий приоритет обработки |
| средний | Стандартный приоритет |
| низкий | Информационное событие |
Пример запроса:
SELECT
event_num,
event_type,
event_name,
event_crit,
pu_db_hostname,
event_start_datetime,
event_status
FROM pu_main_center
WHERE event_status = 'новый'
AND event_start_datetime >= NOW() - INTERVAL '1 day'
ORDER BY event_start_datetime DESC
LIMIT 100Таблица отчётов о событиях (pu_mc_report)
Детализированные отчёты по событиям центра управления. Содержит логи и дополнительную информацию о событиях.
База данных: PostgreSQL Таблица: pu_mc_report
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| event_num | Номер записи | Integer (PK) | Уникальный идентификатор записи отчёта |
| event_id | ID события | Integer (FK) | Ссылка на событие в pu_main_center |
| pu_db_name | Экземпляр БД | String | Имя экземпляра базы данных |
| pu_ip | IP-адрес | String | IP-адрес источника |
| pu_db_hostname | Сервер БД | String | Имя хоста сервера |
| pu_db_port | Порт | Integer | Порт подключения |
| event_report_time | Время в логе | DateTime | Временная метка из лога |
| event_logs_type | Тип лога | String | Тип записи лога |
| event_logs_text | Текст лога | Text | Содержимое записи лога |
| pu_is | Домен ИС | String | Информационная система |
| pu_db_username | Пользователь БД | String | Учётная запись пользователя |
| pu_db_appname | Приложение | String | Клиентское приложение |
| pu_clienthostname | Рабочая станция | String | Хост клиента |
Пример запроса:
SELECT
r.event_num,
e.event_name,
r.event_report_time,
r.event_logs_type,
r.event_logs_text
FROM pu_mc_report r
JOIN pu_main_center e ON r.event_id = e.event_num
WHERE e.event_crit = 'критический'
ORDER BY r.event_report_time DESC
LIMIT 50Таблицы ClickHouse
Таблица косвенных улик (pu_raw_data)
Основная таблица с данными аудита SQL-запросов. Содержит информацию о всех отслеживаемых событиях в базах данных.
База данных: ClickHouse Схема: lector Таблица: pu_raw_data
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| pu_db_hostname | Сервер БД | String | IP-адрес или имя сервера базы данных |
| pu_db_name | Экземпляр БД | String | Имя экземпляра (SID) базы данных |
| pu_db_port | Порт | UInt64 | Порт подключения к БД |
| pu_db_username | Пользователь БД | String | Имя учётной записи пользователя |
| os_username | Пользователь ОС | String | Имя пользователя операционной системы |
| pu_clienthostname | Рабочая станция | String | Хост, с которого выполнено подключение |
| pu_db_appname | Приложение | String | Имя клиентского приложения |
| object_name | Объект БД | String | Имя объекта базы данных |
| pu_sqlparameters | Улика | String | Параметры SQL-запроса |
| pu_sqltext | SQL текст | String | Полный текст SQL-запроса |
| pu_logtime | Дата / время события | DateTime | Временная метка события |
| pu_is | Домен ИС | String | Информационная система |
| audit_type | Тип аудита | String | Тип аудита события |
| pu_db_type | Тип СУБД | String | Тип базы данных (Oracle, PostgreSQL и др.) |
Пример запроса:
SELECT
pu_logtime,
pu_db_hostname,
pu_db_username,
pu_sqltext
FROM lector.pu_raw_data
WHERE pu_logtime >= now() - INTERVAL 1 DAY
ORDER BY pu_logtime DESC
LIMIT 1000Таблица учётных записей (pu_db_users)
Справочник учётных записей баз данных с информацией о статусе и метаданных.
База данных: ClickHouse Схема: lector Таблица: pu_db_users
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| pu_db_hostname | Сервер БД | String | IP-адрес сервера базы данных |
| pu_db_name | Экземпляр БД | String | Имя экземпляра базы данных |
| pu_db_port | Порт | UInt64 | Порт подключения |
| pu_db_username | Пользователь БД | String | Имя учётной записи |
| pu_user_rank | Тип УЗ | String | Классификация учётной записи |
| account_status | Статус УЗ | String | Текущий статус (Open, Locked и др.) |
| lock_date | Дата блокировки УЗ | DateTime | Дата блокировки учётной записи |
| created | Дата создания УЗ | DateTime | Дата создания учётной записи |
| last_login | Дата последнего входа УЗ | DateTime | Время последней аутентификации |
| password_change_date | Дата смены пароля УЗ | DateTime | Дата последней смены пароля |
| pu_user_info | Описание УЗ | String | Описание учётной записи |
| pu_date_ins | Дата в реестре | DateTime | Дата добавления в реестр |
| pu_is | Домен ИС | String | Информационная система |
| pu_db_type | Тип СУБД | String | Тип базы данных |
| pu_user_id | ID | UInt64 | Уникальный идентификатор записи |
Пример запроса:
SELECT
pu_db_hostname,
pu_db_username,
account_status,
last_login
FROM lector.pu_db_users
WHERE account_status = 'OPEN'
ORDER BY last_login DESCТаблица системных привилегий (pu_catalog_privs)
Справочник системных привилегий, назначенных учётным записям.
База данных: ClickHouse Схема: lector Таблица: pu_catalog_privs
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| priv_db_type | Тип СУБД | String | Тип базы данных |
| pu_db_hostname | Сервер БД | String | IP-адрес сервера |
| pu_db_name | Экземпляр БД | String | Имя экземпляра |
| pu_db_port | Порт | UInt64 | Порт подключения |
| pu_priv_name | Название привилегии | String | Имя системной привилегии |
| priv_tab | Объект привилегии | String | Объект, к которому применяется привилегия |
| priv_data_created | Дата создания | DateTime | Дата назначения привилегии |
| priv_rank | Тип УЗ | String | Классификация учётной записи |
| privs_info | Описание | String | Описание привилегии |
| pu_priv_id | ID | UInt64 | Уникальный идентификатор |
Пример запроса:
SELECT
pu_db_hostname,
pu_priv_name,
priv_tab,
priv_data_created
FROM lector.pu_catalog_privs
WHERE priv_db_type = 'Oracle'
ORDER BY priv_data_created DESCТаблица объектов БД (pu_db_object)
Справочник объектов баз данных (таблицы, представления, процедуры и др.).
База данных: ClickHouse Схема: lector Таблица: pu_db_object
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| pu_db_hostname | Сервер БД | String | IP-адрес сервера |
| pu_db_name | Экземпляр БД | String | Имя экземпляра |
| pu_db_port | Порт | UInt64 | Порт подключения |
| pu_object_schema | Схема БД | String | Схема объекта |
| pu_object_name | Объект БД | String | Имя объекта |
| object_type | Тип объекта | String | Тип объекта (TABLE, VIEW, PROCEDURE и др.) |
| created | Дата создания | DateTime | Дата создания объекта |
| object_change_date | Дата модификации | DateTime | Дата последнего изменения |
| pu_object_rank | Тип содержимого | String | Классификация данных (ПДн, критичные и др.) |
| pu_object_profile_date | Дата проверки на ПДн | DateTime | Дата последней проверки классификации |
| pu_object_info | Описание объекта | String | Описание объекта |
| pu_is | Домен ИС | String | Информационная система |
| pu_db_type | Тип СУБД | String | Тип базы данных |
| pu_object_id | ID | UInt64 | Уникальный идентификатор |
Пример запроса:
SELECT
pu_db_hostname,
pu_object_schema,
pu_object_name,
pu_object_rank
FROM lector.pu_db_object
WHERE pu_object_rank = 'СОДЕРЖИТ ПДН'
ORDER BY created DESCТаблица объектных привилегий (pu_catalog_object_privs)
Справочник привилегий на объекты баз данных.
База данных: ClickHouse Схема: lector Таблица: pu_catalog_object_privs
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| pu_db_hostname | Сервер БД | String | IP-адрес сервера |
| pu_db_name | Экземпляр БД | String | Имя экземпляра |
| pu_db_port | Порт | UInt64 | Порт подключения |
| privelege | Тип привилегии | String | Тип привилегии (SELECT, INSERT, UPDATE и др.) |
| pu_object_schema | Схема объекта БД | String | Схема объекта |
| pu_object_name | Имя объекта БД | String | Имя объекта |
| pu_username_granted | Кому выдана | String | Получатель привилегии |
| pu_user_rank | Тип УЗ | String | Классификация учётной записи |
| priv_data_upd | Дата модификации | DateTime | Дата последнего изменения |
| priv_data_created | Дата создания | DateTime | Дата назначения привилегии |
| privs_info | Описание | String | Описание привилегии |
| priv_db_type | Тип СУБД | String | Тип базы данных |
| pu_priv_id | ID | UInt64 | Уникальный идентификатор |
Пример запроса:
SELECT
pu_db_hostname,
pu_object_name,
privelege,
pu_username_granted
FROM lector.pu_catalog_object_privs
WHERE privelege IN ('SELECT', 'INSERT', 'UPDATE', 'DELETE')
ORDER BY priv_data_created DESCТаблица профилированных объектов (pu_profiled_object)
Результаты профилирования объектов баз данных на наличие персональных данных (ПДн).
База данных: ClickHouse Схема: lector_ai Таблица: pu_profiled_object
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| profile_id | ID профиля | UInt64 | Идентификатор профиля профилирования |
| pu_object_id | ID объекта | UInt64 | Идентификатор объекта БД |
| task_id | ID задачи | UInt64 | Идентификатор задачи профилирования |
| object_name_score | Оценка имени | Float64 | Оценка на основе анализа имени объекта |
| metainfo_score | Оценка метаинфо | Float64 | Оценка на основе метаданных |
| query_score | Оценка запросов | Float64 | Оценка на основе анализа запросов |
| sample_score | Оценка выборки | Float64 | Оценка на основе анализа данных |
| final_score | Итоговая оценка | Float64 | Финальная оценка вероятности ПДн |
| is_checked | Проверено | Boolean | Признак ручной проверки |
| weights_details | Детали весов | String (JSON) | Детализация категорий ПДн |
| updated_at | Дата обновления | DateTime | Время последнего обновления |
Категории ПДн в weights_details:
| Категория | Описание |
|---|---|
| is_fio | Ф.И.О. |
| is_birth_date | Дата и место рождения |
| is_gender | Пол |
| is_citizenship | Гражданство |
| is_family | Семья |
| is_address | Адрес |
| is_contact | Контактные данные |
| is_document | Документы |
| is_identifier | Государственные идентификаторы |
| is_biometric | Биометрические данные |
| is_medical | Медицинские данные |
| is_private_life | Личная жизнь |
| is_beliefs | Взгляды и убеждения |
| is_work | Работа |
| is_education | Образование |
| is_finance | Финансовые данные |
| is_results | Результаты тестов/экзаменов |
| is_location | Геолокация |
| is_video | Наблюдение |
| is_indirect | Косвенные идентификаторы |
Уровни критичности по итоговой оценке:
| Диапазон | Уровень |
|---|---|
| < 5 | Низкий |
| 5 - 15 | Средний |
| 15 - 30 | Высокий |
| > 30 | Критический |
Пример запроса:
SELECT
o.pu_object_name,
o.pu_object_schema,
o.pu_db_hostname,
p.final_score,
p.weights_details
FROM lector_ai.pu_profiled_object p
LEFT JOIN lector.pu_db_object o ON p.pu_object_id = o.pu_object_id
WHERE p.final_score > 15
ORDER BY p.final_score DESC
LIMIT 100Таблица алертов поведенческой модели (pu_ueba_alerts)
Алерты системы поведенческого анализа (UEBA). Содержит информацию об аномальном поведении пользователей.
База данных: ClickHouse Схема: lector_ai Таблица: pu_ueba_alerts
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| pu_db_hostname | Сервер БД | String | IP-адрес сервера базы данных |
| pu_db_name | Экземпляр БД | String | Имя экземпляра базы данных |
| pu_db_port | Порт | UInt64 | Порт подключения |
| user | Пользователь БД | String | Учётная запись пользователя |
| rule | Событие | String | Название сработавшего правила |
| ts | Дата события | DateTime | Временная метка алерта |
| value | Количество | UInt64 | Числовое значение метрики |
| evidences | Улики | String | Дополнительная информация о событии |
Пример запроса:
SELECT
pu_db_hostname,
pu_db_name,
user,
rule,
ts,
value,
evidences
FROM lector_ai.pu_ueba_alerts
WHERE ts >= now() - INTERVAL 1 DAY
ORDER BY ts DESC
LIMIT 100Таблица профилей пользователей (pu_ueba_30d_dynamic_profiles)
Динамические профили поведения пользователей за 30 дней. Используются для выявления отклонений от нормального поведения.
База данных: ClickHouse Схема: lector_ai Таблица: pu_ueba_30d_dynamic_profiles
| Поле | Название | Тип данных | Описание |
|---|---|---|---|
| user | Пользователь БД | String | Учётная запись пользователя |
| pu_db_hostname | Сервер БД | String | IP-адрес сервера |
| pu_db_name | Экземпляр БД | String | Имя экземпляра |
| pu_db_port | Порт | UInt64 | Порт подключения |
| work_start_hour | Начало рабочего дня | UInt8 | Типичный час начала работы |
| work_end_hour | Конец рабочего дня | UInt8 | Типичный час окончания работы |
| avg_req_per_hour | Среднее запросов/час | Float64 | Среднее количество запросов в час |
| known_hosts | Известные хосты | Array(String) | Список хостов, с которых работает пользователь |
| top_apps | Топ приложений | Array(String) | Наиболее используемые приложения |
| pii_objects_stats | Статистика ПДн | String (JSON) | Статистика обращений к объектам с ПДн |
| pii_normal_objects | Обычные объекты ПДн | Array(String) | Объекты ПДн, к которым обычно обращается |
| pct_failed_logins | % неудачных входов | Float64 | Процент неудачных попыток аутентификации |
| avg_pii_per_day | Среднее ПДн/день | Float64 | Среднее обращений к ПДн в день |
| last_updated | Дата обновления | DateTime | Время последнего обновления профиля |
Пример запроса:
SELECT
user,
pu_db_hostname,
pu_db_name,
work_start_hour,
work_end_hour,
avg_req_per_hour,
pct_failed_logins
FROM lector_ai.pu_ueba_30d_dynamic_profiles
WHERE pct_failed_logins > 10
ORDER BY pct_failed_logins DESCИнтеграция с SIEM
Рекомендации по интеграции
- Периодический экспорт — настройте регулярную выгрузку данных из таблицы
pu_raw_dataс фильтрацией по времени - Инкрементальная загрузка — используйте поле
pu_logtimeдля получения только новых записей - Фильтрация событий — экспортируйте только релевантные события для снижения нагрузки на SIEM
Пример инкрементальной выгрузки
SELECT *
FROM lector.pu_raw_data
WHERE pu_logtime > '{last_export_time}'
ORDER BY pu_logtime ASCФорматы экспорта
ClickHouse поддерживает экспорт в различных форматах:
| Формат | Описание |
|---|---|
| JSONEachRow | JSON-строки, удобно для потоковой обработки |
| CSV | Табличный формат для импорта в другие системы |
| TabSeparated | TSV-формат |
| Native | Бинарный формат ClickHouse |
Пример экспорта в JSON:
curl -X POST 'http://clickhouse:8123/?query=SELECT * FROM lector.pu_raw_data FORMAT JSONEachRow'Безопасность
При настройке экспорта данных соблюдайте следующие требования безопасности:
- Используйте отдельную учётную запись с минимальными правами (только SELECT)
- Настройте сетевую изоляцию для подключений к ClickHouse
- Включите шифрование соединений (HTTPS/TLS)
- Ведите журнал экспортных операций
- Ограничьте объём выгружаемых данных по времени