应用程序的应用程序池权限在父站点文件夹结构上



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:WebSitesIntranet" />
    </application>
    <application path="/Apps/App1" applicationPool="Application - App1">
        <virtualDirectory path="/" physicalPath="D:WebAppsApp1" />
    </application>
    <application path="/Apps/App2" applicationPool="Application - App2">
        <virtualDirectory path="/" physicalPath="D:WebAppsApp2" />
    </application>
</site>

正如你所看到的,我有一个站点,它有自己的4.0 CLR应用程序池和标识,它承载两个独立的应用程序,每个应用程序都有自己的应用程序池或标识。这三个文件都用沙盒封装在不同的文件系统位置。

AppPoolIdentity帐户的NTFS权限

必须为其各自文件夹上的每个AppPoolIdentity授予权限(例如,IIS AppPoolSite - Intranet需要对D:WebSitesIntranet具有读取/执行权限(。

此时,应用程序App1应该无法读取/执行其父站点的物理文件夹结构中的文件。反之亦然,托管站点Intranet不应能够读取/执行App1物理文件夹结构中的文件我能理解吗

当我访问子应用程序(例如http://intranet/apps/app1(时,我收到一个服务器错误,指出由于权限不足,它无法读取父站点的web.config文件。

如果我授予应用程序的标识帐户对父站点的物理文件夹结构的读取/执行权限(例如IIS AppPoolApp - App1D:WebSitesIntranet的访问权限(,问题就解决了。

问题

  1. 为什么子应用程序需要从父站点读取web.config或任何其他文件?

    注意:我的父站点的web.config已经使用<location path="." inheritInChildApplications="false">技术破坏了子app/vdir继承。

  2. 鉴于此身份帐户本质上具有对许多文件夹的写入权限(IIS AppPoolIdentity和文件系统写入访问权限(,这难道不会带来安全风险吗?例如,难道任何子应用程序现在都不能写入父站点的App_Data文件夹或其他位置吗?

对于#1,子文件夹/应用程序默认继承其父文件夹的web.config设置。我假设ASP.NET在尝试访问那些父web.config文件之前不会检查您的元素。虽然这不是你想要的,但对我来说很有道理。

对于#2,不太确定。如果你的应用程序池身份是用户的成员(正如你的参考答案所述(,那么它确实可以访问很多地方,但不能访问太多地方。我不会按照提问者的话去做。不确定子文件夹是否写入父文件夹。你应该能够用适当的文件系统权限阻止它(记住你的应用程序池身份是哪个组的成员(。我从来没有这样的配置,所以我不确定。

相关内容

  • 没有找到相关文章

最新更新