Как работать с конфиденциальными конфигурациями в выпуске с ядром asp.net? - PullRequest
0 голосов
/ 08 октября 2018

Я ищу лучший способ обработки конфигураций в моих основных приложениях aspnet.См. Ниже мой сценарий.

  1. В настоящее время я использую TFS в качестве хранилища кода и в качестве организатора всех моих определений выпуска, которые отправляются на веб-сервер с IIS
  2. У меня есть приложение для нескольких арендаторов, и мой код в настоящее время хранит в настройках приложений ту конфигурацию, которая у меня есть для каждого клиента

    appsetting.Client1.json

    appsetting.Client2.json

ConnectionString является частью переменных, которые хранятся в моем appsettings.Client # .json

Теперь большая проблема, которую я вижу до сих пор, заключается в том, что я сохраняювсе конфигурации в моем репозитории, и все разработчики также имеют доступ к моим настройкам PROD (что-то, чего я хочу избежать, например, connectionString)

Мое решение до сих пор заключается в попыткесохранить все конфиденциальные конфигурации в переменных конфигурации моего IIS для каждого клиента.

enter image description here

и избегать их непосредственного использования в коде, а также как частиконфигурации на процесс непрерывной интеграции в TFS, который должен выглядеть только как оркестратор.Таким образом, приложение должно взять все секретные вещи из конфигурации IIS.Что теперь вызывает у меня еще одно сомнение, если я все делаю правильно: у меня больше не будет строки подключения в качестве раздела в моих настройках приложения, поэтому я не получу их, как обычно делал configuration.GetConnectionString.

Должен ли я рассмотреть другой подход к имеющимся у меня ресурсам?

1 Ответ

0 голосов
/ 08 октября 2018

В разработке используйте пользовательские секреты.В основном это просто конфигурация JSON, но она хранится вне вашего проекта в вашем пользовательском каталоге.Таким образом, нет никаких шансов, что какие-либо секреты попадут в ваш источник контроля.Вам не нужно делать ничего особенного, так как конфигурация пользовательских секретов включена по умолчанию.Просто щелкните правой кнопкой мыши свой проект и выберите «Управление секретами пользователя».

В работе вы можете использовать переменные среды, хранилище ключей Azure и т. Д. В принципе, как и при разработке, вы хотите сохранить секреты внешними.в ваш проект и из вашего управления исходным кодом.

Поскольку все эти настройки являются внешними, также неплохо было бы смоделировать их в чем-то вроде appsettings.json.Например:

{
    "ConnectionStrings": {
        "MyConnectionString": "[CONNECTION STRING]"
    }
}

Затем вы фактически указываете значение в пользовательских секретах в переменных разработки и среды, хранилище ключей Azure и т. Д. В рабочей среде.Так как appsettings.json включается первым, другие источники конфигурации переопределяют местозаполнители.Но он служит для документирования вашей конфигурации, поэтому другие разработчики знают, что им нужно предоставить.

...