single.php

IISのアプリケーション プールのID設定について

最近の質問で応えたWindowsで実装されているIIS(インターネットインフォメーションサービス)のアプリケーションプールの詳細設定にある「ID」について備忘録的に投稿します。

IISのアプリケーションプール

アプリケーションプールは、IIS上でアプリを稼働させる場合に、避けて通ることが出来ないというか重要な技術です。

ASP.NETの他、PHPなどIIS上で利用出来るCGI系のプログラムは、このアプリケーションプールと呼ばれるプロセス上で動作させることになります。

古くは、ISAPI拡張と呼ばれるモジュールでIIS上でアプリケーションを稼働させる仕組みにしていたマイクロソフトですが、 WebサーバーとWebアプリケーションのプロセスを分離させてセキュリティと動作安定性を確保している中心が、このアプリケーション プールになります。

様々な設定項目がありますが、「マネージ パイプライン モード」と「ID」、「32ビット アプリケーションの有効化」の3点が理解できれば、大抵のトラブルには対処ができます。

今回は、この中の「ID」について説明していきます。

詳細設定のID項目

IISの管理ツールで「詳細設定」で表示される画面の「ID」の部分です。既定値では、「ApplicationPoolIdentity」が設定されています。

単純に説明すると、「IISで動作させるアプリケーションをWindowsのどのユーザの権限で動作させるかという設定」です。

例えば、あるアプリケーションで扱うファイルをWindows上のフォルダに保存する場合を考えてみます。

アプリケーションプールの設定を既定値(ApplicationPoolIdentity)で動作させてもエラーなく保存ができます。

これは、Windowsのセキュリティに、このアプリケーションプールを動作させるユーザアカウントが組み込まれているためで、セキュリティを意識せずに利用することができます。

実際に、エクスプローラーでユーザーアカウントのフォルダ(例 C:\Users)を開いてみると、アプリケーションプールの名前が付けられたサブフォルダが(DefaultAppPoolなど)が作られていることが分かります。

実行権限によるトラブル

アプリケーションプールの権限機能は非常に便利な機能なんですが、特殊な権限が付けられたフォルダにアクセスする場合に、トラブルやエラーが発生します。

例えば、管理者(Administratorなど)権限のみに限定されたフォルダにアクセスする場合、フォルダに「アプリケーションプール」がアクセスできない状態で、IISアプリからファイルを保存しようとするとエラーになります。

当然ですよね。原理が分かっていれば、対処としては保存しようとするフォルダーに適切なアクセス権を設定することで対処ができます。

IDの変更

既定値を変更して、アプリケーションプールに別のユーザーアカウントを設定することができます。

具体的には詳細設定の「ID」項目の[…]クリックして表示される「アプリケーション プール ID」画面で変更することができます。

「ビルトイン アカウント」と「カスタム アカウント」の2種類から選択することができます。

ビルトインアカウントには、既定値の「ApplicationPoolIdentity」の他に「LocalService」「LocalSystem」、「NetworkService」の4種類がプリセットされてます。

いわゆるシステムアカウントと言われるアカウントで、Windowsセットアップ時に、最初からできているアカウントです。

詳しい権限はユーザーマネージャーなどで確認するとして、管理権限ほど強くはないですが、システムの設定を変更できてしまう重要なアカウントになるので、設定する場合には注意してください。

カスタムアカウントには、Windowsをセットアップ後に追加した任意のアカウントを設定することができます。

「設定」ボタンをクリックすると「資格情報の設定」画面が表示されるので、アカウントとパスワードを入力することでアプリケーションプールの実行アカウントとして設定することができます。

カスタムアカウントを設定した場合には、アプリケーションプールは、そのアカウントでログインした状態で実行されるので、Webアプリケーション上で、デスクトップやマイドキュメントのファイルを取り扱ったり、設定されたプリンタ情報にアクセスすることも出来ます。

まとめ

IIS上でアプリケーションを動作させる場合のトラブルとして、フォルダーや各種資源へのアクセス権があります。

アプリケーションプールを実行しているアカウントへのアクセス権が不足している場合が多いので、権限を確認して追加を行うかカスタムアカウント(例えば、自分自身)を設定して、動作が改善するか試すことでアクセス権によるエラーを確認することができます。

次回は、残りの「マネージ パイプライン モード」と「32ビット アプリケーションの有効化」について投稿していきます。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です