Re: roles

From: suso <jlcubas(at)terra(dot)es>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: roles
Date: 2009-05-18 19:43:54
Message-ID: 4A11BA7A.5040007@terra.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola de nuevo Alvaro, garcias por contestar
Pensé que sería mas "sencillo" (quizás lo sea, pero me cuesta aprenderlo
pq soy muy nuevo en esto), pero como se suele decir, con paciencia y una
caña( y mucho leer) se aprende a pescar:)
Con tu info, ya tengo para empezar, miraré como se hace, y me
documentaré para no "meter la pata":)
Muchas gracias de nuevo
Un saludo
Suso

> suso escribió:
>> Hola Alvaro que tal!, gracias por responder
>>>> Hola de nuevo, tengo un par de "dudillas", que son:
>>>>
>>>> 1 - Es posible crear algún tipo de rol, ya sea de grupo o login,
>>>> especial, que solo tenga permisos de lectura de la base de datos
>>> Claro. Debes asegurarte de revocar los privilegios a PUBLIC de todos
>>> los objetos para que esto tenga efecto. (Normalmente uno hace REVOKE a
>>> ese rol, pero el rol sigue teniendo acceso; la explicación es que el
>>> privilegio se obtiene porque PUBLIC los tiene). Luego le das GRANT
>>> SELECT en las tablas que te interesen. Observa también que debes
>>> otorgar privilegios a tablas y esquemas separadamente.
>>>
>> Es decir, solo hacer un REVOKE a el/os rol/es de login y/ grupos , y en
>> función de eso, lo hago para cada tablas o lo que tenga acceso ese/os
>> rol/es.
>
> Además debes hacer
>
> REVOKE bla bla FROM PUBLIC;
>
>
>> 1 - Mi intención es crear 2 "grupos", uno con acceso completo a todas
>> las tablas de datos, y lo que sea necesario (pero no de superusuario), y
>> otro grupo que sólo según el caso, o bien sólo ver unas determinadas
>> tablas de datos, o verlas todas pero solo "ver", ningún tipo de
>> modificación, por eso el tema de controlar ese acceso y enviar
>> "mensajes", cuando alguien que no tiene los permisos adecuados decirle
>> "oye, esto no puedes hacerlo", pero quizás, eso se podría hacer con un
>> trigger, y un SP, es correcto?
>> Pero aún así, me haría falta obtener por código "el tipo de permiso"
>> que tiene esa persona, pq según sea, le bloqueo el acceso a ciertas
>> partes del programa, no sólo a las tablas, no sé si me explico.
>
> Ya entiendo. Supongo que lo que debes hacer es asignar cada uno de esos
> permisos a distintos roles de no-login, y luego otorgarle esos roles a
> los otros roles (que son los de login).
>
> Puedes saber si el rol actual "tiene" tal o cual rol usando la función
> pg_has_role, y usar eso para activar los distintos módulos en tu
> aplicación:
>
> alvherre=# create role lectura_sobre_tablas nologin;
> CREATE ROLE
> alvherre=# create role pedro;
> CREATE ROLE
> alvherre=# grant lectura_sobre_tablas to pedro;
> GRANT ROLE
>
> --- acá un ejemplo de cómo obtener la info si ya eres ese usuario:
> alvherre=# set session authorization pedro;
> SET
> alvherre=> select pg_has_role('lectura_sobre_tablas', 'usage');
> pg_has_role
> -------------
> t
> (1 fila)
>
> -- ejemplo de cómo obtenerlo cuando eres algún otro usuario:
> alvherre=> reset session AUTHORIZATION ;
> RESET
> alvherre=# select pg_has_role('pedro', 'lectura_sobre_tablas', 'usage');
> pg_has_role
> -------------
> t
> (1 fila)
>
>
>
>
>
> ------------------------------------------------------------------------
>
>
> Se certificó que el correo entrante no contiene virus.
> Comprobada por AVG - www.avg.es
> Versión: 8.5.329 / Base de datos de virus: 270.12.33/2120 - Fecha de la versión: 05/18/09 06:28:00
>

In response to

  • Re: roles at 2009-05-18 16:48:41 from Alvaro Herrera

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luis D. García 2009-05-18 20:22:01 Re: [pgsql-es-ayuda] Problemas con índices al eliminar Foreign Key Constraint
Previous Message Alvaro Herrera 2009-05-18 19:10:35 Re: No pude dar de alta la cuenta...