Перейти к содержанию

Аудит действий пользователей

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):

  1. Дашборд:
    • dashboard-create — создание дашборда;
    • dashboard-delete — удаление дашборда.
  2. Визуализации:
    • card-create — создание визуализации (в составе запроса);
    • card-update — обновление визуализации (в составе запроса);
    • card-delete — удаление визуализации (из запроса).
  3. Виджеты дашборда (карточки):
    • dashboard-add-cards — размещение виджета на дашборде;
    • dashboard-remove-cards — удаление виджета с дашборда.
  4. Таблицы БД:
    • table-manual-scan — запуск ручного сканирования таблиц.
  5. Метрики:
    • metric-create — создание метрики;
    • metric-update — обновление метрики;
    • metric-delete — удаление метрики.
  6. Уведомления:
    • pulse-create — создание уведомления;
    • pulse-delete — удаление уведомления;
    • subscription-unsubscribe — отписка от рассылки;
    • subscription-unsubscribe-undo — отказ от отписки;
    • alert-unsubscribe — отписка от оповещений;
    • subscription-create — создание подписки;
    • subscription-update — обновление подписки;
    • subscription-send — отправка уведомления пользователю;
    • alert-send — отправка оповещения.
  7. Оповещения:
    • alert-create — создание оповещения;
    • alert-delete — удаление оповещения;
    • alert-update — обновление настроек оповещения.
  8. Сегменты:
    • segment-create — создание сегмента;
    • segment-update — обновление сегмента;
    • segment-delete — удаление сегмента.
  9. Учётные записи:
    • user-invited — приглашение пользователя администратором системы (создание учётной записи);
    • user-deactivated — деактивация пользователя;
    • user-reactivated — активация ранее деактивированного пользователя;
    • password-reset-initiated — попытка сброса пароля;
    • password-reset-successful — успешный сброс пароля;
    • user-update — обновление настроек пользователя;
    • user-joined — приглашённый ранее пользователь присоединился к системе (первичный вход и смена пароля).
  10. Установка:
    • install — установка системы.
  11. Работа с БД:
    • database-create — создание нового подключения к БД в Glarus BI;
    • database-delete — удаление подключения к БД;
    • database-manual-sync — выполнение ручной синхронизации с БД;
    • database-manual-scan — выполнение ручного сканирования БД;
    • database-discard-field-values — инициирован сброс значений полей;
    • database-update — обновление настроек подключения к БД.
  12. Проблемы с доступом к данным:
    • write-permission-failure — ошибка получения прав на запись;
    • update-permission-failure — ошибка получения прав на обновление данных;
    • create-permission-failure — ошибка получения прав на создание.
  13. Настройки системы:
    • setting-update — изменение настроек системы.
  14. Работа с ключами API:
    • api-key-create — создание ключа API;
    • api-key-update — обновление ключа API;
    • api-key-regenerate — перегенерация ключа API;
    • api-key-delete — удаление ключа API.
  15. Загрузка файлов:
    • upload-create — импорт данных из файла в новую таблицу;
    • upload-append — импорт данных из файла с присоединением к существующей таблице;
    • upload-replace — импорт данных из файла с заменой существующей таблицы.
  16. Настройки кэширования:
    • 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 — код запроса.

Дополнительные справочники

  1. Пользователи. Информация о пользователях сохранена в таблице core_user. Ниже перечислены только значимые для аудита поля:

    • id — идентификатор пользователя в таблице;
    • email — адрес электронной почты пользователя;
    • first_name — имя (или имя и отчество);
    • last_name — фамилия;
    • is_active — признак активности учётной записи;
    • is_superuser — признак администратора;
    • last_login — дата последнего успешного входа в систему (учитываются только факты получения нового токена авторизации; автоматический вход с "запомнить меня" в систему не обновляет это поле).
  2. Ресурсы. Информация о ресурсах доступна в представлении v_content. Полезные для аудита поля:

    • entity_qualified_id — составной идентификатор ресурса, удобен для JOIN;
    • name — название ресурса;
    • description — описание ресурса;
    • collection_id — идентификатор коллекции, в которой хранится ресурс;
    • made_public_by_user — признак общедоступной ссылки;
    • archived — признак ресурса в архиве;
    • question_viz_type — тип визуализации (для запросов);
    • question_database_id — составной идентификатор базы данных, с которой связан ресурс;
    • question_is_native — признак прямого запроса.
  3. Базы данных. Название подключения к БД, описание и тип базы данных могут быть получены из представления v_databases:

    • entity_qualified_id — составной идентификатор подключения к БД, рекомендуется для JOIN;
    • name — название подключения к БД;
    • description — описание подключения к БД;
    • database_type — тип БД.
  4. Коллекции. Информация о коллекции может быть получена из таблицы collection:

    • id — идентификатор коллекции;
    • name — название коллекции;
    • description — описание коллекции;
    • archived — признак архивной коллекции.

Создание дашборда для аудита

Вы можете получить дашборд за секунды — выполните "умный анализ" представления v_audit_log:

  1. В "Обзор" откройте "Базы данных".
  2. Найдите БД метаданных в списке (если её нет, то настройте к ней подключение).
  3. Найдите плитку "V Audit Log".
  4. Наведите курсор мыши на плитку — появятся кнопки дополнительных действий.
  5. Нажмите кнопку умного анализа (в виде молнии). — Система отобразит автоматически составленный дашборд, который даст вам представление о наборе данных и может стать отправной точкой для дальнейших изменений.

По аналогии вы можете получить результат автоматического исследования представлений v_view_log и v_query_log.

Если же вы хотите собрать дашборд "с нуля", вам следует:

  1. Создать коллекцию аудита.
  2. Создать и сохранить запрос к v_audit_log, присоединить (JOIN) таблицу пользователей core_user и другие нужные вам справочники, настроить набор полей и сортировку.
  3. Выбрать визуализацию.
  4. Сохранить запрос в коллекцию. При сохранении создать новый дашборд (сохранить дашборд в коллекцию аудита) и добавить запрос на него.
  5. Создать запросы с визуализациями для деталей и статистики. Добавить их на дашборд.
  6. Добавить фильтры на дашборд, связать с карточками и настроить интерактивность.
  7. Если требуется, добавить уведомления и оповещения о событиях.
  8. Настроить доступ других пользователей (групп) к коллекции аудита: например, запретить всем, разрешить только администраторам и сотрудникам, отвечающим за информационную безопасность.

По аналогии вы можете создать дополнительные дашборды (или вкладки на первом) с данными о просмотрах и запросах (v_view_log, v_query_log).

Конечный вид дашборда и набор виджетов будет зависеть от ваших потребностей. Вы можете присоединять в конструкторе таблицы из БД метаданных, перечисленные как справочные, для получения дополнительных деталей об изменённых и просмотренных объектах.

Пример запроса для получения детальной информации об операциях:

Запрос: данные об операциях

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

Дашборд: аудит операций

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

Пример запроса для получения детальной информации о просмотрах:

Запрос: данные о просмотрах

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

Дашборд: аудит просмотров

Дополнительная информация