Аудит

Компоненти аудиту

high level audit

Всі аудито-важливі події фіксуються як події додатку (Application Events), за опрацювання цих подій відповідальна audit-lib бібліотека.

Всі події опрацьовуються асинхронно і не вносять значний вплив на швидкодію основних сценаріїв додатків.

Запис в БД відбувається за допомогою Kafka connect-api, що дозволяє виділити опрацювання повідомлень подій в окремий додаток, який використовує вбудований інструментарій Kafka. Використовується Confluent JDBC Sink

База даних та користувачі для доступу

БД <назва реєстру>_audit створюється окремо на кроці створення БД з Helm Chart’у

Користувач audit_service_user має доступ до таблиць де зберігаються всі події аудиту, права лише на вставку даних.

Події

Структура події

event

Структура таблиці для збереження

table

Основні події

Аудиту підлягають операції користувача в системі та окремі події системи. Операції користувача фіксуються на початку операції на етапі звернення до сторонніх ресурсів системи (БД, Ceph) та в кінці операції. Події системи фіксуються лише раз - в момент і в місці виникнення події.

Операції користувача

  • Спроба\Створення нового запису в БД

  • Спроба\Зміна запису в БД

  • Спроба\Видалення запису в БД

  • Запит даних які носять конфіденційний характер

Структура контексту для операцій користувачів
context_create_delete
context_select_update

Події системи

  • Отримані дані не відповідають підпису

  • Відсутній JWT токен

Структура контексту для подій системи
context_system

Візуалізація

Для візуалізації аудит логів використовується Redash.

Забеспечення пошуку по контексту подій та візуалізації поля контекст відбувається в окремих звітах в залежності від типу подій (структура контексту). Трансформація поля контекст відбувається за допомогою PostgreSQL.