次の方法で共有


リフレクション出力のセキュリティ関連事項

このトピックでは、リフレクション出力を使用して動的アセンブリを生成するときに考慮する必要があるセキュリティ関連事項について説明します。一部のシナリオでは、特定のアクセス許可が必要です。その他のシナリオでは、生成されたコードのアクセス許可を確立する必要があります。以降の説明では、呼び出し元とは、動的アセンブリまたは動的モジュールの作成元を指します。

特定のアクセス許可を必要とするシナリオ

ランタイムでは、AssemblyBuilder オブジェクトと ModuleBuilder オブジェクトを呼び出すための ReflectionPermissionFlag.ReflectionEmit アクセス許可が編集アセンブリに必要です。リフレクション出力では Reflection が使用されるため、編集アセンブリには Reflection を使用するためのアクセス許可も必要です。

生成コードのアクセス許可の確立

  • 呼び出し元には、動的アセンブリを永続化するための、ファイルに対する適切なアクセス許可が必要です。

  • SecurityPermissionFlag.ControlEvidence アクセス許可が与えられている呼び出し元は、生成コードの証拠を提供します。付与されているアクセス許可を判断するため、この証拠がポリシーに割り当てられます。

  • 呼び出し元は null の証拠を提供できます。この場合、アセンブリでは、呼び出し元のアクセス許可セットを取得できます。これにより、生成コードにはこの呼び出し元のアクセス許可だけが含まれます。

  • 動的アセンブリをディスクに永続化した後で読み込むと、そのアセンブリが保存されている位置に関連付けられているポリシーに基づいて、アクセス権が与えられます。つまり、この永続アセンブリは、ディスクから読み込まれる他のアセンブリと同様の方法で操作されます。

  • 部分的に信頼度の高い呼び出し元によって生成されたコードは常に検査されます。ランタイムでは、特に SecurityPermissionFlag.SkipVerification アクセス許可のないコードは常に検査されます。完全に信頼されている呼び出し元は、検査を省略する場合と、生成コードの検査を必要とする場合があります。

参照

その他の技術情報

動的メソッドおよびアセンブリの出力