Ich schreibe ein Python-Skript, das einige Datenbankoperationen ausführt. Ich habe die Anmeldeinformationen der Datenbank in einer Konfigurationsdatei gespeichert und über RawConfigParser in Python gelesen. Zum Sichern des Datenbank-Passworts gibt es eine Möglichkeit, nur den Wert des Datenbankpassworts in der Konfigurationsdatei zu verschlüsseln und nach dem Lesen über ConfigParser zu entschlüsseln. Ich habe mit PyCrypto gesehen, dass ich die gesamte Datei verschlüsseln kann, aber ich möchte nur das Passwort verschlüsseln, weil andere Felder zukünftigen Änderungen unterliegen.Einen Wert in der Python-Eigenschaftendatei sichern
0
A
Antwort
0
Ich bekomme diese Frage viel bei der Sicherheitsberatung. Keine Best Practice, aber es geht darum, das Risiko zu managen.
Das Speichern von Anmeldeinformationen in der Benutzerkonfigurationsdatei (z. B. ~/.secret
oder ~/.config
) ist eine gängige Praxis. Sie können die Dateiberechtigung auf 0600
setzen, sodass kein anderer Benutzer (außer Superusern) es lesen kann.
Oder Sie können die Anmeldeinformationen in der Umgebung übergeben. Am besten, wenn Sie es von einer Remote-Verbindung aus tun (SSH), aber Sie müssen sich jedes Mal, wenn Sie die Anwendung neu starten, manuell anmelden und die Variablen übergeben.
Stellen Sie außerdem sicher, dass der Datenbankbenutzer sehr eingeschränkte Berechtigungen hat.
Es ist mir nicht klar, was Ihr Bedrohungsmodell ist. Hat der Benutzer dieses Skripts Zugriff auf diese Datenbank? Wenn ja, können sie einfach ihre eigenen Anmeldeinformationen verwenden? Wenn nicht, welche Schritte unternehmen Sie, um sicherzustellen, dass sie dieses Skript nicht verwenden, um Berechtigungen zu erlangen, die ihnen nicht erteilt wurden? –
@JonKiparsky Die Idee ist, wenn jemand Zugriff auf meine Eigenschaftendatei erhält, sollte er/sie nicht in der Lage sein, die db-Anmeldeinformationen zu erhalten. Wenn ich also diese Felder mit einem Binärschlüssel oder einem Schlüssel verschlüsseln kann, den ich als Umgebungsvariable übergeben kann, während ich den Code ausführe, denke ich, dass ich gut sein sollte. Etwas ähnlich zu Jasypt in Java. – user5147250