Files
2026-05-12 17:05:24 +00:00

96 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Журнал аудита
Каждое изменение в системе фиксируется в **журнале аудита** — таблице,
в которой записано: кто, что, когда, что было до и после.
Доступ — в разделе **«Аудит»** в навигации (для пользователей с правом
INTERNAL и выше).
## Что попадает в журнал
- Создание, обновление, закрытие записей справочников (`CREATE` / `UPDATE` / `CLOSE`)
- Создание, обновление, удаление справочников
- Schema drafts: создание, отправка на ревью, approve, reject, publish
- Изменения настроек webhook-подписок
Технические события (запуск pod'ов, выполнение SQL миграций) — НЕ
попадают в этот аудит. Они в системных логах.
## Структура записи аудита
| Поле | Что значит |
|---|---|
| **Время** | Когда произошло событие (точное время сервера) |
| **Пользователь** | Кто сделал изменение (берётся из JWT-токена) |
| **Справочник** | Какой справочник затронут |
| **Бизнес-ключ** | Какая конкретно запись (для record-операций) |
| **Действие** | `CREATE`, `UPDATE`, `CLOSE`, `DRAFT_APPROVE` и т.п. |
| **Было / Стало** | Diff: что изменилось (для UPDATE) |
| **Trace ID** | Технический идентификатор для корреляции с логами |
## Фильтрация
В UI — toolbar с фильтрами:
- **Справочник** — конкретный или все
- **Действие** — `CREATE` / `UPDATE` / `CLOSE` и т.д.
- **Пользователь** — кто сделал
- **Бизнес-ключ** — конкретная запись
- **Период** — диапазон дат (используй DateRangePicker)
Применяется автоматически при изменении любого фильтра. URL обновляется —
можно поделиться ссылкой «аудит за вчера на ground_station».
## Что искать в аудите
### «Кто закрыл запись X?»
Фильтр: справочник = `<имя>`, бизнес-ключ = `<код>`, действие = `CLOSE`.
Видишь оператора, время, причину (если была указана).
### «Что менялось вчера в spacecraft?»
Фильтр: справочник = `spacecraft`, период = вчера. Сортировка по времени.
### «Я подозреваю некорректное изменение»
Найди запись, посмотри **diff** колонки «Было / Стало». Если изменение
действительно неверное — раскрой запись, кликни **«Восстановить эту
версию»** (создаст новую активную версию из исторической).
### «Кто часто меняет конкретный справочник?»
Фильтр: справочник + период (последний месяц). В UI отсортируй по
пользователю — видишь топ-операторов.
## Экспорт
Кнопка **«Экспортировать»** в правом верхнем — выгрузка в CSV отфильтрованных
записей. Полезно для:
- Отчётов руководству («что изменилось за квартал»)
- Compliance-проверок
- Анализа в Excel / BI
CSV содержит те же колонки, что в UI, плюс полные diff'ы в JSON-формате.
## Что НЕЛЬЗЯ найти в аудите
- **Чтения** (`READ`) — никто их не записывает (объём огромен, информативная
ценность низкая)
- **Изменения настроек системы** на уровне kubernetes / Vault / SSL —
это в системных логах ops-команды
- **Изменения вне Ordinis** — если внешняя система сделала свою копию
справочника и поменяла её, в нашем аудите этого нет
## Срок хранения
По умолчанию — **бессрочно**. Журнал растёт, но не очищается автоматически.
Если требуется retention policy (например, удалять старше 5 лет по GDPR) —
свяжись с ответственным за систему, это настраивается на уровне БД.
## Trace ID — как использовать
Если в audit-записи есть trace ID — это можно сопоставить с логами
бэкенда. Полезно когда ошибка произошла на стороне сервера и нужно
понять глубинную причину. Скопируй trace ID, отдай в support / ops.