Unter PostgreSQL können mehrere Verfahren zur Authentifizierung eines Users zum Einsatz kommen. Üblicherweise werden interne Datenbank-User zur Authentifizierung am Datenbankcluster verwendet, die über eigene Passwörter verfügen.
Eine etwas andere Variante ist die Ident Authentication. Hierbei wird der Name eines Client-Betriebssystembenutzers über einen Ident-Server ermittelt, und, sofern berechtigt, für den Zugriff zur Datenbank verwendet. Mit dem Ident-Protokoll kann ein Server feststellen, welcher User eine bestimmte TCP-Verbindung geöffnet hat. Die Datenbank vertraut in diesem Fall dem Client-Betriebssystem bzw. verlagert die Authentifizierung auf dieses. In diesem Artikel wird die Einrichtung einer solchen Verbindung beschrieben.
Um im Anschluss zu verdeutlichen, dass es sich bei den benutzten Namen zwischen Betriebssystem und Datenbank um unterschiedliche User handelt, wird außerdem noch ein User-Mapping verwendet, einem optionalen Zusatz des Ident-Verfahrens.
Der User wird dazu zunächst im Client-Betriebssystem als root angelegt:
Ein Blick in die Server-Logdatei zeigt uns auch, warum:
Der erwähnte Port 113 ist der Standardport des Ident-Servers, welcher auf dem Client allerdings noch nicht läuft und daher gestartet werden muss. In unserem konkreten Fall ist er tatsächlich noch gar nicht installiert.
Da wir im Beispiel unter SUSE Linux arbeiten, installieren wir zunächst das zugehörige Paket mit zypper in einer root-Session, wieder auf dem Client:
Im Anschluss muss der Dienst gestartet und für den Neustart aktiviert werden: Jetzt läuft der Ident-Server:
Nun melden wir uns als User ordix am System an und versuchen erneut, uns zu verbinden
Man beachte allerdings bei dieser ganzen Geschichte folgendes: Es wird in der Dokumentation explizit darauf hingewiesen, dass sich diese Methode nur für geschlossene Netzwerke eignet, in denen dem Client-Rechner, auf dem der Ident-Server ausgeführt wird, vertraut wird. Anderenfalls kann ein Angreifer dies nämlich nutzen, um dem Datenbank-Server eine falsche Identität vorzutäuschen.
Fazit
Die Authentifizierung mittels eines User-Mappings funktioniert tadellos, sollte aber nur in gut gesicherten und überwachten Umgebungen verwendet werden.Seminarempfehlung
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema PostgreSQL? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zu unseren PostgreSQL Seminaren