回答:
これは非常に良い質問であり、残念なことに、多くの開発者は、Web開発者でありIISを設定する上でIIS / ASP.NETのセキュリティについて十分な質問をしていません。だからここに行く...
リストされたアイデンティティをカバーするには:
IIS_IUSRS:
これは、古いIIS6 IIS_WPG
グループに似ています。これは、このグループのメンバーがアプリケーションプールIDとして機能できるようにセキュリティが構成された組み込みグループです。
IUSR:
このアカウントはIUSR_<MACHINE_NAME>
、IIS5およびIIS6 Webサイトの既定の匿名ユーザーであった古いローカルアカウント(つまり、サイトのプロパティの[ディレクトリセキュリティ]タブで構成されたもの)に類似しています。
詳細IIS_IUSRS
とIUSR
参照:
DefaultAppPool:
アプリケーションプールがアプリケーションプールID機能を使用して実行するように構成されている場合、呼び出された「合成」アカウントIIS AppPool\<pool name>
がその場で作成され、プールIDとして使用されます。この場合IIS AppPool\DefaultAppPool
、プールの存続期間用に作成されたと呼ばれる合成アカウントがあります。プールを削除すると、このアカウントは存在しなくなります。ファイルおよびフォルダに権限を適用する場合、これらをを使用して追加する必要がありますIIS AppPool\<pool name>
。また、コンピューターのユーザーマネージャーにこれらのプールアカウントは表示されません。詳細については、以下を参照してください。
ASP.NET v4.0:
-
これは、ASP.NET v4.0アプリケーションプールのアプリケーションプールIDになります。DefaultAppPool
上記を参照してください。
NETWORK SERVICE:
-
NETWORK SERVICE
アカウントは、組み込みのWindows 2003で導入されたIDです。NETWORK SERVICE
です。アプリケーションプールとWebサイトを実行できる低い特権のアカウントです。Windows 2003プールで実行されているWebサイトは、引き続きサイトの匿名アカウント(IUSR_または匿名IDとして構成したもの)を偽装できます。
Windows 2008より前のASP.NETでは、アプリケーションプールアカウント(通常はNETWORK SERVICE
)でASP.NET実行要求を行うことができました。または、ASP.NETを構成して、ローカルのファイルの<identity impersonate="true" />
設定を介してサイトの匿名アカウントを偽装することもできますweb.config
(その設定がロックされている場合は、machine.config
ファイルの管理者が行う必要があります)。
設定 <identity impersonate="true">
は、共有アプリケーションプールが使用される共有ホスティング環境で一般的です(偽装アカウントの巻き戻しを防ぐための部分信頼設定と組み合わせて)。
IIS7.x / ASP.NETでは、サイトの認証構成機能を介して偽装コントロールが構成されます。そのため、プールID IUSR
または特定のカスタム匿名アカウントとして実行するように構成できます。
LOCAL SERVICE:
LOCAL SERVICE
アカウントは、組み込みのサービスコントロールマネージャーによって使用されるアカウントです。ローカルコンピュータに対する最小限の特権セットを持っています。使用範囲はかなり限られています。
LOCAL SYSTEM:
あなたはこれについて尋ねませんでしたが、私は完全性のために追加しています。これはローカルのビルトインアカウントです。それはかなり広範な特権と信頼を持っています。このIDで実行するようにWebサイトまたはアプリケーションプールを構成しないでください。
実際には:
実際には、Webサイトをセキュリティで保護するための推奨アプローチ(サイトが独自のアプリケーションプールを取得する場合-IIS7のMMCの新しいサイトのデフォルト)は、で実行することApplication Pool Identity
です。つまり、アプリケーションプールの詳細設定でサイトのIDをApplication Pool Identity
次のように設定します。
次に、Webサイトで認証機能を設定する必要があります。
匿名認証エントリを右クリックして編集します。
「アプリケーションプールID」が選択されていることを確認します。
ファイルとフォルダのアクセス許可を適用するときは、必要なすべての権限をアプリケーションプールIDに付与します。たとえば、ASP.NET v4.0
プールのアクセス許可にアプリケーションプールIDを付与する場合は、エクスプローラーを使用してこれを行うことができます。
[名前の確認]ボタンをクリックします。
または、ICACLS.EXE
ユーティリティを使用してこれを行うことができます。
icacls c:\ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI)(OI)(M)
...または...サイトのアプリケーションプールが呼び出されたBobsCatPicBlog
場合:
icacls c:\ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI)(OI)(M)
これで問題が解決することを願っています。
更新:
私は、2009年のこの優れた回答に出くわしました。この回答には、一読に値する有益な情報がたくさん含まれています。