IIS7アクセス許可の概要-ApplicationPoolIdentity


356

最近、コアWebサーバーとしてIIS7にアップグレードしました。権限の概要を知る必要があります。以前は、ファイルシステムに書き込む必要がある場合、AppPoolユーザー(ネットワークサービス)にディレクトリまたはファイルへのアクセス権を与えていました。

IIS7では、デフォルトでAppPoolユーザーがに設定されていApplicationPoolIdentityます。タスクマネージャーを確認すると、「WebSite.com」というユーザーアカウントがIISプロセスを実行していることがわかります(「Website.com」はIISのWebサイトの名前です)

ただし、これを使用してアクセス許可を付与しようとすると、このユーザーアカウントは存在しません。では、どのユーザーにアクセス許可を与えるかをどのように決定すればよいでしょうか?

編集================================================= =============================

スクリーンショットの問題については、以下を参照してください。当社のウェブサイト(www.silverchip.co.uk)は、ユーザー名SilverChip.co.ukで実行されています。ただし、権限を追加すると、このユーザーは存在しません。

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

================================= AppPool画像を参照

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


2
実際、この問題に関するマイクロソフトの情報は、非常に優れたアプリケーションプールIDです
DanielV '12

回答:


680

ApplicationPoolIdentityは、実際にはIIS7 +で使用するベストプラクティスです。動的に作成された、特権のないアカウントです。特定のアプリケーションプールにファイルシステムセキュリティを追加するには、IIS.netの「アプリケーションプールID」を参照してください。クイックバージョン:

アプリケーションプールの名前が "DefaultAppPool"の場合(名前が異なる場合は、以下のテキストを置き換えてください)

  1. Windowsエクスプローラーを開く
  2. ファイルまたはディレクトリを選択します。
  3. ファイルを右クリックして「プロパティ」を選択します
  4. 「セキュリティ」タブを選択します
  5. 「編集」をクリックし、「追加」ボタンをクリックします
  6. [場所]ボタンをクリックし、ローカルマシンを選択していることを確認します。(サーバーが属している場合、Windowsドメインありません。)
  7. IIS AppPool \ DefaultAppPool」と入力します[選択するオブジェクト名を入力してください:]テキストボックスに」と入力します。(ここで "DefaultAppPool"をアプリケーションプールに付けた名前に変更することを忘れないでください。)
  8. 「名前の確認」ボタンをクリックし、「OK」をクリックします。

11
@Pino:いいえ、Webサイト名ではありません。アプリケーションプール名を使用します。各Webサイトはアプリケーションプールに割り当てられます。Webサイトのプロパティ[基本設定]ダイアログ(IIS7)でどれを確認できます。
Jon Adams

2
@Pino:その場合、使用すべきセキュリティロールはIIS AppPool\silverchip.co.ukです。ただし、セキュリティ名でピリオドを試したことはありません。句読点のないものに変更することをお勧めします。
Jon Adams

7
私はあなたが言ったようにあなたの指示に従いました。しかし、1つのハックがあります。アプリケーションプール設定でプロパティenable load user profiletrueに設定する必要があります。そして、この設定の後で初めて、アプリケーションを実行することができました。だからあなたの指示を更新し、9ポイントを追加してください。
Johnny_D 2013年

19
匿名認証のサーバー設定でもアプリケーションプールIDが使用されていることを確認してください。このソリューションは、IUSRから切り替えた直後に機能しました。
bblue

11
ここに注意してください!ユーザーインターフェイスを使用してユーザーを検索することはできませんが、ユーザーを入力する必要があります。名前を確認するだけで、実行できます。
レムコ

88

名前を解決するときは、ドメイン名ではなく、サーバーのローカル名を使用することを忘れないでください。

IIS AppPool\DefaultAppPool

(これは少しつまずきましたので注意してください):ここに画像の説明を入力してください


はい、毎回忘れてしまいました。リマインダーのジェームス・トゥーメイに感謝します!
tjans

30

IIS AppPool \ YourAppPoolNameユーザーにアクセス権を付与するだけでは、IISのデフォルト構成では不十分な場合があります。

私の場合、AppPoolユーザーを追加した後もエラーHTTPエラー401.3-Unauthorizedが発生し、IUSRユーザーに権限を追加した後にのみ修正されました。

デフォルトでは、匿名アクセスはIUSRを使用して行われるため、これが必要です。別の特定のユーザーであるアプリケーションプールを設定するか、IUSRを引き続き使用できますが、適切なアクセス許可を設定することを忘れないでください。

認証タブ

この回答のクレジット:HTTPエラー401.3-不正


3
これは重要です!!! セキュリティのために、「匿名認証」を「アプリケーションプールID」に変更する必要があります。IUSRに設定されていることには十分な理由があると思いますが、1つだけを考えることはできません。ありがとう!!!
ダン・B

これで問題が解決しました。Windows Server 2012 R2でIISのバージョンが8であることが原因である可能性があります
myroslav '25年

2
これは、受け入れられた回答に追加する必要がある重要なステップです。また、最も簡単な方法は、ラジオボックスをアプリケーションプールIDに変更することです
Sourcery

1
これは私の問題でした!ありがとうございました!!
スローンレイノルズ

28

Windows Server 2008(r2)では、[プロパティ]-> [セキュリティ]を使用して、フォルダーにアプリケーションプールIDを割り当てることはできません。ただし、次のコマンドを使用して、adminコマンドプロンプトから実行できます。

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

1
これについて少し説明してもらえますか?(R)の意味?このコマンドで実際に山括弧を入力していますか?
ケイトグレゴリー

3
こんにちはケイト、私は<>を使用して「ここにあなたのアプリプール名」を示していましたが、正当なアプリプール名のままでした。IISマネージャー->アプリケーションプールで、名前とスペースを含めて名前を一致させる必要があります。最後に行ったのは「IIS AppPool \ ClientName_CompanyName-Intranet」でした。この場合の:(R)は、読み取りアクセスを許可しています。F(フル)、M(変更)、RX(読み取り+実行)、W(書き込みのみ)も使用できます。
Chris

9
Windows Server 2008 R2のプロパティの[セキュリティ]タブで実際に割り当てることができるため、この回避策は必要ありません。オブジェクトの種類と場所で組み込みのセキュリティプリンシパルが選択されていることを確認します。
rism 2014

この答えは私にとってはうまくいきます。選択した答えは私にとってはうまくいきません。
Tuyen Nguyen 2014

3
[link] serverfault.com/questions/81165/…の選択した回答の元の応答も参照してください 。プレーンなWindows Server 2008(またはDatacenterエディション)の場合、コマンドラインを使用してアプリプールアカウントをセキュリティに入れる必要があります。ダイアログ。それができたら、それを管理したり、サブディレクトリなどのアクセス許可レベルを変更したりできます。「icacls "c:\ yourdirectory" / t / grant "IIS AppPool \ DefaultAppPool" :( OI)(CI)(R) "OI -オブジェクトの継承、CIコンテナの継承。
secretwep 2015

7

パートA:アプリケーションプールの構成

アプリケーションプールの名前が「MyPool」であるとします。IISマネージャーからアプリケーションプールの「詳細設定」に移動します。

  1. [ID]までスクロールします。値を編​​集しようとすると、ダイアログボックスが表示されます。「ビルトインアカウント」を選択し、その下で「ApplicationPoolIdentity」を選択します。

  2. 「ID」の下の数行に、「ユーザープロファイルの読み込み」が表示されます。この値は「True」に設定する必要があります。

パートB:ウェブサイトの構成

  1. ウェブサイト名:SiteName(単なる例)
  2. 物理パス:C:\ Whatever(単なる例)
  3. 次のように接続...:アプリケーションユーザー(パススルー認証)(上記の設定は、IISマネージャーのサイトの[基本設定]にあります)
  4. 基本設定を構成したら、サイトのメインコンソールの[IIS]で[認証]構成を探します。それを開く。「匿名認証」のオプションが表示されます。有効になっていることを確認してください。次に、右クリックして「編集...」します。「アプリケーションプールID」を選択します。

パートC:フォルダーの構成

問題のフォルダはC:\ Whateverです

  1. [プロパティ]-[共有]-[詳細共有]-[アクセス許可]に移動し、[このフォルダを共有する]を選択します
  2. 同じダイアログボックスに、「許可」ボタンがあります。クリックして。
  3. 新しいダイアログボックスが開きます。「追加」をクリックします。
  4. 新しいダイアログボックス「ユーザーまたはグループの選択」が開きます。[この場所から]で、名前がローカルホストコンピュータと同じであることを確認します。次に、「オブジェクト名を入力してください」の下に「IIS AppPool \ MyPool」と入力し、「名前の確認」をクリックしてから「OK」をクリックします。
  5. 「MyPool」ユーザーに完全な共有権限を付与します。それを適用し、フォルダのプロパティを閉じます
  6. フォルダのプロパティをもう一度開きます。今回は、[セキュリティ]-[詳細]-[許可]に移動し、[追加]をクリックします。上部に[プリンシパルを選択]オプション、またはユーザーを選択する他のオプションがあります。クリックして。
  7. [ユーザーまたはグループの選択]ダイアログボックスが再び開きます。手順4を繰り返します。
  8. 'MyPool'ユーザーに必要なすべての権限を付与します。
  9. 「すべての子オブジェクトのアクセス権を置き換える...」にチェックを入れ、適用して閉じます。

これで、Webサイトの閲覧を使用できるようになります。


あなたはジャングルの王様です!ありがとう
tno2007

5

Jon Adamsからのトップの回答

これは、PowerShellの人々にこれを実装する方法です

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

1

混乱を増すために、(Windowsエクスプローラー)[有効なアクセス許可]ダイアログはこれらのログインに対して機能しません。パススルー認証を使用するサイト「Umbo4」があり、サイトのルートフォルダーでユーザーの有効なアクセス許可を確認しました。名前の確認テストでは "IIS AppPool \ Umbo4"という名前が解決されましたが、有効なアクセス許可は、ユーザーがフォルダに対してまったくアクセス許可を持っていないことを示しています(すべてのチェックボックスがオフ)。

次に、[エクスプローラのセキュリティ]タブを使用して、このユーザーをフォルダから明示的に除外しました。これにより、予期したとおり、サイトがHTTP 500.19エラーで失敗しました。ただし、有効なアクセス許可は以前とまったく同じように見えました。


1

私はすべてのasp.netの問題を修正しました。パスワードを使用してIUSERと呼ばれる新しいユーザーを作成し、ネットワークサービスとユーザーグループに追加しました。次に、すべての仮想サイトとアプリケーションを作成し、パスワードを使用して認証をIUSERに設定します。IUSERとBAMを含めるように高レベルのファイルアクセスを設定し、これを含めて少なくとも3〜4の問題を修正しました。

デイブ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.