Возможно, вы могли бы заставить свои триггеры записывать данные аудита в очередь. Тогда у вас может быть запланированное задание, которое будет запускаться каждые несколько минут, чтобы взять данные аудита из очереди и записать их в хранилище аудита.

есть таблица аудита в нашей базе данных. Записи в эту таблицу выполняются с помощью триггеров.

В настоящее время нет ничего, что мешало бы пользователю войти на сервер базы данных, открыть таблицу из среды управления и изменить данные в таблице аудита.

Каковы возможные механизмы, которые могут предотвратить (или, по крайней мере, обнаружить) случаи фальсификации данных аудита?

Я думаю о добавлении одного столбца в таблицу аудита, который должен содержать некоторый хэш, рассчитанный на основе значений, введенных в эту строку. Однако, поскольку аудит выполняется с использованием триггера, злоумышленник может открыть любой триггер и посмотреть логику, по которой вычисляется этот хэш.

РЕДАКТИРОВАТЬ:

Я не был достаточно ясен. Пользователь приложения не имеет доступа к базе данных. Я имел в виду какого-то пользователя, такого как администратор БД, с соответствующими правами на базу данных. Тем не менее, если этот администратор БД входит в систему и имеет права на изменение таблицы аудита, я хотел бы иметь какой-то механизм, чтобы по крайней мере обнаружить это вмешательство.

Ответы на вопрос(5)

Ваш ответ на вопрос