У меня есть ASP. Net Базовый веб-сайт, работающий на IIS. Мне нужно хранить некоторые пароли, которые нужны сайту для доступа в производство. Платные системы хранения паролей для меня недоступны. Я решил хранить свои пароли в переменных среды. Итак, на производственном компьютере у меня есть:
- учетная запись службы
my_prod_service_account
- пул приложений
MyProdAppPool
, который работает под my_prod_service_account
- веб-сайта
MyDotNetCoreSite
, который работает в MyProdAppPool
Подход 1: Нормальные переменные среды
Я вхожу в рабочую машину как my_prod_service_account
и задаю переменные среды для этого пользователя в Powershell:
[Environment]::SetEnvironmentVariable("Pwd1", "MyPrecioussss1", "User");
[Environment]::SetEnvironmentVariable("Pwd2", "MyPrecioussss2", "User");
После этого MyDotNetCoreSite может читать эти переменные среды.
Подход 2: system.webServer \ aspNetCore Переменные среды
Нечто подобное можно достичь с помощью %WINDIR%\system32\inetsrv\config\applicationHost.config
(файл конфигурации IIS) на рабочей машине. Его можно редактировать вручную или через пользовательский интерфейс , но в итоге это выглядит следующим образом:
<configuration>
<location path="MyDotNetCoreSite">
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="Pwd1" value="MyPrecioussss1" />
<environmentVariable name="Pwd2" value="MyPrecioussss2" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
После iisreset
MyDotNetCoreSite может считывать эти значения как переменные среды.
Вопрос
Я хочу изменить свой метод хранения паролей с подхода 1 на подход 2. Первый устанавливает переменные среды для пользователя, второй для сайта (который я считаю более подходящим). Но я не могу найти достаточно документации, чтобы судить, имеет ли подход 2 тот же уровень безопасности, что и подход 1. Установка «нормальной» переменной среды сохраняет ее в реестре на HKEY_Users\my_prod_service_account SID\Environment\Pwd1
. Доступ к реестру обычно требует повышенных разрешений, и если кто-то взломает его, у нас будут большие проблемы, чем у хакеров, знающих Pwd1. Является ли applicationHost.config таким же безопасным, как реестр? Могу ли я с уверенностью хранить в нем пароль?