Alter Standard-Berechtigungen für eine Rolle in der Gruppe in PostgreSQL

Erstellt habe ich zwei Gruppen-Rollen in Postgres 9.2: eine heißt admins und der andere heißt readers.

Die Idee ist sehr einfach: admins erstellen von Tabellen und das readers gelesen haben Zugriff auf diese Tabellen.

Nach Gewährung der Privilegien, um sowohl der Gruppe als auch Rollen funktioniert alles wie erwartet, für exisintg Objekte. Aber jetzt was über die neuen Objekte?

Also nach der Lektüre dieses post ich verändert die default-Berechtigungen zu gewähren SELECT Privilegien zu readers für jede neue Tabelle, die admins erstellen:

ALTER DEFAULT PRIVILEGES FOR ROLE admins IN SCHEMA public GRANT SELECT ON TABLES TO readers;
ALTER DEFAULT PRIVILEGES FOR ROLE admins IN SCHEMA public GRANT SELECT ON SEQUENCES TO readers;

Aber anscheinend ALTER DEFAULT PRIVILEGES wirkt sich nur auf die Rolle, aber nicht die Mitglieder der Rolle. Lassen Sie mich Ihnen zeigen.

Wenn ich mich anmelden als userX (Mitglied admins) und erstellen Sie eine neue Tabelle, keine Standard-Berechtigungen erteilt werden (und daher readers keinen Zugriff auf diese Tabelle):

test=# CREATE TABLE table1 (name VARCHAR(10)); -- Creating table as userX
test=# \dp table1
                           Access privileges
 Schema |  Name  | Type  | Access privileges | Column access privileges 
--------+--------+-------+-------------------+--------------------------
 public | table1 | table |                   | 

Jedoch die Standard-Berechtigungen erteilt werden, wenn ich die Tabelle als admins (readers können auf diese Tabelle zugreifen):

test=# SET ROLE admins;
test=# CREATE TABLE table2 (name VARCHAR(10)); -- Creating table as admins
test=# \dp table2
                             Access privileges
 Schema |  Name  | Type  |   Access privileges   | Column access privileges 
--------+--------+-------+-----------------------+--------------------------
 public | table2 | table | readers=r/admins     +| 
        |        |       | admins=arwdDxt/admins | 

Gibt es eine Möglichkeit, ändern Sie die Standard-Berechtigungen für ALLE Mitglieder einer Rolle in der Gruppe? Oder soll ich das einfach ändern Standard-Berechtigungen für jeden Benutzer?


UPDATE: In diesem PostgreSQL forum jemand fragte eine sehr ähnliche Frage und die Antwort war:

Leider kann ich nicht sehen, ein Weg, um zu erreichen, was Sie wollen, ohne die Standard-Berechtigungen für alle beteiligten.

Aber diese Frage wurde vor 2 Jahren. Gibt es jetzt eine Lösung?

  • Ich habe versucht, dies zu erreichen auch, aber ich denke, dies könnte dazu führen, dass einige Art von Diamant-problem. Wenn ein Benutzer Mitglied in mehr als einer Rolle in der Gruppe, die Standard-Berechtigungen erteilt werden sollte?
  • Versuchen sehr ähnliche Sache, aber auch mit SCHEMA und die ANSICHTEN, die Gewährung von SELECT-Rechte auf the_reader , für die Zukunft erstellten ANSICHT(en) dba.stackexchange.com/questions/238766/... . In der mine, ich habe gerade mit dem Benutzer (und nicht Gruppen) und ich benutze ein schema als "userspace", wo ein manager schreiben kann jede Ansicht.
Schreibe einen Kommentar