Re: [Spanish] Asignación de permisos de usuarios a bases de datos PostgreSQL/PostGIS.

Pedro-Juan Ferrer Matoses pferrer at osgeo.org
Fri Sep 3 03:38:43 EDT 2010


Hola Jhonatan.

Hasta que le "pillas el tranquillo" la gestión de permisos de Postgres
es un poco "frustrante".

Primero tiene un nivel, llamémoslo "físico", que impide la conexión
con la base de datos y que se controla con el postgresql.conf
(directiva listen_addresses) y por el pg_hba.conf.

Lo normal es tener un "*" en el primero y una buena configuración en
el segundo que dependerá de tu esquema de red, usuarios, etc...

Es muy raro el caso en que tengas que "quitar" la línea que da acceso
a 127.0.0.1 de pg_hba.conf como parece que has hecho (por el error que
te da), evidentemente quitar esa línea impide los accesos en local a
la base de datos, lo cual puede ser un poco molesto cuando haces
mantenimiento.

Por defecto viene así y normalmente se cambia el trust por md5

host    all         all         127.0.0.1/32          trust

Yo no hago control de usuarios a este nivel, generalmente porque mis
proyectos no tienen esa necesidad controlar accesos a duplas
usuario/base de datos a nivel "físico", simplemente hago control de
IPs

El segundo nivel es el llamémoslo "lógico" es dónde se suele limitar a
los usuarios los permisos a las bases de datos porque es mucho más
granular, que es en parte tu problema. Se hace con roles de login y
roles de grupo.

No te líes dando permisos a roles de login... simplemente créalos y
que hereden permisos de roles de grupo.

Por ejemplo quiero que pepito pueda grabar datos y juanito solo
leerlos, pues creo un rol de grupo llamado editores y otro rol de
grupo llamado lectores, añado a pepito a editores y a juanito a
lectores y en las bases de datos y tabla a tabla uso GRANT para dar o
quitar permisos:

GRANT ALL ON mitabla TO editores;
GRANT SELECT ON mitabla TO lectores;

Jugando con GRANT y los roles de grupo se puede ser muy granular.

Eso sí te recomiendo que hagas casi todo el trabajo con scripts sql,
si tienes que ir con el pgAdmin tabla a tabla te puede llevar un rato
si la base de datos tiene un modelo "pobladito"

Espero que te sirva de ayuda...

Un saludo,
2010/9/3 JHONATAN CANO FURAGARO <jhonatan.cano.f en gmail.com>:
>
> Buen día,
>
> Voy a ser un pco extenso, pero la verdad ya solicite ayuda a el grupo de
> PostgreSQL, y ahora recurro a uds a ver si logro dar en el clavo con este
> tema.
>
> Hasta el momento he estado trabajando postgres solo para servir la
> información cartográfica mediante servicios WMS usando como servidores
> Mapserver y
> geoserver, tengo GeoExt como interfaz del usuario, estoy trabajando con
> PostgreSQL 8.4 y PostGIS 1.5 sobre SO Win XP.
>
> Pero ahora me gustaría que mis compañeros del grupo de trabajo tengas acceso
> a  las bases de datos de cada uno de los proyecto que tengo, todos estamos
> en una red local (intranet).
>
> Tengo en "pg_hba.conf" la siguiente línea:
>
> host       all   all  172.16.129.0/24     md5
>
> Con el cual puedo acceder desde cualquier PC de la intranet con el usuario
> postgres (superusuario)  y otra cuenta (jcano) que cree  por pgAdmin III y
> donde
> tambien es superusuario, pero logicamente éste me permite editar la tabla,
> cosa que realmente en estos momentos no quiero que hagan, solo que la puedan
> ver
> y nada más.
>
> Que debo hacer para que  las personas solo puedan ver la información y no
> editarla de tal forma que quede de solo lectura?
>
> He creado varias cuentas, y usando gvSIG logro conectarme a la BD, me
> muestra todas las tablas pero a la hora de seleccionar una de ellas sale un
> aviso (ver figuras gvSIG_1...gvSIG_7):
> "ID no disponible nombreesquema.nombrecapa"
> "ERROR: Permiso denegado al esquema nombreesquema"
> Despues:
> "Hubo un problema al obtener campos con geometrías válidos:"
> "ERROR: Transacción abortada, las órdenes serán ignoradas hasta el fin de
> bloque de transacción:nombreesquema.nombrecapa"
>
> Los mismo pasa con QGIS(ver figuras QGIS_1,2 y3), solo que ahora me dice
> aquí me dice que me hace falta los privilegios para las tablas que posee
> geometría PostGIS.
>
> Todo esto por un lado...ahora lo siguiente:
>
> He tratado de darle privilegios a un usuario para que pueda acceder a la
> base de datos XXYY de la siguiente forma:
>
> Inicio Ejecutar (trabajo en Win XP):
>
> runas /user:postgres cmd
>
> echo ”ALTER DATABASE nombre_basedatos OWNER TO nuevo_usuario” | psql
>
> Y sale el siguiente aviso:
>
> Microsoft Windows XP [Versión 5.1.2600]
> (C) Copyright 1985-2001 Microsoft Corp.
>
> C:\WINDOWS\system32>echo "ALTER DATABASE Espiritusanto OWNER TO rvelez" |
> psql
> psql: FATAL:  no hay una línea en pg_hba.conf para «127.0.0.1», usuario
> «postgre
> s», base de datos «postgres», SSL inactivo
>
> C:\WINDOWS\system32>
>
> No se que me falta, he buscado en la web y nada aún, que estoy haciendo mal
> en todos los pasos?
>
>
> Muchass gracias por sus aporte.
>
>
> --
> JHONATAN CANO FURAGARO
> Ingeniero Forestal
> Universidad Nacional de Colombia
> Celular 300 430 45 46
>
> _______________________________________________
> Spanish mailing list
> Spanish en lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/spanish
>
>



-- 
Pedro-Juan Ferrer Matoses
Valencia (España)


More information about the Spanish mailing list