Privilèges sur INSERT dans PostGIS / QGIS

12

J'essaie de définir des privilèges dans ma base de données pour les utilisateurs afin qu'ils ne puissent METTRE À JOUR, INSÉRER, SUPPRIMER et, bien sûr, SELECT sur les tables géographiques.

Étant donné que j'utilise certains types SERIAL pour mes identifiants, je préférerais même ne pas donner aux utilisateurs la possibilité de modifier manuellement ce champ. Je définis donc des privilèges par colonne. Cela fonctionne bien sur la partie UPDATE, mais le bouton dans QGIS permettant la création d'un nouvel objet reste grisé. La seule façon dont cela semble fonctionner est lorsque je ne spécifie aucun champ dans la définition des privilèges. Même lorsque je choisis tous les champs, cela ne fonctionne pas (même si j'aurais pensé que ne pas spécifier de colonne et les spécifier tous serait la même).

Cela semble être quelque chose que je ne comprends pas, ou il y a une limitation dans la définition de privilège pour une interaction correcte entre la base de données et QGIS. Quelqu'un a-t-il des informations ou des conseils qui pourraient m'aider à comprendre ce qui se passe et / ou (encore mieux) m'aider à atteindre mon objectif?

Je peux toujours gérer cela en définissant le champ comme non modifiable dans la définition de style, mais comme tout le monde peut le définir à sa guise, je préférerais une alternative plus sécurisée.

Exécution de QGIS 2.14, PostGIS 2.3 pour PostgreSQL 9.5.

GuiOm Clair
la source
Utilisez-vous la commande GRANT SQL pour définir les droits d'utilisateur (privilèges)? Avez-vous GRAND INSERT sur votre table?
Zoltan
@Zoltan Oui, ma requête ressemble àGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair
5
L'utilisateur qui doit disposer des droits INSERT doit disposer des droits complets sur la colonne de clé primaire. Sinon, elle ne pourra pas faire l'insertion. Je ne pense pas qu'il y ait moyen de contourner cela. Vous ne pouvez que limiter la visibilité de cette colonne dans QGIS, comme vous l'avez déjà mentionné.
Micha
1
@Micha Ok alors, en effet, cela a un sens total dit comme ça ... Je suppose que j'ai également une autre solution de contournement par un déclencheur spécifique à la colonne ON INSERT DO NOTHING et ON UPDATE DO NOTHING pour la clé primaire, ce qui empêcherait toute modification manuelle de la clé primaire. Merci.
GuiOm Clair
3
Ou vous créez une vue de votre table à l'exclusion de la colonne SERIAL et ne donnez accès qu'à cette vue.
JoeBe

Réponses:

0

L'utilisateur qui doit disposer des droits INSERT doit disposer des droits complets sur la colonne de clé primaire. Sinon, elle ne pourra pas faire l'insertion. Je ne pense pas qu'il y ait moyen de contourner cela. Vous ne pouvez que limiter la visibilité de cette colonne dans QGIS, comme vous l'avez déjà mentionné.

En ce qui concerne votre commentaire: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyje ne suis pas sûr que cela fonctionnerait. Lors de l'insertion d'une nouvelle ligne, une nouvelle clé primaire doit évidemment être créée. Vous ne voulez pas contourner cela.

Micha
la source