IIS / ASP.NETのすべてのユーザーアカウントとは何ですか。


282

ASP.NET 4.0がインストールされたWindows Server 2008では、関連するユーザーアカウントが多数あり、どれがどのように異なり、どのように異なるのか、そして実際にアプリが実行されているのはどれなのかわかりません。ここにリストがあります:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • ローカルサービス。

何が何?


そして、ASP.NET 4.0以上でWindows Server 2012を使用していますか?
Kiquenet 2014年

回答:


432

これは非常に良い質問であり、残念なことに、多くの開発者は、Web開発者でありIISを設定する上でIIS / ASP.NETのセキュリティについて十分な質問をしていません。だからここに行く...

リストされたアイデンティティをカバーするには:

IIS_IUSRS:

これは、古いIIS6 IIS_WPGグループに似ています。これは、このグループのメンバーがアプリケーションプールIDとして機能できるようにセキュリティが構成された組み込みグループです。

IUSR:

このアカウントはIUSR_<MACHINE_NAME>、IIS5およびIIS6 Webサイトの既定の匿名ユーザーであった古いローカルアカウント(つまり、サイトのプロパティの[ディレクトリセキュリティ]タブで構成されたもの)に類似しています。

詳細IIS_IUSRSIUSR参照:

IIS 7の組み込みのユーザーアカウントとグループアカウントについて

DefaultAppPool:

アプリケーションプールがアプリケーションプールID機能を使用して実行するように構成されている場合、呼び出された「合成」アカウントIIS AppPool\<pool name>がその場で作成され、プールIDとして使用されます。この場合IIS AppPool\DefaultAppPool、プールの存続期間用に作成されたと呼ばれる合成アカウントがあります。プールを削除すると、このアカウントは存在しなくなります。ファイルおよびフォルダに権限を適用する場合、これらをを使用して追加する必要がありますIIS AppPool\<pool name>。また、コンピューターのユーザーマネージャーにこれらのプールアカウントは表示されません。詳細については、以下を参照してください。

アプリケーションプールID

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アカウントは、組み込みのサービスコントロールマネージャーによって使用されるアカウントです。ローカルコンピュータに対する最小限の特権セットを持っています。使用範囲はかなり限られています。

LocalServiceアカウント

LOCAL SYSTEM:

あなたはこれについて尋ねませんでしたが、私は完全性のために追加しています。これはローカルのビルトインアカウントです。それはかなり広範な特権と信頼を持っています。このIDで実行するようにWebサイトまたはアプリケーションプールを構成しないでください。

LocalSystemアカウント

実際には:

実際には、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年のこの優れた回答に出くわしました。この回答には、一読に値する有益な情報がたくさん含まれています。

「ローカルシステム」アカウントと「ネットワークサービス」アカウントの違いは何ですか?


匿名認証とアプリプールIDに同じユーザーを使用することに同意しないでください...
apppoolidentityに

1
@giammin-どうしてですか?特別なケースがない限り、各サイトが独自のアプリケーションプールにある場合、アプリケーションプールIDを使用することが最も安全なアプローチです。「権威に訴える」ことを嫌うが、15年間共有Webホストエンジニアおよびセキュリティ担当者であったこのアプローチは、IIS7 +で非常に簡単です。
ケブ2015

@Kev単に、匿名ユーザーにサイトへの書き込み権限を与えたくない
giammin

1
アプリケーションプールは、IIS AppPool \ <name_of_apppool>を使用することにより、さらに具体的にすることができます。関連するメモとして、アプリプールの仮想アカウントが作成されないため、IIS ExpressはIIS AppPool \ ASP.NET v4.0でのみ機能します。
kevindaub 2015年

@ daub815-IIS Expressは、Windowsのログインと起動の下で実行し、開発とデバッグ時に必要に応じてシャットダウンすることを目的としていたため、動作が異なります。実際には、Full Fat IISアプリケーションプールやインフラストラクチャを実際に使用したり、依存したりすることはありません。IIS Expressの目的は、VSのおもちゃのWebサーバーが厳しく制限されているため、開発者に本物と同じ動作、フレーバー、構成を提供することでした...
Kev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.