PostgreSQL ist aufgrund seiner Robustheit, Flexibilität Modularität eine ideale Datenbank für eine Vielzahl von Anwendungsfällen. Der modulare Aufbau und die tiefe Integration in IT-Landschaften erhöhen allerdings auch die Komplexität. Das kann schnell zu Fehlkonfigurationen und schwerwiegenden Sicherheitslücken führen. Erst im März 2025 entdeckten die Sicherheitsforscher von Wiz ein neues Angriffsszenario. Mit unserer Checkliste und Beispiel-Konfiguration gelingt dir eine Basisabsicherung, die Angriffe wie den von Wiz gefundenen zu verhindern hilft – oder wenigstens maximal erschwert.

Bist du schon Premium-Member?
Checkliste
1. Sicherheit & Nutzerverwaltung
- Standard-Superuser-Passwort ändern
- Rollen und Nutzer gemäß Rollen- und Berechtigungskonzept anlegen
- Zugriff absichern
- SSL-Verschlüsselung aktivieren (wenn extern zugreifbar)
- Firewall-Regeln konfigurieren
2. Konfiguration
- Adresse festlegen
- Shared Buffer einrichten (i. d. R. 25–40 % des RAMs)
- Arbeitsspeicher je nach Workload definieren (je nach Anzahl paralleler Queries)
- Größe des Caches bestimmen (i. d. R. 50–75 % des RAMs)
- Anzahl der maximalen Verbindungen einstellen
- Logging aktivieren
3. Lokalisierung & Encoding
- Zeichencodierung
- Locale
- Zeitzone korrekt setzen
4. Datenbankstruktur & Schema
- Datenbank und Schema anlegen
- Erweiterungen installieren
- Indizes, Constraints und Foreign Keys prüfen
5. Backup & Wartung
- Backupstrategie definieren
- Autovacuum-Parameter überprüfen
- Replikation oder HA planen (optional)
Beispiel für Grundeinstellungen:
# postgresql.conf
listen_addresses = 'localhost' # oder spezifische IP
port = 5432
max_connections = 100
# Memory & Performance
shared_buffers = 2GB
work_mem = 16MB
maintenance_work_mem = 256MB
effective_cache_size = 6GB
# Logging
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 500 # nur langsame Queries loggen (in ms)
log_connections = on
log_disconnections = on
# Locale & Encoding
lc_messages = 'en_US.UTF-8'
lc_monetary = 'de_DE.UTF-8'
lc_numeric = 'de_DE.UTF-8'
lc_time = 'de_DE.UTF-8'
default_text_search_config = 'pg_catalog.german'
timezone = 'Europe/Berlin'
# Security
ssl = on
password_encryption = scram-sha-256
Beispiel für die pg_hba.conf
:
# pg_hba.conf – sichere Authentifizierung
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256