web-dev-qa-db-ja.com

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

私たちは最近コアWebサーバーとしてIIS 7にアップグレードしました、そして私はパーミッションの観点から概観が必要です。以前は、ファイルシステムに書き込む必要があるときは、AppPoolユーザー(Network Service)にディレクトリまたはファイルへのアクセス権を付与していました。

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

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

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

スクリーンショットの問題については以下を参照してください。当社のウェブサイト(www.silverchip.co.uk)は、ユーザー名SilverChip.co.ukで運営されています。しかし、私が軽蔑を加えるとき、このユーザーは存在しません!

enter image description here

============================== AppPoolの画像を参照してください。

enter image description here

325
LiamB

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

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

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

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

IIS AppPool\DefaultAppPool

(これはちょっとの間私をつまずいたのでちょっとした注意):enter image description here

71
James Toomey

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

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

IIS AppPool\YourAppPoolName user へのアクセスを許可するだけでは不十分な場合があります IISデフォルトの設定で。

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

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

authentication tab

この答えのクレジット: HTTPエラー401.3 - 無許可

24
Zanon

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
3
Chris Mills

パートA:アプリケーションプールの設定

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

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

  2. 'Identity'の数行下に、 'Load User Profile'があります。この値は 'True'に設定する必要があります。

パートB:あなたのウェブサイトの設定

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

パートC:フォルダの設定

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

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

これでウェブサイトを閲覧することができるはずです。

3

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

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

1
StuartN

私は、パスワードを使ってIUSERという新しいユーザーを作成し、それにネットワークサービスとユーザーグループを追加することによって、私のasp.net問題をすべて解決しました。それからすべての仮想サイトとアプリケーションを作成し、そのパスワードで認証をIUSERに設定します。IUSERとBAMを含むように高レベルのファイルアクセスを設定します。

デイブ

1
David Granic