Login-Rolle darf nur bestimmte Tabellen/Views sehen

Hallo PostgreSQL’ler!

Falls die Frage bereits beantwortet worden ist, bitte ich um Verzeihung!

Eine Login-Rolle darf nur bestimmte Tabellen/Views sehen dürfen. Wie ist dies am besten umzusetzen?

Herzlichen Dank und viele Grüße

Heuristiker

Public-Schema?

Du könntest der Rolle alle Rechte da nehmen via “revoke all on schema public from darfnix;”, allerding darf er noch immer neue Objekte anlegen.
Du könntest “REVOKE ALL ON schema public FROM public;” das verhindern, dann darf aber keiner mehr da was anlegen. Also dann wieder allen, die was anlegen dürfen, dies zuweisen.

Das ganze Rollen-Rechte-Management ist etwas, ähm, komplex. Wenn man das anwenden will, sollte man vorher gründlich damit spielen.

Servus akretschmer,

danke für deine Antwort. Das Public-Schema ist nicht betroffen. Wenn es jetzt speziell um Rechte auf bestimmte Teile eines Schemas/Tabelle geht, kann ich das gar nicht so fein granulieren?

vg

Doch schon, es ist nur so dass die Rechte auf dem public Schema standardmäßig so eingestellt sind, dass jeder User der sich anmelden darf, dort auch Tabellen anlegen kann. Lesen kann dieser User aber nur die Tabellen für die er die Berechtigungen erhalten hat (und seine eigenen).

Das “REVOKE ALL ON schema public FROM public;” verhindert, dass dieser Read-Only User neue Tabellen im Schema public anlegen kann - lesen kann der User die bereits existierenden Tabellen aber nicht.

Wenn Du dem neu angelegten User gezielt SELECT Rechte für die Tabellen gibst die er lesen darf, sind das dann auch genau die Tabellen die er lesen kann.

Ich würde das immer über eine eigen Rolle machen in der das gebündelt ist und diese Rolle dann dem entsprechenden User zuweisen:

create role readonly;
grant select on schema_one.table_one to readonly;
grant select on schema_one.table_two to readonly;
create user analyst with password 'supersecretpassword';
grant readonly to analyst;

Wenn sich “analyst” jetzt anmeldet darf er ausschließlich Daten aus den beiden Tabellen sehen - sonst aber nichts. Er dürfte aber z.B. eine neue Tabelle im public Schema anlegen, wenn die default Rechte des Schema nicht geändert werden (speziell die Rechte die der Rolle public zugewiesen wurden).

ergänzend zu castorp: Du kannst in PG Rechte bis runter auf Schemas, Tabellen, Spalten und, seit 9.5 mit RLS, sogar auf Rowebene vergeben.

Das hilft mir weiter! Danke für die ausführlichen Antworten! :slight_smile: