(57)【特許請求の範囲】
【請求項１】
仮想環境においてネットワークアクセス制御を行うコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティング装置によって実施され、
ホストマシン上で動作している仮想マシンにトランジェントセキュリティエージェントを注入するステップと、
前記仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を、前記トランジェントセキュリティエージェントから受け取るステップと、
前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知に基づいて、前記仮想マシンのネットワークアクセスを制御するステップと、
前記通知を受け取ったことに応じて、前記仮想マシンから前記トランジェントセキュリティエージェントを除去するステップと、を含む、
方法。
【請求項２】
前記トランジェントセキュリティエージェントは、前記ホストマシン上の注入モジュールによって前記仮想マシンに注入される、
請求項１に記載の方法。
【請求項３】
前記仮想マシンに前記トランジェントセキュリティエージェントを注入する前記ステップは、
前記仮想マシンから前記注入モジュールに制御を移すことを促進するように構成された１つ以上のコンピュータ実行可能命令を、前記仮想マシンの例外ハンドラメモリロケーションに挿入するステップと、
前記仮想マシンの実行中に例外をトリガして、前記例外ハンドラメモリロケーションにある前記１つ以上のコンピュータ実行可能命令を実行させるステップと、
前記少なくとも１つのコンピュータ実行可能命令が実行された後に前記仮想マシンから制御を取得するステップと、
前記仮想マシンに前記トランジェントセキュリティエージェントを挿入するステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知は、前記ホストマシン上のネットワークアクセス制御モジュールにおいて受け取られ、
前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知は、プロセス間通信を介して、前記ネットワークアクセス制御モジュールに送られ、
前記ネットワークアクセス制御モジュールは、ネットワーク通信フィルタを備え、前記ネットワーク通信フィルタは、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知に基づいて、前記仮想マシンのネットワークアクセスを制御する、
請求項１に記載の方法。
【請求項５】
前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知は、前記ホストマシンから遠く離れているネットワークアクセス制御サーバにおいて受け取られ、
前記ネットワークアクセス制御サーバは、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知に基づいて、前記仮想マシンのネットワークアクセスを制御する、
請求項１に記載の方法。
【請求項６】
前記通知は、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成していないことを通知するものであり、
前記仮想マシンのレメディエーションを行うステップをさらに含む、
請求項１に記載の方法。
【請求項７】
前記レメディエーションは、前記仮想マシンのユーザに対して透過的である、
請求項６に記載の方法。
【請求項８】
仮想環境においてネットワークアクセス制御を行うシステムであって、
ホストマシン上で実行されている仮想マシンにトランジェントセキュリティエージェントを注入する、メモリに記憶されたエージェント挿入モジュールと、
前記仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を前記トランジェントセキュリティエージェントから受け取る、メモリに記憶されたエージェント起動モジュールと、
メモリに記憶されたアクセス制御モジュールであって、
前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知に基づいて、前記仮想マシンのネットワークアクセスを制御し、
前記通知を受け取ることに応じて、前記トランジェントセキュリティエージェントを前記仮想マシンから除去する、アクセス制御モジュールと、
前記エージェント挿入モジュールと前記エージェント起動モジュールと前記アクセス制御モジュールとを実行するよう構成された少なくとも１つのハードウェアプロセッサと、
を含むシステム。
【請求項９】
前記仮想マシンから制御を移すことを促進するように構成された１つ以上のコンピュータ実行可能命令を、前記仮想マシンの例外ハンドラメモリロケーションに挿入し、
前記仮想マシンの実行中に例外をトリガして、前記例外ハンドラメモリロケーションにある前記１つ以上のコンピュータ実行可能命令を実行させ、
前記少なくとも１つのコンピュータ実行可能命令が実行された後に前記仮想マシンから制御を取得し、
前記仮想マシンに前記トランジェントセキュリティエージェントを挿入する、
ことによって、前記エージェント挿入モジュールは前記仮想マシンに前記トランジェントセキュリティエージェントを注入する、
請求項８に記載のシステム。
【請求項１０】
前記通知は、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成していないことを通知するものであり、
前記アクセス制御モジュールは前記仮想マシンのレメディエーションを行う、
請求項８に記載のシステム。
【請求項１１】
前記レメディエーションは、前記仮想マシンのユーザに対して透過的である、
請求項１０に記載のシステム。
【請求項１２】
前記アクセス制御モジュールは、ネットワーク通信フィルタを使用して前記仮想マシンの１つ以上のネットワーク通信を阻止することによって、前記仮想マシンの前記ネットワークアクセスを制御する、
請求項８に記載のシステム。
【請求項１３】
仮想環境においてネットワークアクセス制御を行うコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティング装置によって実施され、
ホストマシン上で動作している仮想マシンを識別するステップと、
前記ホストマシン上に常駐するも、前記仮想マシンの外部に位置するネットワーク通信フィルタを与えるステップと、
前記ホストマシン上で実行されていて、前記仮想マシンの外部に位置するプロセスを用いて、前記仮想マシンの１つ以上のリソースを検査するステップと、
前記仮想マシンのリソースの前記検査の結果に基づいて、前記仮想マシンのオペレーティングシステムおよび／またはファイルシステムのデータ構造を再構成するステップと、
前記再構成された、オペレーティングシステムおよび／またはファイルシステムのデータ構造を評価して、前記仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定するステップと、
前記ネットワーク通信フィルタを制御するアクセス制御モジュールにおいて、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を受け取るステップと、
前記ネットワーク通信フィルタを使用して、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの前記通知に基づいて、前記仮想マシンのネットワークアクセスを制御するステップと、
を含む方法。
【請求項１４】
前記仮想マシンの前記１つ以上のリソースを検査する前記ステップは、前記仮想マシンのディスク空間およびメモリの読み出しを行うステップを含む、
請求項１３に記載の方法。
【請求項１５】
前記通知は、前記仮想マシンが前記１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成していないことを通知するものであり、
前記ネットワーク通信フィルタは、前記仮想マシンの１つ以上のネットワーク通信を阻止することにより、前記仮想マシンのネットワークアクセスを制御する、
請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
組織の情報技術（「ＩＴ」）インフラストラクチャおよび関連するビジネス活動の全体的なセキュリティおよびアベイラビリティにおいて、組織の個々のエンドポイントの管理状態が果たす役割はクリティカルである。最近の高度なクライムウェアは、特定の企業を標的にするだけではなく、デスクトップコンピュータやラップトップコンピュータをも、企業のビジネス活動および有価資源へのバックドア経路として標的にする。企業は、こうした、標的とされる脅威に対する自衛策として、各エンドポイントが企業のセキュリティポリシーおよび構成管理ポリシーに対してコンプライアンスを維持していることを保証する手段を持つことが必要になる。エンドポイントのポリシーコンプライアンスが保証されない場合、組織は、多様な脅威に対して脆弱なままになる。このような脅威として考えられるのは、悪質なコードの企業全体への拡散、ビジネスクリティカルサービスの混乱、ＩＴの復旧および管理のコストの増大、機密情報の露出、企業ブランドへの打撃、および／またはコンプライアンス違反に対する規制上の罰金などである。
【０００２】
ネットワークアクセス制御技術を用いることにより、組織は、ユーザエンドポイント（オンサイト従業員、リモート従業員、ゲスト、契約業者、および臨時雇用者のエンドポイントを含む）に対して企業ネットワークのリソースへのアクセスを許可する前に、それらのエンドポイントの構成およびセキュリティ状態が適正であることを確認することが可能である。ネットワークアクセス制御技術によれば、エンドポイントのセキュリティポリシーおよび規格が満たされることを保証するために、エンドポイントのコンプライアンス状態の検出および評価、適切なネットワークアクセスのプロビジョニング、ならびにメディエーション機能の提供を行うことが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
仮想環境は、企業環境においてセキュリティ上の困難な課題を提起する。仮想マシンは、作成、複製、記憶、および移動が比較的容易であるために、（たとえば、承認されたバージョンのソフトウェアおよびパッチレベルを有していないなど）企業ポリシーに対するコンプライアンスから逸脱することが容易に起こりうる。そのような仮想マシンに、企業ネットワーク内でのネットワーク接続の開始を許可することは、安全とは言えない。そこで、仮想環境においてネットワークアクセス制御を行うための、より効率的かつ効果的なメカニズムが必要とされている。
【課題を解決するための手段】
【０００４】
後で詳述するように、本開示は、主に、仮想環境においてネットワークアクセス制御を行うシステムおよび方法に関する。本開示の実施形態は、仮想環境におけるネットワークアクセス制御を、様々な様式で行う。一例として、仮想環境においてネットワークアクセス制御を行う方法は、１）ホストマシン上で動作している仮想マシンにトランジェントセキュリティエージェントを注入するステップと、２）仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を、トランジェントセキュリティエージェントから受け取るステップと、３）仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づいて、仮想マシンのネットワークアクセスを制御するステップと、を含む。
【０００５】
実施形態によっては、トランジェントセキュリティエージェントは、ホストマシン上の注入モジュールによって仮想マシンに注入される。仮想マシンにトランジェントセキュリティエージェントを注入するステップは、１）仮想マシンから注入モジュールに制御を移すことを促進するように構成された１つ以上のコンピュータ実行可能命令を、仮想マシンの例外ハンドラメモリロケーションに挿入するステップと、２）仮想マシンの実行中に例外をトリガして、例外ハンドラメモリロケーションにある１つ以上のコンピュータ実行可能命令を実行させるステップと、３）少なくとも１つのコンピュータ実行可能命令が実行された後に仮想マシンから制御を取得するステップと、４）仮想マシンにトランジェントセキュリティエージェントを挿入するステップと、を含む。
【０００６】
各種実施形態によれば、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知は、ホストマシン上のネットワークアクセス制御モジュールにおいて受け取られる。そのような実施形態では、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知は、プロセス間通信を介して、ネットワークアクセス制御モジュールに送られる。ネットワークアクセス制御モジュールは、ネットワーク通信フィルタを含み、ネットワーク通信フィルタは、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づいて、仮想マシンのネットワークアクセスを制御する。
【０００７】
少なくとも１つの実施形態では、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知は、ホストマシンから遠く離れているネットワークアクセス制御サーバにおいて受け取られ、ネットワークアクセス制御サーバは、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づき、仮想マシンのネットワークアクセスを制御する。
【０００８】
１つ以上の実施形態によれば、本方法はさらに、仮想マシンからトランジェントセキュリティエージェントを除去するステップを含む。トランジェントセキュリティエージェントは、仮想マシンがネットワークアクセスを必要としなくなった時点または他の任意の時点で仮想マシンから除去される。
【０００９】
第２の例として、仮想環境においてネットワークアクセス制御を行う方法は、１）ホストマシン上で動作している仮想マシンにセキュリティエージェントを与えるステップと、２）ホストマシン上に常駐するも、仮想マシンの外部に位置するネットワーク通信フィルタを与えるステップと、３）ネットワーク通信フィルタを制御するアクセス制御モジュールにおいて、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を受け取るステップであって、この通知は、セキュリティエージェントからアクセス制御モジュールに、プロセス間通信を介して送られる、受け取るステップと、４）ネットワーク通信フィルタを使用して、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づいて、仮想マシンのネットワークアクセスを制御するステップと、を含む。
【００１０】
実施形態によっては、仮想マシンにセキュリティエージェントを与えるステップは、セキュリティエージェントを仮想マシンに注入するステップを含む。ホストマシン上の注入モジュールが、セキュリティエージェントを仮想マシンに注入する。さらに、または代替として、仮想マシンにセキュリティエージェントを与えるステップは、セキュリティエージェントを仮想マシンにインストールするステップを含む。セキュリティエージェントは、仮想マシンのインストールプロセスにより、仮想マシンにインストールされる。
【００１１】
各種実施形態によれば、コンプライアンスの通知は、セキュリティエージェントからアクセス制御モジュールに、仮想マシン間通信を介して送られる。代替として、コンプライアンスの通知は、セキュリティエージェントおよびアクセス制御モジュールが共用するメモリロケーションに記憶されることによって、セキュリティエージェントからアクセス制御モジュールに送られる、
【００１２】
実施形態によっては、コンプライアンスの通知は、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成していないことを通知するものであり、アクセス制御モジュールは、ネットワーク通信フィルタを使用して、仮想マシンの１つ以上のネットワーク通信を阻止することにより、仮想マシンのネットワークアクセスを制御する。このような状況では、本方法は、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成するように、仮想マシンのレメディエーションを行うステップを含む。ネットワーク通信フィルタは、仮想マシンが、仮想マシンのレメディエーションに使用される１つ以上のネットワークリソースにアクセスすることを可能にする。
【００１３】
第３の例として、仮想環境においてネットワークアクセス制御を行う方法は、１）ホストマシン上で動作している仮想マシンを識別するステップと、２）ホストマシン上に常駐するも、仮想マシンの外部に位置するネットワーク通信フィルタを与えるステップと、３）ホストマシン上で実行されていて、仮想マシンの外部に位置するプロセスを用いて、仮想マシンの１つ以上のリソースを検査して、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定するステップと、４）ネットワーク通信フィルタを制御するアクセス制御モジュールにおいて、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を受け取るステップと、５）ネットワーク通信フィルタを使用して、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づいて、仮想マシンのネットワークアクセスを制御するステップと、を含む。
【００１４】
上述の実施形態のうちのいずれの実施形態の特徴も、本明細書に記載の一般原則に従って、互いに組み合わせて使用してよい。これらおよび他の実施形態、特徴、および有利点は、以下の詳細説明を、添付図面ならびに特許請求の範囲と併せて読むことによって、より詳細に理解されるであろう。 
【００１５】
添付図面は、いくつかの例示的実施形態を図示しており、本明細書の一部分をなす。これらの図面は、以下の説明とともに、本開示の様々な原理を具体例によって説明している。
【００１６】
各図面を通して、同一の参照符号および記載は、同様の（ただし、必ずしも同一ではない）要素を示している。本明細書に記載の例示的実施形態は、様々な修正や代替形態を許容するものであるが、図面では、特定の実施形態を例として示しており、本明細書ではこれらについて詳細に記載する。しかしながら、本明細書に記載の例示的実施形態は、開示された特定の形態に限定されることを意図するものではない。むしろ、本開示は、添付の特許請求の範囲に含まれるあらゆる修正形態、等価形態、および代替形態を包含するものである。
【図面の簡単な説明】
【００１７】
【図１】仮想環境においてネットワークアクセス制御を行うための例示的システムのブロック図である。
【図２】仮想マシンにセキュリティエージェントを与えることにより、仮想環境においてネットワークアクセス制御を行うための例示的システムのブロック図である。
【図３】仮想マシンにセキュリティエージェントを与えることにより、仮想環境においてネットワークアクセス制御を行うための別の例示的システムのブロック図である。
【図４】仮想マシンにセキュリティエージェントを注入することにより、仮想環境においてネットワークアクセス制御を行うための例示的方法のフロー図である。
【図５】セキュリティエージェントとアクセス制御モジュールとの間のプロセス間通信により、仮想環境においてネットワークアクセス制御を行うための例示的方法のフロー図である。
【図６】仮想マシンのリソースを検査することにより、仮想環境においてネットワークアクセス制御を行うための例示的システムのブロック図である。
【図７】仮想マシンのリソースを検査することにより、仮想環境においてネットワークアクセス制御を行うための例示的方法のフロー図である。
【図８】本明細書に記載かつ／または図示された実施形態のうちの１つ以上を実装することが可能な例示的コンピューティングシステムのブロック図である。
【図９】本明細書に記載かつ／または図示された実施形態のうちの１つ以上を実装することが可能な例示的コンピューティングネットワークのブロック図である。
【発明を実施するための形態】
【００１８】
後で詳述するように、本開示は、主に、仮想環境においてネットワークアクセス制御を行うシステムおよび方法に関する。本明細書に記載のシステムおよび方法は、様々な様式でネットワークアクセス制御を行うものである。たとえば、仮想マシンの、アクセス制御ポリシーに対するコンプライアンスを評価するために、ホストマシン上で動作している仮想マシンにセキュリティエージェントを注入またはインストールする。セキュリティエージェントは、プロセス間通信および／またはネットワーク通信を用いて、ホストマシン上および／またはリモートサーバ上のネットワークアクセス制御システムと通信する。ネットワークアクセス制御システムは、セキュリティエージェントから与えられる情報に基づいて、ネットワーク通信フィルタおよび／または他の任意の好適なメカニズムを用いて仮想マシンのネットワークアクセスを制御する。実施形態によっては、ホストマシン上のネットワークアクセス制御システムは、仮想マシン内のセキュリティエージェントを用いる代わりに、仮想マシンのリソースを検査することにより、仮想マシンがアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。
【００１９】
以下では、図１〜３、および図６を参照しながら、仮想環境においてネットワークアクセス制御を行うための例示的システムを詳細に説明する。対応するコンピュータ実装方法についても、図４、図５、および図７を参照しながら詳細に説明する。さらに、本明細書に記載の実施形態のうちの１つ以上を実装することが可能な例示的コンピューティングシステムおよびネットワークアーキテクチャを、それぞれ図８および図９を参照しながら詳細に説明する。
【００２０】
図１は、仮想環境においてネットワークアクセス制御を行うための例示的システム１００のブロック図である。図１に示したように、例示的システム１００は、１つ以上のタスクを実行する１つ以上のモジュール１１０を含んでいる。たとえば、（後で詳細に説明するように）例示的システム１００は、エージェントプロビジョニングモジュール１１２を含んでおり、エージェントプロビジョニングモジュール１１２は、注入、インストール、または他の任意の、仮想マシンに対してセキュリティエージェントのプロビジョニングを行うプロセスを通して、仮想マシンにネットワークアクセス制御セキュリティエージェントを与えるようにプログラムされている。
【００２１】
例示的システム１００はまた、各種のネットワークアクセス制御機能を提供するようにプログラムされたアクセス制御モジュール１１４を含んでいる。すなわち、アクセス制御モジュール１１４は、ネットワークへの仮想マシンアクセスを許可したり拒否したりするゲートまたはドアとして動作する。実施形態によっては、アクセス制御モジュール１１４は、仮想マシンに対しエンドポイントセキュリティポリシーを施行する。たとえば、仮想マシンがネットワークセキュリティポリシーに対するコンプライアンスを達成していない場合、アクセス制御モジュール１１４は、仮想マシンがネットワークおよびネットワークリソースにアクセスすることを阻止する（または、仮想マシンを隔離してアクセスさせないようにする）。実施形態によっては、アクセス制御モジュール１１４は、仮想マシンをホストするマシン上でネットワーク通信フィルタを用いることにより、仮想マシンのネットワークアクセスを制御する。あるいは、アクセス制御モジュール１１４は、仮想マシンのネットワークアクセスを制御するリモートアクセス制御サーバの一部分であってもよい。
【００２２】
アクセス制御モジュール１１４はまた、仮想マシンがネットワークポリシーに対するコンプライアンスを達成していない場合には、仮想マシンのレメディエーションを行う。実施形態によっては、レメディエーションは、仮想マシンのユーザに対して完全に透過的である。他の実施形態では、アクセス制御モジュール１１４は、手動レメディエーションの場合に、レメディエーションの情報をユーザに提示する。
【００２３】
例示的システム１００は、エージェント１１６を含んでおり、エージェント１１６は、エンドポイント（たとえば、仮想マシン）の状態を評価する（ポリシーに対するコンプライアンスを検査する）エンドポイント評価技術を実装する。たとえば、エージェント１１６は、仮想マシンのアンチウィルスソフトウェア、アンチスパイウェアソフトウェア、インストール済みパッチ、および他の様々なセキュリティ設定を検査する。実施形態によっては、エージェント１１６は、事前定義されたテンプレートと対照して仮想マシンの保全性を検査することにより、そのようなテンプレートで指示された、必要とされるパッチレベル、サービスパック、アンチウィルスプログラムおよび／または定義、および／またはファイアウォールステータスを仮想マシンが有しているかどうかを判定する。さらに、または代替として、エージェント１１６は、カスタム作成された検査項目（たとえば、管理者が作成したポリシー）を用いて、仮想マシンがネットワークアクセス制御のコンプライアンスを達成しているかどうかを判定する。
【００２４】
エージェント１１６は、仮想マシンの、ネットワークアクセス制御ポリシーに対するコンプライアンスを分析することが可能な、任意の種類または形式のコンピュータ実行可能コードを含んでいる。たとえば、エージェント１１６は、オペレーティングシステムの実行可能コード（たとえば、ＷＩＮＤＯＷＳ．ｅｘｅ）またはオペレーティングシステム固有のスクリプト（たとえば、ＬＩＮＵＸまたはＷＩＮＤＯＷＳシェルスクリプト）として実装される。
【００２５】
実施形態によっては、図１のモジュール１１０のうちの１つ以上は、コンピューティング装置で実行された場合に１つ以上のタスクをコンピューティング装置に実施させる１つ以上のソフトウェアアプリケーションまたはプログラムであってよい。たとえば、後で詳細に説明するように、モジュール１１０のうちの１つ以上は、１つ以上のコンピューティング装置で動作するように記憶および構成されたソフトウェアモジュールであってよく、たとえば、図２に示されたシステム、図３に示されたシステムのうちの１つ以上、図６に示されたシステム、図８のコンピューティングシステム８１０、および／または図９の例示的ネットワークアーキテクチャ９００の複数部分であってよい。図１のモジュール１１０の１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の専用コンピュータのすべてまたは一部分を表すものであってもよい。
【００２６】
システム１００は、モジュール１１０のうちの１つ以上を実行するプロセッサ１２０を含んでいる。システム１００のプロセッサ１２０は、モジュール１１０のうちの１つ以上における１つ以上の命令を実行するように構成された１つ以上のマイクロプロセッサおよび／または中央処理ユニットを含んでいる。たとえば、プロセッサ１２０は、図８のプロセッサ８１４を含んでよい。
【００２７】
図１に示したように、例示的システム１００はまた、１つ以上のデータベース１３０を含んでいる。データベース１３０は、単一のデータベースまたはコンピューティング装置に含まれるか、複数のデータベースまたはコンピューティング装置に含まれるものであってよい。一実施形態では、例示的システム１００は、１つ以上のネットワークアクセス制御ポリシーを記憶するネットワークアクセス制御ポリシーデータベース１３２を含んでいる。ネットワークアクセス制御ポリシーデータベース１３２は、必要とされるアンチウィルスソフトウェア、アンチスパイウェア、インストール済みパッチ、ネットワークへのアクセスを許可されたユーザ、および／または他の様々な、仮想マシンがネットワークへのアクセスを許可されるために必要なセキュリティ設定を示す、１つ以上のルールを含んでいる。
【００２８】
データベース１３０はまた、レメディエーションデータベース１３４を含んでいる。レメディエーションデータベース１３４は、１つ以上のパッチ、アンチウィルスソフトウェア定義、アンチスパイウェアアプリケーション、および／または他の任意の、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成するために仮想マシンに与えることが必要なソフトウェアを含んでいる。
【００２９】
図１のデータベース１３０は、１つ以上のコンピューティング装置の一部分を表している。たとえば、データベース１３０は、図２のシステム２００の一部分、図３のネットワークアクセス制御サーバ３０６、図６のホストマシン６０２、図８のコンピューティングシステム８１０、および／または図９の例示的ネットワークアーキテクチャ９００の複数部分を表している。あるいは、図１のデータベース１３０は、コンピューティング装置からのアクセスが可能な１つ以上の物理的に独立した装置を表しており、たとえば、図２のシステム２００、図３のネットワークアクセス制御サーバ３０６、図６のホストマシン６０２、図８のコンピューティングシステム８１０、および／または図９の例示的ネットワークアーキテクチャ９００の複数部分を表している。
【００３０】
図１の例示的システム１００は、様々な様式で配備可能である。たとえば、例示的システム１００のすべてまたは一部分は、図３に示した例示的システム３００のように、クラウドコンピューティング環境またはネットワークベース環境に含まれるものであってよい。クラウドコンピューティング環境は、各種のサービスおよびアプリケーションをインターネット経由で提供する。このようなクラウドベースのサービス（たとえば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザまたは他のリモートインタフェースからアクセス可能である。本明細書に記載の各種機能は、リモートデスクトップ環境または他の任意のクラウドベースコンピューティング環境を通して提供可能である。
【００３１】
他の実施形態では、例示的システム１００は、単一ホストマシンに実装可能である。たとえば、図２は、システム１００がホストマシン上の様々な仮想マシンに実装される様子を示している。
【００３２】
図２は、仮想環境においてネットワークアクセス制御を行うための例示的システム２００を示す。システム２００は、ハイパーバイザ２４０上で動作しているネットワークアクセス制御仮想マシン２１０およびユーザ仮想マシン２３０を含んでいる。ネットワークアクセス制御仮想マシン２１０は、ユーザレベル２１２およびカーネルレベル２１８を含んでいる。ユーザレベル２１２は、エージェントプロビジョニングモジュール１１２およびアクセス制御モジュール１１４を含んでいる。図示したように、エージェントプロビジョニングモジュール１１２はエージェント挿入モジュール２１３を含んでおり、エージェント挿入モジュール２１３は、エージェントを仮想マシンに挿入することに含まれるステップのうちの１つ以上を実施するようにプログラムされている。エージェントプロビジョニングモジュール１１２はまた、エージェント起動モジュール２１４を含んでおり、エージェント起動モジュール２１４は、仮想マシン内のエージェントを起動することに含まれるステップのうちの１つ以上を実施するようにプログラムされている。ユーザレベル２１２はまた、レメディエーションデータベース１３４およびネットワークアクセス制御ポリシーデータベース１３２を含んでいる。
【００３３】
ユーザレベル２１２内のモジュールのうちの１つ以上は、ドメイン０（たとえば、システム２００をブートしたときに最初に立ち上がるドメイン）で動作する。実施形態によっては、ユーザレベル２１２内に与えられているモジュールのうちの１つ以上は、ネットワークアクセス制御サーバ（たとえば、セキュリティアプライアンス）を含んでいる。そのようなネットワークアクセス制御サーバは、システム２００上で動作している１つ以上の仮想マシン（たとえば、ユーザ仮想マシン２３０）に対してネットワークアクセス制御を行う。
【００３４】
図２に示したように、ユーザ仮想マシン２３０は、ユーザレベル２３２およびカーネルレベル２３８を含んでいる。カーネルレベル２３８はエージェント１１６を含んでおり、エージェント１１６は、エージェント挿入モジュール２１３によってユーザ仮想マシン２３０に注入される。ネットワークアクセス制御仮想マシン２１０内のアクセス制御モジュール１１４は、エージェント１１６と通信することにより、ユーザ仮想マシン２３０の、ネットワークアクセス制御ポリシーに対するコンプライアンスを評価する。
【００３５】
ユーザ仮想マシン２３０およびネットワークアクセス制御仮想マシン２１０は、ハイパーバイザ２４０上で動作する。ハイパーバイザ２４０は、任意の好適な仮想化ソフトウェアを含んでおり、たとえば、ＶＭＷＡＲＥ、Ｏｒａｃｌｅ  ＶＭ、ＥＳＸ  ｓｅｒｖｅｒ、ＸＥＮ、ＨＹＰＥＲ−Ｖ、ＬＹＮＸＳＥＣＵＲＥ、ＴＲＡＮＧＯ、ＩＢＭ  ＰＯＷＥＲ、ＫＶＭ、および／または他の任意の好適なハイパーバイザを含んでいる。ハイパーバイザ２４０は、ネットワーク通信フィルタ２４２を含んでおり、ネットワーク通信フィルタ２４２は、ユーザ仮想マシン２３０からのネットワークパケットを傍受したり、阻止したり、許可したり、修正したり、かつ／または他の処理を施したりする。たとえば、ネットワーク通信フィルタ２４２は、ネットワークインタフェース（たとえば、仮想ネットワークインタフェースカード２４４）からの通信を監視したり、傍受したりする。ネットワーク通信フィルタ２４２は、ユーザ仮想マシン２３０からのネットワーク通信をフィルタリングすることにより、ユーザ仮想マシン２３０に対してネットワークアクセス制御を行う。ネットワーク通信フィルタ２４２の例として、限定ではなく、ＸＥＮのｄｏｍ０フィルタ、ＶＭＷＡＲＥのｄｖＦｉｌｔｅｒ、および／またはＨＹＰＥＲ−ＶのＮＤＩＳフィルタライブラリが挙げられる。
【００３６】
ハイパーバイザ２４０はまた、仮想スイッチ２４６を含んでおり、仮想スイッチ２４６は、仮想マシン同士（たとえば、ネットワークアクセス制御仮想マシン２１０とユーザ仮想マシン２３０）の通信を可能にするだけの論理スイッチングファブリックを有している。図示したように、システム２００はまた、物理ネットワークインタフェースカード２５０を含んでおり、これは、ネットワークアクセス制御仮想マシン２１０および／またはユーザ仮想マシン２３０が外部機器と通信することを可能にする。
【００３７】
図２に示したのは、８０２．１ｘ通信を必要とせずに実装可能なオンホストネットワークアクセス制御サーバの例であるが、本開示の実施形態によっては、リモートネットワークアクセス制御サーバを有する環境への実装が可能である。たとえば、図３に示したシステム３００では、ネットワークアクセス制御サーバ３０６が、ホストマシン３０２から遠く離れている。ホストマシン３０２は、エージェントプロビジョニングモジュール１１２および仮想マシン３０３を含んでいる。エージェントプロビジョニングモジュール１１２は、エージェント挿入モジュール２１３およびエージェント起動モジュール２１４を含んでおり、仮想マシン３０３は、エージェント１１６を含んでいる。
【００３８】
ホストマシン３０２は、コンピュータ実行可能命令を読み取ることが可能な、任意の種類または形式のコンピューティング装置を大まかに表したものである。ホストマシン３０２の例としては、限定ではなく、ラップトップ、デスクトップ、サーバ、携帯電話、個人用携帯情報端末（ＰＤＡ）、マルチメディアプレーヤ、埋め込みシステム、これらのうちの１つ以上のものの組み合わせ、図８の例示的コンピューティングシステム８１０、または他の任意の好適なコンピューティング装置が挙げられる。
【００３９】
ネットワークアクセス制御サーバ３０６は、アクセス制御モジュール１１４、ネットワークアクセス制御ポリシーデータベース１３２、およびレメディエーションデータベース１３４を含んでいる。ネットワークアクセス制御サーバ３０６は、エンドポイント装置に対するネットワークアクセス制御を実装および施行することが可能な、任意の種類または形式のコンピューティング装置を大まかに表したものである。ネットワークアクセス制御サーバ３０６の例としては、限定ではなく、各種のデータベースサービスを提供すること、および／または特定のソフトウェアアプリケーションを動作させることを行うように構成されたアプリケーションサーバおよびデータベースサーバが挙げられる。
【００４０】
ホストマシン３０２およびネットワークアクセス制御サーバ３０６は、ネットワーク３０４を介して互いに通信可能である。ネットワーク３０４は、通信またはデータ転送を促進することが可能な、任意の媒体またはアーキテクチャを大まかに表したものである。ネットワーク３０４の例としては、限定ではなく、イントラネット、ワイドエリアネットワーク、ローカルエリアネットワーク、パーソナルエリアネットワーク、インターネット、電力線通信、携帯電話ネットワーク（たとえば、ＧＳＭネットワーク）、図９の例示的ネットワークアーキテクチャ９００などが挙げられる。ネットワーク３０４は、無線または有線の接続を用いる通信またはデータ転送を促進する。
【００４１】
図４は、仮想環境においてネットワークアクセス制御を行うための例示的コンピュータ実装方法４００のフロー図である。図４に示した各ステップは、任意の好適なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実施される。実施形態によっては、図４に示した各ステップは、図１のシステム１００の各コンポーネント、図２のシステム２００、および／または図３のシステム３００のうちの１つ以上によって実施される。
【００４２】
図４のステップ４０２において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上で動作している仮想マシンにトランジェントセキュリティエージェントを注入する。たとえば、エージェント挿入モジュール２１３が、ユーザ仮想マシン２３０にエージェント１１６を注入する。エージェント挿入モジュール２１３がユーザ仮想マシン２３０にエージェント１１６を注入する方法は、様々である。たとえば、エージェント挿入モジュール２１３は、制御をユーザ仮想マシン２３０からエージェント挿入モジュール２１３に移すことを促進するように構成された１つ以上のコンピュータ実行可能命令を、ユーザ仮想マシン２３０の例外ハンドラメモリロケーションに挿入する。
【００４３】
エージェント挿入モジュール２１３は、例外ハンドラロケーションにジャンプ命令または分岐命令を挿入する。このジャンプ命令は、エージェント１１６にメモリを割り当てるコード（たとえば、メモリ割り当てモジュール）にジャンプする命令であり、制御をエージェント挿入モジュール２１３に移すことにより、エージェント挿入モジュール２１３がユーザ仮想マシン２３０にエージェント１１６を挿入することを可能にする。このジャンプ命令はまた、他の任意の好適な方法で制御をエージェント挿入モジュール２１３に移すコードにジャンプする命令でもある。制御をユーザ仮想マシン２３０からエージェント挿入モジュール２１３に移すことを促進するように構成された１つ以上のコンピュータ実行可能命令はまた、ジャンプ命令に加えて、またはジャンプ命令の代わりに他の命令を含む場合もある。
【００４４】
エージェント挿入モジュール２１３はまた、仮想マシン２３０の実行中に例外をトリガすることにより、例外ハンドラメモリロケーションにある１つ以上のコンピュータ実行可能命令を実行させる。エージェント挿入モジュール２１３が例外をトリガする方法は、様々である。たとえば、後述するように、エージェント挿入モジュール２１３は、例外をトリガする命令をユーザ仮想マシン２３０に挿入することによって例外をトリガする。本開示の実施形態は、メモリ割り当てモジュール（または他の任意の、エージェントの挿入を可能にするように構成されたコード）が挿入されたロケーションに実行を移すことを引き起こす任意の例外を用いて実装可能である。たとえば、エージェント挿入モジュール２１３は、無効オペコードを有する命令をユーザ仮想マシン２３０に挿入することにより、「無効オペコード」例外を引き起こすことが可能である。無効オペコードを有する命令が実行されると、無効オペコードハンドラが存在すると予想されるメモリロケーション（すなわち、制御をユーザ仮想マシン２３０からエージェント挿入モジュール２１３に移すことを促進するように構成された１つ以上のコンピュータ実行可能命令をエージェント挿入モジュール２１３が挿入したロケーション（たとえば、例外ハンドラロケーション））に制御が移る。
【００４５】
エージェント挿入モジュール２１３は、前述のコンピュータ実行可能命令がユーザ仮想マシン２３０で実行された後に、仮想マシン２３０から制御を取得する。言い換えると、エージェント挿入モジュール２１３が制御を取得するのは、ユーザ仮想マシン２３０ではなくエージェント挿入モジュール２１３が下層物理システム上で実行された場合である。実施形態によっては、エージェント挿入モジュール２１３は、例外ハンドラロケーションにあるコンピュータ実行可能命令の実行の直接の結果として制御を取得する。他の実施形態では、例外ハンドラロケーションにある命令が実行されてからエージェント挿入モジュール２１３が制御を取得するまでの間に、１つ以上のステップが実施される。たとえば、例外ハンドラメモリロケーションにある命令は、挿入されたメモリ割り当てモジュールに制御を移し、そのメモリ割り当てモジュールは、エージェントを挿入してよいメモリ領域のメモリ割り当てを促進する。次に、メモリ割り当てモジュールは、エージェント挿入モジュール２１３に制御を移す。
【００４６】
エージェント挿入モジュール２１３は、ユーザ仮想マシン２３０から制御を取得した後に、エージェント１１６をユーザ仮想マシン２３０に挿入する。たとえば、エージェント挿入モジュール２１３は、メモリ割り当てモジュールによって割り当てられた、ユーザ仮想マシン２３０のメモリ領域にエージェント１１６をコピーすることにより、エージェント１１６をユーザ仮想マシン２３０に挿入する。このように、エージェント１１６の配備は、ユーザに対して透過的な様式、および／またはユーザ仮想マシン２３０のインストールプロセスを含まない様式で行われる。そのような実施形態では、エージェント１１６はトランジェントエージェントと呼ばれる。これは、エージェント１１６が、ユーザ仮想マシン２３０の外部のプロセスによって注入されるためであって、従来のインストールメカニズムでユーザ仮想マシン２３０にインストールされるのではないためである。トランジェントエージェントは、仮想マシンに永続的にインストールされるのではないため、永続的にインストールされるエージェントよりも攻撃を受けにくい。
【００４７】
仮想マシンにエージェントを挿入することのさらなる詳細および例が、２００９年６月３日に出願された米国特許出願第１２／４７７，８１０号明細書（件名「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｎｓｅｒｔｉｎｇ  ａｎｄ  Ｉｎｖｏｋｉｎｇ  Ｖｉｒｔｕａｌ  Ａｐｐｌｉａｎｃｅ  Ａｇｅｎｔｓ」）において開示されており、この開示は本参照によって全体が本明細書に組み込まれている。
【００４８】
図４のステップ４０４において、本明細書に記載のシステムのうちの１つ以上が、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を、トランジェントセキュリティエージェントから受け取る。たとえば、エージェント起動モジュール２１４は、エージェント１１６がユーザ仮想マシン２３０に挿入された後に、エージェント１１６を起動して、ユーザ仮想マシン２３０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。エージェント１１６は、ユーザ仮想マシン２３０のコンプライアンスを評価し、ユーザ仮想マシン２３０がアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかをアクセス制御モジュール１１４に通知する。
【００４９】
実施形態によっては、ユーザ仮想マシン２３０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知は、プロセス間通信を介して送られる。たとえば、この通知は、仮想マシン間プロセス（たとえば、任意の通信メカニズムを用いる仮想スイッチ２４６を介してなされる通信）を介して送られる。別の例では、この通知は、共用メモリページ（たとえば、エージェント１１６およびアクセス制御モジュール１１４の両方からアクセス可能なメモリページ）を用いてエージェント１１６からアクセス制御モジュール１１４に伝達される。
【００５０】
あるいは、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知は、図３に示した実施形態にあるような、ホストマシンから遠く離れたネットワークアクセス制御サーバにおいて受信される。
【００５１】
図４のステップ４０６において、本明細書に記載のシステムのうちの１つ以上が、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づいて、仮想マシンのネットワークアクセスを制御する。実施形態によっては、図２に示したように、ネットワーク通信フィルタ２４２が、ユーザ仮想マシン２３０のネットワークアクセスを制御する。さらに、または代替として、図３に示したように、ネットワークアクセス制御サーバ３０６上のアクセス制御モジュール１１４が、ネットワーク３０４内の任意の好適なポイントにおいて、仮想マシン３０３のネットワークアクセスを制御する。
【００５２】
実施形態によっては、トランジェントセキュリティエージェントは、仮想マシンから除去される。たとえば、エージェント１１６は、不要になった時点で、仮想マシン２３０および／または３０３から除去される。実施形態によっては、エージェント１１６が仮想マシンから除去されるのは、仮想マシンにおいてネットワークアクセスが不要になった時点、エージェント１１６が仮想マシンのネットワークアクセス制御コンプライアンスを評価した後、および／または、他の任意の好適な時点である。
【００５３】
実施形態によっては、図４のプロセスにおいて記載したように、セキュリティエージェントが注入によって与えられる。さらに、または代替として、インストール、および／または他の任意の好適な、仮想マシン内にソフトウェアを与えるメカニズムにより、セキュリティエージェントが与えられる。図５に示したプロセスは、注入またはインストールされたセキュリティエージェントによって促進されるプロセスの一例である。図５は、仮想環境においてネットワークアクセス制御を行うための例示的コンピュータ実装方法５００のフロー図である。図５に示した各ステップは、任意の好適なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実施される。実施形態によっては、図５に示した各ステップは、図１のシステム１００および／または図２のシステム２００のコンポーネントのうちの１つ以上によって実施される。
【００５４】
図５のステップ５０２において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上で動作している仮想マシンにセキュリティエージェントを与える。たとえば、エージェント挿入モジュール２１３が、ユーザ仮想マシン２３０にエージェント１１６を挿入する。あるいは、エージェントプロビジョニングモジュール１１２が、ユーザ仮想マシン２３０に対し、ユーザ仮想マシン２３０の１つ以上のインストールプロセスを用いてエージェント１１６をインストールすることを促す。そのような実施形態では、アクセス制御モジュール１１４は、エージェント１１６の各ページを監視して、エージェント１１６が改竄されていないことを確認する。
【００５５】
図５のステップ５０４において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上に常駐するも、仮想マシンの外部に位置するネットワーク通信フィルタを与える。たとえば、アクセス制御モジュール１１４は、システム２００上に常駐するも、ユーザ仮想マシン２３０の外部に位置するネットワーク通信フィルタ２４２を与える。ネットワーク通信フィルタは、仮想マシンのアドレス指定可能なアドレス空間内で動作していない場合には、仮想マシンの外部にあることになる。たとえば、ハイパーバイザまたは他の任意の、ホストマシンのドメインゼロプロセスに与えられているネットワーク通信フィルタは、ホストマシン上に常駐するも、仮想マシンの外部にあることになる。
【００５６】
図５のステップ５０６において、本明細書に記載のシステムのうちの１つ以上が、ネットワーク通信フィルタを制御するアクセス制御モジュールにおいて、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を受け取る。たとえば、アクセス制御モジュール１１４は、ユーザ仮想マシン２３０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを示す情報を、エージェント１１６から受け取る。この情報は、プロセス間通信を介して送られる。本明細書で用いる「プロセス内通信」という語句は、主に、ホストシステム上の２つのプロセスの間の任意の通信、および／または他の任意の、２つのソフトウェアモジュールの間で情報を搬送するメカニズムによってなされる任意の通信を意味する。既述のように、プロセス間通信の実装には、共用メモリ、仮想マシン間通信、および／または他の任意の好適なモジュール間通信メカニズム（たとえば、ネットワークスタック）を用いる。
【００５７】
図５のステップ５０８において、本明細書に記載のシステムのうちの１つ以上が、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づき、ネットワーク通信フィルタを使用して仮想マシンのネットワークアクセスを制御する。たとえば、アクセス制御モジュール１１４は、ユーザ仮想マシン２３０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づき、ネットワーク通信フィルタ２４２を用いてユーザ仮想マシン２３０のネットワークアクセスを制御する。この通知によって、ユーザ仮想マシン２３０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成していないことが示された場合、ネットワーク通信フィルタ２４２は、ユーザ仮想マシン２３０の１つ以上のネットワーク通信を阻止する。
【００５８】
実施形態によっては、アクセス制御モジュール１１４は、仮想マシンがネットワークアクセス制御ポリシーに対するコンプライアンスを達成するように、仮想マシンのレメディエーションを試行する。そのような実施形態では、ネットワーク通信フィルタ２４２は、仮想マシン２３０が、仮想マシンのレメディエーションに使用される１つ以上のネットワークリソースにアクセスすることを可能にする。たとえば、ネットワーク通信フィルタ２４２は、ユーザ仮想マシン２３０が、最新の承認済みのソフトウェアおよびパッチを提供する隔離サーバに接続することを可能にする。
【００５９】
同様に、ネットワーク通信フィルタ２４２はまた、ユーザ仮想マシン２３０がネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する前に、ユーザ仮想マシン２３０が動的ホスト構成プロトコル（「ＤＨＣＰ」）、軽量ディレクトリアクセスプロトコル（「ＬＤＡＰ」）、および／またはアクティブディレクトリ技術を使用することを可能にする。
【００６０】
図２〜５に対応する議論は、仮想マシンエージェントを用いて仮想マシンのネットワークアクセス制御を行う例を与えるものであった。図６および図７に対応する議論は、仮想環境におけるエージェントレスネットワークアクセス制御の例を与えるものである。図６は、例示的ホストマシン６０２を示しており、これは、アクセス制御モジュール１１４と、ネットワーク通信フィルタ２４２と、エージェントプロビジョニングモジュール１１２と、ネットワークアクセス制御ポリシーデータベース１３２と、検査モジュール６０４とを含んでいる。検査モジュール６０４は、仮想マシンのリソースを検査して、仮想マシンがネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定するようにプログラムされている。
【００６１】
ホストマシン６０２は、コンピュータ実行可能命令を読み取ることが可能な、任意の種類または形式のコンピューティング装置を大まかに表したものである。ホストマシン６０２の例としては、限定ではなく、ラップトップ、デスクトップ、サーバ、携帯電話、個人用携帯情報端末（ＰＤＡ）、マルチメディアプレーヤ、埋め込みシステム、これらのうちの１つ以上のものの組み合わせ、図８の例示的コンピューティングシステム８１０、または他の任意の好適なコンピューティング装置が挙げられる。ホストマシン６０２は、１つ以上の仮想マシン（たとえば、仮想マシン６１０）を動作させるようにプログラムされている。仮想マシン６１０のリソースとしては、仮想マシンディスク空間６１２、仮想マシンメモリ空間６１４などが挙げられる。
【００６２】
図７は、仮想環境においてネットワークアクセス制御を行うための例示的コンピュータ実装方法７００のフロー図である。図７に示した各ステップは、任意の好適なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実施される。実施形態によっては、図７に示した各ステップは、図１のシステム１００および／または図６のシステム６００のコンポーネントのうちの１つ以上によって実施される。図７のステップ７０２において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上で動作している仮想マシンを識別する。たとえば、アクセス制御モジュール１１４は、ホストマシン６０２上で動作している仮想マシン６１０を識別する。アクセス制御モジュール１１４は、様々な状況において仮想マシン６１０を識別する。たとえば、アクセス制御モジュール１１４が仮想マシン６１０を識別するのは、仮想マシン６１０の起動時、仮想マシン６１０がネットワーク経由の通信を試行したとき、および／または他の任意の好適な時点である。
【００６３】
図７のステップ７０４において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上に常駐するも、仮想マシンの外部に位置するネットワーク通信フィルタを与える。たとえば、ホストマシン６０２は、仮想マシン６１０からの通信を制御するように構成されたネットワーク通信フィルタ２４２を含んでいる。
【００６４】
図７のステップ７０６において、本明細書に記載のシステムのうちの１つ以上が、ホストマシン上でありながら仮想マシンの外部において実行されるプロセスを用いて、仮想マシン上の１つ以上のリソースを検査して、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。たとえば、検査モジュール６０４が、仮想マシン６１０を検査して、仮想マシン６１０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。検査モジュール６０４は、仮想マシン６１０の完全に外側で動作する一方、一時的に仮想マシン６１０内で動作することもある。
【００６５】
検査モジュール６０４は、仮想マシン６１０のすべてのリソースを検査して、仮想マシン６１０が１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。たとえば、検査モジュール６０４は、仮想マシン６１０の仮想マシンディスク空間６１２（たとえば、ディスクブロック）および／または仮想マシンメモリ空間６１４（たとえば、メモリページ）を検査して、仮想マシン６１０がネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかを判定する。そのような実施形態では、検査モジュール６０４は、仮想マシン６１０のリソースの検査結果に基づいて、仮想マシン６１０のオペレーティングシステムおよび／またはファイルシステムのデータ構造を再構成する。検査モジュール６０４は、再構成された、オペレーティングシステムおよび／またはファイルシステムのデータ構造を評価して、仮想マシン６１０がネットワークアクセス制御に対するコンプライアンスを達成しているかどうかを判定する。
【００６６】
一例として、検査モジュール６０４は、仮想マシン６１０の仮想マシンディスク空間６１２を検査して、仮想マシン６１０に適切なアンチウィルスソフトウェアおよび／または他のセキュリティソフトウェアがインストールされているかどうかを判定する。別の例として、検査モジュールは、仮想マシン６１０内の仮想マシンディスク空間６１２を検査して、仮想マシン６１０に、マルウェアによる損傷の形跡がないかどうかを判定する。
【００６７】
図７のステップ７０８において、本明細書に記載のシステムのうちの１つ以上が、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を受け取る。たとえば、アクセス制御モジュール１１４は、仮想マシン６１０が、ネットワークアクセス制御ポリシーデータベース１３２で定義されているネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知を、検査モジュール６０４から受け取る。
【００６８】
図７のステップ７１０において、本明細書に記載のシステムのうちの１つ以上が、仮想マシンが１つ以上のネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかの通知に基づき、ネットワーク通信フィルタを使用して仮想マシンのネットワークアクセスを制御する。たとえば、アクセス制御モジュール１１４は、仮想マシン６１０がネットワークアクセス制御ポリシーに対するコンプライアンスを達成しているかどうかに基づいて、ネットワーク通信フィルタ２４２を用いて仮想マシン６１０からの通信を阻止したり、かつ／または許可したりする。
【００６９】
図８は、本明細書に記載かつ／または図示された実施形態のうちの１つ以上を実装することが可能な例示的コンピューティングシステム８１０のブロック図である。コンピューティングシステム８１０は、コンピュータ可読命令を実行することが可能な、任意のシングル（またはマルチ）プロセッサコンピューティング装置（またはシステム）を大まかに表したものである。コンピューティングシステム８１０の例としては、限定ではなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、ハンドヘルド装置、または他の任意のコンピューティングシステム（または装置）が挙げられる。コンピューティングシステム８１０は、その最も基本的な構成において、少なくとも１つのプロセッサ８１４と、システムメモリ８１６とを含んでいる。
【００７０】
プロセッサ８１４は、データの処理や、命令の解釈および実行を行うことが可能な、任意の種類または形式の処理ユニットを大まかに表したものである。実施形態によっては、プロセッサ８１４は、ソフトウェアアプリケーションまたはソフトウェアモジュールから命令を受け取る。これらの命令は、本明細書に記載かつ／または図示された例示的実施形態のうちの１つ以上の実施形態の機能をプロセッサ８１４に実施させる。たとえば、プロセッサ８１４は、単独で、または他の要素との組み合わせで、本明細書に記載の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）。プロセッサ８１４はまた、本明細書に記載かつ／または図示された他の任意のステップ、方法、またはプロセスを実施する（かつ／または、実施する手段となる）。
【００７１】
システムメモリ８１６は、データおよび／または他のコンピュータ可読命令を記憶することが可能な、任意の種類または形式の揮発性（または不揮発性）記憶装置（または記憶媒体）を大まかに表したものである。システムメモリ８１６の例としては、限定ではなく、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、または他の任意の好適なメモリ装置が挙げられる。必須ではないが、実施形態によっては、コンピューティングシステム８１０は、揮発性メモリユニット（たとえば、システムメモリ８１６など）、および不揮発性記憶装置（たとえば、後で詳述する主記憶装置８３２など）の両方を含む。一例では、図１のモジュール１１０のうちの１つ以上が、システムメモリ８１６にロードされる。
【００７２】
実施形態によっては、例示的コンピューティングシステム８１０はまた、プロセッサ８１４およびシステムメモリ８１６に加えて、１つ以上のコンポーネントまたは要素を含んでいる。たとえば、図８に示したように、コンピューティングシステム８１０は、メモリコントローラ８１８と、入出力（Ｉ／Ｏ）コントローラ８２０と、通信インタフェース８２２とを含んでおり、これらは、通信インフラストラクチャ８１２を介して相互接続されている。通信インフラストラクチャ８１２は、コンピューティング装置の１つ以上のコンポーネント同士の通信を促進することが可能な、任意の種類または形式のインフラストラクチャを大まかに表したものである。通信インフラストラクチャ８１２の例としては、限定ではなく、通信バス（たとえば、ＩＳＡ、ＰＣＩ、ＰＣＩｅなどのようなバス）およびネットワークが挙げられる。
【００７３】
メモリコントローラ８１８は、メモリまたはデータのハンドリング、またはコンピューティングシステム８１０の１つ以上のコンポーネント同士の通信の制御を行うことが可能な、任意の種類または形式の装置を大まかに表したものである。たとえば、実施形態によっては、メモリコントローラ８１８は、プロセッサ８１４、システムメモリ８１６、およびＩ／Ｏコントローラ８２０の間の、通信インフラストラクチャ８１２を介した通信を制御する。実施形態によっては、メモリコントローラ８１８は、単独で、または他の要素との組み合わせで、本明細書に記載かつ／または図示したステップまたは機能（たとえば、注入すること、受け取ること、制御すること、挿入すること、トリガすること、取得すること、除去すること、与えること、使用すること、レメディエーションを行うこと、識別すること、および／または検査すること）のうちの１つ以上を実施する（かつ／または、実施する手段となる）。
【００７４】
Ｉ／Ｏコントローラ８２０は、コンピューティング装置の入出力機能を調整および／または制御することが可能な、任意の種類または形式のモジュールを大まかに表したものである。たとえば、実施形態によっては、Ｉ／Ｏコントローラ８２０は、コンピューティングシステム８１０の１つ以上の要素（たとえば、プロセッサ８１４、システムメモリ８１６、通信インタフェース８２２、ディスプレイアダプタ８２６、入力インタフェース８３０、および記憶装置インタフェース８３４）の間のデータ転送を制御または促進する。たとえば、Ｉ／Ｏコントローラ８２０は、単独で、または他の要素との組み合わせで、本明細書に記載の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）ことに用いる。Ｉ／Ｏコントローラ８２０はまた、本開示において示される他のステップおよび機能を実施する（かつ／または、実施する手段となる）ことにも用いる。
【００７５】
通信インタフェース８２２は、例示的コンピューティングシステム８１０と１つ以上のその他の装置との間の通信を促進することが可能な、任意の種類または形式の通信装置または通信アダプタを大まかに表したものである。たとえば、実施形態によっては、通信インタフェース８２２は、コンピューティングシステム８１０と、別のコンピューティングシステムを含むプライベートネットワークまたはパブリックネットワークとの間の通信を促進する。通信インタフェース８２２の例としては、限定ではなく、有線ネットワークインタフェース（たとえば、ネットワークインタフェースカード）、無線ネットワークインタフェース（たとえば、無線ネットワークインタフェースカード）、モデム、および他の任意の好適なインタフェースが挙げられる。少なくとも１つの実施形態では、通信インタフェース８２２は、ネットワーク（たとえば、インターネット）との直接リンクを介する、リモートサーバとの直接接続を提供する。通信インタフェース８２２はまた、たとえば、ローカルエリアネットワーク（たとえば、イーサネットネットワーク）、パーソナルエリアネットワーク、電話網またはケーブル網、携帯電話接続、衛星データ接続、または他の任意の好適な接続を介した接続を間接的に提供する。
【００７６】
実施形態によっては、通信インタフェース８２２はまた、コンピューティングシステム８１０と、１つ以上のその他のネットワークまたは記憶装置との間の、外部バスまたは通信チャネルを介した通信を促進するように構成されたホストアダプタを表す。ホストアダプタの例としては、限定ではなく、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡ（およびｅＳＡＴＡ）ホストアダプタ、ＡＴＡ（およびＰＡＴＡ）ホストアダプタ、ファイバチャネルインタフェースアダプタ、イーサネットアダプタなどが挙げられる。通信インタフェース８２２はまた、コンピューティングシステム８１０が分散コンピューティングまたはリモートコンピューティングに関与することを可能にする。たとえば、通信インタフェース８２２は、リモート装置から命令を受信したり、リモート装置に命令を送信して実行させたりする。実施形態によっては、通信インタフェース８２２は、単独で、または他の要素との組み合わせで、本明細書に記載の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）。通信インタフェース８２２はまた、本開示において示される他のステップおよび機能を実施する（かつ／または、実施する手段となる）ことにも用いる。
【００７７】
図８に示したように、コンピューティングシステム８１０はまた、ディスプレイアダプタ８２６を介して通信インフラストラクチャ８１２と結合された、少なくとも１つのディスプレイ装置８２４を含んでいる。ディスプレイ装置８２４は、ディスプレイアダプタ８２６から転送された情報を視覚表示することが可能な、任意の種類および形式の装置を大まかに表したものである。同様に、ディスプレイアダプタ８２６は、通信インフラストラクチャ８１２（または当業者には周知のフレームバッファ）からのグラフィックス、テキスト、および他のデータを、ディスプレイ装置８２４での表示のために転送するように構成された、任意の種類または形式の装置を大まかに表したものである。
【００７８】
図８に示したように、例示的コンピューティングシステム８１０はまた、入力インタフェース８３０を介して通信インフラストラクチャ８１２と結合された、少なくとも１つの入力装置８２８を含んでいる。入力装置８２８は、コンピュータまたは人間が生成した入力を例示的コンピューティングシステム８１０に与えることが可能な、任意の種類または形式の入力装置を大まかに表したものである。入力装置８２８の例としては、限定ではなく、キーボード、ポインティング装置、音声認識装置、または他の任意の入力装置が挙げられる。少なくとも１つの実施形態では、入力装置８２８は、単独で、または他の要素との組み合わせで、本明細書に記載の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）。入力装置８２８はまた、本開示において示される他のステップおよび機能を実施する（かつ／または、実施する手段となる）ことにも用いる。
【００７９】
図８に示したように、例示的コンピューティングシステム８１０はまた、主記憶装置８３２およびバックアップ記憶装置８３３を含んでおり、これらは、記憶装置インタフェース８３４を介して通信インフラストラクチャ８１２と結合されている。記憶装置８３２および８３３は、データおよび／または他のコンピュータ可読命令を記憶することが可能な、任意の種類または形式の記憶装置または記憶媒体を大まかに表したものである。たとえば、記憶装置８３２および８３３は、磁気ディスクドライブ（たとえば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってよい。記憶装置インタフェース８３４は、記憶装置８３２および８３３と、コンピューティングシステム８１０の他のコンポーネントとの間でデータ転送を行う、任意の種類または形式のインタフェースまたは装置を大まかに表したものである。一例では、図１のデータベース１３０は、主記憶装置８３２に記憶される。
【００８０】
実施形態によっては、記憶装置８３２および８３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットにおいて読み出しおよび／または書き込みを行うように構成されている。好適なリムーバブル記憶ユニットの例としては、限定ではなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置などが挙げられる。また、記憶装置８３２および８３３は、コンピュータシステム８１０にコンピュータソフトウェア、データ、または他のコンピュータ可読命令をロードすることを可能にする、他の同様の構造または装置を含んでいる。たとえば、記憶装置８３２および８３３は、ソフトウェア、データ、または他のコンピュータ可読情報の読み書きを行うように構成されている。記憶装置８３２および８３３はまた、コンピューティングシステム８１０の一部分であってよく、あるいは、他のインタフェースシステムを介してアクセスされる独立した装置であってもよい。
【００８１】
実施形態によっては、記憶装置８３２および８３３は、たとえば、単独で、または他の要素との組み合わせで、本明細書に開示の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）ことに用いる。記憶装置８３２および８３３はまた、本開示において示される他のステップおよび機能を実施する（かつ／または、実施する手段となる）ことにも用いる。
【００８２】
コンピューティングシステム８１０には、他の様々な装置やサブシステムを接続してよい。逆に、本明細書に記載かつ／または図示された実施形態を実践するのに、図８に示したコンポーネントおよび装置がすべて必要というわけではない。上述の装置およびサブシステムは、図８に示したものとは異なる様式で相互接続してもよい。コンピューティングシステム８１０はまた、任意の数のソフトウェア構成、ファームウェア構成、および／またはハードウェア構成を採用してよい。たとえば、本明細書に開示の例示的実施形態のうちの１つ以上を、コンピュータ可読媒体上でコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも称される）としてコード化してよい。「コンピュータ可読媒体」という語句は、コンピュータ可読命令を記憶または搬送することが可能な、任意の形式の装置、キャリア、または媒体を大まかに意味している。コンピュータ可読媒体の例としては、限定ではなく、伝送型媒体および物理媒体が挙げられ、伝送型媒体は、たとえば、搬送波であり、物理媒体としては、たとえば、磁気記憶媒体（たとえば、ハードディスクドライブやフロッピーディスク）、光記憶媒体（たとえば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ）、電子記憶媒体（たとえば、固体ドライブやフラッシュ媒体）、または他の分配システムが挙げられる。
【００８３】
コンピュータプログラムを収容するコンピュータ可読媒体は、コンピュータシステム８１０にロードされる。その、コンピュータ可読媒体に記憶されているコンピュータプログラムのすべてまたは一部分が、システムメモリ８１６、および／または記憶装置８３２および８３３の様々な部分に記憶される。コンピューティングシステム８１０にロードされたコンピュータプログラムは、プロセッサ８１４によって実行されると、本明細書に記載および／または図示された例示的実施形態のうちの１つ以上の実施形態の機能をプロセッサ８１４に実施させるか、かつ／または、プロセッサ８１４を、それらの機能を実施する手段にする。さらに、または代替として、本明細書に記載または図示された例示的実施形態のうちの１つ以上を、ファームウェアおよび／またはハードウェアの形で実装する。たとえば、コンピューティングシステム８１０は、本明細書に開示の例示的実施形態のうちの１つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成可能である。
【００８４】
図９は、例示的ネットワークアーキテクチャ９００のブロック図である。ここでは、クライアントシステム９１０、９２０、および９３０と、サーバ９４０および９４５とがネットワーク９５０と結合されている。クライアントシステム９１０、９２０、および９３０は、任意の種類または形式のコンピューティング装置またはコンピューティングシステム（たとえば、図８の例示的コンピューティングシステム８１０）を大まかに表したものである。一例では、クライアントシステム９１０は、図１のシステム１００を含んでいる。
【００８５】
同様に、サーバ９４０および９４５は、様々なデータベースサービスを提供したり、かつ／または、特定のソフトウェアアプリケーションを動作させたりするように構成されたコンピューティング装置またはコンピューティングシステム（たとえば、アプリケーションサーバやデータベースサーバ）を大まかに表したものである。ネットワーク９５０は、任意の電気通信ネットワークまたはコンピュータネットワークを大まかに表したものであり、例としては、イントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、またはインターネットが挙げられる。
【００８６】
図９に示したように、１つ以上の記憶装置９６０（１）−（Ｎ）が、サーバ９４０に直接接続されている。同様に、１つ以上の記憶装置９７０（１）−（Ｎ）が、サーバ９４５に直接接続されている。記憶装置９６０（１）−（Ｎ）および記憶装置９７０（１）−（Ｎ）は、データおよび／または他のコンピュータ可読命令を記憶することが可能な、任意の種類または形式の記憶装置または記憶媒体を大まかに表したものである。実施形態によっては、記憶装置９６０（１）−（Ｎ）および記憶装置９７０（１）−（Ｎ）は、様々なプロトコル（たとえば、ＮＦＳ、ＳＭＢ、またはＣＩＦＳ）を用いてサーバ９４０および９４５と通信するように構成されたネットワーク接続記憶（ＮＡＳ）装置を表している。
【００８７】
［０００１］サーバ９４０および９４５はまた、記憶エリアネットワーク（ＳＡＮ）ファブリック９８０に接続されている。ＳＡＮファブリック９８０は、複数の記憶装置同士の通信を促進することが可能な、任意の種類または形式のコンピュータネットワークまたはコンピュータアーキテクチャを大まかに表したものである。ＳＡＮファブリック９８０は、サーバ９４０および９４５と、複数の記憶装置９９０（１）−（Ｎ）および／またはインテリジェント記憶装置アレイ９９５との間の通信を促進する。ＳＡＮファブリック９８０はまた、ネットワーク９５０とサーバ９４０および９４５とを介して、クライアントシステム９１０、９２０、および９３０と、記憶装置９９０（１）−（Ｎ）および／またはインテリジェント記憶装置アレイ９９５との間の通信を促進する。これは、記憶装置９９０（１）−（Ｎ）およびアレイ９９５が、クライアント９１０、９２０、および９３０から、ローカル接続された装置として見えるように行われる。記憶装置９６０（１）−（Ｎ）および記憶装置９７０（１）−（Ｎ）の場合と同様に、記憶装置９９０（１）−（Ｎ）およびインテリジェント記憶装置アレイ９９５は、データおよび／または他のコンピュータ可読命令を記憶することが可能な、任意の種類または形式の記憶装置または記憶媒体を大まかに表したものである。
【００８８】
実施形態によっては、また、図８の例示的コンピューティングシステム８１０を参照すると、通信インタフェース（たとえば、図８の通信インタフェース８２２）は、各クライアントシステム９１０、９２０、および９３０とネットワーク９５０との間の接続性を与えることに使用される。クライアントシステム９１０、９２０、および９３０は、サーバ９４０または９４５にある情報に、たとえば、ウェブブラウザまたは他のクライアントソフトウェアを用いてアクセスすることが可能である。そのようなソフトウェアは、クライアントシステム９１０、９２０、および９３０が、サーバ９４０、サーバ９４５、記憶装置９６０（１）−（Ｎ）、記憶装置９７０（１）−（Ｎ）、記憶装置９９０（１）−（Ｎ）、またはインテリジェント記憶装置アレイ９９５によってホストされているデータにアクセスすることを可能にする。図９ではデータ交換にネットワーク（たとえば、インターネット）を使用することを示しているが、本明細書に記載および／または図示された実施形態は、インターネットまたは何らかの特定のネットワークベースの環境に限定されない。
【００８９】
少なくとも１つの実施形態では、本明細書に開示の例示的実施形態のうちの１つ以上の実施形態のすべてまたは一部分を、コンピュータプログラムとしてコード化し、サーバ９４０、サーバ９４５、記憶装置９６０（１）−（Ｎ）、記憶装置９７０（１）−（Ｎ）、記憶装置９９０（１）−（Ｎ）、インテリジェント記憶装置アレイ９９５、またはこれらの任意の組み合わせにロードし、これらに実行させる。また、本明細書に開示の例示的実施形態のうちの１つ以上の実施形態のすべてまたは一部分を、やはりコンピュータプログラムとしてコード化し、サーバ９４０に記憶させ、サーバ９４５で動作させ、ネットワーク９５０を介してクライアントシステム９１０、９２０、および９３０に分配してもよい。したがって、ネットワークアーキテクチャ９００は、単独で、または他の要素との組み合わせで、本明細書に開示の、注入するステップ、受け取るステップ、制御するステップ、挿入するステップ、トリガするステップ、取得するステップ、除去するステップ、与えるステップ、使用するステップ、レメディエーションを行うステップ、識別するステップ、および／または検査するステップのうちの１つ以上を実施する（かつ／または、実施する手段となる）。ネットワークアーキテクチャ９００はまた、本開示において示される他のステップおよび機能を実施する（かつ／または、実施する手段となる）ことにも用いる。
【００９０】
上述のように、コンピューティングシステム８１０、および／またはネットワークアーキテクチャ９００の１つ以上のコンポーネントは、単独で、または他の要素との組み合わせで、仮想環境においてネットワークアクセス制御を行うための例示的方法の１つ以上のステップを実施する（かつ／または、実施する手段となる）。
【００９１】
前述の開示は、具体的なブロック図、フローチャート、および実施例を用いて各種実施形態を説明しているが、本明細書に記載かつ／または図示された、ブロック図の各コンポーネント、フローチャートの各ステップ、各動作、および／または各コンポーネントは、広範なハードウェア構成、ソフトウェア構成、またはファームウェア構成（またはこれらの組み合わせの構成）を用いて、個別に、かつ／またはひとまとめにして実装してよい。さらに、他のコンポーネントに含まれるコンポーネントのいかなる開示も、本質的に例示的であると見なされたい。これは、他の様々なアーキテクチャの実装によっても同じ機能性が達成可能であるためである。
【００９２】
本明細書に記載かつ／または図示されたプロセスパラメータおよびステップのシーケンスは、実施例としてのみ与えられており、必要に応じて変更可能である。たとえば、本明細書に図示かつ／または記載された各ステップは、特定の順序で図示または説明されているが、これらのステップを実施する順序は、必ずしも、図示または説明されたとおりでなくてもよい。本明細書に記載および／または図示された各種の例示的方法は、本明細書に記載または図示されたステップのうちの１つ以上を省略してもよく、開示されたステップに加えて新たなステップを含んでもよい。
【００９３】
本明細書では、完全に機能するコンピューティングシステムの文脈で各種実施形態を記載および／または図示してきたが、これらの例示的実施形態のうちの１つ以上は、様々な形式のプログラム製品として配布してよく、この配布を実際に行う際に用いるコンピュータ可読媒体の具体的な種類は問わない。本明細書に開示の実施形態はまた、特定タスクを実施するソフトウェアを用いて実装してよい。このようなソフトウェアモジュールは、スクリプト、バッチ、または他の、コンピュータ可読記憶媒体またはコンピューティングシステムに記憶可能な実行可能ファイルを含んでよい。実施形態によっては、このようなソフトウェアモジュールは、コンピューティングシステムを、本明細書に開示の例示的実施形態のうちの１つ以上を実施するように構成してよい。
【００９４】
さらに、本明細書に記載のモジュールのうちの１つ以上が、データ、物理装置、および／または物理装置の表現を、ある形式から別の形式に変換してよい。たとえば、本明細書に開示のモジュールのうちの１つ以上が、ホスト装置をネットワークアクセス制御サーバに変換することを、そのホスト装置上の仮想マシンの通信をネットワーク通信フィルタでフィルタリングすることにより行ってよい。
【００９５】
前述の説明は、当業者が本明細書に開示の例示的実施形態の各種態様を最大限利用できることを目的としたものである。この例示的説明は、網羅的であることを意図したものではなく、また、開示されたどの厳密な形式にも限定されるものではない。本開示の趣旨および範囲から逸脱することなく、様々な修正および変更が可能である。本明細書に開示の実施形態は、あらゆる点で説明的であって、制限的ではないと見なされたい。本開示の範囲を確定するには、添付の特許請求の範囲ならびにこれらの均等物を参照されたい。
【００９６】
特に断らない限り、本明細書および特許請求の範囲で用いる用語「ａ」または「ａｎ」は、「〜のうちの少なくとも１つ」を意味するものと解釈されたい。さらに、使いやすさのために、本明細書および特許請求の範囲で用いる「ｉｎｃｌｕｄｉｎｇ（含む）」および「ｈａｖｉｎｇ（有する）」という単語は、区別なく使用されており、「ｃｏｍｐｒｉｓｉｎｇ（備える）」という単語と同じ意味を有する。
【図１】
0005978365.tif 000002
【図２】
0005978365.tif 000003
【図３】
0005978365.tif 000004
【図４】
0005978365.tif 000005
【図５】
0005978365.tif 000006
【図６】
0005978365.tif 000007
【図７】
0005978365.tif 000008
【図８】
0005978365.tif 000009
【図９】
0005978365.tif 000010