ldap2pg ist ein Open-Source-Tool zur automatisierten Synchronisation von PostgreSQL-Rollen und Berechtigungen mit einem LDAP-Verzeichnis. Es ermöglicht eine zentrale, deklarative Verwaltung von Benutzern und Zugriffsrechten in PostgreSQL auf Basis bestehender LDAP-Strukturen. ldap2pg funktioniert mit gängigen LDAP-Systemen: Samba DC, OpenLDAP, FreeIPA, Oracle Internet Directory und Microsoft Active Directory.

────── ◼ Kernfunktionen ──────

Die Kernfunktionen von ldap2pg umfassen:

  • Erzeugung, Änderung und Löschung von PostgreSQL-Rollen basierend auf LDAP-Einträgen
  • Unterstützung von Benutzer- und Gruppenrollen (inkl. Mitgliedschaften)
  • Gewährung und Entziehung von SQL-Berechtigungen (GRANT/REVOKE) wie SELECT, USAGE, CONNECT, etc.
  • Erlaubt feingranulare Steuerung über YAML-Profile und Grant-Regeln
  • Unterstützung für dynamische Regeln mit LDAP-Attribut-Platzhaltern
  • Detailliertes Logging aller SQL- und LDAP-Aktivitäten
  • LDAP-Suchen werden als ldapsearch-Befehle protokolliert

Der Einsatz von ldap2pg ist besonders nützlich und sinnvoll in Umgebungen, in denen Benutzer- und Gruppeninformationen zentral in einem LDAP-Verzeichnis verwaltet werden und diese Informationen nahtlos in die PostgreSQL-Datenbank integriert werden sollen, um eine konsistente Benutzerverwaltung und Zugriffskontrolle zu gewährleisten.

────── ◼ Installation ──────

ldap2pg ist plattformunabhängig und lässt sich auf verschiedene Arten installieren, je nach Umgebung und bevorzugtem Vorgehen. Grundsätzlich wird das Tool als eigenständige, statisch gelinkte Binärdatei veröffentlicht, die ohne zusätzliche Abhängigkeiten lauffähig ist. Dadurch eignet sich ldap2pg besonders gut für einfache Integrationen in bestehende Systeme.

Für Linux-Systeme steht eine vorgefertigte Binary auf der GitHub-Seite des Projekts zur Verfügung, die manuell heruntergeladen und in das System integriert werden kann. Zusätzlich gibt es für gängige Distributionen wie Debian, Alpine und RHEL von ldap2pg installierbare Systempakete.

Alternativ kann ldap2pg auch containerisiert über ein offizielles Docker-Image genutzt werden. Diese Methode eignet sich besonders für isolierte Umgebungen oder wenn eine schnelle Test- oder Deploymentumgebung benötigt wird.

Insgesamt bietet ldap2pg damit eine flexible und leichtgewichtige Installation, die sowohl für produktive Server als auch für Automatisierungs-Workflows geeignet ist.

────── ◼ Konfiguration ──────

Die Konfiguration von ldap2pg erfolgt in erster Linie über eine YAML-Datei mit dem Namen ldap2pg.yml. Diese Datei definiert sämtliche Regeln zur Synchronisation zwischen LDAP-Verzeichnis und PostgreSQL-Instanz – von der LDAP-Suchabfrage über die Rollenzuordnung bis hin zur Berechtigungsvergabe.

ldap2pg verfolgt ein deklaratives Konfigurationsmodell: Statt imperative Befehle auszuführen, beschreibt man in der YAML-Datei den gewünschten Soll-Zustand. ldap2pg ermittelt daraufhin automatisch den Ist-Zustand im Cluster, vergleicht beide Zustände und erzeugt daraus die notwendigen SQL-Anweisungen (wie CREATE ROLE, GRANT, REVOKE usw.).

Neben der YAML-Datei unterstützt ldap2pg weitere Konfigurationsquellen. Einstellungen zur Verbindung mit PostgreSQL und LDAP können bequem über Umgebungsvariablen gesteuert werden. Diese lassen sich beispielsweise in einer .env-Datei bündeln, was insbesondere in Docker-Umgebungen oder bei automatisierter Ausführung hilfreich ist. Zusätzlich werden Standarddateien wie ldap.conf oder .ldaprc zur LDAP-Konfiguration unterstützt.

