(58)【調査した分野】(Int.Cl.,DB名)
前記変化は、前記仮想マシンを、第2の仮想サーバから前記仮想サーバに移動させることを含み、当該コンピュータプログラムは、前記少なくとも1つのプロセッサによって実行されると、該少なくとも1つのプロセッサに更に、
前記第2の仮想サーバから第2の仮想セキュリティ装置を削除し、
仮想ネットワークインタフェースカードを介して通信するよう前記第2の仮想サーバ内の仮想スイッチのロジックを再構成する、
動作を実行させ、
前記第2の仮想セキュリティ装置は、前記仮想マシンが前記第2の仮想サーバ内で実行していたときに前記仮想マシンからインターセプトされたネットワークパケットを処理するように構成されている、
請求項1乃至4のいずれかに記載のコンピュータプログラム。
前記1つ又は複数のセキュリティポリシーは、前記1つ又は複数の仮想セキュリティ装置について、前記仮想マシンからの前記ネットワークパケットを処理する順序を識別する、
請求項6に記載のコンピュータプログラム。
前記仮想マシンについて検出される前記変化は、前記仮想マシンを前記仮想サーバに追加すること又は前記仮想マシンを別の仮想サーバから前記仮想サーバに移動させることの一方を含む、
請求項1乃至4、6及び7のいずれかに記載のコンピュータプログラム。
前記変化は、前記仮想マシンが前記仮想サーバに追加されるとき又は前記仮想マシンが異なるサーバに移動されるときに、アプリケーションプログラミングインタフェース(API)を通して検出される、
請求項1乃至8のいずれかに記載のコンピュータプログラム。
前記仮想マシンからのパケットフローの最初の出力ネットワークパケットは、前記仮想マシンが前記仮想サーバ内で開始することを許可された後、前記仮想サーバ内のOpenFlowスイッチによってインターセプトされ、当該コンピュータプログラムは、前記少なくとも1つのプロセッサによって実行されると、該少なくとも1つのプロセッサに更に、
前記出力ネットワークパケットのためのフロールートを、セキュリティポリシーに基づいて生成する、
動作を実行させ、前記OpenFlowスイッチは、前記出力ネットワークパケットを前記フロールートに従ってルーティングする、
請求項1乃至9のいずれかに記載のコンピュータプログラム。
前記変化は、前記ゲスト仮想マシンを、第2の仮想サーバから前記仮想サーバに移動させることを含み、前記第2の仮想サーバから第2の仮想セキュリティ装置が削除される、
請求項11乃至14のいずれかに記載の装置。
1つ又は複数のセキュリティポリシーは、前記ゲスト仮想マシンからの前記ネットワークパケットを処理するよう1つ又は複数の仮想セキュリティ装置を識別し、前記1つ又は複数のセキュリティポリシーは、前記1つ又は複数の仮想セキュリティ装置について、前記ゲスト仮想マシンからの前記ネットワークパケットを処理する順序を識別する、
請求項11乃至15のいずれかに記載の装置。
前記仮想サーバ内に、前記仮想マシンからの前記ネットワークパケットをインターセプトするインターセプト機構を作成するステップを更に含み、前記インターセプト機構は、単一ルート入出力仮想化(SR−IOV)仕様に基づいて前記仮想サーバのハードウェアで前記ネットワークパケットをインターセプトすることを含む、
請求項17に記載の方法。
1つ又は複数のセキュリティポリシーは、前記仮想マシンからの前記ネットワークパケットを処理するよう1つ又は複数の仮想セキュリティ装置を識別し、前記1つ又は複数のセキュリティポリシーは、前記1つ又は複数の仮想セキュリティ装置について、前記仮想マシンからの前記ネットワークパケットを処理する順序を識別する、
請求項17又は18に記載の方法。
前記仮想マシンからのパケットフローの最初の出力ネットワークパケットは、前記仮想マシンが前記仮想サーバ内で開始することを許可された後、前記仮想サーバ内のOpenFlowスイッチによってインターセプトされ、当該方法は、
前記出力ネットワークパケットのためのフロールートを、セキュリティポリシーに基づいて生成するステップ、
を更に含み、前記OpenFlowスイッチは、前記出力ネットワークパケットを前記フロールートに従ってルーティングする、
請求項17乃至19のいずれかに記載の方法。
【発明を実施するための形態】
【0008】
<概要>
例示の実施形態における方法は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想マシンについての変化を検出するステップと、仮想セキュリティ装置が仮想サーバ内で構成されるかどうかを判断するステップと、仮想セキュリティ装置を仮想サーバ内で作成するよう要求を送信するステップとを含む。当該方法は更に、仮想セキュリティ装置が仮想マシン内で作成されるときに、仮想マシンが開始するのを許可するステップを含む。仮想セキュリティ装置は、仮想マシンから送信されるネットワークパケットに対してセキュリティ検査を実行する。より具体的な実施形態では、当該方法は更に、仮想マシンからのネットワークパケットをインターセプトするインターセプト機構を仮想サーバ内に作成するステップを含む。更なる実施形態では、1つ又は複数のセキュリティポリシーが、1つ又は複数の仮想セキュリティ装置を識別し、仮想マシンからのネットワークパケットを処理する。
【0009】
別の実施形態における方法は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想セキュリティ装置をポーリングして、該仮想セキュリティ装置の利用率を決定するステップと、利用率が上限閾値量を超える場合、クラウドマネージャに、仮想セキュリティ装置のための計算リソースを増加させるよう要求を送信するステップと、利用率が下限閾値量未満の場合、クラウドマネージャに、仮想セキュリティ装置のための計算リソースを低減させるよう要求を送信するステップとを含む。当該方法において、仮想サーバ内の1つ又は複数の仮想マシンに関連付けられるネットワークパケットは、仮想セキュリティ装置にルーティングされる。より具体的な実施形態では、ネットワークパケットは、仮想セキュリティ装置にルーティングされる前にインターセプトされる。
【0010】
<例示の実施形態>
図1は、本開示の一実施形態に従って、仮想クラウドインフラストラクチャにおいて仮想セキュリティ装置を提供するための通信システム100の例示的な図である。通信システム100は、ハードウェアレイヤ110、(仮想マシンマネージャ(VMM)120によって一般的に表される)仮想化レイヤ、コアリソース135のセット、仮想化されたデスクトップインフラストラクチャ(VDI)130及びクラウドマネージャ150を備える仮想クラウドインフラストラクチャを表す。ハードウェアレイヤ110は、サーバ112、他のネットワークデバイス116及びストレージ114を含むことができる。コアリソース135は、ネットワークプロトコルを含み、例えば内部ネットワークや無線ネットワーク、インターネット等を含め様々なネットワークへのアクセスを可能にし、管理することができる。1つの例示の実装では、コアリソース135は、動的ホスト構成プロトコル(DHCP)ネットワーキングプロトコルサーバ136、ドメイン名サービス(DNS)137、認証許可アカウンティング(AAA:Authentication, Authorization, and Accounting)ネットワーキングプロトコルサーバ138を含むことができる。仮想セキュリティシステム160は、通信システム100における仮想セキュリティ装置のアーキテクチャを提供及び管理するのを可能にするのに提供される。仮想セキュリティシステムは、ポリシーレイヤ170、セキュリティマネージャ175、分散レイヤ180及びインターセプトレイヤ190を含むことができる。
【0011】
一般に、通信システム100は、任意の適切なタイプ又はトポロジのネットワーク(例えばイントラネット、エクストラネット、LAN、WAN、WLAN、MAN、VLAN、VPN、セルラネットワーク等)あるいは有線及び/又は無線通信を含め、これらの適切な組み合わせで実装されてよい。
図1の要素は、単純なインタフェースを通して、あるいはネットワーク通信の実行可能な経路を提供する任意の他の適切な接続(有線又は無線)を通して相互に組み合わせてよい。加えて、特定の構成のニーズに基づいて、これらの要素のいずれか1つ又は複数を組み合わせてもよく、あるいはアーキテクチャから取り除いてもよい。
【0012】
ネットワークトラフィックは、ネットワーク通信の形式であり、任意の適切な通信メッセージングプロトコルに従って送受信することができるパケット、フレーム、信号、データ等を含む。適切な通信メッセージングプロトコルは、オープンシステム間相互接続(OSI:Open Systems Interconnection)モデル又はその全ての派生形若しくは変化形(例えばTCP/IP)のようなマルチレイヤ型スキームを含むことができる。加えて、メッセージ、要求、応答及びクエリは、ネットワークトラフィックの形式であり、したがって、パケット、フレーム、信号、データ等を備えてよい。TCP/IPのような特定の通信プロトコルにおいて、単一のメッセージ、要求、応答又はクエリは、「パケットストリーム」を定義する複数のパケットに分割されることがある。パケットストリームは、本明細書では「フロー(flow)」とも呼ばれることがあり、この「フロー」は、ボイスオーバーIP(VOIP)又はドメイン名サービスメッセージのような、非バイト型のストリームの交換(non-byte-stream exchange)を含むことがある。さらに、フローをプロパティによって識別することもでき、プロパティには、これらに限られないが、5タプル(すなわち、ソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポート及びIPプロトコル)、装置の物理的ポート、仮想ポート、VXLAN及び/又はVLANが含まれる。本明細書で使用されるとき、「データ」という用語は、任意のタイプのバイナリ、数字、音声、ビデオ、テキスト若しくはスクリプトデータ又は任意のタイプのソース若しくはオブジェクトコード又は電子デバイス及び/若しくはネットワーク内のあるポイントから別のポイントへ通信され得る任意の適切なフォーマットの任意の他の適切な情報を指す。
【0013】
通信システム100の特定の例示的な技術を説明する目的では、仮想クラウドインフラストラクチャをトラバースし得る通信を理解することが重要である。以下の基礎的な情報を、本開示を正しく説明するための基本と考えてよい。
【0014】
専用のローカルハードウェアリソースを有するネットワークが、クラウドベースの仮想インフラストラクチャにより急速に置き換えられてきている。企業や学校及び行政機関のような組織は、情報技術をクラウドベースの仮想インフラストラクチャにオフロードする利点を認識し始めている。
【0015】
あるタイプのクラウド仮想化は、仮想化されてないデータセンタ内の各ネットワークに対して仮想ネットワークを割り当てることを含む。各物理マシンも仮想ネットワーク上で仮想化され得る。一般に、仮想インフラストラクチャは、この実装において物理的なインフラストラクチャを並行させる。この構成において、仮想化の前に使用されていた同じセキュリティを単純に保持することを含め、セキュリティを提供する何らかの能力が存在する。
【0016】
別の仮想化のソリューションは、フラットな構造化されていないネットワークに基づくものであり、このネットワーク内では、サーバ及びその内部ネットワークは全て単一のフラットなネットワーク内で接続され、ルータやファイヤウォールといった、その目的に関連する構造を与えるようなネットワーク要素はない。フラット化されたネットワークは、ネットワークのある部分が、特定のエンティティのニーズに基づいて割り当てられるのを可能にする。例えば情報技術(IT)管理者は、仮想化されたデータセンタの部分を、計算要件、ストレージ要件及びネットワーク要件に基づいて割り当てることができる。IT管理者が所望の数のネットワーク、所望の処理能力及び所望のデータストレージ量を要求するのを可能にするよう管理コンソールが提供されてよく、これは、仮想化されるインフラストラクチャ内のどこでも作成され得る。したがって、仮想マシンは、仮想インフラストラクチャ内のどの場所で作成されてよく、これは、エンティティ(又はユーザ)に対して透過的であり得る。さらに、仮想化マシン、ネットワーク及びデータストレージは、インフラストラクチャ内において、そのインフラストラクチャを管理する際の特定のニーズに基づいて移動されてもよい。そのような変化もエンティティに対して透過的であり得る。エンティティは、その割り当てられた計算リソース、ネットワークリソース及びデータストレージリソースの物理的な位置を実際には知らずに、その計算リソース、ネットワークリソース及びデータストレージリソースへのアクセスを有することができる。
【0017】
構造化されたネットワークにおいて、ネットワーク管理者は、典型的に、ネットワークの利用を予想又は測定し、どこにどの種類のセキュリティ装置を割り当てるべきかを決定する。これは、しばしばセキュリティ装置の比較的静的で高価な展開につながる。というのも、装置は、ネットワークトラフィックのバースト性(burstiness)に合うように過度に割り当てられる(over-allocated)か、時間とともに成長させる必要があるためである。フラット化されたクラウドネットワーク内でリソースを透過的に追加及び移動させる能力は、所望のネットワークリソースを展開する際に顕著な柔軟性を提供することができる。しかしながら、ネットワークのトポロジ内の戦略的ポイントにセキュリティデバイスを配置するという一般的な実施は、ハイパーバイザへの高度な柔軟性を提供するフラットな構造化されていないネットワークの展開と矛盾する。必要なのは、負荷に応じてシステムリソースを使用し、セキュリティのニーズが変化するときに柔軟性及びスケーラビリティを提供する、セキュリティソリューションである。
【0018】
例示の実施形態によると、通信システム100は、仮想クラウドインフラストラクチャにおいてセキュリティを提供することに関連する、上述の問題を解決することができる。より具体的には、通信システム100の仮想セキュリティシステム160は、ネットワークトラフィックのパケットをバックエンドのセキュリティプロセスにルーティングする、フロントエンドのネットワークストリームレベルの分散レイヤを含む。分散レイヤはポリシー機能を実行して、どのバックエンドセキュリティプロセスが特定のデータのために必要とされるかを決定することができる。分散レイヤは次いで、ルーティング動作を実行して、パケットを正しいセキュリティプロセスに正しい順序で送信することができる。バックエンドセキュリティプロセスは、ネットワークトラフィックに対して、計算集約型(compute-intensive)のセキュリティ機能を実行することができる。分散レイヤは、ソース仮想化マシンからインターセプトされ得るパケットを受信することができ、これは、幾つかの異なるインターセプト技術を使用して達成され得る。仮想セキュリティシステム160のインターセプトレイヤは、ネットワークインタフェースカードの技術(例えばSR−IOV)及びハードウェアスイッチ機能を使用する構成から、あるいはOpenFlowスイッチフレームワークへ統合することから、仮想スイッチへのパケット及び仮想スイッチからのパケットをインターセプトするように構成され得る。vスイッチ422−2は、APIベースのインターセプト機構も提供し得る。
【0019】
分散マネージャを使用して、セキュリティコントロールを仮想セキュリティ装置(VSA)の形式で実装するための弾性(又は柔軟な)システムが、VMMにおいて作成され得る。トラフィックは手動で分散マネージャにルーティングされ、したがってVSAにルーティングされ得る。別の実施形態では、インターセプト機構は、トラフィックが分散マネージャによってインターセプトされ、手動のルーティングを用いずに、VASへルーティングされるのを可能にする。システムは、VSAをモニタリングし、VMMリソース(CPU、メモリ、ストレージ)の使用を増減するか及び/又はVMMにおけるVASの数を増減する変更を要求するように構成される可能性がある。要求される変更は、VMMにおける既存の仮想マシンの入来する負荷(incoming load)、構成される負荷限度(configured load limit)及び/又はセキュリティポリシーに基づくものであってよい。ポリシーレイヤは、仮想インフラストラクチャが変化するときに所望のセキュリティコントロールを構成するために、弾性(又は柔軟な)機構の応答性を改善することができる。ポリシーレイヤは、仮想インフラストラクチャ内の仮想マシンに対する変更又は既存の仮想マシンのための新たなセキュリティポリシー若しくは更新されたセキュリティポリシーを検出することができ、分散レイヤと通信して、ポリシーによって必要とされる任意のインターセプト機構及び追加のバックエンドセキュリティプロセスをセットアップし、構成することができる。したがって、バックエンドセキュリティシステムを、仮想セキュリティ装置の形式で、必要に応じて割り当て、そして割り当て解除することができる。さらに、処理パワーの増加は、仮想セキュリティシステム160がVSAのようなセキュリティ処理リソースの過剰割り当てを必要としないように小さいものであってよい。したがって、この弾性(又は柔軟な)セキュリティシステムは、提示される負荷によって、多くの又は少ない使用を要することに応じて、それぞれ拡大又は縮小することができる。
【0020】
図1のインフラストラクチャに移ると、
図1は通信システム100を図示しており、通信システム100内に、仮想セキュリティシステム160のレイヤ化されたビューが提供されている。通信システム100は、割り当てられたリソース及びネットワークを1つ又は複数のそれぞれのエンティティに提供する仮想クラウドインフラストラクチャを表す。割り当てられたリソース及びネットワークは、インターネット、別のワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)等といった適切な公衆又はプライベートネットワークを通して、ユーザによりリモートでアクセスされ得る。
【0021】
通信システム100は、仮想クラウドインフラストラクチャを用いて構成され、ここでは、VMM120のレイヤは、物理ネットワークデバイス116上に、ネットワークの構造がフラット化されているように均一な単一のレイヤの形で表されている。VMM120は、ハードウェアレイヤ110の上で動作して通信システム100内の仮想家臣を管理及びモニタリングするVMM又はハイパーバイザを表す。フラット化されたVMM120により、仮想マシンを、通信システム100内で容易に作成することができ、ハードウェアレイヤ110内の基礎となる異なるハードウェアコンポーネント間で容易に移動させることができる。
【0022】
仮想セキュリティシステム160は、ユーザが、セキュリティを、弾性の仮想セキュリティ装置(VSA)アーキテクチャの形で与えることを可能にする。VSAは、必要に応じて割り当て及び割り当て解除され、ポリシーで定義されるセキュリティコントロールを仮想マシンのネットワークトラフィックに適用することができる。ポリシーレイヤ170は、通信システム100において提供される1つ又は複数のポリシーマネージャを表し、仮想マシンについてのユーザ定義セキュリティポリシー、システム定義セキュリティポリシー又はデフォルトのセキュリティポリシーを通信システム100内に格納する。仮想マシンは、クラウドマネージャ150を介して作成されるか移動されてよい。クラウドマネージャ150は、ユーザが、通信システム100の仮想クラウドインフラストラクチャにおいて望まれる特有の計算リソース、ハードウェアリソース及びネットワークリソースを要求できるように構成され得る。ポリシーレイヤ170の1つ又は複数のポリシーマネージャは、クラウドマネージャ150と通信するように構成され得る。セキュリティマネージャ175は、セキュリティのニーズが変化するときに既存の仮想マシンに対して、あるいは適用されたデフォルトのポリシーを必要とする未だ未知の仮想マシンに対して、仮想マシンがクラウドマネージャ150を介して追加又は移動されるように、ユーザが仮想マシンについてのポリシーを提供することを可能にする。一部の例において、セキュリティマネージャ175とクラウドマネージャ150を統合してもよい。これらのマネージャは、通信システム100において構成される1つ又は複数のネットワークのために、システム全体の管理サービスとして提供され得る。これらのマネージャは、専用のハードウェア(例えば専用のサーバ及びストレージ)上に実装されてもよく、仮想化により又は仮想化を行うことなく動作してよい。一実施形態において、1つ又は複数のネットワークを、特定のエンティティ(例えば企業、会社、学校、行政機関又は他の組織)に関連付けることができる。
【0023】
ポリシーレイヤ170は、分散レイヤ180とも対話することがある。分散レイヤ180は、分散マネージャを各々の仮想化されたサーバ上に含み、インターセプトレイヤ190のインターセプト機構をセットアップ及び構成することができる。インターセプトレイヤ190では、仮想マシンからのネットワークトラフィックがインターセプトされ、分散レイヤ180に提供される。分散レイヤ180は、ネットワークトラフィックを適切なセキュリティコントロールにルーティングする。セキュリティコントロールは仮想セキュリティ装置の形にすることができる。分散レイヤ180は、クラウドマネージャ150と対話するようにも構成され、必要に応じて、仮想セキュリティ装置を割り当てて構成する。例えば仮想セキュリティ装置は、仮想マシンが追加又は移動されるとき、仮想マシンのセキュリティポリシーが変更されるとき及び他のイベント(例えば新たなタイプの仮想マシンがネットワークに加わるとき)に基づいてポリシーが追加又は更新されるときに作成される可能性がある。
【0024】
通信システム100は、様々なネットワーキングプロトコルを提供してネットワーク通信を可能にするコアリソース135も含むことができる。一実施形態において、コアリソース135は、ネットワークサービスを接続及び使用するよう、コンピュータに対する認証許可アカウンティング管理を提供するAAAサーバ138を含んでよい、AAAサーバ用のネットワーキングプロトコルの一例は、RADIUS(Remote Authentication Dial In User Service)ネットワーキングプロトコルである。コアリソース135は、DHCPサーバ136も含み、ユーザエンドポイントを含むネットワーク要素を構成し、インターネットプロトコル(IP)ネットワーク上の通信を可能にすることができる。DNSサーバ137は、人間が読取可能な識別子(例えばユニフォームリソースロケータ:URL)に対応する内部システムアドレスを提供するディレクトリサービスを提供することができる。様々なコアリソースが、仮想マシン内に提供されてよく、及び/又は通信システム100内の専用のハードウェア上に提供されてもよい。
【0025】
仮想化されたデスクトップインフラストラクチャ(VDI)130は、例えば通信システム100の仮想クラウドインフラストラクチャでリモートサーバにおけるデスクトップの仮想化を可能にすることができる。一例において、各物理的なデスクトップについて別個の仮想マシンが作成されてよい。他の仮想マシンを、仮想クラウドインフラストラクチャで所与のエンティティについて割り当てて作成してもよい。典型的にネットワークを介して提供されるサービスは、仮想マシン内で仮想化され、VMM120によって管理され得る。通信システム100の仮想マシン内で実装することが可能なサービスの例には、メッセージングサービス及びビジネス特有のサービス(例えばエンジニアリングアプリケーション、アカウンティングアプリケーション、製造アプリケーション、法的アプリケーション等)が含まれる。
【0026】
1つの例示の実装では、ハードウェアレイヤ110の要素はネットワーク要素である。ネットワーク要素は、ネットワーク装置、ファイヤウォール、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール又はネットワーク環境において情報を交換するよう動作可能な任意の他の適切なデバイス、コンポーネント、要素若しくはオブジェクトを包含するように意図される。ネットワーク要素は、その動作を容易にする任意の適切なハードウェア、ソフトウェア、コンポーネント、モジュール又はオブジェクトだけでなく、ネットワーク環境内でデータ又は情報を受信、送信及び/又は他の方法で通信するための適切なインタフェースを含み得る。これは、データ又は情報の効率的交換を可能にする適切なアルゴリズム及び通信プロトコルを含み得る。
【0027】
通信システム100に関連付けられる内部構造に関して、ハードウェアレイヤ110の要素は、本明細書で概説される動作に使用される情報を格納するためのメモリ要素を含むことができる。ハードウェアレイヤ110の要素は、必要に応じて、かつ特定のニーズに基づいて、任意の適切なメモリ要素(例えばランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブルROM(EPROM)、電子的消去可能プログラマブルROM(EEPROM)、特定用途向け集積回路(ASIC)等)、ソフトウェア、ハードウェア内に、あるいは任意の他の適切なコンポーネント、デバイス、要素又はオブジェクト内に情報を保持してよい。本明細書で検討されるいずれのメモリアイテム(例えばストレージ114)も、「メモリ要素」という広義の用語に包含されるものとして解釈されるべきである。通信システム100により、仮想セキュリティシステム160において使用され、トラックされ、送信又は受信される情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、コントロールリスト又は他のストレージ構造に提供される可能性があり、その全ては任意の適切なタイムフレームで参照され得る。そのようないずれのストレージオプションも、本明細書で使用されるとき、「メモリ要素」という広義の用語に含まれ得る。
【0028】
特定の例示の実装において、本明細書で概説される機能は、1つ又は複数の有形の媒体にエンコードされるロジック(例えばASIC内に提供される具現化されたロジック、デジタル信号プロセッサDSP)命令、プロセッサにより実行される(潜在的にオブジェクトコード及びソースコードを含む)ソフトウェア又は他の同様のマシン等)によって実装されてよく、そのような媒体は非一時的媒体を含み得る。これらの例の一部において、メモリ要素は、本明細書で説明される動作に使用されるデータを格納することができる。これは、本明細書で説明される動作を行うのに実行されるソフトウェア、ロジック、コード又はプロセッサ命令を格納することができるメモリ要素を含む。
【0029】
例示の実装において、通信システム100は、本明細書で概説されるような動作を達成又は促進するよう、仮想マシンを含めソフトウェアモジュールを(例えば分散レイヤ180、ポリシーレイヤ170、インターセプトレイヤ190等内に)含み得る。他の実施形態では、そのような動作は、ハードウェア、ファームウェアによって実行されるか、これらの要素に対して外部で実装されるか、何らかの他のネットワークデバイス又は意図された機能を達成する何らかの他の仮想サーバ、仮想マシン、仮想スイッチ又は仮想ネットワークインタフェースカードに含まれてよい。あるいは、これらの要素は、本明細書で概説されるように、その動作を達成するために調整することができるソフトウェア(又は等価なソフトウェア)を含んでもよい。更に他の実施形態では、これらのデバイスの1つ又は全てが、その動作を容易にする任意の適切なアルゴリズム、ハードウェア、ファームウェア、ソフトウェア、コンポーネント、モジュール、マネージャ、仮想マシン、インタフェース又はオブジェクトを含んでよい。
【0030】
加えて、ハードウェアレイヤ110は、本明細書で検討される動作を行うのにソフトウェア又はアルゴリズムを実行することができるプロセッサを(例えばサーバ112内、ネットワークデバイス116内に)含んでよい。プロセッサは、本明細書で詳述される動作を達成するようデータに関連付けられる任意のタイプの命令を実行することができる。一例において、プロセッサは、要素又は項目(例えばデータ)を、ある状態又は物から別の状態又は物へ変換する可能性がある。別の例では、本明細書で概説されるような動作は、固定のロジック又はプログラム可能なロジック(例えばプロセッサによって実行されるソフトウェア/コンピュータ命令)により実装されてよく、本明細書で識別される要素は、何らかのタイプのプログラム可能なプロセッサ、プログラム可能なデジタルロジック(例えばフィールドプログラマブルゲートアレイ(FPGA)、EPROM、EEPROM)又はデジタルロジック、ソフトウェア、コード、電子命令若しくはの任意の適切な組み合わせを含むASICとすることができる。本明細書で説明される潜在的な処理要素、モジュール及びマシンのいずれも、「プロセッサ」という広義な用語に包含されるように解釈されるべきである。
【0031】
図2では、簡単なブロック図により、本開示に従って実装され得る仮想化されたサーバ200(本明細書において「仮想サーバ」とも呼ばれる)のレイヤを図示している。仮想サーバ200は、例えばWMware ESX又はESXi、SAP又は他のウェブサービスを用いて、あるいはコマンドラインインタフェース、リモートスクリプト等を用いて構成され得る。仮想サーバ200は、仮想マシン230−1〜230−nを含んでよい。仮想マシン230−1〜230−nは、それぞれのオペレーティングシステム234−1〜234−nを有することができ、オペレーティングシステム234−1〜234−nは、それぞれのアプリケーション232−1〜232−nを実行する。本明細書において同様の参照番号を有する同様のコンポーネントへの参照は、その参照番号を有する数字の添え字によって個々に参照されてもよく、数字の添え字を省略することにより集合的に参照されてもよい。
【0032】
仮想サーバ200は、ハイパーバイザ220も含んでよく、ハイパーバイザ220は、ハードウェア210上で動作することができ、オペレーティングシステム234及び関連するアプリケーション232の複数のインスタンスを実行する能力を提供する。ハイパーバイザ220を、仮想サーバ200のような単一のマシンと関連付けることができる仮想マシンモニタ(VMM)と呼ぶこともできる。ハイパーバイザ220及びハードウェア210はそれぞれ、
図1の通信システム100のVM120の一部及びハードウェアレイヤ110とすることができる。オペレーティングシステム及びアプリケーションは、ハードウェアリソースを必要に応じてオペレーティングシステム234及びアプリケーション232に動的に割り当てることにより、同時に動作することができる。この配置において、アプリケーション232は論理的に、それぞれのオペレーティングシステム234の上で動作する。オペレーティングシステム234は、それぞれの仮想マシン230に関連付けられ、仮想ハードウェア222(例えばスイッチ、プロセッサ、CD/DVDドライブ、フロッピー(登録商標)ドライブ、メモリ、SCSIデバイス、ネットワークインタフェースカード、パラレルポート、シリアルポート等)が提供される。仮想スイッチは、例えば仮想マシンと他の仮想コンポーネントとの間の通信を可能にするソフトウェアプログラムであり、物理的なL2又はL3スイッチと同様の手法で動作し得る。
【0033】
ハイパーバイザ220の下にある物理的なハードウェア210は、プロセッサ212、メモリ要素214及びネットワークインタフェースカード(NIC)216を含み得る。ハードウェア210は、例えばレイヤ2(L2)スイッチのような追加のコンポーネントも含んでよい。全体的な構成はサーバ(又は何らかの他の適切なネットワーク要素)において提供され得る。この実装は単に、本開示を適用することができる1つの可能性ある実施例を表すののに過ぎない。任意の数の追加のハイパーバイザ又は仮想要素も同様に、本明細書で検討される広範な教示から利点を有するであろう。
【0034】
典型的に、サーバ仮想化では、許可されたユーザには、仮想マシン及び関連するアプリケーション、オペレーティングシステム及び仮想ハードウェアの完全なセットアップを管理するインタフェースが提供される。この管理には、作成、削除、修正、シャットダウン、スタートアップ等を含め、ハイパーバイザ構成及び仮想マシン構成が含まれる。
【0035】
クラウド仮想化では、許可されたユーザには、「クラウド」における仮想インフラストラクチャの完全なセットアップ管理するコンソール及びインタフェースが提供され得る。クラウドは、リモートデータセンタ、パブリック又はプライベートとすることができる。クラウドは、リモート又はローカルのプライベートネットワークとすることができる。一般に、許可されたユーザは、特有の計算リソース、ストレージリソース及びネットワークリソースをコンソールに要求することができる。これらのリソースはその後、使用されている正確な物理ハードウェアコンポーネントをユーザが知る必要なく、クラウド内で割り当てられる。
【0036】
図2には図示されていないが、プロセッサ212、メモリ要素214及び/又はネットワークインタフェースカード216に適切に結合され得る追加のハードウェア要素がある。追加のハードウェアには、これらに限られないが、メモリ管理ユニット(MMU)、追加の完全対称型マルチプロセッシング(SMP)要素、物理メモリ、Ethernet(登録商標)、周辺コンポーネント相互接続(PCI)バス及び対応するブリッジ、小型コンピュータ用周辺機器インタフェース(SCSI)/IDE要素等が含まれ得る。
【0037】
説明の容易性のために、
図2の仮想サーバ200に関連して説明したような、仮想サーバに関連付けられるコンポーネントの必ずしも全ては、後続の図面に示されていない。しかしながら、
図1〜
図2の仮想サーバに関連して説明したコンポーネント、モジュール、ハードウェア、ファームウェア又はソフトウェアのいずれも、本出願の他の図面において、必ずしも示されてはいないとしても、含まれていてもよいことが理解されよう。
【0038】
図3は、
図1の通信システム100における仮想サーバ300の実施形態に関連する詳細の1つの可能性のあるセットを示す、簡単なブロック図である。仮想サーバ300は、ゲスト仮想マシン(VM)330−1〜330−n、ハイパーバイザ320、ネットワークインタフェースカード310及び仮想セキュリティシステム360を含むことができる。NIC310は、仮想サーバ300のハードウェアの一部とすることができ、ポート314−1〜314−y及びレイヤ2(L2)スイッチ312を含むことができる。仮想化されたハードウェアは、ハイパーバイザ320によって管理され、1つ又は複数の仮想スイッチ(vスイッチ)322−1〜322−mを含むことができる。これらのvスイッチは、仮想サーバ300上の仮想マシンが該スイッチを通して通信する、仮想化されたスイッチである。物理的なL2スイッチ312は、NICが、本明細書において以下で更に説明されるように、L2スイッチ312を介した通信を可能にする特有の機能を含むという特定の実施形態において、仮想サーバ300の仮想マシン間の通信に使用されてもよい。L2スイッチが、本明細書において様々な実施形態との関連で示され、及び/又は説明されるが、他のスイッチもそのような実施形態に適合し得ることが理解されよう。例えば適切な代替のスイッチは、必ずしもこれに限られないが、レイヤ3(L3)の能力を有するL2スイッチを含む。
【0039】
仮想セキュリティシステム360は、仮想サーバ300において実装される仮想セキュリティシステム160の例示のコンポーネントを図示している。仮想サーバ300の例示の実装では、仮想セキュリティシステム360は、仮想セキュリティ装置(VSA)340−1〜340−xの柔軟なコレクション、分散マネージャ380、ポリシーマネージャ370、ソースルート機構395及びインターセプト機構390を含むことができる。
【0040】
一実施形態において、ゲストVM330、VSA340、分散マネージャ380及びポリシーマネージャ370は全て、仮想サーバ300の仮想マシンとして構成され、ハイパーバイザ320によって管理される。ポリシーマネージャ370は、本明細書では一般的に仮想マシンと呼ばれるが、これらの実施形態にいずれかにおいては、代替として、物理サーバ上で直接ホストされることも可能である。例えばポリシーマネージャ370は、システム全体の管理サービスにより、該管理サービスのうち、仮想マシンとして構成されない少なくとも一部分に含まれることがある。
【0041】
ゲストVMは、少なくとも一部の信頼性のないVMを表す。したがって、VMセキュリティポリシー386内のポリシーは、ゲストVM330からのネットワークトラフィックについて、1つ又は複数のVSA340によるセキュリティ検査を必要とすることがある。各ゲストVMは、VSAがゲストVMからのネットワークトラフィックを受け取ること及びVSA340がネットワークトラフィックを受け取るべき順序に関する特定の要件とともに、自身の固有のポリシーを有することがある。ゲストVM330は、標準プラットフォームのマシンと互換性を有することができるが、セキュリティ機構に参加するいずれかの特別なドライバ又は他のソフトウェアを有する必要はない。したがって、仮想セキュリティシステム360を、既存のインストール又は標準的な企業のプラットフォームに適用することができる。
【0042】
VSA340は、任意の適切なタイプのセキュリティ検査を実装する、信頼性のある仮想マシンを表す。本明細書で使用されるとき、「セキュリティ検査」は、任意のタイプのネットワークセキュリティ機構を含むように意図され、これらには、限定ではないが、侵入防止システム(IPS:intrusion prevention system)、侵入検出システム(IDS:intrusion detection system)、ファイヤウォール(FW)、データ損失防止(DLP:data loss prevention)、アンチウィルススキャン、ディープパケット検査、ホワイトリスト評価及びブラックリスト評価が含まれる。VSA340は、インターセプト機構390又はソースルート機構395についての特定の知識を有することがある。さらに、VSA340は一般に、「BITW(bump in the wire)」モードで動作する。したがって、明示的なルーティングモードのファイヤウォールは、仮想セキュリティシステム360の外側で動作することができる。
【0043】
ゲストVM330、他の仮想マシン(例えば分散マネージャ380、ポリシーマネージャ370)及びVSA340は、vスイッチ322のうちの1つ又は複数を介して相互に通信することができる。一部の実施形態において、vスイッチ322が、単一のドメイン(すなわち、単一のスイッチ)に結合されてよく、このドメインは、VSA340及び潜在的には他のVMが相互に通信するのに使用され、そしてゲストVM330が相互に通信するのに使用される。一部の実施形態では、ゲストVM、他のVM及び/又はVSAがL2スイッチ312を介して通信するのを可能にする特別な機能が、NIC310内に提供されてもよい。この特別な機能の例は、単一ルート入出力仮想化(SR−IOV:Single Root Input/Output Virtualization)機構である。SR−IOVは、直接メモリアクセス(DMA)を可能にするのに使用され、これについては本明細書で更に説明される。
【0044】
分散マネージャ380は、ストリームデータベース382を保持し、ゲストVM330とVSA340のような他の仮想マシンとの間の接続をトラックすることができる。VMセキュリティポリシーデータベース386は、VSA340の1つ又は複数のリストを含むことができ、このリストを介して、各ゲストVM330からのネットワークトラフィックがルーティングされる。リストは、ルータ又はレイヤ3(L3)スイッチと同様であってよく、例えば各VSA340のメディアアクセスコントロール(MAC)アドレスを含み得る。リストは、全てのゲストVM330に対して適用可能な単一のリスト、ゲストVM330ごとに個別化されたリスト又は同じセキュリティポリシー要件を有するゲストVM330の各セットについて異なるリストとすることができる。
【0045】
ソースルート機構395も仮想セキュリティシステム360の一部であり、少なくとも部分的に分散マネージャ380内に提供され得る。ソースルート機構395は、パケットが分散マネージャ380に返される前に、分散マネージャ380が1つ又は複数のVSAを通してパケットをルーティングできるように構成され得る。ソースルート機構395の幾つかの変形が実装され得る。異なるルーティング機構は、フローが同じホスト(例えばサーバ)上のvスイッチ間を通る場合に物理的なネットワークデータを全て回避する、最適化されたネットワークトラフィック経路につながることがある。ソースルート機構の変形は、本明細書において更に説明される。
【0046】
インターセプト機構390も仮想セキュリティシステム360の一部である。一実施形態では、インターセプト機構390が、vスイッチ322内に提供されて、ゲストVM330から受け取る各パケットをインターセプトし、インターセプトしたパケットを分散マネージャ380にリダイレクトしてもよい。幾つかのインターセプト機構390が仮想セキュリティシステム360内で実装されてよく、これについては以下で更に説明される。
【0047】
ポリシーマネージャ370は、分散マネージャ380内のゲストVM330についてのセキュリティポリシーを更新するポリシーモジュール374を含む。また、ポリシーモジュール374は、VMMセキュリティポリシーデータベース376も含んでよい。VMMセキュリティポリシーデータベース376は、通信システム100内の他の仮想サーバの他のゲストVMに加えて、仮想サーバ300のゲストVM330についてのセキュリティポリシーを有してよい。一実施形態において、ポリシーモジュール374は、VMMセキュリティポリシーデータベース376を使用して、ゲストVM330のセキュリティポリシーによりVMセキュリティポリシーデータベース386を更新することができる。
【0048】
あるいはまた、ポリシーモジュール374は、VMMセキュリティポリシーデータベース376を使用してストリームデータベース382を更新することができる。このシナリオでは、分散マネージャが、レイヤ3(L3)スイッチのための一般的なアルゴリズムを使用してストリームデータベース382を構築するように構成され得る。分散マネージャ380は、全ての新たなパケットストリームについて、ポリシーマネージャ370をクエリするように構成されることが可能である。クエリに応答して、ポリシーモジュール374は、各パケットストリームデータベースエントリに、そのエントリに関連付けられる特定のパケットストリームを処理すべき特定のVSA340の識別情報(例えばMACアドレス)を追加することができる。
【0049】
ポリシーマネージャ370はまた、必要に応じて新たなVSAの割り当てを、潜在的にはインターセプト機構390の構成をも容易にするように構成され得る。(ポリシーによって要求されるような)適切なVSAが、パケットストリームを処理するのに利用可能でない場合、ポリシーモジュール374は、他のモジュール、マネージャ及び仮想マシン(例えば分散マネージャ380、クラウドマネージャ150、セキュリティマネージャ175等)と連携して、新たなVSAをセットアップさせ、構成及び開始させることができる。このシナリオは、例えば特定のVSAが初めて必要とされるとき(例えばDLP機器を必要とする最初のストリーム)を生じることがある。別のシナリオでは、所与のVSAが、新たなパケットストリームを処理するのにより多くの計算リソース(例えばRAM、プロセッサリソース等)の消費を要することがある。
【0050】
ポリシーマネージャ370(又は分散マネージャ380)は、VSAによって必要とされる計算リソースを管理することも容易にすることができる。特に、ポリシーマネージャ370(又は分散マネージャ380)は、既存のVSAの全ての容量を予想又はクエリするように構成され得る。ポリシーマネージャ370(又は分散マネージャ380)が、より多くの容量が必要とされると決定した場合、次いで新たなパケットストリームが新たなVSAをトリガすることがあり、あるい既存のVSAのうちの1つを、より多くの中央処理ユニット(CPU)に使用できるようにすることがある。
【0051】
ポリシーマネージャ370(又は分散マネージャ380)は、仮想サーバ内の所与の複製VSAの利用が少ないことを検出し、このVSAがアイドル状態になるまでパケットストリームを送信するのを停止し、その後その仮想マシンを削除することができる。あるいは、複製VSAの利用が少ない場合、他の同様のVSAが追加のネットワークトラフィックの負荷に適応することができれば、そのパケットストリームをその他のVSAにルーティングしてもよい。このようにして、仮想化インフラストラクチャを使用して、需要に従って拡大及び縮小する弾性のあるセキュリティ機構が作成される。
【0052】
システム管理者は、需要に応じてセキュリティを割り当てる際に制限のない自由な仮想セキュリティシステム360を可能にすることができ、あるいはシステムリソースの使用に影響するポリシーを適用してもよい。例えばシステム管理者は、セキュリティリソースを、システムリソースの10%未満に制限してもよい。10%で割り当てられたVSAが、ネットワークトラフィックに対処することができず、VSAがネットワークトラフィックをスローダウンさせる場合、システム管理者は、ポリシーを変更してトラフィックをより選択的に処理することを可能にすることができ、あるいはシステム管理者は、より高いパーセンテージのシステムリソースをVSAに割り当てることを決定してもよい。
【0053】
図4は、仮想セキュリティシステムを有する仮想サーバの特定のコンポーネントの簡単なブロック図であり、2つのゲストVM間のパケットストリームの流れの例示的なシナリオを図示している。仮想サーバ400及びそのコンポーネントは、
図3の仮想サーバ300と関連して説明したのと同じ又は同様の方法で構成されてよい。仮想サーバ400は、ゲストVM430−1〜430−n、分散マネージャ480、ポリシーマネージャ470及び4つのVSA440−1〜440−4を含め、幾つかの仮想マシンを含む。
【0054】
ゲストVM430は、スイッチ422−1を介して相互に接続される。スイッチ422−1は、一部の実施形態では仮想スイッチであってよい。他の実施形態では、スイッチ422−1は、例えば仮想サーバ400上又は仮想サーバ400の外部にあるネットワークインタフェースカード内に配置される物理的なスイッチであってよい。VSA440は、vスイッチ422−2を介して相互に接続されるように示されている。一般的に、スイッチ422−1及び422−2は、明確性の目的で別個に示されている。したがって、スイッチ422−1と422−2は典型的に、特定のインターセプト機構技術及びソースルーティング技術に適合する単一のドメインに結合されることが可能である。しかしながら、一部の実施形態では、vスイッチ422−2とスイッチ422−1は異なるスイッチであってよい。
【0055】
図4において、インターセプト機構490及びソースルート機構484は一般化され、幾つかの異なる構成を表す。これについては、本明細書で更に説明される。
図4の例示のシナリオでは、パケットがVM430−1からVM430−2に送信される。パケットは、VM1.MACのソースアドレスと、VM2.MACの宛先アドレスを有する。インターセプト機構490は、VM2.MACへ流れる代わりに、パケットをインターセプト及び/又は分散マネージャ480へリダイレクトさせる。
【0056】
パケットがパケットストリーム内の最初のパケットである場合、分散マネージャ480は、ストリームデータベース482を構築する。一実施形態において、VMポリシーデータベース486は、ゲストVM430−1についてのセキュリティポリシーを含む。例えばVMポリシーデータベース486は、ゲストVM430−1のパケットストリームを処理すべきVSA440の識別情報を含むことがある。別の実施形態では、分散マネージャ480は、ポリシーマネージャ470に、ゲストVM430−1のセキュリティポリシーについてクエリする。ポリシーマネージャ470は、パケットを処理すべき各VSA440の識別情報を、例えば直接クエリにより、あるいは特定のパラメータを有するフローに合致するVSAを識別する予めプロビジョニングされたポリシーで提供する。適切なVSA440の識別情報が取得されると、これらの識別情報を、パケットストリームに関連付けられる各ストリームデータベースのエントリに追加することができる。この例示のシナリオでは、VSA440−1及びVSA440−3の識別情報をストリームデータベース482に追加することができる。
【0057】
分散マネージャ480によって受信されたパケットがパケットストリームの最初のパケットでない場合、分散マネージャ480は、パケットのL3検査を実行して、ストリームデータベース482内のストリームをルックアップする。ストリームエントリ内のデータから、分散マネージャ480は、要求されたセキュリティデバイスを通るソースルートを作成する。このシナリオでは、VSA440−1及びVSA440−3が選択される。ソースルートが作成されると、分散マネージャ480はパケットを、スイッチ422−2を介してVSA440−1に伝送することができる。VSA440−1は、IPSデバイスであり、パケットのコンテンツに対してセキュリティスキャンを実行することができる。パケットがセキュリティスキャンを通過する場合、VSA440−1はこのパケットを、同じソースルート機構495を使用してVSA440−3に転送することができる。VSA440−3はファイヤウォールであり、ファイヤウォールポリシーをパケットに適用する。ファイヤウォールポリシーがパケットに適用された後、VSA440−3は、ソースルート機構495の最後のステップを使用して、パケットを分散マネージャ480に返すことができる。分散マネージャ480は、その後、パケットを宛先のゲストVM430−2に送信する。
【0058】
VSAのいずれか、すなわちVSA440−1又はVSA440−3は、パケットのルートをブロック又は変更してよい。例えばパケットがVSA440−1のセキュリティスキャンを通過しない場合又はパケットがVSA440−3のファイヤウォールポリシーに適合しない場合、これらのVSAのいずれかがパケットをブロックするか変更してよい。
【0059】
ソースルート機構(例えば395、495)が分散マネージャによって使用され、パケットストリーム内のパケットを、複数の仮想セキュリティ装置へ特定の順序でルーティングすることができる。ソースルート機構は、ゲスト仮想マシンの間のネットワークトラフィックがインターセプト機構によってインターセプトされた後に起動される。一般に、分散マネージャは、パケットが受信される度に、そのテーブル(例えばストリームデータベース482、382)から一部のデータをとり、各VSAがパケットを次のVSAに正しくルーティングするか、分散マネージャに返すことができるように、パケットを修正する。
【0060】
ソースリソース機構は、ゲストVMのセキュリティポリシーによって要求される通りに、ゲストVMからVSAへのパケットの所望のルーティングを達成するよう、様々な方法で構成され得る。一実装において、ソースルートを1981年9月のRFC(Requests for Comment)791 インターネットプロトロコル、Darpaインターネットプログラムプロトコル仕様において定義する、ソースルート機構が実装される。この機構は、分散マネージャ480及びVSA440の各々がルータ機能を実装する場合に使用され得る。例えば仮想マシン(例えばゲストVM430及びVSA440)が、固有のルーティング機能を有するオペレーティングを用いて実装される場合、オペレーティングシステムは、この機能を提供する。この技術は、標準のオペレーティングシステムの実装がソースルーティングを行うのを可能にする。
【0061】
図5は、プライベート仮想ローカルエリアネットワーク(プライベートVLAN)を用いる又は用いずに、MACヘッダカプセル化を使用する別のソースルート機構のブロック図である。IPソースルートがオプションでないとき、協調的MACレベルのソースルートが可能である。この機構では、ヘッダは、以下の構造により、分散マネージャ580において各着信パケット581の前に置かれる。
typedef unsigned char mac_addr[6];
typedef struct{
mac addr dst; //Ethernet header, destination
mac_addr src; //Ethernet header, source
U16 etherType; //Ethernet header, type
U8 num_src_route; //number of elements in the source route array
mac addr src route[this.num_src_type]; //the source route
}mac_src_route_header;
上記のタイプはバイトに関してパケット化されることを想定している。上記において、ヘッダの最初の部分は、EthernetII MACヘッダのように見える。この構成は、MACヘッダに関連して説明されるが、IEEE802.3ヘッダを使用するネットワークのように、他のタイプのヘッダに適合するよう、適切な変更を行ってもよい。元のパケットは、mac_src_route_headerの後で始まる。このためのオフセットは、各VSAについて元のパケットを回復するよう、num_src_route*6+14として計算され得る。処理中に、mac_src_route_headerは保存される必要がある。一例において、フローテーブル582は、ドライバレベルで構築され、パケットストリーム内の各パケットについて同じヘッダを使用してよい。出力において、src_route_next_headerがインクリメントされ、src_routeアレイ内の次のMACアドレスがdstフィールドにコピーされる。
【0062】
分散マネージャは、各パケットストリームについて、そのパケットストリームが開始するとき、mac_src_route_headerを作成する。src_routeアレイは、このパケットストリームを処理するのに必要とされる各VSAのMACアドレスを有する。これらのMACアドレスは、分散マネージャ580の構成の一部である。あるいは、分散マネージャ580は、アドレス解決プロトコル(ARP:address resolution protocol)又はbonjourコール若しくはハイパーバイザコールを使用してMACアドレスを駆動することができる。src_route_nextがゼロにセットされ、分散マネージャ580自体のMACアドレスが最後の宛先として置かれる。
【0063】
図5は、MACヘッダカプセル化を使用するソースルーティング機構における例示の動作を図示している。581において、パケットがVMi(すなわちゲストVM)から受信されると、分散マネージャ580は、フローテーブル582内のパケットストリームをルックアップする。分散マネージャ580は、次いでmac_src_route_headerをパケットに追加する。583において、分散マネージャ580は、mac_src_route_headerを有するパケットを、フローテーブル582から再送する。後に、分散マネージャ580は、最後のVSAから返されたパケットを受信してこれを処理する。この場合、VSAのいずれもパケットをブロックしないと想定する。分散マネージャ580は、ヘッダを除去して、パケットを元の宛先VMに転送する。
【0064】
図6は、ハードワイヤードの仮想ポートを使用する別のソースルート機構を実装する仮想サーバ600の例示のコンポーネントを表すブロック図である。仮想サーバ600及びそのコンポーネントは、
図3の仮想サーバ300に関連して説明したものと同じ又は同様の手法で構成されてよい。仮想サーバ600は、分散マネージャ680及び3つの例示の仮想セキュリティ装置(VSA)、すなわちIPS640−1と、FW640−2と、DLP640−3を含む。このソースルート機構は、特に、少ない数(例えば2、3)の異なる種類のVSAが使用される構成に適する。
【0065】
ハードワイヤード仮想ポートを使用するソースルート機構を、仮想インタフェース及び仮想スイッチを用いて実装することができる。分散マネージャ680は、(本明細書で更に説明されるように)インターセプト機構を使用してインターセプトされるネットワークトラフィックを受信する。ネットワークトラフィックは、仮想サーバ600内のソースゲスト仮想マシンから始まり、仮想サーバ600内の宛先ゲスト仮想マシンの宛先アドレス又は仮想サーバ600の外部にある何らかの他の宛先アドレスを有することがある。あるいは、ネットワークトラフィックは、仮想サーバ600の外部にあるソースから始まり、仮想サーバ600内のゲスト仮想マシンの宛先アドレスを有してもよい。
【0066】
ネットワークトラフィックが、分散マネージャ680によって受け取られると、各パケットストリームはVSAのセットに割り当てられる。これらのVSAは、トラフィックが、あるVSAの出力ポートから別のVSAの入力ポートに行くように「配線(ワイヤード)」される。最後のポートは、分散マネージャ680に送られる。全てのVSA640が「BITW(bump in the wire)」として実装される場合、トラフィックは、効率的なソースルートを通って流れる。このスキームにおいて、VSAは多くの仮想インタフェースを実装するのに付加的なリソースを必要とするか、オプションを全て実装するのに追加のVSAが必要とされることがある。別の実装では、追加の仮想ローカルエリアネットワーク(VLAN)タグがルートの各々について使用され得る。
【0067】
異なる経路の数は、異なるセキュリティデバイスの数により指数関数的に増加するので、このアプローチは、より少ない数のVSAにより適している。しかしながら、一部のネットワーク環境では、少ない数のセキュリティデバイスのみが望まれ、これらのデバイスは一般的に、定義された順序で配置される。したがって、ソースルート機構についてのハードワイヤードの仮想ポートのオプションは、特にこれらのタイプの構成に有利であり得る。
【0068】
図6の例示のシナリオに関連して、ハードワイヤードの仮想ポートは、ソースルーティングを実行する。分散マネージャ680及びVSA640の各々(IPS、FW及びDLP)は、多くの仮想インタフェースを有する。これらは、図内では、これらの間の1つ又は複数の仮想スイッチを表す線を使用して配線されている。一実施形態において、各出力インタフェース内のドライバは、次の出力インタフェースのMACアドレスを用いて静的に構成されるか、インタフェースを受け取って2つのポート間の直接接続をシミュレートする際にプロミキャスモード(promiscuous mode)を使用してもよい。
【0069】
パケットは、インターセプト機構から、分散マネージャ680のポートp601に届き、ポートq602で送信される。IPS640−1のみへ送信するために、分散マネージャ680は、パケットをポートd606で送信し、出力をポートe607で受信する。FW640−2のみに送信するために、分散マネージャ680は、パケットをポートf608で送信し、出力をポートg609で受信する。DLP640−3のみに送信するために、分散マネージャ680は、パケットをポートh610で送信し、出力をポートj611で受信する。
【0070】
IPS640−1及びDLP640−3にこの順序で送信するために、分散マネージャ680は、パケットをポートc605で送信し、出力をポートk612で受信する。IPS640−1及びFW640−2にこの順序で送信するために、分散マネージャ680は、パケットをポートb604で送信し、出力をポートn614で受信する。分散マネージャ680における追加のポートは、追加のハードワイヤード仮想ポートルートがFW640−2とDLP640−3との間で構成されるのを可能にする。最後に、利用可能なVSA、すなわちIPS640−1、FW640−2及びDLP640−3の全てにこの順序で送信するために、分散マネージャ680は、パケットをポートa603で送信し、出力をポートm613で受信する。
【0071】
図7は、分散マネージャの処理の一実施形態を示す簡単なフローチャートである。参照の容易性のために、
図3の分散マネージャ380及び他のコンポーネントを参照するが、フロー700は本明細書で説明される分散マネージャ及び仮想セキュリティシステムの様々な実施形態に適用可能である。フロー700の1つ又は複数の動作は、分散マネージャ380内のルーティングモジュール384によって実行されてよい。
【0072】
702において、分散マネージャ380は、ソースゲスト仮想マシンからインターセプトされたパケットを受け取る。704において、パケットストリームの最初のパケットについて、分散マネージャは、そのパケットストリームのためのセキュリティポリシーを決定してよい。一実施形態において、分散マネージャは、VMセキュリティポリシーデータベース386を検索して、パケットストリームを処理すべきVSAの識別情報を決定する。別の実施形態では、分散マネージャは、ポリシーマネージャ370にクエリしてもよい。ポリシーマネージャ370は、ソースゲスト仮想マシンについて、パケットストリームに適用される適切なセキュリティポリシーを提供することができる。セキュリティポリシーは、パケットを処理すべきVSAの識別情報とVSAがパケットを処理すべき順序とを含むことができる。セキュリティポリシー内の各VSAの識別情報(例えばMACアドレス)を、パケットストリームに関連付けられるストリームデータベース382内の各エントリに追加してもよい。
【0073】
706において、分散マネージャは、パケットについて、適切なVSAへのルートを作成する。ソースルートを、ストリームデータベース382から導出することができる。パケットストリームに関連付けられるストリームデータベース382の1つ又は複数のエントリ内のデータから、分散マネージャは、要求されるVSA340を通じてソースルートを作成する。一部の実施形態において、分散マネージャは、ソースルートを含むようにパケットを修正してよく、したがって、パケットを受信するVSAが、そのパケットを適切に転送することが可能になる。
【0074】
708において、分散マネージャは、パケットを、ソースルート内で識別される最初のVSAに送信することができる。710において、分散マネージャが、VSAから返されるパケットを受信したかどうかを判断する。分散マネージャがパケットを受信した場合、次いで、パケットがVSAの全てのセキュリティ検査を通過し、あるいはパケットがVSAのうちの1つ又は複数によってその特定のセキュリティ検査の要件(例えばファイヤウォールポリシー、アンチウィルススキャン等)に適合するよう修正されたと想定することができる。
【0075】
パケットが分散マネージャによって受信される場合、712において、分散マネージャは、パケットをその元の宛先にルーティングすることができる。例えば宛先は、同じ仮想サーバ上の別のゲスト仮想マシンであってよく、あるいは異なる仮想サーバ上の別のゲスト仮想マシンであってもよい。
【0076】
パケットが受信されずに指定の時間が経過した後のように、分散マネージャによってパケットが受信されない場合、あるいはパケットがドロップされたことを示すメッセージをVSAが送信する場合、(714として一般的に示されるように)分散マネージャによって任意の適切なアクションを取ることができる。アクションには、エラーメッセージを送信すること、警告をシステム管理者若しくは他の許可されたユーザに送信すること及び同じソースゲスト仮想マシンからの新たなパケットをブロックすることが含まれる可能性があるが、これらに限定されない。一実施形態において、分散マネージャは、パケットを受信せずに特定の時間が経過した後、あるいはVSAからパケットがセキュリティ検査を通過しなかったという通知を受信した後、特定のアクションを取ることを決定してもよい。
【0077】
図8は、インターセプト機構の更に別の例示の実装を示すブロック図である。
図8の実施形態では、OpenFlowスイッチ822は、仮想セキュリティシステムのインターセプト機構として構成される。典型的に、新たなネットワークトラフィックのフローについて決定を行うアルゴリズムは、スイッチ内で実施される。しかしながら、OpenFlowスイッチは、ネットワークトラフィックフローについて決定を行うアルゴリズムが、スイッチのデータ経路とは別個にされるという、切り替えの概念であり、その制御経路コンポーネントは、異なる物理マシン上に存在してよい。OpenFlowスキームでは、OpenFlowスイッチが、既存の公知のトラフィックフローからのパケットを受信するとき、このパケットは、受信したトラフィックの公知のフロールートに基づいてルーティングされる。しかしながら、新たなフロールートが、OpenFlowスイッチにより開始されて検出されるとき、OpenFlowコントローラの制御プロセスは、フローパラメータにより仮想ネットワークインフラストラクチャにわたって通史され得る。OpenFlowスイッチは、既存のネットワークトラフィックフローを管理することができるが、OpenFlowスイッチの外部にある追加の機構が、新たなネットワークトラフィックについてのフロールートの生成を制御することができる。OpenFlowスキームは、Open Networking Foundationによって2011年の12月5日公表された「OpenFlow Switch Specification」バージョン1.2(Wire Protocol 0x03)においてより詳細に説明されている。
【0078】
OpenFlowスイッチを使用する実施形態では、インターセプト及びソースルート機構は、スイッチングアーキテクチャへと直接最適化され得る。したがって、OpenFlowスイッチのためのコントローラに、暗黙的に完全なフローについての複数のネットワークフローセグメントを一度に構成することができる分散マネージャモジュールが提供されると、別個のソースルーティング機構を省略することができる。
【0079】
分散マネージャモジュールは、スイッチ用のOpenFlowコントローラプロセスに統合され得る。分散マネージャモジュールは、構成されたポリシーに従ってVSAを通過する新たなフローのトランジットを網羅する複数のフローを挿入することにより、OpenFlowスイッチを介して仮想セキュリティ装置を通過する新たなフローのパケットをルーティングするのに必要とされるフロールートを生成することができる。どのようなフローの最後は最終的に、パケットを、OpenFlowスイッチを介して新たなフローのソースにより意図される宛先へルーティングする。一実施形態において、OpenFlowコントローラのプロセスは、スイッチについて新たなフローを全て制御するか、特定の決定を覆すよう、通常のコントローラのソフトウェアへプラグインすることができる。したがって、分散マネージャ機能は、本明細書で上述したように、OpenFlowスイッチコントローラによりOpenFlowスイッチ内に包含される。
【0080】
図8は、仮想サーバ800において、OpenFlowスイッチ822を使用する実施形態の例示の実装を図示している。仮想サーバ800及びそのコンポーネントは、
図3の仮想サーバ300を参照して説明したのと同じ又は同様の手法で構成され得る。仮想サーバ800は、仮想マシン(VM)830−1〜830−n及び仮想セキュリティ装置(VSA)840−1〜840−4を用いて構成される。説明の容易性のために、2つの侵入防止システム(IPS)のVSA840−1及び840−2と、ファイヤウォール(FW)のVSA840−3と、データ損失防止(DLP)のVSA840−4を含む、4つのVSAのみが仮想サーバ800内に示されている。しかしながら、任意の数及びタイプのVSAを仮想サーバ内に構成して、仮想マシンからのネットワークトラフィックに対する様々なセキュリティ検査を提供してもよいことが認識されよう。
【0081】
OpenFlowコントローラ825が仮想ネットワークインフラストラクチャ内に提供され、ポリシー情報886、フロールートテーブル882及び分散マネージャモジュール880を含む。一実施形態において、分散マネージャモジュール880は、オープンソースコントローラ825のためのプラグインであってよい。ポリシーマネージャ870は、OpenFlowコントローラ825、より具体的には分散マネージャモジュール880と通信するように構成され得る。他の機能に加えて、ポリシーマネージャ870は、ポリシー情報のアップデートを、任意の適切な形式(例えばデータベース、テーブル、キュー、キャッシュ等)で格納され得るポリシー情報886に対して提供することができる。図示される実施形態では、OpenFlowコントローラ825は、仮想サーバ800の外部にある仮想ネットワークインフラストラクチャ内のいずれかの場所で構成され得る。別の実施形態では、OpenFlowコントローラ825は、OpenFlowスイッチ822とともに仮想サーバ800内で構成され得る。
【0082】
OpenFlowコントローラ825では、フロールートが生成されるとき、ソースルートは暗黙的である。これは、スイッチハードウェアが、フロー内の(最初のパケットの後の)全てのパケットに自動的に対処するのを可能にし、各パケットを処理するというニーズを取り除くことができる。
【0083】
図8では、例示のフローセグメント(すなわち、フロー1、フロー2及びフロー3)が、分散マネージャモジュールを有するOpenFlowスイッチを用いる仮想セキュリティシステムの可能性ある動作シナリオを説明するように示されている。説明の目的で、VM830−1がVM830−2への通信を開始すると想定する。VM830−1は初期の接続パケットをVM830−2に送信するよう試みることができる。OpenFlowスイッチ822は、初期の接続パケットを受信したことを示す制御パケットをOpenFlowコントローラ825に送信することができる。標準のソフトウェアがOpenFlowコントローラ825内で構成され、VM830−1からVM830−2へのフロールートを有するフローテーブルを構築することができる。分散マネージャモジュール880は、任意の標準のソフトウェアをオーバーライドすることができる。代わりに、分散マネージャモジュール880は、接続パケットのソースVM830−1に適用可能なポリシー情報886の1つ又は複数のポリシーを識別することができる。一実施形態において、ポリシー情報886を、データベース又はOpenFlowコントローラ825の他のメモリ要素内に格納してもよく、あるいはOpenFlowコントローラ825に対してアクセス可能な仮想ネットワークインフラストラクチャ内の任意の他の位置に格納してもよい。
【0084】
この例示のシナリオでは、ポリシー情報886内のポリシーは、VM830−1からのネットワークトラフィックが、IPS VSA840−1及びFW VSA840−3を通してルーティングされるべきことを示す。したがって、分散マネージャモジュール880は、3つのフローセグメント、すなわち、VM830−1からIPS VSA840−1へのフロー1と、IPS VSA840−1からFW VSA840−3へのフロー2と、FW VSA840−3からVM830−2へのフロー3を作成することができる。これらのフローセグメントを、フロールートテーブル882に格納することができる。フローセグメントの作成は、指定された接続のセキュリティルーティングが自動的に起こるようにする。分散マネージャモジュール880は、フローセグメント1、2及び3を、ポートの数及びレイヤ2(L2)情報の双方につなげて、提供されたルートの特異性を増加されることができる。
【0085】
ネットワークトラフィックが完成するか、接続がタイムアウトすると、OpenFlowコントローラ825はOpenFlowスイッチ822によって通知され得る。フロールートテーブル882内のフロールートセグメントを削除することができる。一実施形態において、分散マネージャモジュール880は、3つのフローセグメントをフロールートテーブル882内に格納するとき、これらのフローセグメントを関連付けることができる。別の実施形態では、分散マネージャモジュール880は、フローセグメントをポリシー情報886から再導出し、フローセグメントをフロールートテーブル882から削除することができる。
【0086】
別の実施形態において、3つのフローセグメントを、各フローセグメントが現れるにつれて徐々に、OpenFlowスイッチ822にプログラムしてもよい。これは、分散マネージャモジュール880による何らかの簿記(bookkeeping)を必要とする。この実施形態は、OpenFlowスイッチ822の特定の能力に依存し得る。
【0087】
図9に移ると、
図9は、一実施形態に係るOpenFlowコントローラのプロセスのための方法を示す簡単なフローチャートである。フロー900は、少なくとも部分的に、OpenFlowスイッチ822がゲスト仮想マシンから新たなネットワークトラフィックを受け取るときに、OpenFlowコントローラ825内の分散マネージャモジュール880によって実行される処理とすることができる。
【0088】
902において、OpenFlowコントローラ825は、仮想サーバのゲスト仮想マシンのためのポリシーを受信する。これらのポリシーは、ポリシー情報886とともに格納される、更新されたポリシー又は新たなポリシーであり得る。904において、分散マネージャモジュール880は、OpenFlowスイッチ822によって受信される、ゲストVM830−1のようなある仮想マシンから、ゲストVM830−2のような別の仮想マシンへのパケットについて、制御メッセージを受信する。
【0089】
906において、分散マネージャモジュール880は、パケットのセキュリティポリシーをポリシー情報886から決定する。908において、ソースゲストVMから宛先ゲストVMへのフロールートを生成するOpenFlowコントローラ825のいずれかの既存のロジックを、オーバーライドすることができる。潜在的に複数のフロールートセグメントを有する新たなフロールートを、分散マネージャモジュール880によって作成して、OpenFlowスイッチ822に提供することができ、新たなフロールートに従ってパケットをルーティングすることができる。OpenFlowスイッチ822は、スイッチ822内の他のフローと区別するのに十分な(ポート数のような)仕様により、各フローセグメントを独立のフローと見なす。新たなフロールートは、1つ又は複数の仮想セキュリティ装置を含んでよく、パケットは、実際の宛先であるゲストVM830−2に転送される前に、これらの仮想セキュリティ装置に送信される。
【0090】
図10及び
図11はそれぞれ、仮想サーバ1000及び1100における
図1のインターセプトレイヤ190のハードウェアインターセプト機構の例示の実装を示している。ハードウェアインターセプト機構において、ハイパーバイザは、仮想ネットワークインタフェースカードを物理ネットワークインタフェースに「配線(wire)」するように指示される。これは、物理的な配線でははく、仮想的な配線であり、ゲストVM上のvNICから物理的なNICへ流れるネットワークトラフィック経路を再構成する。より具体的には、ハイパーバイザは、指定されたインタフェースについてその仮想化機能を実施することを回避するように構成される。その結果、ゲストVMは物理的なハードウェアへの直接アクセスを得ることができる。物理インタフェースのハードウェアは、所望のスイッチング及びインターセプトを実装する。
【0091】
ハードウェアのインターセプトを実装するための1つの機構は、データプレーン直接メモリアクセス(DMA:direct memory access)機構を使用してデータを仮想マシンから転送することである。DMAは、コンピュータの特定のハードウェアサブシステムが、プロセッサ(すなわち、中央処理ユニット(CPU))とは独立にシステムメモリアクセスするのを可能にする機能である。
【0092】
DMAを実装する例は、標準のSR−IOV(Single Root Input/Output Virtualization)機構である。SR−IOVは、仮想マシンに及び仮想マシンからデータを移動させるプロセスからハイパーバイザを取り除く。代わりに、データは、仮想マシンに及び仮想マシンから直接移動され、従って仮想スイッチを含め、ハイパーバイザをバイパスする。SR−IOVは、物理的なNIC上の1つ又は複数のインタフェースが、仮想マシンへの直接の2方向のDMAチャネル(仮想機能と呼ばれる)を実装することを許容する。したがって、単一の物理的なNICは、仮想マシン又は仮想スイッチのいずれかにより直接的に使用可能な、多数の仮想インタフェースを公開する能力を有する。一部かのハイパーバイザ及び一部のNICは、SR−IOV仕様を実装する。NIC及びハイパーバイザと互換性のあるSR−IOVを使用することにより、所与の仮想マシンからのパケットは、物理的なNICへとインターセプトされ得る(すなわち、ハイパーバイザ及びその仮想スイッチをバイパスする)。インターセプトされたパケットは、NIC内の組み込み式L2スイッチにより、ある仮想機能から別の仮想機能へリダイレクトされ得る。他の仮想機能を、仮想マシンからインターセプトされたトラフィックを受信する分散マネージャに割り当てることができる。
【0093】
一部の物理的なNICでは、複数のSR−IOVチャネルは、物理的なNIC上のスイッチへつながる。この場合において、各仮想マシン又は仮想スイッチからの仮想機能を、例えばこれらがそれぞれ分散マネージャに専用の仮想機能へリダイレクトするようにNICを再構成することにより、調整することができる。これは、分散マネージャが、専用のハードウェアなしでパケットをインターセプトして処理し、ルーティングするのを可能にする。
【0094】
図10において、ハイパーバイザ1020は、ゲスト仮想マシン1030−1〜1030−4と、仮想スイッチ1022及び1022−2と、分散マネージャ1080及び1つ若しくは複数のVSA1040を含む他の仮想マシンとともに示されている。
図10では、インターセプトは、仮想マシンレイヤではなく仮想スイッチレイヤで構成される。したがって、インターセプトは仮想スイッチの間で生じる。
図10において、テナント1035−1は、ゲスト仮想マシン(VM)1030−1、1030−2及び1030−3を含み、テナント1035−2は、ゲスト仮想マシン(VM)1030−4を含む。仮想NIC(vNIC)は、ゲストVM及び分散マネージャの各々が、vスイッチ1022−1及び1022−2の一方又は双方と通信するのを可能にする。例示の実装では、テナント1035−1と1035−2は、戦略的に及び/又は論理的にグループ化されてゲストVM(例えば金融グループ、アカウンティンググループ、エンジニアリンググループ)を表すことができる。テナント1035−1内の仮想マシンのようなテナント内のマシンの間のトラフィックはインターセプトされず、したがってセキュリティ装置による影響は受けない。このため、仮想マシンをvスイッチに注意深く割り当てることが望ましい。
【0095】
ゲストVM1030−1〜1030−3のvNICは、パケットをvスイッチ1022−1及び1022−2に送信し、vスイッチ1022−1及び1022−2からパケットを受信する。インターセプトレイヤでは、物理ネットワークインタフェースカード(NIC)1010は、SR−IOVを実行し、ポート1014、レイヤ2(L2)スイッチ1012及び仮想機能(VF)1016−1〜1016−3を含む。VF1016は、vスイッチ1022によるゲスト1030への接続を可能にする。したがって、この実装では、VF1016からの接続は、直接ゲストVM1030に対するものではなく、vスイッチ1022のエッジレイヤに対するものである。
【0096】
分散マネージャ1080は、所定のポリシーに従った特定のゲストVM1030からのフローのルーティングを可能にするように提供される。所定のポリシーに基づいて、1つ又は複数の仮想セキュリティ装置1040は、仮想サーバ1000において構成され得る。さらに、分散マネージャ1080は、上述のソースルーティング機構のうちのいずれかを実装して、パケットを、ポリシーで指定されるVSAに所望の順序でルーティングしてよい。
【0097】
説明の目的で、VM1030−1からVM1030−4への例示のパケットフローを検討する。VM1030−1がパケットをVM1030−4に送信するとき、パケットは、vスイッチ1022−1を通って流れて、vスイッチ1022−2を通ってVM1030−4に接続する必要がある。インターセプトレイヤは、パケットを、ハードウェア(すなわちNIC1010)を通過させるように構成される。パケットは、VF1016−1を通って物理的なL2スイッチ1012へと流れる。L2スイッチ1012は、パケットを分散マネージャ1080に送信する。
【0098】
分散マネージャ1080は、上述のソースルート機構のいずれかを用いて構成され得る。ポリシーが、VM1030−1からのパケットフローに適用可能である場合、パケットは、ポリシーに従って1つ又は複数のVSA1040を通じてルーティングされ、適切なセキュリティ検査が行われる。パケットが1つ又は複数のVSAセキュリティ検査を成功裏に通過する場合、パケットは分散マネージャ1080に戻るようルーティングされ、分散マネージャ1080は、その後パケットをvスイッチ1022−2へとルーティングすることができる。パケットはその後、vスイッチ1022−2から宛先VM1030−4に転送される。
【0099】
VM1030−4からVM1030−1へ戻るネットワークトラフィックも、適切なセキュリティコントロールを通してインターセプトされてルーティングされ得る。VM1030−4からのパケットは、vスイッチ1022−2を通って流れて、vスイッチ1022−1を通ってVM1030−1に接続する必要がある。(例えばSR−IOVを使用する)インターセプトレイヤは、パケットがNIC1010を通過するようにする。パケットは、VF1016−3を通って物理的なL2スイッチ1012へと流れる。L2スイッチ1012は、VF1016−3を介して分散マネージャ1080にパケットを送信する。
【0100】
ポリシーが、VM1030−4からのパケットフローに適用可能である場合、パケットはその後、ポリシーに従って1つ又は複数のVSA1040を通ってルーティングされ、適切なセキュリティ検査が行われる。パケットが1つ又は複数のVSAセキュリティ検査を成功裏に通過する場合、パケットは分散マネージャ1080に戻るようルーティングされ、分散マネージャ1080は、その後パケットをvスイッチ1022−1へとルーティングすることができる。パケットはその後、vスイッチ1022−1から宛先VM1030−1に転送される。
【0101】
一部の実施形態において、分散マネージャは、新たなフローの開始時などに、そのフローにはセキュリティ検査が必要とされないと決定することがある。一部の実施形態において、NIC1010のハードウェアは、これらのフロー内の後続のパケットを、分散マネージャを通して流す必要なく、その宛先のvスイッチに直接ルーティングする構成をサポートする。
【0102】
図11において、ハイパーバイザ1120は、ゲスト仮想マシン1130−1及び1130−2と、仮想スイッチ1122及び1122−2と、分散マネージャ1180及び1つ若しくは複数のVSA1140を含む他の仮想マシンとともに示されている。
図11では、インターセプトは、部分的に仮想マシンレイヤで構成され、ここで、ゲストVM1130−2のvNICは、L2スイッチ1112を有する物理ネットワークインタフェースカード(NIC)1110に配線される。したがって、NIC1110は、ゲストVM1130−2について所望のスイッチング及びインターセプトを実装する。SR−IOVは、NIC1110上で動作して、ハイパーバイザ1120及びその仮想スイッチ(vスイッチ)1122を、ゲストVM1130−2に及びゲストVM1130−2からデータを移動させるプロセスから取り除く。仮想機能1116−2は、ゲストVM1130−2への直接の2方向のDMAチャネルとして構成される。したがって、vスイッチ1122−1のようなハイパーバイザ1120内の仮想スイッチは、ゲストVM1130−2によってバイパスされる、ゲストVM1130−1からのネットワークトラフィックは、NIC1110へ効率的にインターセプトされる。ゲストVM1130−1からのネットワークトラフィックのインターセプトは、仮想スイッチレイヤにおけるものであり、
図10のゲストVM1030に関連して説明されるように構成され得る。L2スイッチ1112のような外部のルーティング機構は、パケットを双方のゲスト1130から分散マネージャ1180へ転送することができる。
【0103】
図11では、分散マネージャ1180は、所定のポリシーに従った特定のゲストVM1130からのフローのルーティングを可能にするように提供される。所定のポリシーに基づいて、1つ又は複数の仮想セキュリティ装置1140は、仮想サーバ1100において構成され得る。さらに、分散マネージャ1180は、上述のソースルーティング機構のうちのいずれかを実装して、パケットを、ポリシーで指定されるVSAに所望の順序でルーティングしてよい。
図11の例示の図では、分散マネージャ1180が、vスイッチ1122−2を通してNIC110へ及びVF116−3に接続される。これは、分散マネージャ1180が、NIC1110への直接接続を有するゲストVM1130−2と通信することを可能にする。
【0104】
図12は、
図10及び
図11に示されるようなハードウェアインターセプトと関連付けられる、幾つかの潜在的な動作を示す簡単なフローチャートである。フロー1200は、仮想サーバのハードウェアレイヤにおいて実装されるインターセプト機構によって実行され得る潜在的な動作を示す。説明の容易性のために、フロー1200の以下の説明では、
図11のコンポーネントを参照する。
【0105】
1202において、L2スイッチ1112は、ソースゲストVM1130−1からパケットを受信する。パケットは、宛先ゲストVM1130−2にアドレス指定され、仮想機能(VF)1116−1を介してL2スイッチ1112によって受信される。パケットは、VF1116−3及びvスイッチ1122−2を介して分散マネージャ1180に転送される。一実施形態において、NIC1110は、分散マネージャ1180への適切なルーティングを可能にするようL2スイッチへの変更を許可することができる。ゲストVM1130−1からのパケットは、分散マネージャに接続される特定のハードウェアポート(すなわちキュー)に自動的にルーティングされる。したがって、NIC1110は、NICへとつながるSR−IOV機能を許可するように修正される。
【0106】
分散マネージャ1180は、パケットを受信すると、そのパケットに関連付けられるパケットストリームが、任意のセキュリティポリシーの対象であるかどうかを判断する。セキュリティポリシーの対象である場合、分散マネージャ1180は、パケットを、上述のソースルーティング機構のいずれかを使用して、ポリシーで指定されたVSAにルーティングするように構成され得る。パケットが、ルーティングされるVSAからのセキュリティ検査を成功裏に通過する場合、分散マネージャ1180は、VF1116−3を介してスイッチ1112に戻すようにパケットを送信することができる。
【0107】
1206において、パケットが、スイッチ1112によって、VF1116−3を介して分散マネージャ1180から受信されなかった場合、フロー1200は終了する。しかしながら、パケットをVF1116−3を介して受信した場合、次いで1208において、パケットは、元の宛先ゲストVM1130−2へルーティングされ得る。この場合、パケットは、NIC1110のハードウェアからゲストVM1130−2に1116−2を介して直接転送され、したがって、vスイッチ1122−1及び1122−2をバイパスする。
【0108】
図13は、内部インターセプト機構を提示するハイパーバイザを用いる例示の実装を図示しており、この機構において、コードモジュールは、ハイパーバイザの仮想スイッチにより、ネットワークトラフィックが仮想スイッチを通過するようにさせることができる。この実装では、分散マネージャモジュールは、仮想スイッチ自体とともに配置され、そして仮想スイッチを通って流れる全てのパケットへのアクセスを有することができる。加えて、分散マネージャモジュールは、パケットのソース仮想マシンに適用されるポリシーによって必要とされる通りに、パケットを所望の仮想セキュリティ装置を通して流すように構成されてよい。
【0109】
図13において、仮想サーバ1300は、ゲスト仮想マシン(ゲストVM)1330−1及び1330−2とともに示されている。仮想セキュリティ装置1340は、セキュリティ検査を仮想サーバ1300のゲストVMからのネットワークトラフィックに対して適用するように構成される1つ又は複数のVSAを表す。仮想スイッチ(vスイッチ)1322は、インターセプトコードモジュール1390及び分散マネージャモジュール1380を含む。ポリシーマネージャ1370は、仮想サーバ1300の又は別の仮想サーバの別の仮想マシンとして構成されてよい。あるいは、ポリシーマネージャ1370は、物理サーバにおいて直接的にホストされるシステム全体の管理サービスとともに含まれる可能性がある。仮想サーバ1300及びそのコンポーネントは、
図3の仮想サーバ300に関連して説明したものと同じ又は同様の手法で構成され得る。
【0110】
例示の図では、ゲストVM1330−1がメッセージをゲスト1330−2に送信すると想定する。ネットワークフローのパケットは、1301において、ゲストVM1330−2へ送信されるが、vスイッチ1322内のインターセプトコードモジュール1390によってインターセプトされる。インターセプトコードモジュール1390は、1302において、インターセプトしたパケットを分散マネージャモジュール1380に送信する。分散マネージャモジュール1380はポリシーを取得し、パケットをどこにルーティングすべきかを決定する。例示の実施形態では、ポリシーは、ポリシーマネージャ1370によって継続的に更新されるポリシーデータベースから取得されることがあり、あるいはポリシーマネージャ1370にクエリすることによって取得されることもある。
【0111】
分散マネージャモジュール1380は、ポリシーの各VSAについてネットワークアドレス(例えばMACアドレス)を含むようパケットを修正してよい。あるいは、パケットを、VSAを通してルーティングされる別のvスイッチに転送することもできる。1303において、分散マネージャモジュール1380は、パケットを、選択された1つ又は複数のVSA1340に送信する。セキュリティ検査の全てが成功裏に実行される場合、次いで1304において、パケットは、分散マネージャモジュール1380に送信されて返される。分散マネージャモジュール1380は、次いでパケットをその宛先VM1330−2に転送することができる。
【0112】
別の可能性あるインターセプト機構は、スイッチング要素を、アップリンクポート上の分散マネージャにより、プライベート仮想ローカルエリアネットワーク(PVLAN)として実装することに関連する。PVLANでは、1つのポートをアップリンクポートとして指定することができる。任意の他のポートから送信されたパケットは常に、宛先のメディアアクセスコントロール(MAC)アドレス又はVLANに関わらず、アップリンクへルーティングされる。アップリンクポートを通じて導入されるパケットは、スイッチのために通常通り(例えば宛先MACアドレスに従って)配信される。
【0113】
この構成では、全てのパケットが分散マネージャに伝送され、分散マネージャは、元のMACアドレスに基づいて、パケットを任意の他の仮想マシンにルーティングすることができる。このインターセプト機構では、全てのパケットは、分散マネージャへ及び分散マネージャからの少なくとも1つの付加的なホップを必要とする。
【0114】
図14に移ると、簡略化された対話図が、仮想セキュリティシステムにおける仮想マシンの変化に関連付けられる潜在的な動作を示している。より具体的には、
図14は、仮想クラウドインフラストラクチャ内において新たな仮想マシンが展開されるか、既存の仮想マシンが移動されるシナリオを図示している。加えて、
図14は、セキュリティポリシーが更新されるか、仮想クラウドインフラストラクチャ内の仮想マシンに追加されるシナリオも図示している。
図14の対話的コンポーネントは、
図3のポリシーマネージャ370、分散マネージャ380、インターセプト機構390及び仮想セキュリティ装置(VSA)340を含む。また、(ポリシーレイヤ170の)ポリシーマネージャ370及び(分散レイヤ180の)分散マネージャ380と対話することができる
図1のクラウドマネージャ150も含まれる。
図14のコンポーネントは、本明細書で開示されるような上記コンポーネントの様々な実施形態のいずれかを含む。
【0115】
1402において、ユーザは、既存のゲスト仮想マシンを、仮想クラウドインフラストラクチャ内のある場所から別の場所へクラウドマネージャ150を介して移動させる。例えばゲスト仮想マシンは、それぞれ別個のハイパーバイザ及び異なる基本ハードウェアを有する、第1の仮想サーバから仮想サーバ300へ移動され得る。クラウドマネージャ150は、ある物理サーバから別のサーバへの仮想マシンのライブマイグレーションを提供する。この能力を提供する1つのソリューションは、カルフォルニアのパロアルトのVMware(登録商標)社によって提供されるのVMware(登録商標)vMotion(登録商標)である。
【0116】
別のシナリオでは、1404において、ユーザは、クラウドマネージャ150を介して新たなゲスト仮想マシンを仮想クラウドインフラストラクチャへ展開してもよい。クラウドマネージャ150は、仮想サーバ300において新たなゲスト仮想マシンを割り当てる。更に別の例では、ユーザは、仮想クラウドインフラストラクチャ内の既存の仮想マシンに対して、セキュリティポリシーを更新するか追加してもよい。新たな仮想マシンを追加し、既存の仮想マシンを移動させるための機構は、本明細書において前述したように、クラウドマネージャ(例えば
図1のクラウドマネージャ150)によって管理され得る。しかしながら、新たなセキュリティポリシーを、追加された新たなゲストVMへ追加するか既存のゲスト仮想マシンへ追加するための機構は、別個に実装することが可能である。例えばセキュリティマネージャ(例えば
図1のセキュリティマネージャ175)は、ユーザインタフェースを提供して、許可されたユーザが、新たな又は既存のゲスト仮想マシンに対してセキュリティポリシーを更新又は追加するのを可能にすることができる。セキュリティマネージャは、更新されたセキュリティポリシー又は新たなセキュリティポリシーをポリシーマネージャに通信するか、直接セキュリティポリシーデータベース(例えばVMMセキュリティポリシーデータベース376)の更新を可能にすることもできる。参照の容易性のため、
図14は、ゲスト仮想マシンを追加又は移動させることに関連して更に説明される。しかしながら、
図14で説明される動作の1つ又は複数は、既存のゲストVMについてセキュリティポリシーが追加又は更新されるときに実行されることもあることが理解されよう。
【0117】
各シナリオにおいて、ポリシーマネージャ370は、新たなゲスト仮想マシンが展開されていること又は仮想マシンが仮想クラウドインフラストラクチャ内で移動されていることを示す、クラウドマネージャ150からの信号を検出することができる。一実施形態において、アプリケーションプログラミングインタフェース(API)を使用して信号を検出してもよい。信号を検出すると、ポリシーマネージャ370は、ゲスト仮想マシンが展開又は移動されている場所(例えば仮想サーバ)におけるインターセプト機構390の作成及び/又は構成を容易することができる。ポリシーマネージャ370は、適切な仮想セキュリティ装置340の作成及び/又は構成も容易にすることができる。
【0118】
1406において、マネージャ370は、クラウドマネージャ150にクエリしていずれかのセキュリティコントロールが、ゲスト仮想マシンのポリシーによって要求されるかどうかを判断することができる。例えばユーザは、侵入防止システム(IPS:intrusion prevention system)及びファイヤウォール((FW)がゲスト仮想マシンからの特定のネットワークトラフィックに適用されることを要求することがある。
【0119】
セキュリティコントロールがゲスト仮想マシンについて指定される場合、次いで1408において、ポリシーマネージャは分散マネージャ380にクエリすることがある。分散マネージャ380は、ゲスト仮想マシンが展開又は移動されている場所において、仮想サーバ上の仮想マシンとして構成され得る。クエリは、ゲスト仮想マシンについての指定されたセキュリティコントロールが、仮想セキュリティ装置(VSA)340の形で、仮想サーバ上で既にプロビジョニングされているかどうかを判断することができる。要求されたセキュリティコントロールが仮想サーバ内に存在する場合、次いで1422において、分散マネージャ380は、要求されたVSAが存在することを示すメッセージを、ポリシーマネージャ370に送信することができる。
【0120】
1412において、ポリシーマネージャ370は、適切なVSAがセットアップされるまで、ゲストVMをブロックして、ゲストVMが仮想サーバ300内で動作するのを許可しない。一部の実施形態において、ゲストVMをブロックする機構が存在しないことがあり、ステップ1412は、ゲストVMへのトラフィック又はゲストVMからのトラフィックをブロックするか他の方法でルーティングすることにより、VSAが起動している間にセキュリティの公開(security exposure)を制限しようとすることがある。例えばゲストVMが別の仮想サーバへ移動されている場合、このゲストVMからのトラフィックは、新たなVSAが実行するまで既存のVSAを使用するように、トロンボーンルーティングを使用するなどして、別のサーバに戻るようルーティングされる可能性がある。1414において、ポリシーマネージャは、必要であれば、分散マネージャ380にインターセプト機構を構成するよう要求を送信する。一部の実施形態において、インターセプト機構は、分散マネージャ380によって構成され得る。
【0121】
1416において、分散マネージャはインターセプト機構390を構成する。典型的に、インターセプト機構390は、仮想スイッチ内で構成されるか、本質的にOpenFlowスイッチの実施形態において存在し得る。1418において、分散マネージャはまた、クラウドマネージャ150に、必要なVSAを作成するよう要求を送信することができる。要求を受信すると、クラウドマネージャ150は、1418において、ゲストVMのセキュリティポリシー内で指定されるVSAを動的に作成することができる。クラウドマネージャ150は、仮想化マシンプレートを有する画像ストアを使用することができ、これによりクラウドマネージャ150は本質的に、VSAをコピーして、仮想サーバ300内に新たなVSAを作成することができる。
【0122】
一部の実施形態において、インターセプト機構は、VSAが割り当てられた後に構成され得る。例えばハードウェアインターセプトでは、VSAが割り当てられると、特定の仮想スイッチ及びvNICは、ネットワークトラフィックをハードウェアインターセプト構成に向かわせるように再構成される(又は「配線し直す」)必要がある。
【0123】
適切なVSAが作成されると、1422において、分散マネージャ380は、準備信号(ready signal)をポリシーマネージャ370に送信する。ポリシーマネージャは次いで、1424において、分散マネージャ上のセキュリティポリシーを更新する。1426において、分散マネージャ380は、新たなVSA(又は既存のVSA)を構成する。1428において、分散マネージャ380は、ポリシーマネージャ370に、VSAが作成されて構成されていること及びインターセプト機構390が構成されることを示すメッセージを送信することができる。1430において、ポリシーマネージャ370は、ゲストVMが実行するのを許可することができる。
【0124】
別のシナリオでは、新たなゲストVMが、セキュリティコントロールが未だ構成されていない場合、仮想サーバに展開されてもよい。したがって、分散マネージャは、ターゲットの仮想サーバ内には作成されていない。この例では、ポリシーマネージャ370は、クラウドマネージャ150に、ターゲットの仮想サーバにおいて分散マネージャを作成するよう要求を送信し得る。分散マネージャを、仮想マシンとして構成することができるので、クラウドマネージャ150は、分散マネージャのための仮想マシンテンプレートを使用して、分散マネージャをコピーし、ターゲットの仮想サーバ内に新たな分散マネージャを作成することができる。
【0125】
別の実施形態では、ポリシーマネージャ370及び分散マネージャ380の機能の一部又は全てを、単一の仮想マシンに統合してもよい。さらに、ポリシーマネージャ370及び/又は分散マネージャ380の機能の一部又は全てを、VSAと結合してもよい。1つの特定の実施形態では、ポリシーマネージャは、その個別の機能を保持することがあり、分散マネージャの機能は、あるVSAと結合されるか、あるいは2つ又はそれ以上のVSAにわたって分散されてもよい。別の実施形態では、分散マネージャの機能の全てではないがその一部が、ポリシーマネージャによって実行されてもよい。統合されたポリシーマネージャは、変更されているゲストVM(例えばターゲットの仮想サーバに追加又は移動されているゲストVM、既存のゲストVMのために要求された新たな又は更新されたポリシー)を検出することができる。統合されたポリシーマネージャは、クラウドマネージャ150と通信して、セキュリティポリシーがゲストVMに当てはまるかどうかを決定することができる。ポリシーがゲストVMに当てはまる場合、統合されたポリシーマネージャは、ポリシーで指定されるVSAが仮想サーバ内に存在するかどうかを判断し、ポリシーに整合するようVSAを作成する必要があるときは、ゲストVMをブロックすることができる。また、統合されたポリシーマネージャは、特定の実施形態ではインターセプト機構を構成することができ、クラウドマネージャ150に、いずれか必要とされるVSAを作成するよう要求することができ、これらのVSAを構成することができる。適切なセキュリティコントロールが仮想サーバ内で構成されると、統合されたポリシーマネージャは、ゲストVMが実行するのを許可することができる。
【0126】
図15は、ポリシーマネージャのプロセスの実施形態を示す簡略化したフローチャートである。参照の容易性のため、
図3のポリシーマネージャ370及び他のコンポーネントが参照されるが、フロー1500は、本明細書で説明されるポリシーマネージャ及び仮想セキュリティシステムの様々な実施形態に適用可能である。一実施形態では、フロー1500の1つ又は複数の動作は、ポリシーマネージャ370内のポリシーモジュール374によって実施されてよい。
【0127】
1502において、ポリシーマネージャ370は、通信システム100の仮想クラウドインフラストラクチャ内のゲスト仮想マシン(VM)への変更を示す信号を検出する。ポリシーマネージャ370によって検出することができるゲストVMへの変更の一例は、既存のゲストVMが、ある仮想サーバから、異なるハイパーバイザ及び異なる基礎のハードウェアを有する別の仮想サーバへ移動されることを含む。検出することができる変更の別の例は、新たなゲストVMが仮想サーバに追加されることを含む。検出することができる更なる例には、既存のゲスト仮想マシンについて要求される新たなポリシー又は更新されたポリシーを含む。
【0128】
1504において、セキュリティコントロールが、ゲストVMのポリシーによって指定されているかどうかに関して判断が行われる。一実施形態において、ポリシーマネージャ370は、クラウドマネージャにクエリして、セキュリティポリシーがゲストVMに当てはまるかどうかを判断してもよい。一実施形態において、ポリシーマネージャ370は、マスタセキュリティポリシーデータベース(例えばVMMセキュリティポリシーデータベース376)又はクラウドマネージャとは別個お他のモジュールにクエリをして、セキュリティポリシーがゲストVMに当てはまるかどうかを判断することができる。セキュリティポリシーは、1つ又は複数のセキュリティコントロールを、ゲストVMの特定のネットワークトラフィックに適用する要件を含むことができる。セキュリティコントロールは、IPS、FW、DLP等のような様々なタイプのセキュリティを実装する仮想セキュリティ装置の形式とすることができる。
【0129】
セキュリティコントロールが指定されると、1506において、ポリシーマネージャ370は、ゲストVMが追加又は移動される仮想サーバ内の既存のVSAを識別するよう、クエリを送信する。1508において、ポリシーで指定されたVSAが仮想サーバ内に存在しないと判断された場合、次いで1510において、ポリシーマネージャ370は、ゲスト仮想マシンが実行するのをブロックする。
【0130】
一部の実施形態では、1512において、ポリシーマネージャ370は、仮想サーバ上に適切なインターセプト機構を構成するよう、分散マネージャ380に要求を送信してもよい。例えばハードウェアインターセプト構成は、特定のvNIC及びvスイッチを配線し直すことを必要とすることがある。他の実施形態では、インターセプト機構は、別個にセットアップされて構成されてもよい。例えばOpenFlowスイッチ実装は、ハードウェアインターセプト機構で構成されてもよいが、必ずしもこれを含む必要はない。
【0131】
1514において、ポリシー指定されたVSAが作成され、かつインターセプト機構が仮想サーバ上に構成されるかどうかを判断する。一実施形態において、分散マネージャ380からの準備信号は、VSAが作成され、かつインターセプト機構が構成されることを示す。VSAが作成され、かつインターセプト機構が構成される場合、あるいは以前に1508において必要なVSAが仮想サーバ内に既に存在していると判断された場合、次いで1516において、ポリシーマネージャは、分散マネージャ上のセキュリティポリシーを更新することができる。ポリシーは、ゲストVMのどのネットワークトラフィックフローを、どのVSAにルーティングすべきかを指示することができる。
【0132】
分散マネージャにおいてセキュリティポリシーが更新されると、1518において、ポリシーマネージャは、新たに展開されたゲストVM又は新たなゲストVMが仮想マシン上で動作するのを許可することができる。
【0133】
検出することができる変更に例は、仮想サーバからのゲストVMの除去又は削除を含む。この場合、一部の変形がフロー1500内に生じる。最初に、ポリシーマネージャは、削除されたゲストVMによって以前に使用されたセキュリティコントロールが、仮想サーバ上の他のゲストVMにまだ必要であるかどうかを判断する。これらのセキュリティコントロール(例えば1つ又は複数のVSA)が他のゲストVMによってまだ使用されている場合、これらのセキュリティコントロールは仮想サーバ上に残る。
【0134】
しかしながら、既存のVSAのいずれも仮想サーバ上で必要とされない場合、これらのVSAは、除去されるか、他の方法で仮想サーバ上で設定解除(de-provision)され得る。加えて、ハードウェアインターセプト機構(例えばSR−IOV)が、削除されたゲストVMのために構成されている場合、vスイッチ及びvNICが、仮想サーバ上の削除されたゲストVMについてハードウェアインターセプト機構の前に接続されていたのと同じ方法で再接続されるように、ハードウェアインターセプト機構が再構成される。
【0135】
図16は、分散マネージャの処理の実施形態を示す簡単なフローチャートである。参照の容易性のために、
図16の説明では、
図3の分散マネージャ380及び他のコンポーネントを参照するが、フロー1600は、本明細書で説明される分散マネージャ及び仮想セキュリティシステムの様々な実施形態に適用可能である。一実施形態において、フロー1600の1つ又は複数の動作は、分散マネージャ380内のプロビジョニングモジュール384によって実行され得る。
【0136】
1602において、仮想サーバ300の分散マネージャ380は、セキュリティコントロール情報についての要求を受信する。一実施形態において、この要求は、ポリシーマネージャ370からのものであり、もしあれば、どの仮想セキュリティ装置(VSA)が仮想サーバ300上で既に構成されているかを決定する。この要求は、ポリシーマネージャが、ゲストVMがクラウドマネージャ150により仮想サーバ300に追加されていると決定したことに起因することがある。このシナリオでは、ゲストVMは、新たなゲストVMが、許可されたユーザによりクラウドマネージャ150を介して要求される場合に、仮想サーバ300に追加されることがある。別のシナリオでは、ゲストVMは、該ゲストVMが別の仮想サーバから仮想サーバ300に移動されている場合に仮想サーバ300に追加されることがある。
【0137】
ポリシーマネージャ370は、もしあればどのVSAが、仮想サーバ300に追加されているゲストVMのポリシー内で指定されているかを識別する情報を提供することもある。1604において、分散マネージャ380は、セキュリティコントロール情報をポリシーマネージャ370に提供することができる。この情報は、もしあれば、仮想サーバ300上に構成される特定のVSAを識別することができる。
【0138】
1606において、セキュリティコントロールが存在しないと決定される場合、次いで1608において、分散マネージャ380は、インターセプト機構の一部の実施形態について、仮想サーバ300内でインターセプト機構を構成する要求を受信することがある。1610において、分散マネージャ380は、仮想サーバ300内においてインターセプト機構を構成することができる。1612において、分散マネージャ380は、ゲストVMについてのポリシー内で指定されるVSAを作成するという要求を、クラウドマネージャ150に送信することもできる。
【0139】
1614において、分散マネージャ380は、要求されたVSAが仮想サーバ300内で作成されることを指示するメッセージを、ポリシーマネージャ370に送信することができる。このメッセージは、要求されたVSAが仮想サーバ300内で作成された後、あるいはポリシー指定されたVSAが仮想サーバ300内に既に存在すると1606で判断された場合に送信することができる。
【0140】
1616において、分散マネージャ380が、ポリシーマネージャ370から、仮想サーバ300に追加されているゲストVMについてのポリシーアップデートを受信することがある。ポリシーアップデートを、VMセキュリティポリシーデータベース内に格納することができ、またポリシーアップデートは、特定のフローに適用する特定のVSAに関するルール及びVSAがこれらのフローに適用されることになる順序を含むことができる。
【0141】
図17A〜
図17Cに移ると、
図17A〜
図17Cは、ゲスト仮想マシン(VM)が仮想クラウドインフラストラクチャ1700内で移動され、SR−IOVのようなハードウェアインターセプト機構を使用してネットワークトラフィックをインターセプトするときの仮想セキュリティシステムの順次処理を視覚的に示すブロック図である。仮想クラウドインフラストラクチャ1700は、2つの仮想サーバ1710及び1810を含み、これらは物理スイッチ1714を介して、1つ又は複数のそれぞれの仮想ネットワークインタフェースカード(vNIC)1724及び1824を通して通信することができる。各仮想サーバ1710及び1810は、1つ又は複数のそれぞれのvスイッチ1722及び1822を有するようにも構成され得る。
【0142】
仮想サーバ1710は、ポリシーマネージャ1770及び分散マネージャ1780も含む。ポリシーマネージャ1770及び仮想サーバ1810は、
図3のポリシーマネージャ370及び分散マネージャ380に関連して説明した通りに構成されてよい。
【0143】
図17Aを参照すると、ゲスト仮想マシン(VM)が仮想サーバ1710において作成される。このゲストVMは、vスイッチ1722−1を介して仮想サーバ1710内の他のゲストVMと通信してもよい。また、仮想サーバ1810のような他のサーバ上のゲストVMと通信してもよい。ゲストVM1730からのネットワーク通信は、vスイッチ1722−1、vNIC1724−1、物理スイッチ1715、vNIC1824−1及びvスイッチ1822−1を介して仮想サーバ1810に送信され得る。
図17Aでは、ゲストVM1730についてセキュリティコントロールはアクティブ化されない。より具体的には、ゲストVM1730のためのセキュリティポリシーは作成及び/又は実装されていない。
【0144】
図17Bは、ゲストVM1730について、新たなセキュリティポリシーを作成した結果を図示している。一例において、許可されたユーザは、ポリシーマネージャ1770のVMMセキュリティポリシーデータベースを更新することによって、セキュリティポリシーをゲストVM1730に追加することができる。任意の適切なユーザインタフェースが、セキュリティポリシーをポリシーマネージャ1770に追加するように構成され得る。一例において、セキュリティマネージャ(例えば
図1のセキュリティマネージャ175)は、ポリシーマネージャ1770のVMMセキュリティポリシーデータベースに対するセキュリティポリシーの更新を可能にするインタフェースを提供することができる。
【0145】
セキュリティポリシーは、ゲストVM1730からの特定のネットワークトラフィックフローが、指定のVSA(例えばIPS、FW、DLP等)を通って流れることを要求することがある。説明の簡潔性及び容易性のため、この例では、1つの仮想セキュリティ装置(VSA)のみがセキュリティポリシーによって要求される。しかしながら、本開示によると、複数のVSAがセキュリティポリシーによって指定される可能性もあることは明らかであろう。
【0146】
図17Bを参照すると、セキュリティポリシーがポリシーマネージャ1770に追加されると、VSA1740が仮想サーバ1710内で割り当てられてよい。一実施形態において、ポリシーマネージャ1770は、本明細書において上述した通り、分散マネージャ1780及びクラウドマネージャと通信して、仮想サーバ1710内のVSA1740のインスタンス化を容易にすることができる。例えば分散マネージャ1780は、仮想サーバ1710上にVSAを作成するよう要求をクラウドマネージャに通信することがある。
【0147】
直接I/O1705は、ゲストVM1730からのネットワークトラフィックのためのハードウェアインターセプト機構(例えばSR−IOV)を表す。vスイッチ1722−1は、vNIC1724−1から無線化(unwired)されて、ゲストVM1730からのネットワークトラフィックが、直接I/Oのハードウェアインターセプトを通ってVSA1740へと流れるようにする。一実施形態において、分散マネージャ1780は、vスイッチに接続されるvNICを再構成することによって、vスイッチ1722−1を無線化する。結果として、ゲストVM1730からのネットワークトラフィックは、ここでVSA1740によってカバーされる。
【0148】
単一のVSAを用いる実施形態では、
図17Aに示されるように、分散マネージャがVSA内で具現化され得る。複数のVSAが単一の仮想サーバ上で作成されるの許容する実施形態では、NICハードウェアは、NIC上のL2スイッチへの変更を許可し、適切なルーティングを可能にし得る。この実施形態では、ゲストVMからのパケットが自動的に、分散マネージャに接続される特定のハードウェアポート(すなわちキュー)にルーティングされる。したがって、NICは、NICへと流れるSR−IOV機構を許可にするように修正される。
【0149】
図17Cに移ると、
図17Cは、ゲストVM1730が仮想サーバ1810へ移動した結果を図示している。ポリシーマネージャ1770は、アプリケーションプログラミングインタフェース(SPI)を通してクラウドマネージャへの移動を検出し得る。新たなVSA1840が仮想サーバ1810内で作成されてよい。この場合も、一実施形態において、ポリシーマネージャ1770、分散マネージャ1780及びクラウドマネージャは、仮想サーバ1810上にVSA1840を作成するよう通信することができる。vスイッチ1822−1は、ゲストVM1730からのネットワークトラフィックを直接I/O1805及びVSA1840中に流すために、vスイッチロジックを再構成することにより、vNIC1824−1から無線化され得る。次いで、仮想サーバ1710内の古いVSA1740が除去されて、vスイッチ1722−1が、vNIC1724−1に対して無線化される。
図17Cに示されるような、ゲストVMが第2の仮想サーバに移動される実施形態では、第2の仮想サーバ内の分散マネージャは、新たなVSAを作成及び構成することと、第2の仮想サーバ上のvスイッチソフトウェアを再構成することとに関連する動作に対処することができる。
【0150】
説明の簡潔性及び容易性のために、この例では、1つの仮想セキュリティ装置(VSA)のみがセキュリティポリシーによって要求される。しかしながら、本開示によると、複数のVSAが仮想サーバ1710と1810との間で構成される可能性もあることは明らかであろう。これらの例では、分散マネージャは、本明細書で前述した通り、ソースルーティング機構を実装して、ゲストVM1730又は1830からのネットワークパケットを(例えばポリシーによって指定されるような)適切なVSAに適切な順序でルーティングすることができる。
【0151】
図18は、分散マネージャの処理の実施形態を示す簡略化したフローチャートである。参照の容易性のために、
図18の説明では、
図3の分散マネージャ380及び他のコンポーネントが参照されるが、フロー1800は、本明細書で説明される分散マネージャ及び仮想セキュリティシステムの様々な実施形態に適用可能である。一実施形態では、フロー1800の1つ又は複数の動作は、分散マネージャ380内のプロビジョニングモジュール384によって実施されてよい。
【0152】
1802において、仮想サーバ300の分散マネージャ380は、1つ又は複数の仮想セキュリティ装置(VSA)をポーリングして、仮想サーバ上の1つ又は複数のVSAの利用率を決定する。1804において、VSAの利用率が、VSAの所定の閾値限度内であるかどうかに関する判断が行われる。利用率が、所定の閾値限度の上限を超える場合、次いで1806において、分散マネージャ380は、クラウドマネージャ150に、VSAの計算リソース(例えばプロセッシング、メモリ、ストレージ)を増加するか仮想サーバに追加のVSAを追加するよう要求を送信することができる。
【0153】
VSAの利用率が、所定の閾値限度の下限未満の場合、次いで1808において、分散マネージャ380は、クラウドマネージャ150に、VSAの計算リソースを低減するか、VSAがもはや必要でない場合にはそのVSAを仮想サーバから除去するよう要求を送信することができる。例えば分散マネージャ380は、仮想サーバ上の仮想マシンの一部又は全てについてのセキュリティポリシーを評価することができる。セキュリティポリシーのいずれも、VSAによって処理される既存の仮想マシンのいずれかに関連付けられるネットワークトラフィックを必要としない場合は、VSAを仮想サーバから除去してよい。そうではなく、VSAが仮想サーバ上に残っているか、あるいは同じタイプの別のVSAが仮想サーバ上に存在しており、追加の負荷を処理している場合、低い利用率のVSAによって処理される必要があるネットワークトラフィックは、他のVSAに再ルーティングされ得る。
【0154】
VSAの利用率が所定の閾値限度内である場合、処理1800は、分散マネージャ380が再びVSAをポーリングするまで終了する。加えて、1804、1806及び1808並びにここで更に説明される評価及び動作は、分散マネージャによってポーリングされるVSAの各々について実行され得る。
【0155】
特定の例示の実装において、本明細書で概説される仮想セキュリティ機能は、1つ又は複数の有形媒体(例えば特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)命令、プロセッサ又は他の同様のマシン等によって実行されるソフトウェア(潜在的にオブジェクトコード及びソースコードを含む))内においてエンコードされるロジックによって実装されてよいことに留意されたい。これらの例の一部において、メモリ要素は、本明細書において説明される動作に使用されるデータを格納することができる。これは、ソフトウェア、ロジック、コード又は本明細書で説明される動作を行うのに実行されるプロセッサ命令を格納することができるメモリ要素を含む。プロセッサは、データに関連付けられる任意のタイプの命令を実行して、本明細書しで詳述される動作を達成することができる。一例において、プロセッサは、要素又は項目(例えばデータ)をある状態又は物から、別の状態又は物へ変換することができる。別の例では、本明細書で概説される動作は、固定のロジック又はプログラマブルロジック(例えプロセッサによって実行されるばソフトウェア/コンピュータ命令)を用いて実装されてよく、ここで特定される要素は、何らかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック(例えばFPGA、EPROM、EEPROM)又はデジタルロジック、ソフトウェア、コード、電子命令若しくはこれらの任意の適切な組み合わせを含むASICであってよい。
【0156】
プログラムコード又は命令は、例えばストレージデバイス及び/又は関連するマシン読取可能媒体若しくはマシンアクセス可能な媒体といった揮発性及び/又は不揮発性メモリ内に格納されてよく、上記媒体は、半導体メモリ、ハードドライブ、フロッピーディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、デジタル多用途ディスク(DVD)等だけでなく、マシンアクセス可能な生物学的状態保存ストレージ(biological state preserving storage)のようなよりエキゾチックな媒体(exotic medium)を含むが、これらには限られない。マシン読取可能媒体は、マシンにより読み取り可能な形式の情報を格納、送信又は受信するための任意の機構を含んでよく、媒体は、アンテナ、光ファイバ、通信インタフェース等のように、プログラムコードが通過することがある媒体を含んでもよい。プログラムコードは、パケット、シリアルデータ、パラレルデータ等の形式で伝送されてよく、圧縮又は暗号化されたフォーマットで使用され得る。
【0157】
1つの例示の実装では、仮想セキュリティシステムは、本明細書で概説される仮想セキュリティ動作を達成するために、ソフトウェアを含むことがある。セキュリティシステムは、本明細書で議論されるように、仮想セキュリティ動作を達成する際に使用される情報を格納するためのメモリ要素を含むことができる。加えて、仮想セキュリティシステムは、本明細書で開示されるような、仮想セキュリティ動作を実行するようソフトウェア又はアルゴリズムを実行することができるプロセッサも含むことがある。これらのデバイスは更に、必要に応じて特定のニーズに基づいて、任意の適切なメモリ要素(RAM、ROM、EPROM、EEPROM、ASIC等)、ソフトウェア、ハードウェア内又は任意の適切なコンポーネント、デバイス、要素若しくはオブジェクト内に情報を保持してもよい。ここで検討されるメモリアイテムのいずれも(例えばデータベース、テーブル、ツリー、キャッシュ等)は、「メモリ要素」という広義の用語に含まれるものとして解釈されるべきである。同様に、本明細書で説明される潜在的な処理要素、モジュール及びマシンは、「プロセッサ」という広義の用語に含まれるものとして解釈されるべきである。
【0158】
上記で提示される実施例並びに本明細書で提供される他の実施例では、対話が2、3又は4つの要素に関して説明されていることに留意されたい。しかしながら、これは、明瞭性及び例示の目的のためだけに行われたものにすぎない。特定の場合において、限られた数の要素のみを参照することにより、所与のセットのフローの機能の1つ又は複数を説明することがより容易であることがある。仮想セキュリティシステム(及びその教示)は容易にスケーラブルであり、より多くのコンポーネント並びにより複雑/高性能な配置及び構成に適合することができることを認識されたい。したがって、提供される例示は、潜在的に多種多様な他のアーキテクチャに滴う要される、仮想セキュリティシステムの範囲を限定又は広範な教示を抑制すべきではない。
【0159】
加えて、先行するフロー図内の動作は、仮想セキュリティシステムによって又は仮想セキュリティシステム内において実行され得る可能性あるシナリオ及びパターンの一部のみを図示したものにすぎない。これらの動作の一部は、必要に応じて削除又は除去されてよく、あるいは本開示の範囲から逸脱することなく、大幅に修正又は変更されてもよい。さらに、複数のこれらの動作は、1つ又は複数の追加の動作と同時に、あるいはこれと並行して実行されるように説明されている。しかしながら、これらの動作のタイミングは大幅に変更されてもよい。先行する動作フローは、説明及び議論のために提示されている。仮想セキュリティシステムは、任意の適切な配置、時系列、構成という点において実質的な柔軟性を提供し、本開示の教示から逸脱することなくタイミング機構が提供され得る。
【0160】
本開示は、特定の配置及び構成に関連して詳細に説明されているが、これらの例示の構成及び配置は、本開示の範囲から逸脱することなく大幅に変更されてもよい。本開示は、限られた数の実施形態を説明しているが、当業者には、この実施形態から様々な修正及び変更が認識されよう。添付の特許請求の範囲は、本開示の真の精神及び範囲内にある限り、そのような修正及び変更を全て網羅するよう意図されている。
【0161】
以下の例は、本明細書における諸実施形態に関する。1つ又は複数の実施形態は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想マシンについての変化を検出するステップと、仮想セキュリティ装置が仮想サーバ内で構成されるかどうかを判断するステップと、仮想セキュリティ装置を仮想サーバ内で作成するよう要求を送信するステップと、仮想セキュリティ装置が仮想マシン内で作成されるときに、仮想マシンが開始するのを許可するステップとを含み、仮想セキュリティ装置が、仮想マシンから送信されるネットワークパケットに対してセキュリティ検査を実行する方法を提供する。
【0162】
実施形態の例は更に、仮想マシンからのネットワークパケットをインターセプトするインターセプト機構を仮想サーバ内に作成するステップを含むことを備える。
【0163】
実施形態の例は更に、インターセプト機構を作成するステップにおいて、仮想マシンからのネットワークパケットを物理的なネットワークインタフェースカードに向けるよう、仮想マシンに接続される仮想スイッチのロジックを再構成するステップと、ネットワークパケットが仮想ネットワークインタフェースカード(vNIC)を通過するのを防ぐようにvNICのロジックを再構成するステップとを含むことを備える。
【0164】
実施形態の例は更に、インターセプト機構が、単一ルート入出力仮想化(SR−IOV)仕様に基づくネットワークパケットのハードウェアインターセプトを含むことを備える。
【0165】
実施形態の例は更に、変化が、仮想マシンを第2の仮想サーバから仮想サーバに移動させることを含み、方法は更に、第2の仮想サーバから第2の仮想セキュリティ装置を削除するステップと、仮想ネットワークインタフェースカードを介して通信するよう第2の仮想サーバ内の仮想スイッチのロジックを再構成するステップとを含み、第2の仮想セキュリティ装置は、仮想マシンが第2の仮想サーバ内で実行しているときに、仮想マシンからインターセプトされたネットワークパケットを処理するように構成されていることを備える。
【0166】
実施形態の例は更に、1つ又は複数のセキュリティポリシーは、仮想マシンからのネットワークパケットを処理するよう1つ又は複数の仮想セキュリティ装置を識別することを備える。
【0167】
実施形態の例は更に、1つ又は複数のセキュリティポリシーが、1つ又は複数の仮想セキュリティ装置について、仮想マシンからのネットワークパケットを処理する順序を識別することを備える。
【0168】
実施形態の例は更に、仮想セキュリティ装置の利用率を判断するのに仮想サーバ上の仮想セキュリティ装置にクエリするステップと、クエリに対する応答を受信するステップとを含む。
【0169】
実施形態の例は更に、応答が、仮想セキュリティ装置によってより多くの容量が必要とされることを示すとき、仮想サーバ内に第2の仮想セキュリティ装置を作成するよう要求を送信するステップを含む。
【0170】
実施形態の例は更に、ネットワークパケットが仮想セキュリティ装置に送信されるのを防ぐステップと、応答が、仮想セキュリティ装置の利用率が低いことを示すとき、仮想セキュリティ装置がアイドル状態であれば、仮想セキュリティ装置を削除するステップとを含む。
【0171】
実施形態の例は更に、応答が、仮想セキュリティ装置の利用率が多いことを示すとき、処理リソース及びメモリのうちの少なくとも1つを仮想セキュリティ装置に割り当てるよう要求を送信するステップを含む。本明細書で使用されるとき、「のうちの少なくとも1つ」というフレーズは、その列挙のいずれか1つ又は組合せを意味する。例えばA、B、及びCのうちの少なくとも1つは、A、B又はC、又はその任意に組み合わせを意味することがある。
【0172】
実施形態の例は更に、仮想マシンについて検出される変化が、仮想マシンを仮想サーバに追加すること又は仮想マシンを別の仮想サーバから仮想サーバに移動させることの一方を含むことを備える。
【0173】
実施形態の例は更に、変化がアプリケーションプログラミングインタフェース(API)を通して、仮想マシンが仮想サーバに追加されるとき又は仮想マシンが異なるサーバに移動されるときに検出されることを備える。
【0174】
実施形態の例は更に、仮想マシンについて検出される変化が、仮想マシンについて新たなセキュリティポリシーを要求すること又は仮想マシンのセキュリティポリシーを更新することの一方を含むことを備える。
【0175】
実施形態の例は更に、仮想セキュリティ装置が仮想サーバ内で構成されない場合、仮想マシンをブロックするステップを備える。
【0176】
実施形態の例は更に、仮想セキュリティ装置が、仮想マシンへ送信されるネットワークパケットに対してセキュリティ検査を実行することを備える。
【0177】
実施形態の例は更に、仮想マシンからのパケットフローの最初の出力ネットワークパケットは、仮想マシンが仮想サーバ内で開始することを許可された後、仮想サーバ内のOpenFlowスイッチによってインターセプトされることを備え、方法は更に、出力ネットワークパケットのためのフロールートを、セキュリティポリシーに基づいて生成するステップを備え、OpenFlowスイッチが、出力ネットワークパケットをフロールートに従ってルーティングすることを備える。
【0178】
1つ又は複数の実施形態は、プロセッサ上で動作するポリシーマネージャ仮想マシンを備える装置を提供することもでき、ポリシーマネージャ仮想マシンは、仮想ネットワークインフラストラクチャの仮想サーバ内において、仮想マシンの変化を検出し、仮想サーバ内で仮想セキュリティ装置が構成されているかどうかを判断し、仮想セキュリティ装置が仮想マシン内で作成されるときに、仮想マシンが開始するのを許可するように構成され、仮想セキュリティ装置は、仮想マシンから送信されるネットワークパケットに対するセキュリティ検査を実行する・。
【0179】
実施形態の例は更に、プロセッサ上で動作する分散マネージャ仮想マシンを更に備え、該分散マネージャ仮想マシンは、仮想サーバ内に仮想セキュリティ装置を作成するよう要求を送信するように構成される。
【0180】
実施形態の例は更に、分散マネージャが、仮想サーバ内に、仮想マシンからのネットワークパケットをインターセプトするインターセプト機構を作成するように更に構成されることを備える。
【0181】
実施形態の例は更に、インターセプト機構を作成することにおいて、仮想マシンからのネットワークパケットを物理ネットワークインタフェースカードに向けるよう、仮想マシンに接続される仮想スイッチのロジックを再構成し、ネットワークパケットが仮想ネットワークインタフェースカード(vNIC)を通過するのを防ぐようにvNICのロジックを再構成することを含むことを備える。
【0182】
1つ又は複数の実施形態は、命令を格納した少なくとも1つのマシンアクセス可能な記憶媒体を提供することがあり、上記命令は、マシンによって実行されると、該マシンに、仮想ネットワークインフラストラクチャの仮想サーバ内において、仮想マシンの変化を検出させ、仮想サーバ内で仮想セキュリティ装置が構成されているかどうかを判断させ、仮想サーバ内で仮想セキュリティ装置を作成するよう要求を送信させ、仮想セキュリティ装置が仮想マシン内で作成されるときに、前記仮想マシンが開始するのを許可させ、仮想セキュリティ装置は、仮想マシンから送信されるネットワークパケットに対するセキュリティ検査を実行する。
【0183】
実施形態の例は更に、変化が、前記仮想マシンを、第2の仮想サーバから仮想サーバに移動させることを含み、処理は、第2の仮想サーバから第2の仮想セキュリティ装置を削除することと、仮想ネットワークインタフェースカードを介して通信するよう第2の仮想サーバ内の仮想スイッチのロジックを再構成することとを含み、第2の仮想セキュリティ装置は、仮想マシンが第2の仮想サーバ内で実行しているときに仮想マシンからインターセプトされたネットワークパケットを処理するように構成されていることを備える。
【0184】
実施形態の例は更に、1つ又は複数のセキュリティポリシーが、仮想マシンからのネットワークパケットを処理するよう1つ又は複数の仮想セキュリティ装置を識別することを備える。
【0185】
1つ又は複数の実施形態は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想セキュリティ装置をポーリングして、該仮想セキュリティ装置の利用率を決定するステップと、利用率が上限閾値量を超えている場合、クラウドマネージャに、仮想セキュリティ装置のための計算リソースを増加させるよう要求を送信するステップと、利用率が下限閾値量未満の場合、クラウドマネージャに、仮想セキュリティ装置のための計算リソースを低減させるよう要求を送信するステップとを含み、仮想サーバ内の1つ又は複数の仮想マシンに関連付けられるネットワークパケットが、仮想セキュリティ装置にルーティングされる方法を提供することがある。
【0186】
実施形態の例は更に、ネットワークパケットが、仮想セキュリティ装置にルーティングされる前にインターセプトされることを備える。
【0187】
1つ又は複数の実施形態は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想セキュリティ装置をポーリングして、該仮想セキュリティ装置の利用率を決定するステップと、利用率が上限閾値量を超えている場合、クラウドマネージャに、仮想サーバ内に別の仮想セキュリティ装置を作成するよう要求を送信するステップとを含み、仮想サーバ内の1つ又は複数の仮想マシンに関連付けられるネットワークパケットが、仮想セキュリティ装置にルーティングされる方法を提供することがある。
【0188】
実施形態の例は更に、ネットワークパケットが、仮想セキュリティ装置にルーティングされる前にインターセプトされることを備える。
【0189】
1つ又は複数の実施形態は、仮想ネットワークインフラストラクチャの仮想サーバ内の仮想セキュリティ装置をポーリングして、該仮想セキュリティ装置の利用率を決定するステップと、セキュリティポリシーが、仮想セキュリティ装置によって処理される仮想サーバの仮想マシンを必要としないと決定された場合、新たなネットワークパケットが仮想セキュリティ装置にルーティングされるのを防ぐステップと、仮想セキュリティ装置がアイドル状態のとき、クラウドマネージャに、仮想サーバの仮想セキュリティ装置を除去するよう要求を送信するステップとを含み、仮想サーバ内の1つ又は複数の仮想マシンに関連付けられる、以前に送信されたネットワークパケットは、仮想セキュリティ装置にルーティングされている方法を提供することがある。
【0190】
実施形態の例は更に、以前に送信されたネットワークパケットが、仮想セキュリティ装置にルーティングされる前にインターセプトされていることを備える。