[Pgsql-ayuda] ideas para la control de usuarios

Alvaro Herrera alvherre@dcc.uchile.cl
Mon, 12 Jan 2004 21:11:22 -0300


On Mon, Jan 12, 2004 at 04:00:08PM +0100, Fernando San Martín W. wrote:

Fernando,

> Primero felicidades a todos y que este año sea mejor que el que pasó. 

Igual para ti, para los tuyos y para todos tus proyectos.


[...]

> Para esto tengo pensado usar la tabla pg_user, ya que en ella tengo el
> login y el id del usuario, ademas agregar la tabla "funciones" en las
> cuales esten numerados todos los privilegios y una tercera tabla que
> haga la relacion entre las otras dos "pg_user_funcion", además de
> manejar los usuarios con grant para que no puedan alterar las tablas o
> acceder a ellas sin privilegios. Comento esto por si alguno tiene alguna
> idea más cristiana de como implementar esto, me interesaria discutirlo.

De partida no existe ninguna tabla pg_user ... esta es una vista sobre
pg_shadow.  OTOH, en realidad no puedes poner llaves foráneas a
catálogos del sistema, porque en éstos no se ejecutan acciones de
disparadores (a.k.a. triggers; si lo hicieran, sería mucho más lento);
en Postgres las llaves foráneas se implementan con disparadores.

Sospecho que tendrás que hacer una tabla adicional con usuarios para que
esto para que esto pueda verdaderamente funcionar.  Ahora, si quieres
que el código Pyton sea realmente limpio vas a necesitar una función
para hacer la autentificación en base a (usuario, accion), y
posiblemente debas esconder todas las tablas pasándolas a otro usuario,
y dar acceso al perraje a través de vistas que utilicen la función de
autentificación en la cláusula de calificación (o algo por el estilo).

Creo que quedó suficientemente confuso como para que no se note que no
he pensado demasiado en el tema ... ? ;-)

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos / con todos los humanos acabaré (Bender)