Académique Documents
Professionnel Documents
Culture Documents
Carvalho
Analista de Sistemas
contato@pedrofcarvalho.com.br
www.pedrofcarvlho.com.br
Passo-a-passo:
Este item requer um pouco mais de trabalho e cuidados que o item anterior. Nele
iremos revogar os privilégios de execução pública nas packages UTL_SMTP, UTL_TCP,
UTL_HTTP, UTL_FILE e DBMS_OBFUSCATION_TOOLKIT. Isso impede que usuários
maliciosos executem essas packages de forma indevida, reduzindo deste modo, os
riscos de segurança.
Passo-a-passo:
PUBLIC;'
FROM dba_objects o
WHERE OBJECT_NAME IN
('UTL_SMTP','UTL_TCP','UTL_HTTP','UTL_FILE','DBMS_OBFUSCATION_TOOLK
IT')
AND O.OWNER = 'PUBLIC'
ORDER BY 1
Obs.: Salve o resultado em um arquivo.
SET OUTPUT ON
BEGIN
DBMS_OUTPUT.ENABLE(NULL);
Obs. 2: O bloco PL/SQL acima não gera os privilégios necessários para objetos
compilados em código nativo ou objetos wrapped. O procedimento necessário para
estes casos não é abordado neste artigo, portanto tenha muito cuidado ao executar
este item, pois se o Banco de Dados tiver objetos wrapped ou compilados em código
nativo, estes objetos ficarão inválidos e poderão impedir o funcionamento de sistemas
que dependem deles. Para mais informações consulte os links:
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/wrap.htm e
http://www.oracle-
base.com/articles/11g/PlsqlNewFeaturesAndEnhancements_11gR1.php#native_compil
ation.
Passo-a-passo:
Para permitir esse modo de conexão somente para usuários locais do Sistema
Operacional, deve-se configurar o valor do parâmetro REMOTE_OS_AUTHENT para
FALSE. Essa configuração evita que usuários remotos (usuários de qualquer
computador em uma rede) se conectem no Banco de Dados sem fornecer usuário e
Pedro F. Carvalho
Analista de Sistemas
contato@pedrofcarvalho.com.br
www.pedrofcarvlho.com.br
senha.
Passo-a-passo:
Auditoria é a habilidade do banco de dados Oracle poder gerar logs de auditoria (XML,
tabelas, arquivos de SO, …) em atividades suspeitas do usuário, como por exemplo:
monitorar o que um determinado usuário está fazendo ou até mesmo saber para qual
valor a coluna de salário da tabela empregados está sendo atualizadas. Com a
auditoria, esses dados são facilmente capturados e guardados para posteriormente
serem analisados.
Em nosso exemplo prático, vamos utilizar o tipo de auditoria DB, então executares o
seguintes comandos:
System altered.
Pedro F. Carvalho
Analista de Sistemas
contato@pedrofcarvalho.com.br
www.pedrofcarvlho.com.br
SQL> startup
ORACLE instance started.
Agora será necessário especificar as opções de auditoria, elas são em três partes,
faremos exemplos das três. Antês disso, vamos criar o usuário user_audit, para
trabalharmos com ele na auditoria.
User created.
Grant succeeded.
1) Auditoria de Instrução.
Sintaxe :
BY SESSION : Resumi a escrita dos registros por sessão para o mesmo tipo de
instrução em um mesmo objeto, essa é a opção default.
BY ACCESS : Escreve um registro para cada vez que a auditoria é executada.
WHENEVER SUCCESSFUL : Instrução bem-sucedidas, que não mostram mensagens de
erros.
WHENEVER NOT SUCCESSFUL : Instrução não bem-sucedidas, que mostram
mensagens de erros.
Pedro F. Carvalho
Analista de Sistemas
contato@pedrofcarvalho.com.br
www.pedrofcarvlho.com.br
Grant succeeded
Audit succeeded.
Table created.
Para verificarmos se a auditoria foi bem sucedida, basta entrarmos como um usuário
sysdba e verificar na view dba_audi_trail o registro criado.
Vamos fazer um outro exemplo, mais agora sobre a sessão do usuário. Há casos em
que há a necessidade de auditar, tanto os logins bem sucedidos como os
malsucedidos. Veja como é simples fazer isso com auditoria.
Audit succeeded.
Audit succeeded.
2) Auditoria de objetos.
Para auditar comandos DML em tabelas, devemos utilizar esse tipo de auditoria, a
sintaxe é parecida com o de instrução. Se quiséssemos auditar todos os comandos
update executados na tabela audit_table do usuário user_audit, poderiamos fazer …
1 row updated.
3) Auditoria de privilégios.
Auditoria de privilégios tem quase a mesma sintaxe básica dos outros tipos …
Audit succeed.
Toda vez que o privilégio ALTER TABLESPACE é utilizado com sucesso, um novo
registro é adicionado a SYS.AUD$.
VIEW_NAME
------------------------------
DBA_AUDIT_EXISTS
DBA_AUDIT_OBJECT
DBA_AUDIT_POLICIES
DBA_AUDIT_POLICY_COLUMNS
DBA_AUDIT_SESSION
DBA_AUDIT_STATEMENT
DBA_AUDIT_TRAIL
DBA_COMMON_AUDIT_TRAIL
DBA_FGA_AUDIT_TRAIL
DBA_OBJ_AUDIT_OPTS
DBA_PRIV_AUDIT_OPTS
VIEW_NAME
------------------------------
DBA_REPAUDIT_ATTRIBUTE
DBA_REPAUDIT_COLUMN
DBA_STMT_AUDIT_OPTS
14 rows selected.
Por fim, faltou falar sobre a auditoria FGA, que é uma auditoria refinada (Fine-grained
object auditing), que é implementada pelo package DBMS_FGA. A auditoria padrão que
acabamos de aprender, é feita facilmente em objetos que foram acessados e quem
acessou, mais não se você quizer descobrir as colunas ou linhas que foram acessadas,
é nessa parte que entra a auditoria refinada, em um outro artigo falarei somente sobre
a FGA, até lá.
Pedro F. Carvalho
Analista de Sistemas
contato@pedrofcarvalho.com.br
www.pedrofcarvlho.com.br