Удостоверения пула приложений

Томас Демл

Независимо от того, работаете ли сайт на собственном сервере или в облаке, безопасность должна находиться в верхней части списка приоритетов. Если да, вам будет приятно узнать, что IIS имеет функцию безопасности, называемую идентификацией пула приложений. Эта функция появилась в пакете обновления 2 (SP2) Windows Server 2008 и Windows Vista. Удостоверение пула приложений позволяет запускать пул приложений под уникальной учетной записью, не создавая домен или локальные учетные записи и управляя ими. Имя учетной записи пула приложений соответствует имени пула приложений. На изображении ниже показан рабочий процесс IIS (W3wp.exe), работающий под учетной записью DefaultAppPool.

Снимок экрана: экран диспетчера задач с фокусом на рабочем процессе W 3 W P dot E X E I I.

Учетные записи идентификации пула приложений

Рабочие процессы в IIS 6.0 и в IIS 7 выполняются как сетевая служба по умолчанию. Сетевая служба — это встроенное удостоверение Windows. Он не требует пароля и имеет только права пользователя; то есть у него относительно низкие привилегии. Работа с низкой привилегированной учетной записью является хорошей практикой безопасности, так как после этого ошибка программного обеспечения не может использоваться злоумышленником, чтобы взять на себя всю систему.

Однако с течением времени возникла проблема, поскольку все больше системных служб Windows начали работать как сетевая служба. Это связано с тем, что службы, работающие как сетевой службой, могут изменять другие службы, которые выполняются под той же учетной записью. Так как рабочие процессы IIS выполняют сторонний код по умолчанию (классический ASP, ASP.NET, PHP-код), было время изолировать рабочие процессы IIS от других системных служб Windows и запускать рабочие процессы IIS под уникальными удостоверениями. Операционная система Windows предоставляет функцию с именем "виртуальные учетные записи", которая позволяет IIS создавать уникальное удостоверение для каждого пула приложений. Дополнительные сведения о виртуальных учетных записях см. в пошаговом руководстве по учетным записям служб.

Настройка идентификаторов пула приложений IIS

Если вы используете IIS 7.5 в Windows Server 2008 R2 или более поздней версии IIS, вам не нужно ничего делать, чтобы использовать новое удостоверение. Для каждого создаваемого пула приложений свойство Identity нового пула приложений по умолчанию имеет значение ApplicationPoolIdentity . Процесс администрирования IIS (WAS) создаст виртуальную учетную запись с именем нового пула приложений и запускает рабочие процессы пула приложений под этой учетной записью по умолчанию.

Чтобы использовать эту виртуальную учетную запись при запуске IIS 7.0 в Windows Server 2008, необходимо изменить свойство Identity пула приложений, создаваемого на ApplicationPoolIdentity. Вот как:

  1. Откройте консоль управления IIS (INETMGR.MSC).

  2. Откройте узел пулов приложений под узлом компьютера. Выберите пул приложений, который вы хотите изменить, чтобы он работал под автоматически созданным удостоверением пула приложений.

  3. Щелкните правой кнопкой мыши пул приложений и выберите "Дополнительные параметры"

    Снимок экрана: диалог

  4. Выберите элемент списка Идентификация и нажмите кнопку с многоточием (кнопка с тремя точками).

  5. Откроется следующее диалоговое окно:

    Снимок экрана: диалоговое окно

  6. Нажмите кнопку "Встроенной учетной записи", а затем выберите тип удостоверения ApplicationPoolIdentity в выпадающем списке.

Чтобы выполнить тот же шаг с помощью командной строки, можно вызвать средство командной строки appcmd следующим образом:

%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity

Защита ресурсов

При создании нового пула приложений процесс управления IIS создает идентификатор безопасности (SID), представляющий имя самого пула приложений. Например, при создании пула приложений с именем MyNewAppPool в системе безопасности Windows создается идентификатор безопасности с именем MyNewAppPool. С этого момента ресурсы можно защитить с помощью этого удостоверения. Однако удостоверение не является реальной учетной записью пользователя; он не будет отображаться как пользователь в консоли управления учетными записями пользователей Windows.

Для этого можно выбрать файл в проводнике Windows и добавить удостоверение DefaultAppPool в список управления доступом файла (ACL).

  1. Откройте проводник Windows

  2. Выберите файл или каталог.

  3. Щелкните файл правой кнопкой мыши и выберите пункт "Свойства"

  4. Выберите вкладку "Безопасность"

  5. Нажмите кнопку "Изменить " и нажмите кнопку "Добавить "

  6. Нажмите кнопку "Расположения " и убедитесь, что выбран компьютер.

  7. Введите IIS AppPool\DefaultAppPool в текстовое поле Введите имена объектов для выбора:.

  8. Нажмите кнопку "Проверить имена" и нажмите кнопку "ОК".

    Снимок экрана: диалоговое окно

Таким образом, выбранный файл или каталог теперь также разрешает доступ удостоверению DefaultAppPool.

Это можно сделать с помощью командной строки с помощью средства ICACLS. В следующем примере предоставляется полный доступ к идентификатору DefaultAppPool.

ICACLS test.txt /grant "IIS AppPool\DefaultAppPool:F"

Дополнительные сведения см. в разделе ICACLS.

В Windows 7 и Windows Server 2008 R2 и более поздних версиях Windows по умолчанию используется пулы приложений в качестве удостоверения пула приложений. Для этого появился новый тип удостоверения с именем AppPoolIdentity. Если выбран тип удостоверения AppPoolIdentity (по умолчанию в Windows 7 и Windows Server 2008 R2 и более поздних версиях), службы IIS будут запускать рабочие процессы в качестве удостоверения пула приложений. Для всех других типов удостоверений идентификатор безопасности будет встраиваться только в маркер доступа процесса. Если идентификатор внедряется, содержимое по-прежнему может быть подвержено управлению доступом (ACL) для ApplicationPoolIdentity, но, вероятно, владелец токена не уникален. Дополнительные сведения об этой концепции см. в записи блога об новых возможностей в IIS 7, связанных с изоляцией пула приложений.

Доступ к сети

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

<domainname>\<machinename>$,

Рассмотрим пример.

mydomain\machine1$

Хорошо, что сетевые ресурсы, такие как общие папки или базы данных SQL Server, могут быть ограничены через ACL, чтобы эта учетная запись компьютера могла получить доступ.

Как насчёт идентификаторов пула приложений?

Хорошая новость заключается в том, что идентификаторы пула приложений также используют учетную запись машины для доступа к сетевым ресурсам. Никаких изменений не требуется.

Проблемы совместимости с учетными записями пула приложений

Документация по руководству

Самая большая проблема совместимости с удостоверениями пула приложений, вероятно, связана с более ранними руководствами, которые явно рекомендуют настроить список управления доступом (ACL) для Network Service, то есть для удостоверения по умолчанию в DefaultAppPool в IIS 6.0 и IIS 7.0. Клиентам придется изменить их скрипты на ACL для IIS AppPool\DefaultAppPool (или другого имени пула приложений) при запуске в IIS 7.5 или более поздней версии (см. приведенный выше пример для этого).

Профиль пользователя

СЛУЖБЫ IIS не загружают профиль пользователя Windows, но некоторые приложения могут воспользоваться им в любом случае для хранения временных данных. SQL Express — это пример приложения, которое делает это. Однако профиль пользователя должен быть создан для хранения временных данных в каталоге профилей или в кусте реестра. Профиль пользователя для учетной записи сетевой службы был создан системой и всегда был доступен. Однако при переключении на уникальные личности пула приложений системой не создается профиль пользователя. Только стандартные пулы приложений (DefaultAppPool и Классический .NET AppPool) содержат профили пользователей на диске. Профиль пользователя не создается, если администратор создает новый пул приложений.

Однако если требуется, можно настроить пулы приложений IIS для загрузки профиля пользователя, задав атрибут LoadUserProfile значение true.

Сводка

Идентификации пулов приложений — это мощная новая функция изоляции, представленная в Windows Server 2008, Windows Vista и более поздних версиях Windows. Он сделает выполнение приложений IIS еще более безопасным и надежным.