Auditoria
ABD 2006-2007 1
1
Auditoria en Oracle
2
Índice
• Auditoria .
– Necesidad – Trazas – Estrategias• Auditoria en Oracle
– Parámetro de inicialización – Audit Trail– Audit System – Audit Object
– Habilitar o desabilitar la auditoria – Tablas adicionales de auditoria
3
Auditoria: Necesidad
• 60%-80% de los actos de sabotaje son internos.
• Facilidad que permite al ABD vigilar el uso y los privilegios de los recursos de la Base de Datos.
4
Trazas de auditoria
• Registro histórico de todos los cambios (inserciones, borrados o actualizaciones) de la BD junto con información sobre el usuario que realizó el cambio y en qué momento.
• Los SGBD proporcionan mecanismos para crear trazas de auditoria (varían de un SGBD a otro). Ej. ORACLE AUDIT
• El rendimiento de la BD puede disminuir
5
Estrategias para Auditar
• Evaluar el propósito de la auditoria
• Auditar lo mínimo para conseguir la información requerida (de opciones más generales a opciones más específicas)
• De lo contrario el fichero AUDIT TRAIL puede crecer incontroladamente.
6
Índice
• Auditoria.
– Necesidad – Trazas – Estrategias
• Auditoria en Oracle
– Parámetro de inicialización – Audit Trail
– Audit System – Audit Object
– Habilitar o desabilitar la auditoria – Tablas adicionales de auditoria
Auditoria
ABD 2006-2007 2
7
Auditoria en ORACLE
• El SGBD Oracle tienen la capacidad de auditar todas las acciones que tienen lugar en la BD. Se pueden auditar a tres niveles:
– Sentencias: sentencias SQL ej CREATE TABLE – Privilegios: sobre privilegios utilizados.
– Objetos: sobre sentencias que afectan a objetos determinados ej. DELETE ON ABD01.EMPLEADOS.
• La BD registra todos los intentos de acción, tanto los exitosos como los infructuosos, aunque es un parámetro configurable.
8
Parámetro de Inicialización
• La auditoria o no de una BD se refleja en el valor del parámetro AUDIT_TRAIL del fichero de configuración.
• Posibles valores:
– DB. Permite auditar la BD y almacena los registros en el audit trail de la BD (true)
– OS. Permite auditar la BD y almacena los registros en el audit trail del SO
– NONE No permite auditar (false)
9
Información de AUDIT TRAIL
• Aunque los registros del audit trail pueden contener diferentes tipos de información, lo siguiente aparece siempre:
– USERID Identificador del usuario – SESSIONID Identificador de Sesión – TERMINAL Identificador de Terminal – TIMESTAMP Fecha
– OBJ$NAME Nombre del objeto accedido – STATEMENT Operación realizada
– PRIV$USED Privilegios del Sistema utilizados
10
AUDIT TRAIL
• Los registros de auditoria se almacenan en la tabla SYS.AUD$ / audit trail (comprobar que no se llena)
• La inserción de los registros en la tabla audit trail es independiente de las transacciones, es decir si una transacción termina mal el fichero audit trail no se modifica.
• Todas las inserciones tienen lugar en la fase de ejecución (las del nivel de compilación no tienen efecto en el fichero)
• Auditando una BD no se almacenan los valores de los atributos
11
Vistas de la tabla AUIDIT TRAIL
• DBA_AUDIT_TRAIL: Almacena todas las entradas de audit trail
• DBA_AUDIT_OBJECT: Almacena los datos relativos a los objetos
• DBA_AUDIT_SESSION: Almacena los datos correspondientes a las conexiones y desconexiones
• DBA_AUDIT_STATEMENT: Almacena las entradas correspondientes a las sentencias
• DBA_PRIV_AUDIT: Almacena las entradas
correspondientes a los privilegios auditados. 12
Sentencia AUDIT
AUDIT {privilegios| sentencias|
ALL | ALL PRIVILEGES}
[ BY lista de usuarios]
[ BY {SESSION | ACCESS} ]
[ WHENEVER [NOT] SUCCESSFUL ]
AUDIT SYSTEM
La especificación de la sentencia AUDIT tiene su efecto en las siguientes sesiones
Auditoria
ABD 2006-2007 3
13
Sentencia AUDIT (SQL)
• ALL: todas las sentencias
• Si no se especifica lista de usuarios por defecto hace referencia a todos los usuarios.
14
Tipos de Auditorias (Sentencias)
UPDATE tabla, vista UPDATE TABLE
SELECT FROM tabla, vista SELECT TABLE
LOCK TABLE tabla, vista LOCK TABLE
INSERT INTO tabla, vista INSERT TABLE
GRANT / REVOKE privilegio ON tabla, vista GRANT TABLE
DELETE FROM tabla, vista DELETE TABLE
ALTER TABLE ALTER TABLE
Sentencia Controlada Tipo
CREATE / DROP VIEW VIEW
CREATE / ALTER / DROP USER USER
CREATE / DROP / DELETE FROM TABLE TABLE
GRANT / REVOKE privilegios de sistema SYSTEM GRANT
AUDIT / NOAUDIT SYSTEM AUDIT
CREATE / DROP / ALTER / SET ROLE ROLE
CREATE / DROP DATABASE LINK DATABASE LINK
15
Tipos de Auditorias (Privilegios)
DROP ANY TABLE DELETE ANY TABLE ALTER ANY TABLE CREATE ANY TABLE CREATE TABLE ALTER SESSION CREATE SESSION GRANT ANY ROLE DROP ANY ROLE ALTER ANY ROLE CREATE ROLE
DROP PROFILE
...
ALTER PROFILE
CREATE VIEW CREATE PROFILE
DROP ANY VIEW CREATE MATERIALIZED
VIEW
CREATE ANY VIEW DROP ANY INDEX
DROP USER ALTER ANY INDEX
CREATE USER CREATE ANY INDEX
UPDATE ANY TABLE CREATE DATABASE
LINK
SELECT ANY TABLE AUDIT SYSTEM
LOCK ANY TABLE ALTER SYSTEM
INSERT ANY TABLE ALTER DATABASE
16
Sentencia AUDIT (SQL)
AUDIT {sentencias sobre objetos| ALL}
ON {objeto| DEFAULT}
[ BY {SESSION | ACCESS} ]
[ WHENEVER [NOT] SUCCESSFUL ]
AUDIT OBJECT La especificación de la sentencia AUDIT tiene su efecto en la sesión en curso.
17
Sentencia AUDIT
• ALL: para todas las sentencias
• DEFAULT: para incluir los objetos que no se han creado todavía.
• Se aplica a todos los usuarios
18
Tipos de Auditoria (Objetos)
X X X Procedi
miento
X X X X X X X Vista
X UPDATE
X X X X X X X Tabla
SELECT LOCK INSERT GRANT EXECUTE DELETE
Objetos
AUDIT ALTER
Auditoria
ABD 2006-2007 4
19
BY SESSION / BY ACCESS
• BY SESSION: Introduce un registro por sesión por cada sentencia auditada
• BY ACCESS: Introduce un registro cada vez que se ejecuta la sentencia auditada (
ej. SELECT * FROM EMP, SELECT * FROM EMP)20
SUCCESSFUL/ NOT SUCCESSFUL
• SUCCESSFUL: Sólo audita cuando se termina correctamente
• NOT SUCCESSFUL: Sólo audita cuando no se termina correctamente
Defecto: Siempre
21
Ej. para los tipos de acciones
• Auditando Sentencias ej. AUDIT SESSION
AUDIT ABD01
• Auditando Privilegios
ej AUDIT SELECT ANY TABLE BY ABD01 BY ACCESS
• Auditando Objetos
ej. AUDIT INSERT ON ABD01.EMP BY ACCESS WHENEVER SUCCESSFUL
Además se puede registrar cualquier acción contra la tabla SYS.AUD$
(AUDIT ALL ON SYS.AUD$ BY ACCESS)
22
Desactivar las opciones AUDIT
NOAUDIT {privilegios |sentencias}
[ BY lista usuarios]
[ WHENEVER [NOT] SUCCESSFUL ]
NOAUDIT sentencias sobre objetos ON {objeto| DEFAULT}
[ WHENEVER [NOT] SUCCESSFUL ]
AUDIT OBJECT AUDIT SYSTEM
Debe tener la misma sintaxis que un AUDIT y solo revierte el efecto de esa sentencia concreta
23
Oracle Tables
• DBA_AUDIT_TRAIL Lists all audit trail entries.
• DBA_COL_COMMENTS Describes comments on columns of all tables and views in the database.
• DBA_COL_PRIVS Describes all column object grants in the database.
• DBA_DB_LINKS Lists all database links in the database.
• DBA_OBJ_AUDIT_OPTS Describes auditing options on all objects.
• DBA_OBJECTS Describes all objects in the database.
• DBA_PRIV_AUDIT_OPTS Describes current system privileges being audited across the system and by the user.
• DBA_ROLES Lists all roles that exist in the database.
• DBA_STMT_AUDIT_OPTS Describes the current system auditing options across the system and by the user.
• DBA_SYS_PRIVS Describes system privileges granted to users and roles. This view does not dispaly the username column.
• DBA_TAB_COMMENTS Describes comments on all tables and view in the database.
• DBA_TAB_PRIVS Describes all object grants in the database.
• DBA_TABLESPACES Describes all tablespaces in the database.
• DBA_USERS Describes all users of the database.