2 votos

¿Cómo ocultar el esquema de PostGIS en QGIS?

Esta es mi situación:

Tengo una tabla A en el esquema A que incluye datos personales. Quiero dar permiso a personas específicas para ver algunos datos de esa tabla en QGIS, excluyendo los datos personales. Por lo tanto, tengo una vista B de la tabla A en el esquema B que no incluye las columnas de los datos personales. El problema es que quiero que la persona edite dos columnas en esa vista. Así que creé un disparador para esta vista y le di permiso a la persona para actualizar estas dos columnas en ella. Sin embargo, también necesito darle permiso para acceder a la tabla A. Mi problema ahora es que la persona puede acceder a la tabla A en el esquema A ya que necesita los permisos para actualizar las dos columnas. Dado que esa persona no sabe nada sobre la estructura de la base de datos, esto podría estar bien ya que no sabría que hay una tabla detrás de esa vista. Sin embargo, al conectarse a la base de datos en QGIS, también puede ver el esquema A y puede cargar la tabla A.

Tal vez haya una forma de limitar el acceso a la tabla A en el backend. Pero por ahora sería suficiente si el esquema A pudiera estar oculto en QGIS. ¿Es posible eso? ¿O alguien tiene una mejor idea para una solución?

0 votos

¿Se le permite a la persona ver los datos personales o tu objetivo es ocultar completamente esta información?

0 votos

Quiero ocultarlo por completo a esa persona

0 votos

Simplemente usa vistas actualizables y asigna los privilegios adecuados: depesz.com/2012/12/11/…

3voto

mataap Puntos 121

Creo que no es necesario trabajar con vistas o triggers ya que postgres tiene la opción de hacer privilegios a nivel de columna. Sería algo como: grant select ( id, name, geom ) on tablename to username;

Aquí hay un simple blogpost al respecto: https://www.depesz.com/2009/01/31/waiting-for-84-column-level-privileges/

0 votos

Pensé que este grant select no es posible, porque existen vistas para limitar el contenido visible al usuario. Quizás entendí mal eso.

1voto

bretddog Puntos 210

Puedo pensar en dos posibles soluciones para este problema:

  1. Crear una nueva tabla en el esquema B sin las columnas de información personal y alimentar esta tabla de vuelta a la tabla principal con una sentencia de actualización. Podrías agregar algún tipo de identificador para que coincidan las filas.

  2. Ocultar las columnas dentro de QGIS con un estilo estándar. Así que cada vez que tu usuario cargue la tabla, se le presentará con el mismo estilo. En este estilo puedes ocultar ciertas columnas en las propiedades y en la pestaña de campo puedes elegir que el widget de edición sea "oculto" (ver capturas de pantalla).

introducir la descripción de la imagen aquí

Después de establecer el estilo, guárdalo en tu base de datos como predeterminado (propiedades y luego el estilo en el lado inferior izquierdo. Sin embargo, ten en cuenta que el usuario podría cambiar el estilo y así mostrar las columnas y editarlas. Por lo tanto, esto no es 100% seguro.

antes y después de ocultar

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X