Подтвердить что ты не робот

Разрешения на доступ к файлам IIS AppPoolIdentity и файловой системы

Здесь возникает проблема с IIS 7.5 и ASP.NET, с которыми я занимаюсь исследованием и получаю нигде. Любая помощь будет принята с благодарностью.

Мой вопрос: используя ASP.NET в IIS 7.5, как IIS и/или операционная система позволяют веб-приложению писать в папку типа C:\dump при полной поддержке? Как мне не нужно явно добавлять доступ для записи для пользователя пула приложений (в данном случае ApplicationPoolIdentity)?

Я знаю это:

  • В IIS 7.5 идентификатор по умолчанию для пула приложений: ApplicationPoolIdentity.
  • ApplicationPoolIdentity представляет собой учетную запись пользователя Windows под названием "IIS APPPOOL\AppPoolName" , которая создается при создании пула приложений, где AppPoolName является именем пула приложений.
  • Пользователь "IIS APPPOOL\AppPoolName" по умолчанию является членом группы IIS_IUSRS.
  • Если вы работаете под полным доверием, ваше веб-приложение может писать во многие области файловой системы (исключая такие папки, как C:\Users, C:\Windows и т.д.). Например, ваше приложение будет иметь доступ к записи в некоторые папки, например, C:\dump.
  • По умолчанию группе IIS_IUSRS не предоставляется доступ для чтения или записи к C:\dump (по крайней мере, не доступ, который отображается на вкладке "Безопасность" в проводнике Windows).
  • Если вы откажетесь на запись на IIS_IUSRS, вы получите SecurityException при попытке записи в папку (как и ожидалось).

Итак, принимая во внимание все это, каким образом доступ на запись предоставляется пользователю "IIS APPPOOL\AppPoolName" ? Процесс w3wp.exe работает как этот пользователь, поэтому что позволяет этому пользователю писать в папку, у которой, похоже, нет явного доступа?

Обратите внимание, что я понимаю, что это, вероятно, было сделано ради удобства, так как было бы больно предоставить пользователю доступ ко всем папкам, которые нужно написать, если вы работаете под полным доверием. Если вы хотите ограничить этот доступ, вы всегда можете запустить приложение в разделе "Среднее доверие". Мне интересно узнать о том, как операционная система и/или IIS позволяют выполнять эти записи, даже несмотря на то, что доступ к файловой системе явно отсутствует.

4b9b3361

Ответ 1

ApplicationPoolIdentity назначается членство группы Users, а также группа IIS_IUSRS. На первый взгляд это может выглядеть несколько тревожным, однако группа Users имеет несколько ограниченные права NTFS.

Например, если вы попытаетесь создать папку в папке C:\Windows, вы обнаружите, что не можете. ApplicationPoolIdentity все еще должен быть в состоянии читать файлы из системных папок Windows (иначе как еще рабочий процесс сможет динамически загружать важные DLL).

Что касается ваших замечаний о возможности записи в папку c:\dump. Если вы посмотрите на разрешения в расширенных настройках безопасности, вы увидите следующее:

enter image description here

Смотрите, что специальное разрешение наследуется от c:\:

enter image description here

То, что ваш сайт ApplicationPoolIdentity может читать и записывать в эту папку. Это право унаследовано от диска c:\.

В общей среде, где у вас может быть несколько сотен сайтов, каждая из которых имеет свой собственный пул приложений и идентификатор пула приложений, вы сохранили бы папки сайта в папке или томе, у которых была удалена группа Users, и установлены разрешения так что доступ к ним (с наследованием) доступны только администраторам и учетной записи SYSTEM.

Затем вы должны индивидуально назначать требуемые разрешения для каждого IIS AppPool\[name] для этого в корневой папке сайта.

Вы также должны убедиться, что все папки, созданные вами, где хранятся потенциально чувствительные файлы или данные, удалены группой Users. Вы также должны убедиться, что все приложения, которые вы устанавливаете, не хранят конфиденциальные данные в своих папках c:\program files\[app name] и вместо этого они используют папки профиля пользователя.

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

Членство в группе ApplicationPoolIdentity можно проверить с помощью инструмента SysInternals Process Explorer. Найдите рабочий процесс, который запущен с идентификатором пула приложений, который вам интересен (вам нужно добавить столбец User Name в список столбцов для отображения:

enter image description here

Например, у меня есть пул с именем 900300, который имеет идентификатор пула приложений IIS APPPOOL\900300. Щелкните правой кнопкой мыши по свойствам процесса и выберите вкладку "Безопасность":

enter image description here

Как мы видим, IIS APPPOOL\900300 является членом группы Users.

Ответ 2

  • Щелкните правой кнопкой мыши папку.

  • Нажмите "Свойства"

  • Нажмите вкладку "Безопасность". Вы увидите что-то вроде этого:

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

  1. Нажмите кнопку "Изменить..." на приведенном выше экране. Вы увидите что-то вроде этого:

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

  1. Нажмите "Добавить..." на приведенном выше экране. Вы увидите что-то вроде этого:

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

  1. Нажмите кнопку "Locations..." на приведенном выше экране. Вы увидите что-то подобное. Теперь перейдите в верхнюю часть этой древовидной структуры и выберите имя своего компьютера, затем нажмите "ОК" .

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

  1. Теперь введите "iis apppool\your_apppool_name" и нажмите кнопку "Проверить имена". Если приложение существует, вы увидите свое имя приложения в текстовом поле с подчеркиванием в нем. Нажмите кнопку "ОК" .

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

  1. Отметьте/снимите отметку о том, какой доступ вам нужно предоставить учетной записи

  2. Нажмите кнопку "Применить", а затем "ОК" .

Ответ 3

Каждый пул приложений в среде II создает свою собственную безопасную папку пользователя с ПОЛНЫМ разрешением на чтение и запись по умолчанию в каталоге c:\users. Откройте папку "Ваши пользователи" и посмотрите, какие папки пулов приложений есть, щелкните правой кнопкой мыши и проверьте их права для назначенной виртуальной учетной записи пула приложений. Вы должны увидеть добавленную вами учетную запись пула приложений, имеющую доступ для чтения и записи, назначенный ее корневому и подпапкам.

Таким образом, доступ к типу доступа к файлам автоматически выполняется, и вы должны иметь возможность писать все, что вам нравится, в папках учетных записей пулов приложений, ничего не меняя. Для этого были созданы виртуальные учетные записи пользователей для каждого пула приложений.