Auditoria de sistema

369 views
Skip to first unread message

spartaco

unread,
Mar 20, 2012, 11:07:37 AM3/20/12
to Comunidad de Visual Foxpro en Español
Saludos a tod@s

Tengo una pequeña aplicación que maneja base de datos de vfp, me
gustaría saber en base a sus experiencia, cual seria la mejor forma
para guardar las informaciones de quien creo, modifico o eliminó, etc.

Saludos
Gracias

Walter R. Ojeda Valiente

unread,
Mar 20, 2012, 11:21:57 AM3/20/12
to publice...@googlegroups.com
Tienes dos opciones:
1. A cada tabla agregarle las columnas: usuario quien creó, fecha, hora, usuario quien modificó, fecha, hora, usuario quien borró, fecha, hora
2. Tener una tabla exclusivamente para esa tarea, con las columnas:
   - Nombre de la Tabla
   - Nombre del Programa desde donde se realizó la operación
   - Tipo de operación (I=inserción, B=Borrado, M=Modificación)
   - Nombre del usuario
   - Fecha
   - Hora

La segunda opción es mejor porque:
a. No necesitas estar modificando la estructura de todas las tablas
b. Si a una fila se le realizan varias modificaciones podrás conocerlas a todas

Desde luego, SIEMPRE que se realice una operación de inserción, borrado o modificación en cualquier tabla, necesitarás insertar una nueva fila en tu tabla de Auditoría, con los datos correspondientes.

Saludos.

Walter.



> Date: Tue, 20 Mar 2012 08:07:37 -0700
> Subject: [vfp] Auditoria de sistema
> From: edwinn...@gmail.com
> To: publice...@googlegroups.com

TheNewInquirer

unread,
Mar 20, 2012, 11:37:19 AM3/20/12
to Comunidad de Visual Foxpro en Español
Pues, yo no he hecho nada de eso aun en VFP porque aún estoy en fase
de desarrollo de un sistema comercial.

Lo que comentas serían como "las cerezas del pastel" jeje

Pero debo decirte que dependiendo del tipo de empresa, puede ser de
mucha o de nula utilidad.

He visto implementaciones de ese tipo en Visual Basic y sirven mucho
en empresas donde se debe saber a ciencia cierta quien accedió y
modificó, borró, etc. ciertos registros, como aquellos que una
señorita de caja elabora.

Eso resulta muy importante cuando se va a rastrear "faltantes de
efectivo" o cosas que levantan sospecha.

En algunos sistemas comerciales es conocido como archivo LOG, que
registra hora, fecha, etc de los accesos al sistema.

En windows, se llama Event Viewer y leer sobre ese visor de sucesos te
dará algunas ideas.

http://technet.microsoft.com/es-es/library/cc737015(v=WS.10).aspx

Saludos!

TheNewInquirer

unread,
Mar 20, 2012, 11:51:59 AM3/20/12
to Comunidad de Visual Foxpro en Español
Buscando en la ayuda de Fox, halle esto:

Track Activities in a Project Sample

Es un ejemplo de Proyecto donde se lleva el rastro de las actividades
de borrado, modificado, etc.

Leer o ver esa muestra (Sample) puede darte muchas ideas al respecto.

Saludos!

Luis Maria Guayan

unread,
Mar 20, 2012, 1:20:31 PM3/20/12
to publice...@googlegroups.com
Aquí tienes un ejemplo muy fácil de implementar

-- Auditando eventos de inserción, modificación y eliminación en tablas de FoxPro --
http://www.portalfox.com/article.php?sid=2103

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

TheNewInquirer

unread,
Mar 20, 2012, 1:44:50 PM3/20/12
to Comunidad de Visual Foxpro en Español
Como siempre el Maestro Luis María "sacando el colmillo largo y
retorcido" de la pura experiencia jeje

Me pregunto si a estas alturas del partido habrá algo que el jefe Luis
María no sepa ya de VFP...

Imagínense si el Maestro Luis María diera "cursos de VFP", cuanto
creen que podrían valer?...

Como decimos aquí en México.... "A ver.. échenle pluma".. jeje (Hagan
sus cuentas).

Saludos!

Carlos Miguel FARIAS

unread,
Mar 20, 2012, 6:12:45 PM3/20/12
to publice...@googlegroups.com
Dos cosas:
una) Si un sistema no puede cubrir las 5W de auditoria (Who, When, What, Where y How) y maneja dinero, es de muy baja calidad.
dos) El ejemplo con triggers es una opción interesante, pero entiendo, al menos eso extraigo del codigo que debe indicarse los triggers para cada tabla. Con las funciones DBC_algo (desde VFP 7) se puede llegar a hacer una rutina generica que no necesita definir triggers para cada tabla. O al menos, gran parte del codigo puede ser compartido.

Si es interesante (y de hecho hago algo similar) es guardar por cada modificación de la bd, los datos que indique en uno, màs los datos como estaban antes de modificar, de esa manera, tengo toda la historia como fue evolucionando cada tabla de la bd y quien fue el "genio" que metio los "garfios".

Mi primer sistema con algo similar (auditoria de cambios) lo instrumente alla por 1988 en RPG II, funciono hasta 1999 hasta que los polìticos HDP sacaron el sistema y metieron otro que no solo no saben quien modifico los datos si no que creo no saben que datos tienen.
Saludos: La Pampa (RA)

Irlandes 1960

unread,
Mar 22, 2012, 2:54:01 PM3/22/12
to publice...@googlegroups.com
Yo tengo implementada una capa de auditoria muy básica, pero muy sencilla y liviana, usando en la definición de la tabla siempre tres campos:  usuario, fecha y hora de generación, fecha y hora de cambio, que siempre se llaman igual.
En el DBC tengo un procedimiento almacenado EDITO que disparo desde la regla de validación de registro (en la pantalla de diseño de tablas, tercer solapa). Si la fecha de creación esta vacía (registro nuevo) le carga datetime, y siempre cambia usuario y fecha de modificación.
Esto nació para refutar el "nadie tocó nada" sin hacerlo demasiado pesado

Respecto a auditorias mas pesadas, nunca elimino nada de las tablas, todo se maneja con anulaciones lógicas que se incluyen o no en las consultas según sea pedido, mostrándolas en fondo gris.

Hasta acá las modificaciones no son del todo trazables, ya que no se conservan los valores anteriores, lo cual solo he puesto por excepción, y resulta que después nadie mira, ni siquiera quien lo pidió.

Carlos Miguel FARIAS

unread,
Mar 22, 2012, 4:48:32 PM3/22/12
to publice...@googlegroups.com
Lo que se instrumente para auditar un sistema va a depender del tipo de datos que se estén manejando. No es lo mismo el seguimiento que le vas a hacer a un nomenclador de calles o ciudades que registros donde modificas importes (o guardas) y siempre es importante que se pueda contar con lo que les comentaba en correos previos.
Saber quien hace, a que hora hace y en que lugar lo hace (who, when, where) y por supuesto que y como hace (what y how) es fundamental, si esos elementos, es imposible "acusar" a alguien de que cometio el error o delito.
Recuerdo varios casos que un sistema que detectaba eso, permitio llegar al culpable real de un robo en un sistema de gestion de sueldos (+10000 empleados) donde asignaba "hijos extras" que aca en Argentina, se pagan como "salario familiar" y hay adicionales por estudio y vacacionales que hacen buena diferencia.
En este caso, el When permitio llegar al verdadero culpable, porque en esa fecha el usuario (who) estaba de vacaciones y había delegado el mantenimiento de datos en el hdp que iba miti y miti con los empleados, también complices.
En otra situación, el when no preciso (solo fecha) impidió ubicar al empleado en el momento de cometer se el ilícito (si es que lo hizo èl, lo que no pudo probarse), además, pudo determinarse que el empleado, no podia de ninguna manera acceder (how) a alterar los registros (what), ni siquiera pudo asociarse un usuario (who) con los elementos anteriores. Realmente, un desastre, el control que tenían.
Aclaro que yo asesoraba a la defensa, y con indicaciones sobre que se debía auditar para probar la culpabilidad, logre que safe (en realidad, por los elementos detectados, el "curro" lo estaban haciendo otros empleados, o fue una maniobra para "liquidar" al empleado, enemistado con su jefe.
En vfp, con sys(0) o id, recuperas el where (nombre de la maquina en la red) y el id del usuario (el que se identifico en la red), si además, al usuario al entrar, le exigís una id y pw propia del sistema, podes correlacionar si al usuario de la máquina, no le usaron la sesión para acceder a la aplicación.
Los otros datos, bueno, no es tan difícil obtenerlos.
Reconozco que parte de la falta de buenas auditorías se debe a los contadores (mis colegas, al menos de titulo) que se creen que con la auditoría clásica pueden arreglar todo.
Saludos: Miguel, Santa Rosa (LP)

Mauricio Aldana

unread,
Mar 22, 2012, 7:11:06 PM3/22/12
to publice...@googlegroups.com
Yo tengo una clase que me hace todas la funciones de (agregar, modificar, eliminar, etc), hay un apartado para una bitacora que se genera por registro, se queda con la ACCION (agregar, modificar, eliminar), EQUIPO (nombre del equipo que se hizo), USUARIO DE RED y Usuario del sistema, todas las acciones con fecha y hora, en el caso de modificar guardo en un campo memo los nombres de los campos modificados con su valor anterior y el que se ingreso.
 
El hecho de contar con una funcion que inserte o actualice los registros facilita muchisimo el tener una funcion que te lleve la auditoria.
 
 
Saludos

--
Mauricio Aldana
rom...@gmail.com
(502) 4217-7154

Walter R. Ojeda Valiente

unread,
Mar 23, 2012, 10:38:14 PM3/23/12
to publice...@googlegroups.com
En general, las auditorías son para saber a quien echarle la culpa cuando hay algún problema, con eso no se soluciona pero se tiene al culpable.

Se recomienda evitar regaños y en cambio conversar con la persona involucrada para que no vuelva a cometer el error, a nadie le gusta que se le rete.

Un buen sistema informático SIEMPRE debería tener la posibilidad de ser retrotraído  cualquier fecha y hora anteriores.

Saludos.

Walter.





Date: Thu, 22 Mar 2012 15:54:01 -0300
Subject: Re: [vfp] Re: Auditoria de sistema
From: irland...@gmail.com
To: publice...@googlegroups.com

Carlos Miguel FARIAS

unread,
Mar 24, 2012, 10:10:50 AM3/24/12
to publice...@googlegroups.com
Por supuesto que un sistema de auditoria, deberìa ayudar en primera instancia a detectar errores involuntarios, pero da la casualidad que cuando es cuestión de dinero se aplica la disculpa del Chavo: "lo hice sin querer, queriendo".

Saludos: Miguel, Santa Rosa (LP)


Reply all
Reply to author
Forward
0 new messages