web-dev-qa-db-ja.com

ApplicationPoolIdentityアカウントに権限を割り当てる方法

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

この「ApplicationPoolIdentity」アカウントにアクセス許可を割り当てるにはどうすればよいですか。マシンのローカルユーザーとしては表示されません。グループとしてどこにも表示されません。それのように遠くにあるようなものはどこにも現れません。ローカルユーザー、グループ、およびビルトインアカウントを参照しても、リストに表示されず、同様のものがリストに表示されません。何が起こっている?

この問題を抱えているのは私だけではありません。ApplicationPoolIdentityのトラブルIIS 7.5 + Windows 7例を示します。


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

266
Triynko

更新:元の質問は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インジェクション方法は、1人のユーザーを使用できるが、各アプリプールに固有のユーザーを作成する必要なく、各サイトを互いに完全に分離できるので、すばらしいです。かなり印象的で、UIサポートがあればさらに良くなります。

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

291

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

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

24
Alan

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

4
Jimbo

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

3
Roger

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

0
Muhamad Faried

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

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

0
Denis Tse