Re: registro de actividad de usuarios

From: Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy>
To: "Alejandro D(dot) Burne" <alejandro(dot)dburne(at)gmail(dot)com>
Cc: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: registro de actividad de usuarios
Date: 2008-02-04 12:54:12
Message-ID: 47A70AF4.8090507@ort.edu.uy
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alejandro D. Burne wrote:
> El 2/02/08, Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar> escribió:
>
>> Efectivamente cada usuario tendra su propio nombre y clave, entonces deberia
>> hacer casi todo a nivel del motor, la cosa es como registrar en una tablita
>> lo siguiente:
>>
>> -El nombre de usuario
>> -La fecha-hora de la operacion
>>
>> -La IP publica de la maquina usada (las pc pueden estar en la lan del server
>> o conectarse por una VPN)
>> -La aplicacion, de la forma "nombreaplicacion.proceso" donde proceso es un
>> nombre generico como "agregardatos", "consultacomplejas1",
>> "consultacomplejas2",etc y es simplemente una forma de nombrar o agrupar un
>> conjunto de varias operaciones SQL.
>> -La cadena sql ejecutada (en algunos casos)
>> Todo se hace con instrucciones SQL desde VB6.
>>
>> Lo primero que se me ocurre seria hacerlo con triggers, de esta manera
>> tambien controlaria algun usuario que esta accesando sin usar el programa a
>> medida (no creo pero puede ser), pero como hacerlo.....
>>
>> si tengo por ejemplo un proceso que busca, insertar o actualiza, etc , es
>> decir muchas instrucciones SQL a podria llamar a todas juntas
>> "actualizarcompleja1" cuando disparo el trigger?, y como le paso a este los
>> datos para llenar la tablita.
>>
>>
>> habia pensado hacer algo asi
>> CREATE OR REPLACE FUNCTION AUDITOR_USERS () RETURNS TRIGGER AS '
>> DECLARE
>> fecha timestamp;
>> usuario varchar;
>> aplicacion varchar ---- a esta no se como asignarle la aplicacion
>> que ejecuto la consulta,
>> -- ademas como identifico los grupos de operaciones/consultas?
>> dirip as varchar
>> BEGIN
>> select into fecha current_timestamp(0);
>> select into dirip inet_client_addr(); ------ AQUI ME DA ERROR NO SE
>> COMO PASAR LA FUNCION A VARCHAR
>> select into usuario user;
>> INSERT INTO auditoria (FECHA,USUARIO,DIRIP,APLICACION)
>> values (fecha,usuario,dirip,aplicacion);
>> END;
>> '
>> LANGUAGE 'plpgsql' VOLATILE;
>>
>> pero sigo con el problema desde donde disparar el trigger..
>>
>
> Si queres guardar el valor de la ip como char con un simple cast lo
> podes convertir en char, sino puedes crear un campo inet en la tabla
> de log.
> Personalmente lo que hago es hacer una tabla de logs paralela a la
> tabla que quiero auditar donde almaceno usuario, fechahora, tipo de
> accion (A/B/M) y en un campo text los valores que insertaron /
> borraron y en el caso de una modificación el valor que tenía antes y
> despues. Nunca se me planteó registrar desde que proceso lo hacen.
> El trigger se ejecuta sobre el insert update o delete de la tabla en cuestión.
>
> Saludos, Alejandro
> --
> TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>
>
Hola, no quiero pecar de ignorante, pero que te parece si le decis a
posgres que grabe en el log todos los sql y luego lo formateas con awk?
Las opciones que habilitaria si precisas esto son (tené en cuenta el
espacio de los logs, la sintaxis estan postgresql.conf):

log_connections = on
log_disconnections = on
log_duration = on
log_line_prefix = '<%u%d%r%m%i>' # Special values:
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = PID
# %t = timestamp (no milliseconds)
# %m = timestamp with milliseconds
# %i = command tag
# %c = session id
# %l = session line number
# %s = session start timestamp
# %x = transaction id
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
log_statement = 'all' # none, ddl, mod, all

Saludos Fernando

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jose Alberto Sanchez Nieto 2008-02-04 13:06:20 Re: dudas con schemas
Previous Message Rodriguez Fernando 2008-02-04 12:40:13 Re: dudas con schemas