RE: Cambio de usuario

From: "Fernando Papa" <fpapa(at)claxson(dot)com>
To: "Jose Maria Buades Rubio" <josemaria(dot)buades(at)uib(dot)es>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Cambio de usuario
Date: 2004-10-13 14:13:07
Message-ID: 0155CF0142DC674A9F5E147540C2ECB461F0A1@melexch2k02.buehuergo.corp.claxson.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Desde hace un tiempo hamos implementado la seguridad de nuestras aplicaciones de una forma similar, la diferencia es que en vez de cambiar a un usuario con todos los permisos hacemos lo siguiente:
- Un usuario de aplicación, lo llamamos "APP".
- Un usuario "generico", en nuestro caso, como es una aplicación web, lo llamamos "WEB".

La implementacion de la seguridad se da mediante las siguientes reglas:
- Todos los objetos pertenecen al usuario APP.
- Para cada accion que se requiera hacer, se crea un procedure/funcion
- El usuario WEB solo tiene permisos para conectarse a la base y permiso para ejecutar los procedures/funciones necesarios.
- El usuario WEB no tiene acceso (permiso) a las tablas directamente, o sea, no puede hacer ninguna accion sobre las tablas de APP (ni select, ni update, ni insert, ni delete).

Obviamente es un poco tedioso hacer un procedure/funcion por cada accion que se necesite, y dar permisos al usuario WEB; aparte no podes tener sql embebido en tu aplicación (ya que el usuario no puede ejecutar sentencias sobre tablas que no tiene permisos). Pero por ahora lo hemos implementado asi y nos ha dado buenos resultados. Incluso hemos hecho algo parecido en oracle (con algunas cosas que postgresql no necesita, como sinonimos a objetos de otro esquema, que en postgresql se resuelven poniendo al otro esquema en el search_path) con iguales resultados.

Obviamente esto no invalida la separacion por esquemas (que de hecho hacemos para cada aplicación, o se puede hacer por cada modulo tambien).

Esta forma te evita cambiar de usuario en el medio.

Se que quizas esto no resuelva tu pregunta, pero te puede dar otro enfoque.

--
Fernando O. Papa
DBA

> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de
> Jose Maria Buades Rubio
> Enviado el: miércoles, 13 de octubre de 2004 10:40
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: [pgsql-es-ayuda] Cambio de usuario
>
>
> Hola a todos y todas:
>
> ¿Es posible cambiar de usuario mediante PL en postgres?
>
> La idea es disponer solo de tres usuarios
>
> postgres: administrador
> login_user: usuario de password conocido
> full_user: usuario con acceso a tablas y password desconocido
>
> La aplicacion se conectaría como usuario login_user, y
> ejecutar un PL que
> se le pasaría el nombre de usuario y password, el PL ejecutado como
> usuario postgres comprobaría en una tabla si es correcto y en
> caso de ser
> así cambiar la sesión a usuario full_user.
>
> Todo esto es para controlar desde la aplicación los usuarios
> de una forma
> interna.
>
> Gracias anticipadas.
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 3: si publicas/lees desde Usenet, por favor envía
> "subscribe-nomal"
> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> a los suscriptores de la lista
>

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mariela Martinez 2004-10-13 14:45:19 CREATE OR REPLACE FUNCTION
Previous Message Ximo Llacer 2004-10-13 13:59:22 segmentation fault