Banner 1

Cómo activar la auditoría de una base de datos

Agradecimientos especiales a black el cual ha puesto varios aportes en el blog y sobre todo la nueva plantilla.

---------------------------------------------------------------------------------------------------------------

Se pretende mediante un sencillo ejemplo práctico para ver cómo se puede auditar las conexiónes a una base de datos ORACLE o auditar los intentos de modificación a las tablas de un usuario.
Teniendo en cuenta que el parámetro 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 auditoría sobre algo es AUDIT ( para desactivar NOAUDIT ) y que la tabla para mirar ( usuario sys ) el seguimiento de auditoría es dba_audit_trail vamos a realizar este sencillo ejemplo.


  • 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
    Activamos la auditoría de la base de datos
    SQL> alter system set audit_trail = DB scope = spfile;
    Reiniciamos la base de datos ( shutdown immediate, startup ) y comprobamos que la auditoría se ha activado.
    SQL> select name , value from v$parameter where name like 'audit_trail';
    audit_trail DB
    Activamos la auditoría para ver la conexión y desconexión de los usuarios a la base de datos, se hace con la siguiente sentencia
    SQL> audit connect;

     


  • Visualizar las tablas de auditoría para comprobar que se insertan datos cuando intentamos conectarnos sin lograrlo.

  • En el apartado anterior hemos activado la auditoría para ver como se conectan los usuarios a la base de datos, vamos a realizar varias pruebas y mostrar dónde 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 y el usuario user9 que está creado )
    SQL> connect user9/user9;
    SQL> connect system/system;
    Tras habernos conectado a la base de datos miramos la tabla dba_audit_trail para ver que datos contiene.
    SQL> select username , action_name , priv_used , returncode from dba_audit_trail ;
    "SYSTEM" "LOGON" 1017
    "SYSTEM" "LOGON" 1017
    "USER9" "LOGON" 1017
    "USER9" "LOGON" "CREATE SESSION" 0
    "USER9" "LOGON" 1017
    "USER9" "LOGON" 1017
    Observarmos que en esta tabla se registran los intentos de conexión de los usuarios, por lo tanto podemos saber quien se ha conectado a la base de datos


  • Activar la auditoria sobre la modificación de tablas del usuario Scott.

  • Ahora vamos a activar la auditoría sobre la modificación de las tablas sobre el usuario Scott, de esta forma cualquier modificación realizada en una tabla que pertenezca a este usuario será registrada en las tablas y podremos ver quien ha realizado esa modifiación.
    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;
    En este caso estamos auditando cada una de las tablas que pertenencen al usuario scott ( bonus, emp, dept, salgrade ) en caso de que alguien inserte algo en ellas o realice alguna actualización. ( si queremos auditar el borrado o la lectura de alguna fila, solo hay que añadir los permisos de select y delete detrás del comando audit).Al ponerlo by access se guardará un registro en la tabla de auditoría por cada intento de insert o update que se realice sobre cada una de las tablas nombradas. ( exite también el registro by session, en el cual se registra por sesión única el intento de insert o update sobre las tablas ).
    Miramos la tabla user_obj_audit_opts ( con el usuario scott )
    SQL>select * from user_obj_audit_opts;
    "BONUS" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-"
    "DEPT" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-"
    "EMP" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-"
    "SALGRADE" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-"
    Y observamos que es lo que estamos auditando del usuario scott, en este caso se vería que eta activada para cada una de las tablas la auditoría para update e insert.
    (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 inserción y actualización 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 auditoría es la siguiente ).
    SQL>select * from sys . dba_audit_trail where ( action_name = 'INSERT' ) or ( action_name = 'UPDATE' ) ;
    El resultado es el siguiente:
    "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:38:56 "SCOTT" "BONUS" 2 "INSERT" 267 2 47 0
    "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:39:09 "SCOTT" "BONUS" 2 "INSERT" 267 3 50 0
    "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:39:19 "SCOTT" "BONUS" 6 "UPDATE" 267 4 55 0
    Observamos que se han registrado los intentos de inserción y de modificación sobre la tabla BONUS.

    Fuente:
    http://www.orasite.com/tutoriales/como-activar-la-auditoria-de-una-base-de-datos.html

    No hay comentarios:

    Powered by Bad Robot
    Helped by Blackubay