Dsvolk > > Oracle > > Security > > Audit_how_to My Blog | Search | About
(Not Logged In)
[ welcome! ] [ news ] [ install ] [ jump-jet ] [ app ] [ rac ] [ papers ] [ dba ] [ dvp ] [ racdd4d ] [ oem ] [ statspack ] [ education ] [ tuning ] [ ias ] [ backup ] [ dataprotection ] [ security ] [ oid ] [ options ] [ integration ] [ sales ] [ sun ] [ linux ] [ consulting ] [ faq ]

Включаем аудит

Соглашение о материалах на этом сайте

Мой oracle blog
true dsvolk!
просматриваем результаты аудита  
Аудит позволят нам видеть что делают и когда  пользователи системы. Даже самые обычные действия, которые мы не можем запретить пользователям, могут быть опасны. Нам остается только знать о них. 

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

Dsvolk > > Oracle > > Security > > Audit_how_to Last Modified: 02-03-2004 14:17