Trabajo de Oracle

19
INSTITUTO SUPERIOR TECNOLOGICO CIMAS DIFERENCIAS AUDITORIA EN ORACLE 10g y 11g AUDITORIA ORACLE La auditoría es una de las funciones del servidor de Oracle, con la finalidad de proporcionar la capacidad de rastrear el flujo de información dentro de una base de datos, incluidos los intentos de conexión, las sentencias DDL, y DML. Tenemos la opción 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 conexión a la base de datos con privilegios administrativos. Usted puede optar por especificar las opciones personalizadas de auditoría para controlar otros eventos. DIFERENCIA EN AUDITORIA EN ORACLE 10g ORACLE 11 g MEJORAMIENTO DE LAS OPCIONES DE AUDITORÍA EN ORACLE 11g Oracle database 11g trae dos mejoras con respecto al tema de auditorías a nivel de la base de datos. La primera de ellas es que con la versión 11g el parámetro “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 parámetro y por ende de bajar a la base, como se tenía que hacer hasta la versión 10g, ya que este parámetro es estático. La segunda mejora es nuevas opciones que se auditan por default, las cuales se listan a continuación: 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 Página 1

Transcript of Trabajo de Oracle

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

AUDITORIA ORACLE

La auditoría es una de las funciones del servidor de Oracle, con la finalidad de proporcionar la capacidad de rastrear el flujo de información dentro de una base de datos, incluidos los intentos de conexión, las sentencias DDL, y DML.

Tenemos la opción 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 conexión a la base de datos con privilegios administrativos. Usted puede optar por especificar las opciones personalizadas de auditoría para controlar otros eventos.

DIFERENCIA EN AUDITORIA EN ORACLE 10g ORACLE 11 g

MEJORAMIENTO DE LAS OPCIONES DE AUDITORÍA EN ORACLE 11g

Oracle database 11g trae dos mejoras con respecto al tema de auditorías a nivel de la base de datos.La primera de ellas es que con la versión 11g el parámetro “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 parámetro y por ende de bajar a la base, como se tenía que hacer hasta la versión 10g, ya que este parámetro es estático.

La segunda mejora es nuevas opciones que se auditan por default, las cuales se listan a continuación:

CREATE SESSIONCREATE USERALTER USERDROP USERROLECREATE ANY TABLEALTER ANY TABLE DROP ANY TABLECREATE PUBLIC DATABASE LINKGRANT ANY ROLEALTER DATABASE

CREATE ANY PROCEDUREALTER ANY PROCEDUREDROP ANY PROCEDUREALTER PROFILEDROP PROFILEGRANT ANY PRIVILEGECREATE ANY LIBRARYEXEMPT ACCESS POLICYGRANT ANY OBJECT PRIVILEGECREATE ANY JOBCREATE EXTERNAL JOB

Entonces con la versión 11g por default se empiezan a auditar estas acciones, sin necesidad de cambiar el parámetro AUDIT_TRAIL y sin tener que ingresar la sentencia “AUDIT sentencia”

Página 1

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

ORACLE 11GR2 : NUEVA CARACTERÍSTICA AUDIT TRAIL CLEANUP

Típico que un DBA pueda colocarle auditoría a una base de datos, ya sea, en Sistema Operativo o en base de datos a través de la tabla SYS.AUD$, incluso puede ir más allá y colocarle auditoría fina, la llamada FGA

Hasta allí , ninguna novedad, la novedad comienza cuando queremos hacer una mantención de esos archivos, ya sea borrar desde disco los trace, borrar desde las tablas de auditoría 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 auditoría y más… 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 característica de Oracle11gr2 , la cual permite através de un package realizar el manejo de los registros de auditoría, el package que realiza tanmaravillosa tarea se llama DBMS_AUDIT_MGMT, este package permite manejar tanto registros anivel de S.O. , XML, registros en la auditoría Standard, registros en la auditoría fina.Todo lo anterior provee una poderosa herramienta para llevar a cabo la mantención de estosarchivos , que muchas veces pueden provocar inconvenientes en nuestra base de datos,

Disponibilidad del package DBMS_AUDIT_MGMTEste package nace exclusivamente para Audit Vault 10.2.0.3 y el uso fuera de este utilitario no esta soportada, sin embargo , desde la versión 11gr2 está disponible de forma libre, aunque fueliberada para la versión 11gr1 especificamente en el patchset 11.1.0.7, además está disponiblepara la versión 10.2.0.3 en el parche 6989148 , también disponible en la versión 10.2.0.4 en el parche 6996030

Página 2

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

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 , registrosy XML generados por la activación de la auditoría.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 parámetro AUDIT_FILE_DEST, los únicos archivos que no se eliminan son lostrace generados en la auditoría de las conexiones de SYS.

Donde audit_trail_type puede ser :

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL : Borra todos los registros de auditoría, ya

sea , la auditoría fina (FGA) , la auditoría común (Audit Trail) y los archivos de auditoría

generados en Sistema Operativo

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD : Sólo borra los registros de la

auditoría Standar (SYS.AUD$)

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD : Borra los registros de la auditoría fina

(SYS.FGA_LOG$)

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES : Borra los archivos de sistema operativo,

ya sea, los traces como los XML

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS : Borra los archivos de sistema operativo

• DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML : Sólo borra los XML que se generan en

Sistema Operativo , creados mediante la auditoría

Todos esos valores son constantes definidas en el package DBMS_AUDIT_MGMT

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 después de la

generación del último archive

Página 3

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Para borrar las entradas de la tabla de auditoría no importando si se generaron antes o después 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 );

Configuración de Auditoria 11g y 10g

