Vorbereitung von Datenquellen: PostgreSQL

Übersicht

Im Folgenden findest du eine umfassende Checkliste für PostgreSQL-Administratoren zur Vorbereitung eines Servers auf die Verbindung mit Noreja. Sie deckt die Konfiguration auf Serverseite, Authentifizierung, Netzwerk- und Firewall-Regeln, Rolleneinrichtung, SSL und Tests ab. Die Hinweise beziehen sich auf die offizielle PostgreSQL-Dokumentation und andere vertrauenswürdige Quellen. Um externen Tools den Zugriff zu ermöglichen, musst du TCP/IP-Verbindungen aktivieren, Client-Authentifizierungsregeln konfigurieren, Firewall-Ports öffnen, dedizierte Rollen/Benutzer mit minimalen Rechten erstellen, optional SSL-Verschlüsselung erzwingen und das Setup testen. Jeder dieser Schritte trägt zu einer sicheren und zuverlässigen Konnektivität bei.

Remote-TCP/IP-Verbindungen aktivieren

Standardmäßig lauscht PostgreSQL nur auf dem lokalen Loopback. Um externe Verbindungen zuzulassen:

postgresql.conf bearbeiten

Den Eintrag listen_addresses suchen (Standard: localhost) und so anpassen, dass die gewünschten Schnittstellen abgedeckt sind:

listen_addresses = '*'      # Lauscht auf allen IPv4-Schnittstellen
# oder
listen_addresses = '0.0.0.0' # Entspricht ebenfalls allen IPv4-Adressen

Den TCP-Port überprüfen oder setzen (Standard ist 5432). postgresql.org

Server neu starten oder Konfiguration neu laden

pg_ctl restart
# oder
systemctl restart postgresql

Ein Neustart ist erforderlich, damit Änderungen an listen_addresses wirksam werden. netiq.com.


Client-Authentifizierung konfigurieren (pg_hba.conf)

Die Regeln für die Client-Authentifizierung befinden sich in der Datei pg_hba.conf. Jede Zeile legt fest, wer sich verbinden darf, von wo und wie.

Öffne die Datei pg_hba.conf (normalerweise unter /etc/postgresql/<version>/main/ oder im Datenverzeichnis zu finden).

Füge dort host Einträge für deine Clients hinzu, zum Beispiel:

# Erlaubt jedem Benutzer aus 192.168.1.0/24 die Verbindung mit Passwort (md5)
host    all     all     192.168.1.0/24    md5

Verwende hostssl, um SSL-verschlüsselte Verbindungen zu erzwingen.
Begrenze CIDR-Ranges auf die tatsächlich benötigten Subnetze.

Konfiguration neu laden. So vermeidest du einen vollständigen Neustart und wendest Änderungen an der pg_hba.conf sofort an (netiq.com.):

pg_ctl reload
# oder innerhalb von SQL
SELECT pg_reload_conf();

Firewall / Netzwerk-ACLs öffnen

Stelle sicher, dass dein Netzwerk den Datenverkehr auf dem PostgreSQL-Port zulässt:

TCP-Port 5432 freigeben

Unter Linux (mit firewalld):

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload

Unter Windows-Firewall: Eingehende Regel für TCP 5432 hinzufügen. bigbinary.com

Port-Erreichbarkeit testen

telnet <server_ip> 5432

Oder in PowerShell:
powershell
Test-NetConnection -ComputerName <server_ip> -Port 5432

Eine erfolgreiche Verbindung bestätigt, dass der Port offen und PostgreSQL erreichbar ist. bigbinary.com.

Authentifizierungsmethode auswählen

PostgreSQL unterstützt mehrere Authentifizierungsarten:

  • Passwort-basiert (md5, scram-sha-256) – gebräuchlich für Drittanbieter-Tools
  • Peer – Lokale Unix-Nutzer müssen DB-Rolle entsprechen
  • GSSAPI/SSPI – Kerberos / Active Directory
  • Cert – Client-Zertifikat über SSL

Konfiguriere die Authentifizierungsmethoden pro Host in der Datei pg_hba.conf. Um für alle externen Hosts die Authentifizierung per SCRAM-SHA-256 zu erzwingen, füge folgenden Eintrag hinzu:

host    all     all     0.0.0.0/0    scram-sha-256

Rollen erstellen und Berechtigungen vergeben

Befolge das Prinzip der minimalen Rechtevergabe, wenn du ein Konto für ein externes Tool einrichtest:

Login-Rolle erstellen

CREATE ROLE tool_user
  WITH LOGIN
  PASSWORD 'StrongP@ssw0rd'
  NOSUPERUSER
  NOCREATEDB
  NOCREATEROLE
  NOINHERIT
  CONNECTION LIMIT 10;

Zugriff auf Datenbank gewähren:

GRANT CONNECT ON DATABASE your_db TO tool_user;

Schema- und Tabellenberechtigungen:

GRANT USAGE ON SCHEMA public TO tool_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO tool_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO tool_user;

Anpassen, falls INSERT/UPDATE/EXECUTE benötigt wird.

(Optional) Rollenmitgliedschaft:

CREATE ROLE reporting_grp;
GRANT reporting_grp TO tool_user;

Weitere Tools/Benutzer können später der Gruppe reporting_grp hinzugefügt werden. postgresql.org.

(Optional) SSL-Verschlüsselung erzwingen

Um Daten während der Übertragung zu sichern:

Serverzertifikat installieren:

Zertifikat (PEM-Format) und Schlüssel im Datenverzeichnis ablegen.

In postgresql.conf:

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file  = 'server.key'

Benötigt SSL in pg_hba.conf:

hostssl   all   all   0.0.0.0/0   md5

Nur hostssl-Zeilen greifen bei SSL-Verbindungen. postgresql.org.

Konfiguration neu laden und testen:

pg_ctl reload
psql "host=<server> sslmode=require dbname=your_db user=tool_user" 

Konnektivität überprüfen

Verbindung testen:

psql -h <server_ip> -U tool_user -d your_db -W

Beispielabfrage ausführen:

SELECT now(), count(*) FROM information_schema.tables;

Server-Logs prüfen:
Auf erfolgreiche Authentifizierungen in postgresql.log achten.

Durch das konsequente Durchlaufen dieser Schritte – Netzwerkfreigabe, sichere Authentifizierung, Firewall-Konfiguration, Rollenvergabe, optionale Verschlüsselung und abschließende Tests – stellst du sicher, dass externe Tools zuverlässig und sicher auf deine PostgreSQL-Instanz zugreifen können.

Was this article helpful?