Você está na página 1de 45

Manual de usuario K2BAudit

Versin 3.5













2

ndice
DESCRIPCIN GENERAL ________________________________________ 4
Esquema general ______________________________________ 4
Generacin de la Auditora ______________________________ 5
Anlisis de Auditora ___________________________________ 5
Instalacin y autorizacin ______________________________________ 6
K2B AUDIT EN TRES PASOS _____________________________________ 7
1. Instalar K2B AUDIT ANALYZER _________________________ 8
2. Aplicar K2B AUDIT a la KB de la aplicacin _______________ 8
Seleccionar Transacciones a Auditar __________________________________9
Seleccionar Atributos a Auditar _____________________________________10
Reorganizacin de K2B AUDIT ______________________________________10
Configuracin ___________________________________________________12
3. Explotacin con K2B AUDIT ANALYZER __________________ 16
Introduccin ____________________________________________________16
Transformacin de Logs __________________________________________17
Analizar la Auditora ______________________________________________19
Analyze By Utl __________________________________________________26
Remove Query Data ______________________________________________27
Personalizacin y Configuraciones Avanzadas ______________________ 29
K2BAudit Analyzer personalizacin _______________________ 29
Configuracin de conversin de logs _________________________________29
Seguridad ______________________________________________________30
Paneles de explotacin ____________________________________________30
Eliminacin de registros viejos ______________________________________30
Configuraciones generador: ____________________________ 31
Configuraciones avanzadas ____________________________ 32
Seleccion de DBMS ______________________________________________32
Nombre de los procedimientos______________________________________32
Nombre de los triggers ___________________________________________33
Nombre de los triggers a nivel de tabla _______________________________33
Actualizacin de descripcin de atributos _____________________________34
Seleccin de atributos a auditar ____________________________________34
Anexo 1: Configuracin Auditora en el DBMS ______________________ 37
MySQL _____________________________________________ 37
Oracle _____________________________________________ 37
Permisos de Usuario _____________________________________________37
Carga de paquete ________________________________________________38
SQL Server __________________________________________ 38


3
DB2 _______________________________________________ 40
Anexo 2: K2B Audit Analizer ___________________________________ 41
Transacciones de auditoria _____________________________ 41
Anexo 3: Extensin de la auditora _______________________________ 42




4

DESCRIPCIN GENERAL

K2BAudit es una extensin para GeneXus XEV1/XEv2 que permite auditar las tablas
de una KB mediante el uso de triggers los cuales registran todas las operaciones
que los usuarios realizan.

La auditora se encuentra implementada para MySQL, Oracle y SQL Server y DB2 for
ISeries para los generadores java y .net. Se ofrece adems la posibilidad de
extenderla por parte del usuario para otros DBMS que se requieran.

En esta documentacin se presentarn las caractersticas generales de la auditoria y
las caractersticas particulares de cada DBMS y generador.

Esquema general







K2BAudit est compuesto por tres componentes:

K2B Audit Extension: Extensin GeneXus, que posibilita generar los
elementos necesarios en su base de conocimiento, para auditar su aplicacin.

Audit Data Base: Base de datos de auditora, donde se almacenan los logs
de cambios realizados en la base de datos de la aplicacin.

K2B Audit Analyzer: Aplicacin que permite analizar los datos auditados.


5

La solucin consta de lo siguiente:
Generacin de la Auditora
En la KB de la aplicacin que se desea auditar, mediante la extensin K2BAudit, se
permite seleccionar qu transacciones son las candidatas a auditar. En base a esto,
se generan y ejecutan automticamente los programas necesarios para crear los
triggers en la base de datos de la aplicacin, los cuales registran cada cambio
realizado (insert, update, delete) en la Audit DataBase.

La informacin que se registra en cada cambio consiste en el valor anterior y
valor posterior de cada uno de los atributos que pertenecen a la tabla auditada.
Los nicos atributos que se excluyen de la auditora son los campos blobs.

En la aplicacin generada, existir adems un objeto que permitir auditar o
deshabilitar la auditora de las tablas seleccionadas en tiempo de ejecucin.

Anlisis de Auditora
Para analizar los cambios registrados en sus datos, se cuenta con una aplicacin
K2B Audit Analyzer que se encarga de brindar herramientas para explotar de
diferentes formas esa informacin.

Auditando ms que su aplicacin
Dado que los triggers se encuentran en la base de datos de la aplicacin, no solo es
auditada la base de conocimiento a la que se le aplica la auditora sino que tambin
cualquier aplicacin, o usuario de la base de datos que realice operaciones sobre esa
base, como se muestra en el siguiente diagrama.











6
Ventajas de la arquitectura
Mediante esta arquitectura K2BAudit no afecta el trabajo de los desarrolladores. No
hay que codificar cdigo extra dependiendo si una tabla est auditada o no. Esto
posibilita tambin la incorporacin de K2BAudit en cualquier momento del desarrollo
y para DBMS que no manejan logs nativos.
El usuario que se audita en la auditora es el usuario de la aplicacin, no el de la base
de datos, permitiendo as identificar al usuario que realmente produjo los cambios.


INSTALACIN Y AUTORIZACIN

Para instalar la versin de K2BAudit, se debe ejecutar el setup y seleccionar el
directorio en donde est instalado GeneXus. Esto genera una nueva opcin en el
men de GeneXus K2BAudit donde tendr las opciones para trabajar con la
auditora.

Una vez finalizada la instalacin, puede autorizar la versin completa, o la puede
utilizar sin autorizacin (modo Free) donde podr auditar hasta 5 tablas.

Para autorizar el producto, puede ir al men K2BAudit dentro de GeneXus y
seleccionar la opcin Authorize K2BAudit. All en la opcin Licence Manager, podr
solicitar licencias de K2BAudit como cualquier producto GeneXus.




Nota: En caso de que no aparezca la opcin K2BAudit en el Licence Manager, desde
el men de K2BAudit ejecutar la opcin Open LicenceManager Folder y ejecutar el
archivo k2btools.reg.



7

K2B AUDIT EN TRES PASOS



El primer paso es instalar K2BAudit
Analyzer el cual crea las estructuras
necesarias para almacenar los logs, y
contiene la aplicacin para explotarlos
luego.





El segundo paso consiste en aplicar
K2BAudit a la KB que se desea auditar, lo
cual genera todo lo necesario para crear
automticamente los triggers en la
aplicacin que son los que generarn los
logs en la K2B Audit DB









Finalmente, todo cambio realizado en su
base de datos, ya sea desde la aplicacin o
en forma directa, estar generando logs de
auditora. Cuando lo desee podr analizar
todo esos datos mediante
K2BAuditAnalyzer.





Veamos en detalle cada uno de estos pasos:



8
1. Instalar K2B AUDIT ANALYZER

K2BAuditAnalyzer es una aplicacin que contiene las estructuras donde se
materializarn los logs de auditora y un conjunto de potentes consultas para su
anlisis.

Actualmente esta aplicacin es provista como una base
de conocimiento GeneXus, para que el desarrollador la
genere en su ambiente y eventualmente pueda
extenderla o adaptarla a sus necesidades.


La instalacin de K2BAudit Analyzer consiste en instalar
la base de conocimiento de la aplicacin, generar su
base de datos (base de datos de auditora) y generar
sus programas.



Pasos de instalacin:
Crear una KB nueva (por ejemplo: K2BAuditAnalyzer)
Consolidar el xpz que se encuentra en
$(GeneXusXEv2InstalationDir)/Packages/K2BTools/Audit/K2BAuditAnalyz
er.xpz si no usa K2BTools. Si usa K2BTools le recomendamos consolidar el
archivo
$(GeneXusXEv2InstalationDir)/Packages/K2BTools/Audit/K2BAuditAnalyz
erK2BTools.xpz
Configurar el modelo segn las caractersticas de su instalacin (generador,
base de datos, etc.)
Configurar la propiedad del modelo Translation Type en RunTime para
habilitar que K2BAuditAnalyzser sea multilenguaje.
Crear la base de auditora (ejemplo de nombre: K2BAudit DataBase),
especificar, generar y compilar la aplicacin.

De esta forma queda pronta la aplicacin K2BAudit Analyzer en su ambiente
(generador, base de datos) para recibir los datos auditados desde sus aplicaciones y
para explotarlos.


2. Aplicar K2B AUDIT a la KB de la aplicacin

Este paso consiste en preparar a su aplicacin para que comience a generar la
auditora. Para ello, desde el ambiente de desarrollo (KB de la aplicacin) podr
seleccionar las transacciones a auditar y crear/reorganizar los triggers en su base
de datos, los cuales se encargarn de generar los logs en la base de datos Audit DB.




9


Seleccionar Transacciones a Auditar

Existen dos maneras de habilitar la auditora para una transaccin en el ambiente de
desarrollo: por medio de una propiedad de la transaccin o mediante un panel que
permite seleccionar varias transacciones a la vez.

Para habilitar la auditora en una transaccin debe configurar en las propiedades de
la transaccin: HasAudit = true.

Para habilitar varias transacciones a la vez, acceda a la opcin en el men
K2BAudit / Select Transactions to Audit.




10


Esto permitir mediante un panel, seleccionar las transacciones a auditar. Una vez
finalizada la seleccin, se debe presionar el botn audit para que se salve la
propiedad audit asociada a las transacciones.
Las transacciones a auditar tambin se podrn configurar luego en tiempo de
ejecucin.






Seleccionar Atributos a Auditar

A partir de la versin 3.0 es posible seleccionar para cada transaccin cules son los
atributos que se van a auditar. Para esto a nivel de atributo dentro de la transaccin,
se cuenta con una propiedad de nombre Audit Attribute. . La misma ser
visualizada en los atributos que forman parte de la tabla base de la transaccin
asociada.


Reorganizacin de K2B AUDIT

Una vez seleccionadas las transacciones a auditar, el siguiente paso es generar la
auditora en su base de datos.





11
La reorganizacin de auditora de su KB es la encargada de crear los triggers de
creacin de logs, en las tablas de su base de datos seleccionadas en el paso anterior.


Para disparar la reorganizacin de auditora,
estando dentro de la KB de su aplicacin, acceda
al men K2B Audit -> Reorganize





