2016-10-19 12 views
8

ASP.NET Coreアプリケーションのアプリケーションプロダクション秘密をどこに保存するのが最適かを考えます。 2つの同様の質問があります。両方とも環境変数の使用をお勧めします。 Where should I store the connection string for the production environment of my asp.net-5 app? および How to deploy ASP.NET Core UserSecrets to production ASP.NETコアにプロダクション秘密を保存する

私の問題は、さまざまなデータベースと異なるデータベースの資格情報を持つWebアプリケーションのインスタンスを複数実行したいということです。したがって、秘密を含むいくつかのインスタンスごとの設定が必要です。

これはどのようにして安全に達成できますか?

アプリケーションが自己ホスト可能で、IISの下でホスト可能である必要があることに注意してください。 (その後、我々はまた、それが質問のいずれかの重要なものである場合は、Linux上でそれを実行する予定)

更新

この質問は生産にASP.NETユーザーの秘密を使用しようとしている話ではありません! UserSecretsはプロダクション用に除外されています。

+0

ユーザーの秘密について:生産のためにユーザーシークレットを使用することは少なくとも不可能です。シークレットマネージャツールは保存された秘密を暗号化せず、信頼できるストアとして扱うべきではありません。これは開発目的のみのものです。キーと値は、ユーザープロファイルディレクトリのJSON構成ファイルに格納されます。 – Set

+0

私はUserSecretsを使用したくない、それは私の質問の全体のポイントです!私は質問を編集します... – NicolasR

答えて

3

ユーザーの秘密は(資格情報を誤ってSCMにコミットするのを避けるため)のみであり、本番用ではありません。 ConnectionStrings:CmsDatabaseProductionConnectionStrings:CmsDatabaseDevelopmentなどの接続文字列を使用する必要があります。

(Azure App Serviceを使用していない場合は)ドッカーコンテナを使用し、コンテナごとに設定できます。

また、環境ベースの設定ファイルを使用することもできます。 appsettings.production.jsonですが、ソースコントロール管理(Git、CSV、TFS)に含めてはいけません!スタートアップで

だけで実行します。

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 

この方法は、あなたがappsettings.production.jsonから特定のものを読み込むことができますし、まだ環境変数を経由して、それを上書きすることができます。

+0

私は開発時にユーザーの秘密の問題を認識しています。しかし、それはここで問題ではない、私は生産時間について話している!環境設定ファイルは、本番環境の各インスタンスで同じままであり、上書きする環境変数がすべてのインスタンスで同じになるため、助けになりません!私はDockerについてまだ十分ではありませんが、おそらくそのアイデアが助けになるかもしれません。 – NicolasR

+1

@NicolasR:必ずしもそうではありません。インストールごとに1つのapplication.production.jsonがあります。アプリケーションが3つの異なるフォルダにある場合、それぞれの 'applciation.production.json 'をそれぞれ希望の値に設定することができます。 'applciation.production.json 'は、重要なデータが含まれているので、ソースコントロールから除外してください。 – Tseng

+1

コマンドラインパラメータから設定を読むことができる 'Microsoft.Extensions.Configuration.CommandLine'もありますが、ASP内では簡単には使用できません。NETコアを使用して、Startupクラス内で設定をビルドすると、そこから 'Main'メソッドに渡される' args'パラメータに簡単にアクセスすることができません – Tseng

関連する問題