SGBD
AUDITORA EN ORACLE
SGBD
AUDITORA EN ORACLE
Objetivos:
AUDITORA EN ORACLE
SGBD
Las modificaciones del archivo init.ora requieren el reinicio de la base de datos para que
surjan efecto, as que reiniciaremos para aplicar los cambios.
Los valores ms comunes que podemos asigar al parmetro audit_trail son los
siguientes:
Para este documento vamos a usar el tipo de auditora db, el ms comn y el que viene
por defecto en oracle a partir del 11g.
AUDITORA EN ORACLE
SGBD
Vista
Descripcin
ALL_AUDIT_POLICIES
AUDITORA EN ORACLE
SGBD
Hay bastantes vistas ms, para verlas todas podemos usar esta sentencia:
SELECT view_name FROM dba_views
WHERE view_name LIKE '%AUDIT%'
ORDER BY view_name
Auditar los inicios de sesin de la base de datos
Para auditar los inicios de sesin de la base de datos usaremos la sentencia AUDIT
SESSION (la cual podemos filtrar por usuarios de la siguiente forma AUDIT
SESSION BY usuario1, usuario2; Al igual que el comando AUDIT tenemos el
comando NOAUDIT para desactivarla poltica de auditora previamente activada.
Como ejemplo vamos a ver las conexiones y desconexiones del usuario juanla (como
sys) Hay ms campos en la vista dba_audit_session que pueden ser interesantes.
SQL > Select Username, userhost, extended_timestamp, action_name from
dba_audit_session where username='JUANLA';
Tambin podemos comprobar que funciona con la siguiente lnea si estamos con la
cuenta de usuario:
SQL > Select Username, userhost, extended_timestamp, action_name from
user_audit_session;
Podemos filtrar los registros de conexiones si han sido correctas o fallida de la siguiente
manera, si no lo filtramos nos registrar los 2 tipos:
SQL>audit session whenever not successful;
SQL>audit session whenever successful;
AUDITORA EN ORACLE
SGBD
Con estas sentencias podemos ver que la auditora de la sentencia create table ha sido
activada para ese usuario:
SQL > Select * from dba_priv_audit_opts where user_name='JUANMA';
SQL > Select * from dba_stmt_audit_opts where user_name='JUANMA';
As podemos ver que quedan auditados los crete table de Juanma, en este caso:
SQL > Select username,owner,obj_name,action_name,priv_used,timestamp
FROM dba_audit_object where username='JUANMA';
Al crear la tabla con juanma habamos definido un Audit create table by juanma, en el
AUDITORA EN ORACLE
SGBD
2. Nos conectamos con Hard2, hacemos un Select a una tabla que ha creado.
SQL > Select username, userhost, timestamp, obj_name, action_name,
priv_used from dba_audit_trail where username='HARD2'
La sentencia para auditar sobre un objeto es la siguiente (Vamos a auditar la tabla que
acabamos de crear, para que haya algn registro interesante vamos a hacerle un insert
con otro usuario juanma):
AUDITORA EN ORACLE
SGBD
Resultado al hacer un insert con juanma:
Podemos ver todos los privilegios de la base de datos con la siguiente sentencia:
SQL > Select privilege from dba_sys_privs;
Como en sesiones podemos filtrar los privilegios que se terminan correctamente y los
que no, con WHENEVER (NOT) SUCCESSFUL al final de la sentencia, si no se
define auditar todos los tipos. Si nos conectamos con SCOTT y borramos una tabla
podemos ver que dejamos huella de ello.
SQL > Select * from dba_audit_trail where username=SCOTT;
AUDITORA EN ORACLE
SGBD
Proteger
Eliminar
Gestin de tamao
Un dba tiene que tener en cuenta que el tamao de la tabla AUD$ (como hemos dicho
antes) puede aumentar mucho, depende de dos factores:
Nmero de opciones de auditora activadas.
AUDITORA EN ORACLE
SGBD
Ahora al reiniciar la base de datos tenemos que tener en cuenta que la sesin de
LogMiner es la de SYS, no podremos usarla con otro usuario porque trabaja con la
sesin de SYS (Recuerda usar un directorio que exista o crearlo manualmente).
10
AUDITORA EN ORACLE
SGBD
Esta consola web, nos permite aadir polticas de auditora as como lo hacemos desde
consola, vamos a ver algunos ejemplos. En primer lugar vamos a auditar un privilegio
desde la consola web, para el usuario JUANLA, para ello seleccionamos el usuario y
pulsamos en aadir, ah elegimos el privilegio:
Ahora vamos ms abajo y vemos que Oracle nos ha preparado un apartado donde
podemos auditar roles:
Y an ms abajo vemos que oracle nos da a a elegir las dems opciones de auditora que
nos quedan, que son el filtrado por usuario, por resultado de ejecucin (satisfactoria o
no) , o la exhaustivida del registro.
14
AUDITORA EN ORACLE
SGBD
Ahora solo tenemos que pulsar en el botn Ok y ya empezar a auditar sobre ese
privilegio. Si creamos una tabla con el usuario juanla y en la consola web vamos a
Privilegios Auditado podemos encontrarnos un resultado parecido a este:
Oracle nos permite elegir un tipo de objeto, entre ellos estn: (Contexto, Directorio,
Funcin, Libreria, Vista materializada, tipo objeto, paquete, procedimiento, secuencia,
sinnimo, tabla y vista) Nosotros elegiremos tabla. La podemos aadir con la
herramienta de bsqueda de oracle:
Podemos elegir opciones de audicin, como son las sentencias auditadas, filtro de
resultado, exhaustividad de la sentencia.. Probaremos a insertar un dato y hacer un
select de la misma tabla y vamos a Objetos Auditados donde encontraremos:
15
AUDITORA EN ORACLE
SGBD
Por ltimo, la consola web de oracle nos permite auditar sentencias concretas, vamos a
ver un ejemplo con un update y un drop table de la tabla prueba1, y como tal
seguimos de la misma forma que en las dems opciones, vamos a Aadir sentencia
auditada y la consola nos mostrar lo que debemos elegir, muy amigable y sencillo
como en las dems opciones de auditora:
Como vemos es una manera ms cmoda (pero ms lenta) de hacer auditora en nuestro
sistema, una alternativa que puede sernos til en algnos momentos para crear polticas o
consultar registros. Eso s, tiene limitaciones al mostrar los datos de registro pero no por
ello deja de ser til para la administracin de la base de datos.
16