Oracle DB: Аудит
Standard Audit (12.1 и ниже)
Доступ на управление аудитом
grant AUDIT_ADMIN to <user> grant AUDIT_VIEWER to <user>
Параметры
AUIDIT_TRAIL = NONE | OS | DB [, EXTENDED] | XML [, EXTENDED] NONE - аудит выключен (значение по умолчанию) OS - записи аудита пишутся в файлы DB - записи аудита пишутся в таблицу SYS.AUD$, кроме тех что всегда пишутся в файлы если база открыта в режиме READ ONLY, то аудит будет записываться в файлы DB,EXTENDED - аналогично DB, но в таблице аудита дополнительно заполняются поля SQL_TEXT, SQL_BIND XML - записи аудита пишутся в файлы в формате XML XML,EXTENDED - аналогично XML, но в файлы дополнительно пишутся поля SQL_TEXT, SQL_BIND AUDIT_SYS_OPERATIONS = FALSE | TRUE # включение/выключение аудита операций, для пользователей подключенных с правами SYSDBA или SYSOPER AUDIT_SYSLOG_LEVEL = 'facility_clause.priority_clause' # данный параметр перекрывает параметр AUIDIT_TRAIL, данные аудита пишутся в syslog facility_clause::= { USER | LOCAL[0 | 1 | 2 | 3 | 4 | 5 | 6 | 7] | SYSLOG | DAEMON | KERN | MAIL | AUTH | LPR | NEWS | UUCP | CRON } priority_clause::= { NOTICE | INFO | DEBUG | WARNING | ERR | CRIT | ALERT | EMERG }
Проверка параметров аудита
select name,value from v$parameter where name like 'audit_%'; NAME VALUE ------------------------------ ---------------------------------------- audit_sys_operations FALSE audit_file_dest /opt/oracle/admin/mydb1/adump audit_syslog_level audit_trail NONE
Просмотр политик аудита
-- все политики аудита определенные в базе данных select * from DBA_AUDIT_POLICIES; -- все политики аудита определенные в базе данных на уровне столбцов select * from DBA_AUDIT_POLICY_COLUMNS; -- все опции аудита select * from ALL_DEF_AUDIT_OPTS; -/-: no default auditing S/-: auditing whenever successful -/S: auditing whenever not successful Column Datatype NULL Description ALT VARCHAR2(3) Auditing ALTER WHENEVER SUCCESSFUL / UNSUCCESSFUL AUD VARCHAR2(3) Auditing AUDIT WHENEVER SUCCESSFUL / UNSUCCESSFUL COM VARCHAR2(3) Auditing COMMENT WHENEVER SUCCESSFUL / UNSUCCESSFUL DEL VARCHAR2(3) Auditing DELETE WHENEVER SUCCESSFUL / UNSUCCESSFUL GRA VARCHAR2(3) Auditing GRANT WHENEVER SUCCESSFUL / UNSUCCESSFUL IND VARCHAR2(3) Auditing INDEX WHENEVER SUCCESSFUL / UNSUCCESSFUL INS VARCHAR2(3) Auditing INSERT WHENEVER SUCCESSFUL / UNSUCCESSFUL LOC VARCHAR2(3) Auditing LOCK WHENEVER SUCCESSFUL / UNSUCCESSFUL REN VARCHAR2(3) Auditing RENAME WHENEVER SUCCESSFUL / UNSUCCESSFUL SEL VARCHAR2(3) Auditing SELECT WHENEVER SUCCESSFUL / UNSUCCESSFUL UPD VARCHAR2(3) Auditing UPDATE WHENEVER SUCCESSFUL / UNSUCCESSFUL REF CHAR(3) This column is obsolete and maintained for backward compatibility. The value of this column is always -/- EXE VARCHAR2(3) Auditing EXECUTE WHENEVER SUCCESSFUL / UNSUCCESSFUL FBK VARCHAR2(3) Auditing FLASHBACK WHENEVER SUCCESSFUL / UNSUCCESSFUL REA VARCHAR2(3) Auditing READ WHENEVER SUCCESSFUL / UNSUCCESSFUL -- displays audit trail entries produced by AUDIT EXISTS and AUDIT NOT EXISTS select * from DBA_AUDIT_EXISTS; -- история чистки аудита select * from DBA_AUDIT_MGMT_CLEAN_EVENTS; -- задачи чистки аудита select * from DBA_AUDIT_MGMT_CLEANUP_JOBS; -- прочие системные параметры аудита select * from DBA_AUDIT_MGMT_CONFIG_PARAMS;
Настройка аудита на уровне базы
AUDIT ALL PRIVILEGES BY NORMAL; AUDIT SELECT ON DBA_TABLES BY NORMAL; AUDIT SELECT ON my_user.my_table BY NORMAL;
-- справочник ACTION кодов аудита select * from AUDIT_ACTIONS
Просмотр записей аудита
select * from SYS.AUD$; select * from DBA_AUDIT_OBJECT; select * from DBA_AUDIT_TRAIL;
Fine-Grained Audit
SELECT * FROM SYS.FGA_LOG$;
Unified Audit (12.2 и выше)
В версии Oracle Database 12c и выше реализован новый механизм аудита Unified Audit
дополнительные параметры для Unified Audit
unified_audit_common_systemlog unified_audit_sga_queue_size unified_audit_systemlog
На уровне базы данных Unified Audit настраивается с помощью политик аудита. По умолчанию, в базе есть предварительно созданные политики аудита.
Обслуживание аудита
Ссылки по теме:
- Как обслуживать таблицу AUD$ : Oracle
- Administering the Audit Trail
- Практическое администрирование Oracle - Аудит. Часть1.
- Практическое администрирование Oracle - Аудит. Часть2.
- Oracle® Database Security Guide 11g Release 2 (11.2)
Типы аудита
- AUDIT_TRAIL_ALL, все типы аудита
- AUDIT_TRAIL_AUD_STD, стандартная таблица аудита, AUD$
- AUDIT_TRAIL_FGA_STD, Fine-grained, таблица FGA_LOG$
- AUDIT_TRAIL_UNIFIED
- AUDIT_TRAIL_XML
- AUDIT_TRAIL_OS
Ручная чистка стандартного аудита
-- определение размера таблиц SELECT segment_name, round(bytes/1024/1024/1024,1) as sz_gb FROM DBA_SEGMENTS WHERE SEGMENT_NAME IN ('AUD$', 'FGA_LOG$'); -- определение диапазона дат и количества записей col t1 format a30; col t2 format a30; SELECT min(ntimestamp#) t1, max(ntimestamp#) t2, count(*) count FROM SYS.AUD$; SELECT min(ntimestamp#) t1, max(ntimestamp#) t2, count(*) count FROM SYS.FGA_LOG$; -- проверка параметров автоматической чистки SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS; PARAMETER_NAME PARAMETER_VALUE AUDIT_TRAIL ------------------------------ -------------------- ------------------------------------------------------------------------------------ DEFAULT CLEAN UP INTERVAL 24 STANDARD AUDIT TRAIL DEFAULT CLEAN UP INTERVAL 24 FGA AUDIT TRAIL -- если присутствуют данные параметры, то необходимо переинициализировать автоматическую чистку -- если параметры отсутствуют, то необходимо инициализировать автоматическую чистку -- переинициализация автоматической чистки BEGIN DBMS_AUDIT_MGMT.DEINIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD ); DBMS_AUDIT_MGMT.INIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, DEFAULT_CLEANUP_INTERVAL => 24*7 // интервал задается в часах, допустимый диапазон [1-999] ); END; -- чистка до заданной даты -- необходимо учитывать, что чистка может привести к переполнению каталога с архив-логами -- необходимо определить диапазон данных аудита и выбирать дату так, чтобы в одну итерацию чистки не попадало слишком много данных BEGIN SYS.DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP ( AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, LAST_ARCHIVE_TIME => SYSTIMESTAMP - <retention_days> ); SYS.DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL ( AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, USE_LAST_ARCH_TIMESTAMP => TRUE ); commit; END; /