12
La opcin Reorganize de K2bAudit, hace lo siguiente: comprueba que los objetos
bsicos de auditora provistos por K2BAudit existan (en caso contrario los consolida
automticamente), genera los objetos GX que crean los triggers a sus tablas, los
genera en el lenguaje y base de datos de su aplicacin y los ejecuta.
Una vez ejecutada esa opcin ya sus tablas quedan con los triggers creados para la
generacin de auditora.

Notar que en su KB, quedarn los objetos GeneXus usados en el Reorganize de
K2BAudit. stos quedan ubicados dentro de la KB, debajo de cada transaccin a
auditar. Tambin queda generado un procedimiento GX K2BAuditReorganize que
invoca a los procedimientos de creacin de triggers de cada transaccin.

Estos procedimientos no son necesarios ejecutarlos manualmente, se generan y
ejecutan cada vez que se ejecute la opcin Reorganize





K2BAudit genera tambin un procedimiento, K2BDropAllTriggers, que incluye
sentencias SQL para eliminar los triggers creados por la auditora.
Si desea eliminar los triggers, ejecute este procedimiento.


-----------------------------------------------------------------------------------------
Nota: Antes de correr la reorganizacin verifique que el DBMS utilizado este
configurado correctamente. Para esto en Preference ir a K2BAudit Settings



Desde ah acceder verificar que la generacin para la plataforma escogida este en
true. Se recomienda en caso de generar K2BAudit para una nica plataforma, poner
esa nicamente en true y el resto en false.


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


13

Configuracin

Hay un conjunto de configuraciones que es necesario realizar la primera vez que se
aplica K2bAudit a una KB.
Configuracin de Data Store de K2BAuditAnalizer
En su KB encontrar un data store llamado K2BAudit que es el que se usa para
generar los logs de las tablas. En este data store debe configurar los datos de
conexin a la base de datos en la cual se almacenar la auditoria. (K2BAuditAnalizer)



Configuracin del usuario de la aplicacin
Una parte importante de la auditora es la obtencin del usuario que est ejecutando
la aplicacin.

Cuando los triggers se disparan, stos saben cul es el usuario de la base de datos
que los dispar (el usuario que se defini en las propiedades del modelo GeneXus)
pero no qu usuario de la aplicacin lo hizo (la persona que accede a la aplicacin
con un nombre de usuario especfico).

Para solucionar esto, K2BAudit ofrece el procedimiento
K2BSaveAuditUserAfterConnect que le permitir especificar cmo obtener el usuario
de su aplicacin, y que lo grabar en la base de datos, para que luego los triggers
puedan obtener dicho usuario.

Para ello abra el procedimiento K2BSaveAuditUserAfterConnect y setee el usuario en
la parte donde indica SetUserCode mediante la variable User.


Luego deber editar las propiedades del generador usado para que en el After
Connect invoque al K2BSaveAuditUserAfterConnect



14


Para el caso de tener DB2 como DBMS, utilice el procedimiento
K2BSaveAuditUserAfterConnectDB2.

Configuracin de informacin de UTL

En SqLServer y Oracle, ser posible conocer en qu utl se realizaron los cambios en
la base y qu otros cambios fueron realizados en la misma. Adems ser posible
conocer cul fue el objeto GeneXus que hizo commit. Para esto es necesario setear
en las propiedad del modelo BeforeCommit el proc K2BBeforeCommitSQLServer o
K2BBeforeCommitOracle segn cul sea el dbms utilizado.



Configuraciones bsicas segn generador

Si se est usando .net existe una configuracin adicional que debe ser realizada.
Para esto ir a la parte Configuraciones Generador.
Configuraciones bsicas segn DBMS
Segn el DBMS seleccionado, se debern seguir los pasos en el anexo para cada uno
de los dbmss en los que est soportada la auditora. Para esto ir al Anexo 1, a la
parte de configuracin del dbms utilizado.




15
Configuracin de las transacciones a Auditar en ejecucin
Luego que la auditora se est ejecutando en su aplicacin, se puede variar las
tablas a auditar en ejecucin. Para ello se cuenta el web panel WWAuditTable,
donde se podr habilitar/deshabilitar la auditora.




AuditSelected: Audita las tablas seleccionadas.
Disable Audit: Desabilita la auditora de las tablas seleccionadas.
AuditAll: Audita todas las tablas.
DisableAll: Elimina la auditora de todas las tablas.




16
3. Explotacin con K2B AUDIT ANALYZER

Introduccin
Luego de haber usado su aplicacin con los triggers generados, ya se puede
explotar esa informacin mediante el K2BAudit Analyzer. (el proceso de instalacin
se describi al principio del manual)



K2BAuditAnalyzer permite:
- Consultar la auditora de diferentes formas
- Configurar filtros basado en los datos de su aplicacin, para esas consultas.
- Manejar los logs generados: transformarlos, borrarlos, etc.
- Configurar la seguridad de acceso a sus diferentes opciones.

La primera vez que se accede se cuentan con dos usuarios predefinidos con
diferentes permisos:

Administrador: Puede acceder a todas las opciones de auditora, de explotacin y
de manejo de logs, y tambin configurar toda la seguridad del sistema. (usuario:
administrator, password: administrator)

AuditUser: Solamente puede acceder a la explotacin de la auditora, pero no puede
administrar logs, ni configurar seguridad. (usuario: audituser, password: audituser)



Para acceder a la aplicacin el usuario deber loguearse.


17


Una vez logueado se acceder a la siguiente pantalla.


