
Ich suche nach einer Möglichkeit, ein Datenbankkennwort auf dem Arbeitscomputer zu speichern, sodass meine eigene Anwendung es lesen kann (um eine Verbindung zur Datenbank herzustellen), ein Benutzer ohne Administratorrechte es jedoch nicht lesen kann. Ein Administrator muss das Kennwort ändern können, vorzugsweise automatisch.
Ich denke dabei an so etwas wie.pgpass-Datei für PostgreSQLin einer Linux-Umgebung. Ist dies auch in einer Windows-Umgebung möglich?
Ich denke, dass die Passwortdatei nur für Administratoren zugänglich gemacht werden kann. Aber kann ein Programm, das für den Benutzer ausführbar ist, auch auf diese Datei zugreifen? Ist es außerdem möglich, mithilfe von Gruppenrichtlinien eine solche Datei über das Netzwerk zu verteilen?
Andere Lösungen, die mir in den Sinn kommen (wahrscheinlich mit mehr Aufwand):
- Verschlüsseln Sie die Passwortdatei. Nur die Anwendung und die Administratoren verfügen über die gültigen Schlüssel zum Entschlüsseln und Ändern/Lesen der Datei.
- Rufen Sie das Kennwort von einer Netzwerkressource ab, vermutlich ebenfalls verschlüsselt.
Antwort1
Als Antwort auf Ihre Frage zum ausschließlichen Administratorzugriff:
Windows führt Dienste mit den Berechtigungen des Benutzers aus (es sei denn, Sie führen sie ausdrücklich als Administrator oder als anderer Benutzer aus). Wenn also der Benutzer keinen Zugriff auf eine Datei hat, hat das Programm auch keinen Zugriff darauf.
Als Antwort auf die Frage zur Gruppenrichtlinie:
Ja, Sie können Gruppenrichtlinien verwenden, um Dateien über Gruppenrichtlinieneinstellungen zu verteilen. (Siehe:https://www.adamfowlerit.com/2016/07/group-policy-preferences-replace-existing-file/)
Antwort2
Falls es jemanden interessiert: Mir ist folgende Lösung eingefallen.
Das Passwort wird verschlüsselt in einer XML-Datei (dem „Passwortcontainer“) gespeichert. Der Container kann mit einem Administratorpasswort geöffnet und bearbeitet werden. Die Verschlüsselung ist symmetrisch. Der Container wird auf einer Netzwerkressource abgelegt, und zwar einfach in einem Netzwerkverzeichnis.
Die Anwendung erhält den Speicherort des Passwort-Containers mitgeteilt und kann den Passwort-Container öffnen, da im Code das Administrator-Passwort hinterlegt ist.
Mir ist bewusst, dass diese Lösung nicht 100% sicher ist, da Passwörter nicht im Code gespeichert werden sollen. Für diese Anforderungen (das Datenbankpasswort soll vor dem Benutzer verborgen bleiben, das Datenbankpasswort muss administrierbar sein) ist die Lösung jedoch gut genug.