IIS AppPoolIdentity とファイル システムの書き込みアクセス許可 質問する

IIS AppPoolIdentity とファイル システムの書き込みアクセス許可 質問する

IIS 7.5 と ASP.NET に関する問題があり、調査していますが、解決に至っていません。ご協力いただければ幸いです。

私の質問は、IIS 7.5 で ASP.NET を使用する場合、IIS やオペレーティング システムはどのようにして、完全な信頼の下で実行されているときのように、Web アプリケーションがフォルダーに書き込むことを許可するのでしょうか。アプリケーション プール ユーザー (この場合は)C:\dumpに書き込みアクセスを明示的に追加する必要がないのはなぜでしょうか。ApplicationPoolIdentity

私が知っているのはこれだけです。

  • IIS 7.5 では、アプリケーション プールの既定の ID は ですApplicationPoolIdentity
  • ApplicationPoolIdentity「IIS APPPOOL\AppPoolName」という Windows ユーザー アカウントを表します。これは、アプリケーション プールの作成時に作成されます。ここで、AppPoolName はアプリケーション プールの名前です。
  • 「IIS APPPOOL\AppPoolName」ユーザーは、デフォルトでグループのメンバーになりますIIS_IUSRS
  • Full Trust で実行している場合、Web アプリケーションはファイル システムの多くの領域に書き込むことができます ( C:\UsersC:\Windowsなどのフォルダーは除く)。たとえば、アプリケーションには、などの一部のフォルダーへの書き込みアクセス権が付与されますC:\dump
  • デフォルトでは、IIS_IUSRSグループには読み取りまたは書き込みアクセス権は付与されませんC:\dump(少なくとも、Windows エクスプローラーの [セキュリティ] タブに表示されるアクセス権は付与されません)。
  • への書き込みアクセスを拒否するとIIS_IUSRS、フォルダーへの書き込みを試行したときに SecurityException が発生します (予想どおり)。

では、これらすべてを考慮すると、「IIS APPPOOL\AppPoolName」ユーザーに書き込みアクセスはどのように付与されるのでしょうか? w3wp.exe プロセスはこのユーザーとして実行されますが、このユーザーが明示的なアクセス権を持っていないと思われるフォルダーに書き込むことを許可するのは何でしょうか?

完全な信頼で実行している場合、書き込みが必要なすべてのフォルダーへのユーザー アクセスを許可するのは面倒なので、これはおそらく利便性のために行われたと理解しています。このアクセスを制限したい場合は、いつでもアプリケーションを中程度の信頼で実行できます。明示的なファイル システム アクセスが許可されていないように見える場合でも、オペレーティング システムや IIS がこれらの書き込みを許可する方法について知りたいです。

ベストアンサー1

には、グループとグループApplicationPoolIdentityのメンバーシップが割り当てられます。一見すると、これは少し心配に思えるかもしれませんが、グループには NTFS 権限が多少制限されています。UsersIIS_IUSRSUsers

たとえば、C:\Windowsフォルダー内にフォルダーを作成しようとすると、作成できないことがわかります。WindowsApplicationPoolIdentityシステム フォルダーからファイルを読み取ることができる必要があります (そうでない場合、ワーカー プロセスはどのようにして重要な DLL を動的に読み込むことができるでしょうか)。

フォルダーへの書き込みが可能であるというご意見に関してですが、c:\dump高度なセキュリティ設定の権限を確認すると、次のようになります。

ここに画像の説明を入力してください

特別な権限が以下から継承されていることを確認しますc:\:

ここに画像の説明を入力してください

これが、サイトがそのフォルダのApplicationPoolIdentity読み取りと書き込みを行える理由です。その権限はドライブから継承されますc:\

数百のサイトがあり、それぞれに独自のアプリケーション プールとアプリケーション プール ID がある共有環境では、グループがUsers削除され、管理者と SYSTEM アカウントのみがアクセスできるようにアクセス許可が設定されたフォルダーまたはボリュームにサイト フォルダーを保存します (継承を使用)。

IIS AppPool\[name]次に、各サイトのルート フォルダーに必要な権限を個別に割り当てます。

また、機密性の高いファイルやデータを保存するフォルダーを作成する場合は、グループが削除されていることを確認する必要があります。また、インストールするアプリケーションがフォルダーに機密データを保存せず、代わりにユーザー プロファイル フォルダーを使用していることUsersを確認する必要があります。c:\program files\[app name]

確かに、一見すると、ApplicationPoolIdentity必要以上の権限を持っているように見えますが、実際には、グループのメンバーシップで規定されている以上の権限はありません。

のグループメンバーシップApplicationPoolIdentityはSysInternalsを使用して調べることができます。プロセスエクスプローラーツール関心のあるアプリケーション プール ID で実行されているワーカー プロセスを見つけます (User Name表示する列のリストに列を追加する必要があります)。

ここに画像の説明を入力してください

たとえば、ここに という名前のプールがあり900300、そのアプリケーション プール ID は ですIIS APPPOOL\900300。プロセスのプロパティを右クリックし、[セキュリティ] タブを選択すると、次の画面が表示されます。

ここに画像の説明を入力してください

ご覧のとおり、グループIIS APPPOOL\900300のメンバーですUsers

おすすめ記事