Usuario de solo lectura - UNPSJB

Buen día:
En la UNPSJB estamos trabajando con la versión Pampa-Postgres versión 8.4 y se nos ha presentado la consulta por parte del sector de auditoría de la universidad de poder ingresar a ver la información contenida en el sistema en modo de solo lectura, por ejemplo designaciones de cargos, licencias, niveles de estudio, es decir los datos contenidos en el legajo electrónico.
Hemos probado en un pampa local generar un usuario y habilitar las puertas que indican operaciones de consulta, pero esto no ha dado los resultados esperados ya que no se puede ingresar al menú legajo electrónico y por ende llegar a los cargos de algún empleado de la universidad.
¿Es posible dar de alta un usuario en la versión para que pueda ingresar en modo de solo lectura? o ¿se puede realizar algo similar de alguna otra forma?

        Desde ya muchas gracias por la atención.

Saludos,

Marcelo.

Hola Marcelo, te adjunto un mail que te habia enviado el 16/09/2008 y que creo que soluciona la problemática que mencionas.

Saludos,
Nico.

RESPUESTA:

Hola Marcelo, para crear un usuario en la base de datos y que este sea de solo consulta, te recomiendo que sigas esta serie de pasos:
(En el siguiente ejemplo se crea el usuario prueba)

Crear un usuario prueba
CREATE USER prueba PASSWORD ‘prueba’;

Cambiarle el search path para que busque primero al esquema pampa
ALTER USER prueba set search_path to pampa, public;

Se le sacan todos los permisos al usuario
REVOKE ALL PRIVILEGES ON SCHEMA pampa FROM prueba;

Se le agrega el permiso para poder acceder al esquema
GRANT USAGE ON SCHEMA pampa TO prueba;

Y en este punto se le debe dar permisos por tabla, ejemplo para dh01:
GRANT SELECT ON pampa.dh01 TO prueba;
UPDATE
DELETE
INSERT

Con el siguiente sql se puede exportar a un script para generar todas las sentencias grant para todas las tablas del esquema pampa.

SELECT ‘GRANT SELECT ON pampa.’||c.relname||’ TO prueba;’ FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relkind = ‘r’::“char” AND n.nspname = ‘pampa’
ORDER BY 1;

Esperemos que se entienda, sino lo volvemos a repasar. Un abrazo,

Nico.
SIU-Mapuche / Pampa

Nicolás:
Te comento que la inquietud que tenemos es que el auditor interno de la universidad quiere tener accesso al módulo de gestión del pampa en modo de solo lectura, quiere tener la posibilidad de ver las designaciones de cargos, etc mediante el módulo, no un acceso directo a la base de datos.
Lo que me enviaste, lo usé en ese momento y anduvo correctamente, pero era para otro usuario un poco más avanzado.

muchas gracias por contestar.

Saludos,

Marcelo.

Hola Marcelo, Me falto aclararte que si usas como usuario de conexion del odbc, al usuario que creas como solo lectura, tendras un pampa que no puede escribir en la base de datos pero que puede ver legajos, cargos y demas cosas.
Solo debes cambiar en el odbc (o en el postgre.ini) el usuario con que se conecta a la base de datos por el usuario que se acaba de crear (prueba en nuestro ejemplo) y luego intenta entrar al sistema.

Saludos,
Nico.

Nicolás:

      Muchas gracias y lo pondremos en práctica, la verdad no se me había ocurrido la opción, 

Saludos,

Marcelo.

Nicolás:
Te comento que la semana pasada quedó andando la aplicación en modo de solo lectura para el auditor de la universidad, pero resulta que los auditores necesitan poder ver del histórico de liquidaciones algunos recibos aunque sea en modo windows, el tema puntual es que al pedirle al sistema que muestre la liquidación de un legajo en el modo mencionado quiere escribir algo en la tabla DH35 con lo cual envía un mensaje de error que de acceso denegado y cierra la aplicación.
¿Que deberíamos hacer para que el usuario pueda ver la mencionada liquidación?
La otra consulta es que en otro tema han publicado que la aplicación no soportaba trabajar con la tabla DH21h cuando ésta contenía muchas liquidaciones ¿Estará solucionado este problema como para migrar las liquidaciones históricas desde pervasive a la base en producción de postgres? dado que el usuario necesita ver el histórico de liquidaciones.

