web-dev-qa-db-ja.com

IIS 8でのIIS_IUSRSおよびIUSRのアクセス許可

ASP.NETアプリケーションをホストするために、Win2003のIIS 6からWin 2012のIIS 8に移行しました。

私のアプリケーションの1つの特定のフォルダ内で、ファイルの作成と削除が必要です。ファイルを新しいサーバーにコピーした後、ファイルを削除しようとしたときに次のエラーが表示され続けました。

パス「D:\ WebSites\myapp.co.uk\companydata\filename.pdf」へのアクセスが拒否されました。

IISをチェックすると、アプリケーションがDefaultAppPoolアカウントで実行されていることがわかりますが、 IIS AppPool\DefaultAppPool を含めるようにWindowsのアクセス許可を設定することはありません。

代わりに、顧客への叫び声を止めるために、フォルダに対する次のアクセス許可を与えました。

IUSR

  • 読み取りと実行
  • フォルダの内容の一覧表示
  • 読む
  • 書きます

IIS_IUSRS

  • 修正する
  • 読み取りと実行
  • フォルダの内容の一覧表示
  • 読む
  • 書きます

これはうまくいったようですが、あまりにも多くの特権が設定されているのではないかと心配です。私はIUSRが実際に必要なのかどうかについての矛盾する情報をオンラインで読んでいます。このフォルダの文書を作成および削除するのに十分なユーザー/権限を明確にしてください。また、IUSRはIIS_IUSRSグループの一員ですか?

更新と解決策

下の 私の答えを見てください 。最近のいくつかの提案がよく考えられていなかったり、安全でさえなかったので(IMO)、私は悲しいことにこれをしなければなりませんでした。

124
EvilDr

私は自分の答えを投稿するのは嫌いですが、最近私が自分の質問で投稿した解決策を無視している回答もあり、これは絶対に賢い方法ではないことを示唆しています。

手短に言えば - Windowsユーザーアカウントの特権を編集する必要はまったくありません。そうすることはリスクをもたらすだけです。プロセスは、継承された特権を使用してIISで完全に管理されています。

正しいユーザーアカウントに変更/書き込み権限を適用する

  1. [サイト]リストの下に表示されたドメインを右クリックし、[アクセス許可の編集]を選択します。

    enter image description here

    セキュリティタブの下に、MACHINE_NAME\IIS_IUSRSがリストされているのがわかります。これは、IISが自動的にそのディレクトリに対する読み取り専用権限を持つことを意味します(たとえば、サイトでASP.Netを実行するため)。 このエントリを編集する必要はありません

    enter image description here

  2. 編集ボタンをクリックし、次に追加...

  3. テキストボックスに、MyApplicationPoolNameをドメイン名に置き換えて、IIS AppPool\MyApplicationPoolNameを入力します。 IIS AppPool\mydomain.com

    enter image description here

  4. 名前の確認ボタンを押します。入力したテキストが変形します(下線に注意)。

    enter image description here

  5. ユーザーを追加するにはOKを押します

  6. 新しいユーザー(あなたのドメイン)を選択した状態で、変更または書き込みのアクセス許可を安全に提供できます。

    enter image description here

127
EvilDr

IUSRはIIS_IUSERグループの一部です。だから、心配せずにIUSRのアクセス許可を削除できると思います。 さらに読む

しかし、ますます多くのWindowsシステムサービスがNETWORKSERVICEとして実行されるようになるにつれて、時間の経過とともに問題が発生しました。これは、NETWORKSERVICEとして実行されているサービスが、同じIDで実行されている他のサービスを改ざんする可能性があるためです。 IISワーカープロセスはデフォルトでサードパーティコード(Classic ASP、ASP.NET、PHP code)を実行するため、IISワーカープロセスを分離する時が来ました。他のWindowsシステムサービスを実行し、IISワーカープロセスを一意のIDで実行します。 Windowsオペレーティングシステムは、IISが各アプリケーションプールに対して一意のIDを作成することを可能にする「仮想アカウント」と呼ばれる機能を提供します。 DefaultAppPoolは、作成したすべてのアプリケーションプールに割り当てられるデフォルトのプールです。

より安全にするために、IIS DefaultAppPool IdentityをApplicationPoolIdentityに変更できます。

許可に関しては、作成および削除は与えられることができるすべての権利を要約します。だからあなたがIIS_USERSグループに割り当てたものは何でも彼らが必要とするということです。それ以上、それ以下もない。

お役に立てれば。

48
Travis G

IIS_IUSRS権限をサイトフォルダに追加したとき - jsやcssのようなリソースはまだアクセスできない(エラー401、禁止)。しかし、私がIUSRを追加したとき - それは大丈夫になりました。そのため、「心配せずにIUSRのアクセス許可を削除することはできません」と、@ Travis G @様

5
Alexander

@EvilDr AD環境内にIUSR_ [識別子]アカウントを作成し、そのIUSR_ [識別子]アカウントで特定のアプリケーションプールを実行することができます。

[アプリケーションプール]> [詳細設定]> [ID]> [カスタムアカウント]

[詳細設定]で、Webサイトを[特定のユーザー]ではなく[アプリケーションユーザー(パススルー認証)]に設定します。

ここで、そのIUSR_ [identifier]にファイルとフォルダーに対する適切なNTFS許可を与えます。例えば、companydataで変更します。

3
Jan Reilink

IIS_IUSRSグループは、ApplicationPool Identityを使用している場合にのみ目立ちます。実行時にこのグループが空のように見える場合でも、Microsoftの文献によると、ワーカープロセスを実行するためにIISがこのグループに追加されます。

2
Ashburn RK

私は特定のユーザー(そしてアプリケーションユーザーではない)を使用します。それから私はアプリケーションで偽装を有効にします。特定のユーザーとして設定されたアカウントであれば、それらの資格情報はそのサーバー上のローカルリソースにアクセスするために使用されます(外部リソース用ではありません)。

特定のユーザー設定は、ローカルリソースにアクセスするためのものです。

0
developer747