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

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

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

Что есть что?

1 Ответ

407 голосов
/ 20 апреля 2011

Это очень хороший вопрос, и, к сожалению, многие разработчики не задают достаточно вопросов о безопасности 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

LOCAL SYSTEM:

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

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

На практике:

На практике предпочтительный подход к защите веб-сайта (если сайт получает свой собственный пул приложений - который по умолчанию для нового сайта в 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, то вы можете сделать это через Проводник:

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)

Надеюсь, это поможет прояснить ситуацию.

Обновление:

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

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

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