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

共通言語ランタイムに対応するすべてのアプリケーションは、そのランタイムのセキュリティ システムと対話する必要があります。アプリケーションは実行時にランタイムによって自動的に評価され、一連のアクセス許可を与えられます。アプリケーションが受け取るアクセス許可に応じて、そのアプリケーションが正常に実行されるか、またはセキュリティ例外が生成されます。コードが受け取るアクセス許可は、最終的にはそれぞれのコンピュータのローカル セキュリティ設定によって決まります。これらの設定はコンピュータごとに異なる可能性があるため、作成したコードが実行に必要なアクセス許可を必ず受け取るかどうかはわかりません。これは、コードを実行するためのアクセス許可を心配する必要がないアンマネージ開発の場合とは対照的です。

共通言語ランタイムに対応した有効なアプリケーションを作成するためには、開発者は次に示すコード アクセス セキュリティの概念を把握しておく必要があります。

  • タイプ セーフなコードの記述 : コード アクセス セキュリティを活用できるコードを生成するには、検証可能なタイプ セーフ コードを生成するコンパイラを使用する必要があります。詳細については、「検証可能なタイプ セーフ コードの作成」を参照してください。

  • 強制構文と宣言構文 : ランタイムのセキュリティ システムと対話するには、強制的および宣言的なセキュリティ呼び出しを使用します。宣言的な呼び出しは属性を使用して実行され、強制的な呼び出しはコード内のクラスの新しいインスタンスを使用して実行されます。呼び出しには、強制的にだけ実行できるものと、宣言的にだけ実行できるものとがあります。いずれの方法でも実行できる呼び出しもあります。詳細については、「セキュリティ構文」を参照してください。

  • コードに必要なアクセス許可の要求 : 要求はアセンブリのスコープに適用され、そのスコープ内で、作成したコードを実行するために必要なアクセス許可や、そのコードに与えないアクセス許可がランタイムに通知されます。セキュリティ要求は、コードがメモリに読み込まれた時点でランタイムによって評価されます。要求を行っても、その要求が行われない場合にコードに付与されるアクセス許可よりも多くのアクセス許可をそのコードに与えることはできません。しかし、コードを実行するために必要なアクセス許可をランタイムに通知するには、要求を行う必要があります。詳細については、「アクセス許可の要求」を参照してください。

  • 安全なクラス ライブラリの使用 : クラス ライブラリは、コード アクセス セキュリティを使用して、そのクラス ライブラリにアクセスするために必要なアクセス許可を指定しています。作成するコードで使用するすべてのライブラリについて、アクセスするために必要なアクセス許可を確認し、コード内で適切な要求を行う必要があります。詳細については、「安全なクラス ライブラリの使用」を参照してください。

参照

概念

検証可能なタイプ セーフ コードの作成
セキュリティ構文
アクセス許可の要求
安全なクラス ライブラリの使用

その他の技術情報

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