Die meisten Informationen, die ich gefunden und über richtig Speicherung von Passwörtern in einer Datenbank lesen sagen, dass ich für jeden Benutzer das Passwort im Klartext mit einem einzigartigen Salz Hash-Wert sollte und speichern Sie dann die Hash in der Datenbank. Aber dieser Prozess funktioniert nicht für meine Bedürfnisse ...Ordnungsgemäßes Speichern und Abrufen von Kennwörtern für Dienstkonten?
ich einen Windows-Dienst habe in C# geschrieben, die in verschiedenen Datenzentren zu anderen Remote-Computern zu verbinden brauchen spezifische Dienstkonten verwenden. Diese Dienstkonten sind wie Domänenbenutzerkonten, aber es gibt keine echten Personen hinter ihnen und sie haben nur die richtigen Berechtigungen, um die Dienstnutzlast auf jedem spezifischen Server auszuführen. Die Informationen zum Dienstkonto werden in einer SQL Server-Tabelle mit dem Kennwort für jedes Konto gespeichert. Derzeit verwende ich symmetrische Verschlüsselung (Rijndael), um die Kennwörter in der DB-Tabelle zu verschleiern. Der Schlüssel wird in einer separaten Konfigurationsdatei mit strikten Zugriffsberechtigungen gespeichert.
Jedes Mal, wenn der Dienst einen geplanten Nutzlast auf einem entfernten Rechner laufen hat, Nachschlag ich die entsprechenden Dienstkontoinformationen auf dem Tisch und decript es mit der Taste. Es gibt auch eine interne Website, die im Grunde ein Front-End für die Verwaltung der verschiedenen Einstellungen für diesen Dienst ist, und dort kann der Administrator das Passwort der Dienstkonten anzeigen und ändern.
Ist dies ein guter Ansatz, um die Dinge sicher zu halten? Gibt es offensichtliche Mängel in diesem Schema?
Ist die interne Website HTTPS verwenden, wenn Passwörter an das Back-End zu senden? Vermutlich ist die Maschine, auf der der Dienst läuft, vor neugierigen Blicken geschützt. –
Ja und Ja ... Die interne Website läuft über https und der Service-Rechner hat nur eingeschränkten Zugriff. –