четверг, 17 марта 2011 г.

Настройка СУБД oracle для аудита событий в Cisco MARS

Поставили передо мной задачу настроить аудит событий в субд oracle. Сообщения аудита должны собираться в базе, откуда же их будет забирать специализированное ПО Cisco MARS. Ну и ладно. Итак, для начала логинимся:

server$ sqlplus sys as sysdba

и создаем представление (view):

SQL> @$ORACLE_HOME/rdbms/admin/cataudit.sql

Теперь необходимо включить аудит, т.е. задать инициализационный параметр базы данных. Параметры инициализации содержатся в PFILE или SPFILE, первый — простой текстовый, а второй файл хранится в бинарном виде. Файлы параметров по умолчанию находятся в $ORACLE_HOME/dbs, и имеют вид:
  1. spfile$ORACLE_SID.ora
  2. spfile.ora
  3. init$ORACLE_SID.ora
Первые два это SPFILE, последний это PFILE. Способ включения аудита зависит от того использует ли субд файл параметров инициализации PFILE или SPFILE. Проверить это можно следующим образом:

SQL> select decode(value, null, 'PFILE', 'SPFILE') from sys.v_$parameter WHERE name = 'spfile';

При использовании PFILE, для включения аудита необходимо прописать параметры в инициализационном файле:

AUDIT_TRAIL=DB
AUDIT_SYS_OPERATIONS=true

Первый параметр включает аудит, а второй включает логирование действий пользователей с привилегиями SYSDBA или SYSOPER.
При использовании SPFILE достаточно в консоли выполнить:

SQL> alter system set audit_trail=db scope=spfile;
SQL> alter system set audit_sys_operations=true scope=spfile;

Для активации системы аудита базу необходимо перегрузить:

SQL> shutdown immediate;
SQL> startup;

Теперь можно включить логирование событий, к примеру: включить логирование изменений параметров системы, логирование сессий.

SQL> audit alter system;
SQL> audit session;

Можно включить логирование действий определенного пользователя:

SQL> audit all by some_user;

Для того что бы забирать данные аудита надо завести пользователя, который будет иметь права на выборку из представления dba_audit_trail и право на создание сессии.

SQL> create user audit_user identified by password default tablespace users;
SQL> grant select on dba_audit_trail to audit_user;
SQL> grant create session to audit_user;

Для проверки работоспособности можно зайти только что созданным пользователем и сделать выборку сообщений аудита:

$ sqlplus audit_user/<password>
SQL> select count(*) from dba_audit_trail;
COUNT(*)
----------
3

Если счетчик отличен от ноля, значит все работает верно.
Перейдем к настройке Cisco MARS, все довольно просто и легко выполняется через web интерфейс. Необходимо указать в настройках подключения имя и пароль нами созданного пользователя и "Oracle Service Name ". Под "Oracle Service Name " подразумевается GLOBAL_DBNAME которое можно посмотреть в файле настроек листенера listener.ora .
Необходимо отметить, что периодически табличное пространство аудита нужно чистить:

SQL> delete from sys.aud$;