Anda di halaman 1dari 16

Auditora en Oracle

Sistemas Gestores de Base de Datos


Juan Javier Rodrguez Guisado

SGBD

AUDITORA EN ORACLE
SGBD

AUDITORA EN ORACLE
Objetivos:

Aprender a activar la auditora en ORACLE.


Dominar las vistas del D.D. donde se almacena la informacin de auditora.
Conocer la forma de auditar:
o Inicios de sesin en la base de datos
o Ejecucin de sentencias concretas
o Acciones de cada usuario.
o Acciones sobre cada objeto.
o Privilegios del sistema.
Gestionar registros de auditora (proteger, destruir, etc.).
Anlizar los redo logs con LogMiner.
Conocer las posibilidades que ofrece Enterprise Manager para llevar a cabo
auditoras.
Aprender a redactar una documentacin concisa y til sobre procedimientos de
administracin.

Activacin de la auditora en Oracle


La auditora en Oracle consiste en la monitorizacin y almacenamiento de informacin
de nuestro servidor Oracle, la auditora es una parte importante de la seguridad del
sistema que no debe olvidarse.
Ventajas:
o Dispondremos de informacin de las operaciones del sistema.
o Protegeremos mejor nuestro sistema.
o Podemos prevenir ataques y detectar posibles intrusos.
Inconvenientes:
o Mayor consumo de recursos del sistema.
Oracle, por defecto no trae activada la auditora (Hasta la versin 11g), aunque la
emplea en algunas actividades de la misma (auditora obligatora): el encendido y
apagado, conexiones como sysdba y sysoper.
Para activar la auditora estndar en Oracle, necesitamos cambiar el paramtro
Audit_trail del init.ora (por defecto none), podemos ver el estado de este parmetro
con el comando show parameter audit

El comando para activar la auditora en oracle es el siguiente:


ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;

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.

Tambien podemos activar la auditora de operaciones de usuarios con privilegios de


sistema, para ello hacemos lo siguiente:
SQL> ALTER SYSTEM SET audit_sys_operations=true SCOPE=SPFILE;

Los valores ms comunes que podemos asigar al parmetro audit_trail son los
siguientes:

none La auditora est desactivada.


db La auditora est activada con todos y guarda los registros en la tabla
SYS.AUD$ (tablespace SYSTEM por defecto).
os La auditora est activada, con todos los registros guardados directamente

en el sistema operativo (en un di rectoio y archivos concretos), est opcin


depende del sistema operativo.
db, extended La auditora est activada los datos se almacenarn en la
taba SYS.AUD$. Adems se escribirn los valores correspondientes en las
columnas SqlText y SqlBind de la tabla SYS.AUD$.
xml activa la auditora de la base de datos, los sucesos ser escritos en
ficheros XML del sistema operativo.
Xml, extended activa la auditora de la base de datos, los registros sern
escritos en el formato XML del sistema operativo, adems se incluirn los
valores de SqlText y SqlBind.

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.

Vistas del D.D. con relacin a la auditora


Nota: Estas vistas sern usadas en ejemplos ms adelante en este mismo documento
Las vistas del diccionario de datos nos muestran informacin til de nuestro sistema, a
nosotros nos insteresan las vistas con relacin a la auditora, que principalmente son:

AUDITORA EN ORACLE
SGBD

Vista

Descripcin

ALL_AUDIT_POLICIES

Define las polticas en las tablas y vistas accesibles


al usuario actual.
ALL_AUDIT_POLICY_COLUMNS Define las polticas de auditora en las tablas y vistas
accesibles para el usuario actual.
ALL_DEF_AUDIT_OPTS
Lista las opciones por defecto de auditora que sern
aplicadas a los objetos que se crean.
AUDIT_ACTIONS
Lista las acciones que pueden ser auditadas.
DBA_AUDIT_EXISTS
Lista las entradas auditadas producidas por AUDIT
NOT EXISTS.
DBA_AUDIT_OBJECT
Lista los registros de auditora de todos los objetos
del sistema.
DBA_AUDIT_POLICIES
Lista toda la informacin sobre las polticas de
auditora del sistema.
DBA_AUDIT_SESSION
Lista todos los registros que conciernen a
CONNECT y DISCONNECT.
DBA_AUDIT_POLICY_COLUMNS Lista las columnas de poltica en las tablas y vistas
de toda la base de datos.
BDA_AUDIT_STATEMENT
Lista los registros auditados que conciernen a
GRANT, REVOKE, AUDIT, NOAUDIT y ALTER
SYSTEM de toda la base de datos.
DBA_AUDIT_TRAIL
Lista todas las entradas estndares que hay en la
tabla AUD$.
DBA_COMMON_AUDIT_TRAIL
Combina los logs estndares con los exhaustivos,
incluye SYS y los registros obligatorios escritos en
formato XML.
DBA_FGA_AUDIT_TRAIL
Lista los registros completos de una auditora.
DBA_OBJ_AUDIT_OPTS
Describe las opciones de auditora en todos los
objetos.
DBA_PRIV_AUDIT_OPTS
Describe los privilegios de sistema actuales que
estan siendo auditados por algn usuario.
DBA_STMT_AUDIT_OPTS
Describe todas las opciones de auditora actuales de
todo el sistema y por usuario.
USER_AUDIT_OBJECT
Lista los registros auditados para sentencias que
conciernen objetos accesibles para el usuario actual.
USER_AUDIT_POLICIES
Describe exhaustivamente las columnas de polticas
de auditora en las tablas y vistas accesibles por el
usuario actual.
USER_AUDIT_SESSION
Lista todos los registros de auditora relacionados a
conexiones y desconexiones del usuario actual.
USER_AUDIT_STATEMENT
Lista todos los registros relacionados con las
sentencias GRANT, REVOKE, AUDIT, NOAUDIT
y ALTER SYSTEM emitidas por el usuario actual.
USER_AUDIT_TRAIL
Lista todas las entradas de auditora estndares de la
tabla AUD$ sobre el usuario actual.
USER_OBJ_AUDIT_OPTS
Describe las opciones de auditora en todos los
objetos que posee el usuario actual.
STMT_AUDIT_OPTION_MAP
Describe informacin sobre los tipos de cdigos de
auditora

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';

