Re: %seguridad a nivel registro

From: Pablo Braulio <brulics(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: %seguridad a nivel registro
Date: 2006-03-03 10:53:15
Message-ID: 200603031153.19037.brulics@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El Jueves, 2 de Marzo de 2006 18:07, Juan Martínez escribió:
> No es facil. Considerando que tienes clientes de todo tipo. Esto me
> suena a varios administradores (o sub administradores) mas clientes que
> poblan (o pueblan?) las tablas, y desde distintas interfaces.
>
> Lo que no es recomendable, es que los usuarios via web sean usuarios
> postgres. No es mala idea, pero la aplicacion web tiene que ser muy
> versatil y debe tener un muy buen control de los errores que se puedan
> generar (dado que asumo que el usuario web es mas neofito con respecto a
> las BD, comparado con el que accedera via psql, entonces los errores hay
> que /traducirlos/). Ahora si el interfaz web es phpPgAdmin, la cosa
> cambia. En ese caso debes crear usuarios reales en postgres.
>
> Tambien no es malo que dos tipos de usuarios postgres se usen para el
> acceso web. Uno con privilegios de solo SELECT, y otro con los
> privilegios de UPDATE, INSERT, [DELETE]. Así te aseguras que no hagan
> nada que te de dolores de cabeza en el futuro. Me refiero a crackeos por
> falta de validacion de los campos de los formularios web.
>
> La idea de varios administradores de frenton no la encuentro muy buena
> (por algo en los paises no hay mas de un presidente simultaneamente, por
> algo sera...).
>
> Si, creo que definitivamente lo tuyo va por GRANT y REVOKE.

No se si en te podrá servir, pero yo lo hago del siguiente modo.

Creo un usuario del sistema para el acceso a postgres mediante psql o pgadmin3
(por ejemplo). Este usuario no es postgres.

Este mismo es el que uso en php para la conexión a la base de datos, y luego
para el uso de la base de datos a través de la web, creo una tabla de
usuarios con los siguientes campos:

\d users
Tabla «public.users»
Columna | Tipo | Modificadores
----------+-----------------------+----------------------------------------------------
id | integer | not null default
nextval('users_id_seq'::regclass)
usuario | name | not null
nombre | text |
password | character varying(32) | not null
admins | boolean | not null default false
bloq | boolean | not null default false
mail | character varying(40) | not null
Índices:
«users_pkey» PRIMARY KEY, btree (id)
«users_mail_key» UNIQUE, btree (mail)
«users_password_key» UNIQUE, btree ("password")
«users_usuario_key» UNIQUE, btree (usuario)

Como puedes ver hay un campo bool llamado "admins" y otro "bloq". Esto es para
clasificar al usuario como administrador o no, y el otro para bloquearlo.

De este modo puedo filtrar los usuarios y denegarles acceso a partes de la
web.

A no ser que se me haya escapado algún concepto o detalle, creo que de este
modo puedo asegurar el acceso a la base de datos.

Si estoy equivocado, agradezco opiniones.

--
Saludos.
Pablo
------------
Jabber: bruli(at)myjabber(to)net
Fingerprint: 944D 10DA 4C10 08D1 574D 4B48 3BC1 CEF7 F222 EB1D

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ariel 2006-03-03 11:03:39 RE: PITR error
Previous Message Jaime Casanova 2006-03-03 05:48:50 Re: PITR error