Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad: Ingeniería
Escuela: Computación
Asignatura: Base de Datos II
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.
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
Sintaxis:
AUDIT
{ sql_statement_clause | schema_object_clause | NETWORK }
[ BY { SESSION | ACCESS } ]
[ WHENEVER [ NOT ] SUCCESSFUL ] ;
Sintaxis:
NOAUDIT
{ sql_statement_clause | schema_object_clause | NETWORK}
[ WHENEVER [ NOT ] SUCCESSFUL ] ;
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
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'
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.
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:
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;
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.
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;
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;
Que auditará los inicios de sesión para el usuario "micarnet". Y luego este otro:
audit session;
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
EVALUACION