アプリケーション ドメイン ホスト
重要 |
---|
.NET Framework Version 4 では、共通言語ランタイム (CLR: Common Language Runtime) がコンピューターにセキュリティ ポリシーを提供しなくなります。Microsoft では、CLR のセキュリティ ポリシーの代替として、Windows のソフトウェアの制限のポリシーを使用することをお勧めしています。このトピックの情報は、.NET Framework Version 3.5 以前に適用され、Version 4 以降には適用されません。この変更およびその他の変更の詳細については、「.NET Framework 4 におけるセキュリティの変更点」を参照してください。 |
各 .NET Framework アプリケーションは、アプリケーション ドメインを作成し、そこにアセンブリを読み込むホストの制御下で、そのアプリケーション ドメイン内で実行されます。 このホストは、コードの発生元のゾーンや、アプリケーション ドメイン内のアセンブリのデジタル署名など、コードに関する情報 (証拠) にアクセスします。 信頼されているホストとは、このような情報を共通言語ランタイムに提供するためのアクセス許可を持つホストを指します。 System.AppDomain クラスは、ホストによって使用されるアプリケーション ドメインの機能を提供します。
アプリケーション ホストの種類を次の表に示します。
アプリケーション ドメイン ホスト |
説明 |
---|---|
ブラウザー ホスト (Microsoft Internet Explorer など) |
Web サイトのコンテキスト内でコードを実行します。 |
カスタム デザイン ホスト |
ドメインを作成し、そのドメインにアセンブリ (動的アセンブリなど) を読み込みます。 マネージ コードまたはアンマネージ コードで記述できます。 |
サーバー ホスト (ASP.NET など) |
サーバーに送信された要求を処理するコードを実行します。 |
シェル ホスト |
シェルからアプリケーション (.exe ファイル) を起動します。 |
新しいアプリケーション ドメインを作成したら、ホストはそのアプリケーション ドメイン内のコードに適用するポリシーを指定できます。 このポリシーは、エンタープライズ、マシン、ユーザーの各ポリシーによる影響を常に受けます。 ホストはマシン ポリシーまたはユーザー ポリシーによって設定されたアクセス許可セットを減らすことはできますが、増やすことはできません。 ポリシーは、1 つのアプリケーション ドメインに対して 1 回だけ設定できます。 アプリケーション ドメイン ポリシーを設定するには、そのドメイン ポリシーを制御するためのセキュリティ許可がホストに与えられていることが必要です。このセキュリティ許可は、SecurityPermission クラスにより提供されます。
アプリケーション ドメイン ポリシーが設定されると、それ以降に読み込まれるすべてのアセンブリには、新しいポリシー (エンタープライズ、マシン、ユーザー、アプリケーション ドメインの各ポリシー) に基づいてアクセス許可が与えられます。 それより前に読み込まれたアセンブリには、その前に有効だったポリシー (エンタープライズ、マシン、ユーザーの各ポリシーに限定) に基づいてアクセス許可を与えられます。 これらのアセンブリに与えられるアクセス許可が、新しいアプリケーション ドメイン ポリシーに基づいて再評価されることはありません。
信頼されているホストは、アプリケーション ドメインに読み込まれるアセンブリに関する情報 (証拠) をランタイムに提示できます。 ドメイン ホストが証拠を制御するための適切な SecurityPermission を持っていない場合、ランタイムはそのホストに対して強制的に適用されるセキュリティを使用して、アセンブリに適用するセキュリティを決定します。
通常は信頼されているアプリケーション ドメイン ホストによって提供される証拠が、実際にはローダーによって提供される場合もあります。 通常、アプリケーション ドメインが作成されると、アプリケーション ドメイン ホストが最初の (メイン) アセンブリをそのアプリケーション ドメインに読み込み、そのアセンブリを呼び出して実行を開始します。 最初のアセンブリ内のコードが別のアセンブリ内のコードを参照すると、ローダーはその参照を解決し、アプリケーション ドメインに適切なアセンブリを読み込んで、そのアセンブリに関する証拠をランタイムに提示します。 このような場合には、最初のアセンブリに関する証拠を提供した信頼されているアプリケーション ドメイン ホストが、それより後に読み込まれたアセンブリの証拠を提供することはありません。