[psqlodbc] Passwort auf Clientseite ist Plaintext. Verschleiern/Verschlüsseln möglich?

Hallo zusammen,

folgende Situation:

  • Server mit PostgreSQL (darum bin ich hier :wink:)
  • Viele Clients mit Windows OS und psqlodbc Datenbanktreiber

Auf den Clients sind viele “Datenquellen” als System-DSN konfiguriert. Alle sind mit praktisch gleichen Parametern konfiguriert.
Das zum konfigurierten Benutzernamen, mit dem sich dann auf dem Datenbankserver eingeloggt wird, zugehörige Passwort wird allerdings in Plain Text in der Windows Registry gespeichert. Beispiel (gekürzt):

[-HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ADK]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ADK]
---schnipp ---
"Description"=""
"Database"="ADK"
"Servername"="SQL-Servername"
"Port"="5432"
"Username"="Thomas"
"UID"="Thomas"
"Password"="PlaintextPasswordOfThomas123"
"ReadOnly"="0"
--- schnapp ---

Mir geht es um die Zeile “Password”.

Übertragen wird das Passwort als MD5 Hashwert. So ist das auch in der pg_hba.conf auf den Server konfiguriert.

Ist es irgendwie möglich das Passwort auf Clientseite zu “verschleiern”?
Mich stört irgendwie, dass mit dem Username und dem Passwort ein williger User sich direkt auf der Datenbank anmelden und direkt die Tabellen manipulieren könnte. Ohne die richtige Anwendung zu nutzen!

IMHO liegt das Problem bei der Verwendung von ODBC. Ich hab ja von Windows keine Ahnung, aber kann man denn nicht bei der Einrichtung der Verbindung verhindern, dass das Passwort gespeichert wird? Ich hab das auch schon mal verwendet, aber ist schon etwas länger her…

Gruß Uwe

Das geht. Man wird dann vom Clientprogramm nach einem Passwort gefragt.

Aber:
In dem Fall müssten aber alle User das Passwort wissen, damit das Clientprogramm sich mit PostgreSQL verbinden kann.
Und genau das wollte ich verhindern. Die User sollten das Passwort nicht wissen müssen, idealerweise sogar nicht wissen “sollen”.

Dann kannst du in der pg_hba.conf den User für die notwendigen Clients auf trust setzen.

Gruß Uwe

Ich wollte an der verschlüsselten Übertragung des Userpassworts (MD5 Hash) eigentlich nicht rütteln.
Und bei einem “trust” Setting in der pg_hba.conf würde ja gar kein Passwort genutzt werden, da man ja dem User uneingeschränkt vertraut (trust).

Was ich gerne erreichen würde:

  • Der User, mit dem sich die Clientanwedung auf dem SQL Server einloggt muss ein Passwort nutzen (–> machen wir schon immer so)
  • Das Passwort soll “gehasht” übertragen werden (–> MD5 Setting in pg_hba.conf)
  • Das Passwort sollte/darf nicht in Plaintext auf dem Client vorliegen