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

更新 : 2010 年 7 月

メモメモ

ここでは、厳密な名前のアセンブリの動作について説明します。レベル 1 アセンブリにのみ適用されます。.NET Framework Version 4 以降の透過的セキュリティ コード、レベル 2 アセンブリは、厳密な名前の影響を受けません。セキュリティ システムに対する変更の詳細については、「.NET Framework 4 におけるセキュリティの変更点」を参照してください。

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

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

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

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

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

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

  • 部分的な信頼のコードが、AllowPartiallyTrustedCallersAttribute 属性を持たないライブラリをプログラムによって呼び出す方法はありません。

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

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

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

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

  • 厳密な名前で署名され、インターネットからダウンロードされたコードによって呼び出される任意のコンポーネント (部分的または完全な信頼を持つ)。

メモメモ

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

参照

概念

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

履歴の変更

日付

履歴

理由

2010 年 7 月

一部の内容を更新しました。

コンテンツ バグ修正