Estructura para auditoria interna

Estructura para auditoria interna

Postby jllinas » 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: Select all  Expand view
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
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic

Re: Estructura para auditoria interna

Postby MauroArevalo » 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....
User avatar
MauroArevalo
 
Posts: 105
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia

Re: Estructura para auditoria interna

Postby Ariel » Thu Apr 15, 2010 3: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.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: Estructura para auditoria interna

Postby jllinas » Thu Apr 15, 2010 3: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
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic

Re: Estructura para auditoria interna

Postby Manuel Valdenebro » Thu Apr 15, 2010 4: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
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Estructura para auditoria interna

Postby Marcelo Via Giglio » 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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Estructura para auditoria interna

Postby Patricio Avalos Aguirre » Thu Apr 15, 2010 1: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
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: Estructura para auditoria interna

Postby mmercado » Thu Apr 15, 2010 2: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: Select all  Expand view
#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
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Estructura para auditoria interna

Postby wmormar » Thu Apr 15, 2010 8:34 pm

amigos,

con:
Code: Select all  Expand view
? 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
User avatar
wmormar
 
Posts: 1073
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Re: Estructura para auditoria interna

Postby Ariel » 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.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: Estructura para auditoria interna

Postby Marcelo Via Giglio » Fri Apr 16, 2010 3: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’t 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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Estructura para auditoria interna

Postby jllinas » 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
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 12 guests