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

共通言語ランタイムに対応するすべてのアプリケーション (つまりすべてのマネージ アプリケーション) は、そのランタイムのセキュリティ システムと対話する必要があります。 マネージ アプリケーションのホストは、そのアプリケーションの起動時に、アプリケーションに対して一連のアクセス許可を付与します。 これらのアクセス許可は、ホストのローカル セキュリティ設定、またはアプリケーションが所属するサンドボックスによって決まります。 これらのアクセス許可に応じて、そのアプリケーションが正常に実行されるか、またはセキュリティ例外が生成されます。

デスクトップ アプリケーションの既定のホストでは、コードが完全な信頼を付与されて実行されます。 このため、アプリケーションの実行対象がデスクトップである場合は、アプリケーションに無制限のアクセス許可セットが付与されます。 その他のホストまたはサンドボックスでは、アプリケーションに対して制限付きのアクセス許可セットが付与されます。 アクセス許可セットはホストごとに異なる場合があるため、アプリケーションの設計時には、対象ホストで使用できるアクセス許可だけを使用するように注意する必要があります。

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

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

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

  • 安全なクラス ライブラリの使用: クラス ライブラリは、コード アクセス セキュリティを使用して、そのクラス ライブラリにアクセスするために必要なアクセス許可を指定しています。 作成するコードで使用するすべてのライブラリについて、アクセスするために必要なアクセス許可を確認する必要があります。

  • 透過的なコード: .NET Framework Version 4 以降では、必要なアクセス許可を確認するだけでなく、コードを透過的セキュリティ コードとして実行する必要があるかどうかも確認する必要があります。 透過的セキュリティ コードは、セキュリティが重要な型またはメンバーを呼び出すことができません。 この規則は、完全に信頼されているアプリケーションと、部分的に信頼されたアプリケーションの両方に対して適用されます。 詳細については、「安全なクラス ライブラリの使用」および「透過的セキュリティ コード」を参照してください。

参照

概念

検証可能なタイプ セーフ コードの作成

セキュリティ構文

アクセス許可の要求

安全なクラス ライブラリの使用

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