Antes de poder consultar los datos auditados con toda la potencia de las consultas,
se deben transformar los logs.

Transformacin de Logs
Los datos de auditora se graban en formatos planos (crudos) como forma de
optimizar la performance, por lo que necesitan una transformacin para ser
explotados en forma eficiente. Mediante la opcin Transform Logs se dispara esta
transformacin. (AuditQueryLoad).

Este proceso se ejecuta de manera sometida. En la pantalla se visualizar la
fecha/hora en la que se comenz a ejecutar el ltimo proceso de transformacin y la


18
fecha/hora en la que finaliz su ejecucin.

Cuando se selecciona run se dispara el proceso.
Al ejecutarlo el status va a pasar de No Executing a Executing.
Mediante el botn de Check Execution se puede chequear si la ejecucin finaliz o
no. Debajo se puede ver informacin acerca de la conversin, relacionada con todos
los procesos que estn convirtiendo y cuntos registros lleva convertidos cada uno.
El estado se actualizar cada vez que se de click en Check Execution.




19
Transformacin de Logs como tarea programada
Este mismo procedimiento de transformacin se puede ejecutar por lnea de
comandos. de forma de poder configurarlo como una tarea programada. Esto
permite ejecutarlo cada determinado tiempo, al final del da, etc.

El procedimiento a programar en la tarea se llama AuditQueryLoadDaemon

Si el generador usado es C#, se debe ejecutar el archivo
AuditQueryLoadDaemon.exe
Si el generador es Java hay que ejecutar la siguiente lnea: java cp
../lib/gxclassR.jar:../lib/DriverDBMSCorrespondiente.jar
auditqueryloaddaemon.
Si se est en ambiente Windows, hay que remplazar el : por ;.


En la ejecucin en forma batch, el programa mostrar mensajes cada treinta
segundos indicando cul es el estado de la ejecucin y al finalizar se visualizar un
resumen de cunto tiempo demor la conversin y la cantidad de registros que
fueron convertidos.



Una vez transformado los logs, se est listo para analizar los datos de auditora.


Analizar la Auditora
Para el anlisis de la auditora se proveen las siguientes consultas:
Analize by operation (WWAuditQuery)
El anlisis por operacin permite ver los registros que han sufrido modificaciones
por los filtros bsicos: perodo, usuario, operacin, entidad y tabla.

Perodo: Es un desde/hasta sobre la fecha de modificacin del registro.
Usuario: Es el usuario de la aplicacin que modific el registro
Operacin: Es la operacin que se realiz sobre el mismo: Insert, Update, Delete
Entidad: Es un conjunto de transacciones con valor semntico comn. En este caso
por entidad se agrupan todas las tablas que pertenecen a la misma transaccin.
(ejemplo Cliente, Direcciones de Clientes, etc.)



20


Cada operacin que se realiz sobre tablas auditadas se puede ver como una lnea
en este WW. Se puede obtener ms detalle ingresando al View de cada lnea, donde
se podr visualizar datos generales de la modificacin (General), qu atributos se
modificaron (Attributes), modificaciones anteriores y posteriores a la que se est
analizando (Related Records).

Datos Generales



Atributos Modificados



21

La llave indica los atributos que son clave de la tabla. El bullet azul indica que el
atributo no ha sido modificado, y el bullet rojo indica que se modific el atributo.








Asociado al registro auditado, se cuenta con el tab related records, all se muestran
todas las modificaciones realizadas sobre el registro que se est analizando.




22


























23

En la primera grilla se indican las modificaciones anteriores (<), la modificacin que
se est analizando (=) y las posteriores (>). Si se da clic sobre el display, en la
grilla inferior se muestra para cada modificacin, que atributos se modificaron y
cmo.
Analyze by Application Data

La consulta anterior nos permite dado un perodo, usuario, tabla u operacin,
analizar todas las modificaciones que se realizaron, permitiendo adems especificar
atributo por atributo su valor anterior y posterior.

Existe otro tipo de consultas donde se necesita partir de algn dato especfico de la
aplicacin (por ejemplo: un nro. de factura, un cdigo de producto, un nmero de
funcionario) obtener qu atributos asociados a esa factura, ese producto o ese
funcionario se modificaron y cmo.

Este tipo de consultas, donde se debe filtrar por datos que dependen de cada
aplicacin y de cada tabla, se resuelven con la opcin Analyze by Application Data

Para tener en esa consulta, filtros por datos de su aplicacin, se deben configurar los
mismos para cada tabla en la opcin Configure Application Data.


24
Configure Application Data
Ingresando a esta opcin, para cada tabla se podr configurar los atributos por los
cuales se desea filtrar en la consulta Analyze by Application Data, cada vez que se
consulte las modificaciones sobre esa tabla.



Se selecciona la tabla en el combo de filters y se seleccionan todos los atributos
que se deseen que intervengan como filtros cada vez que esa tabla sea consultada
por el Analyze by Application Data.
Una vez finalizada la seleccin, oprima save.

En este caso hemos seleccionado como filtro para la tabla Invoice, el atributo
InvoiceCode. De esta forma vamos luego a poder buscar por InvoiceCode las
modificaciones que se realizaron, cundo, quin, que atributos se modific, etc.

