Auditoría en Bases de Datos Sql Server

Estoy recibiendo algunas consultas a través del correo electrónico, y trato de responder lo mejor posible, a pesar que prefiero que dejen un comentario en uno de mis blogs y otra cosa es que no me apuren, los deseos de ayudar son grandes, pero no el tiempo, que siempre queda chico, este mes de Marzo ha sido muy ocupado y he descuidado mis blogs, dandome cuenta que he disminuido la cantidad de entradas, cuando mi intención era aumentarlas. Pero hoy día trataré de responder a una interesante consulta hecha por un lector, que pregunta cual sería la estructura de una tabla de auditoría para una base de datos.

La primera forma: Añadir campos a una tabla



El modo más simple de auditar una tabla es registrando cada cambio fila por fila, sin embargo también es la menos recomendable. Se basa en añadir uno o dos campos testigos que registren la fecha en que se realizen cambios y el usuario que los efectúe, sin embargo cambios en cada columna no son registrados ni auditados, sólo se registra el último usuario que haya hecho un cambio. Por ejemplo si Pilar hace un cambio en la columna "Precio" y luego Juan cambia el valor de la columna "Cantidad" sólo quedará registrado que Juan hizo un cambio. Este tipo de auditoría es algo ingenua pero que puede servir en algunos casos.

Una segunda forma: Triggers y Tablas Espejo


Sql Server tiene en los triggers (desencadenadores o disparadores) una ayuda para llevar a cabo registros de auditoría. Esta forma tiene el siguiente procedimiento:
1. Crear una tabla espejo con los mismo campos que la tabla auditada pero con campos adicionales, como el usuario que haya hecho el cambio, la fecha y la operación realizada que puede ser fila agregada, fila modificada o fila eliminada.
2.Añadir triggers INSERT, UPDATE y DELETE a la tabla origen, de modo que al efectuarse cualquiera de las operaciones indicadas, grabe el mismo registro en la tabla de auditoría, incluyendo los campos de auditoría (usuario,fecha,tipo de operacion).
Esta forma de auditoría, si bien es mejor que la anterior ya que registra cada cambio realizado y almacena un historial completo para cada fila, impone una sobrecarga de operaciones por cada fila, ya que se vuelve a registrar la misma fila con datos adicionales en caso sea insertada, actualizada o eliminada. Y a la vez aumenta el espacio a ocupar.

Manejar datos de auditoría


El almacenar datos de auditoría ocupa una gran cantidad de espacio en disco duro, y manejar esa información se hace muy complicada, especialmente si se realiza con tablas espejo. Hay que saber manejar esa información, y auditar las tablas necesarias.
Una forma de manejarla es almacenando la información de auditoría en otra base de datos. Se crea una base de datos, y preferiblemente almacenarla en otra partición u otro disco duro si la actividad es intensa. Esto aumenta la complejidad de la auditoría, ya que hay que propocionar permisos a los usuarios para grabar información en la segunda base de datos. Se podría crear una vista en la base de datos auditada que muestre los datos en la base de datos de auditoría para darle un nivel de abstracción.

Archivamiento


Generar información de auditoría es un problema para el espacio, y generar mucha data es peor aún. Hay que diseñar un plan de archivamiento de esos datos, no tenerlo es lo peor que se puede hacer.
Un plan de archivamiento podría ser simplemente separar la base de datos de auditoría y crear una nueva. La desventaja sería el extraer información de la base de datos separada. Otra sería programar un script que extraiga o inserte la información, según sea el caso, y grabarla en cintas o cd. En cualquier caso la recuperación y volcado se hace manual y complica la tarea.

Conclusión


Generar data de auditoría en una base de datos es una ventaja y a la vez un problema ya que acarrea costos en espacio de almacenamiento y tiempo en manejarla. Pero aún así es necesaria en ciertas actividades, especialmente la financiera. Como recomendación, la auditoría debería realizarse a ciertas tablas de una base de datos y no a todas, ya que complicaría aún más el proceso de administración.

1 comentario:

Eudorax dijo...

Hola que tal ??

Podeis poner un ejemplo con Triggers sobre auditoria de tablas?? podria ser copn SQL Server??

Saludos cordiales