(57)【特許請求の範囲】
【請求項１】
セキュリティ境界を提供するためのコンピューター実行方法であって、前記コンピューター実行方法は、
セキュリティモニターを学習モードで実行するステップであって、前記セキュリティモニターが、
１つまたは複数のシステムリソースにアクセスするためにアプリケーションによって行われた１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）コールをインターセプトすることと、
前記アプリケーションに関連するデータを、前記システムリソースにアクセスすることに関連するセキュリティモニターのデータベースに記憶することのための動作を行う、ステップ、および
前記セキュリティモニターを執行モードで実行するステップであって、前記セキュリティモニターが、
前記アプリケーションのランタイムにおいて、前記１つまたは複数のＡＰＩコールを行う前記アプリケーションが、前記システムリソースにアクセスすることを認可されているかを判定し、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースにある場合は、前記システムリソースへの前記アプリケーションのアクセスを許可し、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースにない場合は、前記システムリソースへの前記アプリケーションのアクセスを妨げるための動作を行う、ステップを含むことを特徴とするコンピューター実行方法。
【請求項２】
前記システムリソースへのアクセスを妨げられた前記アプリケーションに関するデータをアドミニストレーターに提供するステップをさらに含むことを特徴とする請求項１に記載のコンピューター実行方法。
【請求項３】
前記APIコールをインターセプトしたときに１つまたは複数のアクセス制御リスト（ＡＣＬ）を、前記アプリケーションによって使用されるのを要求された前記システムリソースに関連付けるステップと、
前記１つまたは複数のＡＣＬを前記セキュリティモニターのデータベースに記憶するステップと
をさらに含むことを特徴とする請求項１に記載のコンピューター実行方法。
【請求項４】
前記アプリケーションは、仮想アプリケーションであることを特徴とする請求項１に記載のコンピューター実行方法。
【請求項５】
前記仮想アプリケーションは、他の仮想アプリケーションが実行している単一の物理マシン上で実行していることを特徴とする請求項４に記載のコンピューター実行方法。
【請求項６】
前記仮想アプリケーションおよび他の仮想アプリケーションは、パーティション内で実行されることを特徴とする請求項５に記載のコンピューター実行方法。
【請求項７】
前記システムリソースは、通信ポート、レジストリ、オープンデータベースコネクティビティ接続ストリング、またはエンドポイントのうちの少なくとも１つを含むことを特徴とする請求項１に記載のコンピューター実行方法。
【請求項８】
コンピューターにセキュリティモニターを実行させるためのコンピュータープログラムであって、
前記セキュリティモニターは、学習モードでは、
１つまたは複数のシステムリソースにアクセスするためにアプリケーションによって行われた１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）コールをインターセプトし、
前記ＡＰＩコールに関するデータをセキュリティモニターのデータベースに記憶し、
前記セキュリティモニターは、執行モードでは、
前記セキュリティモニターのデータベースに記憶されている前記データに基づいて前記システムリソースにアクセスすることから１つまたは複数の他のアプリケーションを隔離させ、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースに見つかった場合は、前記システムリソースへの前記アプリケーションのアクセスを許可し、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースに見つからない場合は、前記アプリケーションが前記システムリソースにアクセスするのを妨げる、
コンピュータープログラム。
【請求項９】
前記コンピューターにさらに、
仮想化層の中にセキュリティモニターを提供させ、
１つまたは複数のアクセス制御リスト（ＡＣＬ）を前記システムリソースに関連付けさせるための、
請求項８に記載のコンピュータープログラム。
【請求項１０】
前記コンピューターにさらに、前記システムリソースにアクセスするのを妨げられた前記アプリケーションに関するデータをアドミニストレーターに提供するステップを実行させるための請求項８に記載のコンピュータープログラム。
【請求項１１】
前記アドミニストレーターは前記システムリソースにアクセスするのを妨げられた前記アプリケーションに前記システムリソースへのアクセスを許可することができることを特徴とする請求項１０に記載のコンピュータープログラム。
【請求項１２】
前記アプリケーションは仮想アプリケーションであることを特徴とする請求項８に記載のコンピュータープログラム。
【請求項１３】
前記仮想アプリケーションは、他の仮想アプリケーションが実行している単一の物理マシン上で実行していることを特徴とする請求項１２に記載のコンピュータープログラム。
【請求項１４】
前記システムリソースは、通信ポート、レジストリ、オープンデータベースコネクティビティ接続ストリング、またはエンドポイントのうちの少なくとも１つを含むことを特徴とする請求項１３に記載のコンピュータープログラム。
【請求項１５】
セキュリティ境界を提供するためのコンピューター実行される方法であって、前記コンピューター実行される方法は、
セキュリティモニターを学習モードで実行するステップであって、システムリソースにアクセスするためにアプリケーションによって行われたアプリケーションプログラミングインターフェイス（ＡＰＩ）コールがインターセプトされ、前記システムリソースに関連するアクセス制御リスト（ＡＣＬ）がセキュリティモニターのデータベースに記憶される、ステップと；
前記セキュリティモニターを執行モードで実行するステップであって、
前記アプリケーションによって行われたアプリケーションプログラミングインターフェイス（ＡＰＩ）コールがインターセプトされ、前記アプリケーションに関連するＡＣＬが前記セキュリティモニターのデータベースに記憶されているかどうかの判定がなされ、
前記アプリケーションに関連するＡＣＬが前記セキュリティモニターのデータベースに記憶されている場合は、前記アプリケーションはシステムリソースへのアクセスを許可され、
前記アプリケーションに関連するＡＣＬが前記セキュリティモニターのデータベースに記憶されていない場合は、前記アプリケーションはシステムリソースへのアクセスを許可されない、ステップとを含む、
コンピューター実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［背景技術］
データセンターのアドミニストレーターは、許容可能な電力要件、ハードウェア要件、および空間要件をも維持しながら、データセンターのデータ要件を満たす難しい仕事に直面する。多くの場合、費用を最小限に抑えるために、アドミニストレーターはデータセンター内のサーバーのアプリケーション密度を高める。アプリケーション密度は、単一の物理的コンピューター上で実行するアプリケーションの数の尺度である。各物理的コンピューター上で実行するアプリケーションの数を増やすことにより、データセンターのオペレーションをサポートするために必要とされるサーバーの数を最小限に抑えることができる。
【０００２】
データセンター内のアプリケーション密度を高めるために、アドミニストレーターは仮想マシン（ＶＭ）を利用してもよい。仮想マシンは、複数の仮想マシンによるマシンの物理的リソースの共有を可能にすることによりアプリケーション密度を高めることができる。しかし、様々な理由から、２つの異なるアプリケーションを同じＶＭ内で実行することが常に可能であるわけではない。例えば、２つの異なるアプリケーションが同じＶＭ内で実行することは、セキュリティ問題のために望ましくないこともある。別の例として、同じＶＭ上で実行する２つの異なるアプリケーションは、同じリソースにアクセスしようとする場合に衝突する可能性もある。
【０００３】
衝突する可能性がある２つのアプリケーションが同じコンピューター上で実行することを可能にするには、アプリケーションごとに個別のＶＭを実行する必要があり得る。しかし、このようなやり方で複数のＶＭを実行することは、各仮想マシンを実行することに関連するライセンス費用のために、高くなる可能性がある。さらに、複数のＶＭを実行するための運用コストは、多数のマシンを含む環境において動作する場合、例えばクラウド環境において動作する場合はかなり大きくなる可能性がある。データセンター内では通常、各ＶＭは監視および管理される。したがって、各ＶＭは、所望のやり方で動作するために、様々なパッチまたはポリシーを必要とする可能性があるので、データセンターを運営するための管理費はＶＭの追加に伴って増大する。
【０００４】
本明細書において行われる開示が提示されるのは、これらおよび他の考慮事項に関する。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書で開示される概念および技術は、セキュリティ境界を提供するためである。本明細書で提示される概念および技術の実現を通じて、アプリケーション間にセキュアな境界を提供するやり方で同じコンピューター上で複数のアプリケーションを実行することができる。このようにして、普通なら望ましくないまたは不可能であり得る同じ物理的コンピューターもしくは仮想コンピューター上で２つ以上のアプリケーションを実行することができる。したがって、本明細書で開示される技術は、互換不可能なアプリケーションまたは衝突するアプリケーションを実行するために必要とされるＶＭの数および関連ライセンス使用料を低減するために利用することができる。
【０００６】
本明細書で提示される一態様によれば、セキュリティモニターは、アプリケーションを実行することにより行われるＡＰＩ（アプリケーションプログラミングインターフェイス）コールを監視すること、および、アプリケーションによって使用されるリソースを識別することを学習モードで実行する。セキュリティモニターは、識別されたリソースのそれぞれのための編集可能な仮想アクセス制御リスト（ＡＣＬ）を、完全なアクセスからオフリミットまでの各識別されたシステムリソースへのアクセスを制御するために使用することができるセキュリティモニターのデータベースに追加する。セキュリティモニターがＡＰＩコールによってアクセスされたリソースを識別した後は、セキュリティモニターは、ＡＰＩコールが正常に進行することを許可する。
【０００７】
動作の強制モードでは、セキュリティモニターは、アプリケーションがシステムリソースにアクセスすることを認可されているかどうかを判定するためにアプリケーションを実行することにより行われるＡＰＩコールを監視する。特に、セキュリティモニターが強制モードにある場合は、セキュリティモニターはアプリケーションによって行われるＡＰＩコールをインターセプトする。次いで、セキュリティモニターは、要求アプリケーションが要求されたシステムリソースにアクセスすることを認可されているかどうかを判定するためにセキュリティモニターのデータベースにアクセスする。セキュリティモニターが、アプリケーションが要求されたシステムリソースにアクセスすることを認可されていると判定した場合は、ＡＰＩコールは正常に進行することを許可される。セキュリティモニターが、アプリケーションが要求されたシステムリソースにアクセスすることを認可されていないと判定した場合は、セキュリティモニターは、アプリケーションによるシステムリソースへのアクセスを拒否する。システムアドミニストレーターは、拒否されたアプリケーションが要求されたシステムリソースにアクセスすることを許可するようにＡＣＬを編集することができる。
【０００８】
本明細書で開示される実施形態は、仮想化アプリケーション、ハードウェア仮想化環境において実行する非仮想化アプリケーション、非仮想化環境において実行する非仮想化アプリケーション、および他のタイプのアプリケーションと共に利用し得ることを理解されたい。前述の保護対象はまた、コンピューター制御装置、コンピュータープロセス、コンピューティングシステム、または、コンピューター可読記憶媒体などの製品として実施してもよいことを理解されたい。上記および様々な他の特徴は、以下の詳細な説明を読むとともに関連する図面を検討することによって明らかになるであろう。
【０００９】
この概要は、発明を実施するための形態において下記でさらに説明する概念の抜粋を簡略化された形態で紹介するために提供される。この概要は、特許請求される保護対象の主要な特徴または本質的な特徴を識別することを意図するものではなく、この概要が特許請求される保護対象の範囲を限定するために使用されることを意図するものでもない。さらに、特許請求される保護対象は、この開示の任意の部分に記載されている任意のまたはすべての欠点を解決する実装に限定されない。
【図面の簡単な説明】
【００１０】
【図１】本明細書で記載される保護対象の態様が実現し得る適切なコンピューティング環境の一例を示すコンピューターソフトウェアアーキテクチャ図である。
【図２】本明細書で提示される様々な実施形態によるセキュリティ境界を提供するために本明細書で提供される学習モードで動作するセキュリティモニターの諸態様を例示するコンピューターソフトウェアアーキテクチャ図である。
【図３】本明細書で提示される様々な実施形態によるランタイムにおいて強制モードで動作するセキュリティモニターの態様を例示するコンピューターソフトウェアアーキテクチャ図である。
【図４】セキュリティモニターが学習モードにある場合にシステムリソースアクセスを監視するために本明細書で提供される１つの例示的ルーチンの態様を示す流れ図である。
【図５】セキュリティモニターが強制モードで動作する場合にシステムリソースアクセスを監視するために本明細書で提供される１つの例示的ルーチンの態様を示す流れ図である。
【図６】本明細書で提示される実施形態の態様を実施することができるコンピューティングシステムのための例示的コンピューターハードウェアおよびソフトウェアアーキテクチャを示すコンピューターアーキテクチャの図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明は、セキュリティ境界を提供するための技術を対象とする。上記で簡潔に論じられ、以下でさらに詳細に説明されるように、アプリケーションＡＰＩコールがインターセプトされる学習動作モードが実行される。ＡＰＩコールを識別するデータは、セキュリティモニターのデータベースに記録される。アプリケーションのランタイムにおいて、セキュリティモニターは、アプリケーションが学習動作モード中にデータベースに記憶されているデータに基づいてリソースにアクセスすることを許可する。これらのプロセスに関する追加の詳細が以下で図１〜図６に関して提供される。
【００１２】
本明細書に記載の保護対象は、コンピューターシステム上でのオペレーティングシステムおよびアプリケーションプログラムの実行と共に実行するプログラムモジュールの概括的なコンテキストで提示されるが、他の実施形態が他のタイプのプログラムモジュールと組み合わせて実施されることが可能であることを当業者は理解するであろう。一般的に、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、本明細書に記載の保護対象は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのコンシューマエレクトロニクスまたはプログラマブルコンシューマエレクトロニクス、ミニコンピューター、およびメインフレームコンピューターなどを含めて他のコンピューターシステム構成により実施されてもよいことを当業者は理解するであろう。
【００１３】
以下の詳細な説明では、本明細書の一部を形成し、特定の実施形態または例の説明として示される添付の図面を参照する。次に、いくつかの図全体を通じて同様の数字が同様の要素を表す図面を参照すると、セキュリティ境界を提供するためのコンピューティングシステム、コンピューター可読記憶媒体、およびコンピューター実行方法の態様が提示される。
【００１４】
図１は、本明細書に記載の主題の諸態様を実施することができる適切なコンピューティング環境１００の一例を示すコンピューターソフトウェアアーキテクチャ図である。具体的には、図１は、ハードウェアの仮想化コンピューティング環境を実施するための例示的ソフトウェアアーキテクチャを示している。この技術で知られるように、仮想化は、ホストコンピューターが単一のコンピューター上で複数のオペレーティングシステムを同時に実行することができるようにする。オペレーティングシステムの各実行インスタンスは典型的には、仮想マシンと呼ばれる。
【００１５】
仮想マシンの実行を可能にするために、ソフトウェアハイパーバイザー１０２を実行して仮想マシンの動作を構成、実行、および管理するための機能を提供することができる。ハイパーバイザー１０２は、ホストコンピューターの物理的ハードウェア１０６の上で、および１つまたは複数のオペレーティングシステム１０８Ａ〜１０８Ｃの下で実行するソフトウェアの層である。ハイパーバイザー１０２はハードウェアで実行してもよい。
【００１６】
ハイパーバイザー１０２は、パーティションと呼ばれる隔離された実行環境を提供する。図１に示す例では、オペレーティングシステム１０８Ａおよびアプリケーション１１０Ａは、第１のパーティションにおいて実行し、オペレーティングシステム１０８Ｂおよびアプリケーション１１０Ｂは、第２のパーティションにおいて実行し、オペレーティングシステム１０８Ｃおよびアプリケーション１１０Ｃは、第３のパーティションにおいて実行する。ハイパーバイザー１０２は、各パーティションに、仮想ハードウェアリソース１０４（例えば、メモリ、デバイス、および中央処理装置（ＣＰＵ）サイクルのそれ自体のセットを提供する。ハイパーバイザー１０２はまた、必要に応じて基本ハードウェア１０６へのアクセスを制御およびアービトレートする。
【００１７】
下記でより詳細に説明するように、ハイパーバイザー１０２は、各システムリソースにアクセス制御リスト（ＡＣＬ）を割り当て、システムリソースを使用することを許可されたアプリケーション１１０を含む許可リストに基づいて各システムリソースを使用するための許可を割り当てることにより同じパーティションの中で実行するアプリケーション１１０間にセキュリティ境界を提供するためにセキュリティ境界を提供するための本明細書で開示された機能を実行することができる。他の実施形態において、本明細書で提示する機能は、オペレーティングシステム１０８内で実行されてもよく、または本明細書で開示された機能を可能にするローレベルオペレーティングシステムドライバーをインストールするアプリケーションプログラムによって実行してもよい。これに関して、図１は例示のみであり、本明細書で提示している実施形態は、多くの異なるやり方で実施されてきた多くの異なるタイプの仮想化環境の中で利用されてもよいことを理解されたい。例えば、本明細書で開示する実施形態は、仮想化アプリケーション、ハードウェア仮想化環境において実行する非仮想化アプリケーション、非仮想化環境において実行する非仮想化アプリケーション、および、他のタイプのアプリケーションと共に利用してよい。
【００１８】
図２は、セキュリティモニター２０６が学習動作モード（「学習モード」）で実行するソフトウェア環境２００を例示するコンピューターソフトウェアアーキテクチャ図である。図２に示されているソフトウェア環境２００では、１つもしくは複数のアプリケーション２０２がサーバーコンピューター、標準的デスクトップコンピューターもしくはラップトップコンピューター、またはテーブルコンピューターなどのコンピューター上で実行する。例えば、アプリケーション２０２は、人的資源（ＨＲ）アプリケーション、会計アプリケーション、構造化問合せ言語（ＳＱＬ）サーバー、および同種のものを含んでよい。
【００１９】
実行中に、アプリケーション２０２は、他のプログラムとの通信を容易にしてシステムリソースにアクセスするために、１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）コールを行うことができる。本明細書で使用する場合は、システムリソースなる語は、オペレーティングシステム（ＯＳ）が使用のためのアクセスを別途制御しないすべてのリソースまたは対象物を包含することを理解されたい。例えば、システムリソースは、ネットワークエンドポイント、ネットワークポート、ファイル、ウィンドウ、ユーザーインターフェイス（ＵＩ）要素、レジストリ、オープンデータベースコネクティビティ（ＯＤＢＣ）接続ストリング、および他のタイプのリソースを含めるようにしてよい。
【００２０】
学習モードの間に、セキュリティモニター２０６は、アプリケーション２０２によって行われたＡＰＩコールをインターセプトする。これは、図２では、ブロック２０４として示されている。ＡＰＩコールをインターセプトすることに応答して、セキュリティモニター２０６は、１つまたは複数の編集可能なＡＣＬをＡＰＩコールのターゲットであるシステムリソースに関連付ける。１つまたは複数の編集可能なＡＣＬは、システムリソースへの完全なアクセスからオフリミットまでのシステムリソースへのアクセスを制御するために使用されてよい。一実施形態では、セキュリティモニター２０６は、１つまたは複数のＡＣＬをセキュリティモニターのデータベース２０８に記憶する。メタデータは、アプリケーション２０２によって要求されたシステムリソースを識別するデータ、およびアプリケーション２０２がリソースにアクセスすることを許可されているという表示を含んでよい。ＡＣＬがセキュリティモニターのデータベース２０８に記憶された後に、インターセプトされたＡＰＩコールは正常に進行することを許可される。これは、図２に示すブロック２１０に例示してある。
【００２１】
下記でさらに詳細に説明するように、セキュリティモニター２０６は、アプリケーション２０２のランタイムにセキュリティモニターのデータベース２０８のコンテンツを利用して、システムリソースへのアクセスを許可または拒否する。具体的には、セキュリティモニター２０６は、ＡＰＩコールが前述の学習モードによって処理されているアプリケーション２０２によってリソースにアクセスすることを許可する。ＡＰＩコールが前述の学習モードで処理されていないアプリケーション２０２によってシステムリソースにアクセスすることは、許可されない。この点に関して、セキュリティモニター２０６によってセキュリティモニターのデータベース２０８に記憶されているデータは、ホワイトリストとして利用される。ホワイトリストを編集してアプリケーション、例えばアプリケーション２０２を追加または除去することにより学習モードが行われた後に、アドミニストレーターはシステムリソースへのアクセスを許可または拒否することができる。したがって、前述のセキュリティモニターのデータベース２０８に記憶されているデータのタイプは例示のみであり、セキュリティモニターは他のタイプのデータを記憶することができることを理解されたい。
【００２２】
図３は、セキュリティモニター２０６が動作の強制モード（「強制モード」）で実行するコンピューターソフトウェア環境３００である。環境３００は、同じコンピューター上で実行するアプリケーション３０２およびアプリケーション３０４を含む。アプリケーション３０２およびアプリケーション３０４はサーバー上で実行するが、これらのアプリケーションは、他のプログラムとの通信を容易にしてシステムリソースにアクセスするために、１つまたは複数のＡＰＩコールを行うことができる。
【００２３】
図３に示す例では、セキュリティモニター２０６は、前述の学習モードでアプリケーション３０２を処理した。しかし、アプリケーション３０４は、学習モードで実行されなかった。したがって、セキュリティモニターのデータベース２０８は、アプリケーション３０２によって行われたＡＰＩコールを識別するデータを含む。セキュリティモニターのデータベース２０８は、アプリケーション３０４によって行われたＡＰＩコールを識別するデータを含まない。
【００２４】
強制モードでの間に、セキュリティモニター２０６は、アプリケーション３０２およびアプリケーション３０４によって行われたＡＰＩコールをインターセプトする。これは、図３においてブロック３０６によって表されている。ＡＰＩコールをインターセプトすることに応答して、セキュリティモニター２０６はＡＰＩコールが許可されるべきかどうかを判定するためにセキュリティモニターのデータベース２０８のコンテンツにアクセスする。例えば、一実施形態では、セキュリティモニター２０６は、アプリケーション３０２およびアプリケーション３０４によって行われたＡＰＩコールが許可されるべきかどうかを判定するために学習モード中に記憶されたＡＣＬおよびメタデータにアクセスする。
【００２５】
アプリケーション３０２は学習モードで処理されたので、セキュリティモニター２０６は、アプリケーション３０２は要求されたシステムリソースにアクセスすることを認可されていると判定する。アプリケーション３０２は、システムリソースにアクセスすることを認可されているので、アプリケーション３０２によって行われたインターセプトされたＡＰＩコールは、正常に進行することを許可される。これは、図３におけるブロック３１２および３１４に示されている。アプリケーション３０４は学習モードで実行されなかったので、セキュリティモニター２０６はまた、アプリケーション３０４はシステムリソースにアクセスすることを認可されていないと判定する。アプリケーション３０４はシステムリソースにアクセスすることを認可されていないので、アプリケーション３０４によって行われたインターセプトされたＡＰＩコールは進行することを許可されない。
【００２６】
図４は、学習モードを実行するセキュリティモニター２０６の動作の態様を例示するルーチン４００を示す流れ図である。図４および他の図に関する本明細書に記載の論理的動作は、（１）一連のコンピューターで実行される行為またはコンピューティングシステム上で実行するプログラムモジュールとして、および／または、（２）コンピューティングシステムの中の相互接続されたマシンの論理回路または回路モジュールとして実行されることを理解されたい。この実施形態は、コンピューティングシステムの動作および他の要件に依存する選択の問題である。したがって、本明細書に記載の論理的動作は、状態、動作、構造デバイス、行為、またはモジュールと様々に呼ばれる。これらの動作、構造デバイス、行為およびモジュールは、ソフトウェアで、ファームウェアで、専用デジタルロジックで、およびそれらの任意の組合せで実行するようにしてよい。図に示され本明細書に記載されているものより多くの、または少ない動作を実行するようにしてもよいことを理解されたい。これらの動作は、本明細書に記載のものとは異なる順序で実行するようにしてもよい。
【００２７】
ルーチン４００は、アドミニストレーターがセキュリティモニター２０６を学習モードで実行する動作４０２から始まる。セキュリティモニター２０６が実行し始めた後は、ルーチン４００は、コンピューター上で動作するアプリケーションがＡＰＩコールを開始する動作４０４に進む。動作４０４から、ルーチンは動作４０６に進む。
【００２８】
動作４０６において、セキュリティモニター２０６は、１つまたは複数のアプリケーションによって開始されたＡＰＩコールをインターセプトする。ＡＰＩコールをインターセプトすることに応答して、ルーチン４００は、動作４０８に進み、ここで、セキュリティモニター２０６は要求されたリソースに関連するＡＣＬへのＡＰＩコールを行うアプリケーションを追加する。アドミニストレーターはまた、アプリケーションがＡＣＬを修正することによりリソースにアクセスすることができると明記することを許可してよい。動作４０８から、ルーチン４００は動作４１０に進む。
【００２９】
動作４１０において、１つまたは複数のＡＣＬは、セキュリティモニターのデータベース２０８に記憶される。セキュリティモニター２０６がセキュリティモニターのデータベース２０８を更新した後は、ルーチン４００は動作４１２に進み、ここで、インターセプトされたＡＰＩコールは正常に進行することを許可される。動作４１２から、ルーチン４００は動作４１４に進み、ここで、ルーチンは終了する。
【００３０】
図５は、強制モードで動作するセキュリティモニター２０６の動作の諸態様を例示するルーチン５００を示す流れ図である。ルーチン５００は、動作５０２から始まり、ここで、１つまたは複数のアプリケーションは、前述のやり方でＡＰＩコールを開始する。それに応答して、セキュリティモニター２０６は、動作５０４においてアプリケーションによって開始されたＡＰＩコールをインターセプトする。
【００３１】
動作５０６において、セキュリティモニター２０６は、セキュリティモニターのデータベース２０８にアクセスする。次いで、セキュリティモニター２０６は、セキュリティモニターのデータベース２０８に記憶されているデータを使用して、ＡＰＩコールを開始するアプリケーションが要求されたシステムリソースにアクセスすることを認可されているかを判定する。これは、動作５０８において行われる。
【００３２】
セキュリティモニター２０６が、アプリケーションが要求されたシステムリソースにアクセスすることを認可されていると判定した場合は、ルーチンは動作５１０に進み、ここで、サーバーはＡＰＩコールが正常に進行することを許可する。動作５１２において、アプリケーション３０２は、要求されたリソースにアクセスすることを許可される。動作５１２から、ルーチン５００は動作５１４に進み、ここで、ルーチンは終了する。
【００３３】
動作５０８において、セキュリティモニター２０６が、アプリケーション３０４が要求されたシステムリソースにアクセスすることを認可されていないと判定した場合は、ルーチンは動作５２０に進み、ここで、サーバーはアプリケーション３０４によって行われるＡＰＩコールが実行するのを妨げる。動作５２０から、ルーチン５００は動作５２２に進み、ここで、ルーチンは終了する。
【００３４】
セキュリティモニター２０６は失敗したＡＰＩコールに関する情報を記憶することができることを理解されたい。この情報は、適切なユーザーインターフェイスを介してアドミニストレーターに提供されてよい。アドミニストレーターは、このデータを使用して、失敗したＡＰＩコールを行うアプリケーションがいくつかのシステムリソースにアクセスすることを許可されるべきかどうかを判定することができる。この点に関して、アドミニストレーターは、将来の実行中にアプリケーションによるＡＰＩコールの実行を許可するために、セキュリティモニターのデータベース２０８に記憶されているデータ（例えばＡＣＬ）を修正することができる。
【００３５】
図６は、セキュリティ境界を提供するための、本明細書に記載のソフトウェアコンポーネントを実行することができるコンピューター６００のための例示的コンピューターアーキテクチャを示す。図６に示されているコンピューターアーキテクチャは、従来のデスクトップコンピューター、ラップトップコンピューター、またはサーバーコンピューターを例示し、本明細書に提示されているソフトウェアコンポーネントの任意の態様を実行するために利用されてよい。
【００３６】
図６に示すコンピューターアーキテクチャは、ＣＰＵ６０２（「中央処理装置」）、ＲＡＭ６１４（「ランダムアクセスメモリ」）およびＲＯＭ６１６（「読出し専用メモリ」）を含むシステムメモリ６０８、ならびにメモリをＣＰＵ６０２に結合するシステムバス６０４を含む。起動中などにコンピューター６００の中の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システムは、ＲＯＭ６１６に記憶されている。コンピューター６００は、オペレーティングシステム６１８を記憶するための大容量記憶装置６１０、アプリケーションプログラム、および他のプログラムモジュールをさらに含み、これらは本明細書でさらに詳細に説明する。
【００３７】
大容量記憶装置６１０は、バス６０４に接続されたマスストレージコントローラー（図示せず）を介してＣＰＵ６０２に接続される。大容量記憶装置６１０およびその関連コンピューター可読媒体は、コンピューター６００のための不揮発性ストレージを提供する。本明細書に含まれるコンピューター可読媒体の説明はハードディスクドライブまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置を指すが、コンピューター可読媒体はコンピューター６００によってアクセスされることが可能である任意の利用可能なコンピューター記憶媒体でよいことが当業者には理解されるはずである。
【００３８】
例として、しかし限定としてではなく、コンピューター可読媒体は、コンピューター可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された揮発性媒体および不揮発性媒体、取外し可能な媒体および取外し不可能な媒体を含んでよい。例えば、コンピューター可読媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（「デジタル多用途ディスク」）、ＨＤ−ＤＶＤ、ブルーレイ、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用されることが可能であり、コンピューター６００によってアクセスされることが可能である任意の他の媒体を含むがそれらに限定されない。
【００３９】
様々な実施形態によれば、コンピューター６００は、ネットワーク６２０などのネットワークを介してのリモートコンピューターへの論理的接続を使用してネットワーク接続環境で動作することができる。コンピューター６００は、バス６０４に接続されたネットワークインターフェイスユニット６０６を介してネットワーク６２０に接続することができる。ネットワークインターフェイスユニット６０６は、他のタイプのネットワークおよびリモートコンピューターシステムに接続するために利用されてもよいことを理解されたい。コンピューター６００はまた、キーボード、マウス、または電子スタイラス（図６に示さず）を含めていくつかの他のデバイスからの入力を受信し処理するために入／出力コントローラー６１２を含んでよい。同様に、入／出力コントローラーは、表示画面、プリンタ、または他のタイプの出力デバイス（図６に示さず）に出力を提供することができる。
【００４０】
上記で簡単に述べられたように、いくつかのプログラムモジュールおよびデータファイルは、ネットワーク接続されたデスクトップコンピューター、ラップトップコンピューター、またはサーバーコンピューターの動作を制御するのに適したオペレーティングシステム６１８を含むコンピューター６００の大容量記憶装置６１０およびＲＡＭ６１４に記憶されてよい。大容量記憶装置６１０およびＲＡＭ６１４はまた、１つまたは複数のプログラムモジュールを記憶することができる。具体的には、大容量記憶装置６１０およびＲＡＭ６１４は、それぞれ図１〜図５に関して上記で詳細に説明されたハイパーバイザー１０２、アプリケーション２０２、３０２、および３０４、セキュリティモニター２０６、ならびにセキュリティモニターのデータベース２０８を記憶することができる。大容量記憶装置６１０およびＲＡＭ６１４はまた、他のタイプのプログラムモジュールおよびデータを記憶することができる。
【００４１】
本明細書に記載のソフトウェアコンポーネントは、ＣＰＵ６０２にロードされ実行される場合は、ＣＰＵ６０２およびコンピューター６００全体を汎用コンピューティングシステムから本明細書に提示されている機能を容易にするようにカスタマイズされた専用コンピューティングシステムに変換することができることを理解されたい。ＣＰＵ６０２は、任意の数の状態を個別にまたはまとめて呈してよい任意の数のトランジスタまたは他の個別回路素子から構成されてよい。より具体的には、ＣＰＵ６０２は、本明細書で開示されるソフトウェアモジュールの中に含まれている実行可能な命令に応答して、有限状態機械として動作することができる。これらのコンピューター実行可能命令は、ＣＰＵ６０２が状態間でどのように遷移するかを指定することによりＣＰＵ６０２を変換し、それによって、ＣＰＵ６０２を構成するトランジスタまたは他の個別ハードウェア素子を変換することができる。
【００４２】
本明細書に提示されているソフトウェアモジュールを符号化することはまた、本明細書に提示されているコンピューター可読媒体の物理的構造を変換することができる。物理的構造の特定の変換は、本明細書の様々な実施形態において、様々な要因に依存してよい。そのような要因の例は、コンピューター可読媒体が一次ストレージであるとみなされても二次ストレージであるとみなされても、コンピューター可読媒体を実施するために使用される技術および同種のものを含んでよいがそれらに限定されない。例えば、コンピューター可読媒体は、半導体ベースのメモリとして実施される場合、本明細書で開示されるソフトウェアは、半導体メモリの物理的状態を変換することによりコンピューター可読媒体上で符号化されてよい。例えば、ソフトウェアは、半導体メモリを構成するトランジスタ、コンデンサー、または他の個別回路素子の状態を変換することができる。ソフトウェアはまた、そこにデータを記憶するためにそのようなコンポーネントの物理的状態を変換することができる。
【００４３】
他の例として、本明細書で開示されるコンピューター可読媒体は、磁気技術または光技術を使用して実施されてよい。そのような実施形態では、本明細書に提示されているソフトウェアは、ソフトウェアがそこで符号化される場合は、磁気媒体または光媒体の物理的状態を変換することができる。これらの変換は、所与の磁気媒体の中の特定の位置の磁気特性を変えることを含んでよい。これらの変換はまた、所与の光媒体の中の特定の位置の物理的特徴または特性を変えることを含み、それらの位置の光特性を変える。物理的媒体の他の変換は、この議論を容易にするためにのみ提供された上記例によって、本明細書の範囲および趣旨から逸脱することなく、可能である。
【００４４】
上記を考慮して、本明細書に提示されているソフトウェアコンポーネントを記憶し実行するためにコンピューター６００において多くのタイプの物理的変換が行われることを理解されたい。コンピューター６００は、ハンドヘルドコンピューター、組み込みコンピューターシステム、携帯情報端末、および当業者に知られている他のタイプのコンピューティングデバイスを含めて他のタイプのコンピューティングデバイスを含んでよいことも理解されたい。コンピューター６００は、図６に示されている構成要素のすべてを含まなくてもよく、図６に明示されていない他の構成要素を含んでもよく、または図６に示されているものとは完全に異なるアーキテクチャを利用してもよいことも企図される。
【００４５】
上記に基づいて、セキュリティ境界を提供するための技術が本明細書で提供されることを理解されたい。本明細書で提示される主題は、コンピューターの構造的特徴、方法論的行為および変換行為、特定のコンピューティングマシン、ならびにコンピューター可読媒体に特有の言語で説明されてきたが、添付の特許請求の範囲において定義される本発明は、必ずしも本明細書に記載の特定の特徴、行為、または媒体に限定されるわけではないことが理解されるべきである。むしろ、特定の特徴、行為、および媒体は、請求項を実施する例示的な形態として開示される。
【００４６】
前述の主題は、例示としてのみ提供されるものであり、限定的であると解釈されるべきではない。例示され説明された例示的実施形態および適用例に従うことなく、かつ添付の特許請求の範囲によって定義される本発明の真の趣旨および範囲から逸脱することなく、様々な修正および変更が本明細書に記載の主題に加えるようにしてもよい。
いくつかの態様を記載しておく。
〔態様１〕
セキュリティ境界を提供するためのコンピューター実行方法であって、前記コンピューター実行方法は、
セキュリティモニターを実行すること、
１つまたは複数のシステムリソースにアクセスするためにアプリケーションによって行われた１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）コールを前記セキュリティモニターによってインターセプトすることと、
データを、前記システムリソースにアクセスすることに関連するセキュリティモニターのデータベースに記憶すること、および
前記アプリケーションのランタイムにおいて、前記１つまたは複数のＡＰＩコールを行う前記アプリケーションが、前記システムリソースにアクセスすることを認可されているかを前記セキュリティモニターによって判定すること
のためにコンピューター実行動作を行うステップを含むことを特徴とするコンピューター実行方法。
〔態様２〕
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースにある場合は、前記システムリソースへの前記アプリケーションのアクセスを許可するステップと、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースにない場合は、前記システムリソースへの前記アプリケーションのアクセスを妨げるステップと
をさらに含むことを特徴とする態様１に記載のコンピューター実行方法。
〔態様３〕
前記システムリソースへのアクセスを妨げられた前記アプリケーションに関するデータをアドミニストレーターに提供するステップをさらに含むことを特徴とする態様２に記載のコンピューター実行方法。
〔態様４〕
１つまたは複数のアクセス制御リスト（ＡＣＬ）を、前記アプリケーションによって使用されるのを要求された前記システムリソースに関連付けるステップと、
前記１つまたは複数のＡＣＬを前記セキュリティモニターのデータベースに記憶するステップと
をさらに含むことを特徴とする態様１に記載のコンピューター実行方法。
〔態様５〕
前記１つまたは複数のＡＣＬを前記アプリケーションによって使用されることを要求された前記システムリソースに関連付けるステップ、および前記１つまたは複数のＡＣＬを前記セキュリティモニターのデータベースにロードするステップは、前記セキュリティモニターが学習モードで動作する場合に行われることを特徴とする態様４に記載のコンピューター実行方法。
〔態様６〕
前記アプリケーションは、仮想アプリケーションであることを特徴とする態様１に記載のコンピューター実行方法。
〔態様７〕
前記仮想アプリケーションは、他の仮想アプリケーションが実行している単一の物理マシン上で実行していることを特徴とする態様６に記載のコンピューター実行方法。
〔態様８〕
前記仮想アプリケーションおよび他の仮想アプリケーションは、パーティション内で実行されることを特徴とする態様７に記載のコンピューター実行方法。
〔態様９〕
前記システムリソースは、通信ポート、レジストリ、オープンデータベースコネクティビティ接続ストリング、またはエンドポイントのうちの少なくとも１つを含むことを特徴とする態様１に記載のコンピューター実行方法。
〔態様１０〕
コンピューターによって実行される場合、前記コンピューターに、
１つまたは複数のシステムリソースにアクセスするためにアプリケーションによって行われた１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）コールをセキュリティモニターによってインターセプトさせ、
前記ＡＰＩコールに関するデータをセキュリティモニターのデータベースに記憶させ、
前記セキュリティモニターのデータベースに記憶されている前記データに基づいて前記システムリソースにアクセスすることから１つまたは複数の他のアプリケーションを隔離させる
コンピューター可読命令を有することを特徴とするコンピューター可読記憶媒体。
〔態様１１〕
前記コンピューターによって実行される場合、前記コンピューターに
仮想化層の中にセキュリティモニターを提供させ、
１つまたは複数のアクセス制御リスト（ＡＣＬ）を前記システムリソースに関連付けさせる
さらなるコンピューター実行可能命令を有することを特徴とする態様１０に記載のコンピューター可読記憶媒体。
〔態様１２〕
前記コンピューターによって実行される場合、前記コンピューターに、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースに見つかった場合は、前記システムリソースへの前記アプリケーションのアクセスを許可させ、
前記アプリケーションに関連するデータが前記セキュリティモニターのデータベースに見つからない場合は、前記アプリケーションが前記システムリソースにアクセスするのを妨げさせる
さらなるコンピューター実行可能命令を有することを特徴とする態様１１に記載のコンピューター可読記憶媒体。
〔態様１３〕
前記システムリソースにアクセスするのを妨げられた前記アプリケーションに関するデータをアドミニストレーターに提供するステップをさらに含むことを特徴とする態様１２に記載のコンピューター可読記憶媒体。
〔態様１４〕
前記アドミニストレーターは前記システムリソースにアクセスするのを妨げられた前記アプリケーションに前記システムリソースへのアクセスを許可することができることを特徴とする態様１３に記載のコンピューター可読記憶媒体。
〔態様１５〕
前記アプリケーションは仮想アプリケーションであることを特徴とする態様１０に記載のコンピューター可読記憶媒体。
【図１】
0005922149.tif 000002
【図２】
0005922149.tif 000003
【図３】
0005922149.tif 000004
【図４】
0005922149.tif 000005
【図５】
0005922149.tif 000006
【図６】
0005922149.tif 000007