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

284

В Windows Server 2008 с установленным ASP.NET 4.0 существует целый ряд связанных учетных записей пользователей, и я не могу понять, какая из них, чем они отличаются, и какая действительно является той, под которой работает мое приложение. Вот список:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • МЕСТНЫЙ СЕРВИС.

Что есть что?

Vilx-
источник
И использовать Windows Server 2012 с ASP.NET 4.0 или выше?
Kiquenet

Ответы:

434

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

Чтобы покрыть перечисленные личности:

IIS_IUSRS:

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

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

LOCAL SYSTEM:

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

Учетная запись LocalSystem

На практике:

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

Или вы можете сделать это с помощью 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)

Я надеюсь, что это помогает прояснить ситуацию.

Обновить:

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

Разница между учетной записью «Local System» и учетной записью «Network Service»?

Кев
источник
не соглашайтесь использовать одного пользователя для анонимной аутентификации и идентификации пула приложений ... если вам нужно дать apppoolidentity разрешение на запись в папку ....
giammin
1
@giammin - почему бы и нет? Если у вас нет особого случая, использование идентификаторов пула приложений является наиболее безопасным подходом, если каждый сайт находится в своем собственном пуле приложений. Ненавидеть «обращение к авторитету», но уже 15 лет работаю инженером по веб-хостингу и парнем по безопасности, и этот подход не составляет труда в IIS7 +.
Кев
@Kev просто я не хочу давать разрешение на запись анонимному пользователю на сайте
giammin
1
Ваши пулы приложений могут быть еще более конкретными с помощью IIS AppPool \ <name_of_apppool>. С другой стороны, IIS Express будет работать только с IIS AppPool \ ASP.NET v4.0, поскольку виртуальные учетные записи пула приложений не создаются.
kevindaub
@ daub815 - IIS Express работает по-другому, потому что он предназначался для запуска под вашим именем пользователя Windows и запуска и выключался по мере необходимости при разработке и отладке. На самом деле он фактически не использует и не зависит от пулов приложений или инфраструктуры Full Fat IIS. Цель IIS Express состояла в том, чтобы дать разработчикам столько же поведения, вкуса и конфигурации, сколько и в реальной жизни, потому что игрушечный веб-сервер VS был строго ограничен ...
Кев