2016-10-19 1 views
8

ASP.NET 핵심 응용 프로그램의 응용 프로그램 제작 비밀을 가장 잘 저장할 위치를 파악하려고합니다. 두 가지 유사한 질문이 있습니다. 둘 다 비슷한 환경 변수를 사용하는 것이 좋습니다. 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 코어에 생산 비밀 저장

내 문제는 다른 데이터베이스 및 다른 데이터베이스 자격 증명을 사용하여 웹 응용 프로그램의 여러 인스턴스를 실행하고 싶다는 것입니다. 따라서 비밀 정보를 포함하여 인스턴스별로 구성해야합니다.

어떻게 이런 방식으로 안전한 방법으로 달성 할 수 있습니까?

응용 프로그램이 자체 호스트 할 수 있어야하며 IIS에서 호스팅 할 수 있어야합니다.

이 질문은 생산에 ASP.NET 사용자 비밀을 사용하려고 시도에 대해하지

업데이트 (나중에 우리는 또한이 문제에 대해 어떤 중요한 경우 리눅스에서 실행 계획)! UserSecrets는 제작을 배제합니다.

+0

사용자 비밀 정보 : 적어도 제작시 UserSecrets를 사용할 수는 없지만 Secret Manager 도구는 저장된 암호를 암호화하지 않으며 신뢰할 수있는 저장소로 취급해서는 안됩니다. 개발 목적으로 만 사용됩니다. 키와 값은 사용자 프로파일 디렉토리의 JSON 구성 파일에 저장됩니다. – Set

+0

나는 UserSecrets를 사용하고 싶지 않습니다, 그것이 제 질문의 핵심입니다! 내 질문을 편집합니다 ... – NicolasR

답변

3

사용자 비밀은 개발을 위해 (사용자 인증 정보가 실수로 SCM에 커밋되는 것을 방지하기 위해)이며 프로덕션 용도로 사용되지 않습니다. ConnectionStrings:CmsDatabaseProduction, ConnectionStrings:CmsDatabaseDevelopment

또는 Azure App Service를 사용하지 않는 경우 고정 컨테이너를 사용하면 컨테이너별로 설정할 수 있습니다.

또는 환경 기반의 appsetting 파일을 사용할 수도 있습니다. 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 : 꼭 그런 것은 아닙니다. 설치 당 하나의 application.production.json이 있습니다. 애플리케이션이 3 개의 다른 폴더에 있다면, 각각의'applciation.production.json '을 원하는 값으로 설정할 수 있습니다. 'applciation.production.json '을 민감한 데이터를 포함하고 있기 때문에 소스 컨트롤에서 제외해야합니다. – Tseng

+1

명령 줄 매개 변수에서 구성을 읽을 수있는'Microsoft.Extensions.Configuration.CommandLine'도 있지만 ASP 내에서 쉽게 사용할 수 없습니다.NET 코어에서 시작 클래스 내에서 구성을 빌드 할 때 거기에서'Main' 메쏘드로 전달되는'args' 매개 변수에 쉽게 접근 할 수 없습니다. – Tseng

관련 문제