2005年11月15日

SecurityAction

  
System.Security.Permissions.SecurityAction について

.NETのコードアクセスセキュリティでは、属性による許可制御として以下のような記述ができる。

[FileIOPermissionAttribute(SecurityAction.Assert, Unrestricted=true)]
private void Test() {
...
}

でも、この Assert とか、Demand とかが、具体的に何を意味するのかがマニュアルを読んでもピンとこない。
で、僕なりに分かりやすい言葉でまとめなおしてみた。

SecurityAction.Demand (アクセス許可を要求)
 このメソッドは、XXXXXXX処理を行いますので、許可してください

SecurityAction.Assert (アクセス許可を要求)
 このメソッドは、XXXXXXX処理を行いますので、許可してください。
 ただし、呼び出し元のチェックは行わないで良いですよ

SecurityAction.PermitOnly (アクセス許可を要求)
 このメソッドは、XXXXXXX処理のみを許可してください。
 それ以外の許可は与えないでくださいね。

SecurityAction.Deny (アクセス許可を拒否)
 このXXXXXXX処理は行ないません。
 もし、XXXXXXX処理が行われたら例外を発生させてください

というお願いをシステムにするわけだ。
システム側は、そのコードに付与されているアクセス許可を見て、動作不可ならば、例外を発生させる仕組みになっている。

ちなみに、XXXXXXX処理 には、FIleIO, EventLog,Print,SqlClient,UI...といったものが存在する。


じゃあ、Unrestricted=true ってなんだろう。
false にするとどうなるのかな。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50197334