У меня есть приложение ASP.NET Core 2.0 WebAPI с Db ConnectionString в appSettings.json. В процессе разработки он имеет такую ценность:
«DefaultConnection»: «Server = localhost; Database = Tyroll; Trusted_Connection = True; MultipleActiveResultSets = true»
и только когда мы публикуем его в производственной среде, мы меняем его с соответствующими паролями, используя профиль публикации VS 2017.
Таким образом, пароли для SQL-сервера не хранятся в репозитории, и там нет проблем.
Файл appsettings.json защищен IIS
Интересный вопрос Должен ли этот пароль быть каким-то образом «спрятан» даже в IIS?
Одной из причин является дополнительная безопасность, так что учетные данные SQL не отображаются в виде обычного текста в случае нарушения здесь. Другой вариант для сценария авторизации, когда администратор IIS не должен иметь прямого доступа к SQL-серверу.
Я полагаю, что он может быть зашифрован, и у самого приложения будет ключ для его расшифровки. Это не будет на 100% безопасным, так как в случае взлома IIS даже этот ключ может быть реконструирован из приложения, но это усложнит задачу, когда он находится в виде обычного текста.
Итак, первый вопрос: должен ли я вообще этим заниматься?
И, во-вторых, если 1.Q - «Да», что будет лучшим / рекомендованным способом сделать это?
Есть ли встроенный инструмент для этого в .NetCore2, VS2017, IIS или какой-либо другой инструмент?
Вот несколько ссылок по теме: