アセンブリをビルドするときに、アセンブリの実行に必要な権限のセットを指定できます。 アセンブリに対して特定の権限が付与されているかどうかは、証拠に基づいています。
証拠を使用する方法は 2 つあります。
入力証拠は、ローダーによって収集された証拠とマージされ、ポリシー解決に使用される証拠の最終的なセットが作成されます。 このセマンティックを使用するメソッドには、 Assembly.Load、 Assembly.LoadFrom、 Activator.CreateInstance があります。
入力証拠は、ポリシー解決に使用される証拠の最終的なセットとして変更されていない状態で使用されます。 このセマンティックを使用するメソッドには 、Assembly.Load(byte[]) と AppDomain.DefineDynamicAssembly()が含まれます。
オプションのアクセス許可は、アセンブリを実行するコンピューターで設定された セキュリティ ポリシー によって付与できます。 潜在的なすべてのセキュリティ例外をコードで処理する場合は、次のいずれかの操作を実行できます。
コードに必要なすべてのアクセス許可に対するアクセス許可要求を挿入し、アクセス許可が付与されていない場合に発生する読み込み時エラーを事前に処理します。
アクセス許可要求を使用してコードに必要なアクセス許可を取得しないでください。ただし、アクセス許可が付与されていない場合は、セキュリティ例外を処理するように準備してください。
注
セキュリティは複雑な領域であり、選択できるオプションは多数あります。 詳細については、「 主要なセキュリティの概念」を参照してください。
読み込み時には、アセンブリの証拠がセキュリティ ポリシーへの入力として使用されます。 セキュリティ ポリシーは、企業とコンピューターの管理者、およびユーザー ポリシー設定によって確立され、実行時にすべてのマネージド コードに付与されるアクセス許可のセットを決定します。 セキュリティ ポリシーは、アセンブリの発行元 (署名ツールによって生成された署名がある場合)、アセンブリがダウンロードされた Web サイトとゾーン (Internet Explorer の概念)、またはアセンブリの厳密な名前に対して確立できます。 たとえば、コンピューターの管理者は、Web サイトからダウンロードされ、特定のソフトウェア会社によって署名されたすべてのコードがコンピューター上のデータベースにアクセスできるようにするが、コンピューターのディスクへの書き込みアクセスを許可しないセキュリティ ポリシーを確立できます。
厳密な名前が付けられたアセンブリと署名用ツール
Warnung
セキュリティのために厳密な名前に依存しないでください。 一意の ID のみが提供されます。
厳密な名前を使用するか、 SignTool.exe (署名ツール) を使用して、2 つの異なる補完的な方法でアセンブリに署名できます。 厳密な名前でアセンブリに署名すると、アセンブリ マニフェストを含むファイルに公開キー暗号化が追加されます。 厳密な名前の署名は、名前の一意性を確認し、名前のスプーフィングを防ぎ、参照が解決されたときに呼び出し元に何らかの ID を提供するのに役立ちます。
厳密な名前には信頼レベルが関連付けられていないため、 SignTool.exe (署名ツール) が重要になります。 2 つの署名ツールでは、発行元がサード パーティの機関にその ID を証明し、証明書を取得する必要があります。 その後、この証明書はファイルに埋め込まれており、管理者がコードの信頼性を信頼するかどうかを決定するために使用できます。
厳密な名前と 、SignTool.exe (署名ツール) を使用して作成されたデジタル署名の両方をアセンブリに指定することも、単独で使用することもできます。 2 つの署名ツールは、一度に 1 つのファイルにのみ署名できます。マルチファイル アセンブリの場合は、アセンブリ マニフェストを含むファイルに署名します。 厳密な名前はアセンブリ マニフェストを含むファイルに格納されますが、 SignTool.exe (署名ツール) を使用して作成された署名は、アセンブリ マニフェストを含むポータブル実行可能ファイル (PE) ファイルの予約済みスロットに格納されます。 SignTool.exe を使用したアセンブリの 署名 (厳密 な名前の有無にかかわらず) は、生成された署名に依存する信頼階層が既 SignTool.exe にある場合、またはポリシーでキー部分のみを使用し、信頼チェーンをチェックしない場合に使用できます。
注
アセンブリで厳密な名前と署名ツール署名の両方を使用する場合は、最初に厳密な名前を割り当てる必要があります。
共通言語ランタイムでは、ハッシュ検証も実行されます。アセンブリ マニフェストには、マニフェストの作成時に存在していた各ファイルのハッシュを含む、アセンブリを構成するすべてのファイルの一覧が含まれます。 各ファイルが読み込まれると、その内容がハッシュされ、マニフェストに格納されているハッシュ値と比較されます。 2 つのハッシュが一致しない場合、アセンブリの読み込みに失敗します。
SignTool.exe (署名ツール) を使用した厳密な名前付けと署名では、デジタル署名と証明書による整合性が保証されます。 前述のすべてのテクノロジ、つまり、ハッシュ検証、厳密な名前付け、およびSignTool.exe を使用した署名 (署名ツール) は連携して、アセンブリが何らかの方法で変更されていないことを確認します。
こちらも参照ください
.NET