lunes, 12 de diciembre de 2011

K2B Audit, la forma más sencilla de auditar su aplicación

Saber qué pasó con los datos es un requerimiento común en las aplicaciones de hoy en día. ¿Quién modificó determinado valor?, ¿cuándo? ¿quiénes fueron los que modificaron la lista de precios de mi producto?


¿Por qué auditar?
Cuando se piensa en habiltiar la auditoría de una aplicación muchas veces se piensa solo con el objetivo de encontrar irregularidades en el uso del sistema. Sin embargo, la auditoría nos da mucho más: al permitir tener un historial completo de las modificaciones que se realizaron sobre los datos de nuestro negocio, nos permite por ejemplo: encontrar errores de operación (y nos da los datos para revertirlos) y nos brinda información valiosa de cómo varían nuestros datos en el tiempo.
 

Una linda tentación
 
Cuando decidimos auditar una aplicación GeneXus, una muy linda tentación es agregar reglas en la transacción para almacenar en una estructura los atributos que se modifican.  ¿Por qué no? La transacción es el objeto en el que GeneXus centraliza todos los cambios en la base de datos.
Para que esta aseveración sea correcta uno se debe asegurar que:


  • Todas las modificaciones de las entidades sean realizadas usando la transacción (ya sea con su interfaz o usada como business component).
  • Solo la aplicación hace modificaciones en la base de datos.
El hecho de utilizar siempre el business component para actualizar la base de datos cuando lo hacemos en forma programática es una muy buena práctica de desarrollo. El problema es que no siempre es posible hacer esto. También puede suceder que la aplicación a auditar ya esté desarrollada y testeada y hacer esos cambios puede ser muy costoso. Haciendo esto tampoco nos aseguramos tener en un 100% los datos auditados, dado que no solo nuestra aplicación puede hacer modificaciones en la base de datos. ¿Hay otra manera?
Sí, hay otra manera.
Las transacciones no solamente centralizan las modificaciones de las entidades sino que definen la estructura de un modelo de datos. Leyendo los modelos de datos podemos saber qué atributos están presente en cada una de las tablas y esa información podemos usarla para generar código propio del DBMS.
Entonces con una herramienta podríamos, a partir de la estructura de la transacción, crear automáticamente los triggers que permitan registrar los cambios en la base, almacenando  valor anterior y posterior de cada cambio.


K2B Audit es una herramienta que hace justamente eso.  Permite generar código de triggers para auditar las tablas.  Para esto cuentan con opciones que permiten:


1. Seleccionar qué transacciones se van a auditar.


2. Crear procedimientos que generan el código  de triggers.


3. Ejecutar el código de creación de triggers (Reorganize).


¿Qué usuario se audita?
Por lo general, desde la aplicación uno se conecta a la base de datos bajo un usuario único, por tanto esto muy pocas veces aporta información para la auditoría.  Lo que se quiere realmente es auditar el usuario que se logueó a la aplicación.
¿Cómo se hace esto? GeneXus brinda la posibilidad de hacer que un procedimiento se ejecute después de que la aplicación se conecte con la base de datos (afterconnect).
K2B Audit hace uso de esta facilidad y provee un procedimiento que se ejecuta en el afterconnect y lo que hace es configurar el usuario en una variable local del DBMS, para que luego sea utilizada por los triggers.


Todo muy lindo, ¿y la performance?

Evidentemente siempre vamos a degradar en algo la performance teniendo auditoría. Aún en la solución de implementarla dentro de la transacción, se genera un overhead importante en la aplicación.   Como forma de minimizar el overhead, lo que hacen los triggers es grabar la información de forma no estructurada, para que el trigger consuma el mínimo de tiempo posible. Luego en los momentos que la carga del sistema es baja, se podrá  ejecutar un procedimiento que se encarga de estructurar esa información para que sea consultable y analizable.


Explotación
K2B Audit cuenta con una herramienta web (K2BAuditAnalyzer) que permite analizar los datos auditados.

Esta aplicación provee distintos tipos de consultas:  Desde consultas básicas por operación; esto es fecha hora de modificación, usuario que hizo las mismas; hasta consultas más avanzadas filtrando por datos específicos de la aplicación. 





Por ejemplo, estas consultas permiten saber quienes modificaron la factura AKA342, quienes modificaron el atributo Sueldo del Funcionario “Juan Carlos”, etc.  Este tipo de consultas es posible definirlas dinámicamente desde la aplicación de explotación de auditoría.




¿Cómo lo pruebo?
Desde el marketplace http://marketplace.genexus.com/viewproductversion.aspx?189,1,0,0,  o desde el sitio www.k2btools.com  se puede bajar una versión  free edition que permite auditar hasta 5 tablas.  Una vez instalado, se puede seguir el manual  que está en la página para configurar la KB.  No es necesario tener instalado K2BTools para usar K2BAudit.
Links recomendados:
Pueden acceder a las charla “K2BAudit la forma más sencilla de auditar su aplicación”  realizada en el XXI Encuentro Genexus:
Parte 1: http://www.youtube.com/watch?v=bzFs83U2pgA&feature=related
Parte 2: http://www.youtube.com/watch?v=OkX9ViVgLOM&feature=related





No hay comentarios:

Publicar un comentario