Tips zur Authentifizierung

From: Vortex <vortex25(at)gmx(dot)de>
To: pgsql-de <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Tips zur Authentifizierung
Date: 2005-04-14 09:43:10
Message-ID: 20050414114310.2bea25b7.vortex25@gmx.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein


Hallo!!

Hoffentlich erstmal mein letztes Problem, bevor ich mich
alleine etwas weiter vortaste, möchte ich noch ansprechen:

In dem Projekt sollen zahlreiche Benutzer, die in Gruppen
aufgeteilt sind, auf verschiedene Sichten der Daten zugreifen
und je nach Gruppeneigenschaften auch von diesen Sichten
nur einen Teil der Daten präsentiert bekommen und sie
verändern dürfen. Primär gibt es dafür
ein Webinterface. Die Benutzer sollen aber
auch direkt auf die Datenbank zugreifen können, um entweder
lokal auf ihrem Rechner laufende Administrationssoftware
zu benutzen, oder gar selbst Anwendungen zu entwickeln, die
mit den Daten arbeiten. Natürlich immer unter Berücksichtigung
ihrer Rechte.
Eine mir aus meinen mysql Zeiten bekannte und wohl übliche
Lösung, einfach Passwörter und Usernames in einer
"userdaten" Tabelle zu speichern und die Authentifizierung
komplett in php zu lösen, scheidet damit aus.
Die Authentifizierung muß von der Datenbank selbst
vorgenommen werden, damit müssen der Datenbank die
User aber auch bekannt sein.
Nun, Postgres kann von Haus aus Gruppen und User verwalten.
Dieses System habe ich mir vor einer Weile schon etwas
betrachtet und es hat zumindest auf den ersten Blick einige
Haken und Ösen. So werden z.B. erteilte Rechte beim Löschen
eines Users nicht zurückgenommen und automatisch einem
neuen User zugeteilt, der zufällig die gleiche BenutzerID
bekommt. Oder habe ich da was falsch in Erinnerung?
Bei Gruppenrechten scheint das anders zu sein. Wäre es
evtl. sinnvoll Rechte überhaupt nicht direkt einem User,
sondern immer über eine Gruppe zuzuweisen?
Vielleicht ist es aber auch gar nicht sinnvoll das
GRANT/REVOKE System zu verwenden, um quasi zur Laufzeit
Gruppen oder Usern Rechte zu erteilen und man sollte
das nur zu administrativen Zwecken verwenden?

Im moment schwebt mir folgende Mischlösung vor:
In einer "personen" Tabelle sind alle am System beteiligten
Personen erfasst. Über die Felder "systemuser" und "passwort"
(welches "write-only" ist) lässt sich ein korrespondierender
Postgres-Systemuser (per trigger) erzeugen (nicht alle
beteiligten Personen arbeiten auch mit der Datenbank).
Nun kann sich eine Person mittels der Postgres
Systemuserdaten bei der Datenbank authentifizieren
(per Webinterface, lokaler Applikation, psql oder wie auch immer).
Die Benutzer greifen nun über (per rules updatebare) Views
(auf die sie über eine PG-Systemusergruppe [z.B. "remoteuser"]
per GRANT generell Zugriff bekommen) auf die Daten zu.
Welche Daten sie dann aber tatsächlich sehen und modifizieren
dürfen, entscheiden die Views selbst durch Nachschlagen in
(applikations)Tabellen mit Gruppenzuordnungen und
Rechtezuteilungen.

Leider habe ich noch zu wenig erfahrung mit Postgres
(oder Datenbanken, die über mysql hinausgehen im allgemeinen)
um abschätzen zu können ob das ein beherrschbarer Weg
sein könnte. Gibt es Ideen und Meinungen dazu?

Im Moment beschäftige ich mich eigentlich mehr mit dem
konzeptionellen Modell der zu speichernden Daten. Aber vielleicht
wäre es trotzdem sinnvoll schon eine Ahnung zu haben wie man
später darauf zugreifen will? Eigentlich denke ich, es wäre
ideal diese beiden Aspekte isoliert zu betrachten, aber
hoffentlich lege ich mir jetzt keine Steine in den Weg?

btw: Mir wurde auch schon geraten die ganze Zugriffslogik
in einen eigenen Server zu packen und die Datenbank sozusagen
nur noch als Storage-Engine zu verwenden. Aber dann könnte
ich eigentlich auch gleich wieder mysql verwenden......
Gefällt mir nicht. Andererseits: Als wie sicher kann denn
der postgres TCP Dienst betrachtet werden? Mit einem
eigenen Server, hätte man noch eine zusätzliche
"Isolationsschicht". Aber die muß dann auch erstmal
sicherer sein, als Postgres selbst.....

Viele Grüße!
Klaus

--
======================================================
" WWW: http://db0fhn.efi.fh-nuernberg.de/~dg1nav?em
" LOCAL: klaus(at)castle(dot)kwsnet
" EMAIL: klauXweg(at)gmx(dot)de (remove "X"!)
" AX.25: dg1nav(at)db0fhn(dot)#bay(dot)deu(dot)eu

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Seltenreich 2005-04-15 07:08:55 Re: Netzwerkstrukturen im relationalen Modell
Previous Message Vortex 2005-04-14 08:59:06 Re: Constraints bei Dumpimport