Обзор разрешений IIS7 - ApplicationPoolIdentity

356

Недавно мы обновились до IIS7 в качестве основного веб-сервера, и мне нужен обзор с точки зрения разрешений. Ранее при необходимости записи в файловую систему я бы предоставлял пользователю AppPool (сетевая служба) доступ к каталогу или файлу.

В IIS7 я вижу, по умолчанию, пользователь AppPool установлен на ApplicationPoolIdentity. Поэтому, когда я проверяю диспетчер задач, я вижу, что в учетной записи пользователя с именем «WebSite.com» выполняется процесс IIS («Website.com» - это имя веб-сайта в IIS).

Однако эта учетная запись пользователя не существует, если я пытаюсь использовать ее для предоставления разрешений. Итак, как мне определить, для какого пользователя тоже нужно предоставить разрешения?

Изменить ======================================================= =============================

Ниже приведена информация о проблеме на снимке экрана. Наш веб-сайт (www.silverchip.co.uk) работает под именем пользователя SilverChip.co.uk. Однако, когда я добавляю разрешения, этот пользователь не существует!

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

================================= См. Изображение AppPool

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

LiamB
источник
2
На самом деле информация Microsoft по этому вопросу очень хорошая Идентичность пула приложений
DanielV

Ответы:

680

ApplicationPoolIdentity на самом деле является лучшей практикой для использования в IIS7 +. Это динамически созданная непривилегированная учетная запись. Чтобы добавить защиту файловой системы для определенного пула приложений, см. Раздел «IIS.net Identity» . Быстрая версия:

Если пул приложений называется «DefaultAppPool» (просто замените этот текст ниже, если он назван по-другому)

  1. Откройте проводник Windows
  2. Выберите файл или каталог.
  3. Щелкните правой кнопкой мыши файл и выберите «Свойства»
  4. Выберите вкладку «Безопасность»
  5. Нажмите кнопку «Изменить», а затем кнопку «Добавить»
  6. Нажмите кнопку «Locations» и убедитесь, что вы выбрали локальный компьютер. ( Не домен Windows, если сервер принадлежит одному.)
  7. Введите « IIS AppPool \ DefaultAppPool » в текстовом поле «Введите имена объектов для выбора:». (Не забудьте изменить здесь «DefaultAppPool» на пул приложений, который вы назвали.)
  8. Нажмите кнопку «Проверить имена» и нажмите «ОК».
Джон Адамс
источник
11
@Pino: Нет, не имя веб-сайта. Используйте имя пула приложений . Каждый веб-сайт назначается пулу приложений. Вы можете указать, какой из них в диалоговом окне Основные настройки свойств веб-сайта (в IIS7).
Джон Адамс
2
@Pino: В этом случае роль безопасности, которую вы должны использовать, - IIS AppPool\silverchip.co.uk. Хотя я не пробовал точки в именах безопасности - вы можете изменить их на что-то без знаков препинания.
Джон Адамс
7
Я следовал вашим инструкциям, как вы сказали. Но есть один взлом. Вы должны установить свойство enable load user profileдля trueв настройках пула приложений. И только после этой настройки я смог запустить приложение. Поэтому, пожалуйста, обновите ваши инструкции и добавьте 9-й пункт.
Johnny_D
19
Не забудьте проверить, что в настройках сервера для анонимной аутентификации также используется идентификатор пула приложений. Это решение сработало для меня, как только я вернулся из IUSR.
bblue
11
Обратите внимание здесь! Вы не можете искать пользователя, используя интерфейс пользователя, но вы должны ввести его. Проверка имени - единственное, что вы можете сделать.
Ремко
88

Не забудьте использовать локальное имя сервера, а не имя домена, при разрешении имени

IIS AppPool\DefaultAppPool

(просто напоминание, потому что это меня немного сбило с толку):введите описание изображения здесь

Джеймс Туми
источник
Да, я забываю это каждый раз, спасибо за напоминание Джеймсу Туми!
января
30

Предоставление доступа к IIS AppPool \ YourAppPoolName пользователю может быть не достаточно с конфигурациями IIS по умолчанию.

В моем случае у меня все еще была ошибка HTTP Error 401.3 - Неавторизовано после добавления пользователя AppPool, и это было исправлено только после добавления разрешений пользователю IUSR .

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

вкладка аутентификации

Кредиты на этот ответ: Ошибка HTTP 401.3 - Несанкционированный

Zanon
источник
3
Это очень важно !!! Для безопасности необходимо изменить «Анонимная аутентификация» на «Идентификатор пула приложений»! Я уверен, что есть веская причина, по которой он установлен в IUSR, но я не могу придумать ни одного. Спасибо!!!
Дан Б
Это исправило проблему для меня. Это может быть потому, что моя версия IIS 8 на Windows Server 2012 R2
myroslav
2
Это важный шаг, который следует добавить к принятому ответу. Также самый простой способ состоит в том, чтобы изменить радио-блок на идентификацию пула приложений
Sourcery
1
Это была моя проблема! Спасибо!!
Слоан Рейнольдс
28

