Контекст ApplicationHost.config
<!-- App Pool -->
<add name="Site - Intranet" autoStart="true" managedRuntimeVersion="v4.0" />
<add name="App - App1" autoStart="true" managedRuntimeVersion="v4.0" />
<add name="App - App2" autoStart="true" managedRuntimeVersion="v2.0" />
<!-- Site -->
<site name="Intranet" id="1" serverAutoStart="true">
<application path="/" applicationPool="Site - Intranet">
<virtualDirectory path="/" physicalPath="D:\Web\Sites\Intranet" />
</application>
<application path="/Apps/App1" applicationPool="Application - App1">
<virtualDirectory path="/" physicalPath="D:\Web\Apps\App1" />
</application>
<application path="/Apps/App2" applicationPool="Application - App2">
<virtualDirectory path="/" physicalPath="D:\Web\Apps\App2" />
</application>
</site>
Как вы можете видеть, у меня есть один сайт с собственным пулом приложений 4.0 CLR и идентификатором, в котором размещаются два отдельных Приложения, каждый со своими пулами приложений и идентификаторами. Все три изолированы в отдельных местах файловой системы.
Разрешения NTFS для учетных записей AppPoolIdentity
Разрешения должны предоставляться каждому AppPoolIdentity в соответствующей папке (например, IIS AppPool\Site - Intranet
требуется разрешить чтение/выполнение на D:\Web\Sites\Intranet
).
В этот момент приложение App1 не должно читать/выполнять файлы в родительской структуре физической папки сайта. И наоборот, хостинг-сайт Intranet не должен читать/выполнять файлы в структуре физических папок App1. Я понимаю это правильно?
Когда я посещаю дочернее приложение (ex http://intranet/apps/app1
), я получаю ошибку сервера, заявляя, что он не может прочитать родительский файл Site web.config
из-за недостаточных разрешений.
Если я предоставляю разрешения на чтение/выполнение учетной записи удостоверения личности приложения на родительской структуре физической папки сайта (например, IIS AppPool\App - App1
доступ к D:\Web\Sites\Intranet
), проблема устранена.
Вопрос (ы)
-
Почему дочернее приложение должно читать
web.config
или любые другие файлы с родительского сайта?Примечание. Мой родительский сайт web.config уже разбивает дочернее приложение /vdir наследование с помощью метода
<location path="." inheritInChildApplications="false">
. -
Учитывая, что эта учетная запись по умолчанию имеет права на запись во многих папках - IIS AppPoolIdentity и права доступа к файловой системе для записи - это не создает безопасности риск? Например, не может ли какое-либо дочернее приложение теперь потенциально записываться в родительскую папку App_Data или в другое место?