Berechtigungen für INSERT in PostGIS / QGIS

12

Ich versuche, Berechtigungen in meiner Datenbank für Benutzer festzulegen, damit diese nur UPDATE, INSERT, DELETE und natürlich SELECT für geografische Tabellen ausführen können.

Da ich einige SERIAL-Typen für meine IDs verwende, möchte ich den Benutzern nicht einmal die Möglichkeit geben, dieses Feld manuell zu bearbeiten. Also definiere ich spaltenweise Privilegien. Es funktioniert im UPDATE-Teil einwandfrei, aber die Schaltfläche in QGIS, mit der ein neues Objekt erstellt werden kann, bleibt ausgegraut. Der einzige Weg, auf dem es zu funktionieren scheint, ist, wenn ich in der Berechtigungsdefinition kein Feld spezifiziere. Selbst wenn ich alle Felder auswähle, funktioniert dies nicht (obwohl ich gedacht hätte, dass die Angabe keiner Spalte und die Angabe aller Felder gleich wäre).

Es scheint etwas zu sein, das ich nicht verstehe, oder es gibt eine Einschränkung in der Berechtigungsdefinition für die ordnungsgemäße Interaktion zwischen der Datenbank und QGIS. Hat jemand Informationen oder Ratschläge, die mir helfen könnten, das Geschehen zu verstehen und / oder (noch besser) mir zu helfen, mein Ziel zu erreichen?

Ich kann immer damit umgehen, indem ich das Feld in der Stildefinition als nicht bearbeitbar einstelle, aber da jeder es so einstellen kann, wie er möchte, würde ich eine sicherere Alternative bevorzugen.

Ausführen von QGIS 2.14, PostGIS 2.3 für PostgreSQL 9.5.

GuiOm Clair
quelle
Verwenden Sie den Befehl GRANT SQL, um Benutzerrechte (Berechtigungen) festzulegen? Hast du GRANT INSERT auf deinem Tisch?
Zoltan
@ Zoltan Ja, meine Frage sieht aus wieGRANT INSERT (col2, col3, col4) ON table TO users
GuiOm Clair
5
Der Benutzer, der über INSERT-Rechte verfügen soll, muss über vollständige Rechte für die Primärschlüsselspalte verfügen. Andernfalls kann sie die Einfügung nicht durchführen. Ich glaube, daran führt kein Weg vorbei. Sie können die Sichtbarkeit dieser Spalte in QGIS nur einschränken, wie Sie bereits erwähnt haben.
Micha
1
@Micha Ok, dann ist es in der Tat absolut sinnvoll, wenn man das so sagt ... Ich schätze, ich habe auch eine andere Problemumgehung durch einen spaltenspezifischen Auslöser für ON INSERT DO NOTHING und ON UPDATE DO NOTHING für den Primärschlüssel, der jede manuelle Bearbeitung von verhindern würde der Primärschlüssel. Vielen Dank.
GuiOm Clair
3
Oder Sie erstellen eine Ansicht Ihrer Tabelle mit Ausnahme der Spalte SERIAL und gewähren nur Zugriff auf diese Ansicht.
JoeBe

Antworten:

0

Der Benutzer, der über INSERT-Rechte verfügen soll, muss über vollständige Rechte für die Primärschlüsselspalte verfügen. Andernfalls kann sie die Einfügung nicht durchführen. Ich glaube, daran führt kein Weg vorbei. Sie können die Sichtbarkeit dieser Spalte in QGIS nur einschränken, wie Sie bereits erwähnt haben.

Zu Ihrem Kommentar: column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary keyIch bin mir nicht sicher, ob das funktionieren würde. Beim Einfügen einer neuen Zeile muss natürlich ein neuer Primärschlüssel erstellt werden. Sie wollen das nicht umgehen.

Micha
quelle