Каковы все учетные записи пользователей для IIS/ASP.NET и как они отличаются?

В Windows Server 2008 с установленным ASP.NET 4.0 есть целая группа связанных учетных записей пользователей, и я не могу понять, какой из них, как они отличаются, и какой ДЕЙСТВИТЕЛЬНО тот, который запускается моим приложением под. Вот список:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • МЕСТНОЕ ОБСЛУЖИВАНИЕ.

Что такое?

Ответ 1

Это очень хороший вопрос, и, к сожалению, многие разработчики не задают достаточно вопросов о безопасности IIS/ASP.NET в контексте создания веб-разработчика и настройки IIS. Итак, здесь идет....

Чтобы охватить перечисленные тождества:

IIS_IUSRS:

Это аналогично старой группе IIS6 IIS_WPG. Это встроенная группа с безопасностью, настроенная таким образом, что любой член этой группы может действовать как идентификатор пула приложений.

IUSR:

Эта учетная запись аналогична старой локальной учетной записи IUSR_<MACHINE_NAME>, которая была анонимным пользователем по умолчанию для веб-сайтов IIS5 и IIS6 (т.е. настроенных с помощью вкладки "Безопасность каталога" свойств сайта).

Для получения дополнительной информации о IIS_IUSRS и IUSR см.

Общие сведения о встроенных учетных записях пользователей и групп в IIS 7

DefaultAppPool:

Если пул приложений настроен на запуск с использованием функции идентификации пула приложений, тогда "синтезированная" учетная запись под названием IIS AppPool\<pool name> будет создана "на лету" для использования в качестве идентификатора пула. В этом случае будет создана синтезированная учетная запись IIS AppPool\DefaultAppPool, созданная для времени жизни пула. Если вы удалите пул, эта учетная запись больше не будет существовать. При применении разрешений к файлам и папкам их необходимо добавить с помощью IIS AppPool\<pool name>. Вы также не увидите эти учетные записи пула на своих компьютерах Диспетчер пользователей. Для получения дополнительной информации см. Следующее:

Идентификаторы пула приложений

ASP.NET v4.0: -

Это будет идентификатор пула приложений для пула приложений ASP.NET v4.0. См. Выше DefaultAppPool.

NETWORK SERVICE: -

Учетная запись NETWORK SERVICE - это встроенный идентификатор, введенный в Windows 2003. NETWORK SERVICE - это низкоприоритетная учетная запись, в соответствии с которой вы можете запускать пулы приложений и веб-сайты. Веб-сайт, запущенный в пуле Windows 2003, все еще может олицетворять анонимную учетную запись сайта (IUSR_ или все, что вы настроили как анонимное удостоверение).

В ASP.NET до Windows 2008 вы могли бы выполнить запросы ASP.NET в учетной записи пула приложений (обычно NETWORK SERVICE). В качестве альтернативы вы можете настроить ASP.NET для олицетворения анонимной учетной записи сайта с помощью параметра <identity impersonate="true" /> в локальном каталоге web.config (если этот параметр заблокирован, то это должно быть сделано администратором в файле machine.config).

Настройка <identity impersonate="true"> распространена в средах с общим хостингом, где используются общие пулы приложений (в сочетании с настройками частичного доверия, чтобы предотвратить разглашение выданной учетной записи).

В IIS7.x/ASP.NET контроль олицетворения теперь настраивается с помощью функции конфигурации аутентификации на сайте. Таким образом, вы можете настроить запуск в качестве идентификатора пула, IUSR или конкретной пользовательской анонимной учетной записи.

LOCAL SERVICE:

Учетная запись LOCAL SERVICE - это встроенная учетная запись, используемая диспетчером управления сервисами. Он имеет минимальный набор привилегий на локальном компьютере. Он имеет довольно ограниченный объем использования:

LocalService Account

LOCAL SYSTEM:

Вы не спрашивали об этом, но я добавляю для полноты. Это локальная встроенная учетная запись. У этого есть довольно обширные привилегии и доверие. Вы никогда не должны настраивать веб-сайт или пул приложений для работы под этим идентификатором.

Локальная система

На практике:

На практике предпочтительный подход к обеспечению безопасности веб-сайта (если сайт получает свой собственный пул приложений, который является стандартным для нового сайта в MMC IIS7) должен работать под Application Pool Identity. Это означает, что для параметра "Идентификация сайта" в его расширенных настройках пула приложений Application Pool Identity:

enter image description here

На веб-сайте вы должны настроить функцию проверки подлинности:

enter image description here

Щелкните правой кнопкой мыши и отредактируйте запись анонимной аутентификации:

enter image description here

Убедитесь, что выбрано "Идентификатор пула приложений":

enter image description here

Когда вы приходите для применения прав на файлы и папки, вы предоставляете идентификатор пула приложений все права, необходимые. Например, если вы предоставляете идентификатор пула приложений для разрешений пула ASP.NET v4.0, вы можете либо сделать это через Explorer:

enter image description here

Нажмите кнопку "Проверить имена":

enter image description here

Или вы можете сделать это с помощью утилиты ICACLS.EXE:

icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)

... или... если ваш пул приложений сайта называется BobsCatPicBlog, тогда:

icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)

Я надеюсь, что это поможет разобраться.

Update:

Я просто столкнулся с этим отличным ответом от 2009 года, который содержит кучу полезной информации, которую стоит прочитать:

Разница между учетной записью "Локальная система" и учетной записью "Сетевая служба" ?