ZUgriff per Webinterface, User für DB-Verbindung??

Hallo,
ich habe auf meinem Server eine kleine “Datenbank” am laufen, auf die eine Hand voll Menschen zugreifen können.
Bis dato war es so, daß nach der erfolgten Benutzerauthentifizierung über PHP eine Verbindung zur Datenbank erstellt wird.
Dies geschieht grundsätzlich über EINEN in PostgreSQL angelegten User.

Die Benutzer haben unterschiedliche Rechte, sie können schreiben/lesen oder nur lesen.

Ist es sinnvoller, sicherer und auch professioneller für jeden (menschlichen) Benutzer das entsprechende Pendant unter PostgreSQL anzulegen, mit dem dann die Verbindung aufgebaut wird?
Besteht dann irgendwie die Möglichkeit, dem jeweiligen User Rechte wie Datensätze lesen/schreiben, Tabellen anlegen/löschen ODER NUR Datensätze lesen zu vergeben??

Hm…sowas gehört wohl eher zu den Grundlagen, aber wir sind ehemals in unserer Schule direkt von den Datenbank-Grundlagen zu praktischen Postgres-Abfragen gegangen :astonished: /

Ja.

Besteht dann irgendwie die Möglichkeit, dem jeweiligen User Rechte wie Datensätze lesen/schreiben, Tabellen anlegen/löschen ODER NUR Datensätze lesen zu vergeben??

Ja, du kannst User und auch Usergruppen anlegen und denen jeweils spezifische Rechte geben. Du kannst auch z.B. in den Tabellen eine extra Spalte für Username führen und einen VIEW basieren auf current_user darauf machen, so daß je nach angemeldeten User man untersch. Zeilen der Tabelle sieht. (select … from … where <col_mit_usernamen> = current_user).

Hm…sowas gehört wohl eher zu den Grundlagen, aber wir sind ehemals in unserer Schule direkt von den Datenbank-Grundlagen zu praktischen Postgres-Abfragen gegangen > :astonished: > /

Ja :wink:

Andreas

Naja, bis dato hatte ich eine EXTRA Tabelle angelegt, wo Benutzernamen, Passwort und Rechte hinterlegt sind.
Diese prüfe ich bei der Benutzerauthentifizierung per PHP, merke mir die entsprechenden Rechte und gebe dann Ausgabe und bei Bedarf Formular aus.

Hm…also dann müßte ich pro Tabelle zwei Spalten (eine für Lese-Recht und eine für Schreib-Recht) hinzufügen, wo dann die Usernamen auftauchen und dann dementsprechend einen “Filter” in der Abfrage integrieren…

Hm…wohl ein bischen “aufwändiger” das umzustrukturieren…aber ich werds dann mal für ein “Redesig” vorsehen :astonished: )
Danke schonmal für die Hilfe :slight_smile:

Naja, das war ein Beispiel, daß man z.B. current_user in der DB verwenden kann. Du hast weit mehr Möglichkeiten mit GRANT und REVOKE, schau Dir einfach mal die Doku dazu an.

Andreas

Hm, also wenn ich jetzt für jeden Anwender, der über das Webinterface auf die DB zugreift einen eigenen DB-Benutzer anlege, über den dann die Verbindung aufgebaut wird…
Bei meinem jetzigen System, wo die Verbindung über ein und denselben PostgreSQL-Useraccount aufgebaut wurde, habe ich bei erfolgter erfolgreicher Anmeldung ein Cookie abgelegt, damit beim nächsten Mal nicht wieder die Anmeldung erfolgt.
Das wollte ich eigentlich ganz gerne beibehalten, ABER…in dem Cookie müßten dann ja Name und Passwort für den erneuten Verbindungsaufbau abgelegt worden sein.
Ein bischen unsicher oder?
Kann man das vielleicht anderes realisieren, sodaß der Anwender sich nicht bei jedem Betreten neu anmelden muss??