---------------------------------------------------------------------------------------------------------------
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.
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;
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
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:
Publicar un comentario