53
PROF. LOPEZ AMESQUITA RAUL PROF. LOPEZ AMESQUITA RAUL AUDITORIA AUDITORIA I.S.T.P. CIBERTEC I.S.T.P. CIBERTEC

6. Sesion Auditoria.ppt

Embed Size (px)

Citation preview

  • PROF. LOPEZ AMESQUITA RAULAUDITORIAI.S.T.P. CIBERTEC

  • AUDITORIAEn el caso de Oracle Database, la auditora es un conjunto de caractersticas 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 auditora predeterminada. La informacin de las auditoras se almacena en el diccionario de datos, en la tablaSYS.AUD$ o en la pista de auditora del sistema operativo (si lo permite). Lo anterior viene definido en el parmetro audit_trail.

  • AUDITORIASe pueden auditar tres tipos de acciones: intentos de inicio de sesin, accesos a objetos y acciones de la base de datos. Cuando se realizan auditoras, 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 auditora.

    Por ejemplo, se pueden registrar todos los intentos de actualizar los datos de una tabla o slo los intentos fallidos, tambin se pueden registrar todos los inicios de sesin en Oracle o slo los intentos fallidos.

  • Para recordarEn qu consiste la auditora en Oracle, tablas y vistas que intervienenOracle Databasealmacena en el diccionario de datos, en la tabla SYS.AUD$ o en la pista de auditora del sistema operativo (si lo permite). Existen varias vistas que se basan en esta tabla (SYS.AUD$) para mostrar distintos resultados, segn la informacin que se quiera obtener:

  • VISTAS A CONSULTAR CON INFORMACIN DE AUDITORIAALL_AUDIT_POLICIESALL_AUDIT_POLICY_COLUMNSALL_DEF_AUDIT_OPTSALL_REPAUDIT_ATTRIBUTEALL_REPAUDIT_COLUMNAPEX_DEVELOPER_AUDIT_LOGDBA_AUDIT_EXISTSDBA_AUDIT_OBJECTDBA_AUDIT_POLICIESDBA_AUDIT_POLICY_COLUMNSDBA_AUDIT_SESSIONDBA_AUDIT_STATEMENTDBA_AUDIT_TRAILDBA_COMMON_AUDIT_TRAILDBA_FGA_AUDIT_TRAILDBA_OBJ_AUDIT_OPTSDBA_PRIV_AUDIT_OPTSDBA_REPAUDIT_ATTRIBUTE

    DBA_REPAUDIT_COLUMNDBA_STMT_AUDIT_OPTSGV_$XML_AUDIT_TRAILKU$_AUDIT_DEFAULT_VIEWKU$_AUDIT_OBJ_BASE_VIEWKU$_AUDIT_OBJ_VIEWKU$_AUDIT_VIEWKU$_PROC_AUDIT_VIEWKU$_PROCDEPOBJ_AUDIT_VIEWKU$_PROCOBJ_AUDIT_VIEWKU$_10_1_AUDIT_VIEWMGMT$AUDIT_LOGMGMT$ESA_AUDIT_SYSTEM_REPORTSM$AUDIT_CONFIGUSER_AUDIT_OBJECTUSER_AUDIT_POLICIESUSER_AUDIT_POLICY_COLUMNSUSER_AUDIT_SESSIONUSER_AUDIT_STATEMENTUSER_AUDIT_TRAILUSER_OBJ_AUDIT_OPTSUSER_REPAUDIT_ATTRIBUTEUSER_REPAUDIT_COLUMNV_$XML_AUDIT_TRAIL

  • EJECUCIN DE VISTASEstas 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 vistas son:

    DBA_AUDIT_OBJECT: guarda la informacin relativa a la auditora de Objetos DBA_AUDIT_SESSION: guarda la informacin relativa a la auditora de los inicios de sesin de los usuarios.DBA_AUDIT_TRAIL: muestra la auditora estndar (de la tabla AUD$).USER_AUDIT_TRAIL: muestra la auditora estndar (de la tabla AUD$) relativa al usuario actual.DBA_FGA_AUDIT_TRAIL: muestra informacin de auditora de grano fino (obtenida de FGA_LOG$). La auditora de grano fino (FGA) extiende la auditora estndar y, adems, captura la sentencia SQL que ha sido ejecutada.

  • Recordando...Teniendo en cuenta que el parmetro que habilita la posibilidad de auditar la base de datos ORACLE en el init.ora es audit_trail que el comando sql que activa la auditora sobre algo es AUDIT ( para desactivar NOAUDIT ) y que la tabla para mirar ( usuario sys ) el seguimiento de auditora es dba_audit_trail vamos a realizar este sencillo ejemplo.

  • INIT.ORA

  • 2. Activar la auditoria de intento de conexiones fallidas para todos los usuarios.Miramos que actualmente no est activada la auditoria en la base de datos. SQL> select name , value from v$parameter where name like 'audit_trail';

    audit_trail NONE

  • Conectar de usuariosActivamos la auditora de la base de datosSQL> alter system set audit_trail = DB scope = spfile;

  • Auditoria activadaselect name , value from v$parameter where name like 'audit_trail'; audit_trail DB

  • Posibles valores del parmetro audit_trail:

    none: desactiva la auditora de la base de datos.

    os: activa la auditora de la base de datos. Los sucesos auditados se escribirn en la pista de auditora del sistema operativo, no se auditar en Oracle sino en el sistema operativo anfitrin. Esta opcin funcionar dependiendo del sistema operativo.

    db: activa la auditora y los datos se almacenarn en la taba SYS.AUD$ de Oracle.

  • Posibles valores del parmetro audit_trail:

    db, extended: activa la auditora y los datos se almacenarn en la taba SYS.AUD$ de Oracle. Adems se escribirn los valores correspondientes en las columnas SQLBIND y SQLTEXT de la tabla SYS.AUD$.

    xml: activa la auditora de la base de datos, los sucesos ser escritos en ficheros XML del sistema operativo.

    xml, extended: activa la auditora de la base de datos, los sucesos ser escritos en el formato XML del sistema operativo, adems se incluirn los valores de SqlText y SqlBind.

  • TIPOS DE AUDITORIAFuncionamiento comando auditEl comando audit permite iniciar los tipos de auditora que a continuacin se detallan. Este comando puede funcionar aunque no est activada la auditora de la base de datos, pero no dejar constancia, para que funcione correctamente es necesario que la auditora est activada.

  • TIPOS DE AUDITORIAAuditoras de inicio de sesin: cada intento de conexin con la base de datos por parte de un usuario (bien una aplicacin externa o las aplicaciones del propio Oracle) puede ser auditado. El comando para iniciar la auditora de los intentos de inicio de sesin es: audit session;El comando anterior auditar tanto los intentos fallidos como los aciertos.

    Para auditar slo los intentos fallidos utilizaremos el comando:audit session whenever not successful;

    Para auditar slo las conexiones correctas utilizaremos el comando:audit session whenever successful;

  • Auditoras de accin: cualquier accin que afecte a un objeto de la base de datos (tabla, enlace de base de datos, espacio de tablas, sinnimo, segmento de anulacin, 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 configuracin de la auditora. Por ejemplo, para auditar todos los comandos que afectan a los roles puede emplearse el comando SQL: audit role;

    Este comando activar la auditora de las acciones: create role, alter role, drop role y set role.Tambin se puede ser ms selectivo, por ejemplo, si queremos auditar a un usuario concreto cuando realiza la accin "update" ejecutaremos el siguiente comando: audit update table by nombre_usuario;

    De esta forma se activar la auditora para el usuario "nombre_usuario" slo cuando ejecute el comando "update" para cualquier tabla.

    TIPOS DE AUDITORIA

  • Auditoras de objeto: adems de las acciones a nivel de sistema sobre objetos, tambin es posible auditar las acciones de manipulacin de datos sobre objetos. Se pueden auditar operaciones de select, insert, update y delete sobre tablas. Este tipo de auditora es similar a la anterior de auditora de accin, la nica diferencia es que el comando "audit" incorpora un parmetro nuevo "by session" (el registro de auditora se escribir una nica vez por sesin) o "by access" (el registro de auditora se escribir cada vez que se acceda al objeto auditado).Por ejemplo, para auditar los "insert" realizados sobre la tabla "facturacion" por acceso, el comando ser:audit insert on FACTURACION by access;TIPOS DE AUDITORIA

  • Nota: al indicar "by access" hay que tener cuidado pues registrar un suceso de auditora por cada insert, esto puede afectar al rendimiento. De ser as siempre ser mejor optar por "by session" que slo registrar un suceso de auditora por sesin, aunque es menos exaustivo.Otro ejemplo, para auditar todas las acciones realizadas en la tabla "contabilidad" por sesin utilizaremos el siguiente comando: audit all on CONTABILIDAD by session;El comando anterior auditar todas las acciones realizadas sobre la tabla FACTURACION (select, insert, update, delete), pero slo un registro de auditora por cada sesin.Otro ejemplo, para auditar las eliminaciones de registros de la tabla "nminas":audit delete NOMINAS by access;TIPOS DE AUDITORIA

  • PRE REQUISITO PARA AUDITORIAPrerequisitos para poder ejecutar auditPara activar la auditora de las instrucciones SQL con el comando audit se necesita el privilegio de sistema AUDIT SYSTEM.El usuario que se desee pueda activar la auditora de objetos de un esquema, tiene que ser el propietario del objeto o disponer del privilegio de sistema AUDIT ANY. Adems, si el objeto que eligi para la auditora se ubica en un directorio, incluso habindolo creado uno mismo, se necesita el privilegio de sistema AUDIT ANY.Para obtener los resultados de la auditora hay que definir correctamente el parmetro de inicializacin audit_trail. Se podrn definir las opciones de auditora con el comando audit pero, si no est activada la auditora en la base de datos, Oracle no generar los regisros de auditora.

  • Sintaxis comando audit

    AUDIT { sql_statement_clause | schema_object_clause | NETWORK } [ BY { SESSION | ACCESS } ] [ WHENEVER [ NOT ] SUCCESSFUL ] ; sql_statement_clause: activa la auditora para una sentencia SQL concreta.schema_object_clause: activa la auditora para un objeto concreto de la base de datos.WHENEVER SUCCESSFUL: activa la auditora slo para operaciones e instrucciones SQL en objetos de esquema que se completen con xito.WHENEVER NOT SUCCESSFUL: activa la auditora slo para operaciones e instrucciones SQL en objetos de esquema que originen error.La sintaxis de este comando tiene muchas ms opciones, disponibles en la ayuda de Oracle.

  • Activamos la auditora para ver la conexin y desconexin de los usuarios a la base de datos, se hace con la siguiente sentenciaSQL> audit connect;

  • 3. Visualizar las tablas de auditora para comprobar que se insertan datos cuando intentamos conectarnos sin lograrlo.En el apartado anterior hemos activado la auditora para ver como se conectan los usuarios a la base de datos, vamos a realizar varias pruebas y mostrar dnde se puede comprobar que los usuarios se han conectado a la base de datos. Nos conectamos con varios usuarios a la base de datos ( en nuestro caso con system,scott y ADCESAR que estan creado )SQL> connect scott/tiger; SQL> connect sys/cibertec;SQL> connect ADCESAR/ADMINISTRATIVO;

  • Tras habernos conectado a la base de datos miramos la tabla dba_audit_trail para ver que datos contiene.select username , action_name , priv_used , returncode from dba_audit_trail ;select username , action_name from dba_audit_trail where username=ADCESAR;

  • 4,-Activar la auditoria sobre la modificacin de tablas del usuario Scott.Ahora vamos a activar la auditora sobre la modificacin de las tablas sobre el usuario Scott, de esta forma cualquier modificacin realizada en una tabla que pertenezca a este usuario ser registrada en las tablas y podremos ver quien ha realizado esa modifiacin.SQL>audit insert,update on scott . bonus by access; SQL>audit insert,update on scott . emp by access; SQL>audit insert,update on scott .dept by access;SQL>audit insert,update on scott . salgrade by access;

  • Consultamos la autora realizada.En este caso estamos auditando cada una de las tablas que pertenecen al usuario scott ( bonus, emp, dept, salgrade ) en caso de que alguien inserte algo en ellas o realice alguna actualizacin. ( si queremos auditar el borrado o la lectura de alguna fila, solo hay que aadir los permisos de select y delete detrs del comando audit).Al ponerlo by access se guardar un registro en la tabla de auditora por cada intento de insert o update que se realice sobre cada una de las tablas nombradas. ( exite tambin el registro by session, en el cual se registra por sesin nica el intento de insert o update sobre las tablas ). Miramos la tabla user_obj_audit_opts ( con el usuario scott )SQL>audit insert,update on scott . bonus by access; SQL>audit insert,update on scott . emp by access; SQL>audit insert,update on scott .dept by access;SQL>audit insert,update on scott . salgrade by access;

  • Ver resultados Miramos la tabla user_obj_audit_opts ( con el usuario scott )Set linesize 300Tamao de fuente 10select * from user_obj_audit_opts; Y observamos que es lo que estamos auditando del usuario scott, en este caso se vera que eta activada para cada una de las tablas la auditora para update e insert.

  • Ver resultados Miramos la tabla user_obj_audit_opts ( con el usuario scott )Set linesize 300Tamao de fuente 10select * from user_obj_audit_opts;

    Y observamos que es lo que estamos auditando del usuario scott, en este caso se vera que eta activada para cada una de las tablas la auditora para update e insert.

  • Caracteres en el resultadoEl carcter "-" indica que la opcin de auditora no esta fijada.

    EL carcter "S" indica que la opcin de auditora esta fijada BY SESSION.

    El carcter "A" indica que la opcin de auditora esta fijada BY ACCESS.

  • (A/A) --> activado / por accesoLa prueba que se puede realizar es conectarse con otro usuario que tenga permisos de insert y update sobre estas tablas y realizar una serie de inserciones y actualizaciones en esas tablas. En este caso suponemos que un usuario, user9 que tiene permisos de insercin y actualizacin sobre las tablas del usuario scott ha realizado una serie de inserciones y actualizaciones sobre estas tablas. La forma de ver si las ha realizado o no ( teniendo activada la auditora es la siguiente ).

  • Consultar los datos de auditora guardados

    Dependiendo del tipo de auditora que queramos consultar utilizaremos una u otra consulta SQL.Para el caso de la auditora de inicio de sesin utilizaremos la siguiente consulta SQL:

    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;

  • Consultar los datos de auditora guardadosPara el caso de la auditora de accin utilizaremos la siguiente consulta SQL: 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;

  • noauditLa instruccin noaudit se utiliza para detener la actividad de auditora que se haba activado previamente con la instruccin audit. Esta instruccin no influye en el parmetro audit_trail.La instruccin noaudit debe tener la misma sintaxis que la instruccin audit que queramos detener. Por ejemplo, si hemos auditado un usuario con:audit session by alonso;Auditar los inicios de sesin para el usuario de Oracle "alonso", tanto los fallidos como los correctos. Para desactivar esta auditora ejecutaremos el comando:noaudit session by alonso;

  • noauditHay que tener en cuenta que el comando noaudit slo desactiva la auditora de su comando audit anlogo. Por ejemplo, si ejecutamos este comando:audit session by alonso;Que auditar los inicios de sesin para el usuario "alonso". Y luego este otro: audit session;Que aditar los inicios de sesin para todos los usuarios. Si ejecutsemos ahora el comando: noaudit sesin;Desactivara el comando "audit session", pero segura auditndose al usuario "alonso", puesto que an estara activo el comando "audit session by alonso".

  • DESACTIVAR AUDITORIAALTER SYSTEM SET audit_trail = "NONE" SCOPE=SPFILE;

  • Posibles acciones a auditar, contenido de la vista audit_actions:

  • TAREA

    con esta valiosa herramienta pudiera auditar operaciones registradas que no corresponden a los parmetros, como por ejemplo expedir cheques por montos mayores a $2,000.00 exclusivamente.

  • Usamos el paquete dbms_fga para crear una politica de auditoria sobre una tabla o vista determinada(en nuestro caso la tabla hr.empleados), si cualquiera de las filas retornadas desde una consulta(query sql) ejecutadas por cualquier usuario coincide con la columna auditada y la condicin de auditoria especificada entonces un evento de auditoria ser creado y almacenado en las pistas de auditoria de Oracle. Opcionalmente, el evento de auditoria puede tambien ejecutar un procedimiento, La auditoria detallada se enfoca en un nivel declarativo(sql) es as que una declaracin select que retorna cientos de filas generar solo un registro de auditoria.

  • El bloque pl/sql que crea la politica de auditoria es el siguiente:begindbms_fga.add_policy (object_schema=>'hr',object_name=>'empleados',policy_name=>'auditoria_sueldo_empleado',audit_condition=>'sueldo>3000',audit_column=>'sueldo',handler_schema=>null,handler_module=>null,enable=>true,statement_types=>'select');end;

  • Ahora entramos con cualquiera de los usuarios creados enteriormente desde sqlplus y ejecutamos una consulta sobre la tabla que ya hemos configurado para que sea auditada:C:\Documents and Settings\Pc>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on Sb Ago 1 22:27:18 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.nolog> connect sapo01/sapo01@optimus;Conectado.SAPO01: OPTIMUS> select * from hr.empleados where sueldo=4000;CO NOMBRES-- ----------------------------------------APELLIDOS SUELDO---------------------------------------- ----------04 nombres4apellidos4 4000SAPO01: OPTIMUS>

  • Ahora como usuario dba vemos los registros de auditoria creados, consultando a la vista dba_fga_audit_trail vemos algunos datos relevantes, entre los que destacan:DB_USER, el usuario que realiz la consultaOS_USER, el usuario desde donde se inici la sesin del sistema operatico clienteUSERHOST, nombre de la mquina del usuario que realiz la consultaOBJECT_SCHEMA, el nombre del esquema auditado(hr en nuestro caso)OBJECT_NAME, nombre de la tabla vista auditada(empleados en nuestro caso)POLICY_NAME, nombre de la politica creada(auditoria_sueldo_empleado)SQL_TEXT, el sql que ejecut el usuario El proceso de auditora creado es bastante simple, en tu trabajo quizs quieras auditar tablas o vistas crticas que involucran miles de accesos por minuto, por lo que estos tipos de registros de auditoria debes de hacerlo con mucho cuidado y solo en casos en que lo amerite, como dije al comienzo una auditora mal creada puede devenir en un performance negativo.Posted by Carlos Cacique at 7:23 PM Labels: auditoria, certificacion, fga, oca, oracle

  • Consulta Oracle SQL para conocer la memoria Share_Pool libre y usada select name,to_number(value) bytes from v$parameter where name ='shared_pool_size' union all select name,bytes from v$sgastat where pool = 'shared pool' and name = 'free memory'

  • Consulta Oracle SQL para conocer los aciertos de la cach (no debera superar el 1 por ciento) select sum(pins) Ejecuciones, sum(reloads) Fallos_cache, trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos from v$librarycache where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');

  • EJERCICIO 01Auditar cualquier cambio(audit insert, update, delete on sys.aud$ by access; ) que se realice en el audit trail.

    Mostrar la consulta sql para verificar la uditoria?

    __________________________________

  • 11EJERCICIO 02Que muestra la siguiente vistas(ALL_DEF_AUDIT_OPTS).__________________________Que muestra las siguiente consultaSQL> select * from all_def_audit_opts;__________________________________

  • 11EJERCICIO 03Que muestra las siguiente consultaSQL> select * from all_def_audit_opts;

    __________________________________

  • 11EJERCICIO 04Crear la consulta para mostrar los siguientes campos : el nombre del usuario y el tiempo en que se encuentra conectado, utilizar la vistaDBA_STMT_AUDIT_OPTS

  • 7EJERCICIO 05Escribir la sentencia para activar la Auditar de las conexiones exitosas y fallidas a la base de datos de los usuarios ADCESAR y SCOTT.

    _______________________________

  • 4EJERCICIO 06Indicar para que sirve AUDIT SYSTEM y AUDIT ANY.

    _________________________

  • 4EJERCICIO 07Escribir el comando para mostrar las columnas o descripcin de 5 vistas vistas en la ppt nmero 36.

  • 16EJERCICIO 08Crear una consulta para mostrar el nombre de la tabla, el usuario y la fecha en que hizo alguna actividad como insert , delete y update. Tomar como referencia el usuario scottNombre de vistas:

    Consulta:

  • 16EJERCICIO 9Crear una la sentencia para desactivar la auditora del usuario scott para su proceso de insert y update.

  • EJERCICIO 10El encargado de administrar las bases de datos desea auditar operaciones registradas; por ejemplo insertar montos mayores a $2,000.00 en la columna sal de la tabla emp que le pertenece al usuario scott. Deber mostrar una referencia de como hacer dicha operacin.

    CibertecCibertec*TABLESPACE temp todas las consultas que realise Aaron se guardaran en el tablespace CibertecCibertec*userID = oracle asigna un id cuando se crea un objetoCibertecCibertec*userID = oracle asigna un id cuando se crea un objetoCibertecCibertec*Privilegios sobre objetos Privilegio sobre BD (Sistema)CibertecCibertec*Privilegios sobre objetos Privilegio sobre BD (Sistema)