Ich habe keinen Zugriff auf eine Postgres-Installation, daher kann ich dies nicht überprüfen.
Ich bin ein Sicherheitsmann und sehe Klartext-Passwörter in den Protokollen:
create user user1 with password 'PLAINTEXT PASSWORD'
Wie können die Datenbankadministratoren ihre Kennwörter ändern oder erstellen, ohne dass das Kennwort in den Protokollen gelöscht wird?
Ich habe gesehen , diese , die Zustände Sie einen MD5 - Hash des Passworts verwenden können, aber dann die Hash ist auch im klaren. Gibt es einen besseren Weg?
postgresql
postgresql-9.3
logs
password
schroeder
quelle
quelle
\password
Befehl von zu verwendenpsql
.Antworten:
Es klingt wie
log_statement
eingestellt aufall
.Wenn Sie verhindern möchten, dass Kennwörter in den Protokollen angezeigt werden, während
log_statement
ein Wert festgelegt ist, derALTER USER
/ erfasst, solltenALTER ROLE
Sie diesen beim Ändern von Kennwörtern überschreiben. z.BSie müssen ein Superuser sein, um dies zu tun. Normale Benutzer können Protokollierungsregeln nicht überschreiben.
Es wäre schön, wenn PostgreSQL einige Parameter Anweisungen unterstützt das Markieren (oder sogar Funktionen) als sicherheitsempfindlich und erlaubt Benutzern zu verlangen , dass sie in Protokollen maskiert werden,
pg_stat_statements
,pg_stat_activity
, etc. Es ist nicht eine solche Funktion - aber hey, Patches herzlich willkommen. Wenn Sie wirklich interessiert sind, posten Sie auf pgsql-Hackern, bevor Sie einen tatsächlichen Code schreiben, damit Sie Ratschläge und Kommentare erhalten. Alternativ können Sie mit jemandem sprechen, der die Vertragsentwicklung durchführt.Im Allgemeinen erwartet PostgreSQL, dass Sie die Protokolle als vertraulich behandeln.
In anderen Bereichen ist die Protokollierung ein ernstes Sicherheitsrisiko. Beispielsweise verwenden einige
pgcrypto
Funktionen Kryptoschlüssel als Parameter.quelle
Die aktuell akzeptierte Antwort funktionierte bei Postgres 9.4 nicht, da verhindert wurde, dass das Klartextkennwort in den Protokollen angezeigt wird.
Was für mich stattdessen funktionierte, war das lokale Generieren des Passwort-Hash:
Dann füge das ein:
(Sicherheitshinweis: Abhängig davon, wo Sie die oben genannten Informationen generieren, möchten Sie möglicherweise verhindern, dass sich Ihre Shell im Verlauf protokolliert, oder Sie möchten auf einem freigegebenen System ein * nix-Dienstprogramm verwenden, das Sie zur Eingabe des Kennworts auffordert, anstatt es tatsächlich in das Verzeichnis aufzunehmen Ich befand mich zufällig nicht auf einem gemeinsam genutzten System, daher war das für mich kein Problem.)
quelle