AUDIT в Oracle SQL — как вести аудит действий пользователей

🟢 AUDIT в Oracle SQL. Введение

AUDIT в Oracle SQL используется для включения журналирования действий пользователей. Это мощный механизм безопасности, который позволяет отслеживать:

  • Кто выполнил тот или иной SQL-запрос

  • Когда был доступ к таблице или схеме

  • Какие объекты были изменены или просмотрены

Функция AUDIT особенно полезна в системах, где важна прозрачность и контроль доступа — например, в банках, госпредприятиях, юридических базах.


🔤 Написание

sql
AUDIT имя_действия
[BY имя_пользователя]
[ON имя_объекта]
[WHENEVER [NOT] SUCCESSFUL];

🔄 Где используется

  • Для отслеживания действий (SELECT, INSERT, UPDATE, DELETE)

  • При доступе к определённым таблицам или представлениям

  • Для журналирования DDL-операций (CREATE, DROP, ALTER)

  • В рамках политик безопасности и соответствия стандартам (например, GDPR, SOX)

  • Для ведения аудита в административных и финансовых системах


🧪 10 Примеров использования AUDIT

1️⃣ Аудит всех SELECT-запросов по таблице

sql
AUDIT SELECT ON employees;

Oracle будет логировать каждый SELECT по таблице employees.


2️⃣ Аудит только успешных попыток удаления

sql
AUDIT DELETE ON orders WHENEVER SUCCESSFUL;

Фиксируются только успешные удалённые строки.


3️⃣ Аудит операций только для конкретного пользователя

sql
AUDIT INSERT ON salaries BY hr;

Журналируется, если пользователь hr вставляет строки в таблицу salaries.


4️⃣ Аудит всех DDL-операций в схеме

sql
AUDIT TABLE;

Фиксирует CREATE, DROP, TRUNCATE и другие действия с таблицами.


5️⃣ Аудит входов в базу данных

sql
AUDIT SESSION;

Журналируются все логины (успешные и неуспешные).


6️⃣ Аудит выполнения SQL через PL/SQL

sql
AUDIT EXECUTE PROCEDURE BY hr;

Журналируется вызов хранимых процедур пользователем hr.


7️⃣ Проверка включённого аудита

sql
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OBJECT_NAME = 'EMPLOYEES';

Выводит настройки аудита по конкретной таблице.


8️⃣ Просмотр зафиксированных действий

sql
SELECT * FROM DBA_AUDIT_TRAIL
WHERE USERNAME = 'HR' AND ACTION_NAME = 'SELECT';

История действий по пользователю и типу действия.


9️⃣ Отключение аудита

sql
NOAUDIT SELECT ON employees;

Отключает аудит SELECT для таблицы employees.


🔟 Удаление аудиторских записей (опционально)

sql
DELETE FROM AUD$ WHERE USERNAME = 'HR';

Очистка журнала (если разрешено политикой безопасности).


🧩 Заключение

Оператор AUDIT в Oracle SQL — это мощный инструмент для контроля и прозрачности, позволяющий отслеживать любые действия пользователей и DML/DDL-операции. Он необходим для:

  • Обеспечения безопасности

  • Соответствия внешним стандартам

  • Расследования инцидентов и анализа истории действий

💡 Важно:

  • Аудит должен быть включён системно (AUDIT_TRAIL параметр в init.ora)

  • Логи хранятся в системной таблице AUD$

  • Избыточный аудит может замедлить БД — применяйте выборочно


🔜 Следующая статья:

ASC в Oracle SQL — как управлять направлением сортировки данных


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии