ApplicationPoolIdentityアカウントにアクセス許可を割り当てる方法


263

Windows Server 2008上のIIS 7では、アプリケーションプールをNetworkServiceアカウントの代わりに「ApplicationPoolIdentity」アカウントとして実行できます。

この "ApplicationPoolIdentity"アカウントにアクセス許可を割り当てる方法を教えてください。マシン上のローカルユーザーとしては表示されません。グループとしてはどこにも表示されません。それのような遠隔地はどこにも現れません。ローカルユーザー、グループ、およびビルトインアカウントを参照すると、リストに表示されず、同様の項目もリストに表示されません。何が起こっている?

この問題を抱えているのは私だけではありません。例については、IIS 7.5 + Windows 7のApplicationPoolIdentityの問題を参照してください。


「これは残念ながらWindows Server 2008 / Windows Vistaのオブジェクトピッカーの制限です。数人が既に発見しているように、icaclsなどのコマンドラインツールを使用して、アプリプールIDのACLを操作できます。」

回答:


289

更新:元の質問はWindows Server 2008についてでしたが、Windows Server 2008 R2およびWindows Server 2012(およびWindows 7および8)の方が簡単です。NTFS UIから直接入力して、ユーザーを追加できます。名前はIIS APPPOOL \ {アプリプール名}の形式です。例:IIS APPPOOL \ DefaultAppPool。

IIS APPPOOL\{app pool name}

注:以下のコメントごとに、2つの注意事項があります。

  • 検索フィールドではなく、「ユーザーまたはグループの選択」に文字列を直接入力します。
  • ドメイン環境では、最初に場所をローカルコンピューターに設定する必要があります。

Microsoft Docsの記事への参照:アプリケーションプールID>リソースの保護

元の応答:(Windows Server 2008の場合)これは素晴らしい機能ですが、既に述べたように、まだ完全には実装されていません。icaclsのようなコマンドプロンプトからアプリプールIDを追加し、GUIから管理できます。たとえば、コマンドプロンプトから次のようなものを実行します。

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

次に、Windowsエクスプローラーでwwwrootフォルダーに移動し、セキュリティアクセス許可を編集します。DefaultAppPoolというグループ(グループアイコン)のように見えるものが表示されます。これで、権限を編集できます。

ただし、これを使用する必要はまったくありません。必要に応じて使用できるボーナスです。アプリプールごとにカスタムユーザーを作成し、カスタムユーザーをディスクに割り当てるという古い方法を使用できます。UIを完全にサポートしています。

このSIDインジェクション方法は、単一のユーザーを使用できるが、アプリプールごとに一意のユーザーを作成することなく、各サイトを相互に完全に分離できるため便利です。かなり印象的で、UIのサポートによりさらに良くなります。

注:アプリケーションプールユーザーが見つからない場合は、Application Host Helper ServiceというWindowsサービスが実行されているかどうかを確認してください。これは、アプリケーションプールユーザーをWindowsアカウントにマップするサービスです。


1
ユーザーがグループに住んでいるグループのようなものではなく、コンピューターアカウントとユーザーアカウントが完全に異なるようなものではないため、一種の奇妙な獣です。アプリプールアカウントは、アプリプールIDユーザーと「重複」します。たとえば、ネットワークサービスを使用する5つのアプリプールと、カスタムアカウントを使用する5つのアプリプールを持つことができますが、それらは10の異なるシステム管理アプリプールアカウントです。利点はc:\ inetpub \ temp \ appPoolsフォルダーにあります。このフォルダーは自動的に管理され、システムをきれいにロックします。IISはそれらをうまく活用しています。フォルダーでの使用はオプションです。
スコットフォーサイス

29
(IIS APPPOOL \ DefaultAppPool)を(検索ではなく)[ユーザーまたはグループの選択]に直接入力すると、アクセス許可の編集時に問題なく認識されます(Win7 x64およびWin2k8 R2 x64でテスト済み)。
ミラノガーディアン

5
あなたはWin7とWin2k8 R2に正しいです。Win2k8 RTMには実装されていませんが、R2にあります。
スコットフォーサイス

9
最後に、これは持って-あなたは@Milanガーディアンは、上記に述べている直接のようなアプリケーションプール名を入力した場合、ローカルマシン、それが作品に場所フィールドを変更
シアランBruen

4
「知っておくべき2つのこと」に感謝します。私はこれらの両方につまずいていたが、これは問題の明確かつ簡単な説明であり、必要なことを達成する方法であった。これは、MSDNのドキュメントのどれもこれほど明確ではなかったのは残念です。
イアングレインジャー

22

From this locationフィールドがlocal machineドメインではなくに設定されていることを確認する必要があります。

私は同じ問題を抱えていましたが、変更すると問題なく動作しました。


4

本当に「ロール」ごとにグループを作成し、そのグループにファイルシステムへのアクセスを割り当てる必要があります。次に、必要に応じて、アプリプールを役割固有のグループに追加します。この方法では、後でアプリプールを削除しても(そして仮想ユーザーがpoofになったとしても)、すべての権限をやり直すことを心配する必要はなく、既存のグループに置換アプリプールを追加するだけです。


3

@Scott Forsyth-MVPの回答を読んだ後、アプリケーションホストヘルパーサービスを再起動しようとしました。これで問題は解決しました。


0

WS8 R2を実行していIIS APPPOOL\DefaultAppPoolて、Windowsエクスプローラーで追加できませんでした。それが機能する唯一の方法は、コマンドライン経由でした:

cacls [ファイルパス] / T / E / G "IIS APPPOOL \ DefaultAppPool":C


2
奇妙なことに、それを受け入れるには「IIS AppPool \ DefaultAppPool」を実行する必要がありました。大文字と小文字が混在していることに注意してください-最初に行ったように、すべて大文字はGUIから受け入れられませんでした。
ジェフマクジャンキン

0

この質問がmsdbデータベースで_sp_send_dbmailを実行する方法に関するものである場合(msdbのSQL send Database Mailストアドプロシージャを使用)、次の回避策があります。データベースの.netアプリケーションユーザー名(.netアプリの接続文字列で定義)を「DatabaseMailUserRole」ロールメンバーシップを持つmsdbユーザーに追加します。

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