[解決済み] IISのAppPoolIdentityとファイルシステムの書き込みアクセス権
質問
IIS 7.5とASP.NETに関する問題で、これまで調べても解決しなかったことがあります。何か助けがあれば、とてもありがたいです。
私の質問は、IIS 7.5 で ASP.NET を使用して、IIS および/またはオペレーティング システムが、Web アプリケーションが次のようなフォルダに書き込むことを許可する方法です。
C:\dump
完全な信頼関係のもとで実行されているのでしょうか?アプリケーションプールユーザーに明示的に書き込み権限を追加する必要がないのはなぜでしょうか(この場合は
ApplicationPoolIdentity
)?
これだけはわかる。
-
IIS 7.5では、アプリケーションプールのデフォルトのIdentityは
ApplicationPoolIdentity
. -
ApplicationPoolIdentity
は、アプリケーションプールの作成時に作成される、"IIS APPPOOLttpoolName"というWindowsユーザーアカウント(AppPoolNameはアプリケーションプールの名前)を表します。 -
IIS APPPOOL
のユーザーは、デフォルトで IIS_IUSRS
グループに所属しています。 -
完全信頼の下で実行している場合、Webアプリケーションはファイルシステムの多くの領域に書き込むことができます。
C:\Users
,C:\Windows
など)。例えば、あなたのアプリケーションは、次のようないくつかのフォルダに書き込むアクセス権を持っています。C:\dump
. -
デフォルトでは
IIS_IUSRS
グループには、読み取りまたは書き込みのアクセス権が与えられません。C:\dump
(少なくともWindowsエクスプローラーの[セキュリティ]タブから見えるアクセスではありません)。 -
への書き込みアクセスを拒否した場合
IIS_IUSRS
の場合、そのフォルダに書き込もうとすると SecurityException が発生します (予想通り)。
では、これらのことを考慮した上で、"IIS APPPOOL﹑AppPoolName" ユーザーへの書き込みアクセスはどのように許可されているのでしょうか。w3wp.exeプロセスはこのユーザーとして実行されるので、このユーザーが明示的なアクセス権を持っていないフォルダに書き込むことができるのはなぜでしょうか?
完全な信頼関係の下で実行している場合、書き込みが必要なすべてのフォルダーへのアクセスをユーザーに許可するのは面倒なので、これはおそらく利便性のために行われたと理解していることに留意してください。このアクセスを制限したい場合は、常にMedium Trustの下でアプリケーションを実行することができます。私は、明示的なファイル システム アクセスが付与されていないように見えるにもかかわらず、オペレーティング システムと IIS がこれらの書き込みを許可する方法について調べることに関心があります。
解決方法は?
その
ApplicationPoolIdentity
のメンバーシップが割り当てられます。
Users
グループと同様に
IIS_IUSRS
というグループです。一見すると、これはやや心配に見えるかもしれません。
Users
グループは、NTFSの権限がやや制限されています。
例えば、フォルダを作成しようとすると
C:\Windows
フォルダーを使用すると、それができないことがわかります。そのため
ApplicationPoolIdentity
Windows システムフォルダからファイルを読み込める必要があります (そうでなければ、ワーカープロセスで必要な DLL を動的にロードすることができません)。
への書き込みが可能かどうかという点については、「1.
c:\dump
フォルダーを使用します。セキュリティの詳細設定のパーミッションをご覧いただくと、以下のようになります。
から継承されている特別な許可を見てください。
c:\
:
それが、あなたのサイトの
ApplicationPoolIdentity
を読み取ることができ
書く
をそのフォルダにコピーします。その権利は
c:\
ドライブを使用します。
数百のサイトがあり、それぞれにアプリケーションプールとアプリケーションプールアイデンティティがある共有環境では、サイトフォルダは、アプリケーションプールアイデンティティを持つフォルダまたはボリュームに格納されます。
Users
グループを削除し、AdministratorsとSYSTEMアカウントのみがアクセスできるように権限を設定します(継承あり)。
その後、それぞれの
IIS AppPool\[name]
は、そのサイトのルート・フォルダーに必要です。
また、潜在的な機密ファイルやデータを保存するために作成したフォルダには、必ず
Users
グループは削除してください。また、インストールしたアプリケーションが、機密データをその
c:\program files\[app name]
フォルダを使用し、代わりにユーザープロファイルフォルダを使用するようにしました。
そうそう、一見すると
ApplicationPoolIdentity
には必要以上の権限がありますが、実際にはグループメンバーシップで決められた以上の権限はありません。
某
ApplicationPoolIdentity
のグループメンバーシップを調べるには、SysInternals の
プロセスエクスプローラーツール
. 興味のあるアプリケーションプールアイデンティティで実行されているワーカープロセスを検索します。
User Name
カラムを表示するようにします。
例えば、ここに
900300
のアプリケーションプールアイデンティティを持っています。
IIS APPPOOL\900300
. このプロセスのプロパティを右クリックして、セキュリティタブを選択すると、次のようになります。
このように
IIS APPPOOL\900300
は
Users
というグループがあります。
関連
-
.netcoreプロジェクトでIStartupFilterを使用するためのチュートリアル
-
.NET開発サーバー アプリケーション管理ツール
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] クライアントから危険な可能性のあるRequest.Formの値が検出された
-
[解決済み] web.configでmaxJsonLengthの長さを無制限に設定することは可能ですか?
-
[解決済み] IIS7 権限の概要 - ApplicationPoolIdentity
-
[解決済み】IIS 7.5でASP.NET MVCを動作させる。
-
[解決済み] IIS8におけるIIS_IUSRSとIUSRのパーミッションについて
-
[解決済み] Razor _layout.cshtml のファイル名の先頭にアンダースコアがあるのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ASP.NET Core 6で依存関係を解決する3つの方法
-
30分でわかるコング経由の.NETゲートウェイ
-
非同期タスクキャンセルと監視のネット実装
-
[解決済み] Server Error in '/' Application」エラーの解決方法を教えてください。
-
[解決済み] crossdomain.xmlファイルとは何ですか?
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] データ入力後に文字列をトリミングする最適な方法。モデルバインダーをカスタムで作成した方が良いですか?
-
[解決済み] Razorとインラインコードブロックによるif文の使用方法
-
[解決済み] IIS8におけるIIS_IUSRSとIUSRのパーミッションについて
-
[解決済み] .Netが間違った参照アセンブリのバージョンを選択する