Privilegi su INSERT in PostGIS / QGIS


12

Sto cercando di impostare i privilegi nel mio database per gli utenti in modo che possano solo AGGIORNARE, INSERIRE, CANCELLARE e, naturalmente, SELEZIONARE su tabelle geografiche.

Dal momento che sto usando alcuni tipi SERIALI per i miei ID, preferirei non dare nemmeno agli utenti la possibilità di modificare manualmente questo campo. Quindi sto definendo i privilegi di colonna. Funziona bene sulla parte UPDATE, ma il pulsante in QGIS che consente la creazione di un nuovo oggetto rimane in grigio. L'unico modo in cui sembra funzionare è quando non specifico alcun campo nella definizione dei privilegi. Anche quando scelgo tutti i campi non funziona (anche se avrei pensato che non specificare alcuna colonna e specificarli tutti sarebbe lo stesso).

Sembra essere qualcosa che non capisco, o c'è una limitazione nella definizione dei privilegi per una corretta interazione tra DB e QGIS. Qualcuno ha qualche informazione o consiglio che potrebbe aiutarmi a capire cosa sta succedendo e / o (ancora meglio) aiutarmi a raggiungere il mio obiettivo?

Posso sempre affrontarlo impostando il campo come non modificabile nella definizione dello stile, ma poiché chiunque può impostarlo a proprio piacimento, preferirei un'alternativa più sicura.

Esecuzione di QGIS 2.14, PostGIS 2.3 per PostgreSQL 9.5.


Usi il comando GRANT SQL per impostare i diritti utente (privilegi)? Hai GRANT INSERT sul tuo tavolo?
Zoltan,

@Zoltan Sì, la mia domanda è simileGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair,

5
L'utente che deve disporre dei diritti INSERT deve disporre dei diritti completi per la colonna chiave primaria. Altrimenti non sarà in grado di fare l'inserto. Non credo che ci sia alcun modo per aggirare questo. Puoi limitare la visibilità di quella colonna in QGIS, come hai già detto.
Micha,

1
@Micha Ok, allora ha davvero senso dire così ... Immagino di avere anche un'altra soluzione alternativa da un trigger specifico della colonna SU INSERISCI NIENTE E SU AGGIORNAMENTO NON NIENTE per la chiave primaria, che impedirebbe qualsiasi modifica manuale di la chiave primaria. Grazie.
GuiOm Clair,

3
Oppure si crea una vista della tabella escludendo la colonna SERIALE e si accede solo a quella vista.
Joe Be

Risposte:


0

L'utente che deve disporre dei diritti INSERT deve disporre dei diritti completi per la colonna chiave primaria. Altrimenti non sarà in grado di fare l'inserto. Non credo che ci sia alcun modo per aggirare questo. Puoi limitare la visibilità di quella colonna in QGIS, come hai già detto.

Per quanto riguarda il tuo commento: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keynon sono sicuro che funzionerebbe. Quando si inserisce una nuova riga, è necessario creare una nuova chiave primaria , ovviamente. Non vuoi aggirare quello.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.