30 Januar 2026

Wie sichert man PostgreSQL Datenbanken richtig?

PostgreSQL-Datenbanken richtig zu sichern, erfordert einen mehrschichtigen Ansatz mit robusten Authentifizierungsverfahren, regelmäßigen Backups und kontinuierlicher Überwachung. Effektive Sicherheit kombiniert Verschlüsselung auf Transport- und Speicherebene mit strengen Zugriffskontrollen und proaktivem Monitoring. Diese umfassende Anleitung beantwortet die wichtigsten Fragen zur PostgreSQL-Sicherheit für Unternehmen.

Was sind die größten Sicherheitsrisiken für PostgreSQL-Datenbanken?

Die größten Sicherheitsrisiken für PostgreSQL-Datenbanken umfassen schwache Authentifizierung, unverschlüsselte Datenübertragung, mangelhaft konfigurierte Zugriffsrechte und fehlende Sicherheitsupdates. Zusätzlich stellen SQL-Injection-Angriffe, ungesicherte Netzwerkverbindungen und unzureichende Überwachung ernsthafte Bedrohungen dar.

Unzureichende Authentifizierung entsteht häufig durch schwache Passwort-Richtlinien oder die Verwendung von Standard-Anmeldedaten. Viele Installationen verwenden noch immer einfache Passwörter oder lassen Benutzerkonten ohne angemessene Berechtigung zu. Dies öffnet Angreifern direkten Zugang zu sensiblen Unternehmensdaten. PostgreSQL 18 bietet heute schon moderne und sichere Möglichkeiten zur Benutzerauthentifizierung mit OAuth2.

Fehlende Verschlüsselung bei der Datenübertragung ermöglicht es Angreifern, die Kommunikation zwischen Anwendungen und der Datenbank abzufangen, denn ohne SSL/TLS-Verschlüsselung werden Anmeldedaten und Geschäftsdaten im Klartext übertragen. Unverschlüsselte Datenübertragung ist heute auch in-house in den allermeisten Szenarien ein klares No-Go. Wenn man in einer Cloud-Umgebung im weitesten Sinne arbeitet, also auch bei Nutzung von Hosting- oder Service-Providern, ist eine starke Verschlüsselung der Transportschicht ein absolutes Must-Have. Gleichzeitig gefährden unverschlüsselte Datenspeicher die Sicherheit bei physischem Zugriff auf Server.

Fehlende oder falsche Anpassungen der pg_hba.conf-Datei führen zu ungewollten oder weitreichenderen Zugriffen als vorgesehen. Hierbei geht es weniger um die Berechtigungen auf die Daten innerhalb der Datenbank, sondern um die Möglichkeit sich überhaupt mit der Datenbank verbinden zu können. Zusätzlich sind oft auch die Berechtigungen auf die eigentlichen Daten innerhalb der Datenbank, teils aus Bequemlichkeit oder Historie, breiter Konfiguriert als es nötig wäre. Diese potentiellen Probleme verstärken sich zusätzlich durch veraltete PostgreSQL-Versionen ohne aktuelle Sicherheitspatches.

Wie richtet man sichere Authentifizierung und Zugriffskontrolle ein?

Ein oft anzutreffendes Pattern in Anwendungen ist auch heute immer noch leider der Fakt, dass die Software nur einen generischen Datenbank-User nutzt, der oft mehr Rechte in der Datenbank bekommt als er eigentlich benötigt. Gerade bei vorinstallierten Systemen wird dieser mit öffentlich bekannten Standard-Passwörtern konfiguriert. Das hat mit Sicherheit leider nichts zu tun.
Anmerkung: In der Praxis wird der Datenbankuser gerne so universell eingerichtet, um nicht in Limitierungen von Verbindungen zu laufen und/oder von Connection-Pooling und ähnlichen Techniken zu profitieren.

Grundsätzlich sollten die Berechtigungen (Autorisierung) so wenig wie möglich in der Anwendung abgehandelt werden, sondern durch die Datenbank. Die Applikation kann sich damit viel Code ersparen und nur auf einen verweigerten Zugriff reagieren. Das Gegenteil ist heute "üblich", was effektiven Schutz der Daten aushebelt

Sichere PostgreSQL-Authentifizierung basiert auf starken Passwort-Richtlinien, rollenbasierten Zugriffskontrollen und dem Prinzip der minimalen Berechtigung. Konfigurieren Sie die pg_hba.conf-Datei restriktiv und implementieren Sie mehrstufige Authentifizierung für administrative Zugriffe. Jeder Benutzer sollte nur die minimal notwendigen Rechte erhalten.

