Umstellung der Kennwort-Verschlüsselung in PostgreSQL

Geändert am Mi, 21 Jun, 2023 um 2:43 NACHMITTAGS

Ziel und Zusammenfassung:

Die Verschlüsselung der Passwörter für die beiden PostgreSQL Benutzer postgres (der PostgreSQL Datenbank-SuperUser) und CrosscapUser (der Benutzer, mit dem der CROSSCAP Enterprise Server im Regelbetrieb auf die Datenbank zugreift) soll von MD5 auf scram-sha-256 umgestellt werden. 


Nach einem erfolgreichen Datenbank-Restore aus dem Backup einer frühen PostgreSQL-Version liegen Kennwörter immer noch in der älteren Verschlüsselungsform vor (MD5). Um dies zu ändern muss zuerst die Verschlüsselung des Kennworts für den Datenbank-SuperUser händisch auf scram-sha-256 abgeändert werden. Sobald danach die globalen PostgreSQL Verschlüsselungs-Einstellungen umgestellt werden, kann die PGAdmin-Konsole verwendet werden, um die Verschlüsselung des CROSSCAP Benutzer-Kennworts (und die der Kennwörter weiterer Benutzer, falls vorhanden) ebenfalls zu aktualisieren.


Voraussetzungen:

Die pg_hba.conf ist aktuell/noch auf md5 eingestellt, z.B. so:

# IPv4 local connections:

host    all             all             127.0.0.1/32         md5

host    all             all             0.0.0.0/0               md5

# IPv6 local connections:

host    all             all             ::1/128                  md5

host    all             all             ::0/0                      md5

Die pg_hba.conf ist (in der 64 Bit Version) hier zu finden:  

C:\Program Files\PostgreSQL\<Version>\data


Schritt 1: 

Zuerst die Windows Eingabeaufforderung (cmd.exe) öffnen, dann darin die PostgreSQL-Konsole aufrufen:

C:\“Program Files“\PostgreSQL\<Version>\bin\psql.exe -h localhost -U postgres

Das Passwort des Benutzers postgres wird abgefragt, danach erscheint die SQL-Konsole:

psql (<Version>)

Geben Sie »help« für Hilfe ein.

postgres=#


Schritt 2: 

Überprüfung der aktuellen Passwort-Verschlüsselung:

select rolpassword from pg_authid where rolname = 'postgres'; 

select rolpassword from pg_authid where rolname = 'CrosscapUser'; 

die Antwort auf beide Abfragen sollte rolpassword … MD5 … lauten


Schritt 3: 

Temporäre Umstellung der Verschlüsselungsart:

alter system set password_encryption = 'scram-sha-256'; ()

select pg_reload_conf();


Schritt 4:

Aktualisieren des Kennwortes für den PostgreSQL Datenbank-SuperUser postgres:

alter role postgres with password '<Kennwort>';

Geben Sie das bei der ursprünglichen Installation des PostgreSQL DBMS vergebene oder ein neues Kennwort ein. Sie benötigen dieses Kennwort bei allen Starts der PostgreSQL Administrations-Konsole (PGAdmin).


Schritt 5:

Erneute Überprüfung der aktuellen Passwort-Verschlüsselung:

select rolpassword from pg_authid where rolname = 'postgres'; 

die Antwort auf diese Abfrage sollte rolpassword … SCRAM-SHA-256 … lauten - da soeben geändert.

select rolpassword from pg_authid where rolname = 'CrosscapUser'; 

die Antwort auf diese Abfrage sollte rolpassword … MD5 … lauten - da noch nicht geändert.


Lassen Sie bitte die SQL-Konsole für eine spätere, abschließende Überprüfung aller Einstellungen geöffnet!


Schritt 6:

Permanente Umstellung der Verschlüsselungsart:

Die Einträge in der pg_hba.conf abändern auf scram-sha-256, z.B. so:

# IPv4 local connections:

host    all             all             127.0.0.1/32         scram-sha-256

host    all             all             0.0.0.0/0               scram-sha-256

# IPv6 local connections:

host    all             all             ::1/128                  scram-sha-256

host    all             all             ::0/0                      scram-sha-256

Danach das PostgreSQL-DBMS über den Windows Dienste-Manager neu starten. Der Name des zugehörigen Windows-Prozesses lautet z.B. für Version 13: postgresql-x64-13 - PostgreSQL Server 13


Schritt 7:

PGAdmin Konsole öffnen, um das Kennwort für die Rolle CrosscapUser erneut (und mit scram-sha-256 verschlüsselt) einzugeben:

Servers > PostgreSQL 1X > Login/Group Roles > CrosscapUser > Rechte Maustaste > Properties

Unter dem Reiter Definition gibt es hier die Möglichkeit, das Benutzer-Kennwort neu zu vergeben:

Das Kennwort für die Rolle CrosscapUser wird unter Verschluss gehalten und kann bei Bedarf per E-Mail beim CROSSCAP Support (support@srz.de) abgefragt werden.


Schritt 8:

Überprüfung, ob die scram-sha-256-Verschlüsselung für alle Benutzer aktiv ist (in der SQL-Konsole):

SELECT rolname, rolpassword ~ '^SCRAM-SHA-256\$' AS has_upgraded FROM pg_authid WHERE rolcanlogin;

die Antwort auf diese Abfrage sollte wie folgt lauten (t steht für True):

rolname          | has_upgraded

postgres          | t

CrosscapUser | t

Gegenprobe, ob die MD5-Verschlüsselung für alle Benutzer inaktiv ist (in der SQL-Konsole):

SELECT rolname, rolpassword ~ '^md5\$' AS has_upgraded FROM pg_authid WHERE rolcanlogin;

die Antwort auf diese Abfrage sollte wie folgt lauten (f steht für False):

rolname          | has_upgraded

postgres          | f

CrosscapUser | f


Der CROSSCAP Enterprise Server kann jetzt mit den neuen Einstellungen in Betrieb genommen werden.

War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren