Gibt es eine Möglichkeit, einen PostgreSQL-Benutzer daran zu hindern, sein eigenes Passwort zu ändern?

7

Ich verwalte einen PotsgreSQL-Server und habe kürzlich festgestellt, dass meine "Nicht-Superuser" -Benutzer die Möglichkeit haben, die von mir zugewiesenen sicheren Kennwörter für unsichere zu ändern.

Ich habe in den REVOKEDokumenten gesucht , aber ich konnte keinen Weg finden, dies zu verhindern. Es ist möglich?

Danke im Voraus!

ericgcc
quelle
4
Möchten Sie tatsächlich verhindern, dass sie ihre Passwörter ändern, oder möchten Sie verhindern, dass sie ein neues Passwort festlegen, es sei denn, es ist einigermaßen sicher?
RDFozz

Antworten:

6

AFAIK, es gibt keine Möglichkeit, einen Benutzer daran zu hindern, sein Passwort zu ändern. Es wurde (vor ziemlich langer Zeit) gelegentlich auf der PostgreSQL-Mailingliste diskutiert , und alle Antworten, an die ich mich erinnere, waren im Grunde "Nein, das kannst du nicht" .

Es gibt jedoch ein Contrib-Modul namens passwordcheck, dessen Ziel es ist, die Stärke von Passwörtern zu gewährleisten , wenn Sie dies wünschen (wie bereits von @RDFozz kommentiert).

Aus den Dokumenten:

Das passwordcheckModul überprüft die Kennwörter der Benutzer, wenn sie mit CREATE ROLEoder festgelegt werden ALTER ROLE. Wenn ein Passwort als zu schwach angesehen wird, wird es abgelehnt und der Befehl wird mit einem Fehler beendet.

Um dieses Modul zu aktivieren, fügen Sie '$libdir/passwordcheck'zu shared_preload_librariesin postgresql.conf, dann den Server neu starten.

Ich habe das Modul selbst nie benutzt.

joanolo
quelle
4
Coole Antwort wusste nichts davon passwordcheck.
Evan Carroll
1
passwordcheckIch gehe davon aus, dass Sie denselben Hook verwenden können, mit dem Kennwortänderungen abgelehnt werden. Sie müssten eine C-Erweiterung schreiben.
Craig Ringer
1
@CraigRinger: Ich gehe davon aus, dass Sie es einfach so ändern passwordcheckoder konfigurieren können, dass es jede Kennwortänderung ablehnt (sagen wir konzeptionell, dass alle neuen Kennwörter 1.000 Zeichen lang sein müssen und aus verschiedenen ASCII-Zeichen bestehen müssen). Dies würde jedoch die bereits definierten Rollen "einfrieren" und überhaupt keine Änderungen oder Ergänzungen zulassen ... Wahrscheinlich ein gefährliches Szenario.
Joanolo
1
@joanolo: Beachten Sie die Vorbehalte von passwordcheck bezüglich der eigenen Sicherheit (in erster Linie werden im Netzwerk unverschlüsselt gesendete Kennwörter überprüft, was ein separates Risiko darstellt, sofern das Netzwerk selbst nicht verschlüsselt ist). Außerdem könnte das Umschreiben der Kennwortprüfung eine wichtige Aufgabe sein - hypothetisch, wenn die Kennwortprüfung dies erzwingt Das heißt, die ersten 4 Zeichen des Passworts stellen eine kryptografische Prüfsumme des restlichen Passworts dar. Dann könnte ericgcc ein Passwort generieren und festlegen, aber ein Benutzer könnte kein Kennwort festlegen, das den Test erfüllt. Aber die Passwörter wären noch länger als nötig.
Robert Carnegie
1
Nachträglicher Gedanke: Um die Wiederverwendung von Passwörtern zu verhindern (was ich übersehen habe), können Sie mit einem Prüfzeichen versehene Kennwörter ausgeben und dann das Salz der Prüfzeichenformel ändern, sodass das erneute Festlegen dieses Kennworts nicht möglich ist. Dadurch werden Benutzer besiegt, die entscheiden, dass es einfacher ist, das Kennwort jedes Benutzers auf dasselbe festzulegen ... bis Sie ein anderes Kennwort herausgeben müssen. Dies ist der Fall, wenn Postgresql oder die Kennwortprüfung die Wiederverwendung von Kennwörtern ohnehin nicht verhindern (die Wiederverwendung eines Kennworts, das von einem anderen Benutzer verwendet wurde, ist jedoch zweifelhaft).
Robert Carnegie