BT

Microsoftは.NET 4.0からコードアクセスセキュリティを除外している

| 作者: Jonathan Allen フォローする 389 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2009年11月15日. 推定読書時間: 3 分 |

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

原文(投稿日:2009/11/13)へのリンク

CASを正確に扱うのが難しいのはよく知られている。開発者が何らかのコードブロックに対してCASの設定を間違って適用してしまっても、その間違いを通知してくれるようなフィードバックはほとんど得られない。全く警告されないこともある。さらに、管理者にとってはもっと容認し難い状況が生まれる。というのは、CASの許可のポリシーは手動で設定しなければならないが、アプリケーションにどんな許可が必要かわかる場合はほとんどない。さらに悪いことに、.NETのバージョンごとにポリシーを作り直さなければならない。

結局、CASはセキュリティのための仕組みというより、セキュリティシアター(安心感が得られるだけで実際のセキュリティ向上には寄与しない仕組み)になってしまった。例えば、既定では共有フォルダ上の実行可能ファイルは、共有フォルダからローカルへコピーした実行可能ファイルとは異なった許可セットを持っている。また、アンマネージドの実行可能ファイルには、CASは全く適用されない。

.NET 4.0では、グローバルなCASのポリシーは既定で無効になる。代わりにシステム管理者には、WindowsのSoftware Restriction Policiesのような効果的な方法を使うことが推奨されている。もじCASが必要なら、アプリケーションごとにapp.configファイルで設定できる。app.configファイルのruntime/NetFx40_LegacySecurityPolicyenabledフラグをtureにすればいい。

また、普通に実行されるコードは既定では完全に信頼されている。この場合、許可はアプリケーションドメインのレベルで付与される。従って、複数のセキュリティレベルをあわせたポリシーを単一のアプリケーションドメインに適用されている。そして実際は、実行するアセンブリの配置URLを指定してAssembly.LoadFromメソッドが呼ばれる。このURLは完全に信頼されている。

さらに、ホストされているマネージドコードは、ホストによって決められた許可セットが設定されているサンドボックス上で実行される。SQLCLR上で実行されるマネージドアセンブリもインターネットからインストールされたクリックワンスアプリケーションも同じ仕組みだ。サンドボックス化されたアプリケーションドメインでは、アセンブリは部分信頼でも完全信頼でも実行できる。スタックの検証やリンク確認要求のような複雑な仕組みは必要ない。

この新しいセキュリティモデルでは、アプリケーションドメインが作成されたとき、部分信頼のアセンブリに適用される権限の付与をすべて明示しなければならない。同じとき、完全信頼のアセンブリはそのままアプリケーションドメインに含むことができる。

このモデルではコードを3つに分類している。最も高いレベルは“Critical”で、なんでもできる完全信頼のコードが分類される。最も低いレベルは“Transparent”で、このレベルに分類されるコードはCriticalのコードを直接呼ぶことはできない。両レベルの橋渡し役が“Safe Critical”に分類されるコードだ。TransparentとCriticalのコードは適用する場合を考えやすい。Transparentに分類されるコードはサンドボックス内で強く拘束されているし、Criticalに分類されるコードはまったく制限されていないからだ。しかし、Safe Criticalに分類されるコードについては気をつけなければならない。このレベルに分類されるコードは稀で、よく検証する必要がある。カーネルとユーザスペースを橋渡しするようなコードを書く場合、Safe Criticalに分類されるコードの部分に誤りがあったら悲惨なことになるだろう。

もしこのモデルをどこかで見たことがあるとしても、それは当然のことだ。というのは、このモデルはLevel 2 Security Transparencyとして知られ、Silverlightでは既に実績がある。MSDNのLevel 2 Security Transparencyについての記事を読めば詳細を知ることができる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT