Está en la página 1de 17

INSTITUTO SUPERIOR TECNOLOGICO CIMAS

DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

AUDITORIA ORACLE
La auditora es una de las funciones del servidor de Oracle, con la finalidad de proporcionar la capacidad de rastrear el flujo de informacin dentro de una base de datos, incluidos los intentos de conexin, las sentencias DDL, y DML. Tenemos la opcin de seleccionar los acontecimientos que se desee monitorear, cabe recalcar que una serie de eventos en Oracle son auditados por defecto, por ejemplo: inicio, lugar de cierre, y los intentos de conexin a la base de datos con privilegios administrativos. Usted puede optar por especificar las opciones personalizadas de auditora para controlar otros eventos. DIFERENCIA EN AUDITORIA EN ORACLE 10g ORACLE 11 g MEJORAMIENTO DE LAS OPCIONES DE AUDITORA EN ORACLE 11g Oracle database 11g trae dos mejoras con respecto al tema de auditoras a nivel de la base de datos. La primera de ellas es que con la versin 11g el parmetro AUDIT_TRAIL viene con el valor de DB por default, y no con el valor de NONE como en versiones anteriores. Con esto ya podemos empezar a auditar ciertas tareas y actividades en ciertos objetos sin la necesidad de modificar este parmetro y por ende de bajar a la base, como se tena que hacer hasta la versin 10g, ya que este parmetro es esttico. La segunda mejora es nuevas opciones que se auditan por default, las cuales se listan a continuacin:

CREATE SESSION CREATE USER ALTER USER DROP USER ROLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE CREATE PUBLIC DATABASE LINK GRANT ANY ROLE ALTER DATABASE

CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE ALTER PROFILE DROP PROFILE GRANT ANY PRIVILEGE CREATE ANY LIBRARY EXEMPT ACCESS POLICY GRANT ANY OBJECT PRIVILEGE CREATE ANY JOB CREATE EXTERNAL JOB

Entonces con la versin 11g por default se empiezan a auditar estas acciones, sin necesidad de cambiar el parmetro AUDIT_TRAIL y sin tener que ingresar la sentencia AUDIT sentencia

Pgin a1

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

ORACLE 11GR2 : NUEVA CARACTERSTICA AUDIT TRAIL CLEANUP Tpico que un DBA pueda colocarle auditora a una base de datos, ya sea, en Sistema Operativo o en base de datos a travs de la tabla SYS.AUD$, incluso puede ir ms all y colocarle auditora fina, la llamada FGA Hasta all , ninguna novedad, la novedad comienza cuando queremos hacer una mantencin de esos archivos, ya sea borrar desde disco los trace, borrar desde las tablas de auditora etc. , ni hablar de generar un Job, casi siempre creamos una Shell y probablemente ni siquiera sepamos Shell Script.. Pues bien, les puedo comentar que desde Oracle11gr2 aparece un package llamado DBMS_AUDIT_MGMT, que puede hacer todas las labores pensadas para archivos de auditora y ms ahora lo mejor, est disponible en Oracle10gr2 (10.2.0.3 y 10.2.0.4) , si tal cual lo escuchan , disponible en estas versiones nicamente instalando un parche.

Qu es el Audit Trail Clean? Es una nueva caracterstica de Oracle11gr2


, la cual permite a travs de un package realizar el manejo de los registros de auditora, el package que realiza tan maravillosa tarea se llama DBMS_AUDIT_MGMT, este package permite manejar tanto registros a nivel de S.O. , XML, registros en la auditora Standard, registros en la auditora fina. Todo lo anterior provee una poderosa herramienta para llevar a cabo la mantencin de estos

Pgin a2

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

archivos , que muchas veces pueden provocar inconvenientes en nuestra base de datos,

Disponibilidad del package DBMS_AUDIT_MGMT


Este package nace exclusivamente para Audit Vault 10.2.0.3 y el uso fuera de este utilitario no esta soportada, sin embargo , desde la versin 11gr2 est disponible de forma libre, aunque fueliberada para la versin 11gr1 especificamente en el patchset 11.1.0.7, adems est disponiblepara la versin 10.2.0.3 en el parche 6989148 , tambin disponible en la versin 10.2.0.4 en el
parche 6996030 No est soportado para versiones 9.2.0.x y 10.1.0.x

Borrado de archivos de trace


Mediante el package DBMS_AUDIT_MGMT se puede realizar el borrado de los archivos , registros y XML generados por la activacin de la auditora. Ejemplo :
SQL> exec dbms_audit_mgmt.clean_audit_trail ( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS , use_last_arch_timestamp => FALSE );

Con esta forma de borrar , se eliminan todos los trace que se encuentran ubicados en la rutaasignada por el parmetro AUDIT_FILE_DEST, los nicos archivos que no se eliminan son lostrace generados en la auditora de las conexiones de SYS. Donde audit_trail_type puede ser : DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL : Borra todos los registros de auditora, ya sea , la auditora fina (FGA) , la auditora comn (Audit Trail) y los archivos de auditora generados en Sistema Operativo DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD : Slo borra los registros de la auditora Standar (SYS.AUD$) DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD : Borra los registros de la auditora fina (SYS.FGA_LOG$) DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES : Borra los archivos de sistema operativo, ya sea, los traces como los XML

Pgin a3

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS : Borra los archivos de sistema operativo DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML : Slo borra los XML que se generan en Sistema Operativo , creados mediante la auditora Todos esos valores DBMS_AUDIT_MGMT son constantes definidas en el package

Donde use_last_arch_timestamp puede ser : FALSE : Esto implica que va a borrar todos los trace , no importando en que fecha se generaron TRUE : Esto implica que no va a borrar los trace que se han generado despus de la generacin del ltimo archive Para borrar las entradas de la tabla de auditora no importando si se generaron antes o despus del ltimo archivo Ejemplo :
SQL> exec dbms_audit_mgmt.clean_audit_trail ( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD , use_last_arch_timestamp => FALSE );

Para borrar todos los archivos (XML,OS,SYS.AUD$,SYS.FGA_LOG$) que se han generado hastael ltimo archive generado Ejemplo :
SQL> exec dbms_audit_mgmt.clean_audit_trail ( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD , use_last_arch_timestamp => FALSE );

Configuracin de Auditoria 11g y 10g Para la auditoria en Oracle 10g debemos tomar en cuenta ciertos parmetros, los cuales los podemos visualizar utilizando el comando show parameter audit, para lo cual debemos estar logeados con un usuario que tenga los suficientes privilegios, utilizamos el usuario sysdba. SHOW PARAMETER AUDIT;

Pgin a4

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Para habilitar la auditora, se debe fijar el parmetro AUDIT_TRAIL que se encuentra en el fichero init.ora. Los registros de auditora se almacenan en la tabla SYS.AUD$ o bien su gestin se deja al SO. Cuando se decide utilizar la tabla SYS.AUD$ esta debe revisarse peridicamente, por si hiciera falta truncarla debido a que su aumento de tamao puede causar problemas de espacio en el tablespace system. Haremos una descripcin de cada parmetro que utiliza audit_trail: AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended } None: deshabilita la auditoria Db: habilita la auditoria, escribiendo en la tabla SYS.AUD$

Os: habilita la auditoria, dejando al SO su gestin .db,extended como db, pero el SQL_BIND y el SQL_TEXT tienen columnas llenas. xml- la auditoria esta activada, con todos los archivos de auditora almacenados en formato xml en los archivos del SO. xml,extended - como xml, pero el SQL_BIND y el SQL_TEXT tiene columnas llenas.

En Oracle 10g Realease 1, db_extended se utiliza en lugar de db,extended. La opcin XML es nueva en esta versin de Oracle 10g. El parmetro esttico AUDIT_SYS_OPERATIONS activa o desactiva la auditora de las operaciones emitidos por los usuarios que se conectan con los privilegios de SYSDBA o SYSOPER, incluido el usuario SYS. Todos los registros de auditora se escriben en el sistema operativo de auditora. El parmetro AUDIT_FILE_DEST especifica el directorio utilizado para la pista de auditora cuando se active os y xml se utilicen estas opciones. Tambin es la ubicacin de auditora obligatoria para todas las especificaciones para el parmetro AUDIT_SYS_OPERATIONS.

Pgin a5

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Para habilitar la auditora directa y los registros de auditora a la base de datos debemos hacer lo siguiente: SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE; SQL> SHUTDOWN SQL> STARTUP

Para una mejor comprensin haremos el siguiente ejemplo primero creamos un nuevo usuario llamado AUDIT_TEST. CONNECT sys/password AS SYSDBA CREATE USER audit_test IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; Le damos los respectivos privilegios al usuario: GRANT connect TO audit_test; GRANT create table, create procedure TO audit_test; Estas son todas las operaciones de auditora para el usuario audit_test, para lo cual utilizamos el comando AUDIT (activa la auditora sobre algn objeto), en el caso que se desee desactivar la auditoria utilizamos NOAUDIT. CONNECT sys/password AS SYSDBA AUDIT ALL BY audit_test BY ACCESS; AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY audit_test BY ACCESS; AUDIT EXECUTE PROCEDURE BY audit_test BY ACCESS; AUDIT CONNECT;

Pgin a6

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Tomando en cuenta que la tabla para monitorear el seguimiento de auditora es dba_audit_trail (con el usuario sys).

Vamos a crear una tabla y un registro en la misma para una mejor ilustracin de la auditoria.

Pgin a7

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Pgin a8

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Para apreciar el contenido de la tabla $sys.aud, tenemos dos opciones ver directamente su contenido o a travs de las siguientes vistas, con la siguiente sentencia: SELECT view_name FROM dba_views WHERE view_name LIKE 'DBA%AUDIT%' ORDER BY view_name;

Las tres principales vistas son:

DBA_COMMON_AUDIT_TRAIL : En Oracle 10gR2, el nivel de FGA y vistas de auditora se han combinado para facilitar la visualizacin en DBA_COMMON_AUDIT_TRAIL. Adems, ahora es posible escribir las pistas de auditora de informacin, ya sea en XML o ampliar los formatos XML a archivos externos. Una nueva vista de Oracle 10g, V$ XML_AUDIT_TRAIL, pueden consultarse directamente para ver el contenido de la pista de auditora generada en un archivo XML.

DBA_AUDIT_TRAIL La vista ms bsica de la base de datos de auditora es provista por el DBA_AUDIT_TRAIL (AUD$) contiene una amplia variedad de informacin. Para visualizarlo utilizaremos la siguiente consulta: SELECT username, extended_timestamp, owner, obj_name, action_name FROM dba_audit_trail

Pgin a9

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

WHERE owner = 'AUDIT_TEST' ORDER BY timestamp;

Cuando la pista de auditora est dirigida a un archivo de formato XML OS, se puede leer con un editor de texto o a travs de la V$XML_AUDIT_TRAIL, contiene informacin similar a la DBA_AUDIT_TRAIL SELECT db_user, extended_timestamp, object_schema, object_name, action

Pgin a 10

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

FROM v$xml_audit_trail WHERE object_schema = 'AUDIT_TEST' ORDER BY extended_timestamp;

La auditora debe ser planificada cuidadosamente para controlar la cantidad de informacin que se generar con la misma, con el tiempo se puede mejorar el nivel de auditora para que coincida con las necesidades. La modificacin de los datos en la pista de auditora s puede lograr utilizando la siguiente declaracin: AUDIT INSERT, UPDATE, DELETE ON sys.aud$ BY ACCESS;

Pgin a 11

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

DBA_FGA_AUDIT_TRAIL Fine-grained auditing only (from FGA_LOG$) a travs de una paquete llamado DBMS_FGA, este paquete permite aplicar la auditora en un nivel extremadamente bajo de granularidad en cualquier tabla en la base de datos a travs de un objeto de base de datos llamada poltica de FGA. Una poltica asegura que la auditora slo se realizar cuando se haga referencia a una o ms columnas en una tabla o vista. Por ejemplo, se puede decir que se ejecute una auditora a la sentencia SELECT solo cuando haga referencia a una o ms columnas especificadas. Tambin se puede configurar una poltica FGA para que la auditora slo se active cuando un subconjunto especfico de datos haya sido afectado. Por ejemplo, se puede hacer un trigger para iniciar una auditora slo cuando una fila de datos sea cambiada a travs de un UPDATE que satisfaga los criterios especificados. Oracle 10g tambin permite la especificacin de una condicin NULL si no hay condiciones para aplicar. FGA es independiente de AUDIT_TRAIL, todos los registros de auditora se almacenan en tabla FGA_LOG$, en lugar de la tabla AUD$. El siguiente ejemplo muestra como se utiliza FGA: Nos logeamos con el usuario audit_test, luego creamos una tabla con sus respectivos campos, e insertamos dos o las filas que se desee: CONN audit_test/password CREATE TABLE emp (empno NUMBER(4) NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2)); INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Tim', 1); INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Larry', 50001); COMMIT;

Pgin a 12

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Ahora vamos a crear una poltica de auditora, la misma que audite los sueldos superiores a 50000. conn / as sysdba; begin dbms_fga.add_policy( object_schema=>AUDIT_TEST, object_name => 'EMP', policy_name => 'SALARY_CHK_AUDIT', audit_condition => 'SAL > 50000', audit_column => 'SAL' ); end; / (Presenta errores..)

Pgin a 13

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Ahora manipulamos la tabla emp para saber si la auditoria est funcionando: conn audit_test/password select sal from emp where ename = 'tim'; select sal from emp where ename = 'larry'; conn sys/password as sysdba select sql_text from dba_fga_audit_trail;

(no se selecciona porque el procedimiento creado anteriormente no se cre)

Pgin a 14

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

El paquete DBMS_FGA contiene los siguientes procedimientos:


ADD_POLICY DROP_POLICY ENABLE_POLICY DISABLE_POLICY

FGA en Oracle9i se limit en queries, pero en Oracle 10g se ha ampliado para incluir sentencias DML, como se demuestra el siguiente ejemplo: conn sys/password as sysdba truncate table fga_log$; select sql_text from dba_fga_audit_trail; Aplicar la poltica para la columna sal de la table emp begin dbms_fga.add_policy( object_schema => 'audit_test', object_name => 'emp', policy_name => 'sal_audit', audit_condition => null, -- equivalent to true audit_column => 'sal', statement_types => 'select,insert,update,delete'); end; / Comprobacin de la poltica anteriormente aplicada: conn audit_test/password select * from emp where empno = 9998; insert into emp (empno, ename, sal) values (9998, 'bill', 1); update emp set sal = 10 where empno = 9998; delete emp where empno = 9998; rollback;

Pgin a 15

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Verificando los datos en audit trail. conn sys/password as sysdba select sql_text from dba_fga_audit_trail; Elimancin de la politica de auditoria conn sys/password as sysdba begin dbms_fga.drop_policy( object_schema => 'audit_test', object_name => 'emp', policy_name => 'sal_audit'); end; /

Pgin a 16

INSTITUTO SUPERIOR TECNOLOGICO CIMAS


DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Pgin a 17