Analize by Application Data
Luego de realizar la configuracin anterior, al acceder a esta consulta se podr
realizar lo siguiente:

Lo primero a ingresar en la consulta
es la entidad que se quiere consultar,
para ello elija mediante el prompt, y
cliquee en Select Entity.










25
Una vez definida la entidad a analizar, se presentarn todos los filtros posibles para
consultar, los filtros bsicos: Tabla, Periodo, operacin, usuario, ms los filtros
especficos para esa entidad segn se configur en la opcin anterior.




Si queremos saber quines modificaron determinada factura es posible colocar el
cdigo de esa factura en el filtro InvoiceCode y as obtener todas estas
modificaciones.


Seleccionando uno de los campos con la lupa es posible visualizar los cambios
especificados por atributos que fueron realizados en esa modificacin.


26


En los filtros en el grupo Attribute Change es posible seleccionar todos los cambios
que modificaron determinado atributo. Para esto donde dice Table hay que tener
instanciada la tabla por la que se van a seleccionar los atributos.

Un caso de uso es poder obtener los registros de quienes modificaron el campo
precio de un producto. Esto se resuelve filtrando como se muestra en la siguiente
pantalla.





Analyze By Utl
En la explotacin en cada lugar donde se visualicen registros auditados
aparecer un cono con una base de datos y un check, en el cual se podrn visualizar
qu otros cambios se hicieron en la utl que modific el registro.



27


All se visualizar en una grilla todos los cambios que se hicieron en dicha utl
y en el cabezal se mencionar cul fue el objeto que hizo commit y a qu hora.




La visualizacin de la UTL est disponible solo para SqlServer y Oracle.

Para habilitar esto asegurarse que el rol AuditStandardOperation tenga permisos
para realizar la actividad AuditQuery.ViewByUtl

Remove Query Data

Si se quieren eliminar registros de la auditoria, se puede seleccionar la opcin del
men Remove Query Data, que dada una fecha, elimina todos los registros
anteriores a dicha fecha.

Existe otro proceso para ejecutar bajo la lnea de comandos que permite eliminar la
auditora del ao anterior. Este procedimiento tiene como nombre
PurgeLastYearAuditQuery y borra la auditora que tiene ms de un ao.




28




Personalizacin, y
configuraciones Avanzadas


29

PERSONALIZACIN Y CONFIGURACIONES AVANZADAS
K2BAudit Analyzer personalizacin

La aplicacin K2BAuditAnalyzer puede ser personalizada, para adaptarla a las
necesidades del usuario. Ac analizaremos algunos ejemplos de personalizaciones
que se pueden hacer en la aplicacin

Configuracin de conversin de logs

A partir de K2BAudit 3.0 es posible configurar la forma en que se ejecutar la
conversin de registros de auditora. Para esto se cuenta con una tabla donde se
permitir parametrizar la ejecucin de este proceso.

Los parmetros que se pueden configurar son:
ConcurrentProcess: Cantidad de procesos que realizarn la conversin. Por
defecto se ejecuta un solo proceso.
LimitRows: Cantidad mxima de registros que se convertirn en una
ejecucin. Si se coloca el valor 0 no hay ningn lmite.
RowToProcess: Cada cuantos registros convertidos se hace commit.
XmlParseLimit: Puede darse la posibilidad de que la conversin del xml de
auditora quede en loop. En tal caso la conversin se detendr en el valor del
parmetro y desplegar un mensaje de error en los logs de conversin.
Adems de esto cada proceso que ejecute la conversin tendr un log asociado.
El mismo podr visualizarse en la opcin de men Log Conversions.



30






All se podr visualizar para cada conversin cundo se ejecut y de la misma
cuntos registros fueron convertidos. En caso de error, se podr acceder al detalle
para visualizar cules fueron los errores.
Seguridad
K2BAuditAnalyzer viene con un esquema de seguridad implementado por defecto. En
caso de querer personalizarlo pueden modificar el procedimiento
k2bisauthorizedactivitylist, para que implemente la seguridad que usted desee.
En tal caso ser posible tambin borrar la estructura de seguridad manejada por el
sistema, esto es User, Role, UserRole, Activity, RoleActivity, Entity.
Si se tiene las K2btools instaladas puede usar el men K2BTools Fast StartRemove
Security.

Paneles de explotacin
Los paneles de explotacin pueden ser tambin personalizados.
En este caso AnalyzeByOperation es el objeto WWAuditQuery.
AnalyzeByApplication y ConfigureApplicationData, se pueden personalizar utilizando
los objetos que poseen el mismo nombre.

Eliminacin de registros viejos
Es posible personalizar y realizar procedimientos para la eliminacin de registros de
auditora viejos. Para esto, es posible tomar como base el procedimiento
purgeLastYerAuditQuery.


31
Configuraciones generador:


La primera vez que se aplica K2BAudit, si se est en ambiente .Net, se va a dar el
siguiente error.
k2bauditmodeldbms.cs(97,56):errorCS0117:'GeneXus.Data.ADO.GxDataStore'doesnotcontainadefinitionfor
'Jdbcdriverurl'
k2bauditmodeldbms.cs(101,56):errorCS0117:'GeneXus.Data.ADO.GxDataStore'doesnotcontainadefinitionfor
'Jdbcdriverurl'
k2bauditmodeldbms.cs(105,56):errorCS0117:'GeneXus.Data.ADO.GxDataStore'doesnotcontainadefinitionfor
'Jdbcdriverurl'


Para esto, abrir el objeto K2BAuditModelDBMS y comentar todo el cdigo que
comienza en java if (true){ hasta } como se muestra en la siguiente imagen:



Luego de hacer esto puede abrir el objeto K2BAuditReorganize y seleccionar la
opcin run, para que se vuelva a ejecutar el programa de reorganizacin.






32

Configuraciones avanzadas
En esta parte del manual se explicarn configuraciones avanzadas que son posibles
realizar dentro de la auditora.

Seleccion de DBMS

Por defecto, K2BAudit en la generacin de cdigo genera la auditora para los DBMS
que soporta, haciendo que los procedimientos Audit<Table>CreateMetadata tengan
el cdigo para todos los dbmss.

Esto es posible restringirlo para que solo se genere la auditora para el dbms
particular que se est utilizando o los dbms que se van a utilizar.

Para seleccionar el o los DBMS que desea, vaya a Preferences /K2BAudit. Ah, en el
conjunto de propiedades Platforms podr seleccionar la o las plataformas para las
cuales generar la auditora.







Nombre de los procedimientos

Es posible renombrar los procedimientos que la auditora genera para las
transacciones.


33

La propiedad Create Metadata Name, del conjunto Naming, permite generar los
procedimientos con el nombre deseado. Todo nombre de procedimiento debe incluir
OBLIGATORIAMENTE el tag <Table>, si este no se encuentra presente la auditora
no podr ser generada.



Nombre de los triggers

El conjunto de propiedades Naming tambin posee propiedades para renombrar los
triggers de INSERT, UPDATE y DELETE. Esta propiedad permite usar los nombres que
desee en lugar de los ofrecidos por defecto por K2BAudit. Al igual que con la
propiedad Create Metadata Name, el tag <Table> es OBLIGATORIO.



Nombre de los triggers a nivel de tabla



34
Hay momentos en los cuales se quiere personalizar el nombre de los triggers para
cada tabla sobre la cual sern creados. Esta es una situacin que se puede dar
cuando el nombre de los triggers supera el largo permitido por el DBMS.

Para cambiar el nombre de los triggers, se cuenta con un conjunto de propiedades a
nivel de tablas que permiten hacer esto.

De clic sobre la tabla, y en el grupo de propiedades K2b Tools ver el subgrupo
Audit. Ah se muestra los nombres que sern usados para los triggers de INSERT,
UPDATE y DELETE. Puede cambiar estos nombres por los que dese y K2BAudit los
usar al momento de generar la auditora.




Actualizacin de descripcin de atributos

Por defecto, desde la versin 3.0 de K2BAudit, en la reorganizacin de auditora se
ejecuta un procedimiento que se encarga de actualizar las descripciones de los
atributos en la explotacin de auditora. Est funcionalidad puede ser deshabilitada
en el settings de K2BAudit


Esto se hace colocando el valor de la propiedad SetDescriptionsToAttributes en false.

Seleccin de atributos a auditar
A partir de la versin 3.0 se puede configurar qu atributos se pueden auditar y
cules no. Dado que esta configuracin es realizada a nivel de transaction attribute,
puede suceder que la transaccin no tenga todos los atributos que estn presentes
en la tabla, qu pasa con esos atributos?. Por defecto aquellos atributos que no


35
estn presentes en la transaccin sern auditados pero este comportamiento puede
ser cambiado haciendo modificaciones en la propiedad Not In Transaction Attributes,
seteando su valor a Do Not Audit.






36








Anexos


37

ANEXO 1: CONFIGURACIN AUDITORA EN EL DBMS

MySQL

Por restricciones de MySQL, el usuario con el cual se crean los triggers tiene que
tener SUPER PRIVILEGE.

Para lograr esto hay darle todos los privilegios al usuario que va a crear los triggers
(usuario con el que la aplicacin se conecta al dbms).

GRANT ALL PRIVILEGES ON *.* TO <usuarioParaCrearTriggers>@localhost
IDENTIFIED BY <password>

Para esto
1. Loguerse al MYSQL comnad line con root
2. Ejecutar: GRANT ALL PRIVILEGES ON *.* TO
<usuarioParaCrearTriggers>@localhost IDENTIFIED BY <password>

En caso de que al ejecutar la reorganizacin de la metadata de cmo error Invalid
User information for handle es posible verificar si los super privileges fueron bien
seteados utilizando las siguientes sentencias:


USE MYSQL
Select Host, User, super_priv from user;

El usuario que crea los triggers no debe tener denegado ningn privilegio.

Oracle
Permisos de Usuario

Conectado como SysDBA Dar permisos de seleccin al usuario de la base de datos
por el que se conecta la aplicacin en las tablas V_$SeSSION y V__$MYSTAT. Para
resolver esto seguir los siguientes pasos

Abrir SQLPlus de Oracle
conn /as sysdba;
GRANT SELECT ON V_$SESSION TO <usuario>
GRANT SELECT ON V_$MYSTAT TO <usuario>





38
Carga de paquete

Para determinar el usuario en Oracle, K2BAudit utiliza un package en el cual carga
los datos del usuario de la aplicacin.