La vista dba_audit_trail tambien nos da informacin interesante cuando registra que el


usuario Juanla se ha conectado o desconectado:
SQL > Select username, timestamp, action_name, comment_text, priv_used
from dba_audit_trail 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;

Auditar una sentencia concreta


Pongmonos en la situacin que por ejemplo vamos a auditar todas las sentencias que
creen una tabla, para este ejemplo vamos a auditar los create table de juanma;

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

caso que no pongamos el by nombreusuario, se auditarn todas, como por ejemplo si


creamos una tabla nueva con SCOTT (en el caso que auditemos a todos los usuarios):
SQL > Select username,owner,obj_name,action_name,priv_used,timestamp
FROM dba_audit_object where username=SCOTT;

Auditar acciones de cada usuario


Si vamos a auditar las acciones de cada usuario, lo primero vamos a definir en Oracle
que registre todas las actividades que hacen:

Ahora, para comprobar si est auditando correctamente, vamos a hacer algunas


operaciones y vemos si las registra:
1. Nos conectamos con el usuario Hard y creamos una tabla
SQL > Select username, userhost, timestamp, obj_name, action_name,
priv_used from dba_audit_trail where username='HARD'

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'

3. Hacemos un insert en alguna tablal con Hard2.


SQL > Select * from dba_audit_trail where username='HARD2';

3. Borramos la tabla creada con Hard2.


SQL > Select username, userhost, timestamp, obj_name, action_name,
priv_used from dba_audit_trail where username='HARD2'

Auditar acciones sobre cada objeto


Auditando acciones sobre objetos tendremos seguirdad sobre la actividad de los
usuarios que han interactualo con ese objeto, vamos a ver como se audita una tabla, para
ello crearemos una tabla con el usuario Ejemplo llamada tablaobjeto:

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:

SQL > Select username, userhost, timestamp, owner, obj_name,


action_name from dba_audit_object where username='JUANMA';

Para auditar todas las acciones de esa misma tabla haramos:


SQL > audit all on CONTABILIDAD by access;

Auditar privilegios del sistema


Para auditar un privilegio de sistema simplemente debemos de usar la orden audit
seguida del privilegio de sitema que necesitemos:
SQL > AUDIT DELETE ANY TABLE BY ACCESS;

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;

El final de la sentencia by access nos guardar un registro nuevo por cada


sentencia que se trague, siendo un registro ms exhaustivo que con la orden
by session que solo nos guaradara uno por sesin. Claro que tambin
acaparar ms recursos del sistema
Gestionar registros de Auditora
Para gestionar los registros de auditora de oracle debemos tener claro que cualquier
usuario que se conecte con privilegios de administrador puede borrar estos archivos,
aunque es visible que han sido borrados siempre que tengamos activado el parmetro
audit_sys_operations=true tal y como est explicado arriba.

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

Frecuencia con la que se producen esas auditorias.

Analizar Redo logs con Log Miner


Log Miner es una herramienta que Oracle incorpora en su BBDD que nos ayudan a
hacer ms sencillo e interpretable los redo logs. Para activarlo tenemos que definir una
ruta de archivos en el parmetro utl_file_dir, podemos ver inicialmente el valor de la
siguiente manera:

Pues ya sabemos modificar parmetros estticos y que conllevan a reiniciar la BBDD:


SQL > alter system set utl_file_dir='C:\LogMiner' scope=spfile;

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

En la pestaa Servidor, vamos al apartado de seguridad y vemos Configuracin de


Auditora entramos en ella y tendremos abierto el apartado web relacionado con la
auditora.
Como informacin principal vemos si la auditora est activada, los usuarios
privilegiados estn auditados y cual es el directorio de la auditora (si la hacemos por
sistema operativo o XML)

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:

Si necesitaramos auditar algn objeto (Vamos a partir de la tabla que acabamos de


crear, llamada prueba1) Vamos a Aadir objeto auditado:

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 las opciones que podemos dar


son parecidas o las mismas de un modo u
otro a cada tipo de auditora que ofrece la
consola web, vamos a hacer un update y un
drop table y vemos que nos muestra:

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

Anda mungkin juga menyukai