.Netアセンブリのアクセス許可を制限するツール

コミュニティに、アセンブリの.Netコードへのアクセス許可を管理するためのシンプルで便利なツール-Managed Sandboxを紹介します。 このユーティリティは、開発者だけでなく、信頼できないソースから定期的に.Netプログラムを使用するすべての人に注意を払うことをお勧めします(いくつか注意点がありますが、詳細は以下を参照してください)。







この記事は、2つのパートで構成されています。(1).Netプラットフォームセキュリティシステムに関する若干の哲学、(2)Managed Sandboxユーティリティの説明、およびそれを作成する必要があった理由。







パート1.少しの哲学。 なぜマネージコードの広範な機能を使用して実行権限を制限し、セキュリティを確保しないのですか?



質問は非常に興味深いです。 マネージコードの概念は、コードを完全に制御するために、実行速度、ダウンロード速度、およびメモリを犠牲にすることです。 完全な制御とは、コードが何をするかを正確に把握しており、特定のアクションを禁止できることを意味します。 実際には、この「制御可能性」は、システムの目的(1つのプロセス内のコンテキストの分離、ガベージコレクションのプロセスの制御など)にのみ使用されます。



そして、一般ユーザーにとって最も重要なことは、Webでダウンロードしたばかりのプログラムどのように害するかを知り、特定のアクションが実行されるのを禁止することです。ここにはツールはありません。



.Netの世界で同様の状況が発生した理由はいくつかあります。



1. 90%の.Netプログラムには無制限の権限(いわゆるFullTrust)が必要です。 これは、ほとんどのプログラムが古いアンマネージコンポーネントとライブラリを使用しているためです。 たとえば、.NetアプリケーションでWebBrowserControlを使用する場合、アセンブリには無制限のアクセス許可が必要です。



2.以来 コードへのアクセスを制御するための便利なツールはありません(単純なユーザーがこれらのツールを使用できるようにするため)-限られた権限で機能するアセンブリを作成することを考えている人はいません。 ところで、.Net 2.0では、デフォルトで、FullTrustなしでは署名済みライブラリを呼び出すことができませんでした(.Net 4.0で修正済み)。



ところで、限られた権限でコードを実行することはClickOnceで積極的に使用されます。 しかし、ユーザーはプログラムが何を実行できるかを知らず、配布キットの作成に制限を設定するプログラマーのみがこれを知っています。



パート2.コード権限を制限できるMSの標準.Net構成ユーティリティがある場合、Managed Sandboxユーティリティを作成する理由 プログラムの違いは何ですか?



主な理由は、MSの.Net構成ユーティリティは使用するのがそれほど正確ではないということです(より正確には非常によくありません)(私はcaspolについては黙っておく方がよいでしょう)。



1.制限された特権でアセンブリを開始するには、最初に新しいコードグループを作成してから、このグループのアクセス許可を決定する必要があります。 プログラムを使用した後、構成ファイルを詰まらせないように、これらの設定を削除する必要があります。

2. .Net Configurationは、プラットフォームの.Netバージョンに接続されます(プラットフォームの各バージョンには独自のプログラムが必要です)。

3. .Net構成では、権限の一部のみを管理できます(19が利用可能、合計で30)。 残りは、明らかに、XMLファイルで手動で設定する必要があります。

4.他のすべてにとって、ユーティリティは非常に複雑です。使用するには、.Netセキュリティの基本を知る必要があります。 上級プログラマーと管理者向けですが、一般ユーザー向けではありません。



Managed Sandboxははるかに使いやすいです。アセンブリを選択し、必要な実行権限を指定するだけです。 おそらく、上級ユーザーなら誰でもこれを処理できます。 技術的には、適切な実行権限を持つ別のアプリケーションドメインが権限を制限するために使用され、構成ファイルは変更されません。



マネージドサンドボックスは開発中であり、多くの機能をまだ詳細に説明することはできません。 誰かが開発に参加したい場合-あなたは大歓迎です。



ダウンロードプログラム: managedsandbox.codeplex.com/releases/view/51827

ソースのダウンロード: managedsandbox.codeplex.com/SourceControl/list/changesets



All Articles