Аудит действий пользователей¶
Glarus BI собирает статистику действий пользователей, сохраняя результаты в базу метаданных приложения (Postgres, БД metabase). Администратор может подключить БД метаданных приложения (достаточно прав на чтение данных в БД) и создать дашборд для получения интересующей его информации о работе пользователей.
В данной статье показано, что контролируется, где хранятся соответствующие данные и даётся пример настройки дашборда для аудита.
Операции пользователей¶
Информация о действиях, совершаемых пользователями и приводящих к изменению данных в системе, может быть получена из представления v_audit_log:
id— идентификатор записи;topic— операция;timestamp— информация о дате и времени операции;end_timestamp— информация о времени завершения (только для отдельных продолжительных операций, в большинстве случаев записывается NULL);user_id— идентификатор субъекта (ФИО, email и другие атрибуты пользователя не присутствуют в отображении, но могут быть получены после присоединения таблицыcore_user);entity_type— ресурс доступа, в отношении которого было выполнено действие (БД, учётная запись, настройка, дашборд…);entity_id— идентификатор ресурса, который был затронут операцией;entity_qualified_id— составной идентификатор ресурса, который был затронут операцией, удобен для присоединения справочников;details— детальная информация о сути изменений (JSON). Детали специфичны для различных ресурсов доступа.
Регистрируемые операции (topics):
- Дашборд:
dashboard-create— создание дашборда;dashboard-delete— удаление дашборда.
- Визуализации:
card-create— создание визуализации (в составе запроса);card-update— обновление визуализации (в составе запроса);card-delete— удаление визуализации (из запроса).
- Виджеты дашборда (карточки):
dashboard-add-cards— размещение виджета на дашборде;dashboard-remove-cards— удаление виджета с дашборда.
- Таблицы БД:
table-manual-scan— запуск ручного сканирования таблиц.
- Метрики:
metric-create— создание метрики;metric-update— обновление метрики;metric-delete— удаление метрики.
- Уведомления:
pulse-create— создание уведомления;pulse-delete— удаление уведомления;subscription-unsubscribe— отписка от рассылки;subscription-unsubscribe-undo— отказ от отписки;alert-unsubscribe— отписка от оповещений;subscription-create— создание подписки;subscription-update— обновление подписки;subscription-send— отправка уведомления пользователю;alert-send— отправка оповещения.
- Оповещения:
alert-create— создание оповещения;alert-delete— удаление оповещения;alert-update— обновление настроек оповещения.
- Сегменты:
segment-create— создание сегмента;segment-update— обновление сегмента;segment-delete— удаление сегмента.
- Учётные записи:
user-invited— приглашение пользователя администратором системы (создание учётной записи);user-deactivated— деактивация пользователя;user-reactivated— активация ранее деактивированного пользователя;password-reset-initiated— попытка сброса пароля;password-reset-successful— успешный сброс пароля;user-update— обновление настроек пользователя;user-joined— приглашённый ранее пользователь присоединился к системе (первичный вход и смена пароля).
- Установка:
install— установка системы.
- Работа с БД:
database-create— создание нового подключения к БД в Glarus BI;database-delete— удаление подключения к БД;database-manual-sync— выполнение ручной синхронизации с БД;database-manual-scan— выполнение ручного сканирования БД;database-discard-field-values— инициирован сброс значений полей;database-update— обновление настроек подключения к БД.
- Проблемы с доступом к данным:
write-permission-failure— ошибка получения прав на запись;update-permission-failure— ошибка получения прав на обновление данных;create-permission-failure— ошибка получения прав на создание.
- Настройки системы:
setting-update— изменение настроек системы.
- Работа с ключами API:
api-key-create— создание ключа API;api-key-update— обновление ключа API;api-key-regenerate— перегенерация ключа API;api-key-delete— удаление ключа API.
- Загрузка файлов:
upload-create— импорт данных из файла в новую таблицу;upload-append— импорт данных из файла с присоединением к существующей таблице;upload-replace— импорт данных из файла с заменой существующей таблицы.
- Настройки кэширования:
cache-config-update— обновление настроек кэширования.
Информация о просмотрах¶
Информация о просмотрах может быть получена из представления v_view_log:
id— идентификатор записи журнала;timestamp— дата и время события;user_id— идентификатор пользователя, который выполнил просмотр;entity_type— ресурс доступа, который был просмотрен;entity_id— идентификатор ресурса доступа;entity_qualified_id— составной идентификатор ресурса, удобен для присоединения справочников (JOIN).
Ресурсы доступа:
card— карточка (запрос, визуализация);collection— коллекция;dashboard— дашборд;table— таблица.
Выполненные запросы¶
Информация о выполненных запросах доступна в представлении v_query_log:
entity_id— идентификатор записи;started_at— дата и время запуска запроса;running_time_seconds— длительность выполнения запроса;result_rows— число строк в результате;is_native— признак прямого запроса;query_source— площадка, откуда запрос был запущен (дашборд, конструктор запросов и т.д.);error— ошибка (если запрос завершился с ошибкой);user_id— идентификатор пользователя;card_id— идентификатор ресурса "запрос" в Glarus BI;card_qualified_id— составной идентификатор ресурса "запрос" в Glarus BI;dashboard_id— идентификатор дашборда;dashboard_qualified_id— составной идентификатор дашборда;pulse_id— идентификатор уведомления;database_id— идентификатор БД;database_qualified_id— составной идентификатор БД;query— код запроса.
Дополнительные справочники¶
-
Пользователи. Информация о пользователях сохранена в таблице
core_user. Ниже перечислены только значимые для аудита поля:id— идентификатор пользователя в таблице;email— адрес электронной почты пользователя;first_name— имя (или имя и отчество);last_name— фамилия;is_active— признак активности учётной записи;is_superuser— признак администратора;last_login— дата последнего успешного входа в систему (учитываются только факты получения нового токена авторизации; автоматический вход с "запомнить меня" в систему не обновляет это поле).
-
Ресурсы. Информация о ресурсах доступна в представлении
v_content. Полезные для аудита поля:entity_qualified_id— составной идентификатор ресурса, удобен для JOIN;name— название ресурса;description— описание ресурса;collection_id— идентификатор коллекции, в которой хранится ресурс;made_public_by_user— признак общедоступной ссылки;archived— признак ресурса в архиве;question_viz_type— тип визуализации (для запросов);question_database_id— составной идентификатор базы данных, с которой связан ресурс;question_is_native— признак прямого запроса.
-
Базы данных. Название подключения к БД, описание и тип базы данных могут быть получены из представления
v_databases:entity_qualified_id— составной идентификатор подключения к БД, рекомендуется для JOIN;name— название подключения к БД;description— описание подключения к БД;database_type— тип БД.
-
Коллекции. Информация о коллекции может быть получена из таблицы
collection:id— идентификатор коллекции;name— название коллекции;description— описание коллекции;archived— признак архивной коллекции.
Создание дашборда для аудита¶
Вы можете получить дашборд за секунды — выполните "умный анализ" представления v_audit_log:
- В "Обзор" откройте "Базы данных".
- Найдите БД метаданных в списке (если её нет, то настройте к ней подключение).
- Найдите плитку "V Audit Log".
- Наведите курсор мыши на плитку — появятся кнопки дополнительных действий.
- Нажмите кнопку умного анализа (в виде молнии). — Система отобразит автоматически составленный дашборд, который даст вам представление о наборе данных и может стать отправной точкой для дальнейших изменений.
По аналогии вы можете получить результат автоматического исследования представлений v_view_log и v_query_log.
Если же вы хотите собрать дашборд "с нуля", вам следует:
- Создать коллекцию аудита.
- Создать и сохранить запрос к
v_audit_log, присоединить (JOIN) таблицу пользователейcore_userи другие нужные вам справочники, настроить набор полей и сортировку. - Выбрать визуализацию.
- Сохранить запрос в коллекцию. При сохранении создать новый дашборд (сохранить дашборд в коллекцию аудита) и добавить запрос на него.
- Создать запросы с визуализациями для деталей и статистики. Добавить их на дашборд.
- Добавить фильтры на дашборд, связать с карточками и настроить интерактивность.
- Если требуется, добавить уведомления и оповещения о событиях.
- Настроить доступ других пользователей (групп) к коллекции аудита: например, запретить всем, разрешить только администраторам и сотрудникам, отвечающим за информационную безопасность.
По аналогии вы можете создать дополнительные дашборды (или вкладки на первом) с данными о просмотрах и запросах (v_view_log, v_query_log).
Конечный вид дашборда и набор виджетов будет зависеть от ваших потребностей. Вы можете присоединять в конструкторе таблицы из БД метаданных, перечисленные как справочные, для получения дополнительных деталей об изменённых и просмотренных объектах.
Пример запроса для получения детальной информации об операциях:

Пример дашборда аудита, вкладка операций:

Слева расположен интерактивный список операций, справа — блок деталей, на гистограмме снизу отображается активность за выбранный период. Фильтры связаны с карточками. Щелчок по записи в списке событий вызывает открытие деталей или фильтрацию по выбранному признаку.
Пример запроса для получения детальной информации о просмотрах:

Пример дашборда аудита, вкладка просмотров:
