1. ホーム
  2. asp.net

[解決済み】IIS/ASP.NETのすべてのユーザーアカウントとその違いについて教えてください。

2022-03-29 06:55:02

質問

ASP.NET 4.0をインストールしたWindows Server 2008では、関連するユーザーアカウントが多数あり、どれがどれで、どう違うのか、また、私のアプリケーションが本当に実行されるのはどれなのか、理解できません。以下はその一覧です。

  • IIS_IUSRS
  • IUSR
  • デフォルトのAppPool
  • ASP.NET v4.0
  • ネットワークサービス
  • LOCAL SERVICE(ローカルサービス)。

何のことですか?

解決方法は?

これは非常に良い質問です。悲しいことに、多くの開発者は、Web開発者であることとIISを設定することの関連で、IIS/ASP.NETセキュリティについて十分な質問をしていないのが現状です。そこで、ここで....

記載されているIDを網羅すること。

IIS_IUSRS:

これは、昔のIIS6になぞらえたものです。 IIS_WPG というグループがあります。これは組み込みのグループで、このグループの任意のメンバーがアプリケーションプールのIDとして動作できるようにセキュリティが設定されています。

IUSR:

このアカウントは、昔の IUSR_<MACHINE_NAME> ローカルアカウントは、IIS5 および IIS6 ウェブサイトのデフォルトの匿名ユーザー (つまり、サイトのプロパティの Directory Security タブで設定されたもの) でした。

の詳細については IIS_IUSRSIUSR をご覧ください。

IIS 7 の組み込みのユーザーとグループ アカウントを理解する

DefaultAppPool:

アプリケーションプールがアプリケーションプールアイデンティティ機能を使用して実行されるように構成されている場合、quot; synthesised" という名前のアカウントが使用されます。 IIS AppPool\<pool name> は、プール ID として使用するためにその場で作成されます。この場合、合成されたアカウントとして IIS AppPool\DefaultAppPool プールの存続期間中、作成されます。プールを削除すると、このアカウントは存在しなくなる。ファイルやフォルダーにパーミッションを適用する場合、これらは IIS AppPool\<pool name> . また、これらのプールアカウントは、コンピュータのユーザーマネージャにも表示されません。詳細については、以下を参照してください。

<ブロッククオート

アプリケーションプールアイデンティティ

ASP.NET v4.0: -

ASP.NET v4.0アプリケーションプールのアプリケーションプールアイデンティティとなります。参照 DefaultAppPool 上記の

NETWORK SERVICE: -

NETWORK SERVICE アカウントは、Windows 2003 で導入された組み込みの ID です。 NETWORK SERVICE は、アプリケーションプールやWebサイトを実行するための低権限のアカウントです。Windows 2003プールで動作するWebサイトは、サイトの匿名アカウント(IUSR_または匿名IDとして設定したもの)になりすますことができます。

Windows 2008 より前の ASP.NET では、ASP.NET にアプリケーション プール アカウント (通常、.NET) で要求を実行させることができました。 NETWORK SERVICE ). あるいは、ASP.NET がサイトの匿名アカウントになりすますように <identity impersonate="true" /> の設定は web.config ファイルをローカルに作成する必要があります (その設定がロックされている場合は、管理者が machine.config ファイル)。

設定方法 <identity impersonate="true"> は、共有アプリケーションプールを使用する共有ホスティング環境で一般的です (なりすましアカウントの解除を防止するための部分的な信頼設定と併用します)。

IIS7.x/ASP.NETでは、サイトの認証設定機能でなりすまし制御が設定されるようになりました。そのため、プールIDとして実行するように設定することができます。 IUSR または特定のカスタム匿名アカウント。

LOCAL SERVICE:

LOCAL SERVICE アカウントは、サービス・コントロール・マネージャが使用する組み込みのアカウントです。このアカウントは、ローカルコンピューター上で最小限の権限しか持ちません。使用範囲はかなり限定されています。

<ブロッククオート

ローカルサービスアカウント

LOCAL SYSTEM:

これは質問されませんでしたが、念のため追加しておきます。これはローカルの組み込みアカウントです。かなり広範な権限と信頼性を持っています。WebサイトやアプリケーションプールをこのIDで実行するように設定するべきではありません。

LocalSystem アカウント

実際に使ってみて

実際には、Webサイトを保護するための好ましいアプローチは、(サイトが独自のアプリケーションプールを取得する場合 - IIS7のMMCで新しいサイトのデフォルトである)以下のように実行されます。 Application Pool Identity . これは、アプリケーションプールの詳細設定にあるサイトのIDを、以下のように設定することを意味する。 Application Pool Identity :

次に、WebサイトでAuthentication機能を設定する必要があります。

右クリックし、「Anonymous Authentication」の項目を編集します。

確保すること アプリケーション・プール・アイデンティティ" が選択されています。

ファイルおよびフォルダーのパーミッションを適用する場合、アプリケーションプールのIDに必要なすべての権限を付与します。たとえば、アプリケーション・プールの ID を ASP.NET v4.0 のプールパーミッションは、エクスプローラから実行することができます。

Check Names"ボタンをクリックします。

または ICACLS.EXE ユーティリティを使用します。

icacls c:\wwwrootmysite /grant "IIS AppPoolASP.NET v4.0":(CI)(OI)(M)

...または...サイトのアプリケーションプールが BobsCatPicBlog であれば

icacls c:\wwwrootmysite /grant "IIS AppPoolBobsCatPicBlog":(CI)(OI)(M)

これですっきりしたかと思います。

更新しました。

2009年の回答で、有用な情報がたくさん含まれている、この素晴らしい回答に出会いました。

<ブロッククオート

ローカルシステム」アカウントと「ネットワークサービス」アカウントの違いについて教えてください。