Re: Esquema para manejo de usuarios que hago?

From: "eduardo arenas" <pgmanlist(at)gmail(dot)com>
To: wilparra(at)yahoo(dot)com
Cc: "Lista de Ayuda Postgresql" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Esquema para manejo de usuarios que hago?
Date: 2007-06-11 07:54:04
Message-ID: 4110afd20706110054w76eaa476m5bc65801b51e78a3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

William, frente a lo que es control de usuarios y permisos, puedes tener
la seguridad tanto en la capa de aplicación como en la base de datos. Esto
depende de que tan experto eres para programar DB como aplicaciones.

A modo personal, s preferible un modelo de DB que incorpore la seguridad
en la DB. un modulo de usuarios, y los permisos de los usuarios sobre el
modelo (grant) en una tabla con permisos por modulo, por pantalla, por
función (select, insert, update o delete)... y Estos perfiles de usuario
serán accedidos por la aplicación al momento de logear al usuario y definirá
el comportamiento (variables de sesión ). Este esquema es potente desde el
punto de vista de que, no cualquier usuario, o nueva aplicación que acceda a
la DB del sistema va a poder moverse con holgura, es decir primero deberá
enterarse como funciona el modelo para poder programar sobre el.

Ejemplo con un modelo basado en triggers, store procedure, grant,
etc... el programador probablemente no podrá insertar directamente en una
tabla, sino que deberá mirar primero la lógica que aveces dice... ¿para
insertar, además usted debes hacer esto y lo otro en tales tablas.?

Por lo general en todo sistema los registros críticos llevan una
huella de usuario, simplemente un campo en el registro que se llama usuario,
para identificar el usuario que lo creó. Si el registro es muy crítico y
quieres controlar todos los movimientos posibles del registro y además hacer
reportes instantáneos del sistema (de una fecha determinada a otra) debes
crear una tabla paralela que almacenes estos cambios con triggres que llenen
el registro. Algo que diría... si modifica el registro o lo borra... inserte
en esta otra tabla el nombre de usuario, fecha, nombre del campo, valor
inicial, valor modificao... En otros casos combiene hacer una tabla
paralela homologa a la original y copiar la tupla completa que se
modificará mas el nombre del usuario y la fecha de modificación del
registro.

Espero haber sido claro

saludos

Eduardo Arenas Castillo
Ingeniero de Sistemas
Pontificia Universidad Catolica de Chile
Facultad de Medicina

El día 8/06/07, Milton Galo Patricio Inostroza Aguilera <minoztro(at)gmail(dot)com>
escribió:
>
> El 7/06/07, WILLIAM PARRA <wilparra(at)yahoo(dot)com> escribió:
> > Gracias por tu respuesta, pero aún me persiste la duda de como hacer
> para la
> > auditoría. Personalmente creo que esas tablas deben alimentarse a partir
> de
> > triggers. Si tengo un esquema de validación de usuarios a nivel de
> > aplicación, no sabría como hacer llegar el parámetro nombre de usuario
> > hasta la tabla de auditoría, sin que éste fuera una columna de la tabla
> > auditada... No sé si me haya hecho entender...!
>
> Haber si te entiendo:
>
> Debes auditar algunos movimientos de ciertas tablas...bueno eso se
> hace con trigger's y usando la funcion de sistema current_user()...yo
> he implentado soluciones antes creando a todos los usuarios del
> sistema como roles en la base de datos y utilizando GRANT y REVOKE
> para gestionar los mismos.
>
> Cuando el usuario ingrese al sistema realizara ciertas consultas a
> tus relaciones..entonces ahi se activan los triggers y auditas sus
> moviemientos.
>
> Bueno en la aplicacion deberias utilizar variables de session y esas
> cosas.
>
> >
> > Gracias.
> >
> > jose javier parra sanchez <jojapasa(at)gmail(dot)com> escribió:
> > Hola, pues como casi todo en software, lo que quieres hacer se puede
> > hacer de miles de formas. Personalmente prefiero establecer el
> > control de acceso desde la propia aplicacion. Yo uso lo que se llama
> > una ACL ( access control list), donde en tablas se enumeran los
> > distintos usuarios, grupos de usuarios, procesos, y metodos, para asi
> > establecer los permisos. Por si te sirve de ejemplo mira esto
> > http://tackle.sourceforge.net/ , es para php, pero no te debe costar
> > demasiado hacer la implementacion en java.
> >
> > Un Saludo.
> >
> > El 7/06/07, WILLIAM PARRA escribió:
> >
> > > Buenos días compañeros de lista:
> > >
> > > Estoy emprendiendo un nuevo desarrollo de software en Java con
> Postgresql,
> > > el cual se hará para ambiente Web. El sistema tendrá diferentes tipos
> de
> > > usuarios (secretarias, directivos, administradores); cada uno de ellos
> con
> > > sus propios permisos para acceder o no a las diferentes páginas de la
> > > aplicación. El sistema además debe tener un esquema de auditoría, para
> > > rastrear las acciones de los diferentes usuarios.
> > >
> > > El problema:
> > >
> > > Si uso el esquema de postgresql, solo puedo denegar acceso a los
> objetos
> > de
> > > la BD, pero no así a los objetos de la aplicación. Ahora; si creo un
> > esquema
> > > de usuarios a nivel de aplicación para controlar los permisos a las
> > > diferentes paginas de la aplicación, tendría necesariamente que
> adicionar
> > a
> > > todas mis tablas de la Base de datos, un campo usuario a efectos de
> poder
> > > almacenar las acciones de éste en las tablas de auditoría; que es algo
> que
> > > no he querido hacer.
> > >
> > > Me gustaría conocer de experiencias similares, y ojalá conseguir la
> mejor
> > > opción. O si existen otras técnicas para conseguir éste mismo
> cometido, y
> > > que yo no conozca; ¡Bienvenidas!.
> > >
> > > Gracias.
> > >
> >
> >
> >
> > William Enrique Parra Alba
> > Ingeniero De Sistemas
> > Universidad Pedagógica y Tecnológica de Colombia
> > /\ /\
> > / //\\ \
> > \ \\// /
> > / / \ \
> > \/ \/
> >
> > __________________________________________________
> > Correo Yahoo!
> > Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> > Regístrate ya - http://correo.espanol.yahoo.com/
>
>
> --
> Milton Inostroza Aguilera
> --
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Eduard Miquel i Gavaldà 2007-06-11 07:57:21 Re: [pgsql-es-ayuda] Migración de datosatablaparticionada
Previous Message Eduard Miquel i Gavaldà 2007-06-11 07:13:11 Re: [pgsql-es-ayuda] Migración de datosatablaparticionada