В Windows Server 2008 (r2) вы не можете назначить удостоверение пула приложений для папки через Свойства-> Безопасность. Вы можете сделать это через командную строку администратора, используя следующее:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Крис
источник
1
Вы можете объяснить это немного? Что означает (R)? Вы действительно вводите угловые скобки в этой команде?
Кейт Грегори
3
Привет, Кейт, я использовал <> для обозначения «твоего имени в apppool здесь», но оставил допустимое имя в apppool. В IIS Manager -> Пулы приложений вам нужно будет соответствовать имени, включая пробелы. Последнее, что я сделал, было «IIS AppPool \ ClientName_CompanyName - Интранет». : (R) в этом случае предоставляет доступ для чтения. Вы также можете использовать F (полный), M (изменить), RX (чтение + выполнение) и W (только запись).
Крис
9
На самом деле вы можете назначить это на вкладке «Ценные бумаги» в «Свойствах» в Windows Server 2008 R2, поэтому вам не понадобится этот обходной путь. Убедитесь, что у вас есть встроенные участники безопасности, выбранные для типов объектов и местоположения.
Ризм
Этот ответ работает для меня. Выбранный ответ не работает для меня.
Туйен Нгуен
3
см. также исходный ответ на выборочный ответ [ссылка] serverfault.com/questions/81165/… Для простой Windows Server 2008 (или редакции Datacenter) в значительной степени необходимо использовать командную строку, чтобы получить учетную запись пула приложений в системе безопасности. диалог. Как только он появится, вы сможете управлять им, изменять уровни разрешений для подкаталогов и т. Д. Также рассмотрите: «icacls» c: \ yourdirectory »/ t / grant« IIS AppPool \ DefaultAppPool »:( OI) (CI) (R)« OI наследование объекта, наследование CI-контейнера.
Secretwep
7

Часть A: Настройка вашего пула приложений

Предположим, что пул приложений называется «MyPool». Перейдите в «Дополнительные настройки» пула приложений из диспетчера IIS.

  1. Прокрутите вниз до «Идентичность». Попытка изменить значение вызовет диалоговое окно. Выберите «Встроенная учетная запись» и под ней выберите «ApplicationPoolIdentity».

  2. Несколько строк ниже «Идентичность», вы должны найти «Загрузить профиль пользователя». Это значение должно быть установлено на «True».

Часть B: Настройка вашего сайта

  1. Название сайта: SiteName (только пример)
  2. Физический путь: C: \ Независимо (только пример)
  3. Подключиться как ...: пользователь приложения (сквозная аутентификация) (вышеуказанные настройки можно найти в разделе «Основные настройки» сайта в диспетчере IIS)
  4. После настройки основных параметров найдите конфигурацию «Аутентификация» в разделе «IIS» на главной консоли сайта. Открой это. Вы должны увидеть опцию «Анонимная аутентификация». Убедитесь, что он включен. Затем щелкните правой кнопкой мыши и «Изменить ...». Выберите «Идентификация пула приложений».

Часть C: Настройка вашей папки

Обсуждаемая папка - C: \

  1. Перейдите в Свойства - Общий доступ - Расширенный общий доступ - Разрешения и установите флажок «Поделиться этой папкой»
  2. В том же диалоговом окне вы найдете кнопку «Разрешения». Нажмите на это.
  3. Откроется новое диалоговое окно. Нажмите «Добавить».
  4. Откроется новое диалоговое окно «Выбор пользователей или групп». В разделе «Из этого местоположения» убедитесь, что имя совпадает с именем вашего локального хост-компьютера. Затем в разделе «Введите имена объектов» введите «IIS AppPool \ MyPool», нажмите «Проверить имена», а затем «ОК».
  5. Дайте полные разрешения на совместное использование для пользователя «MyPool». Примените его и закройте свойства папки
  6. Снова откройте свойства папки. На этот раз перейдите в Безопасность - Дополнительно - Разрешение и нажмите Добавить. Там будет опция «Выбрать принципала» вверху или какой-то другой вариант, чтобы выбрать пользователя. Нажмите на это.
  7. Диалоговое окно «Выбор пользователей или групп» откроется снова. Повторите шаг 4.
  8. Дайте пользователю или всем пользователям столько разрешений, сколько вам нужно.
  9. Установите флажок «Заменить все разрешения дочернего объекта ...», а также «Применить и закрыть».

Теперь вы должны иметь возможность использовать просмотр веб-сайта

Дибёдюти Мондал
источник
Ты король джунглей! Спасибо
tno2007
5

Топ Ответ от Джона Адамса

Вот как реализовать это для людей PowerShell

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
Крис Миллс
источник
1

Просто чтобы добавить к путанице, диалоговое окно «Эффективные разрешения» (Windows Explorer) не работает для этих имен входа. У меня есть сайт "Umbo4", использующий сквозную аутентификацию, и я посмотрел на Действующие разрешения пользователя в корневой папке сайта. Тест «Проверка имен» разрешил имя «IIS AppPool \ Umbo4», но «Действующие разрешения» показывают, что у пользователя вообще не было разрешений для папки (все флажки сняты).

Затем я явно исключил этого пользователя из папки, используя вкладку «Безопасность». Это привело к сбою сайта с ошибкой HTTP 500.19, как и ожидалось. Однако действующие разрешения выглядели точно так же, как и раньше.

StuartN
источник
1

Я исправил все свои проблемы с asp.net, просто создав нового пользователя с именем IUSER с паролем и добавив в него сетевую службу и группы пользователей. Затем создайте все свои виртуальные сайты и приложения, установите для аутентификации IUSER с его паролем ... установите высокоуровневый доступ к файлу, чтобы включить IUSER и BAM, исправлено не менее 3-4 проблем, включая этот.

Дейв

Дэвид Граник
источник