Speichern von Produktionsgeheimnissen in ASP.NET Core

9

Ich versuche herauszufinden, wo die Application Production Secrets für eine ASP.NET Core App am besten gespeichert werden. Es gibt zwei ähnliche Fragen Wo sollte ich die Verbindung speichern? Zeichenfolge für die Produktionsumgebung meiner asp.net-5 App? und So stellen Sie ASP.NET Core UserSecrets für die Produktion bereit Beide empfehlen die Verwendung von Umgebungsvariablen.

Mein Problem ist, dass ich mehrere Instanzen meiner Webanwendung mit verschiedenen Datenbanken und verschiedenen Datenbankanmeldeinformationen ausführen möchte. Es sollte also eine Konfiguration pro Instanz geben, einschließlich der Geheimnisse.

Wie könnte dies auf eine sichere Weise erreicht werden?

Beachten Sie, dass die Anwendung in der Lage sein sollte, unter IIS selbst zu hosten und hostbar zu sein! (Später planen wir auch, es unter Linux auszuführen, wenn das für die Frage von Bedeutung ist)

Aktualisieren

Bei dieser Frage geht es nicht darum, ASP.NET-Benutzergeheimnisse in der Produktion zu verwenden! UserSecrets sind für die Produktion ausgeschlossen.

    
NicolasR 19.10.2016, 12:40
quelle

1 Antwort

5

Wie bereits erwähnt, sind Benutzergeheimnisse nur für die Entwicklung (um zu verhindern, dass Anmeldeinformationen versehentlich in den SCM übertragen werden) und nicht für die Produktion gedacht. Sie sollten eine Verbindungszeichenfolge pro Datenbank verwenden, d. H.% Co_de%, ConnectionStrings:CmsDatabaseProduction usw.

Oder verwenden Sie Andock-Container (wenn Sie nicht den Azure App-Dienst verwenden), dann können Sie sie pro Container festlegen.

Alternativ können Sie auch umgebungsbasierte Appsetting-Dateien verwenden. ConnectionStrings:CmsDatabaseDevelopment , aber sie dürfen nicht in der Versionsverwaltung (Git, CSV, TFS) enthalten sein!

Beim Start einfach:

%Vor%

Auf diese Weise können Sie bestimmte Inhalte aus appsettings.production.json laden und sie trotzdem über die Umgebungsvariable überschreiben.

    
Tseng 19.10.2016, 13:10
quelle

Tags und Links