Privilegios en INSERT en PostGIS / QGIS

12

Estoy tratando de establecer privilegios en mi base de datos para los usuarios para que solo puedan ACTUALIZAR, INSERTAR, ELIMINAR y, por supuesto, SELECCIONAR en tablas geográficas.

Como estoy usando algunos tipos de SERIE para mis ID, preferiría ni siquiera dar a los usuarios la posibilidad de editar manualmente este campo. Así que estoy definiendo los privilegios de columnas. Funciona bien en la parte ACTUALIZAR, pero el botón en QGIS que permite la creación de un nuevo objeto permanece en gris. La única forma en que parece estar funcionando es cuando no especifico ningún campo en la definición de privilegios. Incluso cuando elijo todos los campos, no funciona (aunque hubiera pensado que no especificar ninguna columna y especificarlas todas sería lo mismo).

Parece ser algo que no entiendo, o hay una limitación en la definición de privilegios para una interacción adecuada entre el DB y QGIS. ¿Alguien tiene alguna información o consejo que pueda ayudarme a comprender lo que está sucediendo y / o (aún mejor) ayudarme a lograr mi objetivo?

Siempre puedo lidiar con eso configurando el campo como no editable en la definición de estilo, pero como cualquiera puede configurarlo como quiera, preferiría una alternativa más segura.

Ejecutando QGIS 2.14, PostGIS 2.3 para PostgreSQL 9.5.

GuiOm Clair
fuente
¿Utiliza el comando GRANT SQL para establecer los derechos de usuario (privilegios)? ¿OTORGASTE INSERTAR en tu mesa?
Zoltan
@Zoltan Sí, mi consulta se pareceGRANT INSERT (col2, col3, col4) ON table TO users
Guiom Clair
55
El usuario que debe tener derechos de INSERTAR debe tener todos los derechos sobre la columna de clave principal. De lo contrario, no podrá hacer la inserción. No creo que haya alguna forma de evitar eso. Solo puede limitar la visibilidad de esa columna en QGIS, como ya mencionó.
Micha
1
@Micha Ok, de hecho, tiene mucho sentido decir eso ... Supongo que también tengo otra solución alternativa por un disparador específico de columna EN INSERTAR NO HACER y EN ACTUALIZAR NO HACER NADA para la clave principal, lo que evitaría cualquier edición manual de La clave primaria. Gracias.
GuiOm Clair
3
O crea una vista de su tabla excluyendo la columna SERIAL y solo da acceso a esa vista.
JoeBe

Respuestas:

0

El usuario que debe tener derechos de INSERTAR debe tener todos los derechos sobre la columna de clave principal. De lo contrario, no podrá hacer la inserción. No creo que haya alguna forma de evitar eso. Solo puede limitar la visibilidad de esa columna en QGIS, como ya mencionó.

Con respecto a su comentario: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyno estoy seguro de que funcione. Al insertar una nueva fila, se debe crear una nueva clave primaria , obviamente. No quieres eludir eso.

Micha
fuente