FreeIPA, pgbouncer und Postgres
Posted on Di 24 November 2020 in Blog
Für die Authentifizierung unserer Linuxserver verwenden wir FreeIPA. Jetzt war die Idee für den neuen, zentralen Postgres-Server auch die Authentifizierung von FreeIPA zu verwenden. Zusätzlich sollte vor dem Postgres-Server noch ein pgbouncer seinen Dienst versehen.
Nach einigem hin und her, habe ich mich dann für eine Authentifizierung per PAM-Modul und dem System Security Services Daemon entschieden. Postgres hinterlegt bei der Installation eine Konfigurationsdatei im pam.d-Ordner. Ich hab die Definition dieser Datei auch für pgbouncer herangezogen, indem ich die Datei kopiert (verlinken wäre natürlich auch möglich gewesen) und "pgbouncer" genannt habe. pgbouncer zieht standardmäßig die Konfiguration für die PAM-Authentifizierung aus der Datei "pgbouncer" heran.
Laut Recherche im Internet sollen, zumindest bei LDAP, die Definitionen von Postgres und pgbouncer komplett gleich sein, daher, daher hat es sich angeboten die Definitionen der Dateien komplett gleich zu lassen.
Damit aber die Authentifizierung über FreeIPA funktioniert, muss man nun noch zwei neue HBAC-Services hinzufügen:
- postgresql
- pgbouncer
Diese zwei neuen Services können dann gleich konfiguriert werden, wie beispielsweise SSH oder Sudo-Service.
Wichtig ist auch noch, damit die Authentifizierung auch wirklich funktioniert, muss auch in Postgres der entsprechende Benutzer existieren. Ich hab dafür einerseits einen speziellen LDAP-Benutzer hinzugefügt und danach die einzelnen Benutzer, die via FreeIPA die Erlaubnis haben sich zur Datenbank zu verbinden, dieser Rolle zugeordnet.
CREATE ROLE ldap_user NOLOGIN;
CREATE ROLE my-ipa-user IN ROLE ldap_user;
Was mit der derzeitigen Lösung natürlich nicht der Fall ist, dass die FreeIPA-Benutzer automatisch bestimmten Gruppen in der Datenbank hinzugefügt werden. Dies ist im ersten Schritt auch noch nicht nötig gewesen. Sollte es noch notwendig werden, so schaut die Erweiterung ldap2pg von Dalibo ganz interessant aus. Es müsste eigentlich funktionieren, da ja FreeIPA auch einen LDAP-Server umfasst.
Sollten die Rechte in einem Projekt komplexer werden, dann könnte pg_permission von Cybertec eine Lösung sein. Allerdings habe ich die Erweiterung noch nicht ausgetestet,kann mich nur an einen Vortrag bei einer pgconf.eu erinnern.