JP2004501467A - Filtering permission sets using permission requests related to code assembly - Google Patents
Filtering permission sets using permission requests related to code assembly Download PDFInfo
- Publication number
- JP2004501467A JP2004501467A JP2002504571A JP2002504571A JP2004501467A JP 2004501467 A JP2004501467 A JP 2004501467A JP 2002504571 A JP2002504571 A JP 2002504571A JP 2002504571 A JP2002504571 A JP 2002504571A JP 2004501467 A JP2004501467 A JP 2004501467A
- Authority
- JP
- Japan
- Prior art keywords
- permission
- code assembly
- code
- request
- request set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Separation Using Semi-Permeable Membranes (AREA)
- External Artificial Organs (AREA)
- Lock And Its Accessories (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
Description
【0001】
本出願は、合衆国以外のすべての国々を指定する合衆国国籍、合衆国所在のマイクロソフト(登録商標)コーポレーション(MICROSOFT(登録商標)CORPORATION)によるPCT出願として出願されている。
【0002】
(技術分野)
本発明は一般にコンピュータセキュリティに関し、より詳細には、コードアセンブリに関連する許可要求を使用して許可セットをフィルタすることに関する。
【0003】
(発明の背景)
ユーザのシステムに対する許可のないアクセスを許すなどのセキュリティリスクが、多くのオンライン活動に付き物である。したがって、ユーザのシステムを保護するセキュリティ機構が開発されている。例えば、ユーザは、インターネットからオンデマンドアプリケーションをダウンロードし、ブラウザ内からそのアプリケーションを実行することができる。ユーザのシステムリソース(例えば、ユーザのハードディスク上のディレクトリ)に対する許可のないアクセスを防止するため、ユーザのシステムは、ブラウザ環境内で実施される「サンドボックス」セキュリティによって保護されている。サンドボックスセキュリティは、セキュアな領域の外部に常駐するシステムリソースにアプリケーションがアクセスするのを防止するようにアプリケーションが実行されることが可能な、コンピュータメモリの限られたセキュアな領域に関わる。
【0004】
ただし、一部の状況では、ユーザは、ダウンロードされたアプリケーションが、ユーザのシステム内部のあるリソースに制御されたアクセスを行うのを許すことを望むことが可能である。例えば、ユーザは、オンデマンドワードプロセッシングアプリケーションを使用してドキュメントを生成した後、そのドキュメントをユーザのシステム中のディレクトリに保存するのを望むことが可能である。
【0005】
そのようなアプリケーションにユーザのシステムに対するセキュアで、制御されたアクセスを提供するための既存の手法は、あまりにも扱いにくく、柔軟性を欠いている。一方では、例えば、所与のアプリケーションが許可セットに関連付けられるセキュリティポリシーが、ポリシーデータベース内部で定義される。このセキュリティポリシーは、出所(origin)情報、署名情報、およびアクセス制約との組み合わせで、アプリケーションとユーザのシステムの間の「信頼される」関係を定義するのに役立つ。
【0006】
次の例を考慮されたい。
【0007】
【表1】
【0008】
この例では、ソースロケーション”www.BobsWidgets.com”からのアプレットが、BobsCertificateの中に含まれる他の鍵に対応する鍵で署名されている場合、このアプレットに、あるファイルアクセス許可を交付する。アプレットは、従来、オペレーティングシステム内から直接にではなく、ブラウザ内から実行されるように設計されたプログラムである。このアプレットには、ホストシステム上の「/tmp」ディレクトリからファイルを読み取り、また「/tmp/bwdir」ディレクトリの中にファイルを作成し、書き込む許可が交付される。別の一般的な許可修飾子が、「実行する」許可である。その他のセキュリティポリシー指定により、例えば、アプリケーションのソースに関わらず、またはアプリケーションに署名されているか、署名されていないかに関わらず、任意のシステムロケーションにおけるファイルにアクセスする広い許可が交付されることが可能である。
【0009】
そのような手法では、セキュリティポリシーは、特に静的であり、長期間にわたり固定されたままである。インターネットを介するオンデマンドアプリケーション処理がより一般的になるにつれ、実質的に、静的セキュリティポリシーでは、あまりにも制約がある。さらに、実際に行われる(通常、システム管理者によって行われる)頻度の低いセキュリティポリシー変更は、セキュリティの弱点またはセキュリティギャップを導入する、または前にアクセスの許可を受けたアプリケーションにアクセスを行うことを拒否することにより、許可されたアプリケーションが実行されるのが妨げられる可能性がある。このため、既存のセキュリティアーキテクチャは、ユーザのシステムに対するある量のアクセスをアプリケーション(またはアプリケーションの所与のコードアセンブリ)に任せることができるかどうかを動的に、また柔軟に判定することができない。
【0010】
さらに、既存のセキュリティフレームワークでは、許可の割振りが、ユーザのシステムにおいて定義されたセキュリティポリシーによって決定され、場合によっては、アプリケーションの実行中またはロード中のユーザに対するクエリによって決定される。このため、オンデマンドアプリケーションの構成要素は、一般に、どの許可がセキュリティポリシーに従って割り振られるかに影響を与えない。例えば、許可されたロケーションからの構成要素に、コンピュータシステムの保護されたエリアに対する広汎なアクセスが交付される可能性があり、その構成要素が、そのようなアクセスを必要としない、または所望さえしない可能性があっても交付される可能性がある。責任上の理由から、構成要素は、より限られたアクセスを所望する可能性がある。さらに、構成要素は、最低限の許可のセットなしには、実行することができない可能性がある。既存のセキュリティフレームワークでは、コードアセンブリの実行中、許可が欠如されているために要求された動作が失敗したときにだけ、不十分な許可交付セットが検出され、その時点では、実行時間が無駄になっており、誤り回復がより複雑である可能性がある。
【0011】
(発明の概要)
本発明によれば、以上の問題およびその他の問題が、リソースロケーションから受け取られたコードアセンブリに対して許可交付セットを生成する証拠ベースのポリシーマネージャによって解決される。許可交付セットは、コードアセンブリに関連して受け取られた許可要求によって影響される(例えば、フィルタされる)ことが可能である。許可要求は、コードアセンブリの許可ニーズの特性を定義することができる。例えば、許可要求は、少なくとも基本的機能を伴って適切に動作するのにコードアセンブリによって必要とされる許可を指定する最低限の許可セットを含むことが可能である。また、許可要求は、代替レベルの機能を提供するのにコードアセンブリによって必要とされる許可を指定するオプションの要求セットを含んでもよい。さらに、許可要求は、コードアセンブリに交付されるべきでない許可を指定する拒否要求セットを含むことも可能である。
【0012】
本発明の実施形態では、リソースロケーションから受け取られたコードアセンブリに関連する許可セットを処理するための方法が提供されて、コードアセンブリの実行が制御される。許可セットは、コードアセンブリに関連する少なくとも1つの許可を含む。許可要求セットは、コードアセンブリに関連して受け取られる。許可セットが、許可要求セットに基づいてフィルタされてコードアセンブリの実行が制御される。
【0013】
本発明の別の実施形態では、方法は、1つ以上のコードグループにおけるコードアセンブリのメンバーシップに基づいて許可セットを生成することをさらに含む。コードグループ集合が、セキュリティポリシー指定に基づいて定義される。コードグループ集合は、1つ以上のコードグループを含む。証拠が、コードアセンブリに関連して受け取られる。1つ以上のコードグループにおけるコードアセンブリのメンバーシップが、その証拠に基づいて評価される。
【0014】
本発明のさらに別の実施形態では、リソースロケーションから受け取られたコードアセンブリに関連する許可セットを処理してそのコードアセンブリの実行を制御するためのポリシーマネージャモジュールが提供され、このモジュールは、コードアセンブリに関連する許可セットおよび許可要求セットを受け取るフィルタを含む。また、フィルタは、許可要求セットに基づいて許可セットをフィルタして、コードアセンブリの実行を制御する。
【0015】
本発明のその他の実施形態では、製造品が、コンピュータプログラム(computer program products)として提供される。コンピュータプログラムの一実施形態は、コンピュータシステムによって読取り可能であり、リソースロケーションから受け取られたコードアセンブリに関連する許可セットを処理してそのコードアセンブリの実行を制御するためのコンピュータプロセスを実行するためのコンピュータプログラムを符号化するコンピュータプログラム記憶媒体を提供する。コンピュータプログラムの別の実施形態は、コンピュータシステムによるキャリアで実現され、リソースロケーションから受け取られたコードアセンブリに関連する許可セットを処理してそのコードアセンブリの実行を制御するためのコンピュータプログラムを符号化するコンピュータデータ信号で提供することができる。
【0016】
一実施形態では、コンピュータプログラムは、セキュリティポリシー指定に基づいてコードグループ集合を定義するコンピュータプロセスをコンピュータシステム上で実行するためのコンピュータプログラムを符号化する。コードグループ集合は、1つ以上のコードグループを含む。証拠が、コードアセンブリに関連して受け取られる。1つ以上のコードグループにおけるコードアセンブリのメンバーシップが、その証拠に基づいて評価される。許可セットは、その1つ以上のコードグループにおけるコードアセンブリのメンバーシップに基づいて生成される。許可セットは、コードアセンブリに関連する少なくとも1つの許可を含む。許可セットおよび許可要求セットに対して論理集合演算が行われて、許可交付セットが生成される。
【0017】
本発明の実施形態の大きな効用は、許可要求に従ってポリシーマネージャによってコードアセンブリに交付される許可がフィルタされることである。これにより、コードアセンブリが、適用可能なセキュリティポリシーが許すものと協調して、自らが受け取る許可に影響を与える。許可は、コンピュータシステム内部でコードアセンブリの実行を制御するのに使用される。コードアセンブリによって実際に要求された許可だけを交付するのが有利である。例えば、セキュリティポリシーが、信頼されるコードアセンブリに広い許可を交付することが可能である。ただし、そのコードアセンブリが所与の許可を要求しない場合、そのコードアセンブリにおける誤りによって生じさせられるようなコンピュータシステムの保護されたエリアへの不慮のアクセスを回避することができる。さらに、コードアセンブリは、所与の許可のセットを拒否して、コンピュータシステムの保護されたエリアにアクセスする(また、場合によっては破壊する)ことで責任を負う可能性にさらされるのを回避することができる。
【0018】
本発明を特徴付ける以上の特徴およびその他の様々な特徴、並びにその他の利点は、以下の詳細な説明を読み、関連する図面を詳しく見ることで明白となる。
【0019】
(発明の詳細な説明)
本発明の実施形態は、リソースロケーションから受け取られたコードアセンブリに関する許可交付セットを生成する証拠ベースのポリシーマネージャを提供する。一般に、コードアセンブリは、.EXEファイル、または.DLLファイルなどのパッケージ化されたコードの単位である。ポリシーマネージャは、ランタイム環境の確認モジュールおよびクラスローダと組み合わせで、コンピュータシステム(例えば、Webクライアントまたはネットワーク化されたワークステーション)において実行することができる。ただし、ポリシーマネージャはランタイム環境の外部でも実行することができる。コードアセンブリに対して生成された許可交付セットが、ランタイム呼出しスタックの中で適用されて、システムがコードアセンブリによる所与のシステム動作が許可されるかどうかを判定するのを助ける。ポリシーマネージャは、コードアセンブリに関連して受け取られた許可要求を処理することができる。さらに、コードアセンブリと証拠をともに、ローカルソース(例えば、ローカルのマシン内部から)、ローカルネットワークまたは周辺機器、またはネットワーク(例えば、インターネット)を介する遠隔リソースロケーションから受け取ることができる。
【0020】
本発明の実施形態では、許可要求を使用して、コードアセンブリに関連して受け取られたセキュリティポリシー指定および証拠に基づいてポリシーマネージャによって最初に提供された許可がフィルタされる。これにより、コードアセンブリが、そのコードアセンブリに関連付けられる結果の許可交付セットに影響を与えて、過度の、または不必要な許可を受け取るのを回避するようにすることができる。
【0021】
図1は、本発明の実施形態における証拠ベースのセキュリティポリシーマネージャ104を描いている。サーバなどのリソースロケーション100がネットワーク(図示せず)を介してコンピュータシステム102(例えば、WebクライアントまたはWebサーバ)によってアクセス可能である。リソースロケーションは、一般にURI(ユニフォームリソース識別子)で示され、URIはWorld Wide Web上のオブジェクトを参照するすべてのタイプの名前およびアドレスの総称である。URL(ユニフォームリソースロケータ)は一種のURIである。例としてのリソースには、限定するものとしてではなく、ネットワークを介してアクセス可能なドキュメント、イメージ、オーディオデータ、アプリケーション、ルーチン、並びにその他のデータおよびコードデータストアが含まれることが可能である。リソースロケーションは、コンピュータシステム102にローカルであることもコンピュータシステム102に遠隔である(例えば、インターネットで結合される)ことも可能であることを理解されたい。
【0022】
本発明の実施形態に関係のある1つのタイプのリソースが、コードアセンブリである。コードアセンブリは、例えばアプレットコード、アプリケーションコード、クラスコード、ルーチンコード、およびデータから成ることが可能である。コードアセンブリに含まれるコードおよびデータは、バイトコード、中間コード、マシンコード、およびデータ構成要素(クラス、イメージ、オーディオクリップおよびビデオクリップ等)の形であることが可能である。さらに、リソースロケーションからダウンロードされる1つ以上のクラスを含むアーカイブファイルにコードアセンブリをパッケージ化することもできる。本発明の一実施形態では、アプリケーションのクラスを組み合わせてモジュール(リンクプロセスの出力)にし、また1つ以上のモジュールを組み合わせてコードアセンブリにすることができる。
【0023】
図1は、コンピュータシステム102上で実行されるダウンロードされたアプリケーションに関して描かれている。別の実施形態は、ダウンロードされたアプレット、ACTIVEXコントロール、並びにその他のルーチンおよびオブジェクトを含んでいてもよい。一例としてのダウンロードされたアプリケーションは、1つ以上のローカルまたは遠隔のコードアセンブリにおいて定義されたオブジェクトから成る。ローカルコードアセンブリは、コンピュータシステム102内部に記憶され、必要なときにメモリの中にロードされる。遠隔コードアセンブリは、リソースロケーション100のようなリソースロケーションからダウンロードされる。
【0024】
コンピュータシステム102が、ランタイム環境を開始してダウンロードされたアプリケーションを実行し、システム102のセキュリティを管理する。コンピュータシステム102のランタイム環境は、ランタイム環境の外部にあるオペレーティングシステムシェル、ブラウザ、SQLサーバ、またはその他のコードなどの「信頼されるホスト」によって初期化されることが可能である。ホストも、アプリケーションを構成する様々なコードアセンブリ106をシステム102にダウンロードし、実行のために仮想マシン110にそのコードアセンブリ106を渡すことによってアプリケーションの実行を開始する。
【0025】
仮想マシンは、別個のコンピュータの機能の多くを実行する自己完結型の動作環境を提供する。例えば、ホストオペレーティングシステムに直接にアクセスすることなく、仮想マシンにおいてアプリケーションを実行することができる。この設計は、少なくとも2つの利点を有する。
・システム独立性:アプリケーションは、システムの基礎となるハードウェアおよびソフトウェアに関わらず、そのアプリケーションが書かれているプログラミング言語をサポートする任意の仮想マシンにおいて同様に実行される。例えば、同一のアプリケーション(すなわち、同一のプログラミングコード)が、異なるタイプのマイクロプロセッサおよび異なるタイプのオペレーティングシステムを有する、異なるコンピュータシステム上の仮想マシンにおいて実行されることが可能である。
・セキュリティ:仮想マシンにおいて実行されているアプリケーションが、一般に、保護されたシステムリソース(すなわち、オペレーティングシステム、ファイルシステム、メモリの保護された領域、接続されたネットワークまたは接続された周辺機器)にアクセスするのが防止される。ただし、本発明の実施形態は、証拠およびセキュリティポリシーを評価して、アプリケーションが保護されたシステムリソースにアクセスするのを許すかどうかを判定できることを理解されたい。所与の動作(operation)に対する許可が交付された場合、アプリケーションは、その動作に関して「信頼される」ものとみなされる。コードアセンブリに関連して受け取られた許可要求を使用して、そのコードアセンブリがどの動作を行うことができるかを判定するのに使用される結果の許可交付セットをフィルタすることができる。
【0026】
アプリケーション構成要素(例えば、ダウンロードされたコードアセンブリ106)がシステム102によって受け取られ、確認モジュール112がコードアセンブリ106の中のダウンロードされたコードが適切にフォーマットされており、コード言語または仮想マシン110の安全制約に違反しないことを確かめる。また、ポインタアドレス指定が存在しないこと、内部スタックにオーバーフローまたはアンダーフローが生じるのが不可能なこと、コード命令が正しく分類されたパラメータを有することを確認するなどのその他の確認も行うことができる。次に、コードアセンブリはクラスローダ113に渡され、クラスローダ113は、そのアプリケーションが、ランタイム環境内でシステムレベル構成要素に置き換わらないことを確実にする(すなわち、クラスローダは、ホストによって提供されたコードアセンブリが、要求されたときに実行されることを強制し、これにより、ダウンロードされたコードアセンブリとの名前のコンフリクトを排除する)。その後、クラスローダ113は、仮想マシン110からの要求に応答してランタイム呼出しスタック114上にコードアセンブリ106をロードする。
【0027】
例えば、仮想マシンが、第2のコードアセンブリ(例えば、図2のパーサコードアセンブリ)によって提供されるルーチンを呼び出す第1のコードアセンブリ(例えば、図2のメインコードアセンブリ202)を実行する。クラスローダ113が第2のコードアセンブリに関する仮想マシンの要求を受け取り、第2のコードアセンブリをランタイム呼出しスタック114にロードして、第1のコードアセンブリが、必要とされるルーチンを呼び出すことができるようにする。
【0028】
保護された領域に対する許可のないアクセスが防止されるのを確実にするため、ダウンロードされたコードアセンブリ106のそれぞれに関連する証拠108がポリシーマネージャ104に入力される。ポリシーマネージャ104は、各コードアセンブリに関連する許可交付セットを判定する(図4の許可交付セット414参照)。また、セキュリティポリシー指定116もポリシーマネージャ104に入力されて、適切な交付の計算を助ける。さらに、許可要求120がダウンロードされたコードアセンブリ106に関連して受け取られて、それぞれダウンロードされたコードアセンブリ106の許可ニーズの特性が指定される。一実施形態では、許可要求は、コードアセンブリ自体の中に2進シリアル化フォーマットで記録され、したがって、単一回のネットワーク通信でコードアセンブリとともにダウンロードされる。あるいは、許可要求は別のネットワーク通信でポリシーマネージャ104によってアクセス可能なリソースロケーションにおける別のどこかに記録されていてもよい。さらに、許可要求を記録することに関して2進シリアル化フォーマットが例としてのフォーマットとして指定されているが、本発明の範囲内で別のデータフォーマット(例えば、XML)も企図される。
【0029】
さらに、XMLなどの1つのデータフォーマットが、許可要求を初期に指定するのに開発者によって使用されることが可能である。したがって、コードアセンブリに組み込むため、XML仕様の許可要求を2進シリアル化フォーマットなどの別のデータフォーマットに符号化することができる。さらに、一部のコンパイラは、開発者がコードアセンブリのソースコードの中で宣言セキュリティ注釈を使用して許可要求を指定できるようにしている。次に、コンパイラは、その注釈を符号化してコードアセンブリに組み込まれた許可要求にすることができる。
【0030】
本発明の実施形態では、許可要求120は「分類(typed)」されており、したがって、各タイプの許可要求を適用して許可を異なる仕方でフィルタすることができる。以上の入力に基づき、ポリシーマネージャ104は各コードアセンブリに関する適切な交付を計算し、結果の許可交付セットをランタイム呼出しスタック114に渡す。
【0031】
このため、ランタイム呼出しスタック114の中の各コードアセンブリは、対応する許可交付セット(例えば、図2の許可交付セット208、210、および212)に関連付けられている。交付セットがポリシーマネージャから受け取られ、対応するコードアセンブリに関して計算された様々な許可を定義する。各コードアセンブリに関連する許可は、すべて「証拠」108と呼ばれる、コードアセンブリの相対的出所(例えば、ローカルまたは遠隔)、コードアセンブリの特定の出所(例えば、特定のURL)、またはコードアセンブリのその他の信頼特性に基づいて大幅に異なる可能性がある。本発明の実施形態では、信頼特性を使用して所与のコードアセンブリに関する許可交付セットが判定される。さらに、セキュリティポリシー指定116により、所与のコードアセンブリの信頼特性が評価される所与の企業、マシン、ユーザ、アプリケーション等に関するセキュリティフレームワーク内で、複数のポリシーレベルを定義することが可能である。
【0032】
図2は、呼び出された順序で積み重ねられた個々のコードアセンブリを含むランタイム呼出しスタック200を表している。個々のコードアセンブリは、遠隔リソースロケーションからダウンロードすること、または図1のコンピュータシステム102からローカルで取り出すことが可能である。個々のコードアセンブリは、図1の仮想マシン110によるアクセスおよび実行のためにクラスローダ113によってランタイム呼出しスタック114にロードされる。
【0033】
例えば、コードアセンブリ202中のメインアプリケーションクラスのオブジェクトが、まずクラスローダにより、図示するランタイム呼出しスタック200にロードされる。仮想マシンがそのメインクラスを実行すると、メインクラスはコードアセンブリ204からパーサオブジェクトを作成し、そのパーサオブジェクト中のメソッドを呼び出してコンピュータシステムの保護された領域中のデータファイルを構文解析する。したがって、クラスローダがコードアセンブリ204のパーサコードをランタイム呼出しスタック200にロードする。その後、パーサオブジェクトがコードアセンブリ206からファイルアクセスオブジェクトを作成し、そのファイルアクセスオブジェクトの中のメソッドを呼び出して保護されたファイルに対する読取り動作を行う。したがって、クラスローダがコードアセンブリ206のファイルアクセスコードをランタイム呼出しスタック200にロードする。
【0034】
各許可交付セットが、ランタイム呼出しスタックの中のコードアセンブリに対応する。このため、保護されたリソースにアクセスしようとするコードアセンブリの試みが、関連する許可交付セット、並びにランタイム呼出しスタック200中のその他のコードアセンブリの許可交付セットに照らして評価される。図2で示したアプリケーションによる保護されたファイルに対する読取り動作の例では、メインコードアセンブリ202が、許可交付セット208に関連している。メインコードアセンブリ202が許可交付セット210に関連しているパーサコードアセンブリ204の中のメソッドを呼び出す(矢印214で表される)。保護されたファイルにアクセスするため、パーサコードアセンブリ204は許可交付セット212に関連するファイルアクセスコードアセンブリ206中のメソッドを呼び出す(矢印216で表される)。ファイルアクセスコードアセンブリ206が保護されたファイルにアクセスすることができるかどうかを判定するため、許可交付セット208、210、212の「積集合(intersection)」が計算され、ファイルアクセス動作が許可されるかどうかを判定するのに使用される。例えば、許可交付セット212が保護されたファイルから読取りを行う許可を含むが、許可交付セット208または210の一方は、それを含まない場合には、保護されたファイルに対するアクセスが拒否される。
【0035】
一般に、「積集合」演算(記号「∩」で表される)は、オペランドセットの共通要素をもたらす集合演算である。例えば、Set1が要素A、B、およびCを含み、Set2が要素B、C、およびDを含む場合には、Set1とSet2の積集合(すなわち、Set1∩Set2)は、BおよびCに等しい。これとは対照的に、「和集合」演算(記号「∪」で表される)は、オペランドセット中のすべての要素(すなわち、セット中のすべての要素の重複しない集合)をもたらす集合演算である。例えば、Set1が要素A、B、およびCを含み、Set2が要素B、C、およびDを含む場合には、Set1とSet2の和集合(すなわち、Set1∪Set2)は、A、B、C、およびDに等しい。
【0036】
図3は、本発明の実施形態における証拠ベースのセキュリティを管理するためのコンピュータシステムを描いている。サーバ300(例えば、Webサーバ)が、通信網(図示せず)を介してクライアント302(例えば、Webクライアント)に結合される。クライアント302は、ランタイム環境(例えば、マイクロソフト(登録商標)コーポレーションからのCOM+2.0ランタイム環境)を実行してクライアント302上のアプリケーションの実行を管理する。本発明の実施形態では、ランタイム環境は、確認モジュール304、ローダモジュール306、およびポリシーマネージャ308を含む。
【0037】
前述した通り、仮想マシン312による実行のためにコードアセンブリがランタイム呼出しスタック318にロードされる。コードアセンブリの第1のカテゴリはローカルコードアセンブリ314によって代表され、ローカルコードアセンブリ314はクライアント302上を出所(origin)としているため、一般に、信頼されるコードアセンブリとみなされる。これとは対照的に、コードアセンブリの第2のカテゴリは、ダウンロードされたコードアセンブリ316によって代表され、ダウンロードされたコードアセンブリ316は、サーバ300などの遠隔のリソースロケーションまたは信頼されないリソースロケーションを出所とする可能性がある。本発明の実施形態では、ローカルコードアセンブリ314およびダウンロードされたコードアセンブリ316が、確認のために確認モジュール304に入力される。その後、コードアセンブリは、ローダモジュール306に入力されてランタイム呼出しスタック318にロードされる。
【0038】
コードアセンブリ314および316は、一般に、各コードアセンブリに関する許可交付セットを計算するのに使用される証拠(または証明)に関連している。一例としての証拠構成要素は、AUTHENTICODE署名であることが可能である。別の例としての証拠構成要素は、PICS(インターネットコンテンツ選択のためのプラットフォーム)ラベルであり、PICSラベルは、インターネットリソースのプロパティ(例えば、実行可能コードがウイルス検査済みである)を述べる。PICSラベルに関するさらなる詳細は、P.ResnickおよびJ.Millerによる「PICS:Internet Access Controls without Censorship(検閲なしのインターネットアクセス管理)」、Communications of ACM, 39(1996年)、87〜93ページで述べられており、この論文は、www.w3.org/pub/WWW/PICS/iacwcv2.htmにおいても閲覧可能である。証拠のその他の例には、限定するものとしてではなく、購入の証明またはライセンス、作成者識別子、ベンダ識別子、バージョニング情報、およびプログラム式の証明が含まれることが可能である。プログラム式の証明は、例えば、他の証明によって行われたステートメントを検査し、ネットワークから補足の情報をフェッチしてから、どの証拠ステートメントをポリシーマネージャ308に提供するかを決定するプログラムコードの形態であることが可能である。
【0039】
コードアセンブリ自体に関する証拠は、ホストによって提供されること、またはコードアセンブリ自体から抽出することが可能である。ローカルの、またはホストによって提供される証拠322は黙示的に信頼され、真であると信じられる。ただし、ダウンロードされた、またはアセンブリによって提供された証拠320は黙示的に信頼されることはなく、自己確認が行われるか(例えば、デジタル署名されている)、または独立に確認されるものでなければならない。ダウンロードされた証拠320は、1つ以上のリソースロケーションからダウンロードされていることが可能であり、コードアセンブリの出所であるリソースロケーションからダウンロードされた証拠に限定されない。
【0040】
ローカルの証拠322およびダウンロードされた証拠320はポリシーマネージャ308に入力され、ポリシーマネージャ308はセキュリティポリシーに基づいてその証拠を評価する。ポリシーマネージャ308内部で、証拠がセキュリティポリシー指定326(およびオプションとして、コードアセンブリによって要求された許可セットを定義する許可要求324)との組み合わせで評価されて、所与のコードアセンブリに対応する最終の許可交付セットが生成される。
【0041】
本発明の実施形態では、許可要求324は1つ以上のコードアセンブリ314および316に関連し、3つのタイプの許可要求セット、すなわち、(1)最低限の要求セット(MinRS)、(2)オプションの要求セット(OptRS)、および(3)拒否要求セット(RefuseRS)の少なくとも1つを含むことが可能である。本発明の範囲内で別のタイプの許可要求セットも企図されることを理解されたい。
【0042】
本発明の一実施形態(図6のフィルタリングの流れ図を参照)では、MinRSおよびRefuseRSに関するデフォルト値が、空集合に等しく、またOptRSに関するデフォルト値が、全集合に等しい。この結果、許可要求が全く提供されない場合には、図4の中間許可セット422が、結果の許可交付セット414として交付される。
【0043】
最低限の要求セットは最低限の許可条件を定義しており、関連するコードアセンブリが実行されるのに必要とする最低限の許可のセットを含むことが可能である。ポリシーマネージャ308によって生成された許可交付セットが最低限の許可条件を満たさない場合(例えば、最低限の要求セットが図5の許可セット生成器518によって出力される中間許可セットのサブセットではない場合)は、ポリシーマネージャ308は、関連するコードアセンブリ314または316がロードされるべきでないとローダ306に知らせるポリシー例外を発生させる。この実施形態では、コードアセンブリのロードおよび実行に先立って、最低限の要求セットが関わるセキュリティ判定が評価される。あるいは、ポリシーマネージャ308が、コードアセンブリが不十分な許可交付セットを伴ってロードされるのを許すことが可能であり、ただし、この不十分な許可交付セットのため、コードアセンブリは実行することができない。
【0044】
限定するものとしてではなく、順序付けされた要求セットの少なくとも1つが中間許可セットのサブセットである場合、最低限の許可条件が満たされる複数の順序付けされた要求セットを提供することを含め、本発明の範囲内で別の最低限の許可条件を使用することもできる。このため、満たされる第1の順序付けされた要求セットを使用して中間許可セットをフィルタすることができる。
【0045】
さらに、限定するものとしてではなく、最低限の許可条件が満たされていないことを示す関連するコードアセンブリ314または316に関連する属性を設定することを含め、コードアセンブリが実行されるのを防止するための別の技法を使用することもできる。例えば、ローダ306が各コードアセンブリに関する属性を検査してから、コードアセンブリをロードすることに取りかかることが可能である。また、ローダ306が結果を仮想マシン312に戻して、コードアセンブリのロードが失敗し、実行できないことを示すことも可能である。
【0046】
本発明の別の実施形態では、クライアント302内部のランタイム環境が、最低限の要求セットを満たす許可をコードアセンブリが獲得するのに失敗したのに応答して、修正処置を提供しようと試みることが可能である。例えば、最低限の要求セットが所与の保護されたディレクトリに書き込むための必須の許可を含む場合、ランタイム環境がユーザにクエリを行ってこの許可を交付することが可能である。さらに、ユーザが、そのような必須の許可を対話式に交付するのに必要とされる権限は、ユーザの身元に基づいて制限することができる(例えば、管理者ステータスを有するユーザだけが、対話式にそのような許可を交付することができる)。
【0047】
オプションの要求セットは、交付されることをコードアセンブリが選好するが、コードアセンブリが実行されるのに絶対的に必要ではない許可を含む。そのようなオプションの許可により、コードアセンブリが、より高い機能を提供することが可能になる。ただし、オプションの許可が交付されない場合には、最低限の要求セットによって定義されるより基本的な機能がそれでも利用可能である。
【0048】
本発明の一実施形態は、コードアセンブリにオプションの機能を組み込むことによってオプションの要求セットのオプションとしての性質を扱う。つまり、オプションの要求セット中の許可のいくつか、またはすべてが交付されなかった場合、コードアセンブリは、実行中、要求の動作が拒否されたとき(または、要求のオプションの許可が拒否されたとき)、このことを知ることができる。そのような拒否に応答して、コードアセンブリは、最低限の許可セットの中で示される許可などの、異なる許可を利用する別の、または追加のコードを実行することができる。この実施形態では、オプションの要求セットが関わるセキュリティ判定がコードアセンブリの実行中に評価される。
【0049】
別の実施形態では、複数のオプションの要求セットが、ポリシーマネージャ308によって取得されてもよい。複数のオプションの要求セットを処理して、複数のレベルの機能に対応して要求された許可を指定するようにしてもよい。許可セットによって満たされることが可能な、または可能でないオプションの要求セットに基づき、ポリシーマネージャ308は、1つ以上のクラスをロードするのを除外するようローダ306に合図することができる。例えば、所与のクラスによって必要とされる許可が入手可能でないことをローダ306が事前に知っている場合、そのクラスをロードすることが必要ない可能性がある。そのようなオプションの要求セットに順序付けを行って、最高レベルの許可交付により、適切なコードアセンブリのロードが行われて、最高レベルの機能が提供されるようにすることができる。
【0050】
あるいは、オプションの要求セットを使用してオプションの許可のグループを指定することができる。例えば、第1のレベルの機能を提供するのに、コードアセンブリが許可A、B、C、およびD(第1のオプションの要求セットによって指定される)を必要とし、一方、第2のレベルの機能を提供するのに、そのコードアセンブリが許可AおよびB(第2のオプションの要求セットによって指定される)だけしか必要としないことが可能である。このため、許可セットが許可A、B、およびCだけしか提供できない場合、第1のオプションの要求セットは満たされないが、第2のオプションの要求セットは満たされる。したがって、第2のオプションの要求セットが許可セットをフィルタして許可AおよびBだけを提供し、許可Cの不必要な交付を回避する。
【0051】
さらに、確認モジュール304における確認プロセス、およびポリシーマネージャ308におけるセキュリティ管理プロセスが、同時に実行されることが可能であり、この2つのプロセスは、互いに影響を及ぼすように通信することができる。例えば、ポリシーマネージャ308は、証拠を評価して、所与のコードアセンブリのタイプの安全性が保証されるのを示すことができる。したがって、このタイプの安全性の保証が確認モジュール304に伝えられることが可能であり、確認モジュール304は、その情報に基づいてタイプを検査する動作をスキップすることができる。あるいは、確認モジュール304が、所与のコードアセンブリがタイプの安全性の検査に合格しないと判定することができる。これに応答して、確認モジュール304はポリシーマネージャ308と通信して、タイプの安全性の検査に合格しなかったにも関わらず、そのコードアセンブリに実行の許可が交付されるかどうかの照会を行うことができる。
【0052】
図4は、本発明の実施形態における証拠ベースのセキュリティを管理するためのポリシーマネージャのモジュールを描いている。図4に関連して説明した実行可能なモジュールがコンピュータシステム上で実行可能なソフトウェアモジュールとして実装されていることが可能である。あるいは、ハードウェアで、またはハードウェアとソフトウェアの組み合わせで実装される実行可能なモジュールも本発明の範囲の中で企図される。さらに、本発明の範囲を逸脱することなく、本明細書で開示するモジュールをマージしてより少ない数のモジュールにするか、または分割して追加のモジュールにすることができる。
【0053】
ポリシーマネージャ400が、セキュリティポリシー指定402および証拠セット404を受け取るように結合される。セキュリティポリシー指定402は、1つ以上のコードグループの定義を指定する。一実施形態では、コードグループは1つ以上のコードグループ集合に構成される。あるいは、コードグループを1つ以上のコードグループ階層に構成してもよい。また、セキュリティポリシー指定は、1つ以上のポリシーレベルも定義することができる。証拠セット404は、コンピュータシステムによって受け取られたコードアセンブリに関連する信頼特性を定義する。
【0054】
本発明の一実施形態では、パーサモジュール406がセキュリティポリシー指定402を受け取り、1つ以上の名前付きコードグループの定義を抽出する。各コードグループは、メンバーシップ基準、子定義(コードグループの0または1つ以上の子コードグループを指定する)、およびコードグループ許可セットに関連している。メンバーシップ基準は、所与のコードグループに関するメンバーシップの条件を指定し、証拠セットは、対応するコードアセンブリがそのコードグループのメンバーであるとみなされるためには、その条件を満たさなければならない。子コードグループ定義は、所与のコードグループの子を指定する。コードアセンブリが第1のコードグループ(すなわち、親コードグループ)におけるメンバーシップを証明した場合、そのコードアセンブリは、その親コードグループの子コードグループにおけるメンバーに入れるように考慮される。コードグループ許可セットは、コードグループに割り当てることができる許可の集合を表す。コードアセンブリがコードグループのメンバーであると判定された場合、関連する許可セットの許可がコードアセンブリに交付されることが可能であり、コードアセンブリは、ポリシーマネージャ内部でその他の動作を受ける。
【0055】
その他のコードグループ実施形態には、別のデータ構成が含まれることが可能である。例えば、一実施形態では、コードグループ集合はそれぞれがメンバーシップ基準および許可セットを含み、前述の子コードグループ定義を省略するコードグループの1次元リストで表される。この実施形態では、1次元リストは、順序付けられていても、順序付けられていなくてもよい。さらに、本発明の範囲内でその他のデータ構成も企図される。
【0056】
本発明の例としての実施形態では、許可セットに命名を行い、セキュリティポリシー指定402の中で識別を可能にすることができる。同じ名前の付けられた許可セットに複数のコードグループを割り当てることができる。このため、名前付き許可セットに変更(例えば、個々の許可の挿入または削除)が行われた場合、その変更は、その名前付き許可セットに関連するコードグループのすべてに影響を及ぼす。例えば、異なるコードグループのメンバーであるいくつかのエクストラネットビジネスパートナーのWebサイトに同じ許可を交付するため、単一の名前の付けられた許可セットを定義し、そのいくつかのコードグループに割り当てることができる。
【0057】
本発明の実施形態では、3つのタイプの名前付き許可セットがサポートされる。すなわち、(1)標準の許可セット−このセットは、事前定義され、変更することができない、(2)事前定義された許可セット−このセットは、管理者が変更することができる、および(3)カスタムの許可セット−このセットは、許可セットの名前が標準の許可セットの名前または事前定義された許可セットの名前とコンフリクトしない限り、ユーザが定義することができる。一実施形態では、標準の許可セットは、すべてのポリシーレベルで利用可能であり、個別のどのポリシーレベルでも再定義することができない(汎用範囲)。この実施形態では、事前定義された許可セットおよびカスタムの許可セットは任意の所与のポリシーレベル中で定義されて参照され、その他のポリシーレベルからは参照することができない(ポリシーレベル範囲)。ただし、本発明の別の実施形態では、どの許可セットの範囲も所与のポリシーレベルを超えて広がることが可能であることを理解されたい。
【0058】
次の表1は、本発明の実施形態で利用可能な標準の許可セットを説明している。インターネットセットおよびローカルイントラネットセットなどのいくつかの標準の許可セットは、事前定義されているが、ユーザまたは管理者によって変更されることが可能である。確認スキップなどのその他の許可セットは、本発明の実施形態では変更することができない。また、本発明の範囲内で別の名前付き許可セットも企図され、表1の中で説明する名前付き許可セットは、本発明を逸脱することなく変更することができる。
【0059】
【表2】
【0060】
本発明の実施形態における例としての許可として、本明細書で多数の許可について述べたが、本発明の範囲内で企図される可能な許可のリストは、これらの例としての許可に限定されない。例えば、確認が失敗したのにも関わらず、コードアセンブリが実行されるのを許す許可を交付することもできる。あるコードアセンブリの中のクラスが、別のコードアセンブリ中のクラスから継承を行うことを可能にする別の許可(例えば、サブクラスに対する権利)を交付することもできる。
【0061】
所与のコードグループに関連するコードグループ許可セットが、コードグループに関連する許可を指定することができる。あるいは、所与のコードグループに関連するコードグループ許可セットが、コードグループおよびすべての親元コードグループに関連する許可を指定することができる。この柔軟性により、セキュリティポリシー指定の中で様々なセキュリティ構成(例えば、ポリシーレベル、許可セット、メンバーシップ基準等)を定義することが可能になる。以下で述べる通り、ポリシーマネージャは、そのような様々なセキュリティ構成に対応するように開発することができる。
【0062】
一実施形態では、セキュリティポリシー指定402は、それぞれが1つ以上のコードグループを有する複数のポリシーレベルも指定することができる。コードグループは、1つ以上のコードグループ集合に構成することができる。ポリシーレベルにより、管理者が、例えば、異なるマシン、異なるユーザ、異なるアプリケーション、異なる期間、異なるユーザグループ等に関して異なるセキュリティポリシーを定義することが可能になる。メンバーシップエバリュエータ410は、所与のポリシーレベルに関するポリシーレベル許可セットを生成する際、そのポリシーレベルに関連するコードグループ全部を横断(traverse)する。したがって、ポリシーマネージャ400は個々のポリシーレベルに関連する許可セットを生成することができる。その後、複数のポリシーレベルからの許可セットを処理して(例えば、マージまたは選択して)、結果の許可交付セット414を生成することができる。
【0063】
図示する実施形態では、コードグループ集合生成器モジュール408がパーサモジュール406から構文解析された定義を受け取り、コンピュータシステムのメモリの中で1つ以上のコードグループ集合を生成する。メンバーシップエバリュエータモジュール410は証拠セット404を受け取り、対応するコードアセンブリに関係する信頼特性(trust characteristics)を抽出する。メンバーシップエバリュエータモジュール410はコードグループ全体を横断して、コードアセンブリが1つ以上のコードグループのメンバーであるかどうかを判定する。許可セット生成器モジュール412が、メンバーシップエバリュエータモジュール410からメンバーシップ判定を受け取り、コードアセンブリがメンバーであると判定されたコードグループに関連するコードグループ許可セットの論理上の組み合わせに基づき、中間許可セット422を生成する。許可/要求フィルタモジュール424が中間許可セット422をフィルタして、結果の許可交付セット414を生成する。
【0064】
図5は、本発明の実施形態においてポリシーマネージャが動作する例としてのポリシーレベルを描いている。セキュリティポリシー指定500がポリシーマネージャ502上で処理されて、1つ以上のセキュリティポリシーレベル506、508、および510が生成される(この処理は、ポリシーレベルのそれぞれをポイントする破線で表される)。本発明の実施形態では、セキュリティポリシー指定500はXML(エクステンシブルマークアップ言語)ファイル内に書かれる。ただし、別の実施形態では、SGML(標準一般化マークアップ言語)、HTML(ハイパーテキストマークアップ言語)、RDF(リソース記述フレームワーク)、ビジュアルベーシック、およびその他の標準およびカスタマイズされたデータフォーマットおよびコードフォーマットを限定するものとしてではなく含む、その他のデータフォーマットも使用することができる。
【0065】
本発明の実施形態では、セキュリティポリシー指定500は、各ポリシーレベルがコードグループから構成されたセキュリティポリシーの永続的な表現(例えば、ポリシーレベルの順序付けされた集合および/またはコードグループ集合)である。より下位のポリシーレベルは、一般に、より高位のポリシーレベルより制限的なポリシー制限を指定する。セキュリティポリシー指定500は、通常、適切な許可を有するシステム管理者、ユーザ、またはアプリケーションセットアッププログラムによって生成される。例としてのポリシーレベルには、限定するものとしてではなく、企業ポリシーレベル、マシンポリシーレベル、ユーザポリシーレベル、およびアプリケーションポリシーレベルが含まれることが可能である。
【0066】
本発明の一実施形態では、最高レベルのポリシーレベルは、任意の所与の企業内部のすべてのシステムに適用されるセキュリティポリシーを定義することが可能な企業ポリシーレベルである。より低いポリシーレベルは、所与のシステム上のすべてのユーザに適用されるセキュリティポリシーを定義することが可能なマシンポリシーレベルである。ユーザポリシーレベルは、ユーザがどの個別のシステムにログインしているかに関わらず、所与のユーザに適用されるセキュリティポリシーを定義することができる。アプリケーションポリシーレベルは、アプリケーションを実行するユーザまたはシステムに関わらず、所与のアプリケーションに適用されるセキュリティポリシーを定義することができる。本発明の範囲内で、さらなるポリシーレベルおよびポリシーレベル順序も企図される。
【0067】
また、セキュリティポリシー指定500は、コードグループ集合(例えば、コードグループレベルの集合)を使用してセキュリティを管理することもでき、コードグループ集合はメンバーシップ条件によって定義され、許可セットおよび特別の属性を含む。セキュリティポリシー指定500は、関連する許可のセットを有するコードグループの宣言から成る。所与のコードグループのメンバーであるコードアセンブリには、そのコードグループに関連する許可セットからの許可が交付されることが可能である。コードグループメンバーシップは、デジタル署名、コードアセンブリの出所(origin)などのコードアセンブリに関連する証拠セット504を使用してポリシーマネージャ502によって判定される。管理者は、新しいコードグループに属するコードアセンブリに追加の許可を交付するため、コードグループ集合にコードグループを追加することができる。
【0068】
本発明の実施形態では、コードグループに「排他」プロパティフラグを属性として与えることができ、このフラグは、その特定のコードグループに関連する許可だけが、メンバーのコードアセンブリに適用されるべきことを指定する。その他のメンバーコードグループからの許可セットは無視される(すなわち、マージされない)。
【0069】
本発明の実施形態では、コードグループは、「オール」コードアセンブリに対応するルートノードを有するコードグループ階層中で定義される。このルートノードは、子ノードを有する親コードグループを表し、子ノードのそれぞれも子ノードを有することが可能であり、以下同様、コードグループ階層が形成される。限定するものとしてではなく、コードグループの順序付けされた、または順序付けされていないリストを含め、別のコードグループ集合も本発明の範囲内で企図される。ポリシーマネージャ502が、あるコードアセンブリが親コードグループのメンバーであると判定した場合には、そのコードアセンブリは親コードグループの子に照らして試験されて、子としてのメンバーシップが判定される。例としてのコードグループタイプおよびメンバーシップ基準を次の表2で説明しているが、本発明の範囲内でその他のコードグループタイプも企図される。さらに、コードグループタイプをプロパティに関連付けることができる。例えば、コードグループタイプ「ソフトウェア発行元」を「発行元:マイクロソフト(登録商標)」のように、特定の発行元「マイクロソフト(登録商標)」に関連付けることができる。
【0070】
【表3】
【0071】
さらに、セキュリティポリシー指定500は、複数のポリシーレベルを定義することができる。図示する実施形態では、各ポリシーレベル(例えば、企業レベル506、マシンレベル508、およびユーザレベル510)が個別のコードグループ集合を有する。前述した通り、本発明の範囲内で複数のポリシーレベルが割り振られる(例えば、ルートノードの子に関連するサブツリー1つあたり1つのポリシー)1つ以上のコードグループ集合などの、その他のポリシーレベル構成を使用してもよい。
【0072】
図示する実施形態では、各ポリシーレベルからポリシーレベル許可セット(例えば、企業レベル許可セット512、マシンレベル許可セット514、またはユーザレベル許可セット516)が生成される。ポリシーレベル許可セットマージャ518が、ポリシーレベル許可セット512、514、および516をマージし、あるいは別の方法で処理して中間許可セット526を生成する。
【0073】
許可/要求フィルタ524は、許可要求522を入力し、フィルタアルゴリズムを中間許可セット526に適用して、適切な場合、結果の許可交付セット520を生成する。
【0074】
例としての実施形態では、許可/要求フィルタ524は、図6との組み合わせで説明する通り、フィルタアルゴリズムを適用して許可交付セット520を生成する。
1)MaxRS =(MinRS∪OptRS) [動作600]
2)If(MinRSがIntPSのサブセットでない) [動作602]、then ポリシーマネージャ502が、ポリシー例外を発生させてコードアセンブリのロードおよび/または実行を防止する [動作604]
3)If(MinRSがIntPSのサブセットである) [動作602]、then PGS =(MaxRS∩IntPS)− RefuseRS [動作606]
4)If(PGSが実行許可を含む) [動作608]、then コードアセンブリが図3のローダ306によってロードされることが可能であり[動作610]、また、PGSがコードアセンブリに関連して図3のランタイムスタック318にロードされることが可能である[動作612]
5)If(PGSが実行許可を含まない) [動作608]、then ポリシーマネージャ502がポリシー例外を発生させてコードアセンブリのロードおよび/または実行を防止する [動作614]
ただし、PGSは許可交付セット520を表し、IntPSは中間許可セット526を表し、MaxRSは最大限の要求セットを表し、MinRSは最低限の許可要求を表し、OptRSはオプションの許可要求を表し、また、RefuseRSは拒否許可要求を表す。MinRS、OptRS、およびRefuseRSは、許可要求522の要素として受け取られる。
【0075】
本発明の実施形態では、MinRS、OptRS、またはRefuseRSが指定されない場合、これらには、デフォルトの値が割り当てられる。MinRSおよびRefuseRSに関して、デフォルトの値は、空集合である。OptRSに関して、デフォルトの値は、全集合である。例えば、MinRSおよびOptRSが指定されない場合、PGSは、IntPS−RefuseRSに等しい。
【0076】
論理集合演算606を使用して中間許可セットのサブセットを生成して、必要とされる許可だけが許可交付セットの中に含められるようにする。つまり、中間許可セットは、コードアセンブリによって必要とされるか、または要求される許可セットより、はるかに広い可能性がある。したがって、不必要な、または要求されていない許可を結果の許可交付セットから除外することができる。
【0077】
以上に開示したアルゴリズムは、許可要求を使用して中間許可セットをフィルタするための例としてのアルゴリズムにすぎないことを理解されたい。本発明の範囲内で別のアルゴリズムも企図され、特に、別の許可要求の組み合わせが使用される場合はそうである(例えば、追加のタイプの許可要求セット)。
【0078】
図7は、本発明の実施形態を実施するために役立つ例としてのシステムを示している。本発明の実施形態のための例としてのコンピュータシステムには、プロセッサユニット702と、システムメモリ704と、システムメモリ704を含む様々なシステム構成要素をプロセッサユニット700に結合するシステムバス706とを含む従来のコンピュータシステム700の形態の汎用コンピュータデバイスが含まれる。システムバス706は、様々なバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものであることが可能である。システムメモリは、読取り専用メモリ(ROM)708およびランダムアクセスメモリ(RAM)710を含む。コンピュータシステム700内部の要素間における情報の転送を助ける基本ルーチンを含む基本入力/出力システム712(BIOS)がROM708の中に記憶されている。
【0079】
コンピュータシステム700は、ハードディスクに対して読取りおよび書込みを行うためのハードディスクドライブ712と、取外し可能な磁気ディスク716に対して読取りおよび書込みを行うための磁気ディスクドライブ714と、CD−ROM、DVD、またはその他の光媒体などの取外し可能な光ディスク719に対して読取りおよび書込みを行うための光ディスクドライブ718とをさらに含む。ハードディスクドライブ712、磁気ディスクドライブ714、および光ディスクドライブ718は、それぞれ、ハードディスクドライブインターフェース720、磁気ディスクドライブインターフェース722、および光ディスクドライブインターフェース724でシステムバス706に接続される。以上のドライブおよび関連するコンピュータ可読媒体により、コンピュータシステム700のためのコンピュータ可読命令、データ構造、プログラム、およびその他のデータの不揮発性ストレージが提供される。
【0080】
本明細書で説明する例としての環境は、ハードディスク、取外し可能な磁気ディスク716、および取外し可能な光ディスク719を使用するが、データを記憶することができるその他のタイプのコンピュータ可読媒体も、例としてのシステムで使用することができる。例としての動作環境で使用することができるその他のタイプのコンピュータ可読媒体の例には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌイカートリッジ、ランダムアクセスメモリ(RAM)、および読取り専用メモリ(ROM)が含まれる。
【0081】
オペレーティングシステム726、1つ以上のアプリケーションプログラム728、その他のプログラムモジュール730、およびプログラムデータ732を含め、いくつかのプログラムモジュールが、ハードディスク、磁気ディスク716、光ディスク719、ROM708、またはRAM710の上に記憶されていることが可能である。ユーザは、キーボード734、およびマウス736またはその他のポインティングデバイスなどの入力デバイスを介してコンピュータシステム700にコマンドおよび情報を入力することができる。その他の入力デバイスの例には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、およびスキャナが含まれることが可能である。以上の入力デバイス、およびその他の入力デバイスは、しばしば、システムバス706に結合されたシリアルポートインターフェース740を介して処理装置702に接続される。それでも、以上の入力デバイスは、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースで接続されてもよい。また、モニタ742または他のタイプの表示デバイスも、ビデオアダプタ744などのインターフェースを介してシステムバス706に接続される。モニタ742に加え、コンピュータシステムは、通常、スピーカおよびプリンタなどのその他の周辺出力デバイス(図示せず)も含む。
【0082】
コンピュータシステム700は、遠隔コンピュータ746のような1つ以上の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境で動作することができる。遠隔コンピュータ746は、コンピュータシステム、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、通常、コンピュータシステム700に関連して前述した要素の多く、またはすべてを含む。ネットワーク接続は、ローカルエリアネットワーク(LAN)748およびワイドエリアネットワーク(WAN)750を含む。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【0083】
LANネットワーキング環境で使用される場合、コンピュータシステム700は、ネットワークインターフェースまたはネットワークアダプタ752を介してローカルネットワーク748に接続される。WANネットワーキング環境で使用される場合、コンピュータシステム700は、通常、インターネットなどのワイドエリアネットワーク750を介して通信を確立するためのモデム754またはその他の手段を含む。内部または外部にあることが可能なモデム754は、シリアルポートインターフェース740を介してシステムバス706に接続される。ネットワーク化された環境では、コンピュータシステム700に関連して描いたプログラムモジュール、またはプログラムモジュールの部分を遠隔メモリ記憶デバイスの中に記憶することができる。図示したネットワーク接続は例としてのものであり、コンピュータ間で通信リンクを確立するその他の手段も使用できることが理解されよう。
【0084】
図示する実施形態では、セキュリティポリシー指定が、例えばハードディスクドライブ712上のファイルからメモリ704に読み込まれることが可能である。CPU702が仮想マシンを実装し、リソースロケーションから受け取られたコードアセンブリに関連付けられた分類された許可要求を使用して許可交付セットを生成するコンピュータプロセスのためのメモリ常駐命令コードを実行する。さらに、CPU702は、特許請求の範囲で記載するポリシーマネージャを実装するソフトウェア構成要素も実行する。
【0085】
図8は、本発明の実施形態におけるリソースロケーションから受け取られたコードアセンブリに関連する分類された許可要求を使用して許可交付セットを生成するための動作を示す流れ図である。定義する動作800が、セキュリティポリシー指定に従ってコードグループ集合を定義する。コードグループ集合は1つ以上のコードグループを含み、またコードグループ階層として構成することができる。受け取る動作802がコードアセンブリに関連する証拠を受け取る。メンバーシップ動作804がコードグループとの関係でコードアセンブリのメンバーシップを評価する。一般に、この評価は各コードグループに関連するメンバーシップ基準に基づく。
【0086】
生成する動作806が、メンバーシップ動作804によって行われた1つ以上のメンバーシップ判定に基づいて許可セットを生成する。例えば、コードグループ集合がコードグループ階層として構成される一実施形態では、許可セットは、コードアセンブリがメンバーであると判定された親コードグループおよび子コードグループに関連する許可を組み合わせることによって動的に生成される。組み合わせられた許可は、生成する動作806から許可セットとして出力され、この許可セットが許可/要求フィルタモジュールによって受け取られる。
【0087】
受け取る動作808が、コードアセンブリに関連する許可要求を受け取る。この許可要求は、コードアセンブリの一部として受け取ること、あるいはローカルのリソースロケーション(例えば、コンピュータシステム内部で、接続された周辺機器または記憶媒体から、またはローカルのネットワーク記憶場所から)、または遠隔のリソースロケーション(例えば、インターネットを介して)などの別のソースから受け取る(または取得する)ことが可能である。
【0088】
フィルタする動作(filtering operation)810が、許可要求セットに基づいて許可セットをフィルタして、コードアセンブリの実行を制御する。フィルタする動作810が、最低限の要求セットがコードアセンブリに関連して提供される場合、その要求セットが許可セットのサブセットでないと判定した場合、ポリシーマネージャがコードアセンブリのロードまたは実行を防止することができる。同様に、実行許可が許可セットに含まれない場合、フィルタする動作810はコードアセンブリのロードまたは動作を防止することができる。
【0089】
また、フィルタする動作810は、最低限の要求セットまたはオプションの要求セットがコードアセンブリに関連して提供される場合、コードアセンブリによって要求されていない許可を交付するのを回避するために許可交付セットを生成するとき、その要求セットに含まれない許可を除外することもできる。さらに、拒否要求セットがコードアセンブリに関連して提供される場合、その要求セットに含まれる許可も許可交付セットから除外することができる。
【0090】
本明細書で説明する本発明の実施形態は、1つ以上のコンピュータシステムにおける論理ステップとして実施される。本発明の論理動作は、(1)1つ以上のコンピュータシステムにおいて実行される一続きのプロセッサによって実施されるステップとして、また(2)1つ以上のコンピュータシステム内部の相互に接続されたマシンモジュールとして実施される。実施形態は、本発明を実施するコンピュータシステムのパフォーマンス要件に応じた選択の問題である。したがって、本明細書で説明する本発明の実施形態を構成する論理動作は、動作、ステップ、オブジェクト、またはモジュールと様々に呼ばれる。
【0091】
以上の明細、例、およびデータにより、本発明の例としての実施形態の構造および使用法の完全な説明が提供される。本発明の多くの実施形態を本発明の趣旨および範囲を逸脱することなく実施することができるので、本発明は、頭記の特許請求の範囲に存する。
【図面の簡単な説明】
【図1】
本発明の実施形態における証拠ベースのセキュリティポリシーマネージャを描いた図である。
【図2】
本発明の実施形態におけるランタイム呼出しスタックを示す図である。
【図3】
本発明の実施形態における証拠ベースのセキュリティを管理するためのコンピュータシステムを描いた図である。
【図4】
本発明の実施形態における証拠ベースのセキュリティを管理するためのポリシーマネージャモジュールを描いた図である。
【図5】
本発明の実施形態におけるポリシーマネージャが動作する例としてのポリシーレベルを描いた図である。
【図6】
本発明の実施形態で使用されるフィルタリングを示す流れ図である。
【図7】
本発明の実施形態を実施するのに役立つ例としてのシステムを示す図である。
【図8】
本発明の実施形態における許可セットを処理するための動作(operations)を示す流れ図である。[0001]
This application has been filed as a PCT application by Microsoft® Corporation (MICROSOFT® CORPORATION), United States of America, designating all countries other than the United States.
[0002]
(Technical field)
The present invention relates generally to computer security, and more particularly, to filtering permission sets using permission requests associated with code assemblies.
[0003]
(Background of the Invention)
Security risks, such as allowing unauthorized access to a user's system, are associated with many online activities. Therefore, security mechanisms have been developed to protect the user's system. For example, a user can download an on-demand application from the Internet and execute the application from within a browser. To prevent unauthorized access to a user's system resources (eg, directories on the user's hard disk), the user's system is protected by "sandbox" security implemented within a browser environment. Sandbox security involves a limited secure area of computer memory where an application can be executed to prevent the application from accessing system resources residing outside the secure area.
[0004]
However, in some situations, the user may wish to allow the downloaded application to have controlled access to certain resources within the user's system. For example, a user may generate a document using an on-demand word processing application and then desire to save the document to a directory in the user's system.
[0005]
Existing approaches to providing such applications with secure, controlled access to the user's system are too cumbersome and inflexible. On the one hand, for example, a security policy in which a given application is associated with a permission set is defined inside the policy database. This security policy, in combination with origin information, signature information, and access constraints, helps define a "trusted" relationship between the application and the user's system.
[0006]
Consider the following example.
[0007]
[Table 1]
[0008]
In this example, if an applet from the source location “www.BobsWidgets.com” is signed with a key corresponding to another key included in BobsCertificate, a certain file access permission is issued to this applet. Applets are traditionally programs that are designed to be executed from within a browser, rather than directly from within an operating system. This applet is given permission to read files from the "/ tmp" directory on the host system and create and write files in the "/ tmp / bwdir" directory. Another common permission qualifier is "execute" permission. Other security policy designations, for example, allow broad permissions to access files at any system location, regardless of the source of the application or whether the application is signed or unsigned It is.
[0009]
In such an approach, security policies are particularly static and remain fixed for long periods of time. In essence, as on-demand application processing over the Internet becomes more common, static security policies are too restrictive. In addition, less frequent security policy changes that are actually made (usually made by the system administrator) can introduce security weaknesses or gaps, or gain access to previously authorized applications. Denying may prevent authorized applications from running. Because of this, existing security architectures cannot dynamically and flexibly determine whether an application (or a given code assembly of an application) can delegate a certain amount of access to a user's system.
[0010]
Further, in existing security frameworks, the allocation of permissions is determined by security policies defined in the user's system, and in some cases by queries to the user while the application is running or loading. Thus, components of an on-demand application generally do not affect which permissions are allocated according to security policies. For example, a component from an authorized location may be granted extensive access to a protected area of a computer system, and that component does not require or even desire such access Even if there is a possibility, it may be issued. For liability reasons, a component may want more limited access. Further, a component may not be able to perform without a minimum set of permissions. With existing security frameworks, during code assembly execution, an insufficient grant set is detected only when the requested operation fails due to lack of permissions, at which point execution time is wasted. And error recovery may be more complex.
[0011]
(Summary of the Invention)
According to the present invention, these and other problems are solved by an evidence-based policy manager that generates a grant set for code assemblies received from a resource location. The permission grant set can be affected (eg, filtered) by a permission request received in connection with the code assembly. The authorization request may define the characteristics of the authorization needs of the code assembly. For example, a permission request can include a minimum set of permissions that specify the permissions required by the code assembly to operate properly with at least the basic functionality. The permission request may also include an optional request set that specifies the permissions required by the code assembly to provide an alternate level of functionality. Further, the permission request may include a set of deny requests specifying permissions that should not be issued to the code assembly.
[0012]
In an embodiment of the invention, a method is provided for processing a permission set associated with a code assembly received from a resource location to control execution of the code assembly. The permission set includes at least one permission associated with the code assembly. A permission request set is received in association with the code assembly. The permission set is filtered based on the permission request set to control execution of the code assembly.
[0013]
In another embodiment of the invention, the method further includes generating a permission set based on the membership of the code assembly in one or more code groups. A code group set is defined based on the security policy specification. A code group set includes one or more code groups. Evidence is received in connection with the code assembly. Code assembly membership in one or more code groups is evaluated based on the evidence.
[0014]
In yet another embodiment of the present invention, there is provided a policy manager module for processing a permission set associated with a code assembly received from a resource location to control execution of the code assembly, the module comprising: And a filter that receives the permission set and permission request set associated with. The filter also controls execution of the code assembly by filtering the permission set based on the permission request set.
[0015]
In another embodiment of the present invention, the article of manufacture is provided as computer program products. One embodiment of a computer program is readable by a computer system for processing a set of permissions associated with a code assembly received from a resource location to execute a computer process for controlling execution of the code assembly. A computer program storage medium for encoding a computer program is provided. Another embodiment of a computer program is embodied on a carrier by a computer system and encodes a computer program for processing a permission set associated with a code assembly received from a resource location and controlling execution of the code assembly. It can be provided in a computer data signal.
[0016]
In one embodiment, the computer program encodes a computer program for executing a computer process on a computer system that defines a set of code groups based on a security policy specification. A code group set includes one or more code groups. Evidence is received in connection with the code assembly. Code assembly membership in one or more code groups is evaluated based on the evidence. A permission set is generated based on code assembly membership in the one or more code groups. The permission set includes at least one permission associated with the code assembly. A logical set operation is performed on the permission set and the permission request set to generate a permission grant set.
[0017]
A significant benefit of embodiments of the present invention is that permissions issued to the code assembly by the policy manager are filtered according to permission requests. This affects the permissions that code assemblies receive in concert with what the applicable security policy allows. Permissions are used to control the execution of code assemblies within a computer system. It is advantageous to only issue the permissions actually required by the code assembly. For example, security policies can grant broad permissions to trusted code assemblies. However, if the code assembly does not require a given permission, inadvertent access to a protected area of the computer system as caused by errors in the code assembly can be avoided. Further, the code assembly denies a given set of permissions to avoid being exposed to potential liability for accessing (and possibly destroying) a protected area of the computer system. be able to.
[0018]
These and various other features, as well as other advantages, which characterize the present invention, will be apparent from a reading of the following detailed description and a review of the associated drawings.
[0019]
(Detailed description of the invention)
Embodiments of the present invention provide an evidence-based policy manager that generates an authorization grant set for code assemblies received from a resource location. Generally, the code assembly is a. EXE file, or. It is a unit of packaged code such as a DLL file. The policy manager can execute on a computer system (eg, a Web client or a networked workstation) in combination with a validation module and a class loader of the runtime environment. However, the policy manager can run outside of the runtime environment. The permission grant set generated for the code assembly is applied in the runtime call stack to help the system determine whether a given system operation by the code assembly is permitted. The policy manager can process authorization requests received in connection with the code assembly. Further, both code assembly and evidence can be received from a local source (eg, from within a local machine), a local network or peripheral, or a remote resource location over a network (eg, the Internet).
[0020]
In embodiments of the present invention, a permission request is used to filter permissions initially provided by the policy manager based on security policy specifications and evidence received in connection with the code assembly. This allows the code assembly to affect the resulting permission grant set associated with the code assembly and avoid receiving excessive or unnecessary permissions.
[0021]
FIG. 1 depicts an evidence-based security policy manager 104 in an embodiment of the present invention. A resource location 100, such as a server, is accessible by a computer system 102 (eg, a web client or web server) via a network (not shown). The resource location is generally indicated by a URI (Uniform Resource Identifier), which is a generic term for all types of names and addresses that refer to objects on the World Wide Web. A URL (uniform resource locator) is a type of URI. Example resources can include, but are not limited to, documents, images, audio data, applications, routines, and other data and code data stores accessible over a network. It should be understood that the resource location can be local to
[0022]
One type of resource relevant to embodiments of the present invention is code assembly. A code assembly can consist of, for example, applet code, application code, class code, routine code, and data. The code and data included in the code assembly can be in the form of bytecode, intermediate code, machine code, and data components (such as classes, images, audio clips and video clips). Further, the code assembly can be packaged in an archive file containing one or more classes downloaded from a resource location. In one embodiment of the present invention, classes of applications can be combined into modules (the output of a link process), and one or more modules can be combined into a code assembly.
[0023]
FIG. 1 is depicted with respect to a downloaded application running on
[0024]
[0025]
Virtual machines provide a self-contained operating environment that performs many of the functions of a separate computer. For example, applications can run in a virtual machine without having direct access to the host operating system. This design has at least two advantages.
-System independence: The application runs similarly on any virtual machine that supports the programming language in which the application is written, regardless of the underlying hardware and software of the system. For example, the same application (ie, the same programming code) can be executed in a virtual machine on a different computer system having a different type of microprocessor and a different type of operating system.
Security: applications running in virtual machines generally access protected system resources (ie, operating system, file system, protected area of memory, connected networks or connected peripherals). Is prevented. However, it should be understood that embodiments of the present invention can evaluate evidence and security policies to determine whether to allow an application to access protected system resources. If permission is granted for a given operation, the application is considered "trusted" for that operation. The permission request received in connection with the code assembly can be used to filter the resulting permission grant set used to determine what actions the code assembly can perform.
[0026]
An application component (e.g., downloaded code assembly 106) is received by the
[0027]
For example, the virtual machine executes a first code assembly (eg, main code assembly 202 of FIG. 2) that calls a routine provided by a second code assembly (eg, parser code assembly of FIG. 2). A
[0028]
[0029]
Further, one data format, such as XML, can be used by the developer to initially specify the authorization request. Thus, the XML specification permission request can be encoded into another data format, such as a binary serialized format, for incorporation into a code assembly. In addition, some compilers allow developers to specify permission requests using declarative security annotations in the source code of a code assembly. The compiler can then encode the annotation into a permission request embedded in the code assembly.
[0030]
In embodiments of the present invention, permission requests 120 are "typed" so that each type of permission request can be applied to filter permissions differently. Based on these inputs, the policy manager 104 calculates the appropriate grant for each code assembly and passes the resulting grant grant set to the runtime call stack 114.
[0031]
To this end, each code assembly in the runtime call stack 114 is associated with a corresponding granting set (eg, the granting sets 208, 210, and 212 of FIG. 2). A grant set is received from the policy manager and defines various permissions calculated for the corresponding code assembly. The permissions associated with each code assembly are all referred to as "evidence" 108, the relative source of the code assembly (e.g., local or remote), the specific source of the code assembly (e.g., a specific URL), or other May vary significantly based on the reliability characteristics of In an embodiment of the present invention, a trust grant is used to determine a grant set for a given code assembly. Further,
[0032]
FIG. 2 illustrates a
[0033]
For example, an object of the main application class in the code assembly 202 is first loaded into the illustrated
[0034]
Each permission grant set corresponds to a code assembly in the runtime call stack. To this end, any attempt by the code assembly to access the protected resource is evaluated against the associated grant set, as well as the other code assembly grant sets in the
[0035]
In general, the "intersection" operation (represented by the symbol "@") is a set operation that results in the common elements of the operand set. For example, if Set1 contains elements A, B, and C, and Set2 contains elements B, C, and D, the intersection of Set1 and Set2 (ie, Set1∩Set2) is equal to B and C. In contrast, a “union” operation (represented by the symbol “∪”) is a set operation that results in all elements in the operand set (ie, a non-overlapping set of all elements in the set). is there. For example, if Set1 includes elements A, B, and C, and Set2 includes elements B, C, and D, the union of Set1 and Set2 (ie, Set1∪Set2) is A, B, C, And D.
[0036]
FIG. 3 illustrates a computer system for managing evidence-based security in an embodiment of the present invention. A server 300 (eg, a web server) is coupled to a client 302 (eg, a web client) via a communication network (not shown).
[0037]
As described above, the code assembly is loaded into the runtime call stack 318 for execution by the virtual machine 312. The first category of code assembly is represented by local code assembly 314, which is generally considered a trusted code assembly because it originates on
[0038]
The code assemblies 314 and 316 generally relate to the evidence (or proofs) used to calculate the grant set for each code assembly. An example evidence component can be an AUTHENTICODE signature. Another example evidence component is a PICS (Platform for Internet Content Selection) label, which states the properties of the Internet resource (eg, executable code has been virus-scanned). For further details on PICS labels, see Resnick and J.M. Miller, "PICS: Internet Access Controls with Outsourcership", Communications of ACM, 39 (1996), pp. 87-93, and this paper is available at www.miller.com. w3. org / pub / WWW / PICS / iaccv2. It can also be viewed on http: // www. Other examples of evidence may include, but are not limited to, proof of purchase or license, creator identifier, vendor identifier, versioning information, and programmed proof. Programmatic proofs, for example, in the form of program code that examines statements made by other proofs, fetches supplemental information from the network, and then determines which proof statements to provide to
[0039]
Evidence for the code assembly itself can be provided by the host or extracted from the code assembly itself.
[0040]
The
[0041]
In an embodiment of the present invention, the
[0042]
In one embodiment of the present invention (see the filtering flowchart of FIG. 6), the default values for MinRS and ReuseRS are equal to the empty set, and the default values for OptRS are equal to the entire set. As a result, if no permission request is provided, the intermediate permission set 422 of FIG. 4 is delivered as the resulting permission delivery set 414.
[0043]
The minimum set of requirements defines the minimum set of permissions and can include the minimum set of permissions required for the associated code assembly to be executed. If the permission grant set generated by the
[0044]
By way of non-limiting example, if at least one of the ordered request sets is a subset of the intermediate permission set, the present invention includes providing a plurality of ordered request sets where the minimum permission conditions are met. Other minimum permission conditions may be used within the scope. Thus, the intermediate permission set can be filtered using the first ordered set of requests that are satisfied.
[0045]
Further, prevent code assembly from being executed, including, but not limited to, setting attributes associated with the associated code assembly 314 or 316 indicating that the minimum permissions have not been met. Other techniques for can also be used. For example, the loader 306 may check the attributes for each code assembly before proceeding to load the code assembly. The loader 306 can also return the result to the virtual machine 312 to indicate that the loading of the code assembly has failed and cannot be performed.
[0046]
In another embodiment of the present invention, the runtime environment within
[0047]
The optional request set includes permissions that the code assembly prefers to be issued, but are not absolutely necessary for the code assembly to be executed. Allowing such an option allows the code assembly to provide higher functionality. However, if no optional permissions are granted, the more basic functions defined by the minimal set of requirements are still available.
[0048]
One embodiment of the present invention addresses the optional nature of a request set of options by incorporating optional features into the code assembly. That is, if some or all of the permissions in the request set of options were not granted, the code assembly will be executed, when the operation of the request is denied (or when the permission of the request is denied). ), You can know this. In response to such a denial, the code assembly may execute another or additional code that utilizes a different permission, such as the permissions indicated in a minimal set of permissions. In this embodiment, security decisions involving an optional set of requests are evaluated during execution of the code assembly.
[0049]
In another embodiment, a plurality of optional request sets may be obtained by the
[0050]
Alternatively, an optional request set can be used to specify a group of optional permissions. For example, to provide a first level of functionality, the code assembly requires permissions A, B, C, and D (specified by a first set of optional requests), while a second level of It is possible that the code assembly only needs permissions A and B (specified by a second optional request set) to provide the function. Thus, if the permission set can only provide permissions A, B, and C, the first optional request set is not satisfied, but the second optional request set is satisfied. Thus, the second optional request set filters the permission set to provide only permissions A and B, avoiding unnecessary granting of permission C.
[0051]
Further, the verification process in the verification module 304 and the security management process in the
[0052]
FIG. 4 depicts a module of a policy manager for managing evidence-based security in an embodiment of the present invention. The executable modules described in connection with FIG. 4 can be implemented as software modules executable on a computer system. Alternatively, executable modules implemented in hardware or in a combination of hardware and software are also contemplated within the scope of the present invention. Further, the modules disclosed herein can be merged into a smaller number of modules or split into additional modules without departing from the scope of the invention.
[0053]
Policy manager 400 is coupled to receive
[0054]
In one embodiment of the invention,
[0055]
Other code group embodiments may include other data structures. For example, in one embodiment, the code group set is represented by a one-dimensional list of code groups, each including a membership criterion and a permission set, omitting the child code group definitions described above. In this embodiment, the one-dimensional list may be ordered or unordered. Further, other data configurations are also contemplated within the scope of the present invention.
[0056]
In an exemplary embodiment of the present invention, the permission set can be named, allowing identification in the
[0057]
In embodiments of the present invention, three types of named permission sets are supported. (1) a standard permission set-this set is predefined and cannot be changed; (2) a predefined permission set-this set can be changed by an administrator; and (3) ) Custom permission set-This set can be user defined as long as the name of the permission set does not conflict with the name of a standard permission set or the name of a predefined permission set. In one embodiment, the standard permission set is available at all policy levels and cannot be redefined at any individual policy level (general scope). In this embodiment, the predefined permission sets and the custom permission sets are defined and referenced in any given policy level, and cannot be referenced from other policy levels (policy level range). However, it should be understood that in other embodiments of the present invention, the scope of any permission set can extend beyond a given policy level.
[0058]
Table 1 below describes the standard permission sets available in embodiments of the present invention. Some standard permission sets, such as the Internet Set and the Local Intranet Set, are predefined, but can be changed by a user or administrator. Other permission sets, such as skip confirmation, cannot be changed in embodiments of the present invention. Other named permission sets are also contemplated within the scope of the present invention, and the named permission sets described in Table 1 can be changed without departing from the present invention.
[0059]
[Table 2]
[0060]
Although a number of permissions have been described herein as example permissions in embodiments of the invention, the list of possible permissions contemplated within the scope of the invention is not limited to these example permissions. For example, permission may be granted to allow code assembly to be executed despite a failed verification. A class in one code assembly may grant another permission (eg, a right to a subclass) that allows inheritance from a class in another code assembly.
[0061]
A code group permission set associated with a given code group can specify the permissions associated with the code group. Alternatively, the code group permission set associated with a given code group may specify the permissions associated with the code group and all parent code groups. This flexibility allows various security configurations (eg, policy levels, permission sets, membership criteria, etc.) to be defined within a security policy specification. As described below, policy managers can be developed to accommodate such various security configurations.
[0062]
In one embodiment,
[0063]
In the illustrated embodiment, the code group set
[0064]
FIG. 5 depicts an example policy level at which a policy manager operates in an embodiment of the present invention.
[0065]
In an embodiment of the present invention,
[0066]
In one embodiment of the present invention, the highest policy level is an enterprise policy level that can define a security policy that applies to all systems within any given enterprise. The lower policy level is a machine policy level that can define a security policy that applies to all users on a given system. A user policy level can define a security policy that applies to a given user, regardless of which particular system the user is logged into. An application policy level can define a security policy that applies to a given application, regardless of the user or system running the application. Additional policy levels and policy level orders are also contemplated within the scope of the present invention.
[0067]
The
[0068]
In embodiments of the present invention, a code group may be provided with an "exclusive" property flag as an attribute, which indicates that only permissions associated with that particular code group should be applied to member code assemblies. specify. Permission sets from other member code groups are ignored (ie, not merged).
[0069]
In embodiments of the present invention, code groups are defined in a code group hierarchy having a root node corresponding to an "all" code assembly. This root node represents a parent code group having child nodes, and each of the child nodes can also have child nodes, and a code group hierarchy is formed in the same manner. Other code group sets, including, but not limited to, an ordered or unordered list of code groups, are also contemplated within the scope of the present invention. If the policy manager 502 determines that a code assembly is a member of a parent code group, the code assembly is tested against the children of the parent code group to determine its membership as a child. Exemplary code group types and membership criteria are described in Table 2 below, but other code group types are also contemplated within the scope of the present invention. In addition, code group types can be associated with properties. For example, the code group type "software publisher" can be associated with a specific publisher "Microsoft (registered trademark)" such as "publisher: Microsoft (registered trademark)".
[0070]
[Table 3]
[0071]
Further, the
[0072]
In the illustrated embodiment, a policy level permission set (eg, a corporate level permission set 512, a machine level permission set 514, or a user level permission set 516) is generated from each policy level. A policy level permission set
[0073]
The permission / request filter 524 inputs the
[0074]
In an example embodiment, the grant / request filter 524 applies a filter algorithm to generate a grant grant set 520, as described in combination with FIG.
1) MaxRS = (MinRS∪OptRS) [Operation 600]
2) If (MinRS is not a subset of IntPS) [Act 602], then policy manager 502 raises a policy exception to prevent loading and / or execution of code assembly [Act 604].
3) If (MinRS is a subset of IntPS) [operation 602], then PGS = (MaxRS∩IntPS) -RefuseRS [operation 606]
4) If (PGS includes execute permission) [Act 608], the then code assembly can be loaded by loader 306 of FIG. 3 [Act 610] and PGS is shown in conjunction with the code assembly. 3 can be loaded into the runtime stack 318 [act 612].
5) If (PGS does not include execution permission) [action 608], then policy manager 502 raises a policy exception to prevent loading and / or execution of code assembly [action 614].
Where PGS represents permission grant set 520, IntPS represents intermediate permission set 526, MaxRS represents a maximum request set, MinRS represents a minimum permission request, OptRS represents an optional permission request, and , RefuseRS indicates a rejection permission request. MinRS, OptRS, and ReuseRS are received as elements of
[0075]
In embodiments of the present invention, if MinRS, OptRS or RefuseRS are not specified, they are assigned default values. For MinRS and RefuseRS, the default value is an empty set. For OptRS, the default value is the entire set. For example, if MinRS and OptRS are not specified, PGS is equal to IntPS-RefuseRS.
[0076]
The logical set operation 606 is used to generate a subset of the intermediate permission set so that only the required permissions are included in the permission grant set. That is, the intermediate permission set may be much wider than the permission set required or required by the code assembly. Thus, unnecessary or unsolicited permissions can be excluded from the resulting set of permissions.
[0077]
It should be understood that the above-disclosed algorithm is merely an example algorithm for filtering intermediate grant sets using a grant request. Other algorithms are also contemplated within the scope of the present invention, especially if different combinations of authorization requests are used (eg, additional types of authorization request sets).
[0078]
FIG. 7 illustrates an exemplary system useful for implementing embodiments of the present invention. An exemplary computer system for an embodiment of the present invention includes a
[0079]
Computer system 700 includes a
[0080]
The example environment described herein uses a hard disk, a removable magnetic disk 716, and a removable optical disk 719, but other types of computer-readable media capable of storing data are also examples. Can be used in any system. Examples of other types of computer readable media that can be used in the exemplary operating environment include magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memory (RAM), and read-only memory (ROM). ) Is included.
[0081]
Several program modules, including operating system 726, one or
[0082]
Computer system 700 can operate in a networked environment that uses logical connections to one or more remote computers, such as remote computer 746. Remote computer 746 can be a computer system, server, router, network PC, peer device, or other common network node, and typically includes many of the elements described above in connection with computer system 700, or Including all. Network connections include a local area network (LAN) 748 and a wide area network (WAN) 750. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
[0083]
When used in a LAN networking environment, the computer system 700 is connected to a local network 748 via a network interface or network adapter 752. When used in a WAN networking environment, computer system 700 typically includes a modem 754 or other means for establishing communication over a
[0084]
In the illustrated embodiment, the security policy designation can be read into memory 704, for example, from a file on
[0085]
FIG. 8 is a flowchart illustrating operations for generating a permission grant set using a classified permission request associated with a code assembly received from a resource location in an embodiment of the present invention. The defining
[0086]
Generate
[0087]
A receiving
[0088]
A
[0089]
The
[0090]
The embodiments of the invention described herein are implemented as logical steps in one or more computer systems. The logical operations of the present invention can be performed as (1) steps performed by a series of processors executing in one or more computer systems, and (2) interconnected machine modules within one or more computer systems. Will be implemented as Embodiments are a matter of choice depending on the performance requirements of the computer system implementing the invention. Accordingly, the logical operations making up the embodiments of the invention described herein are referred to variously as operations, steps, objects, or modules.
[0091]
The above specification, examples, and data provide a complete description of the structure and use of example embodiments of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
[Brief description of the drawings]
FIG.
FIG. 3 depicts an evidence-based security policy manager in an embodiment of the present invention.
FIG. 2
FIG. 4 illustrates a runtime call stack in an embodiment of the present invention.
FIG. 3
FIG. 2 depicts a computer system for managing evidence-based security in an embodiment of the present invention.
FIG. 4
FIG. 4 illustrates a policy manager module for managing evidence-based security in an embodiment of the present invention.
FIG. 5
FIG. 4 is a diagram illustrating a policy level as an example in which a policy manager operates in the embodiment of the present invention.
FIG. 6
5 is a flowchart illustrating filtering used in an embodiment of the present invention.
FIG. 7
FIG. 1 illustrates an example system useful for implementing embodiments of the present invention.
FIG. 8
5 is a flowchart illustrating operations for processing a permission set in an embodiment of the present invention.
Claims (37)
前記コードアセンブリに関連する少なくとも1つの許可を含む前記許可セットを受け取ること、
前記コードアセンブリに関連する許可要求セットを受け取ること、および、
前記許可要求セットに基づいて前記許可セットをフィルタして前記コードアセンブリの実行を制御することを含むことを特徴とする方法。A method of processing permission sets associated with a code assembly received from a resource location to control execution of the code assembly, the method comprising:
Receiving the permission set including at least one permission associated with the code assembly;
Receiving a permission request set associated with the code assembly; and
Filtering the permission set based on the permission request set to control execution of the code assembly.
前記コードアセンブリに関連する証拠を受け取ること、
前記証拠に基づき、前記1つ以上のコードグループにおける前記コードアセンブリのメンバーシップを評価すること、および、
前記1つ以上のコードグループにおける前記コードアセンブリの前記メンバーシップに基づいて前記許可セットを生成することをさらに含むことを特徴とする請求項1に記載の方法。Defining a code group set that includes one or more code groups based on the security policy specification;
Receiving evidence relating to said code assembly;
Evaluating the membership of the code assembly in the one or more code groups based on the evidence; and
The method of claim 1, further comprising generating the permission set based on the membership of the code assembly in the one or more code groups.
前記オプションの要求セットが前記許可交付セットのサブセットである場合、第1のレベルのコードアセンブリ機能(functionality)を実行すること、および、
前記オプションの要求セットが前記許可交付セットのサブセットでない場合、第2のレベルのコードアセンブリ機能を実行することをさらに含むことを特徴とする請求項12に記載の方法。The method wherein the act of filtering includes filtering the permission set based on the request set of options to generate a permission grant set.
Performing a first level of code assembly functionality if the optional set of requests is a subset of the set of grants;
The method of claim 12, further comprising performing a second level code assembly function if the optional request set is not a subset of the grant set.
前記フィルタする動作は、
前記オプションの要求セット並びに最低限の要求セットの和集合を計算して最大限の要求セットを提供すること、および、
前記最大限の要求セットと前記許可セットの積集合を計算することを含むことを特徴とする請求項1に記載の方法。An optional request set wherein the permission request set specifies an optional set of permissions required in connection with the code assembly, and a minimum request set specifying a minimum set of permissions required in connection with the code assembly. A request set, comprising:
The filtering operation includes:
Calculating the union of the optional requirement set and the minimum requirement set to provide a maximum requirement set; and
The method of claim 1, comprising calculating an intersection of the maximum request set and the permission set.
前記フィルタする動作は、
前記最大限の要求セットと前記許可セットの前記積集合から、前記拒否要求セットの中で指定された1つ以上の許可の前記セットを除くことをさらに含むことを特徴とする請求項16に記載の方法。A method further comprising specifying a denial request set that specifies one or more sets of permissions in which the permission request set is excluded from a permission grant set in association with the code assembly.
The filtering operation includes:
17. The method of claim 16, further comprising removing the set of one or more permissions specified in the deny request set from the intersection of the maximum request set and the permission set. the method of.
前記コードアセンブリに関連する前記許可セットおよび許可要求セットを受け取り、前記許可要求セットに基づいて前記許可セットをフィルタして前記コードアセンブリの実行を制御するフィルタを含むことを特徴とするモジュール。A policy manager module for processing a set of permissions associated with a code assembly received from a resource location to control execution of the code assembly, comprising:
A module comprising: a filter for receiving the permission set and permission request set associated with the code assembly and filtering the permission set based on the permission request set to control execution of the code assembly.
前記フィルタする動作は、
前記オプションの要求セット並びに最低限の要求セットの和集合を計算して最大限の要求セットを提供すること、および、
前記最大限の要求セットと前記許可セットの積集合を計算することを含むことを特徴とする請求項20に記載のモジュール。An optional request set wherein the permission request set specifies an optional set of permissions required in connection with the code assembly, and a minimum request set specifying a minimum set of permissions required in connection with the code assembly. A policy manager module that specifies the request set of the
The filtering operation includes:
Calculating the union of the optional requirement set and the minimum requirement set to provide a maximum requirement set; and
21. The module of claim 20, comprising calculating an intersection of the maximum request set and the permission set.
前記コードアセンブリに関連する証拠に基づき、前記1つ以上のコードグループにおける前記コードアセンブリのメンバーシップを判定するメンバーシップエバリュエータと、および、
前記1つ以上のコードグループにおける前記コードアセンブリの前記メンバーシップに基づいて前記許可セットを生成する許可セット生成器をさらに含むことを特徴とする請求項20に記載のポリシーマネージャモジュール。A code group set generator that generates a code group set including one or more code groups based on a security policy specification;
A membership evaluator that determines membership of the code assembly in the one or more code groups based on evidence associated with the code assembly; and
The policy manager module of claim 20, further comprising a permission set generator that generates the permission set based on the membership of the code assembly in the one or more code groups.
前記コンピュータプロセスは、
前記コードアセンブリに関連する少なくとも1つの許可を含む前記許可セットを受け取ること、
前記コードアセンブリに関連する許可要求セットを受け取ること、および、
前記許可要求セットに基づいて前記許可セットをフィルタして前記コードアセンブリの実行を制御することを含むことを特徴とするコンピュータデータ信号。A computer program, embodied on a carrier wave by a computer system, for executing a computer process for performing processing of a permission set associated with a code assembly received from a resource location and controlling execution of the code assembly. A computer data signal to be converted,
The computer process comprises:
Receiving the permission set including at least one permission associated with the code assembly;
Receiving a permission request set associated with the code assembly; and
A computer data signal comprising: filtering the permission set based on the permission request set to control execution of the code assembly.
前記コンピュータプロセスは、
前記コードアセンブリに関連する少なくとも1つの許可を含む前記許可セットを受け取ること、
前記コードアセンブリに関連する許可要求セットを受け取ること、および、
前記許可要求セットに基づいて前記許可セットをフィルタして前記コードアセンブリの実行を制御することを含むことを特徴とするコンピュータプログラム記憶媒体。A computer program storage medium readable by a computer system and encoding a computer program for executing a computer process for processing a permission set associated with a code assembly received from a resource location, the computer program storage medium comprising:
The computer process comprises:
Receiving the permission set including at least one permission associated with the code assembly;
Receiving a permission request set associated with the code assembly; and
A computer program storage medium comprising filtering the permission set based on the permission request set to control execution of the code assembly.
前記コンピュータプロセスは、
セキュリティポリシー指定に基づいて1つ以上のコードグループを含むコードグループ集合を定義すること、
前記コードアセンブリに関連する証拠を受け取ること、
前記証拠に基づき、前記1つ以上のコードグループにおける前記コードアセンブリのメンバーシップを評価すること、
前記1つ以上のコードグループにおける前記コードアセンブリの前記メンバーシップに基づいて前記許可セットを生成すること、
前記コードアセンブリに関連する少なくとも1つの許可を含む前記許可セットを受け取ること、
前記コードアセンブリに関連して許可要求セットを受け取ること、および、
前記許可セットおよび前記許可要求セットに対する論理集合演算を計算して許可交付セットを生成することを含むことを特徴とするコンピュータプログラム。A computer program encoding a computer program for processing a set of permissions associated with a code assembly received from a resource location to execute on a computer system a computer process for controlling execution of the code assembly, comprising:
The computer process comprises:
Defining a code group set that includes one or more code groups based on a security policy specification;
Receiving evidence relating to said code assembly;
Evaluating the membership of the code assembly in the one or more code groups based on the evidence;
Generating the permission set based on the membership of the code assembly in the one or more code groups;
Receiving the permission set including at least one permission associated with the code assembly;
Receiving a permission request set in connection with the code assembly; and
A computer program comprising calculating a logical set operation on the permission set and the permission request set to generate a permission grant set.
前記フィルタする動作は、
前記オプションの要求セット並びに最低限の要求セットの和集合を計算して最大限の要求セットを提供すること、および、
前記最大限の要求セットと前記許可セットの積集合を計算することを含むことを特徴とする請求項35に記載のコンピュータプログラム。An optional request set wherein the permission request set specifies an optional set of permissions required in connection with the code assembly, and a minimum request set specifying a minimum set of permissions required in connection with the code assembly. A computer program comprising a request set of
The filtering operation includes:
Calculating the union of the optional requirement set and the minimum requirement set to provide a maximum requirement set; and
The computer program product of claim 35, comprising calculating an intersection of the maximum request set and the permission set.
前記フィルタする動作は、
前記最大限の要求セットと前記許可セットの前記積集合から、前記拒否要求セットの中で指定された1つ以上の許可の前記セットを除くことをさらに含むことを特徴とする請求項36に記載のコンピュータプログラム。A computer program further specifying a deny request set that specifies one or more sets of permissions, wherein the set of permission requests is excluded from a permission grant set in association with the code assembly,
The filtering operation includes:
37. The method of claim 36, further comprising removing the set of one or more permissions specified in the deny request set from the intersection of the maximum request set and the permission set. Computer programs.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/599,015 | 2000-06-21 | ||
US09/599,015 US6981281B1 (en) | 2000-06-21 | 2000-06-21 | Filtering a permission set using permission requests associated with a code assembly |
PCT/US2001/016057 WO2001098876A2 (en) | 2000-06-21 | 2001-05-18 | Filtering a permission set using permission requests associated with a code assembly |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004501467A true JP2004501467A (en) | 2004-01-15 |
JP2004501467A5 JP2004501467A5 (en) | 2008-07-17 |
JP4718753B2 JP4718753B2 (en) | 2011-07-06 |
Family
ID=24397852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002504571A Expired - Lifetime JP4718753B2 (en) | 2000-06-21 | 2001-05-18 | Filter permission sets using permission requests associated with code assembly |
Country Status (8)
Country | Link |
---|---|
US (3) | US6981281B1 (en) |
EP (1) | EP1299790B1 (en) |
JP (1) | JP4718753B2 (en) |
AT (1) | ATE358293T1 (en) |
AU (1) | AU2001266590A1 (en) |
DE (1) | DE60127557T2 (en) |
ES (1) | ES2284654T3 (en) |
WO (1) | WO2001098876A2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003536176A (en) * | 2000-06-21 | 2003-12-02 | マイクロソフト コーポレイション | Evidence-based security policy manager |
KR20140068940A (en) * | 2011-09-07 | 2014-06-09 | 마이크로소프트 코포레이션 | Content handling for applications |
JP2014143555A (en) * | 2013-01-23 | 2014-08-07 | Canon Inc | Imaging apparatus and control method and program thereof |
JP2017162481A (en) * | 2017-04-04 | 2017-09-14 | Kddi株式会社 | Terminal, access control method, and program |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606659B1 (en) | 2000-01-28 | 2003-08-12 | Websense, Inc. | System and method for controlling access to internet sites |
US6981281B1 (en) * | 2000-06-21 | 2005-12-27 | Microsoft Corporation | Filtering a permission set using permission requests associated with a code assembly |
US7350204B2 (en) * | 2000-07-24 | 2008-03-25 | Microsoft Corporation | Policies for secure software execution |
DE50011222D1 (en) * | 2000-12-04 | 2005-10-27 | Siemens Ag | Method for using a data processing system depending on an authorization, associated data processing system and associated program |
US7099663B2 (en) | 2001-05-31 | 2006-08-29 | Qualcomm Inc. | Safe application distribution and execution in a wireless environment |
US20040218762A1 (en) | 2003-04-29 | 2004-11-04 | Eric Le Saint | Universal secure messaging for cryptographic modules |
US8209753B2 (en) | 2001-06-15 | 2012-06-26 | Activcard, Inc. | Universal secure messaging for remote security tokens |
US20030135758A1 (en) * | 2001-07-19 | 2003-07-17 | Turner Elliot B. | System and method for detecting network events |
US7024555B2 (en) * | 2001-11-01 | 2006-04-04 | Intel Corporation | Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment |
US7194464B2 (en) | 2001-12-07 | 2007-03-20 | Websense, Inc. | System and method for adapting an internet filter |
US7188364B2 (en) * | 2001-12-20 | 2007-03-06 | Cranite Systems, Inc. | Personal virtual bridged local area networks |
US20030177484A1 (en) * | 2002-03-15 | 2003-09-18 | Bosschaert Allaert J. D. | Firewall class loader |
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
SE0201313D0 (en) * | 2002-04-29 | 2002-04-29 | Electrolux Home Prod Corp | Dosage container |
US20040123152A1 (en) * | 2002-12-18 | 2004-06-24 | Eric Le Saint | Uniform framework for security tokens |
US7430743B2 (en) | 2003-02-27 | 2008-09-30 | Microsoft Corporation | System and method for hosting an application in one of a plurality of execution environments |
US7475408B2 (en) * | 2003-02-27 | 2009-01-06 | Microsoft Corporation | Hosting an application in one of a plurality of execution environments |
TWI263894B (en) * | 2003-10-15 | 2006-10-11 | Hon Hai Prec Ind Co Ltd | System and method for quickly getting user's permission in access control list |
US8930944B2 (en) * | 2003-11-18 | 2015-01-06 | Microsoft Corporation | Application model that integrates the web experience with the traditional client application experience |
US7907935B2 (en) | 2003-12-22 | 2011-03-15 | Activcard Ireland, Limited | Intelligent remote device |
US7054869B1 (en) * | 2003-12-22 | 2006-05-30 | Insworld, Inc. | Methods and systems for facilitating the production and distribution of content |
US7054868B2 (en) * | 2003-12-22 | 2006-05-30 | Insworld, Inc. | Methods and systems for creating and operating hierarchical levels of administrators to facilitate the production and distribution of content |
US20050138380A1 (en) | 2003-12-22 | 2005-06-23 | Fedronic Dominique L.J. | Entry control system |
EP2267625A3 (en) | 2004-04-19 | 2015-08-05 | Lumension Security S.A. | On-line centralized and local authorization of executable files |
WO2005099342A2 (en) | 2004-04-19 | 2005-10-27 | Securewave S.A. | A generic framework for runtime interception and execution control of interpreted languages |
US7743425B2 (en) * | 2004-04-29 | 2010-06-22 | Microsoft Corporation | Security restrictions on binary behaviors |
US7814308B2 (en) * | 2004-08-27 | 2010-10-12 | Microsoft Corporation | Debugging applications under different permissions |
GB2418999A (en) | 2004-09-09 | 2006-04-12 | Surfcontrol Plc | Categorizing uniform resource locators |
GB2418037B (en) * | 2004-09-09 | 2007-02-28 | Surfcontrol Plc | System, method and apparatus for use in monitoring or controlling internet access |
US20060143689A1 (en) * | 2004-12-21 | 2006-06-29 | Docomo Communications Laboratories Usa, Inc. | Information flow enforcement for RISC-style assembly code |
WO2007088237A1 (en) * | 2006-02-01 | 2007-08-09 | Nokia Corporation | Access control |
US7890315B2 (en) * | 2005-12-29 | 2011-02-15 | Microsoft Corporation | Performance engineering and the application life cycle |
US20070157311A1 (en) * | 2005-12-29 | 2007-07-05 | Microsoft Corporation | Security modeling and the application life cycle |
US7627652B1 (en) * | 2006-01-31 | 2009-12-01 | Amazon Technologies, Inc. | Online shared data environment |
US7818788B2 (en) * | 2006-02-14 | 2010-10-19 | Microsoft Corporation | Web application security frame |
US7712137B2 (en) * | 2006-02-27 | 2010-05-04 | Microsoft Corporation | Configuring and organizing server security information |
US8020206B2 (en) | 2006-07-10 | 2011-09-13 | Websense, Inc. | System and method of analyzing web content |
US8615800B2 (en) | 2006-07-10 | 2013-12-24 | Websense, Inc. | System and method for analyzing web content |
US8443188B2 (en) * | 2006-11-30 | 2013-05-14 | Microsoft Corporation | Using code access security for runtime accessibility checks |
US9654495B2 (en) | 2006-12-01 | 2017-05-16 | Websense, Llc | System and method of analyzing web addresses |
US20080168528A1 (en) * | 2007-01-04 | 2008-07-10 | Dah-Haur Lin | Role-based authorization using conditional permissions |
GB2445764A (en) | 2007-01-22 | 2008-07-23 | Surfcontrol Plc | Resource access filtering system and database structure for use therewith |
US20080189767A1 (en) * | 2007-02-01 | 2008-08-07 | Microsoft Corporation | Accessing file resources outside a security boundary |
US8015174B2 (en) * | 2007-02-28 | 2011-09-06 | Websense, Inc. | System and method of controlling access to the internet |
US9378282B2 (en) | 2008-06-30 | 2016-06-28 | Raytheon Company | System and method for dynamic and real-time categorization of webpages |
US8190673B2 (en) * | 2008-07-30 | 2012-05-29 | Microsoft Corporation | Enforcement of object permissions in enterprise resource planning software |
CN102486731B (en) * | 2009-11-30 | 2015-12-09 | 国际商业机器公司 | Strengthen the visualization method of the call stack of software of software, equipment and system |
US8677506B2 (en) | 2009-12-03 | 2014-03-18 | Osocad Remote Limited Liability Company | System and method for loading application classes |
US20110313789A1 (en) | 2010-01-22 | 2011-12-22 | Deka Products Limited Partnership | Electronic patient monitoring system |
US10453157B2 (en) | 2010-01-22 | 2019-10-22 | Deka Products Limited Partnership | System, method, and apparatus for electronic patient care |
US11210611B2 (en) | 2011-12-21 | 2021-12-28 | Deka Products Limited Partnership | System, method, and apparatus for electronic patient care |
US11244745B2 (en) | 2010-01-22 | 2022-02-08 | Deka Products Limited Partnership | Computer-implemented method, system, and apparatus for electronic patient care |
US10911515B2 (en) | 2012-05-24 | 2021-02-02 | Deka Products Limited Partnership | System, method, and apparatus for electronic patient care |
US11164672B2 (en) | 2010-01-22 | 2021-11-02 | Deka Products Limited Partnership | System and apparatus for electronic patient care |
US11881307B2 (en) | 2012-05-24 | 2024-01-23 | Deka Products Limited Partnership | System, method, and apparatus for electronic patient care |
US10242159B2 (en) | 2010-01-22 | 2019-03-26 | Deka Products Limited Partnership | System and apparatus for electronic patient care |
US8849857B2 (en) * | 2010-12-17 | 2014-09-30 | International Business Machines Corporation | Techniques for performing data loss prevention |
US8650640B2 (en) * | 2011-02-24 | 2014-02-11 | International Business Machines Corporation | Using a declaration of security requirements to determine whether to permit application operations |
US8656465B1 (en) * | 2011-05-09 | 2014-02-18 | Google Inc. | Userspace permissions service |
US9223976B2 (en) * | 2011-09-08 | 2015-12-29 | Microsoft Technology Licensing, Llc | Content inspection |
US9100235B2 (en) | 2011-11-07 | 2015-08-04 | At&T Intellectual Property I, L.P. | Secure desktop applications for an open computing platform |
US9047476B2 (en) * | 2011-11-07 | 2015-06-02 | At&T Intellectual Property I, L.P. | Browser-based secure desktop applications for open computing platforms |
KR101900047B1 (en) | 2012-03-12 | 2018-09-18 | 삼성전자주식회사 | Method and Apparatus to Evaluate Required Permissions for Application |
US8726386B1 (en) * | 2012-03-16 | 2014-05-13 | Symantec Corporation | Systems and methods for detecting malware |
US8671282B2 (en) * | 2012-03-24 | 2014-03-11 | Mach 1 Development, Inc. | Digital data authentication and security system |
EP2677380A1 (en) * | 2012-06-21 | 2013-12-25 | Siemens Aktiengesellschaft | Method for controlling a manufacturing execution system (MES) |
US9515832B2 (en) | 2013-06-24 | 2016-12-06 | Microsoft Technology Licensing, Llc | Process authentication and resource permissions |
US20160292433A1 (en) * | 2013-12-30 | 2016-10-06 | Huawei Device Co., Ltd | Permission management method and apparatus |
US9852294B1 (en) | 2014-06-24 | 2017-12-26 | Symantec Corporation | Systems and methods for detecting suspicious applications based on how entry-point functions are triggered |
KR102337990B1 (en) * | 2014-09-18 | 2021-12-13 | 삼성전자주식회사 | Electronic Device Using Token for Setting Permission |
US10360135B2 (en) | 2016-03-31 | 2019-07-23 | Microsoft Technology Licensing, Llc | Privilege test and monitoring |
US9830469B1 (en) * | 2016-10-31 | 2017-11-28 | International Business Machines Corporation | Automated mechanism to secure customer data |
US10346625B2 (en) * | 2016-10-31 | 2019-07-09 | International Business Machines Corporation | Automated mechanism to analyze elevated authority usage and capability |
US9928365B1 (en) * | 2016-10-31 | 2018-03-27 | International Business Machines Corporation | Automated mechanism to obtain detailed forensic analysis of file access |
US10650156B2 (en) | 2017-04-26 | 2020-05-12 | International Business Machines Corporation | Environmental security controls to prevent unauthorized access to files, programs, and objects |
US11443067B2 (en) * | 2018-01-31 | 2022-09-13 | Salesforce.Com, Inc. | Restricting access and edit permissions of metadata |
JP6783812B2 (en) * | 2018-03-13 | 2020-11-11 | 株式会社東芝 | Information processing equipment, information processing methods and programs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844630A (en) * | 1994-08-03 | 1996-02-16 | Nri & Ncc Co Ltd | Device for controlling file access and method thereof |
US5978484A (en) * | 1996-04-25 | 1999-11-02 | Microsoft Corporation | System and method for safety distributing executable objects |
US6044466A (en) * | 1997-11-25 | 2000-03-28 | International Business Machines Corp. | Flexible and dynamic derivation of permissions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0549104B1 (en) * | 1991-12-20 | 1998-05-06 | International Computers Limited | Program attribute control in a computer system |
US5825877A (en) * | 1996-06-11 | 1998-10-20 | International Business Machines Corporation | Support for portable trusted software |
US5958050A (en) | 1996-09-24 | 1999-09-28 | Electric Communities | Trusted delegation system |
US5915085A (en) | 1997-02-28 | 1999-06-22 | International Business Machines Corporation | Multiple resource or security contexts in a multithreaded application |
US6125447A (en) | 1997-12-11 | 2000-09-26 | Sun Microsystems, Inc. | Protection domains to provide security in a computer system |
US6044467A (en) | 1997-12-11 | 2000-03-28 | Sun Microsystems, Inc. | Secure class resolution, loading and definition |
US6321334B1 (en) * | 1998-07-15 | 2001-11-20 | Microsoft Corporation | Administering permissions associated with a security zone in a computer system security model |
US6473800B1 (en) * | 1998-07-15 | 2002-10-29 | Microsoft Corporation | Declarative permission requests in a computer system |
US6526513B1 (en) | 1999-08-03 | 2003-02-25 | International Business Machines Corporation | Architecture for dynamic permissions in java |
US6981281B1 (en) * | 2000-06-21 | 2005-12-27 | Microsoft Corporation | Filtering a permission set using permission requests associated with a code assembly |
-
2000
- 2000-06-21 US US09/599,015 patent/US6981281B1/en not_active Expired - Lifetime
-
2001
- 2001-05-18 ES ES01944152T patent/ES2284654T3/en not_active Expired - Lifetime
- 2001-05-18 AU AU2001266590A patent/AU2001266590A1/en not_active Abandoned
- 2001-05-18 EP EP01944152A patent/EP1299790B1/en not_active Expired - Lifetime
- 2001-05-18 WO PCT/US2001/016057 patent/WO2001098876A2/en active IP Right Grant
- 2001-05-18 DE DE60127557T patent/DE60127557T2/en not_active Expired - Lifetime
- 2001-05-18 JP JP2002504571A patent/JP4718753B2/en not_active Expired - Lifetime
- 2001-05-18 AT AT01944152T patent/ATE358293T1/en not_active IP Right Cessation
-
2005
- 2005-10-20 US US11/254,839 patent/US7251834B2/en not_active Expired - Fee Related
- 2005-11-14 US US11/272,639 patent/US7310822B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844630A (en) * | 1994-08-03 | 1996-02-16 | Nri & Ncc Co Ltd | Device for controlling file access and method thereof |
US5978484A (en) * | 1996-04-25 | 1999-11-02 | Microsoft Corporation | System and method for safety distributing executable objects |
US6044466A (en) * | 1997-11-25 | 2000-03-28 | International Business Machines Corp. | Flexible and dynamic derivation of permissions |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003536176A (en) * | 2000-06-21 | 2003-12-02 | マイクロソフト コーポレイション | Evidence-based security policy manager |
JP4738708B2 (en) * | 2000-06-21 | 2011-08-03 | マイクロソフト コーポレーション | Evidence-based security policy manager |
KR20140068940A (en) * | 2011-09-07 | 2014-06-09 | 마이크로소프트 코포레이션 | Content handling for applications |
JP2014525638A (en) * | 2011-09-07 | 2014-09-29 | マイクロソフト コーポレーション | Managing content for applications |
KR101977428B1 (en) | 2011-09-07 | 2019-08-28 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Content handling for applications |
US10445528B2 (en) | 2011-09-07 | 2019-10-15 | Microsoft Technology Licensing, Llc | Content handling for applications |
JP2014143555A (en) * | 2013-01-23 | 2014-08-07 | Canon Inc | Imaging apparatus and control method and program thereof |
JP2017162481A (en) * | 2017-04-04 | 2017-09-14 | Kddi株式会社 | Terminal, access control method, and program |
Also Published As
Publication number | Publication date |
---|---|
DE60127557D1 (en) | 2007-05-10 |
DE60127557T2 (en) | 2007-12-27 |
US6981281B1 (en) | 2005-12-27 |
US7310822B2 (en) | 2007-12-18 |
WO2001098876A3 (en) | 2003-01-23 |
EP1299790A2 (en) | 2003-04-09 |
WO2001098876A2 (en) | 2001-12-27 |
ATE358293T1 (en) | 2007-04-15 |
US20060037082A1 (en) | 2006-02-16 |
US20060070112A1 (en) | 2006-03-30 |
EP1299790B1 (en) | 2007-03-28 |
US7251834B2 (en) | 2007-07-31 |
ES2284654T3 (en) | 2007-11-16 |
JP4718753B2 (en) | 2011-07-06 |
AU2001266590A1 (en) | 2002-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4718753B2 (en) | Filter permission sets using permission requests associated with code assembly | |
JP4738708B2 (en) | Evidence-based security policy manager | |
US7669238B2 (en) | Evidence-based application security | |
US7131143B1 (en) | Evaluating initially untrusted evidence in an evidence-based security policy manager | |
US6138238A (en) | Stack-based access control using code and executor identifiers | |
US7380267B2 (en) | Policy setting support tool | |
US7886041B2 (en) | Design time validation of systems | |
JP3546787B2 (en) | Access control system, access control method, and storage medium | |
US7124192B2 (en) | Role-permission model for security policy administration and enforcement | |
US8533772B2 (en) | Role-based authorization management framework | |
EP1674960B1 (en) | Reverse engineering access control | |
US20070011723A1 (en) | Method for maintaining application compatibility within an application isolation policy | |
US8447975B2 (en) | Workstation application server programming protection via classloader policy based visibility control | |
US7076557B1 (en) | Applying a permission grant set to a call stack during runtime | |
Alghathbar et al. | Securing UML information flow using FlowUML | |
JP2843768B2 (en) | Database access control method | |
Bruckner et al. | A Framework for Creating Policy-agnostic Programming Languages. | |
Ali | Enforcing role-based and category-based access control in Java: a hybrid approach. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080519 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101203 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110302 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110325 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110401 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140408 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |