|
Аудит позволят нам видеть что делают и
когда пользователи системы. Даже самые
обычные действия, которые мы не можем
запретить пользователям, могут быть опасны.
Нам остается только знать о них.
Oracle позволяет вести аудит либо в таблице
sys.aud$, либо в файловой системе. Для разных
случаев можно выбирать наиболее подходящие
расположение. Например, анализировать
постфактум конечно лучше в таблице. А если
хочется оперативно реагировать - то в
файловой системе. Далее я описываю именно логи
в файловой системе. Для их обработки я
применяю специально написанное средство - mlogsurfer.
Итак, необходимо включить
аудит, а потом настроить правила.
Правила могут быть самые разные. Читать
про синтаксис команды audit. Включить
аудит на успешное или неуспешное вхождение
в БД (или отключение от БД) пользователей SQL>
AUDIT SESSION; SQL>AUDIT SESSION BY scott,
dsvolk;
Далее я часто буду ссылать на файл,
содержащий соответствие
действие и кодов аудита. Аудит
на уровне DML Чтобы включить аудит на доступ
к данным: SQL>AUDIT SELECT TABLE, INSERT
TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT
SUCCESSFUL
Или для конкретной таблицы
SQL> AUDIT SELECT , INSERT on scott.test BY ACCESS Вот
как выглядит результат: SESSIONID: "212" ENTRYID: "2" STATEMENT: "7" USERID: "SYSTEM" TERMINAL: "pts/14" ACTION: "3" RETURNCODE: "0" OBJ$CREATOR: "SCOTT" OBJ$NAME: "TEST" OS$USERID: "oracle" PRIV$USED: 47 где
в поле USER_ID написано кто обращался (SYSTEM), в
поле OBJ$CREATOR владелец объекта к которому
обращались, в поле OBJ$NAME наименование
объекта (TEST), способ обращения в поле ACTION 3 -
SELECT Другой вариант: SQL> audit select on smap.message by session; И
при обращении, результат выглядит как: SESSIONID: "4082453" ENTRYID: "1" STATEMENT: "7" USERID: "SMAP" TERMINAL: "pts/ta" ACTION: "103" RETURNCODE: "0"
OBJ$CREATOR: "SMAP" OBJ$NAME: "MESSAGE" SES$ACTIONS: "---------S------" SES$TID: "116939" OS$USERID: "oracle" Обратите
внимание, что action = 103, вместо 3 как в примере
выше. Action 103 оказалась совсем не простой.
Расшифровка поля SES$ACTIONS достойна
отдельного детектива What
is Audit Action 103 ? К сожалению, оказалось, что
если включить аудит в файл, то audit by session
вызывает появление количества строк
равного количеству обращений, т.е. в этом
смысле не отличается от audit by access. Аудит на уровне DDL
Чтобы включить аудит на уровне создания
исправления объектов можно выполнить
следующие действия: SQL> audit
procedure;
SQL> audit trigger;
SQL> audit table;
SQL> audit view;
Результат будет выглядеть таким образом: Mon Apr 21 09:05:30 2003
SESSIONID: "215" ENTRYID: "2" STATEMENT: "9" USERID: "SCOTT" TERMINAL: "pts/14" ACTION: "24" RETURNCODE: "0" OBJ$CREATOR: "SCOTT" OBJ$NAME: "P" OS$USERID: "oracle" PRIV$USED: 140 Что
означает: пользователь scott выполнил
создание (action 24 - создание процедуры)
объекта P. Аудит на уровне
привилегий Чтобы подвергать аудиту все
системные привилегии нужно выдать команду: SQL> audit system grant; Вот
так выглядит результат команды grant connect to scott
(114 - grant role) Mon Apr 21 09:33:06 2003
SESSIONID: "216" ENTRYID: "2" STATEMENT: "8" USERID: "SYSTEM" TERMINAL: "pts/14" ACTION: "114" RETURNCODE: "0" OBJ$NAME: "CONNECT" OBJ$PRIVILEGES: "-"
AUTH$GRANTEE: "SCOTT" OS$USERID: "oracle" PRIV$USED: 127
Обратите внимание, что появилось
новые ключевые слова OBJ$PRIVILEGES и AUTH$GRANTEE.
Заведение новых пользователей
можно контролировать с помощью команды:
SQL> audit user
Результат заведения выглядит так:
Mon Apr 21 09:40:12 2003
SESSIONID: "217" ENTRYID: "2" STATEMENT: "8" USERID: "SYSTEM" TERMINAL: "pts/14" ACTION: "51" RETURNCODE: "0" OBJ$NAME: "SCOTT2" OS$USERID: "oracle" PRIV$USED: 20
Вновь заведенный пользователь (код
51) SCOTT2, завел его пользователь SYSTEM.
Чтобы включить аудит, действующий
по умолчанию для вновь заводимых объектов:
AUDIT ALTER, GRANT, INSERT, UPDATE, DELETE ON DEFAULT
Системный словарь: To see a description of each value, you can use the following SQL
statement:
select column_name, comments
from dba_col_comments
where table_name = 'DBA_AUDIT_TRAIL'
2: Use the following tables to map the numeric values to their
descriptive values
system_privilege_map
stmt_audit_option_map
audit_actions
3: Look at the view text of DBA_AUDIT_TRAIL
to perform further discovery of audit trail contents
|