Saludos,

Marcelo.

Hola Marcelo, que versión del SIU Pampa Escritorio Postgres estas utilizando? el error que mencionas no tiene que ver con el usuario de solo lectura. Creo que estas usando una versión antigua del sistema la cual tenia un bug cuando se accedían a recibos históricos cuyo vigencia no era muy reciente (1 mes atras).
Actualiza tu versión de Pampa Escritorio Postgres y tendras los dos problemas solucionados.
Saludos,
Nico.

Nicolás:
Te comento que ejecutando el módulo de gestión del pampa-postgres dice que es versión 5.7.4. Adjunto el mensaje de error que aparece, luego la aplicación se cierra. ¿Podemos haber hecho algo mal en la actualización?

Saludos,

Marcelo.


El error solo te sale con el usuario de SOLO CONSULTA? o en todos los usuarios que utilizas?

Nicolás:
Cambio el postgre.ini utilizando el usuario y password de conexión de la aplición al de solo lectura y me da el error, si ejecuto con el usuario y password de conexión habilitado para realizar modificaciones sobre la base y no da error, con cualquiera de los usuarios del sistema que ingreso, en particular estoy probando con un usario administrador que tiene permiso para todas las operaciones.

Saludos,

Marcelo.

Marcelo, podrias probar de darle permisos de creacion al esquema pampa para el usuario de consulta?
La sentencia seria del estilo: GRANT CREATE ON SCHEMA pampa TO usuario_consulta;

Espero que con esto se solucione, avisanos como te fue.

Abrazo,
Nico.

Nicolás:
Te comento que probé la sentencia sql que enviaste pero la aplicación sigue dando el mismo cartel.

Saludos,

Marcelo.

Hola Marcelo, cuando realizaste el GRANT, en el mismo pusiste el usuario de consulta que tenes en el postgre.ini?
Porque lo probamos con un usuario de consulta y realizando ese cambio funciono sin problemas.

Por favor te pedimos que verifiques la sintaxis y sino avanzamos sobre unas pruebas desde la linea de comandos (por medio de psql intentar crear una vista con el usuario de solo consulta) para identificar el problema.

Saludos,
Nico.

Nicolás:
Comprobé que la sintaxis estuviera correcta y probé también desde linea de comandos para descartar que fuera un problema de pgAdmin y sigue igual.

Saludos,

Marcelo.

Hola Marcelo, sabés que Nicolas no va estar esta semana así que seguramente te contestará el proximo lunes ya que el está siguiendo este hilo.

Hola Marcelo, aca volviendo a las pistas. Perdon por la ausencia.

Podes probar lo siguiente?
Abri una consola y ejecuta un comando similar a este:

psql -U usuario_consulta nombre_de_la_base
una vez dentro de la linea de comandos de postgres, ejecuta lo siguiente:
CREATE OR REPLACE VIEW pampa.nro_legajo AS SELECT nro_legaj FROM dh01;

Y si te da algún error por favor envianos exactamente lo que te dice.

Saludos, Nico.

Nicolás:
Probamos en una copia local la sentencias sql que enviaste y el mensaje que dió fue CREATE VIEW, por lo que no dió error.

Saludos,

Marcelo.

Disculpa mi insistencia, pero si en el archivo postgre.ini (en el caso de que uses este archivo para conectarte, sino en el ODBC) tenes que se conecte con el usuario de solo lectura con que tiraste esa consulta, te tendría que funcionar.

En el caso de que no te funcione, te recomiendo que habilites el log de Postgres (si hay dudas en como, lo podes plantear en el siguiente foro: http://comunidad.siu.edu.ar/index.php?board=17.0) y nos envies el resultado que tiene el archivo de log dentro de la ventana de tiempo entre que pedís los históricos y que recibis el error.

Saludos,
Nico.