与えるアクセス許可の決定
アプリケーション ドメインの場合は、許可されるアクセス許可セットがそのまま与えられるアクセス許可セットになります。
アセンブリの場合は、アセンブリの読み込み時に共通言語ランタイムがその他の要素も考慮して、そのアセンブリに与えるアクセス許可セットを決定します。アセンブリには、コードが必要とするアクセス許可を指定する宣言セキュリティ要求を含むことができます。コードが要求できるアクセス許可セットの説明を次の表に示します。
アクセス許可セット | 説明 |
---|---|
Required |
コードを実行するために必要な最小限のアクセス許可セットを指定します。 |
Optional |
最小限のアクセス許可セットに加えて、コードが要求するアクセス許可セットを識別します。これによって、最小限のセットまたはオプションのセットで識別されないすべてのアクセス許可が暗黙に拒否されます。 |
Refused |
コードに与えることができないアクセス許可セットを指定します。 |
3 つのアクセス許可要求がいずれも含まれていない場合、そのアセンブリには、ポリシーが許可したアクセス許可セットがそのまま与えられます。しかし、3 つのアクセス許可要求のいずれか 1 つでも含んでいる場合は、ランタイムは、要求されたアクセス許可セットについて次の手順で判断します。
ランタイムは、アセンブリに許可されるアクセス許可を計算し、そのアセンブリにコードを実行するために必要なアクセス許可があるかどうかを確認します。実行に必要なアクセス許可がない場合、ランタイムが PolicyException をスローし、そのコードは実行できません。
要求されたアクセス許可セットが、許可されるアクセス許可セットのサブセットかどうかを調べます。サブセットでない場合、ランタイムが PolicyException をスローし、そのコードは実行できません。
要求されたオプションのアクセス許可と、許可されるアクセス許可との積集合を求めます。オプションのアクセス許可が要求されない場合は、オプションの PermissionSet は FullTrust であると見なされます。
手順 3. の結果と、要求された最小限のアクセス許可との和集合を求めます。
最後に、手順 4. の結果から、拒否されるアクセス許可セットを減算します。