Die Konfigurationsdatei selbst ist modular aufgebaut: Sie besteht typischerweise aus Abschnitten für die PostgreSQL-Inspektion, LDAP-Suchdefinitionen, Berechtigungsprofilen und einer Liste von Synchronisierungsregeln. Dank der klaren Struktur und Unterstützung für Platzhalter (z.B. ) lässt sich die Konfiguration flexibel an unterschiedlichste LDAP-Strukturen und PostgreSQL-Topologien anpassen.

────── ◼ Betrieb ──────

Die Ausführung von ldap2pg erfolgt in der Regel als eigenständiger Kommandozeilenaufruf, bei dem die zuvor definierte Konfiguration verarbeitet wird. Dabei durchläuft ldap2pg einen mehrstufigen Prozess: Zunächst werden die Regeln aus der YAML-Datei ausgewertet und mit den Ergebnissen der LDAP-Abfragen kombiniert, um eine Zielstruktur von Rollen und Berechtigungen zu erzeugen. Anschließend wird der PostgreSQL-Cluster inspiziert, um den tatsächlichen Ist-Zustand zu erfassen. Auf Basis dieses Vergleichs plant ldap2pg die nötigen Änderungen.

Ein zentrales Merkmal ist der sogenannte Trockenlaufmodus (dry-run), der standardmäßig aktiviert ist. In diesem Modus zeigt ldap2pg alle geplanten Änderungen an, ohne sie tatsächlich auszuführen. So lassen sich Konfigurationsfehler frühzeitig erkennen und unbeabsichtigte Änderungen vermeiden. Erst mit expliziter Bestätigung wird der Real-Modus aktiviert, bei dem die berechneten SQL-Anweisungen tatsächlich auf dem PostgreSQL-Server angewendet werden.

Die Ausführung von ldap2pg kann sowohl manuell erfolgen – etwa im Rahmen von Administrationsaufgaben – als auch automatisiert, z.B. über Cronjobs, Systemd-Timer. Dank der Protokollierung sämtlicher LDAP-Suchen und SQL-Kommandos lässt sich jede Ausführung gut nachvollziehen und bei Bedarf debuggen.

Zusätzlich reagiert ldap2pg flexibel auf seine Umgebung: Je nachdem, ob es interaktiv mit einem Terminal verbunden ist oder automatisiert im Hintergrund läuft, passt es seine Ausgaben entsprechend an – entweder farbig und menschenlesbar oder maschinenfreundlich im Log-Format.

Insgesamt ist die Ausführung von ldap2pg darauf ausgelegt, zuverlässig, nachvollziehbar und kontrolliert zu erfolgen – ein wichtiger Aspekt für sicherheitskritische Infrastrukturen.

────── ◼ Fazit ──────

ldap2pg ist ein leistungsstarkes Werkzeug zur zentralisierten Verwaltung von Benutzer- und Berechtigungsstrukturen in PostgreSQL-Datenbanken. Durch die Integration mit einem bestehenden LDAP-Verzeichnis lassen sich Rollen und Zugriffsrechte automatisiert, konsistent und nachvollziehbar steuern – ein erheblicher Mehrwert in Umgebungen mit strengen Compliance- oder Sicherheitsanforderungen.

Besonders hervorzuheben ist der deklarative Ansatz: Statt manuelle SQL-Befehle zu schreiben, definiert man lediglich den gewünschten Zustand – ldap2pg kümmert sich um die Umsetzung. Eine ausführiche Dokumentation auf der Homepage des Projekts, die Unterstützung für Trockenläufe, umfangreiche Protokollierung und flexible Konfigurationsmöglichkeiten machen das Tool dabei nicht nur sicher, sondern auch robust für die Herausforderungen der Benutzerverwaltung in verteilten Systemlandschaften.

Blog Mykola Kumanikin

Mykola Kumanikin

Mykola Kumanikin arbeitet als Consultant für die Proventa AG. Sein Tätigkeitsumfeld umfasst Software-Testing, Ticketmanagement und Datenbankarchitekturen mit PostgreSQL. Seine fachlichen Erfahrungen sammelte er in den unterschiedlichsten Projekten in der Telekommunikationsbranche.