Удостоверения пула приложений
Томас Демл
Независимо от того, работаете ли сайт на собственном сервере или в облаке, безопасность должна находиться в верхней части списка приоритетов. Если да, вы будете рады услышать, что СЛУЖБА IIS имеет функцию безопасности, называемую удостоверением пула приложений. Эта функция появилась в пакете обновления 2 (SP2) Windows Server 2008 и Windows Vista. Удостоверение пула приложений позволяет запускать пул приложений под уникальной учетной записью, не создавая домен или локальные учетные записи и управляя ими. Имя учетной записи пула приложений соответствует имени пула приложений. На рисунке ниже показан рабочий процесс IIS (W3wp.exe), работающий в качестве удостоверения DefaultAppPool.
Учетные записи удостоверений пула приложений
Рабочие процессы в 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. Вот как это происходит.
Откройте консоль управления IIS (INETMGR). MSC).
Откройте узел пулов приложений под узлом компьютера. Выберите пул приложений, который необходимо изменить, чтобы запуститься под автоматически созданным удостоверением пула приложений.
Щелкните правой кнопкой мыши пул приложений и выберите "Дополнительные параметры"
Выберите элемент списка удостоверений и нажмите кнопку с многоточием (кнопка с тремя точками).
Откроется следующее диалоговое окно:
Нажмите кнопку встроенной учетной записи и выберите тип удостоверения ApplicationPoolIdentity в поле со списком.
Чтобы выполнить тот же шаг с помощью командной строки, можно вызвать средство командной строки appcmd следующим образом:
%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity
Защита ресурсов
При создании нового пула приложений процесс управления IIS создает идентификатор безопасности (SID), представляющий имя самого пула приложений. Например, если создать пул приложений с именем MyNewAppPool, в системе Безопасность Windows создается идентификатор безопасности с именем MyNewAppPool. С этого момента ресурсы можно защитить с помощью этого удостоверения. Однако удостоверение не является реальной учетной записью пользователя; Он не будет отображаться как пользователь в консоли управления пользователями Windows.
Для этого можно выбрать файл в проводнике Windows и добавить удостоверение DefaultAppPool в список контроль доступа файла (ACL).
Открытие проводника Windows
Выберите файл или каталог.
Щелкните файл правой кнопкой мыши и выберите пункт "Свойства"
Перейдите на вкладку Безопасность.
Нажмите кнопку "Изменить " и нажмите кнопку "Добавить "
Нажмите кнопку "Расположения " и убедитесь, что выбран компьютер.
Введите IIS AppPool\DefaultAppPool в поле ВВОД имен объектов, которые нужно выбрать: текстовое поле.
Нажмите кнопку "Проверить имена" и нажмите кнопку "ОК".
При этом выбранный файл или каталог теперь также разрешает доступ к удостоверениям 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 будут запускать рабочие процессы в качестве удостоверения пула приложений. При каждом другом типе удостоверения идентификатор безопасности будет введен только в маркер доступа процесса. Если идентификатор внедряется, содержимое по-прежнему может быть acLed для ApplicationPoolIdentity, но владелец маркера, вероятно, не является уникальным. Дополнительные сведения об этой концепции см. в записи блога о изоляции пула приложений в IIS 7.
Доступ к сети
Использование учетной записи сетевой службы в среде домена имеет большое преимущество. Рабочий процесс, выполняемый в качестве сетевой службы, обращается к сети в качестве учетной записи компьютера. Учетные записи компьютера создаются при присоединении компьютера к домену. Они выглядят следующим образом:
<domainname>\<machinename>$,
Например:
mydomain\machine1$
Хорошо, что сетевые ресурсы, такие как общие папки или базы данных SQL Server, могут быть ACLed, чтобы разрешить доступ к этой учетной записи компьютера.
Что касается удостоверений пула приложений?
Хорошая новость заключается в том, что удостоверения пула приложений также используют учетную запись компьютера для доступа к сетевым ресурсам. Вносить изменения не нужно.
Проблемы совместимости с удостоверениями пула приложений
Документация по руководству
Самая большая проблема совместимости с удостоверениями пула приложений, вероятно, более ранние руководства, которые явно рекомендуют ресурсы ACL для сетевой службы, то есть удостоверение по умолчанию DefaultAppPool в IIS 6.0 и IIS 7.0. Клиентам придется изменить их скрипты на ACL для IIS AppPool\DefaultAppPool (или другого имени пула приложений) при запуске в IIS 7.5 или более поздней версии (см. приведенный выше пример для этого).
Профиль пользователя
СЛУЖБЫ IIS не загружают профиль пользователя Windows, но некоторые приложения могут воспользоваться им в любом случае для хранения временных данных. SQL Express — это пример приложения, которое делает это. Однако профиль пользователя должен быть создан для хранения временных данных в каталоге профилей или в кусте реестра. Профиль пользователя для учетной записи сетевой службы был создан системой и всегда был доступен. Однако при переключении на уникальные удостоверения пула приложений профиль пользователя не создается системой. Только стандартные пулы приложений (DefaultAppPool и Классический AppPool) имеют профили пользователей на диске. Профиль пользователя не создается, если администратор создает новый пул приложений.
Однако если требуется, можно настроить пулы приложений IIS для загрузки профиля пользователя, задав атрибут LoadUserProfile значение true.
Итоги
Удостоверения пула приложений — это мощная новая функция изоляции, представленная для Windows Server 2008, Windows Vista и более поздних версий Windows. Он сделает выполнение приложений IIS еще более безопасным и надежным.