Sei sulla pagina 1di 8

1 Base de Datos II, Guía 8

Facultad: Ingeniería
Escuela: Computación
Asignatura: Base de Datos II

Tema: Auditoria de Base de datos. Parte I

Objetivo Especifico
Que el estudiante:
• Aprenda a utilizar los diferentes mecanismos disponibles en ORACLE para auditar la base
de datos y aprender como activar dicha auditoría.

Introduccion Teorica
Esta práctica está orientada a conocer y aprender como realizar un monitoreo selectivo de las
acciones de los usuarios para ayudar en la investigación de usos maliciosos de la base de datos. El
monitoreo puede realizarse a cuatro niveles distintos:
• Monitoreo Accesos: Es el monitoreo de todos los intentos fallidos y aciertos de conexión
a la base de datos.
• Monitoreo de Acción: Es el monitoreo de sentencias SQL específicas sin atender
concretamente a los objetos. Este tipo de monitoreo puede hacerse para todos los usuarios
del sistema o se puede enfocar sólo a algunos usuarios seleccionados.
• Monitoreo de objetos: Es el monitoreo de los accesos a esquemas específicos sin
considerar el usuario. Monitorea las sentencias permitidas por los privilegios.

Para todos los tipos de monitoreo, ORACLE permite el monitoreo selectivo de sentencias
ejecutadas con éxito, sentencias ejecutadas sin éxito o ambas.

La información de las auditorías se almacena en el diccionario de datos, en la tabla SYS.AUD$ o


en la pista de auditoría del sistema operativo (si lo permite). Lo anterior viene definido en el
parámetro audit_trail.

Posibles valores del parámetro audit_trail:


• none: desactiva la auditoría de la base de datos.
• os: activa la auditoría de la base de datos. Los sucesos auditados se escribirán en la pista
de auditoría del sistema operativo, no se auditará en Oracle sino en el sistema operativo
anfitrión. Esta opción funcionará dependiendo del sistema operativo.
• db: activa la auditoría y los datos se almacenarán en la taba SYS.AUD$ de Oracle.
• db, extended: activa la auditoría y los datos se almacenarán en la taba SYS.AUD$ de
Oracle. Además se escribirán los valores correspondientes en las columnas SQLBIND y
SQLTEXT de la tabla SYS.AUD$.
• xml: activa la auditoría de la base de datos, los sucesos será escritos en ficheros XML del
sistema operativo.
• xml, extended: activa la auditoría de la base de datos, los sucesos será escritos en el
formato XML del sistema operativo, además se incluirán los valores de SqlText y SqlBind
Base de Datos II, Guía 8 2

Existen varias vistas que se basan en la tabla SYS.AUD$ para mostrar distintos resultados, según
la información que se quiera obtener:
• ALL_AUDIT_POLICIES • DBA_FGA_AUDIT_TRAIL • KU$_10_1_AUDIT_VIEW
• ALL_AUDIT_POLICY_COLUMNS • DBA_OBJ_AUDIT_OPTS • MGMT$AUDIT_LOG
• ALL_DEF_AUDIT_OPTS • DBA_PRIV_AUDIT_OPTS • MGMT$ESA_AUDIT_SYSTEM_REPORT
• ALL_REPAUDIT_ATTRIBUTE • DBA_REPAUDIT_ATTRIBUTE • SM$AUDIT_CONFIG
• ALL_REPAUDIT_COLUMN • DBA_REPAUDIT_COLUMN • USER_AUDIT_OBJECT
• APEX_DEVELOPER_AUDIT_LOG • DBA_STMT_AUDIT_OPTS • USER_AUDIT_POLICIES
• DBA_AUDIT_EXISTS • GV_$XML_AUDIT_TRAIL • USER_AUDIT_POLICY_COLUMNS
• DBA_AUDIT_OBJECT • KU$_AUDIT_DEFAULT_VIEW • USER_AUDIT_SESSION
• DBA_AUDIT_POLICIES • KU$_AUDIT_OBJ_BASE_VIEW • USER_AUDIT_STATEMENT
• DBA_AUDIT_POLICY_COLUMNS • KU$_AUDIT_OBJ_VIEW • USER_AUDIT_TRAIL
• DBA_AUDIT_SESSION • KU$_AUDIT_VIEW • USER_OBJ_AUDIT_OPTS
• DBA_AUDIT_STATEMENT • KU$_PROC_AUDIT_VIEW • USER_REPAUDIT_ATTRIBUTE
• DBA_AUDIT_TRAIL • KU$_PROCDEPOBJ_AUDIT_VIEW • USER_REPAUDIT_COLUMN
• DBA_COMMON_AUDIT_TRAIL • KU$_PROCOBJ_AUDIT_VIEW • V_$XML_AUDIT_TRAIL

Funcionamiento comando audit


El comando audit permite iniciar los tipos de auditoría que a continuación se detallan. Este
comando puede funcionar aunque no esté activada la auditoría de la base de datos, pero no
dejará constancia, para que funcione correctamente es necesario que la auditoría esté activada.