Para la auditoria en Oracle 10g debemos tomar en cuenta ciertos parámetros, 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;

Para habilitar la auditoría, se debe fijar el parámetro AUDIT_TRAIL que se encuentra en el fichero init.ora. Los registros de auditoría se almacenan en la tabla SYS.AUD$ o bien su gestión se deja al SO. Cuando se decide utilizar la tabla SYS.AUD$ esta debe revisarse periódicamente, por si hiciera falta truncarla debido a que su aumento de tamaño puede causar problemas de espacio en el tablespace system.

Haremos una descripción de cada parámetro 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 gestión

Página 4

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

.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 auditoría 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 opción XML es nueva en esta versión de Oracle 10g.

El parámetro estático AUDIT_SYS_OPERATIONS activa o desactiva la auditoría 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 auditoría se escriben en el sistema operativo de auditoría.

El parámetro AUDIT_FILE_DEST especifica el directorio utilizado para la pista de auditoría cuando se active os y xml se utilicen estas opciones. También es la ubicación de auditoría obligatoria para todas las especificaciones para el parámetro AUDIT_SYS_OPERATIONS.Para habilitar la auditoría directa y los registros de auditoría a la base de datos debemos hacer lo siguiente:

SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;SQL> SHUTDOWNSQL> STARTUP

Para una mejor comprensión haremos el siguiente ejemplo primero creamos un nuevo usuario llamado AUDIT_TEST.

CONNECT sys/password AS SYSDBA

CREATE USER audit_test IDENTIFIED BY passwordDEFAULT TABLESPACE usersTEMPORARY TABLESPACE temp

Página 5

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

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 auditoría para el usuario audit_test, para lo cual utilizamos el comando AUDIT (activa la auditoría sobre algún objeto), en el caso que se desee desactivar la auditoria utilizamos NOAUDIT.

CONNECT sys/password AS SYSDBAAUDIT 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;

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

Página 6

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

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

Página 7

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Para apreciar el contenido de la tabla $sys.aud, tenemos dos opciones ver directamente su contenido o a través de las siguientes vistas, con la siguiente sentencia:

SELECT view_nameFROM dba_viewsWHERE 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 auditoría se han combinado para facilitar la visualización en DBA_COMMON_AUDIT_TRAIL.

Además, ahora es posible escribir las pistas de auditoría de información, 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 auditoría generada en un archivo XML.

DBA_AUDIT_TRAIL

La vista más básica de la base de datos de auditoría es provista por el DBA_AUDIT_TRAIL (AUD$) contiene una amplia variedad de información. Para visualizarlo utilizaremos la siguiente consulta:

SELECT username, extended_timestamp, owner, obj_name, action_nameFROM dba_audit_trailWHERE owner = 'AUDIT_TEST'ORDER BY timestamp;

Página 8

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Cuando la pista de auditoría está dirigida a un archivo de formato XML OS, se puede leer con un editor de texto o a través de la V$XML_AUDIT_TRAIL, contiene información similar a la DBA_AUDIT_TRAIL

SELECT db_user, extended_timestamp, object_schema, object_name, actionFROM v$xml_audit_trailWHERE object_schema = 'AUDIT_TEST'

Página 9

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

ORDER BY extended_timestamp;

La auditoría debe ser planificada cuidadosamente para controlar la cantidad de información que se generará con la misma, con el tiempo se puede mejorar el nivel de auditoría para que coincida con las necesidades.

La modificación de los datos en la pista de auditoría sí puede lograr utilizando la siguiente declaración:

AUDIT INSERT, UPDATE, DELETE ON sys.aud$ BY ACCESS;

Página 10

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

DBA_FGA_AUDIT_TRAIL

Fine-grained auditing only (from FGA_LOG$) a través de una paquete llamado DBMS_FGA, este paquete permite aplicar la auditoría en un nivel extremadamente bajo de granularidad en cualquier tabla en la base de datos a través de un objeto de base de datos llamada política de FGA. Una política asegura que la auditoría sólo se realizará cuando se haga referencia a una o más columnas en una tabla o vista. Por ejemplo, se puede decir que se ejecute una auditoría a la sentencia SELECT solo cuando haga referencia a una o más columnas especificadas.

También se puede configurar una política FGA para que la auditoría sólo se active cuando un subconjunto específico de datos haya sido afectado. Por ejemplo, se puede hacer un trigger para iniciar una auditoría sólo cuando una fila de datos sea cambiada a través de un UPDATE que satisfaga los criterios especificados. Oracle 10g también permite la especificación de una condición NULL si no hay condiciones para aplicar.

FGA es independiente de AUDIT_TRAIL, todos los registros de auditoría 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;

Página 11

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Ahora vamos a crear una política de auditoría, 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..)

Página 12

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Ahora manipulamos la tabla emp para saber si la auditoria está funcionando:

conn audit_test/passwordselect sal from emp where ename = 'tim';select sal from emp where ename = 'larry';

conn sys/password as sysdbaselect sql_textfrom dba_fga_audit_trail;

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

Página 13

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS 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 sysdbatruncate table fga_log$;select sql_text from dba_fga_audit_trail;

Aplicar la política para la columna sal de la table empbegin 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;/

Comprobación de la política 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;

Página 14

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Verificando los datos en audit trail.

conn sys/password as sysdbaselect sql_text from dba_fga_audit_trail;

Elimanción de la politica de auditoriaconn sys/password as sysdbabegin dbms_fga.drop_policy( object_schema => 'audit_test', object_name => 'emp', policy_name => 'sal_audit');end;/

Página 15

INSTITUTO SUPERIOR TECNOLOGICO CIMASDIFERENCIAS AUDITORIA EN ORACLE 10g y 11g

Página 16