Beginnen Sie mit der Erstellung spezifischer Datenbankrollen für verschiedene Anwendungsbereiche. Verwenden Sie CREATE ROLE-Befehle, um funktionsspezifische Rollen zu definieren. Beispielsweise benötigen Reporting-Anwendungen nur Lesezugriff, während Backup-Prozesse spezielle Systemrechte erfordern. Vermeiden Sie die Verwendung des Superuser-Kontos für Routineoperationen.

Die pg_hba.conf-Datei steuert Client-Authentifizierung und Verbindungsmethoden. Konfigurieren Sie diese Datei so, dass sie nur spezifische IP-Adressen und Subnetze zulässt. Verwenden Sie scram-sha-256 anstelle von md5 und verbieten Sie trust für Produktionsumgebungen. Beschränken Sie lokale Verbindungen auf notwendige Systembenutzer.

Implementieren Sie starke Passwort-Richtlinien mit Extensions wie passwordcheck zur Durchsetzung komplexer Passwörter. Regelmäßige Prüfung und die Deaktivierung ungenutzter Rollen erhöhen die Sicherheit zusätzlich.

Passwort-Rotationen dagegen helfen bei Passwörtern, die ein Mensch eingeben muss, erwiesenermaßen nicht. Hier hat sich das BSI und auch das NIST in den aktuellen Richtlinien gegen eine regelmäßige Rotation ausgesprochen. Hier wird klar empfohlen, auf andere Systeme wie Passkeys über OAuth2, Zwei-Faktor-Authentifizierung oder kryptographisch sichere Passwörter und Passphrases zu setzen.

Für automatisch generierte, kurzlebige Zugänge um zum Beispiel Automatisierungen anzubinden besteht auch die Möglichkeit temporäre Nutzer mit dazugehörigen Passwörtern via Hashicorp Vault und der "PostgreSQL database secrets engine" anzulegen. Hierbei sind die Berechtigungen und die Verfügbarkeit der Accounts im Vault definiert und werden nur bei Bedarf angelegt sowie automatisch auch wieder entfernt. Diese Technik ist besonders im Umfeld von Kubernetes oft zu sehen. Hierzu berät Sie unser Cloud-Infra-Team gerne.

Welche Backup-Strategien garantieren vollständige Datenwiederherstellung?

Vollständige PostgreSQL-Datenwiederherstellung erfordert mindestens logische, im Optimalfall jedoch physische Backups mit kontinuierlicher Archivierung der Write-Ahead-Logs (WAL). Implementieren Sie automatisierte tägliche Vollsicherungen, ergänzt durch kontinuierliche WAL-Archivierung für Point-in-Time-Recovery. Testen Sie Wiederherstellungsverfahren regelmäßig in isolierten Umgebungen.

Grundsätzlich gilt bei der Backup von PostgreSQL Datenbanken wie immer die 3-2-1-Regel. Das bedeutet, dass Sie 3 Kopien auf 2 unterschiedlichen Medien und davon 1 Offsite-Sicherung erzeugen. Dabei ist es ein fataler Fehler, wenn Backup und Datenbank auf dem selben Medium liegen. So etwas wäre ein Fest für einen Angriff mit Ransomware. Grundsätzlich sollten Backup-Medien entweder nicht dauerhaft im Netz verfügbar sein oder es sollten sog. "immutable" Backupmedien eingesetzt werden, also Speichermedien, die nur einmal beschreibbar sind. Dabei muss man nicht zwangsläufig an optische Speicher denken, auch organisatorische Locks wie ein S3 Object Lock ist durchaus eine Lösung. Hier gibt es gute Ansätze zur Lösung durch Open-Source-Software, aber auch Hersteller hochwertiger Storage-Lösungen wie NetApp haben entsprechende Angebote.

Auch sollten Backups nicht ohne Einbindung in das Monitoring erfolgen. Es sollte mindestens überwacht werden dass die Backups wie konfiguriert durchgeführt werden können. Aber auch ein Backup, das "erfolgreich" durchläuft, aber hinterher nur 0 - weniger 100 Bytes beinhaltet, ist wertlos. Regelmäßige Restore-Tests bestätigen diesen Zustand dann in Stichproben.

Backup-Methoden