Antes de ejecutar la creacin de triggers deber ejecutar el siguiente cdigo que se
encuentra en:

C:\ProgramFiles\ARTech\GeneXus\GeneXusXEv1\Packages\K2BTools\Audit\Or
acle\
Para hacer esta ejecucin se pueden seguir los siguientes pasos:

Abrir el SQLPlus de Oracle
Ejecutar connect
Colocar el nombre de usuario y contrasea del usuario de la aplicacin segn
oracle lo va pidiendo. (el usuario que se conecta a la aplicacin auditada)
Escribir: @ C:\Program
Files\ARTech\GeneXus\GeneXusXEv1\Packages\K2BTools\Audit\Oracle\
Audk2b.sql


En caso de que de error en la compilacin del paquete se puede ver el error
usando el comando Show Errors.


SQL Server

El usuario de SQL Server con el cual se crearn los triggers deber tener permisos
para crearlos.

Para esto hay que establecerle al usuario el Server Role sysadmin.
En logins seleccionar el usuario utilizado ir a properties y ah marcar la opcin
sysadmin.



39




40


DB2

Crear los store procedure GetAudit y SetAudit. El cdigo de estos store procedures se
encuetran en el directorio \Packages\K2BTools\Audit\DB2 y su nombre es
K2BAuditProcedures. Sustituir todas las apariciones de K2BTools por el nombre de la
base de datos de la aplicacin.

Ejemplo: Si la base de datos se llama AppKB, el procedure GetAudit tendra los
siguientes dos cambios
CREATE PROCEDURE AppKB.SETAUDIT ( en lugar de K2BTools.SETAUDIT)
SPECIFIC AppKB.SETAUDIT (en lugar de K2BTools.SETAUDIT)


En la KB que se va a auditar, abrir el procedimiento K2BAuditModelDBMS, eliminar el
cdigo y dejar nicamente:
&AuditModelDBMS = DB2



41



ANEXO 2: K2B AUDIT ANALIZER

La KB de Explotacin contiene las transacciones en las cuales se grabarn los datos
de auditora y los datos que hayan sido procesados para su explotacin.


Transacciones de auditoria

Las siguientes son las transacciones de auditora:



Transaccin Descripcin
AuditLoad Es dnde los triggers registran la informacin de cada
operacin que el usuario realiza. Se almacena aqu la
fecha, tabla, operacin y para los atributos
modificados, los valores anterior y posterior.
AuditTable Para cada tabla auditada, guarda el cdigo de los
triggers asociados.
AuditEntity Almacena informacin de la entidad auditada
AuditEntityTable Establece la relacin entre las tablas auditadas y la
entidad auditada.
AuditQuery Los datos de AuditLoad se cargan aqu cuando se
ejecuta la transformacin para explotacin.
AuditQueryLog Guarda la informacin que genera el programa de
conversin de datos, ltima fecha de ejecucin,
estado y errores en el caso de que hayan ocurrido.
AuditUser Almacena datos del usuario que realiza las
operaciones.
AuditAttribute Almacena los atributos que se modifican en las
operaciones
AuditTableAttribute Es el nexo entre los atributos y las tablas a las cuales
pertenecen.




42
ANEXO 3: EXTENSIN DE LA AUDITORA

K2BAudit ofrece la posibilidad de generar auditora para un DBMS adicional a los que
ya soporta. Para esto se ofrece el dkt CreateTriggersForOther.dkt que se encuentra
en el directorio {$dirInstalacionGenexusX}\Packages\K2BTools\Audit\Templates.

Es en este dkt que puede agregar el cdigo necesario para generar los triggers para
el nuevo DBMS.

En este anexo se mostrar un ejemplo de cmo hacer esto basndose en el dkt de
creacin de triggers para MySQL.

El cdigo de los dkts puede separarse en dos grandes partes: cdigo compartido y
cdigo especfico.

El cdigo compartido es cdigo que en todos los dkts es igual, dividindose en:
1. Cdigo del cabezal; ac se referencia los assemblies usados, los namespaces
que se importan y los parmetros que el dkt recibe.
2. Definicin de variables bsicas: ac define y carga variables bsicas como
nombre de la tabla que se esta auditando, la operacin que se esta realizando
(INSERT, UPDATE o DELETE), nombre de la base de datos, nombre del
usuario, etc.


// Cabezal
<%@ Template Language="C#" TargetLanguage="GX" Description="Generates
SQL Server Triggers" %>
<%@ Assembly Name="Artech.Genexus.Common" %>
<%@ Assembly Name="Artech.Architecture.Common" %>
<%@ Assembly Name="Artech.Udm.Framework" %>
<%@ Assembly Name="Artech.Common.Properties" %>
<%@ Import Namespace="Artech.Genexus.Common" %>
<%@ Import Namespace="Artech.Genexus.Common.Objects" %>
<%@ Import Namespace="Artech.Genexus.Common.Parts" %>
<%@ Import Namespace="Artech.Architecture.Common.Services" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Property Name="Table" Type="Table" %>
<%@ Property Name="MaxAttLength" Type="System.Int32" %>
<%@ Property Name="MaxTableLength" Type="System.Int32" %>
<%@ Property Name="Mode" Type="String" %>
<%@ Property Name="TriggerName" Type="String" %>
<%@ Property Name="EntityName" Type="String" %>

//Definicin de variables bsicas
<%
string tableName = Table.Name;
string operation = "";

if (Mode == "INS")
operation = "INSERT";
else if (Mode == "UPD")
operation = "UPDATE";


43
else
operation = "DELETE";

string bdTableName = "";
if (Table.Name.Length > MaxTableLength)
bdTableName = Table.Name.Substring(0, MaxTableLength);
else
bdTableName = Table.Name;

string userNameVar = "userName";
string auditRecordKeyVar = "auditRecordKey";
string auditValueVar = "auditValue";
string dbName = "<AuditDB>"; // Esto K2BAudit lo sustituye
automaticamente
string GXUserId = "GXUserId";
%>

Como se menciono anteriormente, este es el cdigo que es comn a todos los dkts.
A continuacin de este comienza el cdigo especfico del DBMS para el cual se esta
creando el dkt.

El cdigo debera seguir el siguiente esquema:

DEFINICION TRIGGER AFTER/BEFORE OPERACIN PARA TABLA
VARIABLES
nombreDeUsuario;
valoresDePK;
valoresDeAtts;
CUERPO DEL TRIGGER
Generar XML para la PK, cargando valores nuevos en caso de INSERT o
UPDATE o viejos en caso de DELETE;

Generar XML para los Atts, cargando valores nuevos en caso de INSERT o
UPDATE o viejos en caso de UPDATE o DELETE descartando atributos no auditables
(formulas, binarios, bitmaps);

Grabacin del XML en la tabla de auditoria;
FIN DEL TRIGGER;

Particularmente, para MySQL el cdigo seria:



44

// Definicin del TRIGGER
CREATE TRIGGER <%= TriggerName %> AFTER <%= operation %> ON <%=
bdTableName %>
FOR EACH ROW BEGIN
// Declaracin de Variables
DECLARE <%=userNameVar%> CHARACTER(90);
DECLARE <%=auditRecordKeyVar%> MEDIUMTEXT;
DECLARE <%=auditValueVar%> MEDIUMTEXT;
<%
// Se empieza a armar el XML para la PK
string firstParameter = "'<Attributes>',";
string attributeMethodForRecordKey = "NEW";
// Si el modo es DLT se cargan los valores viejos
if (Mode == "DLT")
attributeMethodForRecordKey = "OLD";
// Se recorren los atributos de la PK
foreach (TableAttribute att in
Table.TableStructure.PrimaryKey)
{
string attName = GetAttName(att.Name, MaxAttLength);

%>
SELECT
CONCAT(<%=firstParameter%>'<Attribute><Name><%=att.Name%></Name><Value>
<![CDATA[',
<%=attributeMethodForRecordKey%>.<%=attName%>,']]]]><![CDATA[></Value><
/Attribute>') INTO <%=auditRecordKeyVar%>;
<%
firstParameter = auditRecordKeyVar + ",";
}
%>
SELECT CONCAT(<%=firstParameter%>'</Attributes>') INTO
<%=auditRecordKeyVar%>;
<%
// Se arma el XML para los atributos
firstParameter = "'<Attributes>',";
foreach (TableAttribute att in
Table.TableStructure.Attributes)
{
// Si es binario o bitmap se lo descarta
if (att.Attribute.Type == eDBType.BINARY ||
att.Attribute.Type == eDBType.BITMAP)
continue;
// Si es formula se lo descarta
if (att.IsFormula)
continue;

string attributeName = GetAttName(att.Name,
MaxAttLength);
string oldValueCode = "";
string newValueCode = "";
string keyTag = "";

// Se establece si el att forma parte de la PK
if (att.IsKey)


45
keyTag = "<Key>True</Key>";

//Si se esta en INSERT o UPDATE se carga el nuevo
valor del att
if ((Mode == "INS") || (Mode == "UPD"))
newValueCode = "<New><![CDATA[', IFNULL(NEW." +
attributeName + ", ''), ']]]]><![CDATA[></New>";
// Si se esta en UPDATE o DELETE se carga el viejo
valor del att
if ((Mode == "UPD") || (Mode == "DLT"))
oldValueCode = "<Old><![CDATA[', IFNULL(OLD." +
attributeName + ", ''), ']]]]><![CDATA[></Old>";
%>
SELECT
CONCAT(<%=firstParameter%>'<Attribute><Name><%=att.Name%></Name><%=keyT
ag%><%=oldValueCode%><%=newValueCode%></Attribute>') INTO
<%=auditValueVar%>;
<%
firstParameter = auditValueVar + ", ";
}
%>
SELECT CONCAT(<%=firstParameter%>'</Attributes>') INTO
<%=auditValueVar%>;
// Se obtiene el usuario de la aplicacin
SELECT @<%=GXUserId%> INTO <%=userNameVar%>;
// Se gaurda la informacin en la tabla de auditoria
INSERT INTO <%=dbName%>.auditload (ALId, ALDateTime,
ALApplicationUser, ALOperation, ALEntity, ALTable, ALRecordKey,
ALValue) Values (Null, Now(), <%=userNameVar%>, '<%=Mode%>',
'<%=EntityName%>', '<%=tableName%>', <%=auditRecordKeyVar%>,
<%=auditValueVar%>);
END;

Você também pode gostar