Como auditar e gerar relatórios de auditoria em Oracle Databases - TI Especialistas
abr 13, 2012 Ξ 2 comentários
Como auditar e gerar relatórios de auditoria em Oracle Databases
Olá pessoal, um tempo atrás tive que fazer algumas auditorias em um cliente meu, foi então que fiz esse documento para documentar o procedimento de habilitar vários tipos de auditoria e gerar relatórios de tudo que está sendo auditado através de exemplos.
Espero que seja útil para vocês o quanto foi útil para mim, boa leitura.
Como auditar e gerar relatórios de auditoria em Bancos de dado Oracle.
Habilitando Auditoria
O primeiro passo é habilitar a auditoria, para isso será necessário mudar o parâmetro de inicialização audit_trail e definir o tipo de auditoria desejado:
OS : Auditoria Habilitada, os registros vão ser gravados em diretórios do sistema em arquivos de auditoria.
DB ou TRUE : Auditoria é habilitada, os registros de auditoria serão armazenadas no database (SYS.AUD$)
XML : Auditoria é habilitada, os registros serão armazenados em formatos XML.
NONE ou FALSE : Auditoria é desabilitada.
DB_EXTENDED : Trabalha igual ao parâmetro DB, mais as colunas SQL_BIND e SQL_TEXT são preenchidas.
Quando selecionamos os modos OS ou XML, são criados arquivos contendo os registros do auditoria no diretório definido pelo parâmetro audit_file_dest.
Considerando um tipo de auditoria DB, executaremos o seguintes comandos:
SQL> ALTER SYSTEM SET audit_trail = "DB" SCOPE = SPFILE;
1. Conexões de auditoria administrativa
2. Auditoria no nível de objeto
3. Auditoria no nível de privilégio
4. Auditoria de Instruções
Mostrarei em cada seção o que pode ser auditado, como verificar o que é auditado e alguns exemplos de relatório de auditoria.
A auditoria pode ser definida em nível de instrução, nível de objeto e nível de privilégio.
Existe também auditoria de conexões administrativas, que são registrados através de log.
1. Auditando Conexões administrativas
Conexões administrativas são CONNECT INTERNAL e CONNECT / AS SYSDBA.
O usuário SYS é o usuário mais útil e importante para qualquer banco de dados Oracle. Vamos dar uma olhada como um DBA pode impedi-lo se ele está sendo mal utilizado.
Como auditar conta SYS
Há apenas dois parâmetros que precisam ser definidos para auditar qualquer conta SYS, o audit_file_dest e o AUDIT_SYS_OPERATIONS.
O primeiro define o local para arquivos de auditoria e o segundo liga ou deliga a auditoria do SYS com ON / OFF.
Os arquivos de auditoria serão criados no diretório definido pelo parâmetro audit_file_dest com o nome ora_.aud. Esse arquivo geralmente têm seguintes informações:
Arquivo de auditoria / u01/app/oracle/admin/ALEBD/adump/ora_14725.aud
Node name: hostname.domainname
Version: #1 SMP Fri Apr 12 13:52:53 EST 2011
Instance name: ALEBD
Unix process pid: 134745, image: oracle@hostname.domainname (TNS V1-V3)
Tue Mar 6 13:21:31 2012
ACTION : 'CONNECT'
DATABASE USER: '/'
CLIENT TERMINAL: pts/1
Com todas as informações relacionadas à sessão como 'connect' e todos os comandos válidos, ele fornece informações sobre o servidor, sistema operacional, versão, Maquina, etc. porém ele não armazena os comandos inválidos.
Os arquivos de auditoria também armazenam informações de logins inválidos. Para verificar logins inválidos, execute os seguintes comandos:
grep-i "status:" * aud | grep-i-v "status: 0".
alter system set audit_file_dest='/u04/app/oracle/oradata/alex/audit' scope=spfile;
Reinicie a banco de dados e pronto, está feito.
As Informações de auditoria podem ser visualizados em formato de texto ou no formato XML, dependendo da configuração do parâmetro AUDIT_TRAIL
Objetos que podem ser auditados são: tabelas, visões, sequências, pacotes, procedimentos armazenados e funções. Note que, porque alguns objetos pode ser dependente de outrosobjetos (exemplo função -> visão -> tabela), vários registros de auditoria podem ser inseridos quando esses objetos forem auditados.
Opções de auditoria objeto são definidas para todos os usuários do banco de dados e não podem ser definidos
Quais as opções que podem ser definidas? Isto pode ser visto a partir de all_def_audit_opts.
Exemplo opções de auditoria de objetos
ALT DEL AUD COM GRA IND INS LOC REN SEL UPD REF EXE
– / – / – / – / – / – / – / – / – / – / – / – / – / –
Estes correspondem aos seguintes opções de objecto respectivamente:
alter, audit, comment, delete, grant, index, insert, lock, rename, select, update, reference e execute .
Todas as referências, excepto e executar pode ser aplicadas a tabelas, caso contrário você receberá o erro ora-1982 "opção inválida auditoria para tabelas".
Exemplo de auditoria em SCOTT.EMP
Confira: Quais objetos são auditados
where owner='SCOTT' and OBJECT_NAME='EMP';
——- ——- ——— — — — — — — — — — — — — —
Gera algumas informações de auditoria:
=> Todas as linhas de SCOTT.EMP são mostrados
SQL> connect t / tl
ORA-00942: tabela ou visão não existe
where obj_name='EMP' and owner='SCOTT';
——– —————————————- —————-
SYSTEM SELECT ANY TABLE ———S—
T ———F—
SCOTT ———S—
Todos os privilégios de sistema podem ser auditados.
Diferentes privilégios podem ser selecionados a partir da system_privilege_map.
Se você tentar usar um valor que não pertence à lista, você receberáo seguinte erro:
ORA-00956: opção ausente ou inválido de auditoria
Exemplo: privilégios de sistema auditáveis
Resultado (este resultado é dependente da versão):
….. Não estão sendo mostrados todos os resultados ……
Exemplo de auditoria no CREATE TABLE de Scott e System
Isto significa que cada create table é auditado para o system e o scott uma vez por sessão.
Cada um deve criar a tabela ser auditado, em seguida, a cláusula 'by access' deve ser adicionada.
verificar: Quais privilégios estão auditados
——- ————— ———- ———-
Gere algumas informações de auditoria:
= Table> criado
=> Tabela criada
SQL> create table scott.t1 (c1 number);
=> Create table scott.t1 (c1 number)
——– —————————————- ——————-
———- ————————— ——–
4. Auditoria no nível de instruções
Auditoria de instruções é uma auditoria seletiva de diversos grupos de comandos sql, esse comandos podem ser comandos ddl (data definition Language) ou comandos DML (Data Manipulation Language).
Por exemplo, quando o comando 'audit table' é auditado, comandos create, alter e drop table também são auditados.
Quando a instrução 'audit select table' é auditado todas as instruções select em tabelas, visões, Snapshots .. serão auditados.
A diferença com auditoria privilégio é que no último caso, um privilégio de sistema é auditado.
Por exemplo, " audit create table " só vai auditar o comando create table e não comandos de alter table ou drop table.
Quando instruções semelhantes e opções de privilégios são definidas apenas um registro de auditoria é gerado.
Exemplo: instruções auditáveis
As instruções que podem ser aditadas podem ser visteas da stmt_audit_option_map.
Resultado (este resultado é dependente versão):
….. não estão sendo mostrados todos resultados ……
where name like '%TABLE%';
Exemplo de Auditoria em TABELAS do Scott e System
verifique: Quais declarações estão auditadas
——– —— ——— ———- ———-
SQL> select username, priv_used, ses_actions de dba_audit_object;
Exemplo de auditoria SELECT TABLE do scott e system
Confira: Quais declarações são auditadas
——– —— ————- ———- ———-
Gere algumas informações para auditoria:
SQL> delete from emp where ename='KING';
SQL> insert into scott.emp (empno, ename) values (1, 'TEST');
SCOTT ———S——
SYSTEM ———S——
SYSTEM SELECT ANY TABLE ———S——
Como auditar e gerar relatórios de auditoria em Oracle Databases was last modified: abril 13th, 2012 by Alexandre Luis Pires
auditar gerar relatórios de auditoria Oracle Databases
Em primeiro lugar, parabéns pelo artigo, muito bom mesmo, mas gostaria de saber sobre um limpeza dessa auditoria, no meu caso por exemplo preciso colocar a auditoria do tipo OS devido ao desempenho, mas nem sempre os servidores tem um bom espaço em disco e dessa forma preciso limitar para 1 ou 2 meses, poderia me auxiliar como posso fazer isso, tendo a configuração no modo OS e DB? ouvi comentários que através de uma package dbms seria possível.
Se puder me ajudar em mais uma questão sobre auditoria. Estou realizando os testes e até o momento funcionou perfeitamente conforme seu artigo, mas gostaria de saber como posso auditar o comando executado pelo usuário e se é possível gerar o comando para desfazer a operação realizada, estou fazendo a auditoria dos comandos DML, consigo auditar por exemplo que o usuário fez um update e a tabela que ele fez, mas como posso ver o comando que ele executou.