В основе большинства современных информационных систем лежит трехзвенная архитектура, основывающаяся на схеме «Клиент — Сервер приложения — Сервер данных», причем, как правило, задача мониторинга операций, выполняемых пользователем, решается на уровне сервера приложений. В этом случае под аудитом подразумеваются такие действия, как отслеживание различных попыток входа в систему, регистрация восстановления или создания резервной копии базы данных, регистрация времени создания или удаления базы данных и т. п.
Преимущество аудита на уровне сервера заключается в том, что он играет некоторую роль в обеспечении безопасности системы, так как, используя этот подход, можно предотвратить действия злоумышленника, отслеживая неудачные или несанкционированные попытки входа в систему [1]. Но, несмотря на важную роль мониторинга данных на уровне сервера, существует необходимость контроля изменений данных на уровне операций, производимых в самой базе данных посредством различных SQL-команд.
Аудит на уровне базы данных
Обычно у каждой информационной системы есть администратор, который сопровождает ее с помощью SQL-интерфейса, и его действия не фиксируются в журнале операций, производимых на уровне сервера. Таким образом сложно отследить возможные несанкционированные действия со стороны администратора. Также сама система не может быть полностью защищена от уязвимостей, позволяющих ее взломать, что может привести к нежелательным изменениям в базе данных, которые не будут отображаться в журнале событий [2].
Кроме всевозможных несанкционированных действий, которые могут быть применены к базе данных, очень часто появляется необходимость произвести прямые изменения в базе данных или ее структуре посредством SQL-команд, например, таких как добавление, изменение или удаление таблиц и данных в них. Очевидным является то, что такие операции необходимо контролировать, так как есть вероятность того, что они окажутся некорректными, например, будет удалена не та таблица или неверно изменены какие-нибудь данные.
Все вышеперечисленные случаи говорят о том, что аудита событий на уровне сервера недостаточно, и также необходим аудит операций на уровне базы данных. Он может послужить полезным инструментом для повышения уровня безопасности системы и уменьшения ошибок при ее эксплуатации.
При выборе механизма, обеспечивающего отслеживание событий на уровне данных, стоит учитывать, что одним из главных критериев выбора является минимальное влияние этого механизма на производительность системы.