Login-Rolle darf nur bestimmte Tabellen/Views sehen

Hier geht es um die Verwaltung von Benutzern und Rechten.
Antworten
Heuristiker
Neuer Benutzer
Beiträge: 11
Registriert: Do 20. Okt 2016, 13:25

Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von Heuristiker » Mi 23. Nov 2016, 11:12

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

akretschmer
Erfahrener Benutzer
Beiträge: 7410
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von akretschmer » Mi 23. Nov 2016, 18:07

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.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Heuristiker
Neuer Benutzer
Beiträge: 11
Registriert: Do 20. Okt 2016, 13:25

Re: Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von Heuristiker » Do 24. Nov 2016, 07:42

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

castorp
Erfahrener Benutzer
Beiträge: 1032
Registriert: Sa 27. Jun 2009, 22:24

Re: Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von castorp » Do 24. Nov 2016, 08:21

Heuristiker hat geschrieben: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?
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:

Code: Alles auswählen

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).
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7410
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von akretschmer » Do 24. Nov 2016, 08:25

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.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Heuristiker
Neuer Benutzer
Beiträge: 11
Registriert: Do 20. Okt 2016, 13:25

Re: Login-Rolle darf nur bestimmte Tabellen/Views sehen

Beitrag von Heuristiker » Do 24. Nov 2016, 08:37

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

Antworten