Журнал действий (аудит)

Зачем
В журнале действий записывается всё, что происходит в системе: кто вошёл, кто что добавил, кто что изменил, кто что удалил. Это нужно для:
- Проверок Роспотребнадзора и внутренних аудитов — можно показать, что записи реальные, не подделаны задним числом.
- Расследований — если в журнале нашли ошибку, видно, кто её внёс, когда, и что именно поменялось.
- Восстановления — если кто-то удалил важную запись, в журнале действий есть полный снимок удалённой строки. Восстановить можно.
- Защиты сотрудников — если возникнут претензии «ты не заполнила», можно показать факт заполнения и время.
Кому виден
Журнал действий видит только супер-администратор. Главная медсестра — не видит. Это сделано намеренно: журнал действий должен быть защищён от тех, кто может быть его субъектом.
Доступ настраивается в пункте меню «Система → Журнал действий» (виден только super-admin).
Что записывается
Действия с журналами
- Создание записи — кто, когда, что записал (полный снимок данных).
- Изменение записи — кто, когда, что поменял (видно «было → стало» только по изменённым полям).
- Удаление записи — кто, когда, полный снимок удалённой строки. Удалённое всегда можно посмотреть.
- Восстановление удалённой записи.
Это работает для всех 16 журналов автоматически.
Действия со справочниками
То же самое — CRUD по справочникам (Кабинеты, Дезсредства, Оборудование и др.).
Авторизация
- Успешный вход (
login) — логин, IP, браузер. - Выход (
logout) — кто вышел. - Неудачный вход (
login_failed) — попытка зайти с неправильным паролем (видно, кого пытались взломать).
Электронная подпись
Каждое подписание записи через ЭЦП — отдельное событие в журнале (signed). Видно, кто подписал, когда, и какую именно запись.
Печать
Каждое открытие печатной формы (printed) — с кодом журнала и фильтрами. Это нужно для проверки, кто и зачем выгружал данные.
Управление правами
- Выдача роли (
role_attached) — кто, кому, какую. - Отзыв роли (
role_detached). - Выдача права (
permission_attached). - Отзыв права (
permission_detached).
Чего НЕТ в журнале действий
Из соображений безопасности и приватности исключены:
- Пароли (никогда не логируются).
- Содержимое подписи ЭЦП (только сам факт подписания).
- Токены сессий.
- Сертификаты.
Как пользоваться
Открыть журнал
Сайдбар → Система → Журнал действий.
Фильтры
- По периоду — выбрать диапазон дат.
- По пользователю — что делал конкретный сотрудник.
- По действию — только удаления, только входы, только подписания и т.п.
- По типу объекта — только записи в журнале температуры, только в кабинетах и т.п.
Быстрые теги
- Сегодня (по умолчанию) — события за сегодня.
- За неделю — последние 7 дней.
- За месяц — последние 30 дней.
- Все — без ограничения по дате.
Сортировка
По умолчанию — самые свежие сверху (ID DESC).
Открыть событие
Клик на строку — открывается страница детализации. Там:
- Полный список изменённых полей в формате «было → стало».
- IP-адрес.
- Браузер (user-agent).
- URL страницы, с которой пришло действие.
Защита от подделки
На уровне приложения
Модель журнала действий (Audit) запрещает операции UPDATE и DELETE — при попытке система выкидывает ошибку. То есть даже супер-админ через интерфейс не может изменить или удалить запись в журнале действий.
На уровне базы данных
Дополнительно, при первом разворачивании, администратор сервера выполняет команду на БД:
REVOKE UPDATE, DELETE ON audits FROM <db_user>;
После этого даже если в коде системы найдут уязвимость — изменить или удалить аудит-запись через приложение невозможно. Только напрямую через прямой доступ к БД с правами root, что фиксируется уже на уровне сервера БД.
Объём и срок хранения
Записи копятся бесконечно. Чистятся вручную при необходимости (обычно — раз в несколько лет).
На скорость работы это не влияет: таблица аудита проиндексирована, поиск по дате/пользователю/событию — мгновенный.
Связанные документы
- Роли и доступ — кто и что видит.
- Электронная подпись — что и когда подписывают.
- Окно редактирования — почему изменения после N часов блокируются.