A auditoria do banco de dados
Oracle, quando ativada os objetos deste dispositivo, são criados nas
tablespaces SYS ou SYSMAN, dependendo da versão do Oracle.
Neste artigo vamos dar uma
repassada nas opções e comandos básicos de auditoria e também apresentaremos
uma solução de contorno para alterar a tablespace onde os objetos de auditoria
são criados.
Inicialmente é necessário ativar a
auditoria, para tanto deve-se configurar o parâmetro AUDIT_TRAIL. Para essa
alteração é necessário reiniciar a base de dados, porque esse parâmetro é
estático. O parâmetro AUDIT_TRAIL
permite os valores indicados abaixo.
· none – Desabilita a auditoria (valor pré
configurado);
· os – Habilita a auditoria,
coletando informações pertinentes ao Sistema Operacional;
·
db – Habilita a auditoria,
coletando informações pertinentes ao banco de dados (visão SYS.AUD$);
· db,extended – db - Habilita
a auditoria, coletando informações pertinentes ao banco de dados (visão SYS.AUD$) e adiciona os
valores pertinentes as colunas SQLBIND e SQLTEXT (da visão SYS.AUD$);
· xml – Habilita a auditoria,
coletando informações pertinentes ao
Sistema Operacional em formato XML;
· xml,extended – Habilita a auditoria,
coletando informações pertinentes ao Sistema Operacional incluindo as SQLBIND e SQLTEXT (da visão SYS.AUD$);
Na maioria dos casos a opção de
auditoria (db ou db,extend) é a mais utilizada, permitindo verificar detalhes
dos acessos no banco de dados. Porém essa opção gera um grande volume de
informação na visão “SYS.AUD$”. Este objeto fica armazenado na tablespace
SYSTEM, o que muitas vezes ocasiona estouro, parando o banco de dados.
Uma opção para corrigir esse
problema é realizar a movimentação dos objetos de auditoria para outra
tablespace, de modo a melhorar a administração de capacidades da auditoria
Oracle.
A seguir os passos necessários
para a mudança:
1. Desativar a auditoria se ela
estiver habilitada:
SQL> alter system set audit_trail=none scope=spfile;
2. Reiniciar o banco de dados:
SQL> startup;
3. Criar uma nova tablespace para
armazenar os objetos da auditoria:
SQL> create tablespace tbs_auditoria
2 datafile ’/home/oracle/oradata/dbf/tbs_audit_01.dbf’
3 size 2g
autoextend on next 1g maxsize 4g;
4. Conectar como SYS, executar os
passos abaixo:
SQL> conn sys/**** as sysdba
SQL> create table system.aud$ tablespace tbs_auditoria
2 as select * from aud$;
SQL> create index system.i_aud1
2 on system.aud$(sessionid,
ses$tid) tablespace tbs_auditoria;
SQL> rename aud$ to aud$_temp;
SQL> create view aud$ as select * from system.aud$;
5. Conectar com o usuário SYSTEM
e conceder os privilégios abaixo:
SQL> conn system/****
SQL> grant all on aud$ to sys with grant option;
SQL> grant delete on aud$ to delete_catalog_role;
6. Reativar a auditoria, utilizar
os passos abaixo:
SQL> alter system set audit_trail=DB scope=spfile;
SQL> startup;
7. Recriar as visões da auditoria do dicionário de dados:
SQL> @?/rdbms/admin/cataudit.sql
Apartir desses passos executados
os objetos de auditoria serão criados na tablespace TB_AUDITORIA.
Abaixo alguns exemplos do comando
AUDIT.
AUDIT ALL BY
BY ACCESS;
AUDIT EXECUTE
PROCEDURE BY BY ACCESS;
AUDIT UPDATE TABLE,
SELECT TABLE,
INSERT TABLE,
DELETE TABLE BY BY
ACCESS;
Os comandos acima realizam auditoria de todos os comandos que o executar no banco de dados (DDL, DML, Logon e Logoff).
Também é possível realizar auditoria de um objeto específico, independente
do usuário que o acessa e também por uma sessão inteira. O comando ficaria
assim:
AUDIT
ALL ON [OWNER].[TABELA] BY SESSION;
Para
desabilitar a auditoria de determinado objeto deve-se utilizar o comando
“NOAUDIT”, conforme o exemplo abaixo:
NOAUDIT ALL ON [OWNER].[TABELA] BY
SESSION;
Dica importante: O comando “AUDIT ALL”
habilita a auditoria para todo o banco e para todas as atividades. Recomenda-se
analisar a real necessidade para utilização deste comando num ambiente de
produção. Pois esse comando gera lentidão no banco de dados e também um volume
muito grande de informação armazenada da auditoria no banco de dados.
Nota Final: Embora exista um Note da Oracle (72460.1)
para a execução desta atividade, a Oracle indica que esse procedimento não é
suportado pelo suporte, portanto em ambientes críticos deve-se consultar o
Suporte da Oracle para detalhes.
Referências: Oracle Database, Security Guide 11g Release 2 (11.2);
Oracle
Label Security, Administrator’s Guide 11g Release 2 (11.2).
MSc. Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com