AUDITORIA EN ORACLE
VERSIÓN: 11G

- Auditoria informática
- Auditoria en Oracle
- Tablas y Vistas
- Comprobar activación de auditoria
- Comandos audit y noaudit
- Consultas de auditoria
- Descripción de tablas de auditoria
Auditoria informática
Consiste en recoger, agrupar y evaluar evidencias para determinar si un sistema de información salvaguarda el activo empresarial, mantiene la integridad de los datos, lleva a cabo eficazmente los fines de la organización, utiliza eficientemente los recursos, y cumple con las leyes y regulaciones establecidas.
Auditoria para Oracle
En el caso de Oracle, la auditoría es un conjunto de características que permite al administrador de la base de datos y a los usuarios hacer un seguimiento del uso de la base de datos. El administrador de base de datos puede definir la actividad de auditoría predeterminada. 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
.
.
Se pueden auditar tres tipos de acciones: intentos de inicio de sesión, accesos a objetos y acciones de la base de datos. Cuando se realizan auditorías, la funcionalidad de la base de datos es dejar constancia de los comandos correctos e incorrectos. Esto puede modificarse cuando se configura cada tipo de auditoría.
Tablas y Vistas
Oracle almacena en la tabla SYS.AUD$ o en la pista de auditoría del sistema operativo (si lo permite).
Existen varias vistas que se usan para ayudar a la extracción de los datos deseado en una auditoria en esta tabla (SYS.AUD$).
Existen varias vistas que se usan para ayudar a la extracción de los datos deseado en una auditoria en esta tabla (SYS.AUD$).
- ALL_AUDIT_POLICIES
- ALL_AUDIT_POLICY_COLUMNS
- ALL_DEF_AUDIT_OPTS
- ALL_REPAUDIT_ATTRIBUTE
- ALL_REPAUDIT_COLUMN
- APEX_DEVELOPER_AUDIT_LOG
- 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
- DBA_REPAUDIT_ATTRIBUTE
- DBA_REPAUDIT_COLUMN
- DBA_STMT_AUDIT_OPTS
- GV_$XML_AUDIT_TRAIL
- KU$_AUDIT_DEFAULT_VIEW
- KU$_AUDIT_OBJ_BASE_VIEW
- KU$_AUDIT_OBJ_VIEW
- KU$_AUDIT_VIEW
- KU$_PROC_AUDIT_VIEW
- KU$_PROCDEPOBJ_AUDIT_VIEW
- KU$_PROCOBJ_AUDIT_VIEW
- KU$_10_1_AUDIT_VIEW
- MGMT$AUDIT_LOG
- MGMT$ESA_AUDIT_SYSTEM_REPORT
- SM$AUDIT_CONFIG
- USER_AUDIT_OBJECT
- USER_AUDIT_POLICIES
- USER_AUDIT_POLICY_COLUMNS
- USER_AUDIT_SESSION
- USER_AUDIT_STATEMENT
- USER_AUDIT_TRAIL
- USER_OBJ_AUDIT_OPTS
- USER_REPAUDIT_ATTRIBUTE
- USER_REPAUDIT_COLUMN
- V_$XML_AUDIT_TRAIL
Estas vistas se pueden ver ejecutando la consulta SQL:
SELECT view_name
FROM dba_views
WHERE view_name LIKE '%AUDIT%'
ORDER BY view_name
Las principales son:
- DBA_AUDIT_OBJECT: guarda la información relativa a la auditoría de
- DBA_AUDIT_SESSION: guarda la información relativa a la auditoría de los inicios de sesión de los usuarios.
- DBA_AUDIT_TRAIL: muestra la auditoría estándar (de la tabla AUD$)
- USER_AUDIT_TRAIL: muestra la auditoría estándar (de la tabla AUD$) relativa al usuario actual
- DBA_FGA_AUDIT_TRAIL: muestra información de auditoría de grano fino (obtenida de FGA_LOG$). La auditoría de grano fino (FGA) extiende la auditoría estándar y, además, captura la sentencia SQL que ha sido ejecutada.
- DBA_AUDIT_OBJECT: guarda la información relativa a la auditoría de
- DBA_AUDIT_SESSION: guarda la información relativa a la auditoría de los inicios de sesión de los usuarios.
- DBA_AUDIT_TRAIL: muestra la auditoría estándar (de la tabla AUD$)
- USER_AUDIT_TRAIL: muestra la auditoría estándar (de la tabla AUD$) relativa al usuario actual
- DBA_FGA_AUDIT_TRAIL: muestra información de auditoría de grano fino (obtenida de FGA_LOG$). La auditoría de grano fino (FGA) extiende la auditoría estándar y, además, captura la sentencia SQL que ha sido ejecutada.
Nota: Todo lo anterior estará condicionado al tipo de auditoría que se haya establecido para la base de datos Oracle,
Comprobar activación de auditoría
La activación de la auditoría en Oracle viene definida por el valor del parámetro: audit_trail.
Para comprobar si la auditoría de la base de datos está activa ejecutamos el siguiente query :
Para comprobar si la auditoría de la base de datos está activa ejecutamos el siguiente query :
select name, value
from v$parameter
where name like 'audit_trail'
Valores:
- 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.
- 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.
Activa la auditoria
ALTER SYSTEM SET audit_trail = "DB" SCOPE=SPFILE;
Desactivar la auditoria
ALTER SYSTEM SET audit_trail = "NONE" SCOPE=SPFILE;
Nota: En Oracle 11g la auditoria viene activada por defecto, el valor del parámetro "audit_trail" está a "DB".
Comandos audit y noaudit
Audit
Este comando puede funcionar aunque no esté activada la auditoría de la base de datos. Pero no dejara registro alguno guardado.
Auditorías de inicio de sesión:
audit session;
Nota: Auditará tanto los intentos fallidos como los aciertos.Sólo los intentos fallidos : audit session whenever not successful;
Sólo los intentos fallidos : audit session whenever successful;
Auditorías de acción:
Nota: 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
Auditorías de objeto:
audit role;
Nota: Este comando activará la auditoría de las acciones: create role, alter role, drop role y set role.
Auditar a un usuario al realizar la acción "update" :
audit update table by nombre_usuario;
Auditorías de objeto:
Auditar las acciones de manipulación de datos sobre objetos.
Por ejemplo, para auditar los "insert" realizados sobre una tabla:
audit insert on <TABLA> by access;
Nota: al indicar "by access" hay que tener cuidado pues registrará un suceso de auditoría por cada insert, esto puede afectar al rendimiento. De ser así siempre será mejor optar por "by session" que sólo registrará un suceso de auditoría por sesión, aunque es menos exaustivo.
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.
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.
La instrucción noaudit debe tener la misma sintaxis que la instrucción audit que queramos detener.
Por ejemplo, si hemos auditado un usuario con:
Por ejemplo, si hemos auditado un usuario con:
audit session by alonso;
Auditará los inicios de sesión para el usuario de Oracle "alonso", tanto los fallidos como los correctos. Para desactivar esta auditoría ejecutaremos el comando:
noaudit session by alonso;
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.
Consultas de auditoria
- Auditoria en inicio de sesión :
select OS_Username Usuario_SO, Username Usuario_Oracle, Terminal ID_Terminal, DECODE (Returncode, '0', 'Conectado', '1005', 'Fallo - Null', 1017, 'Fallo', 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;
- Auditoria por acción :
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;
Descripción de tablas de auditoria
Estructura de la tabla SYS.AUD$:
Campo | Tipo de datos | Tamaño | Permite nulos |
SESSIONID | NUMBER | 22 | N |
ENTRYID | NUMBER | 22 | N |
STATEMENT | NUMBER | 22 | N |
TIMESTAMP# | DATE | 7 | Y |
USERID | VARCHAR2 | 30 | Y |
USERHOST | VARCHAR2 | 128 | Y |
TERMINAL | VARCHAR2 | 255 | Y |
ACTION# | NUMBER | 22 | N |
RETURNCODE | NUMBER | 22 | N |
OBJ$CREATOR | VARCHAR2 | 30 | Y |
OBJ$NAME | VARCHAR2 | 128 | Y |
AUTH$PRIVILEGES | VARCHAR2 | 16 | Y |
AUTH$GRANTEE | VARCHAR2 | 30 | Y |
NEW$OWNER | VARCHAR2 | 30 | Y |
NEW$NAME | VARCHAR2 | 128 | Y |
SES$ACTIONS | VARCHAR2 | 19 | Y |
SES$TID | NUMBER | 22 | Y |
LOGOFF$LREAD | NUMBER | 22 | Y |
LOGOFF$PREAD | NUMBER | 22 | Y |
LOGOFF$LWRITE | NUMBER | 22 | Y |
LOGOFF$DEAD | NUMBER | 22 | Y |
LOGOFF$TIME | DATE | 7 | Y |
COMMENT$TEXT | VARCHAR2 | 4000 | Y |
CLIENTID | VARCHAR2 | 64 | Y |
SPARE1 | VARCHAR2 | 255 | Y |
SPARE2 | NUMBER | 22 | Y |
OBJ$LABEL | RAW | 255 | Y |
SES$LABEL | RAW | 255 | Y |
PRIV$USED | NUMBER | 22 | Y |
SESSIONCPU | NUMBER | 22 | Y |
NTIMESTAMP# | TIMESTAMP(6) | 11 | Y |
PROXY$SID | NUMBER | 22 | Y |
USER$GUID | VARCHAR2 | 32 | Y |
INSTANCE# | NUMBER | 22 | Y |
PROCESS# | VARCHAR2 | 16 | Y |
XID | RAW | 8 | Y |
AUDITID | VARCHAR2 | 64 | Y |
SCN | NUMBER | 22 | Y |
DBID | NUMBER | 22 | Y |
SQLBIND | CLOB | 4000 | Y |
SQLTEXT | CLOB | 4000 | Y |
OBJ$EDITION | VARCHAR2 | 30 | Y |
No hay comentarios:
Publicar un comentario