部分信頼コードからのライブラリの使用

更新 : 2007 年 11 月

ランタイム コード アクセス セキュリティ システムから完全ではない部分的な信頼を受け取ったアプリケーションは、ライブラリの作成者が AllowPartiallyTrustedCallersAttribute Class を使用して明示的に許可しない限り、共有マネージ ライブラリを呼び出すことはできません。このため、アプリケーションの作成者は、部分的な信頼のコンテキストでは、アプリケーションから利用できないライブラリがあることを知っておく必要があります。既定では、ローカル イントラネット ゾーンまたはインターネット ゾーンから実行されるコードは、部分的な信頼になっています。部分的な信頼のコンテキストでコードを実行したり、部分的な信頼のコードから呼び出しを受けたりすることを望まないときは、このセクションで説明する内容は関係ありません。しかし、部分的な信頼のコードとやり取りをする、または部分的な信頼のコンテキストから操作を行う場合は、次の要因を考慮する必要があります。

  • ライブラリを複数のアプリケーションで共有するには、ライブラリを厳密な名前で署名する必要があります。厳密な名前を付けるとコードをグローバル アセンブリ キャッシュに置くことができ、モバイル コードの特定の部分が実際に作成者から発信されていることを消費者が検証できるようになります。

  • 既定では、厳密な名前共有ライブラリは完全な信頼に対して暗黙の LinkDemand を自動実行するため、ライブラリの作成者は何もする必要はありません。

  • 呼び出し元が完全な信頼を持たずにこのようなライブラリの呼び出しをさらに試みた場合は、ランタイムは SecurityException をスローして、呼び出し元はライブラリへのリンクを許可されません。

  • 自動的な LinkDemand を無効にし、例外がスローされるのを防ぐには、共有ライブラリのアセンブリ スコープで AllowPartiallyTrustedCallersAttribute 属性を設定します。この属性によって、部分的な信頼のマネージ コードからライブラリを呼び出すことができるようになります。

  • この属性によってライブラリへのアクセス許可を得た部分的な信頼のコードは、ローカル マシンのポリシーによって定義された、より厳しい制限に従います。

  • 部分的な信頼のコードが、AllowPartiallyTrustedCallersAttribute 属性を持たないライブラリをプログラムによって呼び出す方法はありません。アプリケーションが既定で完全な信頼を受け取らない場合、管理者はセキュリティ ポリシーを変更し、このようなライブラリを呼び出す前に完全な信頼をアプリケーションに付与する必要があります。

特定のアプリケーション専用のライブラリは、厳密な名前や AllowPartiallyTrustedCallersAttribute 属性を必要とせず、アプリケーション外の悪意の可能性があるコードから参照されることはありません。このようなコードは、開発者または管理者が特別なことをしなくても、部分的な信頼のモバイル コードによる意図的または意図しない誤用から守られます。

次の種類のコードには、部分的な信頼のコードによる使用を明示的に許可する必要があります。

  • セキュリティ脆弱性について入念にテストされ、「安全なコーディングのガイドライン」に記述されているガイドラインに準拠しているコード。

  • 部分的な信頼のシナリオ用に特別に記述された厳密な名前のコード ライブラリ。

  • 厳密な名前で署名され、インターネットまたはローカル イントラネットからダウンロードされたモバイル コードによって呼び出される任意のコンポーネント (部分的または完全な信頼を持つ)。既定のセキュリティ ポリシーでは、モバイル コードは部分的な信頼度を受け取るため、これらのコンポーネントは影響を受けます。

  • 既定のポリシーが変更されている場合は、セキュリティ ポリシーが完全な信頼よりも低い信頼を付与している任意のコード。

    8skskf63.alert_note(ja-jp,VS.90).gifメモ :

    製品の .NET Framework クラス ライブラリには、AllowPartiallyTrustedCallersAttribute 属性を持たないクラスがあります。これらのクラスは、部分的な信頼のコードから呼び出すことはできません。部分的な信頼のコードから呼び出すことができるクラスのリストについては、「AllowPartiallyTrustedCallersAttribute でマークされている .NET Framework アセンブリ」を参照してください。

参照

その他の技術情報

コード アクセス セキュリティ