(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-16
(45)【発行日】2023-11-27
(54)【発明の名称】セキュア仮想マシン環境におけるゲスト命令の透過的解釈
(51)【国際特許分類】
G06F 21/50 20130101AFI20231117BHJP
G06F 9/455 20180101ALI20231117BHJP
G06F 21/53 20130101ALI20231117BHJP
【FI】
G06F21/50
G06F9/455 150
G06F21/53
(21)【出願番号】P 2021549560
(86)(22)【出願日】2020-02-27
(86)【国際出願番号】 IB2020051667
(87)【国際公開番号】W WO2020183278
(87)【国際公開日】2020-09-17
【審査請求日】2022-07-25
(32)【優先日】2019-03-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ブサバ、ファディ
(72)【発明者】
【氏名】ヘラー、リサ
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】ボルントレガー、クリスチャン
(72)【発明者】
【氏名】インブレンダ、クラウディオ
【審査官】平井 誠
(56)【参考文献】
【文献】特開2017-111812(JP,A)
【文献】特表2014-532201(JP,A)
【文献】特表2016-523421(JP,A)
【文献】特表2018-526720(JP,A)
【文献】米国特許出願公開第2017/0177392(US,A1)
【文献】米国特許出願公開第2013/0097392(US,A1)
【文献】米国特許出願公開第2016/0148001(US,A1)
【文献】米国特許出願公開第2016/0378522(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/50
G06F 9/455
G06F 21/53
(57)【特許請求の範囲】
【請求項1】
システムのホスト・サーバ上に作成される仮想マシンによって、命令のストリームを実行することであって、前記命令のストリームからの命令はハイパーバイザに対してインターセプトされるべきものである、前記実行することと、
前記仮想マシンがセキュア仮想マシンであるという判定に基づいて、前記ハイパーバイザが前記セキュア仮想マシンの任意のデータに直接アクセスすることを防ぐことと、
前記ホスト・サーバのセキュア・インターフェース制御によって、
前記命令が前記セキュア・インターフェース制御自身によって解釈可能ではないという判定に基づいて、
前記セキュア・インターフェース制御によって、前記セキュア仮想マシンから前記命令に関連する1つ以上のパラメータ・データを抽出することと、
前記セキュア・インターフェース制御によって、前記1つ以上のパラメータ・データを前記ハイパーバイザがアクセス可能なバッファに記憶することと、
前記セキュア・インターフェース制御によって、前記ハイパーバイザに前記命令をインターセプトすることとを行うことと
を含む、方法。
【請求項2】
前記命令が前記セキュア・インターフェース制御自身によって解釈可能であるという判定に基づいて、
前記セキュア・インターフェース制御によって前記命令を実行することと、
前記命令のストリームの実行を続けるために実行制御を前記セキュア仮想マシンに戻すことと
を行う、請求項1に記載の方法。
【請求項3】
前記命令をインターセプトすることはさらに、
前記セキュア・インターフェース制御によって、前記命令が部分的に完了したことを示す第1のフラグをセットすることと、
前記セキュア・インターフェース制御によって、前記セキュア仮想マシンが実行に対してロック状態であることを示す第2のフラグをセットすることと
を含む、請求項1または2に記載の方法。
【請求項4】
前記セキュア・インターフェース制御は、前記ロック状態の前記セキュア仮想マシンをディスパッチすることを防ぎ、前記ロック状態は、前記セキュア仮想マシンが前記ハイパーバイザからの応答を待っていることを示す、請求項3に記載の方法。
【請求項5】
前記命令が実行されるときにプログラム例外をもたらすという前記セキュア・インターフェース制御による判定に基づいて、前記セキュア仮想マシンに前記例外を提供することをさらに含む、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
前記ハイパーバイザによる前記命令の実行の完了の際に、前記セキュア・インターフェース制御によって、前記ハイパーバイザからの応答によって前記セキュア仮想マシンの状態を更新することをさらに含み、前記状態の少なくとも一部分は、前記ハイパーバイザがアクセス不可能なメモリのセキュア部分に記憶されている、請求項1ないし5のいずれか一項に記載の方法。
【請求項7】
前記ハイパーバイザは、前記命令に対する前記応答を専用バッファに記憶する、請求項6に記載の方法。
【請求項8】
前記実行の完了の際に、前記ハイパーバイザによって生成された前記応答が有効でないという判定に基づいて、前記セキュア・インターフェース制御によって前記ハイパーバイザに対するエラー条件をインターセプトすることをさらに含む、請求項6または7に記載の方法。
【請求項9】
メモリと、
セキュア・インターフェース制御と、
前記メモリおよび前記セキュア・インターフェース制御と結合された処理ユニットとを含むシステムであって、
前記処理ユニットは、複数の仮想マシンをホストするハイパーバイザを実行するように構成され、前記ハイパーバイザはセキュア仮想マシンの任意のデータに直接アクセスすることを禁止されており、前記ハイパーバイザは前記仮想マシンからの1つ以上のゲスト命令を解釈するよう、請求項1ないし8のいずれか一項に記載の方法を行うように構成される、システム。
【請求項10】
コンピュータに、請求項1ないし8のいずれか一項に記載の方法を実行させるためのコンピュータ・プログラム。
【請求項11】
システムのホスト・マシンにおけるハイパーバイザによって、セキュア仮想マシンからのゲスト命令を実行することであって、前記ハイパーバイザは前記セキュア仮想マシンの任意のデータに直接アクセスすることを禁止されている、前記実行することと、
前記ハイパーバイザによって、前記ゲスト命令に対する応答を予め定められたバッファに記憶することと、
前記ホスト・マシンのセキュア・インターフェース制御によって、前記応答を状態記述子の指定レジスタにコピーすることによって前記応答によって前記セキュア仮想マシンの前記状態記述子を更新することとを含み、前記状態記述子は前記ハイパーバイザによってアクセス不可能なメモリのセキュア部分に記憶されている、方法。
【請求項12】
前記ハイパーバイザによって生成された前記応答が有効でないという判定に基づいて、前記セキュア・インターフェース制御によって前記ハイパーバイザに対するエラー条件をインターセプトすることをさらに含む、請求項11に記載の方法。
【請求項13】
前記セキュア・インターフェース制御によって、前記セキュア仮想マシンに関連する第1のフラグをリセットすることを含み、前記リセットは、命令ストリームの実行を続けるために前記セキュア仮想マシンがディスパッチされ得ることを示す、請求項11または12に記載の方法。
【請求項14】
メモリと、
セキュア・インターフェース制御と、
前記メモリおよび前記セキュア・インターフェース制御と結合された処理ユニットとを含むシステムであって、
前記処理ユニットは、複数の仮想マシンをホストするハイパーバイザを実行するように構成され、前記ハイパーバイザはセキュア仮想マシンの任意のデータに直接アクセスすることを禁止されており、前記ハイパーバイザは前記仮想マシンからの1つ以上のゲスト命令を解釈するよう、請求項11ないし13のいずれか一項に記載の方法を行うように構成される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願はコンピュータ技術に関し、より具体的には仮想マシンに関する。
【背景技術】
【0002】
クラウド・コンピューティングは、顧客がハードウェアを購入したり物理サーバのためにフロア空間を提供したりする必要なしに、顧客に対する仮想マシンを迅速かつ容易にプロビジョニングする能力を促進する。顧客は、プリファレンスの変更によって仮想マシンを拡張または縮小することができる。通常、クラウド・コンピューティング・プロバイダは仮想マシンをプロビジョニングし、その仮想マシンはプロバイダのデータセンタに物理的に存在する。この環境において、顧客の仮想マシンはゲストとして動作しており、クラウド・プロバイダはホストとして動作するハイパーバイザ・コードを用いて、異なる顧客に属する可能性のある複数の仮想マシン間のサーバ・リソースを仮想化する。
【0003】
顧客はしばしば、仮想マシンにおけるデータのセキュリティについて懸念する。クラウド・オペレータは信頼されていないことがあり、顧客は、悪意があるか破損したコード(ハイパーバイザなど)、もしくは悪意ある意図をもってデータセンタを運用するシステム管理者、またはその両方によって危険にさらされるリスクなしに自身の作業をデプロイすることを希望することがある。たとえば、米国(U.S.:United States)企業などのクラウド・コンピューティング・プロバイダがおそらくは召喚状によって機密文書または専有文書の引き渡しを強いられる可能性を低減または回避するべく、顧客は、クラウド・プロバイダが自身のデータにアクセスしないことを要求することがある。
【発明の概要】
【課題を解決するための手段】
【0004】
本発明の1つ以上の実施形態によると、コンピュータに実装される方法は、ホスト・サーバにおいて実行される仮想マシンによって、命令のストリームを実行することを含み、この命令のストリームからの命令はハイパーバイザに対してインターセプトされるべきものである。この方法はさらに、仮想マシンがセキュア仮想マシンであるという判定に基づいて、ハイパーバイザがセキュア仮想マシンの任意のデータに直接アクセスすることを防ぐことを含む。この方法はさらに、ホスト・サーバのセキュア・インターフェース制御によって、命令がセキュア・インターフェース制御自身によって解釈可能ではないという判定に基づいて、セキュア仮想マシンから命令に関連する1つ以上のパラメータ・データを抽出することと、そのパラメータ・データをハイパーバイザがアクセス可能なバッファに記憶することとを行うことを含む。その後、この命令はハイパーバイザにインターセプトされる。
【0005】
本発明の1つ以上の実施形態によると、この方法はさらに、ホスト・サーバのセキュア・インターフェース制御によって、命令がセキュア・インターフェース制御自身によって解釈可能であるという判定に基づいて、セキュア・インターフェース制御によって命令を実行することと、命令のストリームの実行を続けるために実行制御をセキュア仮想マシンに戻すこととを行うことを含む。
【0006】
本発明の1つ以上の実施形態によると、命令をインターセプトすることは、セキュア・インターフェース制御によって、その命令が部分的に完了したことを示す第1のフラグをセットすることと、セキュア・インターフェース制御によって、セキュア仮想マシンが実行に対してロックされたことを示す第2のフラグをセットすることとを含む。
【0007】
本発明の1つ以上の実施形態によると、この方法はさらに、この命令が実行されるときにプログラム例外をもたらすというセキュア・インターフェース制御による判定に基づいて、ハイパーバイザへの命令をインターセプトせずにセキュア仮想マシンに例外を提供することを含む。
【0008】
本発明の1つ以上の実施形態によると、この方法はさらに、ハイパーバイザによる命令の実行の完了の際に、セキュア・インターフェース制御によって、ハイパーバイザからの応答によりセキュア仮想マシンの状態を更新することを含み、この状態の少なくとも一部分は、ハイパーバイザがアクセス不可能なメモリのセキュア部分に記憶されている。
【0009】
本発明の1つ以上の実施形態によると、ハイパーバイザは命令に対する応答を専用バッファに記憶する。
【0010】
本発明の1つ以上の実施形態によると、この方法はさらに、実行の完了の際に、ハイパーバイザによって生成された応答が有効でないという判定に基づいて、セキュア・インターフェース制御によってハイパーバイザに対するエラー条件をインターセプトすることを含む。
【0011】
本発明の1つ以上の実施形態によると、セキュア・インターフェース制御はミリコードを含む。
【0012】
さらに、本発明の1つ以上の実施形態によると、上述の特徴は少なくともシステム、コンピュータ・プログラム製品、およびマシンによって提供される。
【0013】
本発明の1つ以上の実施形態によると、コンピュータに実装される方法は、ホスト・マシンにおけるハイパーバイザによって、セキュア仮想マシンからのゲスト命令を実行することを含み、ハイパーバイザはセキュア仮想マシンの任意のデータに直接アクセスすることを禁止されている。この方法はさらに、ハイパーバイザによって、ゲスト命令に対する応答を予め定められたバッファに記憶することを含む。この方法はさらに、ホスト・マシンのセキュア・インターフェース制御によって、応答を状態記述子の指定レジスタにコピーすることによって応答によるセキュア仮想マシンの状態記述子を更新することを含み、状態記述子はハイパーバイザがアクセス不可能なメモリのセキュア部分に記憶されている。
【0014】
本発明の1つ以上の実施形態によると、この方法はさらに、ハイパーバイザによって生成された応答が有効でないという判定に基づいて、セキュア・インターフェース制御によってハイパーバイザに対するエラー条件をインターセプトすることを含む。
【0015】
本発明の1つ以上の実施形態によると、この方法はさらに、セキュア・インターフェース制御によって、セキュア仮想マシンに関連する第1のフラグをリセットすることを含み、このリセットは、命令ストリームの実行を続けるためにセキュア仮想マシンがディスパッチされ得ることを示す。
【0016】
上記の方法の特徴も、少なくともシステム、コンピュータ・プログラム製品、およびマシンによって提供され得る。
【0017】
本明細書に記載される特徴は、コンピュータ技術に対する改善を提供し、特に仮想マシン(VM:virtual machines)をホストするコンピュータ・サーバに対して、コンピュータ・サーバがセキュアVMをホストすることを促進することによる改善を提供する。セキュアVMの場合、ハイパーバイザはもはやVMのデータの制御を委ねられておらず、ハイパーバイザさえもがセキュアVMに関連するメモリ、レジスタ、およびその他のこうしたデータにアクセスすることを禁止される。加えて、本明細書に記載される技術的特徴は、ホスト・コンピュータ・サーバがセキュアVMとハイパーバイザとの分離を促進することを促進することによって、コンピュータ・サーバによってホストされるVMのセキュリティを維持する。
【0018】
本発明の技術によって、付加的な技術的特徴および利益が実現される。本明細書において本発明の実施形態および態様が詳細に説明されており、請求される主題の一部とみなされる。より良好な理解のために、詳細な説明および図面を参照されたい。
【0019】
本明細書に記載される独占権の明細は、本明細書の末尾の請求項において特定的に指摘され、明確に請求されている。本発明の実施形態の前述およびその他の特徴および利点は、添付の図面とともに得られる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0020】
【
図1】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【
図2】本発明の一実施形態による抽象化モデル・レイヤを示す図である。
【
図3】一実施形態によるホスティング・システムに対するシステムの例を示す図である。
【
図4】一実施形態によるホスティング・システムのブロック図の例を示す図である。
【
図5】本発明の1つ以上の実施形態によるセキュア仮想マシン環境におけるゲスト命令の透過的解釈のための方法の例を示す流れ図である。
【
図6】本発明の1つ以上の実施形態によるセキュア仮想マシン環境におけるゲスト命令の透過的解釈のための方法の例を示す流れ図である。
【発明を実施するための形態】
【0021】
本明細書において、関連する図面を参照して本発明のさまざまな実施形態を説明している。本発明の範囲から逸脱することなく、本発明の代替的実施形態が考案され得る。以下の説明および図面において、構成要素間のさまざまな接続および位置関係(例、上、下、隣など)が示されている。これらの接続もしくは位置関係またはその両方は、別様に指定されない限り直接的または間接的であってもよく、本発明はこれに関して限定することは意図していない。したがって、エンティティの結合は直接的または間接的な結合を示すことができ、エンティティ間の位置関係は直接的または間接的な位置関係であり得る。さらに、本明細書に記載されるさまざまなタスクおよびプロセス・ステップは、本明細書に詳細に記載されていない付加的なステップまたは機能を有するより包括的な手順またはプロセスに組み込まれ得る。
【0022】
以下の定義および略語は、請求項および明細書の解釈に用いられるべきものである。本明細書において用いられる「含む(comprises)」、「含む(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「含有する(contains)」、もしくは「含有する(containing)」という用語、またはその任意のその他の変形は、非排他的包含をカバーすることが意図される。たとえば、構成要素のリストを含む組成物、混合物、プロセス、方法、物品、または装置は、それらの構成要素のみに限定される必要はなく、明確にリストに挙げられていないその他の構成要素、あるいはこうした組成物、混合物、プロセス、方法、物品、または装置に固有のその他の構成要素を含み得る。
【0023】
加えて、本明細書において「例示的」という用語は、「一例、実例、または例示の役割をする」ことを意味するために用いられる。本明細書において「例示的」なものとして記載される任意の実施形態または設計は、他の実施形態または設計よりも好ましいか、または有利であると解釈される必要はない。「少なくとも1つ」および「1つ以上」という用語は、1以上の任意の整数、すなわち1、2、3、4などを含むものと理解されてもよい。「複数」という用語は、2以上の任意の整数、すなわち2、3、4、5などを含むものと理解されてもよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでもよい。
【0024】
「約(about)」、「実質的に」、「約(approximately)」という用語およびそれらの変形は、本出願の提出の時点で利用可能な機器に基づく特定量の測定に関連する誤差の程度を含むことが意図される。たとえば、「約」は所与の値の±8%もしくは5%、または2%の範囲を含み得る。
【0025】
簡潔にするために、本発明の態様の作製および使用に関する従来の技術は、本明細書において詳細に記載されることもされないこともある。特に、本明細書に記載されるさまざまな技術的特徴を実現するためのコンピュータ・システムおよび特定のコンピュータ・プログラムのさまざまな態様は周知である。したがって簡潔にするために、本明細書において、多くの従来の実施の詳細は、周知のシステムもしくはプロセスまたはその両方の詳細を提供することなく、簡単に言及されるだけであるか、または完全に省略される。
【0026】
典型的なクラウド環境に関する技術的課題は、(例、クラウド・プロバイダまたはクラウド管理者による)データおよびアルゴリズムに対するセキュアでない可能性のある望ましくないアクセスである。クラウド・プロバイダは通常ホストとしてハイパーバイザ・コードを実行し、顧客のVMはゲストとして動作する。このハイパーバイザ・コードは、複数のVMを単一の物理マシンで動作できるようにするために必要な仮想化機能を提供する。既存のシステムにおいて、ハイパーバイザ(およびしばしば拡張によってクラウド管理者)は、仮想化機能を提供するために顧客のデータの限られた部分にアクセスする必要があるような状況に対しては、顧客のデータおよびアルゴリズムにアクセスできる。たとえば、クラウド・プロバイダは、システムの性能および機能的問題点を分析するために、メモリをダンプすることがある。ダンプされたメモリは、顧客が露出を望まない顧客の秘密を含むことがある。加えて、システム・オペレータは内部プロセッサ・レジスタ状態を表示でき、これも秘密を露出する。ハイパーバイザは、他の理由とともに、たとえばゲスト命令を解釈してゲストの代わりにI/O動作を行うことなどのために、ゲスト・データにアクセスする必要がある。ゲスト・メモリへのハイパーバイザ・アクセスは、ゲストに機能の正確さを提供するために必要とされる。本発明の1つ以上の実施形態によって用いられるセキュアな実行において、ハイパーバイザはもはや信頼されないが、なおもゲスト命令解釈に参加し得る。したがって、本発明の1つ以上の実施形態は、信頼されないハイパーバイザがゲスト命令をセキュアにエミュレートするためのやり方を提供する。
【0027】
ホスト・ハイパーバイザの制御下でゲストとして動作する仮想マシンは、そのゲストに対する仮想化サービスを透過的に提供するためにそのハイパーバイザに頼っている。これらのサービスはメモリ管理、命令エミュレーション、および割り込み処理を含み得るが、これに限定されない。本発明の1つ以上の実施形態は、セキュア・エンティティと別の信頼されないエンティティとの間の任意のインターフェースに適用でき、そのインターフェースはこの他方のエンティティによるセキュア・リソースへのアクセスを従来可能にするものである。たとえば、割り込みおよび例外解釈のために、ハイパーバイザは通常ゲストのプレフィックス・エリア(低コア)への読取りもしくは書込みまたはその両方を行う。本明細書において用いられる「仮想マシン」または「VM」という用語は、物理マシン(コンピュータ・デバイス、プロセッサなど)およびその処理環境(オペレーティング・システム(OS:operating system)、ソフトウェア・リソースなど)の論理的表現を示す。仮想マシン状態は、基礎的なホスト・マシン(物理プロセッサまたはプロセッサのセット)において実行されるハイパーバイザによって維持される。ユーザまたはソフトウェア・リソースの観点からは、仮想マシンは自身の独立した物理マシンであるようにみえる。本明細書において用いられる「ハイパーバイザ」および「VMモニタ(VMM:VM Monitor)」という用語は、同じホスト・マシンにおいて複数の(かつ異なることもある)OSを用いて複数のVMが実行され得るように管理を行う処理環境またはプラットフォーム・サービスを示す。当然のことながら、VMの配置はVMのインストール・プロセスと、VMのアクティベーション(または始動)プロセスとを含む。別の例において、VMの配置はVMのアクティベーション(または始動)プロセスを含む(例、VMが予めインストールされているか、または既に存在している場合)。
【0028】
しかし、セキュア・ゲストを促進するために、たとえばホスティング・ノードなどのコンピュータ・サーバがハイパーバイザとセキュア・ゲストとの間に付加的なセキュリティを提供しなければならず、そうするとハイパーバイザはVMからのデータにアクセスできなくなり、上述のやり方でサービスを提供できなくなるところに、技術的課題が存在する。
【0029】
現在利用可能な技術的解決策において、ハイパーバイザ(例、IBM(IBM社の登録商標)のz/VM(IBM社の登録商標)、またはオープン・ソース・ソフトウェアのカーネル・ベース仮想マシン(KVM:Kernel Based Virtual machine))は、解釈実行開始(SIE:Start-Interpretive-Execution)命令を発行してSIEエントリ・ミリコードを呼び出すことによって、物理処理ユニットまたはホスト・サーバにおける新たなVM仮想CPU(vCPU:virtual CPU)をディスパッチする。SIE命令のオペランドは状態記述(SD:state description)と呼ばれる制御ブロックであり、それはゲスト状態を含む。既存の実施において、この状態記述はハイパーバイザ・ストレージに存在する。SIEエントリの際に、このゲスト状態(汎用目的および制御レジスタ、ゲスト命令アドレスおよびゲスト・プログラム状況ワード(PSW:program-status-word)を含む)がミリコードによってハードウェアにロードされる。これによって、ゲストvCPUが物理プロセッサで動作できるようになる。vCPUがハードウェアで動作している間、ゲスト状態はハードウェア内に維持される。どこかの時点で、ハードウェア/ミリコードは制御をハイパーバイザに戻す必要がある。このことはしばしばSIEエグジットと呼ばれる。これが必要になるのはたとえば、このvCPUがハイパーバイザによるエミュレーションを必要とする命令を実行するとき、またはvCPUのタイムスライス(すなわち、このvCPUが物理プロセッサで動作するために割り当てられた時間)が経過したときなどである。SIEエグジットの際に、ハードウェアは任意の所与の時間に単一のvCPUのみをサポートするためのリソースを有し、かつここでハードウェアにハイパーバイザ状態をロードする必要があるため、ミリコードは現在のゲスト状態を状態記述にセーブする。このvCPUがディスパッチされていない間、その状態は状態記述において維持される。この状態記述はハイパーバイザ・ストレージ内に存在するため、こうした場合のハイパーバイザはVMに対するデータの制御を有し、場合によってはVMで実行中の命令を解釈するためにこうした制御が必要とされる。既存のハイパーバイザは、vCPUをディスパッチするためにSIE命令を通じてこうしたインターフェースを使用することに依る。
【0030】
さらに、複数のVMを管理しているハイパーバイザはゲスト命令、すなわちVMにおいて実行される命令を解釈する必要がある。この解釈の一部として、既存の解決策におけるハイパーバイザは通常、SDおよびVMの他のデータに完全にアクセスでき、このSDおよびデータはハイパーバイザを実行しているホスト・マシンの一部であるメモリに記憶されている。なお、VMにおいて実行されるすべての命令がハイパーバイザによる解釈を必要とするわけではない。通常は、たとえばI/Oアクセスなどのシステム・レベルのアクセスを必要とする命令が、こうしたハイパーバイザ解釈を必要とする。ハイパーバイザ解釈を必要とするこうしたゲスト命令は、ゲスト・モードからハイパーバイザへのSIEエグジット・インターセプト(ゲスト命令ストリームの割り込み)をもたらす。次いでハイパーバイザは、どの命令がインターセプトをもたらしたかをチェックし、ゲスト・レジスタまたはゲスト・メモリに存在する対応するゲスト・データの読取りもしくは書込みまたはその両方を行うことによって、その命令を解釈する。インターセプトされたVMは、次いで自身の命令ストリームの実行を続けるために再ディスパッチされる。
【0031】
なお通常、「命令インターセプト」に対する事例は、VMのオペレーティング・システムがハードウェア特性を識別するためのCPUID命令を発行すること、マシン特定的レジスタ(MSR:machine-specific registers)にアクセスすること、またはI/Oポートに直接アクセスすることを含む。インターセプトを必要とするこうした命令が検出されたとき、解決のために制御は直ちにハイパーバイザ12に移される。たとえば、VMが制御レジスタ(CR:Control Register)またはマシン特定的レジスタ(MSR)の値の読取りまたは更新を行うための命令を発行するとき、場合によってはこの動作がインターセプトされて制御はハイパーバイザ12に移され、ここでVMの挙動がハイパーバイザによってシミュレートされ、ハイパーバイザはVMの状態記述子からの1つ以上のデータ値にアクセスする必要がある。さらに、インターセプトされる動作にはホスト・プログラム例外も含まれてもよく、これはハイパーバイザ12によって対処される。
【0032】
セキュアVMの場合、ハイパーバイザがもはやセキュアVMのデータの制御を委ねられていないとき、ゲスト命令の従来の解釈はもはや不可能である。この技術的課題が存在するのは、ハイパーバイザがゲスト・データ(レジスタおよびそのメモリ)にアクセスできないためである。たとえハイパーバイザに限定的なゲスト状態アクセスが与えられても、ハイパーバイザはサイドチャネル攻撃を防止または制限するためにセキュアVMの挙動を観察することができない。よって、ホスティング・ノードに対する技術的課題は、VMがたとえばI/Oデバイスなどのホスティング・ノードのシステム・リソースにアクセスするための限定的な「能力」または「権限」を有するときに、セキュア・インターフェース制御もしくはハイパーバイザまたはその両方がセキュアVMにおけるゲスト命令を解釈および実行することを促進することである。
【0033】
本発明の1つ以上の実施形態によると、ハイパーバイザにゲスト・データを露出することなく、かつゲスト・アプリケーションまたはオペレーティング・システムを書き換える必要なしに、セキュアVMにおける命令を解釈するための技術的解決策が記載される。言い換えると、ミリコードおよびハイパーバイザによるゲスト命令の解釈は、セキュアVM自体に対して透過的である。したがって、既存のアプリケーションおよびオペレーティング・システムをそのまま使用でき、こうしたセキュアVMを提供するホスティング・ノードおよびハイパーバイザは既存の製品と互換性がある。言い換えると、本発明の1つ以上の実施形態は、既存のVM、オペレーティング・システム、およびコンピュータ・アプリケーション・コードを変更する必要がないこと、およびハイパーバイザがセキュアVMの状態もしくはデータまたはその両方にアクセスすることを禁止するセキュア方式で同様にVMをディスパッチするホスティング・ノードもしくはハイパーバイザまたはその両方においてコードを使用できることを促進することによって、技術的課題に対処している。本発明の1つ以上の実施形態は、セキュアVMに対するゲスト命令を解釈しようとするセキュア・インターフェース制御(例、ミリコード)におけるゲスト命令解釈の基礎的な実施の改善を用いることによって、こうした技術的解決策を促進している。
【0034】
1つ以上の例において、こうした機能は、ミリコードもしくはその他のハードウェア・モジュールまたはその両方を用いることによって提供でき、本記載においてハードウェア・モジュールおよびミリコードは集合的に「セキュア・インターフェース制御」と呼ばれる。したがって、本発明の1つ以上の実施形態は、セキュア・インターフェース制御(ミリコードならびに内部の信頼されるハードウェアおよびファームウェア)の使用によって、信頼されないハイパーバイザによるセキュアVMにおける命令のセキュア解釈のためにハイパーバイザを促進する。セキュア・インターフェース制御は、セキュアVMと信頼されないハイパーバイザとの間の命令実行を調整する。ゲスト命令は非セキュアVMと同様にインターセプトされるが、制御はハイパーバイザに直ちに戻されず、制御は最初にセキュア・インターフェース制御に与えられ、セキュア・インターフェース制御は必要なゲスト・データを抽出し、それをゲスト命令に対するインターセプト条件および付加的なコンテキスト情報とともにハイパーバイザに渡す。ハイパーバイザは要求を処理し、セキュア・インターフェース制御に応答を戻す。次いでセキュア・インターフェース制御は、インターセプトされた命令に依存して、必要に応じてゲスト状態を更新することとなる。したがって、セキュア・インターフェース制御はハイパーバイザをセキュアVMのデータから分離し、セキュアVMに関連するデータのセキュリティを改善する。
【0035】
ここで背景技術の簡単な説明を続け、その後にハイパーバイザによってセキュアVMに割り込みもしくは例外またはその両方を挿入するために本発明の1つ以上の実施形態によって用いられる特定の特徴を説明する。この開示はクラウド・コンピューティングに対する詳細な説明を含むが、本明細書に記述される教示の実現はクラウド・コンピューティング環境に限定されないことが予め理解される。むしろ本発明の実施形態は、現在公知であるか、または後に開発される任意のその他のタイプのコンピューティング環境とともに実現され得る。
【0036】
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとのインタラクションによって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの配置モデルとを含んでいる。
【0037】
特性は次のとおりである。
【0038】
オンデマンド・セルフサービス。クラウド消費者は、たとえばサーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを、必要に応じて自動的に、サービスのプロバイダとの人的インタラクションを必要とせずに一方的にプロビジョニングできる。
【0039】
広範なネットワーク・アクセス。ケイパビリティはネットワークを通じて利用可能であり、様々なシンまたはシック・クライアント・プラットフォーム(例、携帯電話、ラップトップ、およびPDA)による使用を容易にする標準的な機構を通じてアクセスされる。
【0040】
リソース・プール。マルチテナント・モデルを用いて複数の消費者にサービスするために、プロバイダのコンピューティング・リソースはプールされ、要求に従って異なる物理および仮想リソースが動的に割り当ておよび再割り当てされる。消費者は一般的に、提供されるリソースの正確な場所に対する制御も知識も有さないが、より高い抽象化レベルにおける場所(例、国、州、またはデータセンタ)を特定できてもよいという点で、場所独立性の意味が存在する。
【0041】
迅速な順応性。ケイパビリティは、素早くスケール・アウトするために場合によっては自動的に、迅速かつ順応的にプロビジョニングされ、かつ素早くスケール・インするために迅速にリリースされ得る。消費者にとって、プロビジョニングのために利用可能なケイパビリティはしばしば無制限にみえ、任意のときに任意の量を購入できる。
【0042】
従量制サービス。クラウド・システムは、サービスのタイプ(例、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に対して適切な何らかの抽象化レベルにおいて計測ケイパビリティを利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用をモニタ、制御、および報告して、使用されるサービスのプロバイダおよび消費者の両方に対する透明性を提供できる。
【0043】
サービス・モデルは次のとおりである。
【0044】
サービスとしてのソフトウェア(SaaS:Software as a Service)。消費者に提供されるケイパビリティは、クラウド・インフラストラクチャにおいて動作するプロバイダのアプリケーションの使用である。アプリケーションは、さまざまなクライアント・デバイスからたとえばウェブ・ブラウザ(例、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じてアクセス可能である。消費者はネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティさえも含む基盤となるクラウド・インフラストラクチャを管理または制御することはなく、例外となり得るのは限られたユーザ特有のアプリケーション構成設定である。
【0045】
サービスとしてのプラットフォーム(PaaS:Platform as a Service)。消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、消費者が作成または取得したアプリケーションのクラウド・インフラストラクチャへの配置である。消費者はネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤となるクラウド・インフラストラクチャを管理または制御することはないが、配置されたアプリケーションおよびおそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
【0046】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)。消費者に提供されるケイパビリティは、オペレーティング・システムおよびアプリケーションを含む、消費者が任意のソフトウェアを配置および実行することが可能な処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースのプロビジョニングである。消費者は基盤となるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションに対する制御、およびおそらくはネットワーク形成コンポーネント(例、ホスト・ファイアウォール)の選択に対する限られた制御を有する。
【0047】
配置モデルは次のとおりである。
【0048】
プライベート・クラウド。このクラウド・インフラストラクチャは、ある組織に対してのみ操作される。これはその組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
【0049】
コミュニティ・クラウド。このクラウド・インフラストラクチャは複数の組織によって共有され、共通する関心事項(例、任務、セキュリティ要件、ポリシー、およびコンプライアンスの検討)を有する特定のコミュニティをサポートする。これはそれらの組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
【0050】
パブリック・クラウド。このクラウド・インフラストラクチャは、一般人または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織が所有している。
【0051】
ハイブリッド・クラウド。このクラウド・インフラストラクチャは2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、それらのクラウドは独自のエンティティに留まるが、データおよびアプリケーション・ポータビリティを可能にする標準または独自の技術(例、クラウド間のロード・バランシングのためのクラウド・バースティング)によってともに結合される。
【0052】
クラウド・コンピューティング環境はサービス指向型であり、ステートレス性、低結合性、モジュラリティ、およびセマンティックな相互運用性に焦点を合わせている。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0053】
ここで
図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されるとおり、クラウド・コンピューティング環境50は1つ以上のクラウド・コンピューティング・ノード10を含み、たとえばパーソナル・デジタル・アシスタント(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車のコンピュータ・システム54N、あるいはその組み合わせなどの、クラウド消費者によって用いられるローカル・コンピュータ・デバイスが、このクラウド・コンピューティング・ノード10によって通信してもよい。ノード10は互いに通信してもよい。これらのノードは、たとえば上述したプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つ以上のネットワークにおいて、物理的または仮想的にグループ化(図示せず)されてもよい。このことは、クラウド・コンピューティング環境50がインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせを、クラウド消費者がそれに対するリソースをローカル・コンピュータ・デバイスにおいて維持する必要のないサービスとして提供することを可能にする。
図1に示されるコンピュータ・デバイス54A~Nのタイプは単なる例示であることが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークもしくはネットワーク・アドレス可能接続(例、ウェブ・ブラウザを使用するもの)またはその両方を通じて、任意のタイプのコンピュータ・デバイスと通信できることが理解される。
【0054】
ここで
図2を参照すると、クラウド・コンピューティング環境50(
図1)によって提供される機能的抽象化レイヤのセットが示されている。
図2に示されるコンポーネント、レイヤ、および機能は単なる例示であることが意図されており、本発明の実施形態はそれらに限定されないことが予め理解されるべきである。示されるとおり、以下のレイヤおよび対応する機能が提供される。
【0055】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(縮小命令セット・コンピュータ(Reduced Instruction Set Computer))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク形成コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0056】
仮想化レイヤ70は抽象化レイヤを提供し、この抽象化レイヤから仮想エンティティの以下の例が提供されてもよい。仮想マシン71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0057】
一例において、管理レイヤ80は以下に記載される機能を提供してもよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを行うために使用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計測および価格決定82は、クラウド・コンピューティング環境内でリソースが使用される際のコスト追跡と、これらのリソースの消費に対する請求書またはインボイスの送付とを提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対するアイデンティティ検証、ならびにデータおよびその他のリソースの保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および実現85は、SLAによって将来の要求が予測されるクラウド・コンピューティング・リソースに対する事前の取り決めおよびその調達を提供する。
【0058】
ワークロード・レイヤ90は、クラウド・コンピューティング環境が使用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室の教育配信93、データ分析処理94、トランザクション処理95、およびソース・コード・バージョニング96を含む。これらは単なるいくつかの例であり、他の実施形態におけるレイヤは異なるサービスを含み得ることが理解される。
【0059】
図3は、本発明の1つ以上の実施形態によるホスティング・ノード10の例を示している。ホスティング・ノード10は、ネットワーク165を介して1つ以上のクライアント・デバイス20A~20Cと通信する。加えて、クライアント・デバイス20A~20Cは、ホスティング・ノード10と直接通信し得る。ホスティング・ノード10は、クラウド・コンピューティング・プロバイダのデータセンタまたはホスト・サーバであり得る。ホスティング・ノード10は、1つ以上の仮想マシン15(15A~15N)の配置を促進するハイパーバイザ12を実行する。ホスティング・ノード10はさらにセキュア・インターフェース制御11を含み、セキュア・インターフェース制御11は1つ以上のハードウェア・モジュールと、ハイパーバイザ12が仮想マシン15に1つ以上のサービスを提供することを促進するミリコードとを含む。既存の技術的解決策においては、ハイパーバイザ12とセキュア・インターフェース制御11との間、セキュア・インターフェース制御11と1つ以上のVM15との間、ハイパーバイザ12と1つ以上のVM15との間、およびセキュア・インターフェース制御11を通じたハイパーバイザ12からVM15への通信が存在する。セキュアVM環境を促進するために、本発明の1つ以上の実施形態によるホスティング・ノード10は、ハイパーバイザ12と1つ以上のVM15との間に任意の直接通信を含まない。
【0060】
たとえば、ホスティング・ノード10はクライアント・デバイス20Aが仮想マシン15A~15Nの1つ以上を配置することを促進できる。仮想マシン15A~15Nは、別個のクライアント・デバイス20A~20Cからのそれぞれの要求に応答して配置されてもよい。たとえば、仮想マシン15Aはクライアント・デバイス20Aによって配置されてもよく、仮想マシン15Bはクライアント・デバイス20Bによって配置されてもよく、仮想マシン15Cはクライアント・デバイス20Cによって配置されてもよい。加えてホスティング・ノード10は、(仮想マシンとして動作することなく)クライアントが物理サーバをプロビジョニングすることを促進してもよい。本明細書に記載される例は、「仮想マシン」の一部としてのホスティング・ノード10のリソースのプロビジョニングを具現化するが、記載される技術的解決策は、リソースを物理サーバの一部としてプロビジョニングすることに適用され得る。
【0061】
一例において、クライアント・デバイス20A~20Cは、たとえば人、ビジネス、政府機関、会社の部署、または任意のその他のエンティティなどの同じエンティティに属していてもよく、ホスティング・ノード10はそのエンティティのプライベート・クラウドとして動作されてもよい。この場合、ホスティング・ノード10は、そのエンティティに属するクライアント・デバイス20A~20Cによって配置された仮想マシン15A~15Nのみをホストする。別の例において、クライアント・デバイス20A~20Cは別個のエンティティに属していてもよい。たとえば、第1のエンティティはクライアント・デバイス20Aを所有してもよく、一方で第2のエンティティはクライアント・デバイス20Bを所有してもよい。この場合、ホスティング・ノード10は、異なるエンティティからの仮想マシンをホストするパブリック・クラウドとして動作されてもよい。たとえば、仮想マシン15A~15Nは、仮想マシン15Aが仮想マシン15Bへのアクセスを促進しないような覆い隠された方式で配置されてもよい。たとえば、ホスティング・ノード10はIBM z Systems(IBM社の登録商標)プロセッサ・リソース/システム・マネージャ(PR/SM:Processor Resource/Systems Manager)ロジカル・パーティション(LPAR:Logical Partition)機構を用いて、仮想マシン15A~15Nを覆い隠してもよい。たとえばPR/SM LPARなどのこれらの機構は、パーティション間の分離を提供することによって、ホスティング・ノード10が異なるエンティティに対する2つ以上の仮想マシン15A~15Nを同じ物理ホスティング・ノード10の異なるロジカル・パーティションに配置することを促進する。
【0062】
クライアント・デバイス20A~20Cのうちのクライアント・デバイス20Aは、たとえばコンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、またはホスティング・ノード10のハイパーバイザ12による仮想マシンの配置を要求する任意のその他の通信装置などの通信装置である。クライアント・デバイス20Aは、ネットワーク165を介するか、または直接的にハイパーバイザが受信するための要求を送信してもよい。仮想マシン15A~15Nのうちの仮想マシン15Aは、クライアント・デバイス20A~20Cのうちのクライアント・デバイス20Aからの要求に応答してハイパーバイザ12が配置する仮想マシン・イメージである。ハイパーバイザ12は仮想マシン・モニタ(VMM:virtual machine monitor)であり、これは仮想マシンを作成および実行するソフトウェア、ファームウェア、またはハードウェアであってもよい。ハイパーバイザ12は、仮想マシン15Aがホスティング・ノード10のハードウェア・コンポーネントを用いてプログラムの実行もしくはデータの記憶またはその両方を行うことを促進する。適切な特徴および修正を伴うハイパーバイザ12は、IBM z Systems(IBM社の登録商標)、オラクル(ORACLE)VM SERVER(TM)、シトリックス(CITRIX)XENSERVER(TM)、ブイエムウェア(VMWARE)ESX(TM)、マイクロソフト(MICROSOFT)(R)HYPER-V(TM)、または任意のその他のハイパーバイザであってもよい。ハイパーバイザ12は、ホスティング・ノード10において直接実行されるネイティブ・ハイパーバイザであってもよいし、別のハイパーバイザにおいて実行されるホステッド・ハイパーバイザであってもよい。
【0063】
図4は、本発明の1つ以上の実施形態によるホスティング・ノードの例のコンポーネントを示している。ホスティング・ノード10は、たとえばサーバ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、またはハイパーバイザ12を実行する任意のその他のコンピュータなどのコンピュータであってもよく、このハイパーバイザ12が次に仮想マシン15A~15Nを配置する。ホスティング・ノード10は、たとえば電子回路などのハードウェアを含むコンポーネントを含む。ホスティング・ノード10は、他のコンポーネントの中でも特に、プロセッサ105と、メモリ・コントローラ115に結合されたメモリ110と、たとえばローカルI/Oコントローラ135を介して通信可能に結合された周辺デバイスまたは制御デバイスなどの1つ以上の入力デバイス145もしくは出力デバイス140またはその両方とを含む。これらのデバイス140および145は、たとえば電池センサ、位置センサ(高度計、加速度計、GPS)、およびインジケータ/識別ライトなどを含んでもよい。たとえば従来のキーボード150およびマウス155などの入力デバイスが、I/Oコントローラ135に結合されてもよい。当該技術分野において公知であるとおり、I/Oコントローラ135は、たとえば1つ以上のバスまたはその他の有線もしくはワイヤレス接続などであってもよい。I/Oコントローラ135は、簡略化のために省略された付加的なエレメントを有してもよく、それはたとえば通信を可能にするためのコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、および受信機などである。
【0064】
I/Oデバイス140、145はさらに、入力および出力の両方と通信するデバイスを含んでもよく、それはたとえばディスクおよびテープ・ストレージ、ネットワーク・インターフェース・カード(NIC:network interface card)または変調器/復調器(他のファイル、デバイス、システム、またはネットワークにアクセスするためのもの)、無線周波数(RF:radio frequency)またはその他のトランシーバ、電話のインターフェース、ブリッジ、およびルータなどである。
【0065】
プロセッサ105は、特にメモリ110に記憶されたハードウェア命令またはソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ105は、特注されるかまたは商業的に入手可能なプロセッサ、中央処理ユニット(CPU:central processing unit)、ホスティング・ノード10に関連するいくつかのプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップまたはチップ・セットの形態)、マクロプロセッサ、または命令を実行するためのその他のデバイスであってもよい。プロセッサ105はキャッシュ170を含み、キャッシュ170は、実行可能命令フェッチを加速するための命令キャッシュ、データ・フェッチおよび記憶を加速するためのデータ・キャッシュ、ならびに実行可能命令およびデータの両方に対する仮想対物理アドレス変換を加速するために用いられる変換ルックアサイド・バッファ(TLB:translation lookaside buffer)を含んでもよいが、これに限定されない。キャッシュ170は、より多くのキャッシュ・レベル(L1、L2など)の階層として組織化されてもよい。
【0066】
メモリ110は、揮発性メモリ・エレメント(たとえば、ランダム・アクセス・メモリ(random access memory)RAM、たとえばDRAM、SRAM、SDRAMなど)および不揮発性メモリ・エレメント(たとえば、フラッシュ・メモリ、ROM、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read only memory)、電気的消去可能プログラマブル・リード・オンリ・メモリ(EEPROM:electronically erasable programmable read only memory)、プログラマブル・リード・オンリ・メモリ(PROM)、テープ、コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read only memory)、ディスク、ディスケット、カートリッジ、またはカセットなど)のうちの1つまたは組み合わせを含んでもよい。さらに、メモリ110は電子、磁気、光学、またはその他のタイプのストレージ媒体を組み込んでもよい。なお、メモリ110は、さまざまなコンポーネントが互いに離れて位置しているがプロセッサ105によってアクセスされ得るような分散型アーキテクチャを有してもよい。
【0067】
メモリ110内の命令は、1つ以上の別個のプログラムを含んでもよく、各々のプログラムは論理機能を実現するための実行可能命令の順序付きリストを含む。
図4の例において、メモリ110内の命令は、ハイパーバイザ12を実行する好適なオペレーティング・システム(OS)を含む。オペレーティング・システムは、他のコンピュータ・プログラムの実行を制御してもよく、スケジューリング、入力-出力制御、ファイルおよびデータ管理、メモリ管理、ならびに通信制御および関連サービスを提供する。たとえばz System(IBM社の登録商標)などの例において、ホスティング・ノード10の製造者はハイパーバイザ12を提供してもよい。z System(IBM社の登録商標)とは異なる構造を有する、ハードウェア製造者によってハイパーバイザ12が提供されないシステムの場合には、提供されるクラウド・コンピューティングは、たとえばVMWARE(TM)またはその他のハイパーバイザ・プロバイダなどからのハイパーバイザ12を用いてもよい。一例において、物理ホスティング・ノード10の管理者は、製造者によって提供されるサービスを適用するために必要なとき以外はハイパーバイザ12を修正できない。たとえば、ハイパーバイザ12は、ホスティング・ノード10に対する「ライセンス内部コード(LIC:Licensed Internal Code)」もしくはマイクロコードまたはその両方の一部として提供されてもよい。
【0068】
たとえばプロセッサ105に対する命令またはその他の検索可能な情報などを含む付加的なデータがストレージ120に記憶されてもよく、ストレージ120はたとえばハード・ディスク・ドライブまたは固体ドライブなどのストレージ・デバイスであってもよい。メモリ110またはストレージ120に記憶された命令は、プロセッサが本開示のシステムおよび方法の1つ以上の態様を実行することを可能にする命令を含んでもよい。
【0069】
ホスティング・ノード10はさらに、ユーザ・インターフェースまたはディスプレイ130に結合されたディスプレイ・コントローラ125を含んでもよい。いくつかの実施形態において、ディスプレイ130はLCDスクリーンであってもよい。他の実施形態において、ディスプレイ130は複数のLED状態ライトを含んでもよい。いくつかの実施形態において、ホスティング・ノード10はさらに、ネットワーク165への結合のためのネットワーク・インターフェース160を含んでもよい。ネットワーク165は、ブロードバンド接続を介したホスティング・ノード10と外部サーバおよびクライアントなどとの通信のためのIPベースのネットワークであってもよい。ある実施形態において、ネットワーク165は衛星ネットワークであってもよい。ネットワーク165は、ホスティング・ノード10と外部システムとの間でデータを送信および受信する。いくつかの実施形態において、ネットワーク165は、サービス・プロバイダによって管理されるマネージドIPネットワークであってもよい。ネットワーク165は、たとえばWiFi、WiMax、衛星、または任意のその他のものなどのワイヤレス・プロトコルおよび技術などを用いたワイヤレス方式で実現されてもよい。加えてネットワーク165は、たとえばローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似のタイプのネットワーク環境などのパケット・スイッチ・ネットワークであってもよい。ネットワーク165は、固定ワイヤレス・ネットワーク、ワイヤレス・ローカル・エリア・ネットワーク(LAN:local area network)、ワイヤレス広域ネットワーク(WAN:wide area network)、パーソナル・エリア・ネットワーク(PAN:personal area network)、仮想プライベート・ネットワーク(VPN:virtual private network)、イントラネット、またはその他の好適なネットワーク・システムであってもよく、信号を受信および送信するための機器を含んでもよい。
【0070】
クライアント・デバイス20Aはハイパーバイザ12に対して、ホスティング・ノード10の特定のハードウェアもしくはソフトウェアまたはその両方のコンポーネントへのアクセスを有する対応仮想マシン15Aを配置することを要求してもよい。たとえばクライアント・デバイス20Aは、仮想マシン15Aが予め定められた数のプロセッサ、予め定められた容量の揮発性メモリ(たとえばランダム・アクセス・メモリ(RAM)など)、予め定められた容量の不揮発性メモリ(たとえばストレージ・スペースなど)、または任意のその他のハードウェア・コンポーネントにアクセスできることを要求してもよい。代替的または付加的に、クライアント・デバイス20Aは、仮想マシン15Aが、たとえば対応する独自の識別子によって識別された電子回路などの特定のハードウェア・コンポーネントにアクセスできることを要求してもよい。たとえば、クライアント・デバイス20Aは、仮想マシン15Aが特定のタイプのプロセッサ、コプロセッサ、ネットワーク・カード、または任意のその他のチップもしくは電子回路にアクセスできることを要求してもよい。一例において、クライアント・デバイス20Aは、電子回路の製造者によって提供された識別子を用いて電子回路を識別してもよい。一例において、識別子はバージョン識別子とともに用いられてもよい。代替的または付加的に、クライアント・デバイス20Aは、仮想マシン15Aが、たとえばオペレーティング・システム、アプリケーション、基本入力/出力システム(BIOS:basic input/output system)、ブート・イメージ、または任意のその他のソフトウェア・コンポーネントなどの特定のソフトウェア・コンポーネントにアクセスできることを要求してもよい。要求されるソフトウェア・コンポーネントは、ファームウェアおよびホスティング・ノード10のハードウェア・コンポーネント内の埋め込みプログラムを含んでもよい。クライアント・デバイス20Aは、それぞれのソフトウェア・コンポーネントの開発者/製造者によって提供されるそれぞれの独自の識別子を用いて、要求されるソフトウェア・コンポーネントを識別してもよい。一例において、識別子はソフトウェア・コンポーネントのバージョン識別子とともに用いられてもよい。
【0071】
前に記したとおり、セキュアVMとなる仮想マシン15Aに対して、その仮想マシン15Aに関連するメモリ110、ストレージ120、レジスタ、および任意のその他のデータの部分(単数または複数)に対するすべての非セキュア・ゲストおよびハイパーバイザ12によるアクセスが禁止される。1つ以上の例において、ハイパーバイザ12は、任意の所与の常駐のセキュア・ゲスト・ページに対して、関連するホスト絶対アドレスが、単一のハイパーバイザ(ホスト)DATマッピングのみを通じてアクセス可能であることを保証する。すなわち、セキュアVM15Aに割り当てられた任意の所与のホスト絶対アドレスにマップされる単一のホスト仮想アドレスが存在する。さらに、任意の所与のセキュア・ゲスト・ページに関連するハイパーバイザDATマッピング(ホスト仮想対ホスト絶対)は、ページインされている間は変わらない。さらに、任意のセキュア・ゲスト・ページに関連するホスト絶対ページは、単一のセキュア・ゲストのみに対してマップされる。加えて、特にセキュアVM15Aの場合には、仮想マシン15間のメモリ/レジスタの共有は存在しない。さらに、1つ以上の例において、ハイパーバイザ12は、ストレージ120のセキュア部分をセキュア・インターフェース制御11に割り当てる。このストレージ120のセキュア部分は、一旦割り当てられるとセキュア・インターフェース制御11のみによってアクセス可能である。セキュア・インターフェース制御11に一旦割り当てられると、仮想マシン15もしくはハイパーバイザ12またはその両方はどれもセキュア部分の内容にアクセスできなくなる。
【0072】
これらの規則に違反しようとする任意の試みは、セキュア・インターフェース制御11およびホスティング・ノード10によって禁止され、かつ警告を発生させることができる。警告は、1人以上の職員に通知を送信すること、ホスティング・ノード10の動作を遮断すること、1つ以上のクライアント・デバイス20からの要求を遮断すること、およびセキュアVM15(および任意のその他のセキュアVM)の動作を遮断することなどによって生じ得る。
【0073】
図5は、本発明の1つ以上の実施形態によるハイパーバイザがセキュアVMからのゲスト命令の透過的な解釈を行う方法の例の流れ図を示している。この方法は、501において、クライアント・デバイス20AからセキュアVM15Aを開始するための要求を受信することを含み得る。1つ以上の例において、この要求は、たとえば別のVM15B~15N、ハイパーバイザ12によって実行されているコンピュータ・アプリケーション、および管理者などの任意の他のソースから受信されてもよい。
【0074】
この方法は、セキュアVM15Aに対する非セキュア状態記述子(SD:state descriptor)を作成することを含む。1つ以上の例において、非セキュアSDは、ハイパーバイザ12またはその他の非セキュア・エンティティによるアクセスが不可能なメモリの一部分に記憶されたセキュアSDに対する参照を含む。たとえば、セキュア・インターフェース制御11はセキュアSDを作成し、そのセキュアSDに対する参照を非セキュアSDに付加する。セキュアSDは、VM汎用レジスタ(GR:general registers)、アクセス・レジスタ(AR:access registers)、制御レジスタ(CR:control registers)、VMタイマー(クロック・コンパレータおよびCPUタイマーを含む)、VMプレフィックス・レジスタ、仮想CPU番号(VCN:virtual CPU number)、プログラム状況ワード(PSW:program-status word)、および命令アドレス(IA:instruction address)を含み得る。加えてSDは、たとえば特定の命令(例、ロード・プログラム状況ワード(LPSW:Load Program Status Word)および無効化ページ・テーブル・エントリ(IPTE:Invalidate Page Table Entry)など)がホストに対するインターセプトを必要とするかどうか、またはVM命令実行を開始し得る前にVM変換ルックアサイド・バッファ(TLB)のパージが必要かどうかを示すためのインターセプト制御(IC:interception control)ビットなどの制御情報を含み得る。上述のSDフィールドは例示的なものであり、たとえば他のVM状態に対するさまざまな他のフィールドを含むものなど、本発明の1つ以上の実施形態においては異なっていてもよい。非セキュアVMの場合は、非セキュアSD自体が、セキュアVMの場合にセキュアSDの一部として記載された上記のフィールド/パラメータを含む。
【0075】
ハイパーバイザ12はオペランドとして非セキュアSDを有するSIE命令を発行し、この命令の実行はセキュア・インターフェース制御11が取り扱う。VM15をディスパッチして、プロセッサ(単数または複数)105およびその他のコンピューティング・リソースをVM15に割り当てるために、SIE(解釈実行開始(start interpretive execution))命令が用いられる。SIE命令は、プロセッサ105を非セキュアSDにおいて定められるエミュレーション状態にする。セキュアVMの場合は、セキュアVM15Aのディスパッチを開始するためにセキュアSDがアクセスされる。1つ以上の例において、非セキュアSDは、ディスパッチされるVMがセキュア/非セキュアであるかどうかを示すための識別子を含み、したがってセキュア・インターフェース制御11はメモリの適切なセキュア/非セキュア部分からフィールド/パラメータにアクセスする。
【0076】
505において、この方法はさらに、セキュアVM15Aにおいてゲスト命令を実行することを含む。510において、インターセプト条件をもたらす命令に遭遇するまで、セキュアVM15Aの命令ストリームは実行を継続できる。510および515において、命令がインターセプト条件をもたらしたとき、そのインターセプト命令を有するVMは、そのVMがセキュアVMとしてディスパッチされたかどうかを判定する。
【0077】
VMが非セキュアVMとしてディスパッチされているとき、ハイパーバイザ12はそのVMに関連するデータもしくはメモリまたはその両方にアクセスでき、520においてインターセプト命令の実行は既存の解決策と同様に進行する。セキュア・インターフェース制御は、VMのSDに記憶された状態フラグに基づいて、そのVMがセキュアまたは非セキュアVMとしてディスパッチされたかどうかを判定する。
【0078】
VMが非セキュアVMである場合は、非セキュアVMにおける命令ストリームの実行が停止され、制御はハイパーバイザ12に移され、ハイパーバイザ12は非セキュアVMのSDに直接アクセスして非セキュアVMのデータにアクセスすることによって、インターセプト命令を解釈する。たとえば、ハイパーバイザ12によって使用されるデータは、GR、CR、ゲスト・メモリ、もしくは非セキュアVMのその他のレジスタ、またはその組み合わせに記憶された値を含み得る。インターセプトされた命令の解釈が完了したとき、ハイパーバイザ12は応答において1つ以上の値を記憶することによって、ゲスト状態を適切に更新する。たとえばハイパーバイザ12は、非セキュアVMのSDが維持されているメモリ位置においてこれらの値を更新することによって、非セキュアVMの1つ以上のレジスタに更新された値を直接記憶する。ハイパーバイザ12は、命令解釈の一部としてゲスト・メモリも更新してもよい。
【0079】
代わりに、もしVMがセキュアVM15Aであれば、525において、インターセプト命令を実行するためにセキュア・インターフェース制御11が呼び出される。530において、セキュア・インターフェース制御11は、その命令が実行によって抑制または無効化プログラム例外をもたらすはずであるかどうかを判定する。セキュア・インターフェース制御11はインターセプト命令の実行をシミュレートして、その実行がプログラム例外をもたらし得るかどうかを判定する。たとえば、その命令はホスティング・ノード10において利用できないコンピューティング・リソースを要求し得る。代替的または付加的に、インターセプト命令はセキュアVM15Aが実行されている特権レベルにおいて許可されない命令であり得る。代替的または付加的に、インターセプト命令はメモリ・アクセスの際の境界条件に反し得る。セキュア・インターフェース制御11は、インターセプト命令の実行によってもたらされ得る任意のその他のタイプのプログラム例外をチェックできる。もしインターセプト命令の実行によって例外が発生すれば、535において、セキュア・インターフェース制御11はセキュアVM15Aに例外を提供する。
【0080】
1つ以上の例において、プログラム割り込みのタイプによって命令は抑制または無効化される。もし抑制または無効化ゲスト例外が適用されれば、命令インターセプトはハイパーバイザ12に到達せず、代わりにプログラム例外に対処するためにセキュアVM15Aの割り込みハンドラに制御が直接与えられる。最初にプログラム例外に対処する必要があるため、ハイパーバイザに対する命令をインターセプトする理由がない。たとえば、LCTLG命令がインターセプトされ、かつ命令に対して提供されたストレージ・オペランドがページ・フォールトを有するとき、最初にページ・フォールトを解決するためにセキュアVM15Aにプログラム例外が与えられる。ページ・フォールトが解決されると、LCTLGが再び実行され、このときプログラム例外は伴わない。したがってその後の実行において、本明細書に記載される特徴を用いて、ハイパーバイザ12に対して命令がインターセプトされる。
【0081】
いくつかのプログラム例外は、ホストに関係する。こうした場合はSIEエグジットが呼び出され、ハイパーバイザ12にプログラム例外が提供される。たとえばホスト・ページ・フォールトの場合、ハイパーバイザ12はゲスト・ページをホスト絶対ページにマップし、次いでVMを再ディスパッチする。
【0082】
なお、プログラム例外は無効化、抑制、および完了を行い得る。抑制または無効化の違いは、命令アドレス(IA:Instruction Address)が更新されるやり方にある。無効化例外において、IAは例外の原因となった命令を指しており、一方で抑制例外において、IAは例外を伴う命令の後の、次の順序の命令を指す。どちらの場合にも、ゲスト状態またはメモリに対する他の更新は行われない。
【0083】
代わりに、インターセプト命令の結果として完了例外がもたらされるとき、537においてセキュア・インターフェース制御11は、インターセプト命令に対する完了例外(単数または複数)フラグを検出しマーク付けする。プログラム事象記録(PER:Program Event Recording)などの完了例外は通常、関連する命令の完了後に提供される。非セキュアVM環境において、ハイパーバイザ12はこうしたPER例外を検出し、ハイパーバイザ12はゲスト命令の解釈を終了したときにそれらのPER例外をVMに提供する。セキュアVM環境において、セキュア・インターフェース制御11はこうしたPERプログラム例外を検出し、ゲスト命令の実行が終了したときにそれらのPERプログラム例外がセキュアVMに提供されるようにマーク付けする。
【0084】
さらに、540において、セキュア・インターフェース制御11はどの命令がインターセプトされているかをチェックする。たとえば、セキュア・インターフェース制御11は、インターセプトされるべき命令および場合によってはその命令の1つ以上のオペランドに基づいて、その命令をセキュア・インターフェース制御11自身によって解釈できるかどうかを判定する。たとえばゲスト非同期割り込み(例、LCTLG命令)をイネーブルし得るゲスト制御レジスタの書込みなどのいくつかの動作は、通常セキュア・インターフェース制御によって完了されてからインターセプトされ、最小限必要なゲスト状態をハイパーバイザ12に提供することで、ハイパーバイザ12は任意の過去にアクティブだったがディスエーブルされたゲスト割り込みがイネーブルされたかどうかをチェックできる。次いでハイパーバイザ12は保留およびイネーブルされたゲスト割り込みの優先順位付けをして、最高優先順位の割り込みをセキュア・インターフェース制御を通じてゲストにセキュアに提供する。本発明の1つ以上の実施形態によると、セキュアVM環境において、セキュア・インターフェース制御11はセキュアVMの代わりにLCTLG解釈を解釈する。同様に、非セキュアVMに対してハイパーバイザ12に戻ってインターセプトを行うセット・プレフィックス(SPX:Set Prefix)命令に対して、本発明の1つ以上の実施形態においては、セキュア・インターフェース制御11による解釈が行われることとなる。オペランドがセキュア・インターフェース制御11によってアクセス可能であるとき、その命令はセキュア・インターフェース制御11によって解釈可能とみなされ得る。命令がセキュア・インターフェース制御11によって解釈可能であるとき、545において、その命令実行はセキュア・インターフェース制御11自身によって完了され、セキュアVM15Aの命令ストリームは再開される。
【0085】
命令がセキュア・インターフェース制御11自身によって解釈可能でないとき、550において、セキュア・インターフェース制御11はそのゲスト命令に関連する部分的完了フラグを第1の状態にセットし、たとえば部分的完了=1とする。本文書においては、部分的完了フラグが第1の状態=1および第2の状態=0を有することが記載されているが、本発明の1つ以上の実施形態においては2つの状態に対して他の値も使用され得ることが理解される。
【0086】
さらに552において、セキュア・インターフェース制御11はインターセプト命令を含むセキュアVM15Aに関連するロックVMフラグを第1の状態にセットし、たとえばロックVM=1とする。本文書においては、ロックVMフラグが第1の状態(例、=1)および第2の状態(例、=0)を有することが記載されているが、本発明の1つ以上の実施形態においては2つの状態に対して他の値も使用され得ることが理解される。ロックVMフラグは、セキュアVM15Aが「ロック」されているか、すなわち命令ストリームの実行が停止されて、命令解釈の完了を待っている状態であるかどうかを示すものである。加えてロックVMフラグは、セキュア制御インターフェースによってセキュアVM15Aに転送されたインターセプト命令に対するハイパーバイザ応答が有効化されたかどうかを示す。本明細書に記載される例において、第1の状態(すなわちロックVM=1)ではセキュアVM15Aに対する応答を有効化すべきであるとみなされ、そうでない(すなわちロックVM=0)ときは現時点で応答を有効化する必要はないとみなされる。ロックVMは、ハイパーバイザ12が応答を伴わずに偶発的に、または悪意をもってセキュアVMをディスパッチすることも防ぎ、かつハイパーバイザが命令解釈の完了前にセキュアVM15Aに割り込みの挿入を試みることも防ぐ。したがってロックVMは、解釈されているゲスト命令に対して必要とされる応答をセキュアVM15Aが受信するまで、セキュアVM15Aをロックする。
【0087】
セキュアVM15Aがロック状態であるとき、セキュアVM15Aは命令解釈に関するハイパーバイザ12からの応答を待っていることがセキュア・インターフェース制御11に示される。こうした場合、セキュア・インターフェース制御11はセキュア・インターフェース制御が有効な応答を受信するまでセキュアVM15Aがディスパッチされることを防ぎ、有効な応答を受信した場合にはロックVMフラグの状態が変更される。
【0088】
555において、セキュア・インターフェース制御11はさらに、ハイパーバイザ12が実行する命令をインターセプトする。ハイパーバイザ12に対するインターセプトは、セキュア・インターフェース制御11がメモリのセキュア部分から命令に関連する1つ以上のパラメータ・データを抽出することと、そのパラメータ・データをハイパーバイザ12に対してアクセス可能にすることとを含む。セキュア・インターフェース制御11は命令と、そのオペランドと、そのデータとを調べることによって、セキュアVM15Aからパラメータ・データを抽出できる。オペランドおよびデータは、セキュアVM15Aに関連するハードウェア・レジスタおよびメモリに記憶され得る。SIEエグジットにおいて、ゲスト状態はセキュアSDにセーブされ、インターセプトの理由(およびその他のハイパーバイザ関係の情報)は非セキュアSDにセーブされる。VMが動作していた物理プロセッサはここでフリーになり、ハイパーバイザは同じVMを再ディスパッチしてもよいし、新たなVMを同じ物理プロセッサにディスパッチしてもよい。インターセプトされたゲスト命令に関するロックVMおよびその他の情報はセキュアSDにセーブされて、任意の利用可能なプロセッサに対するVMのディスパッチを可能にする。
【0089】
セキュア・インターフェース制御11は、この特定の命令の実行のために専用バッファを作成するか、またはこうしたインターセプトされたゲスト命令を実行するために用いられる専用バッファを用いることによって、抽出されたパラメータをハイパーバイザ12に対してアクセス可能にできる。セキュア・インターフェース制御11は、セキュアVM15Aからのデータ(ハイパーバイザが命令解釈のために必要とするもの)を専用バッファに記憶して、インターセプトされているゲスト命令の解釈に用いるべきオペランド/データとして、この記憶データをハイパーバイザ12に渡す。
【0090】
ハイパーバイザ12はしばしば、セキュアVM15Aの命令ストリームのうちのどの命令がインターセプトをもたらしたかを正確に知らない。ハイパーバイザ12の側で必要とされる特定の動作のみである。インターセプトの際に、ハイパーバイザ12は、たとえば命令を実行する理由など、解釈に必要とされるもの以外の任意のその他のコンテキストを伴わずに命令解釈を実行するようにスケジュールされる。したがって560において、ハイパーバイザ12は命令のソース/理由に関する知識なしに命令を解釈する。
【0091】
図6は、本発明の1つ以上の実施形態によるインターセプトされたセキュアVM命令の解釈完了後にハイパーバイザからセキュアVMに応答を戻すための方法に対する流れ図を示している。命令解釈が完了した際に、ハイパーバイザ12は任意の割り込み挿入を伴わない(562)か、または割り込み挿入を伴って(564)、セキュアVMをディスパッチする。本明細書に記載されるとおり、ディスパッチはSIE命令を用いて行われ得る。セキュアVMディスパッチ動作の一部として、VMに関連するセキュアSDからゲスト状態が読取られ、プロセッサ・ハードウェア(レジスタ、メモリなど)にロードされる。1つ以上の例において、ハイパーバイザ12は、たとえば識別子などの割り込みパラメータ関連情報と、パラメータとを専用バッファに記憶することによって、セキュア・インターフェース制御11を介してVMに割り込みを挿入する。セキュア・インターフェース制御11は、SIE呼び出しによって実行の制御を受信する。
【0092】
570において、セキュア・インターフェース制御11は、ロックVMフラグが1にセットされているかどうかをチェックする。ロックVM=0(または1に等しくない)であるとき、セキュア・インターフェース制御11は、呼び出されたSIE命令によって異なるVM(インターセプト命令を有さないもの)がディスパッチされているものとみなし、したがって575において異なるVMが入れられ、そのVMに対する命令ストリームの実行が開始される。
【0093】
代替的に、ロックVM=1であるとき、すなわちハイパーバイザ12がインターセプト命令を発行したセキュアVM15Aに実行の制御を戻すとき、580において、セキュア・インターフェース制御11は、ハイパーバイザ12から命令に対する応答が受信されたかどうかをチェックする。セキュア・インターフェース制御11は、ハイパーバイザ12が命令応答を提供するようにセットアップされた専用バッファの指定位置をチェックすることによって、この判定を行う。もし応答が見出されなければ、582において、セキュア・インターフェース制御11はエラー条件によってハイパーバイザ12にインターセプトを行う。もし専用バッファに応答が提供されていれば、585において、セキュア・インターフェース制御11はその応答が有効であることを確認する。もし応答が無効であれば、582において、セキュア・インターフェース制御11はエラー条件によってハイパーバイザ12にインターセプトを行う。
【0094】
1つ以上の例において、セキュア・インターフェース制御11は、ハイパーバイザから受信した応答のタイプに基づいて応答の有効性を確認する。たとえば、提供された応答はインターセプトされた命令タイプに対して有効である。したがって、許可されたインターセプト命令の各々に対して、セキュア・インターフェース制御11は許容される1つ以上の可能な応答タイプを有する。たとえば、セキュア・インターフェース制御11は、インターセプト命令に対して予期される応答タイプのリストによって、応答のデータ・タイプが有効であることをチェックする。たとえば、インターセプト命令がI/O動作の要求であるとき、セキュア・インターフェース制御11は、応答がI/O動作に対して適切なデータ・タイプのものであることを検証するためのチェックを行う。
【0095】
もし応答が有効と判定されれば、この方法は590において、セキュア・インターフェース制御11がハイパーバイザ12からの応答に基づいてセキュアVM15Aの状態を更新することによって進行する。状態を更新することは、セキュアVM15Aに関連するレジスタおよびメモリを更新することを含み得る。セキュアVM15Aに対するSDは、セキュア・インターフェース制御11のみがアクセス可能なメモリのセキュア部分に記憶されているため、セキュア・インターフェース制御11のみがそれにアクセスできる。したがって、この応答はセキュアなままであり、他のVMおよびハイパーバイザ12からはアクセス不可能である。
【0096】
さらに592において、セキュア・インターフェース制御11はインターセプト・ゲスト命令の実行を完了する。この完了は、セキュア・インターフェース制御11が、セキュアVM15Aに対する部分的完了およびロックVMのフラグを第2の状態に更新すること、すなわち部分的完了=0およびロックVM=0にセットすることを含む。595において、セキュア・インターフェース制御11は、インターセプト命令が自身に関連付けられた対応する完了例外を有するかどうかを判定する。もし例外が存在すれば、597において、セキュア・インターフェース制御11は完了例外をセキュアVM15Aに提供し、これはセキュアVM15Aが例外に対処した後に自身が実行していた命令ストリームを再開することを示す。代替的に、もしインターセプト命令に対するプログラム例外が存在しなければ、598において、セキュア・インターフェース制御11は実行の制御をセキュアVM15Aに戻し、セキュアVM15Aは次に命令ストリームを再開する。
【0097】
したがって、本発明の1つ以上の実施形態は、ホスティング・ノードにおけるハイパーバイザによって、セキュアVMに対するゲスト命令を解釈することを促進する。ゲスト命令は通常どおりに(非セキュアVMと同様に)インターセプトされるが、制御はハイパーバイザに直ちに戻されず、代わりにセキュア・インターフェース制御に与えられる。セキュア・インターフェース制御はゲスト・データを抽出して、それをインターセプトの理由とともにハイパーバイザに渡す。ハイパーバイザは要求を処理し、セキュア・インターフェース制御に応答を戻す。
【0098】
セキュア・インターフェース制御は、プログラム事象記録(PER)を含むプログラム例外をチェックし、要求をハイパーバイザに渡す前にゲスト命令が部分的に完了されたとマーク付けする。無効化または抑制プログラム・インターセプトの存在下では、ハイパーバイザへの信号伝達は行われず、プログラム例外が得られる。加えてセキュア・インターフェース制御は、ゲスト命令の結果を更新する前にハイパーバイザの応答をチェックおよび検証する。プログラム事象記録(PER)などの完了タイプのプログラム例外に対して、セキュア・インターフェース制御はその命令が完了プログラム例外を有することをマーク付けし、ハイパーバイザから戻った際に、セキュア・インターフェース制御は命令を完了してプログラム割り込みを強制する。
【0099】
セキュアVMがハイパーバイザに対するインターセプトを行う時間から、ハイパーバイザが応答する時間までの間に、セキュア・インターフェース制御はハイパーバイザが同じVMを任意の物理CPUに対してディスパッチすることを防ぐ。このことによって、部分的に完了した命令が完全に完了するまで、ハイパーバイザがセキュアVMに割り込み(IO、外部またはマシン・チェック)または例外(例、プログラム例外)を挿入することも防がれる。
【0100】
本発明の1つ以上の実施形態によると、コンピュータ・サーバは、ハイパーバイザに命令をインターセプトするか、もしくはセキュアVMに応答を挿入するか、またはその両方を行うために、ハイパーバイザもしくはセキュアVMまたはその両方のコード/アーキテクチャを変更する必要なく、セキュアVMに関連するメモリ、レジスタ、およびその他のデータにハイパーバイザがアクセスすることを禁止するセキュアVMをホストできる。その代わりに、本発明の1つ以上の実施形態によると、ミリコードを含むセキュア・インターフェース制御は、状態記述子の構造の改善と、ストレージ/メモリのセキュア部分とを用いてデータをセキュアにすることを促進する。加えて、セキュア・インターフェース制御はVM状態からのデータを記憶することによって、1つ以上のパラメータをハイパーバイザに対してアクセス可能にすべきである場合に、セキュア・インターフェース制御(ミリコード)がそれを行い得るようにする。
【0101】
本発明の1つ以上の実施形態は、コンピュータ技術、特に仮想マシン・ホスティング・コンピュータ・サーバに根差したものである。さらに、本発明の1つ以上の実施形態は、VMをホストするコンピュータ・サーバがセキュアVMをホストすることを促進することによって、コンピューティング技術自体の動作、特に仮想マシン・ホスティング・コンピュータ・サーバの動作に対する改善を促進するものであり、ここではハイパーバイザさえもがセキュアVMに関連するメモリ、レジスタ、およびその他のこうしたデータにアクセスすることを禁止される。加えて、本発明の1つ以上の実施形態は、ミリコードを含むセキュア・インターフェース制御を用いてセキュアVMとハイパーバイザとの分離を促進することによって、コンピュータ・サーバによってホストされるVMのセキュリティを維持することによって、VMホスティング・コンピュータ・サーバの改善に向けた顕著なステップを提供する。本明細書に記載されるとおり、セキュア・インターフェース制御は、VMの初期化/エグジットの際にセキュア化VM状態に対して実質的なオーバーヘッドを加えることなくセキュリティを促進するための軽量の中間動作を提供する。
【0102】
本発明は、任意の可能な技術的詳細レベルのインテグレーションにおけるシステム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含んでもよい。
【0103】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形デバイスであり得る。コンピュータ可読ストレージ媒体は、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の好適な組み合わせなどであってもよいが、それに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的リストは以下を含む。ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read-only memory)(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械的にコード化されたデバイス、たとえばパンチ・カードまたは記録された命令を有する溝の中の隆起構造など、および前述の任意の好適な組み合わせ。本明細書において用いられるコンピュータ可読ストレージ媒体は、たとえば電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を通じて伝播する電磁波(例、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一時的信号のものであると解釈されるべきではない。
【0104】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得るか、またはたとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0105】
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであってもよく、このプログラミング言語はオブジェクト指向プログラミング言語、たとえばSmalltalk、またはC++など、および手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む。コンピュータ可読プログラム命令は、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)などを含む電子回路は、本発明の態様を行うために電子回路をパーソナライズするためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行してもよい。
【0106】
本明細書においては、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の態様を説明している。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実現され得ることが理解されるだろう。
【0107】
これらのコンピュータ可読プログラム命令は、汎用目的コンピュータ、特定目的コンピュータ、またはマシンを生成するためのその他のプログラマブル・データ処理装置のプロセッサに提供されることによって、そのコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現するための手段を生じてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブル・データ処理装置、もしくはその他のデバイスまたはその組み合わせに特定の方式で機能するように指示できるコンピュータ可読ストレージ媒体にも記憶されることによって、命令が記憶されたコンピュータ可読ストレージ媒体が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作の態様を実現する命令を含む製造物を含んでもよい。
【0108】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにもロードされて、コンピュータに実現されるプロセスを生成するためにコンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを行わせることによって、そのコンピュータ、他のプログラマブル装置、または他のデバイスにおいて実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現してもよい。
【0109】
図面における流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を示すものである。これに関して、流れ図またはブロック図の各ブロックは、指定される論理機能(単数または複数)を実現するための1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的実施において、ブロック内に示される機能は、図面に示されるものとは異なる順序で起こってもよい。たとえば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよいし、関与する機能によってはこれらのブロックがときに逆の順序で実行されてもよい。加えて、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能または動作を行うか、特定目的のハードウェアおよびコンピュータ命令の組み合わせを実施または実行する特定目的のハードウェア・ベースのシステムによって実現され得ることが注目されるだろう。
【0110】
本発明のさまざまな実施形態の説明は例示の目的のために提供されたものであるが、開示される実施形態に対して網羅的または限定的になることは意図されていない。記載される実施形態の範囲および思想から逸脱することなく、当業者には多くの修正および変更が明らかになるだろう。本明細書において用いられる用語は、実施形態の原理、市場に見出される技術に対する実際の適用、または技術的改善点を最もよく説明するか、または他の当業者が本明細書に開示される実施形態を理解できるようにするために選択されたものである。