← На главную стендаОткрыть протокол ЛР-3

ЛР-3. Аудит действий пользователей PostgreSQL

БСУБД · transport_lab · 08.10.2026

Логика работы: ЛР-1 — какие данные защищаем → ЛР-2 — кто и что может делать → ЛР-3 — как подтвердить, кто и что делал.

1. Цель

2. Что уже настроено

PostgreSQL ведёт учебный DB-side audit: connect/disconnect, command_tag, ошибки доступа, duration, query_id и объект из плана auto_explain. Gateway отдельно пишет HTTP-след: rid, method, URI, status.

query_id — идентификатор нормализованного запроса / его структуры, а не уникальный идентификатор конкретного выполнения. Для корреляции конкретного события используются также время, DB user, экземпляр и другие признаки аудита.

Важно: студент не читает файлы журналов и не получает host/container access. Демонстрацию evidence выполняет преподаватель.

3. Правила

4. Вход

  1. Откройте https://ksoib.ru.
  2. Выберите свой sNN.
  3. В Adminer: PostgreSQL, пользователь sNN_student, БД transport_lab.
  4. Откройте «SQL-запрос».

5. Шаг 1. Начало эксперимента

SQL
SELECT clock_timestamp() AS lab03_started_at, current_user, current_database();
В протокол: время начала, current_user, current_database.

6. Шаг 2. Разрешённый SELECT — bookings

SQL
SELECT booking_ref, fare_amount, currency, status FROM transport.bookings ORDER BY id LIMIT 5;
Ожидается: успешный результат.
В протокол: объект transport.bookings и краткий результат.

7. Шаг 3. Разрешённый SELECT — payments

SQL
SELECT payment_ref, amount, currency, method, status FROM transport.payments ORDER BY id LIMIT 5;
Ожидается: успешный результат.
В протокол: объект transport.payments.

8. Шаг 4. Запрещённый UPDATE

SQL
UPDATE transport.bookings SET status=status WHERE false;
Ожидается: permission denied.
В протокол: факт отказа и объект transport.bookings.

9. Шаг 5. Запрещённый DELETE

SQL
DELETE FROM transport.payments WHERE false;
Ожидается: permission denied.
В протокол: факт отказа и объект transport.payments.

10. Шаг 6. Конец эксперимента

SQL
SELECT clock_timestamp() AS lab03_finished_at, current_user;
В протокол: время завершения. Интервал нужен для корреляции по времени.

11. Шаг 7. Сначала прогноз

До демонстрации преподавателя заполните прогноз:

ДействиеОжидаемый результатЧто должно быть видно в DB audit
SELECT bookingsуспехпользователь, SELECT, объект bookings
SELECT paymentsуспехпользователь, SELECT, объект payments
UPDATE bookingsотказпользователь, ошибка доступа, объект bookings
DELETE paymentsотказпользователь, ошибка доступа, объект payments

12. Шаг 8. Демонстрация преподавателя

Преподаватель показывает вывод одной штатной команды. Raw-журналы PostgreSQL студенту не выдаются.

В протокол: экземпляр sNN, пользователя sNN_student, результат SELECT к transport.bookings и показанный query_id, результат SELECT к transport.payments и показанный query_id, событие permission denied (PASS значит: отказ зафиксирован аудитом), идентификацию экземпляра и строку изоляции как на экране. Если изоляция не выполнялась, не записывайте «утечки нет».

query_id — идентификатор нормализованного запроса / его структуры, а не уникальный идентификатор конкретного выполнения. Для корреляции конкретного события используются также время, DB user, экземпляр и другие признаки аудита.

Показанный query_id — fingerprint запроса штатного smoke, а не обязательно тот же номер, что у вашего SELECT в Adminer, если текст запроса другой. Число может быть отрицательным: PostgreSQL пишет этот идентификатор как знаковый 64-битный. Минус не означает ошибку.

Не копировать в протокол: пароль, полный SQL, Query Text.

13. Gateway log и DB audit

ПризнакGateway diagnostic logPostgreSQL DB audit
УровеньHTTPСУБД
Основные поляrid, method, URI, statusDB user, command tag, error, duration, object, query_id
Объект таблицынет гарантииопределяется на стороне БД
Общий сквозной IDотдельный ridобщего ID с gateway нет
Корреляциявремя + экземплярвремя + DB user + экземпляр

Ответьте: почему один только HTTP-журнал не доказывает, какая таблица реально была затронута внутри СУБД?

14. Вывод

5–8 предложений: какие действия выполнялись; какие разрешены/запрещены; как связать событие с пользователем и объектом; отличие gateway от DB audit; почему аудит не заменяет RBAC и не делает систему SIEM/DAM.

15. Что сдавать

Заполненный протокол ЛР-3: ФИО, стенд, две отметки времени, 2 SELECT, 2 отрицательных теста, прогноз, наблюдения преподавательской демонстрации, сравнение журналов и вывод.

Пароль в протокол не включать.