You are on page 1of 53

I.S.T.P.

CIBERTEC

AUDITORIA

PROF. LOPEZ AMESQUITA RAUL

AUDITORIA
En

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 .

AUDITORIA

Se 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 recordar

En qu consiste la auditora en Oracle, tablas


y vistas que intervienen
Oracle 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 AUDITORIA

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

EJECUCIN DE VISTAS
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 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 usuarios
Activamos

datos

la auditora de la base de

SQL> alter system set audit_trail = DB scope =


spfile;

Auditoria activada
select 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

TIPOS DE AUDITORIA
Funcionamiento

comando audit
El 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 AUDITORIA

Auditoras 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;

TIPOS DE AUDITORIA

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;

PRE REQUISITO PARA


AUDITORIA

Prerequisitos para poder ejecutar audit


Para 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 sentencia
SQL>

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
SQL>
connect scott/tiger;
creado )

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
SQL>audit
SQL>audit
SQL>audit

insert,update
insert,update
insert,update
insert,update

on
on
on
on

scott
scott
scott
scott

. bonus by acc
. emp by acces
.dept by acces
. salgrade by a

Consultamos la autora
En este caso estamosrealizada.
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 ).

SQL>audit insert,update on scott . bonus by


Miramos
access;la tabla user_obj_audit_opts ( con el usuario scott )
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
Set linesize 300
scott )
Tamao de fuente 10

select

* 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
Set linesize 300
scott )

Tamao de fuente 10
select * 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 resultado
El

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 acceso


La 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, 'DDMM-YY HH24:MI:SS') Hora_Fin_Sesion from
DBA_AUDIT_SESSION;

Consultar los datos de


auditora guardados
Para

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;

noaudit
La 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;

noaudit
Hay 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
AUDITORIA
ALTER

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:


begin
dbms_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 /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sb Ago 1 22:27:18 2009
Copyright (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 nombres4
apellidos4 4000
SAPO01: 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 consulta
OS_USER, el usuario desde donde se inici la sesin del sistema operatico cliente
USERHOST, nombre de la mquina del usuario que realiz la consulta
OBJECT_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 01

Auditar 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?


__________________________________

EJERCICIO 02

11

Que

muestra la siguiente vistas


(ALL_DEF_AUDIT_OPTS).
__________________________
Que muestra las siguiente
consulta
SQL> select * from
all_def_audit_opts;
__________________________________

EJERCICIO 03

11

Que

muestra las siguiente


consulta
SQL> select * from all_def_audit_opts;
__________________________________

EJERCICIO 04

11

Crear

la consulta para mostrar los


siguientes campos : el nombre del usuario
y el tiempo en que se encuentra
conectado, utilizar la vista
DBA_STMT_AUDIT_OPTS

EJERCICIO 05

Escribir

la sentencia para activar la


Auditar de las conexiones exitosas y
fallidas a la base de datos de los
usuarios ADCESAR y SCOTT.

_______________________________

EJERCICIO 06

Indicar

para que sirve AUDIT SYSTEM


y AUDIT ANY.

_________________________

EJERCICIO 07

Escribir

el comando para mostrar las


columnas o descripcin de 5 vistas
vistas en la ppt nmero 36.

EJERCICIO 08

16

Crear

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 scott
Nombre de vistas:
Consulta:

EJERCICIO 9

16

Crear

una
la
sentencia
para
desactivar la auditora del usuario
scott para su proceso de insert y
update.

EJERCICIO 10
El

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.

You might also like