FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Estructura para auditoria interna
Posts: 189
Joined: Fri Oct 14, 2005 12:33 AM
Estructura para auditoria interna
Posted: Wed Apr 14, 2010 10:39 PM
Hola a tod@s,

He estado buscando un poco sobre como mejorar las actuales facilidades de auditor铆a interna que tienen nuestros sistemas, y la verdad es que lo que tengo me ha apoyado mucho, pero siempre busco mejorarlo.

Todas las actividades que hace todo usuario son almacenadas en un archivo LOG, con la siguiente estructura:
Code (fw): Select all Collapse
Structure for database: C:\db3\db3p\ss\conta1\datos\coopmad\logact.dbf
Number of data records: 聽 聽 聽29
Date of last update 聽 : 04/14/10
Field 聽Field Name 聽Type 聽 聽 聽 Width 聽 聽Dec
聽 聽 1 聽IDENTIF 聽 聽 Character 聽 聽 聽4
聽 聽 2 聽FECHAC 聽 聽 聽Date 聽 聽 聽 聽 聽 8
聽 聽 3 聽HORA 聽 聽 聽 聽Character 聽 聽 10
聽 聽 4 聽OPC 聽 聽 聽 聽 Character 聽 聽 60
** Total ** 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽83


Donde IDENTIF es el c贸digo del usuario que hace la actividad, FECHAC es la fecha en la cual lo realiza, HORA es lo evidente y OPC es la descripci贸n o resumen de la accion que realiza el usuario, tal como "AGREGAR el Cliente No. 883", o "MODIFICAR el Ahorrante No. 138", etc.

Con una peque帽a funci贸n que se llama al final exitoso de cada operacion, se abre esta tabla, se crea un nuevo registro y se cierra.

La pregunta es: Alquien ha trabajado o tiene esto?, que otras variables han considerado como importantes para incluir en esta estructura? El IP de la maquina?, el usuario del equipo?.... no se quiero escuchar a los gurus...

Abrazos a todos,
Julio Llin谩s
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
Posts: 111
Joined: Thu Jan 19, 2006 11:47 PM
Re: Estructura para auditoria interna
Posted: Wed Apr 14, 2010 11:11 PM

Julio:

Yo le agregaria un campo adicional (tipo caracter .. 100 o 150 ) en donde guarde el dato anterior del registro en caso de modificaci贸n y asi se podria comparar el dato modificado con el original.

Yo utilizo mucho ese control pero a diferencia tuya, no tengo un DBF aparte, si no que se le agrego a todas mis DBFs los campos de control de usuarios.

Saludos

Edgar Mauricio Ar茅valo Mogoll贸n.
Bogot谩 DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programaci贸n....
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 03:23 AM

Julio,

yo guardo en una dbf x dia 1 registro, y tengo un memo dnd voy escribiendo cada accion q hacen en ese dia, cada usuario, ahora estoy migrando a mysql y voy a convertir en 1 registro x operacion. cada renglon del memo tiene : hora, terminal, usuario, accion.

espero te sirva.

Salu2, Ariel.

Posts: 189
Joined: Fri Oct 14, 2005 12:33 AM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 03:31 AM

Hola,

Gracias Mauro. A煤n me parece mejor guardar todo en una tabla aparte, y no en la misma que se ha modificado.

Ariel: 驴Como obtengo la identificacion de la terminal que ejecut贸 la acci贸n?

Abrazos,

Julio Llin谩s
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 04:44 AM

Julio,

En cada estacion, yo tengo una dbf (estacion.dbf) con un solo registro y varios campos (path servidor, nombre maquina, codigo usuario,....)

Cuando un usuario entra en la aplicaci贸n y autentifica su codigo/clave en el servidor, cambio en la dbf local (que esta abierta en exclusive) el c贸digo del usuario.

Tengo una sola dbf para llevar el control del usuario. Uno de los campos es el codigo del usuario otro la m谩quina, ambas informaciones las saca del fichero estacion.dbf.-

En el fichero de control, incluso anoto los intentos de entrar en la aplicaci贸n, porque en alguna ocasi贸n un usuario ha intentado entrar con la clave de otro.

Cambiando de tema. Me gustaria contactar directamente contigo para hablar del tema del GPRS. 驴Puedes enviarme un correo a valdenebro arroba mixmail.com ?

Un saludo



Manuel
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 12:19 PM

Hola,

como todos tengo algo similar, como siempre aqui en el trabajo tienden a decir que debe ser un error del sistema, entonces hice algo similar

usuario
ip
fecha
hora
operacion
tabla
id (odentificador del reg, llave primaria)
informacion

en la informacion se guarda, cierta informacion que es la mas critica del registro, esta informacion esta en un diccionario donde se definen los campos importantes para cada tabla, la forma de guardar la informacion es:

para una alta o eliminacion

campo1 : valor
campo2 : valor
....
campon : valor

para una modificacion

campo1 : valor_ant => valor_nuevo
campo2 : valor_ant => valor_nuevo
.....
campon : valor_ant => valor_nuevo

puede resultar redundante en el caso de las modificaciones, ya que se puede hilar toda la historia del registro y saber sus valores historicos
pero por ahora esta asi

Intente hacer algo mejor y automatico con ADS ya que maneja triggers incluso en modo local, pero el problema es como saber la informacion del usuario dentro el trigger, todo lo demas se tienes, el registro la fecha y hora, pero no supe como meter el nombre del usuario, si eso seria posible tendriamos un logging system sin hacer casi nada :-)

bueno esta es mi experiencia

saludos

Marcelo

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 01:41 PM

Hola Marcelo

Podrias explicar un poco de los triggers en ADS, me interesa saber como funcionan

desde ya muchas gracias...

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 02:29 PM
Hola Julio
jllinas wrote:Ariel: 驴Como obtengo la identificacion de la terminal que ejecut贸 la acci贸n?

Abundando un poco a otras sugerencias, en mis logs de auditor铆a yo uso dos datos que resultan de gran utilidad (cWinUserName y cComputerName), para obtenerlos agrega el siguiente c贸digo a tu programa principal:
Code (fw): Select all Collapse
#pragma BEGINDUMP
#include <tchar.h>
#include <hbapi.h>
#include <windows.h>
#define MAX_USER_NAME 128

HB_FUNC( CCOMPUTERNAME )
{
聽 聽DWORD lwMax = MAX_COMPUTERNAME_LENGTH ;
聽 聽TCHAR hostname[ MAX_COMPUTERNAME_LENGTH + 1 ] ;
聽 聽GetComputerName( hostname, &lwMax ) ;
聽 聽hb_retc( hostname ) ;
}

HB_FUNC( CWINUSERNAME )
{
聽 聽TCHAR cusername[ MAX_USER_NAME + 1 ] ;
聽 聽DWORD wLen = MAX_USER_NAME ;
聽 聽GetUserName( cusername, &wLen ) ;
聽 聽hb_retc( cusername ) ;
}
#pragma ENDDUMP
Un abrazo.
manuelmercado at prodigy dot net dot mx
Posts: 1076
Joined: Fri Oct 07, 2005 10:41 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 08:34 PM
amigos,

con:
Code (fw): Select all Collapse
? netname()
? netname(.t.)


te muestra el usuario de windows o el nombre dado a la computadora

esto en xharbour
William, Morales

Saludos



m茅xico.sureste
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: Estructura para auditoria interna
Posted: Thu Apr 15, 2010 10:53 PM

Estimados,

Como dice William, simplemente con NETNAME() obtenemos el nombre de la pc, con esto me es + q suficiente.

Salu2, Ariel.

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Estructura para auditoria interna
Posted: Fri Apr 16, 2010 03:42 PM
Patricio,

casi todas las DB tienes triggers, incluso con FIVEDB si no me equivoco se implementaron para los DBF, dek manual que viene en ARC, copio lo siguiente
A trigger is a piece of code (similar to a stored procedure) that is executed on the server. Triggers differ from stored procedures because triggers are not called by the client, but instead are executed automatically in response to an insert, update, or delete operation.
Triggers are supported for both SQL and navigational update operations. Throughout this documentation the update operations will be specified using uppercase notation (for example, INSERT), but this does not imply an SQL-only limitation.

When a trigger is "fired" it contains some state information, which can be used inside the body of the trigger. Two in-memory tables are available inside a trigger; a __new table and an __old table. The __new table contains new field values that were, or are about to be, inserted into the table. The __old table contains old field values for the record in question.
Triggers can provide a very powerful means to maintain business rules inside of a database.
Triggers can be defined for any supported table type, and are not limited to the proprietary ADT format.

Both the Advantage Database Server and the Advantage Local Server support triggers. Implicit Transactions are the only trigger functionality that differ depending on server type.
Trigger support is a server-side feature. Any Advantage client version 6.0 or greater capable of opening a dictionary-bound table can utilize triggers. This can be beneficial if you want to add trigger support to your application, but don鈥檛 want to upgrade your client applications. Only the database server needs to be upgraded (to Advantage version 7.0 or greater) in order to start using triggers.


La idea para el logging system es por cada operacion de alta, baja, modificacion tengas definido un trigger que pase la informacion del registro a otra tabla marcando si era nuevo, modificado, eliminado, todo ok, pero el problema seria mandar el usuario del sistema (no el de la base de datos).

La idea de un trigger es que se dispare antes, depues o en lugar de la operacion, asi puedes automatizar muchas operaciones como borrado en cascada, etc.

COn ek ARC, oprimes boton derecho sobre la tabla de una DB y podras definir los triggers para esa tabla.

Espero sirva de inicio para lo que buscas

saludos

Marcelo
Posts: 189
Joined: Fri Oct 14, 2005 12:33 AM
Re: Estructura para auditoria interna
Posted: Sun Apr 18, 2010 12:58 AM

Bueno.... voy con lo mio:

  • Gracias Maestro Mercado.

  • Ya agregu茅 los dos campos a la estructura de mas arriba: UAN (User Account Name) y CN (Computer name). Para los interesados, busque en Google, y para ambos est谩 bien definirlos como campos Character de 20 (aunque CN puede ser de 15).

  • Agregue el uso de estos valores con la funci贸n NetName() y NetName(.T.) de xharbour, a mi funci贸n de Auditor铆a Interna.

  • Todo result贸 perfectamente bien. Gracias a todo por su apoyo ! :)

Abrazos,

Julio Llin谩s
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1

Continue the discussion