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

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

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

Этого я знаю:

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

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

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

3 Solutions collect form web for “Разрешения на доступ к файлам IIS AppPoolIdentity и файловой системы”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. Щелкните Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Множественные разрешения для Android 6.0
  • Как использовать пользовательские разрешения в Android?
  • Разрешение перегрузки C ++
  • База данных SQLite: только для чтения
  • Interesting Posts

    Мощность USB 7 USB теряется через несколько секунд / минут

    Есть ли какой-либо способ определить, какой псевдоним электронной почты отправил мне отправитель, если он был указан как BCC (Outlook)?

    Преобразование серии JFreeChart TimeSeries с данными дня в данные недели или месяца?

    $ .ajax – dataType

    Как диагностировать вялую или не реагирующую машину

    Windows 10 linux bash shell ctrl + space не устанавливает отметку в Emacs

    График Excel с двумя X-осями (по горизонтали), возможно?

    Проверка наличия определенного значения в базе данных firebase

    Какую библиотеку Java XML вы рекомендуете (чтобы заменить dom4j)?

    Как мне вернуть старый диспетчер задач (из Windows 7) в Windows 10?

    Как работает RewriteBase в .htaccess

    Как передать литерал константного массива функции, которая принимает указатель без использования переменной C / C ++?

    angularjs: ng-src эквивалент для background-image: url (…)

    Не являются ли строки Python неизменяемыми? Тогда почему работает + “” + b?

    Есть ли способ снизить кучу Java, когда он не используется?

    Давайте будем гением компьютера.