Являются ли «нормальные» переменные среды более безопасными, чем переменные среды IIS? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть 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 таким же безопасным, как реестр? Могу ли я с уверенностью хранить в нем пароль?

1 Ответ

0 голосов
/ 01 мая 2020

Я могу просто задать несколько вопросов / проблем:
Мне любопытно, вы сделали set в командной строке и проверили, нет ли каких-либо нежелательных паролей в выводе в виде открытого текста?
Кроме того, если вы храните все пароли в одном файле, как в подходе № 2, это делает хороший honeypot. Я не знаю, насколько хорошо работает шифрование, упомянул Лекс Ли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...