Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Hier geht es um die Verwaltung von Benutzern und Rechten.
Antworten
pgSteffen
Benutzer
Beiträge: 81
Registriert: Di 14. Dez 2010, 09:46

Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von pgSteffen » Di 30. Okt 2018, 15:53

Hallo Wissende,
ich habe einen Nutzerangelegt, welcher nur bestimmte Tabellen(-Inhalte) lesen bzw. bearbeiten darf. Das funktioniert.

Wenn aber der Nutzer sich jetzt von Extern verbindet (z.B. Access/Excel ..) soll er nur die Tabellen angezeigt bzw. aufgelistet bekommen für welche er Rechte hat.
Das ähnliche Problem besteht mit dem "pgAdmin". Der Nutzer der eigentlich nur eine einige Tabelle sehen/bearbeiten darf, kann sich darüber anmelden und alle Datenbanken/Tabellen des Servers sehen. Das kann doch so nicht "gewollt" sein :(.

Lässt sich das irgendwie einstellen?

Gruß Steffen

Ps.: Ich gehe mal davon aus, dass es in Login-Rolle darf nur bestimmte Tabellen/Views sehen um das Daten ansehen (SELECT) und nicht um das Tabellen auflisten ging!?
PostgreSQL 9.3.16, 64bit Windows (irgendwann aktualisiere ich versprochen :) )

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

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von akretschmer » Di 30. Okt 2018, 17:38

nun, die Katalogtabellen sind halt für alle lesbar, daher kann auch jeder sehen, daß es eine Tabelle foo gibt. Tools wie PgAdmin sind auch eher nicht für die tägliche Arbeit eines Enduser ausgelegt - diese sollten ihre Arbeit halt über eine passende Software machen.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgSteffen
Benutzer
Beiträge: 81
Registriert: Di 14. Dez 2010, 09:46

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von pgSteffen » Di 30. Okt 2018, 17:45

Hallo,
Dank für die schnelle Antwort.
Aber das kann/darf doch nicht sein, dass der Schülerpraktikat, der alle Stühle der Abteilung "einklimpert", über pgAdmin/Access/Excel/... (und seinen Nutzername/Passwort) die gesamte Datenbankenstruktur des Konzerns sehen kann :(.

Ps:
Mir geht es allerdings primär um die Übersicht. Das heißt, ein Nutzer/Programmierer der sich mit der DB verbindet, soll dort statt 3000 Objekten nur die 2 Tabellen/Sichten sehen, auf die er Zugriff hat.

Gruß Steffen
PostgreSQL 9.3.16, 64bit Windows (irgendwann aktualisiere ich versprochen :) )

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

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von akretschmer » Di 30. Okt 2018, 17:57

PGAdmin und andere Tools sind Tools für den Admin, nicht für den Anwender. Wenn ein Schülerpraktikant nur die Stühle der Kantine erfassen darf, dann gebe ihm eine Oberfläche, mit der dies tun kann, und kein Admin-Tool.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgSteffen
Benutzer
Beiträge: 81
Registriert: Di 14. Dez 2010, 09:46

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von pgSteffen » Do 1. Nov 2018, 07:51

Hallo,
nun ja geben und nehmen sind zwei verschiedene Sachen. Auch kann man den Leuten schlecht Excel und Access wegnehmen.

Aber egal, wenn's nicht geht ist es halt so.

Gruß Steffen
PostgreSQL 9.3.16, 64bit Windows (irgendwann aktualisiere ich versprochen :) )

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

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von akretschmer » Do 1. Nov 2018, 08:05

stell 'nen webserver hin, regle, daß man nur von diesem auszugreifen darf (pg_hba), schieße via php ein formular zusammen, fertig.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pogomips
Benutzer
Beiträge: 64
Registriert: Fr 18. Nov 2016, 09:55

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von pogomips » Do 1. Nov 2018, 22:07

pgSteffen hat geschrieben:
Do 1. Nov 2018, 07:51

nun ja geben und nehmen sind zwei verschiedene Sachen. Auch kann man den Leuten schlecht Excel und Access wegnehmen.

Aber egal, wenn's nicht geht ist es halt so.
Da geht wirklich nichts?

Bei einer Postgres Installation gibt es auf oberster Ebene die Datenbanken mit Connect Privilege.
Dann darunter beliebig viele Schema, darunter Tables, Views, Trigger usw.

"Nebenher" gibt es user bzw. rollen. Die können eine Menge Rechte haben oder auch ganz wenig.
Dann gibt es eine Standardkonfiguration nach einer Standardinstallation von Postgres. Z.B. das Schema Public, das wie der Name schon sagt, ziemlich public ist.

Ich denke, es lohnt sich, an der Stelle mal etwas zu bohren. Man kann mal damit anfangen, public die connect Rechte zu einer DB zu entziehen und dann das minimal notwendige an Rechten einem User mitgeben, um Stühle zu verwalten. Also alle Rechte weg, dann minimal addieren.
Das sollte man allerdings nicht bei einem Produktivsystem machen, ohne die Auswirkungen zu kennen.

Ich hoffe jedenfalls, dass postgres auch auf Rechteebene zu mehr als einem multi tier backend taugt. Die Zugriffsbeschränkung mittels pg_hba ist natürlich stark, aber dass das die einzige Möglichkeit ist, kann ich nicht wirklich glauben.

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

Re: Nur Tabellen anzeigen/auflisten für die Leserechte bestehen

Beitrag von castorp » Fr 2. Nov 2018, 07:49

Es gibt schon einige Hacks in der Richtung (z.B. das Entziehen von SELECT Rechten auf die Systemkataloge). Das bewirkt aber dann, dass Tools wie pgAdmin nicht mehr richtig funktionieren, da die ja davon ausgehen, dass jeder die Systemkataloge auslesen darf. Theoretisch könnte ich mir vorstellen, dass man das über "Row Level Security" auch kontrollieren könnte. Aber ich weiß nicht, ob man solche Regeln auf Systemtabellen und -views überhaupt definieren kann.

Ich sehe da ehrlich gesagt auch kein Problem (außer einem kosmetischen). Zugreifen darf der Benutzer ja nicht, und die Struktur und Namen der Tabellen zu kennen ist jetzt kein echtes Sicherheitsrisiko wenn der Zugriff auf diese Tabelle richtig kontrolliert wird.

Ich denke so etwas ist eher "Aufgabe" der Tools diese Tabellen auszufiltern.

Oracle verhält sich da übrigens nicht anders. Da bietet allerdings der JDBC Treiber eine entsprechende Option an (was ja - aus Sicht des Servers - auch "nur" ein Client Programm ist).
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Antworten