Logische Backups mit pg_dump eignen sich hervorragend für einfache Datensicherung und -wiederherstellung sowie plattformübergreifende Kompatibilität. Diese Methode erstellt SQL-Befehle zur Rekonstruktion von Datenbankstrukturen und -inhalten. Für große Datenbanken bietet pg_dump parallele Verarbeitung durch den Parameter --jobs, wodurch sich Backup-Zeiten, abhängig von der Struktur der Datenbank, erheblich reduzieren können. Auch ist es damit einfach möglich eine komplette Instanz, einzelne Datenbanken, nur Schemadaten oder nur Inhalte zu sichern. Allerdings gilt auch: Der Restore erfolgt über das Ausführen der einzelnen SQL-Kommandos. Was, wieder je nach Aufbau und Größe der Datenbank, sehr viel Zeit in Anspruch nehmen kann.

Physische Backups durch pg_basebackup kopieren die gesamte Datenbank-Clusterstruktur auf Dateisystemebene. Diese Methode ermöglicht schnellere Wiederherstellung großer Datenbanken und unterstützt kontinuierliche Archivierung. Allerdings gibt es hier keine Möglichkeit zur Selektierung welche Daten gesichert werden sollen. Es ist immer die gesamte Instanz inkl. auch Indexdaten und anderen Binärdaten im Datenverzeichnis enthalten.
Kombinieren Sie Base-Backups mit WAL-Archivierung für die Option von Point-in-Time-Recovery welches sekundengenaue Restores ermöglicht. Die Base-Backups können auch mit Checksummen die Integrität der gesicherten Daten prüfen. Dies funktioniert jedoch nur, wenn auch die jeweilige Instanz entsprechend initialisiert wurde.

Kontinuierliche Archivierung der WAL-Dateien gewährleistet minimalen Datenverlust bei Systemausfällen. Konfigurieren Sie archive_mode und archive_command in der postgresql.conf für automatische WAL-Übertragung an sichere Speicherorte. Überwachen Sie Archivierungsprozesse kontinuierlich und implementieren Sie Alarme bei Fehlern oder Verzögerungen. Sollten Sie in der Dokumentation Ihrer Umgebung noch eine recovery.conf Datei beschrieben haben, lohnt es sich ggf. die Installation und Dokumentation von Experten prüfen zu lassen. Diese Datei war bis einschließlich PostgreSQL 11 Teil von PostgreSQL und wurde mit PostgreSQL 12 in die postgresql.conf verschmolzen.

Eine weitere Methode wäre der Einsatz von pgBackRest. Hierbei handelt es sich um ein ausgereiftes Backup- und Restore-Framework für PostgreSQL, das gegenüber Bordmitteln vor allem auch bei großen Clustern punktet. Dieses System kann auch die Einhaltung von RPO/RTO-Vorgaben umsetzen. Es unterstützt vollständige, differentielle und inkrementelle Backups, Parallelisierung, Block‑Delta, WAL-Archivierung, Verschlüsselung, Kompression (zstd/lz4), Integritätsprüfungen und Remote/Cloud-Repositories (z. B. S3, Azure Blob, GCS).

In Kubernetes-Umgebungen setzt man heute oft auf Operatoren wie CloudNativePG oder den Zalando Postgres Operator. Diese nutzen ebenfalls Tools wie Wal-E oder Barman Cloud für Backup und Recovery und bringen bereits hohe Integration als auch Monitoring mit.

Wie verschlüsselt man PostgreSQL-Daten richtig?

PostgreSQL-Datenverschlüsselung erfolgt auf drei Ebenen: Transportverschlüsselung mit SSL/TLS für Netzwerkverbindungen, Verschlüsselung ruhender Daten auf Speicherebene und feldbasierte Verschlüsselung für besonders sensitive Informationen. Konfigurieren Sie SSL-Zertifikate für sichere Client-Server-Kommunikation und nutzen Sie Dateisystem- bzw. Partitionsverschlüsselung, etwa LUKS, für Datenbankdateien.

SSL/TLS-Transportverschlüsselung schützt Daten während der Übertragung zwischen Clients und Server. Aktivieren Sie SSL durch Setzen von ssl = on in der postgresql.conf und konfigurieren Sie entsprechende Zertifikatsdateien. Verwenden Sie selbstsignierte Zertifikate für Entwicklungsumgebungen und CA-signierte Zertifikate für Produktionssysteme. Die pg_hba.conf sollte hostssl-Verbindungen für kritische Anwendungen vorschreiben.

Verschlüsselung ruhender Daten erfolgt typischerweise auf Dateisystem- oder Speicherebene durch Tools wie LUKS unter Linux, BitLocker unter Windows oder Cloud-Provider-Verschlüsselung. PostgreSQL selbst ohne Zusätze bietet keine integrierte Verschlüsselung für Datenbankdateien, daher implementieren Sie Verschlüsselung unterhalb der Datenbankschicht. Dies schützt vor physischem Zugriff auf Speichermedien und Datendiebstahl bei Serverkompromittierung.

Feldbasierte Verschlüsselung für hochsensible Daten bietet z.B. die PostgreSQL-Erweiterungen pgcrypto. Diese Extension bietet Funktionen für symmetrische und asymmetrische Verschlüsselung einzelner Datenbankfelder. Nutzen Sie diese für Zahlungsdaten, persönliche Identifikatoren oder Geschäftsgeheimnisse, wobei Sie Leistungsauswirkungen bei Such- und Sortieroperationen berücksichtigen müssen. pgcrypto bietet aber auch Unterstützung für allerlei andere kryptographische Operationen wie z.B. Hashing oder Salting.

Welche Monitoring-Tools erkennen Sicherheitsvorfälle frühzeitig?

Effektive PostgreSQL-Sicherheitsüberwachung kombiniert integrierte Logging-Funktionen mit spezialisierten Monitoring-Tools für Anomalieerkennung. Aktivieren Sie detaillierte Protokollierung in der postgresql.conf und nutzen Sie Tools wie pgAudit für umfassendes Audit-Logging. Implementieren Sie automatisierte Alerting-Systeme für verdächtige Aktivitäten und Performance-Anomalien.

Die integrierten Logging-Funktionen von PostgreSQL bieten umfassende Überwachungsmöglichkeiten durch Konfiguration der log_*-Parameter. Aktivieren Sie log_connections, log_disconnections und log_statement für detaillierte Verbindungs- und Abfrageprotokollierung. Die Konfiguration von log_line_prefix sollte Zeitstempel, Benutzer, Datenbank und Prozess-IDs enthalten, um effektive Forensik-Analysen zu ermöglichen.

Spezialisierte Tools wie pgAudit erweitern die Standard-Logging-Funktionen um granulare Audit-Trails für Compliance-Anforderungen. Diese Extension protokolliert Datenbankzugriffe auf Objekt- und Rollenebene und ermöglicht die Verfolgung von Datenmodifikationen. Kombinieren Sie pgAudit mit log_statement_stats für Performance-Monitoring und die Erkennung ressourcenintensiver Angriffe.

Automatisierte Monitoring-Systeme wie Prometheus mit PostgreSQL-Exporter oder spezialisierte Datenbank-Monitoring-Tools erkennen Anomalien in Echtzeit. Überwachen Sie Metriken wie Verbindungsanzahl, Abfrageperformance, Speicherverbrauch und ungewöhnliche Zugriffsmuster. Implementieren Sie schwellenwertbasierte Alarme für kritische Ereignisse wie fehlgeschlagene Authentifizierungsversuche oder unerwartete Datenbankzugriffe außerhalb der Geschäftszeiten.

Bitte beachten Sie aber auch, das mit jeder Erweiterung des Loggings auch die Anforderungen an den Storage in Bezug auf Performance und besonder Platzbedarf steigen. Prüfen Sie daher sehr genau welche Konfiguration in der Produktion für Sie essentiell sind und welche nur z.B. in der Entwicklungsumgebung einen Mehrwert bieten. Hier unterstützen und beraten wir Sie gerne.

Wie führt man regelmäßige Sicherheitsupdates und Wartung durch?

Regelmäßige PostgreSQL-Sicherheitswartung umfasst systematische Update-Zyklen, kontinuierliche Vulnerability-Assessments und proaktive Konfigurationsüberprüfungen. Etablieren Sie monatliche Minor-Updates für Patches und planen Sie Major-Updates jährlich nach gründlichen Tests. Auch hat PostgreSQL einen vergleichsweise stabilen und gut dokumentierten Release-Zyklus welche die Arbeiten auch über Monate im Voraus gut planbar machen.

Sicherheitspatches für PostgreSQL erscheinen regelmäßig und adressieren kritische Schwachstellen. Abonnieren Sie die PostgreSQL-Accounce-Mailingliste für zeitnahe Benachrichtigungen über verfügbare Minor-Updates und prüfen Sie die Updates der von Ihnen verwendeten Repositories für die dazu passenden Pakete. Testen Sie Patches zunächst in Entwicklungs- und Staging-Umgebungen, bevor Sie diese in Produktionssystemen implementieren. Nutzen Sie Wartungsfenster für planbare Updates und halten Sie Rollback-Strategien bereit.

