Está en la página 1de 3

CONSIDERACIONES

--La auditora de las instrucciones SQL con el comando audit se necesita el privil
egio de sistema AUDIT SYSTEM.
SELECT name, value from v$parameter WHERE name LIKE 'audit_trail';
Si sale:
--none: desactiva la auditora de la base de datos.
--os: activa la auditora de la base de datos. Los sucesos auditados se escribirn e
n la pista de auditora del sistema operativo, no se auditar en Oracle sino en el s
istema 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.
--db, extended: activa la auditora y los datos se almacenarn en la taba SYS.AUD$ d
e 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 fichero
s 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.
--Para activar la auditora:
ALTER SYSTEM SET audit_trail = "DB" SCOPE=SPFILE;
--Para desactivar la auditora ejecutaremos el siguiente comando:
ALTER SYSTEM SET audit_trail = "NONE" SCOPE=SPFILE;
--Auditorias de inicio de seccion
--Auditar tanto los intentos fallidos como los aciertos
audit session;
--Slo los intentos fallidos utilizaremos el comando:
audit session whenever not successful;
Slo las conexiones correctas utilizaremos el comando:
--audit session whenever successful;

--Auditorias de accin
--Activar la auditora de las acciones: create role, alter role, drop role y set ro
le.
audit role;
--Auditoria de usuario y tabla concreta
audit update table by nombre_usuario;

--Auditoria por objetos


--Auditar los "insert" realizados sobre la tabla "xxx" por acceso
audit insert on xxx by access;
--Auditar todos los comandos
audit all on xxx by session;
--Auditar todas las secciones de usuario "carlos" errados y correctos
audit session by carlos;
--Para desactivar esta auditora ejecutaremos
noaudit session by carlos;
-- SCRIPT PARA CONSULTAR INICIO DE SECCION
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;
-- SCRIPT PARA CONSULTAR AUDITORIA DE ACCION
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;
--EJEMPLO
1.- Crear usuario
CREATE USER "CARLOS" PROFILE "DEFAULT"
IDENTIFIED BY "123456" DEFAULT TABLESPACE "USERS"
ACCOUNT UNLOCK;
GRANT "CONNECT" TO "CARLOS";
GRANT CREATE TABLE TO "CARLOS";
ALTER USER "CARLOS" QUOTA 100M ON "USERS";
2.- Crear tabla
create table facturas (
codigo number primary key,
fecha date default sysdate);
3.- Activar auditoria
audit session by carlos;
4.- Auditoria a la tabla x cualquier cambio
audit all on facturas by access;
5.- Insertamos valores de prueba
insert into facturas (codigo) values (1);
insert into facturas (codigo) values (2);
insert into facturas (codigo) values (3);
select * from facturas;
delete facturas where codigo=2;
update facturas set codigo=33 where codigo=2;
6.- Buscamos los valores auditados
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
where Username="carlos";
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
where Obj_Name = "facturas";