2

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 アプリ プールと ID を持つ 1 つのサイトがあり、それぞれ独自のアプリ プールと ID を持つ 2 つの個別のアプリケーションをホストしています。3 つすべてが、個別のファイル システムの場所にサンドボックス化されます。

AppPoolIdentity アカウントの NTFS アクセス許可

それぞれのフォルダーの各 AppPoolIdentity にアクセス許可を付与する必要があります (例:IIS AppPool\Site - Intranetに対する読み取り/実行アクセス許可が必要D:\Web\Sites\Intranetです)。

この時点で、アプリケーション App1 は、その親サイトの物理フォルダー構造内のファイルを読み取り/実行できないはずです。逆に、ホスティング サイトのイントラネットは、App1 の物理フォルダー構造内のファイルを読み取り/実行できないようにする必要があります。私はそれを正しく理解していますか?

子アプリケーション (例) にアクセスすると、アクセス許可が不十分なためhttp://intranet/apps/app1、親サイトのファイルを読み取ることができないというサーバー エラーが表示されます。web.config

アプリケーションの ID アカウントに、親サイトの物理フォルダー構造に対する読み取り/実行アクセス許可 (例:へのIIS AppPool\App - App1アクセスD:\Web\Sites\Intranet) を付与すると、問題は解決されます。

質問

  1. web.config子アプリケーションが親サイトからその他のファイルを読み取る必要があるのはなぜですか?

    注:親サイトの web.config は、この手法を使用して子アプリ/vdir の継承を既に中断してい<location path="." inheritInChildApplications="false">ます。

  2. この ID アカウントには本来、多くのフォルダーに対する書き込みアクセス許可 ( IIS AppPoolIdentity およびファイル システムの書き込みアクセス許可) があるため、セキュリティ リスクは発生しませんか? たとえば、子アプリケーションが親サイトの App_Data フォルダーやその他の場所に書き込む可能性はありませんか?

4

1 に答える 1

0

#1 の場合、子フォルダー/アプリは既定で親フォルダーの web.config 設定を継承します。これらの親 web.config ファイルにアクセスしようとする前に、ASP.NET は要素をチェックしないと思います。それはあなたが望むものではありませんが、私には理にかなっています。

#2については、あまりよくわかりません。アプリ プール ID がユーザーのメンバーである場合 (参考文献の回答が示すように)、多くの場所への読み取りアクセス権がありますが、書き込みが多すぎます。質問者様の言うことには耳を傾けません。親フォルダーへの子の書き込みについてはわかりません。適切なファイル システムのアクセス許可でそれをブロックできるはずです (アプリ プール ID がメンバーであるグループに注意してください)。私はこの設定をしたことがないので、よくわかりません。

于 2013-01-16T23:51:31.757 に答える