Sintaxis:
AUDIT
{ sql_statement_clause | schema_object_clause | NETWORK }
[ BY { SESSION | ACCESS } ]
[ WHENEVER [ NOT ] SUCCESSFUL ] ;

• sql_statement_clause: activa la auditoría para una sentencia SQL concreta.


• schema_object_clause: activa la auditoría para un objeto concreto de la base de datos.
• WHENEVER SUCCESSFUL: activa la auditoría sólo para operaciones e instrucciones SQL en
objetos de esquema que se completen con éxito.
• WHENEVER NOT SUCCESSFUL: activa la auditoría sólo para operaciones e instrucciones
SQL en objetos de esquema que originen error.

La sintaxis de este comando tiene muchas más opciones, disponibles en:


http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_4007.htm#SQLR
01107.

Funcionamiento comando noaudit


La instrucción noaudit se utiliza para detener la actividad de auditoría que se había activado
previamente con la instrucción audit. Esta instrucción no influye en el parámetro audit_trail.

Sintaxis:
NOAUDIT
{ sql_statement_clause | schema_object_clause | NETWORK}
[ WHENEVER [ NOT ] SUCCESSFUL ] ;

• sql_statement_clause: detiene la auditoria de una sentencia SQL concreta.


• schema_object_clause: detiene la auditoría para un objeto concreto de la base de datos.
• WHENEVER SUCCESSFUL: detiene la auditoría sólo para operaciones e instrucciones SQL
en objetos de esquema que se completen con éxito.
• WHENEVER NOT SUCCESSFUL: detiene la auditoría sólo para operaciones e instrucciones
SQL en objetos de esquema que originen error.
3 Base de Datos II, Guía 8

La sintaxis de este comando tiene muchas más opciones, disponibles en:


http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_9017.htm#SQLR
F01607

Prerequisitos para poder ejecutar audit o noaudit


Para activar la auditoría de las instrucciones SQL con el comando audit se necesita el privilegio de
sistema AUDIT SYSTEM.

El usuario que se desee pueda activar la auditoría de objetos de un esquema, tiene que ser el
propietario del objeto o disponer del privilegio de sistema AUDIT ANY. Además, si el objeto que
eligió para la auditoría se ubica en un directorio, incluso habiéndolo creado uno mismo, se
necesita el privilegio de sistema AUDIT ANY.
Base de Datos II, Guía 8 4

Material y Equipo
• Computadora con Oracle 10G XE.
• Guía de Laboratorio.

Procedimiento

El desarrollo de esta práctica está orientado principalmente a la activación de la auditoria en una


base de datos oracle. Lo primero que se debe hacer es comprobar si una instancia de Oracle tiene
activada la auditoría y que la cuenta HR este activada (si HR esta desactivada, activarla para
continuar con la practica).

La activación de la auditoría en Oracle Database viene definida por el valor del parámetro:
audit_trail. Para comprobar si la auditoría de la base de datos está activada ejecutaremos el
siguiente comando SQL:
select name, value
from v$parameter
where name like 'audit_trail'

Para activar la auditoria ejecutaremos el siguiente comando:


ALTER SYSTEM SET audit_trail = "DB" SCOPE=SPFILE;

Para desactivar la auditoría ejecutaremos el siguiente comando:


ALTER SYSTEM SET audit_trail = "NONE" SCOPE=SPFILE;

Nota:
• En Oracle 9i la auditoría viene desactivada por defecto, el valor del parámetro "audit_trail"
está a "NONE".
• En Oracle 11g la auditoría viene activada por defecto, el valor del parámetro "audit_trail"
está a "DB".
• Cuando se realiza un cambio en el archivo spfile, es necesario bajar la base de datos.

LOS COMANDOS AUDIT Y NOAUDIT

Auditorías de inicio de sesión: cada intento de conexión con la base de datos por parte de un
usuario (bien una aplicación externa o las aplicaciones del propio Oracle) puede ser auditado. El
comando para iniciar la auditoría de los intentos de inicio de sesión es:
audit session;

El comando anterior auditará tanto los intentos fallidos como los aciertos. Realizaremos un par de
pruebas para verificar que la auditoria funciona, nos conectaremos con el usuario HR con dos
intentos fallidos y con un acierto, luego ejecutaremos la siguiente con consulta:

select OS_Username Usuario_SO,


Username Usuario_Oracle,
Terminal ID_Terminal,
DECODE (Returncode,
'0', 'Conectado',
'1005', 'Fallo - Null',
'1017', 'Fallo',
'28000','Cuenta bloqueada',
5 Base de Datos II, Guía 8

Returncode) Tipo_Suceso,
TO_CHAR(Timestamp, 'DD-MM-YY HH24:MI:SS') Hora_Inicio_Sesion,
TO_CHAR(Logoff_Time, 'DD-MM-YY HH24:MI:SS') Hora_Fin_Sesion
from DBA_AUDIT_SESSION;

Para auditar sólo los intentos fallidos utilizaremos el comando:


audit session whenever not successful;

Para auditar sólo las conexiones correctas utilizaremos el comando:


audit session whenever successful;

Auditorías de acción: cualquier acción que afecte a un objeto de la base de datos (tabla, enlace
de base de datos, espacio de tablas, sinónimo, segmento de anulación, usuario, índice, etc.)
puede auditarse. Las posibles acciones que pueden auditarse (create, alter, drop) sobre estos
objetos pueden agruparse para simplificar la cantidad de esfuerzo administrativo necesario para
determinar y mantener las opciones de configuración de la auditoría. Por ejemplo, para auditar
todos los comandos que afectan a los roles puede emplearse el comando SQL:
audit role;

Este comando activará la auditoría de las acciones: create role, alter role, drop role y set role.

También se puede ser más selectivo, por ejemplo, si queremos auditar a un usuario concreto
cuando realiza la acción "update" ejecutaremos el siguiente comando:
audit update table by nombre_usuario;

De esta forma se activará la auditoría para el usuario "nombre_usuario" sólo cuando ejecute el
comando "update" para cualquier tabla.

Para el caso lo realizaremos con el usuario HR, crearemos un rol y se lo asignaremos,


posteriormente haremos cambios sobre las tablas que hayamos colocado auditoria y realizaremos
la siguiente consulta:
select OS_Username Usuario_SO,
Username Usuario_Oracle, Terminal ID_Terminal,
Owner Propietario_Objeto,
Obj_Name Nombre_Objeto,
Action_Name Accion,
DECODE (Returncode, '0', 'Realizado', 'Returncode') Tipo_Suceso,
TO_CHAR (Timestamp, 'DD-MM-YY HH24:MI:SS') Hora
from DBA_AUDIT_OBJECT;

Auditorías de objeto: además de las acciones a nivel de sistema sobre objetos, también es
posible auditar las acciones de manipulación de datos sobre objetos. Se pueden auditar
operaciones de select, insert, update y delete sobre tablas. Este tipo de auditoría es similar a la
anterior de auditoría de acción, la única diferencia es que el comando "audit" incorpora un
parámetro nuevo "by session" (el registro de auditoría se escribirá una única vez por sesión) o "by
access" (el registro de auditoría se escribirá cada vez que se acceda al objeto auditado).

Por ejemplo crearemos un usuario donde crearemos las tablas de la guía 7 y realizaremos las
siguientes instrucciones.

Para auditar los "insert" realizados sobre la tabla "TCO_EMPLEADOS" por acceso, el comando será
audit insert on TCO_EMPLEADOS by access;
Base de Datos II, Guía 8 6

Para auditar todas las acciones realizadas en la tabla "TCO_ENC_PARTI" por sesión utilizaremos el
siguiente comando:
audit all on TCO_ENC_PARTI by session;

Comentar acerca de la diferencia entre by acces y by session.

Otro ejemplo, para auditar las eliminaciones de registros de la tabla " TCO_DET_PARTI ":
audit delete TCO_DET_PARTI by access;

Comando noaudit
La instrucción noaudit debe tener la misma sintaxis que la instrucción audit que queramos
detener. Por ejemplo, al usuario micarnet le aplicaremos la siguiente auditoria:
audit session by micarnet;

Auditará los inicios de sesión para el usuario de Oracle " micarnet ", tanto los fallidos como los
correctos. Para desactivar esta auditoría ejecutaremos el comando:
noaudit session by micarnet;

Comentar que ocurre si ejecutamos este comando:


audit session by micarnet;

Que auditará los inicios de sesión para el usuario "micarnet". Y luego este otro:
audit session;

Que aditará los inicios de sesión para todos los usuarios.


Comentar que ocurre si ejecutásemos ahora el comando:
noaudit sesión;
7 Base de Datos II, Guía 8

Tarea
• Investigar todas las posibles acciones a auditar
• Investigar sobre el archivo spfile

Fuentes de Consulta
• Oracle Database Security Guide
• http://www.monografias.com/trabajos908/oracle/oracle2.shtml
• http://download.oracle.com/docs/cd/B28359_01/network.111/b28531/guidelines.htm#BC
GJJBAA
• http://download.oracle.com/docs/cd/B28359_01/network.111/b28531/auditing.htm#CEGG
CIAE
Base de Datos II, Guía 8 8

Hoja de cotejo: 8

Guía 8: Auditoria de Base de datos. Parte I

Alumno: Maquina No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENT Del Conocimiento Conocimiento y Conocimiento


O
20 al deficiente de los explicación completo y
30% fundamentos incompleta de los explicación clara
teóricos fundamentos de los
teóricos fundamentos
teóricos
APLICACIÓN Del
DEL
CONOCIMIENT
40%
O al
60%
ACTITUD

Del No tiene actitud Actitud propositiva Tiene actitud


15% proactiva. y con propuestas proactiva y sus
al no aplicables al propuestas son
30% contenido de la concretas.
guía.
TOTAL 100%

Potrebbero piacerti anche