ASP.NET の部分的な信頼でアプリケーションの分離が保証されない

文書翻訳 文書翻訳
文書番号: 2698981 - 対象製品
すべて展開する | すべて折りたたむ

目次

はじめに

ASP.NET では、管理者は、中程度の信頼などの部分的な信頼のモードでアプリケーションをホストできます。また、カスタム ポリシー ファイルにより、カスタムの部分的な信頼のレベルを構成することもできます。ASP.NET 2.0 で中程度の信頼を使用する方法の詳細については、以下の MSDN (Microsoft Developer Network) Web ページを参照してください。
How To: ASP.NET 2.0 で中程度の信頼を使用する方法
以前、マイクロソフトは、ASP.NET の部分的な信頼を、信頼のレベルが異なる複数のアプリケーションが同一の Web サーバーでホストされる共有ホスト環境で、アプリケーションの分離を強制するためのメカニズムとして説明していました。マイクロソフトは、部分的な信頼で ASP.NET ページ フレームワーク アプリケーションを実行しても、同じプロセスまたは同じコンピューターで実行されている他のアプリケーションからの完全な分離が保証されないという事実を反映するために、部分的な信頼に関するガイダンスを更新しています。

同一の Web サーバー上の他の ASP.NET ページ フレームワーク アプリケーションからの分離を保証する推奨手順としては、(個別のアプリケーション プールを使用して) 独立した権限の低いプロセスで実行されるように ASP.NET ページ フレームワーク アプリケーションを構成します。以下のセクションでは、分離を実現するためにアプリケーションを構成する方法の詳細を説明します。マイクロソフトは、この資料に概要が記載されているポリシーの変更を反映するため、他のドキュメントの更新作業を行っています。

詳細

サーバー管理者は、共有ホスト環境でアプリケーションが分離されるようにするには、この資料のガイドラインを適用する必要があります。これらのガイドラインは、Windows Server 2003 SP2 以降での ASP.NET のホスティングに適用されます。ガイドラインの対象は、インターネット インフォメーション サービス (IIS) 6.0 〜 7.5 です。

この資料に記載されている作業の多くは、IIS 7 および 7.5 で AppCmd.exe IIS コマンド ライン ツールを使用するか、IIS 6.0 で IIS 管理スクリプトを使用すると自動化できます。

独立した IIS サイトにアプリケーションを配置する方法

共有ホスト環境では、アプリケーションを独立した IIS サイトに配置する必要があります。アプリケーションを独立した IIS サイトに配置すると、アプリケーション間で構成をより適切に分離できます。また、.NET Framework CLR ホストが独立したものになります。これにより、そのレベルでの分離が改善されます。

独立したサイトに各アプリケーションを配置するには、以下の手順を実行します。

インターネット インフォメーション サービス 6.0 (Windows Server 2003 SP2) の場合

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. 左側のウィンドウで、現在のサーバーのノードを展開します。
  3. [Web サイト] ノードを右クリックし、[新規作成] をクリックし、[Web サイト] をクリックします。
  4. [次へ] をクリックします。
  5. 新しい Web サイトの一意の名前を入力し、[次へ] をクリックします。
  6. ホスト環境のサイトのバインドを構成します。
  7. アプリケーション ファイルが格納されているフォルダーの物理パスを入力します。
  8. [ASP などのスクリプトを実行する] チェック ボックスをオンにし、[次へ] をクリックします。
  9. [完了] をクリックします。[Web サイト] ノードに新しいサイトが表示されます。

インターネット インフォメーション サービス 7 (Windows Vista SP2 および Windows Server 2008 SP1) およびインターネット インフォメーション サービス 7.5 (Windows 7 および Windows Server 2008 R2) の場合

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. [接続] ウィンドウで、現在のサーバーのノードを展開します。
  3. [サイト] ノードを選択し、[操作] ウィンドウで [Web サイトの追加] リンクをクリックします。
  4. [Web サイトの追加] ダイアログ ボックスで、新しい Web サイトの一意の名前を入力し、アプリケーション ファイルが格納されているフォルダーの物理パスを入力します。既定では、サイトと同じ名前を持つ新しいアプリケーション プールが作成され、サイトはこのアプリケーション プールを使用するように構成されます (これが推奨構成です)。
  5. ホスト環境のサイトのバインドを構成します。
  6. [Web サイトを直ちに開始する] チェック ボックスをオフにし、この資料に概要が記載されている分離のガイドラインが完了するまで、サイトを使用できないようにします。
  7. [OK] をクリックします。[接続] ウィンドウの [サイト] ノードに、構成されたサイトが表示されます。

独立したアプリケーション プールにサイトを配置する方法

共有ホスト環境では、独立したアプリケーション プールにアプリケーションを配置する必要があります。これにより、固有の ID を持つ独立したオペレーティング システム プロセスにアプリケーションを分離できます。また、あるサイトと別のサイトを、あるレベルで分離できます (次のセクションでは、分離を実現するためにアプリケーション プールの ID を構成する方法を説明します)。

インターネット インフォメーション サービス 6.0 (Windows Server 2003 SP2) の場合

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. 左側のウィンドウで、現在のサーバーのノードを展開します。
  3. [アプリケーション プール] を右クリックし、[新規作成] をクリックし、[アプリケーション プール] をクリックします。
  4. 新しいアプリケーション プールの一意の名前を入力し、[OK] をクリックします。
  5. [Web サイト] ノードを展開します。
  6. 対象の Web サイトを右クリックし、[プロパティ] をクリックします。
  7. [ホーム ディレクトリ] タブをクリックします。
  8. ダイアログ ボックスの下部にある [アプリケーション プール] フィールドで、新しいアプリケーション プールを選択します。
  9. [OK] をクリックします。

インターネット インフォメーション サービス 7 (Windows Vista SP2 および Windows Server 2008 SP1) およびインターネット インフォメーション サービス 7.5 (Windows 7 および Windows Server 2008 R2) の場合

「独立した IIS サイトにアプリケーションを配置する方法」セクションの手順を実行した後、新しいサイトは、新しい独立したアプリケーション プールに自動的に配置されます。ただし、新しい独立したアプリケーション プールを使用するように既存のサイトを構成する必要がある場合は、以下の手順を実行します。
  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. [接続] ウィンドウで、現在のサーバーのノードを展開します。
  3. [アプリケーション プール] ノードを選択します。
  4. [操作] ウィンドウの [アプリケーション プールの追加] リンクをクリックします。
  5. 新しいアプリケーション プールの一意の名前を入力し、対象の .NET Framework のバージョンとパイプライン モードを選択します。
  6. [OK] をクリックします。一覧に新しいアプリケーション プールが表示されます。
  7. [接続] ウィンドウで、[サイト] ノードを展開します。
  8. この手順で既に作成したアプリケーション プールに移動させるサイトを選択します。
  9. [操作] ウィンドウの [基本設定] リンクをクリックします。
  10. [サイトの編集] ダイアログ ボックスで、[選択] をクリックします。
  11. [アプリケーション プール] 一覧で、既に作成したアプリケーション プールを選択します。
  12. [OK] をクリックします。
[サイトの編集] ダイアログ ボックスで、[OK] をクリックします。

分離を実現するためにアプリケーション プールを構成する方法 (プロセス ID)

アプリケーション プールは、Windows のプロセス (複数の場合あり) でアプリケーションとサイトをホストします。プロセスが実行される ID を構成することができます。共有ホスト環境では、アプリケーションごとに独立した ID が必要です。独立した ID により、各アプリケーションは一意のアカウントのコンテキストで実行されるようになります。これにより、ファイル システムの DACL (随意アクセス制御リスト) および基本のオペレーティング システムに組み込まれたプロセス分離の機能を使用して、適切に分離を行うことが可能になります。ユーザー アカウントを作成して、そのアカウントを使用するようにアプリケーション プールを割り当てるには、以下の手順を実行します。

インターネット インフォメーション サービス 6.0 (Windows Server 2003 SP2) の場合

アプリケーション プールの ID として使用するローカル ユーザー アカウントを作成する
  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. 左側のウィンドウで、[ローカル ユーザーとグループ] を展開します。
  3. [ユーザー] ノードを右クリックし、[新しいユーザー] をクリックします。
  4. 新しいユーザー アカウント用の一意の名前と強力なパスワードを入力します。
  5. [ユーザーは次回ログオン時にパスワード変更が必要] チェック ボックスをオフにします。
  6. [ユーザーはパスワードを変更できない] チェック ボックスをオンにします。
  7. [作成] をクリックし、[閉じる] をクリックします。
  8. 左側のウィンドウで、[ユーザー] ノードを選択します。一覧に新しいアカウントが表示されます。
新しいローカル ユーザー アカウントを使用するようにアプリケーション プールを構成する
  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. 左側のウィンドウで、現在のサーバーのノードを展開します。
  3. [アプリケーション プール] ノードを展開します。
  4. 対象のアプリケーション プールを右クリックし、[プロパティ] をクリックします。
  5. [ID] タブをクリックします。
  6. [構成可能] オプション ボタンをオンにします。
  7. 新しいアカウントのユーザー名とパスワードを入力します。
  8. [OK] をクリックします。
  9. [パスワードの確認] ダイアログ ボックスで再度パスワードを入力して、[OK] をクリックします。

インターネット インフォメーション サービス 7 および 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 および Windows Server 2008 R2) の場合

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
  2. [接続] ウィンドウで、現在のサーバーのノードを展開します。
  3. [アプリケーション プール] ノードを選択します。
  4. 対象のアプリケーション プールを選択します。
  5. [操作] ウィンドウの [詳細設定] リンクをクリックします。
  6. [プロセス モデル] セクションで、[ID] プロパティを [ApplicationPoolIdentity] に設定します。この設定により、このアプリケーション プール用の一意の ID が自動的に作成されます。以下のセクションでは、この一意の ID を使用すると、アプリケーションでアクセスする必要があるファイルの場所に対して、DACL (随意アクセス制御リスト) を設定できます。
  7. [OK] をクリックします。

アプリケーション コンテンツの場所に対して DACL を構成する方法

DACL (随意アクセス制御リスト) とは、オブジェクトに関連付けられ、オブジェクトへのアクセスの制御に使用できる、アクセス許可のリストです。DACL を使用してアプリケーション コンテンツへのアクセスを制限すると、同一の Web サーバー上でホストされるサイト間の分離を強化できます。ACL および IIS の ID の詳細については、「ファイル システムの ACL を介した IIS のコンテンツのセキュリティ保護 (英語)」を参照してください。

IIS のすべてのバージョン

  1. コマンド プロンプトまたはエクスプローラーで、サイト コンテンツのルート フォルダーを開きます。
  2. 以下のいずれかの方法を使用して、この場所への管理者以外のアクセスのエントリを削除します (これには Users グループが含まれます)。
    • エクスプローラーで、フォルダーを右クリックし、[プロパティ] を選択し、[セキュリティ] タブをクリックし、アクセス制御リストを変更します。
    • コマンド プロンプトで、icacls.exe ユーティリティ (または古いバージョンの Windows オペレーティングシステムでは cacls.exe) を使用して、アクセス制御リストを変更します。
  3. サイトに対して選択したプロセス ID 用の新しいエントリを追加します。
  4. フォルダーに、新しい ID の "読み取りと実行" アクセス許可を付与します。
アプリケーションによる書き込みのアクセス許可が必要である特定のフォルダー ("Uploads" フォルダーなど) が存在する場合は、以下の手順を実行します。

インターネット インフォメーション サービス 6.0 (Windows Server 2003 SP2) の場合

  1. エクスプローラーで、フォルダーを右クリックし、[プロパティ] を選択し、[セキュリティ] タブをクリックし、プロセス ID の [変更] アクセス許可を追加します。
  2. 静的コンテンツ (画像やテキスト ファイルなど) が含まれるフォルダーに対しては、以下の手順を実行します。
    1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。
    2. 左側のウィンドウで、適切なフォルダー名を右クリックし、[プロパティ] をクリックします。
    3. [ディレクトリ] タブをクリックします。
    4. [実行アクセス権] 一覧で、[なし] を選択します。

インターネット インフォメーション サービス 7 および 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 および Windows Server 2008 R2) の場合

  1. エクスプローラーで、フォルダーを右クリックし、[プロパティ] を選択し、[セキュリティ] タブをクリックし、プロセス ID の [変更] アクセス許可を追加します。
  2. 静的コンテンツ (画像やテキスト ファイルなど) が含まれるフォルダーに対しては、次のように、accessPolicy 設定でスクリプトのアクセス許可を禁止する場所に関する、"web.config" ファイル エントリを追加します。
    <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>

Temporary ASP.NET Files フォルダーの場所を構成する方法、およびサイトごとに DACL を設定する方法

ASP.NET には、コンパイル済みファイルなどの一時データを格納するための、サーバー上の場所が必要です。これは、通常は Temporary ASP.NET Files というフォルダーです。既定では、このフォルダーは .NET Framework がインストールされているフォルダーの下にあります。サイトごとに異なる一時的な場所を割り当て、個別にフォルダーのセキュリティを保護すると、同一の Web サーバー上でホストされるサイト間の分離を適切に強化できます。Temporary ASP.NET Files フォルダーの詳細については、「ASP.NET の動的コンパイルの概要」を参照してください。

サイトごとに異なる Temporary ASP.NET Files フォルダーの場所を構成する方法

  1. サイト用の一時的な ASP.NET のファイルを格納するために、サイトごとに新しいフォルダーを作成します。一時ファイルを格納するには、システム ドライブではないドライブを使用することをお勧めします。
  2. サーバーのルートの web.config ファイルまたは applicationHost.config ファイルで、次のように <location> 要素を使用して、その特定のサイト用に新しいフォルダーの場所を指定する設定を追加します。
    <configuration> <location path="path"> <system.web> <compilation tempDirectory="temp-files-path" /> </system.web> </location> <!-- and so on --> </configuration>

Temporary ASP.NET Files フォルダーの場所に対して適切な DACL を設定する方法

  1. コマンド プロンプトまたエクスプローラーを使用して、この場所への管理者以外のアクセスのアクセス許可を削除します (これには Users グループが含まれます)。
  2. 以前にこのサイトに対して選択したプロセス ID 用の新しいエントリを追加し、この ID にそのフォルダー用の [変更] アクセス許可を付与します。

ルート構成ファイルから重要な構成データを削除する方法

アプリケーションの web.config ファイルは、サービスされるアプリケーションのコンテンツ フォルダーにあります。ASP.NET はアプリケーションの web.config ファイルのサービスは行いませんが、実現可能である場合は、コンピューター キー設定や接続文字列などのセキュリティ上重要な情報は、アプリケーションの場所以外の構成ファイルに配置することを推奨します。これにより、情報漏えいに対する防御が改善されます。

インターネット インフォメーション サービス 6.0 (Windows Server 2003 SP2) の場合

セキュリティ上重要な構成情報をルートの web.config ファイルに格納することは、さまざまなサイト間でのデータの分離に適したオプションではありません。これは、すべてのサイトがこのファイルへの読み取りアクセス許可を持っているためです。そのため、IIS 6 では、重要な構成をアプリケーションの web.config ファイルに格納する必要があります。これにより、サイトで重要な構成を相互に分離することができます。この場合、アプリケーションでは ASP.NET の防御に依存して、アプリケーションの web.config ファイルがサービスされないようにして、重要な情報が漏えいしないようにします。

インターネット インフォメーション サービス 7 および 7.5 (Windows Vista SP2、Windows Server 2008 SP1、Windows 7 および Windows Server 2008 R2) の場合

IIS 7 および以降のバージョンの場合は、IIS applicationHost.config ファイルにある重要な構成を、その適用先であるサイトに構成をスコープする <location> 要素内に移動します。詳細については、「IIS 7.0 の構成でロックを使用する方法 (英語)」を参照してください。マイクロソフトは、お客様を保護するための共同作業に関して、次の方に謝意を表します。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。

プロパティ

文書番号: 2698981 - 最終更新日: 2012年6月7日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 3
キーワード:?
atdownload kbinfo kbexpertiseinter kbsecurity KB2698981
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com