Kontinuierliche Konfigurationsüberprüfungen identifizieren Sicherheitslücken durch veränderte Anforderungen oder Konfigurationsdrift. Verwenden Sie wenn möglich Automatisierungen wie z.B. Ansible oder ähnliche Systeme zur Sicherstellung des gewünschten Status und zur Erkennung von lokalen Abweichungen. Alternativ sollten mindestens die Konfigurationsdateien versioniert gepflegt und überwacht werden. Tools zur Optimierung der Konfiguration in Bezug auf Performance und Sicherheit sind verfügbar, sollten aber mit entsprechender Vorsicht eingesetzt werden, da die meisten Systeme individuelle Anforderungen haben.

Umfassende Sicherheitsaudits sollten quartalsweise externe Penetrationstests, Vulnerability-Scans und Compliance-Überprüfungen umfassen. Professioneller PostgreSQL-Support kann dabei helfen, komplexe Sicherheitsanforderungen zu erfüllen und kritische Systeme optimal zu schützen. Führen Sie regelmäßige Disaster-Recovery-Tests durch und aktualisieren Sie Incident-Response-Pläne basierend auf neuen Bedrohungslagen und Geschäftsanforderungen.

Wie credativ bei der PostgreSQL-Sicherheit hilft

credativ bietet umfassende PostgreSQL-Sicherheitslösungen, die alle kritischen Aspekte der Datenbankabsicherung abdecken. Unsere Experten unterstützen Sie bei der Implementierung robuster Sicherheitsstrategien und gewährleisten den optimalen Schutz Ihrer Unternehmensdaten:

Sicherheitsaudits und Penetrationstests: Umfassende Analyse Ihrer PostgreSQL-Infrastruktur zur Identifikation von Schwachstellen und Compliance-Lücken
Backup- und Recovery-Strategien: Entwicklung und Implementierung maßgeschneiderter Backup-Konzepte mit automatisierter Überwachung und regelmäßigen Recovery-Tests
Verschlüsselungsimplementierung: Konfiguration von SSL/TLS, Dateisystemverschlüsselung und spaltenbasierter Verschlüsselung nach Industriestandards
Monitoring und Alerting: Einrichtung professioneller Überwachungssysteme mit 24/7-Support für kritische Sicherheitsvorfälle
Compliance-Unterstützung: Beratung bei der Erfüllung von DSGVO, ISO 27001 und branchenspezifischen Sicherheitsanforderungen

Sichern Sie Ihre PostgreSQL-Datenbanken mit professioneller Expertise ab. Kontaktieren Sie uns für eine kostenlose Erstberatung und erfahren Sie, wie wir Ihre Datenbankinfrastruktur optimal schützen können.

Die Sicherung von PostgreSQL-Datenbanken erfordert einen systematischen Ansatz mit mehreren Schutzebenen. Durch die Implementierung robuster Authentifizierung, umfassender Backup-Strategien und kontinuierlicher Überwachung schaffen Sie eine solide Grundlage für den Schutz Ihrer Unternehmensdaten. Regelmäßige Wartung und proaktive Sicherheitsmaßnahmen gewährleisten langfristig sichere und zuverlässige Datenbankoperationen.

PostgreSQL ist ein wichtiger Baustein zur digitalen Souveränität. Aber auch dieser Baustein erfordert ein wenig Mühe und Aufmerksamkeit, um ihn sinnvoll einzusetzen. Hier unterstützen wir Sie gerne bei der Umsetzung ebenso wie beim Training Ihres IT-Teams.

Gerne Beraten wir sie auch zu anderen Themen rund um Linux-Hardening, etwa mittels AppArmor.

Kategorien: PostgreSQL®
Tags: PostgreSQL® Sicherheit

über den Autor

Peter Dreuw

Head of Sales & Marketing

zur Person

Peter Dreuw arbeitet seit 2016 für die credativ GmbH und ist seit 2017 Teamleiter. Seit 2021 ist er Teil des Management-Teams als VP Services der Instaclustr. Mit der Übernahme durch die NetApp wurde seine neue Rolle "Senior Manager Open Source Professional Services". Im Rahmen der Ausgründung wurde er Mitglied der Geschäftsleitung als Prokurist. Sein Aufgabenfeld ist die Leitung des Vertriebs und des Marketings. Er ist Linux-Nutzer der ersten Stunden und betreibt Linux-Systeme seit Kernel 0.97. Trotz umfangreicher Erfahrung im operativen Bereich ist er leidenschaftlicher Softwareentwickler und kennt sich auch mit hardwarenahen Systemen gut aus.

Beiträge ansehen


Beitrag teilen: