宣言セキュリティ
宣言セキュリティ構文は、属性を使用して、コードのメタデータにセキュリティ情報を配置します。 属性は、アセンブリ、クラスまたはメンバーの各レベルに適用でき、使用する要求、確認要求、オーバーライドの種類を示します。 要求は、共通言語ランタイムに対応するアプリケーションが、そのアプリケーションに必要なアクセス許可または必要ではないアクセス許可をランタイムのセキュリティ システムに通知するために使用します。 確認要求およびオーバーライドは、呼び出し元からリソースを保護できるようにしたり、既定のセキュリティ動作をオーバーライドしたりするために、ライブラリで使用されます。
メモ |
---|
.NET Framework Version 4 では、.NET Framework のセキュリティ モデルと用語に重要な変更が加えられています。これらの変更の詳細については、「.NET Framework 4 におけるセキュリティの変更点」を参照してください。 |
宣言セキュリティ呼び出しを行う前に、アクセス許可オブジェクトの状態データを、必要な特定形式のアクセス許可を表すように初期化する必要があります。 組み込みの各アクセス許可は、開発者が実行するセキュリティ操作を示す SecurityAction 列挙として渡される属性を持っています。 しかし、アクセス許可は、それぞれに固有のパラメーターも受け入れます。 各アクセス許可に固有のパラメーターの詳細については、組み込みアクセス許可に関するセクションを参照してください。
コードの呼び出し元がカスタム アクセス許可 MyPermission を持つことを要求する宣言構文 (確認要求) の例を次のコード片に示します。 このアクセス許可は架空のカスタム許可であり、.NET Framework には実在しません。 この例では、宣言呼び出しはクラス定義の直前に配置されており、このカスタム アクセス許可がクラス レベルで適用されることを示しています。 属性には SecurityAction.Demand 構造体が渡され、このコードを実行するには、呼び出し元にこのアクセス許可が与えられている必要があることを指定しています。
<MyPermission(SecurityAction.Demand, Unrestricted = True)> Public Class MyClass1
Public Sub New()
'The constructor is protected by the security call.
End Sub
Public Sub MyMethod()
'This method is protected by the security call.
End Sub
Public Sub YourMethod()
'This method is protected by the security call.
End Sub
End Class
[MyPermission(SecurityAction.Demand, Unrestricted = true)]
public class MyClass
{
public MyClass()
{
//The constructor is protected by the security call.
}
public void MyMethod()
{
//This method is protected by the security call.
}
public void YourMethod()
{
//This method is protected by the security call.
}
}