- - PR -
SecurityException
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-01-21 23:36
C#等で作ったプログラムをネットワークディレクトリから直接実行しようとすると、
System.Security.SecurityException が投げられて、デバッカが起動してしまうのですが (VS.NETの入ってない環境ではエラーダイアログ)、 これってどうにかならないのでしょうか? もちろん、ローカルにコピーしてから実行すれば何も問題ないのですが... | ||||||||
|
投稿日時: 2002-01-22 16:36
そのコードの中で何をしようとしていますか?たとえば、ローカルディスクにファイルを作ろうとしたり、ネットワークアクセスしようとしたりは軒並みCode Access Securityの餌食です。ローカルのプログラムはFullTrustですので、何でもできます。
つまり、「セキュリティ>機能/便利さ」にシフトしたMSの姿勢の表れが、その例外なんだと思ってます。"and, it's a good thing!" | ||||||||
|
投稿日時: 2002-01-23 20:43
ファイルの読み書きはしてませんが、
外部のWebサービスを呼び出しているんで、そのせいですね。 こういったことをするプログラムは全部ローカルに コピーしなきゃいけないってのは、面倒ですね。 イントラネットくらい信じてもいいと思うのですが(^^; プログラムになんらかの署名をしておけば...なんてことは? | ||||||||
|
投稿日時: 2002-01-24 11:17
もちろんそんな必要はありません。そのアセンブリが属するコードグループに対するPermissionSetを変更したり、新しいコードグループを作ればよいのです。
管理ツールの中にある、Microsoft .NET Framework Configurationツールを見れば大体わかると思います。デフォルト構成では、IEのセキュリティゾーンごとに違うポリシーが割り当てられ、さらにMyComputerゾーンの中で、MicrosoftまたはECMAの鍵で署名されているコードに特別なポリシーが割り当てられています。 そこで、1)イントラネットゾーンのセキュリティ構成を変える、2)新しいコードグループを作って、適切なPermissionSetを与える、という方法で、特定のサイト、アセンブリなどを信頼したり、逆に信頼しなかったりすることが可能です。 Code Access Securityについて、Introduction的な文献が世の中にないんですよね。.NET Frameworkの中でも最も重要な機能の1つだと思うんですが...。 | ||||||||
|
投稿日時: 2002-01-24 19:13
と思ったらありました。 http://msdn.microsoft.com/library/?url=/library/en-us/dv_vbvcstechart/html/vbtchSecurityConcernsForVisualBasicNETProgrammers.asp?frame=true | ||||||||
|
投稿日時: 2002-01-24 20:57
> Microsoft .NET Framework Configuration
ってのは見つからないのですが、Beta2だからでしょうか? (RCとか?) とりあえず、Code Access Securityというキーワードで検索していたら、 CasPolってコマンドラインツールを見つけたので、 よく分からないまま、 >caspol -ag 1.2 -zone Intranet FullTrust を実行するとUNC指定でExceptionを出さないようになりました。 > と思ったらありました。 ありがとうございます。読んでみます。 (英語を読むには少々時間が... ) http://www.microsoft.com/JAPAN/developer/net/dnBDA/authaspdotnet.asp の下の方に少しだけ書かれているようなのですが、まだ(?_?)状態です。 | ||||||||
|
投稿日時: 2002-01-29 10:12
コードアクセスセキュリティの話はMSDNマガジンの2001年3月号に概要が紹介されています。
http://www.ascii.co.jp/pb/msdn/bn_no12.html ここの「.NETにおけるセキュリティ:Common Language Runtimeによるコードアクセス権の 実現」という記事です。 セキュリティを変更することで、ネット上にあるdllやexeを呼び出して実行することが できるようになりますね。これで、ソフトウェアのバージョンアップはネット上で一括管理、 なんてことも可能のはず。 Officeの.NETバージョンはそんな形になるのかな、なんて考えています。 | ||||||||
|
投稿日時: 2002-01-29 15:01
セキュリティを変更しなくても、デフォルトの構成で、自分とおなじ場所からDLLをダウンロードしたり、自分とおなじ場所にあるファイルを読むことは可能です。 一般に、知らないところから好きなようにDLLやEXEをダウンロードして実行できるようにすべきではないと思います。マクロウィルスの二の舞ですから。 そうなると、たとえばIEのTrusted Zoneの重要性が増すわけですが、これを正しく構成しないと動作しないアプリケーションが氾濫すると、「VBでC/S」な時代への逆行ですから、これもあまりお勧めできません。そうすると、実際にはかなり限定されたライブラリしかコードの中で利用できないということにもなります。ま、Active Directoryという選択肢はありますけど。 そして同時に、これらのセキュリティ構成は、開発者に対して、「セキュリティを意識した開発環境」での開発を促すことにつながります。開発環境では動いたのに、客先の実行環境では動かない、ということが続出しかねないからです。 Shuさんご紹介の記事を書いたKeith Brownが以前から言っていることですが、開発者は開発にあたって、自分のマシンにAdministratorとしてログオンしていてはいけない、ということだそうです。もっとも限定された権限しかもたないユーザーで開発やテストを行うべきだ、ということです。インストールなどの、特権が必要な作業は、RunAsコマンドを使ってAdminになって実行すればいいわけですので。 つまるところ、ようやく文化的にもUNIXな世界に追いついてきたし、追いつかなければならないところにきた、ということでしょうね。 |