ASP.NET 4.0 がインストールされた Windows Server 2008 には、関連するユーザー アカウントが多数存在し、どれがどれなのか、どのように異なるのか、実際にアプリが実行されるアカウントはどれなのかがわかりません。次にリストを示します。
- IIS_IUSRS
- 国際
- デフォルトアプリケーションプール
- ASP.NET v4.0
- ネットワークサービス
- ローカルサービス。
何が何?
ベストアンサー1
これは非常に良い質問ですが、残念なことに、多くの開発者は、Web 開発者として IIS を設定するという文脈で、IIS/ASP.NET のセキュリティについて十分な質問をしていません。それでは、質問してみましょう。
リストされているアイデンティティをカバーするには:
IIS_IUSRS:
これは、古い IIS6IIS_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 では、ASP.NET にアプリケーション プール アカウント (通常は ) で要求を実行させることができました。あるいは、ローカルのファイルの設定をNETWORK SERVICE
使用して、サイトの匿名アカウントを偽装するように ASP.NET を構成することもできます(その設定がロックされている場合は、管理者がファイルで設定する必要があります)。<identity impersonate="true" />
web.config
machine.config
この設定は<identity impersonate="true">
、共有アプリケーション プールが使用される共有ホスティング環境では一般的です (偽装アカウントの解除を防ぐための部分的な信頼設定と組み合わせて)。
IIS7.x/ASP.NET では、偽装制御はサイトの認証構成機能を介して構成されるようになりました。したがって、プール IDIUSR
または特定のカスタム匿名アカウントとして実行するように構成できます。
LOCAL SERVICE:
このLOCAL SERVICE
アカウントは、サービス コントロール マネージャーによって使用される組み込みアカウントです。ローカル コンピューターに対する最小限の権限を持ちます。使用範囲はかなり限定されています。
LOCAL SYSTEM:
これについては質問されていませんでしたが、完全性のために追加します。これはローカルの組み込みアカウントです。かなり広範な権限と信頼があります。この ID で実行されるように Web サイトまたはアプリケーション プールを構成しないでください。
実際には:
実際には、Web サイトをセキュリティ保護するための推奨されるアプローチは (サイトが独自のアプリケーション プールを取得する場合 - これは IIS7 の MMC での新しいサイトの既定値です) で実行することですApplication Pool Identity
。つまり、アプリケーション プールの詳細設定でサイトの ID を次のように設定しますApplication Pool Identity
。
次に、Web サイトで認証機能を構成する必要があります。
匿名認証エントリを右クリックして編集します。
「アプリケーション プール ID」が選択されていることを確認します。
ファイルとフォルダーのアクセス許可を適用する場合は、アプリケーション プール ID に必要な権限を付与します。たとえば、プールのアクセス許可に対してアプリケーション プール ID を付与する場合は、ASP.NET v4.0
エクスプローラーを使用してこれを行うことができます。
「名前を確認」ボタンをクリックします。
または、次のユーティリティを使用してこれを行うこともできます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年のこの素晴らしい回答にはたくさんの役に立つ情報が含まれていますぜひ読んでみる価値あり: