本明細書に示す図は、例示である。本発明の思想から逸脱することなく、図または図に記載の動作の多くの変形が可能である。たとえば、動作は、異なる順序で実行することも可能であるし、追加、消去、または修正することも可能である。また、用語「結合(coupled)」およびその変化形は、2つの要素間に通信経路を有することを表し、これら要素間の介在要素/接続部のない両者間の直接接続を暗示するものではない。これらの変化形はすべて、本明細書の一部と考えられる。
1つまたは複数の実施形態によれば、本発明は、同じコンピュータのセキュア・インターフェース・コントロールとハードウェアとの間の通信インターフェースの提供に関する。通信インターフェースは、ソフトウェア・レイヤから、最下位レベルのファームウェアおよびハードウェアが提供するセキュア・インターフェース・コントロールまで動作(たとえば、命令)を移動させることによって、ハードウェアが提供する処理効率を利用するように動作する。
ここで、本明細書の態様により具体的に関連する技術の要旨に移ると、コンテキストスイッチは、マシン内で動作するタスク(たとえば、スレッド等のプロセス)の状態を格納するソフトウェア・プロセスであり、タスクを復旧させることができ、実行は、後に同じポイントから再開されるようになる。コンテキストスイッチは、複数のプロセッサによる単一の中央演算処理装置(CPU)の共有を可能にするため、マルチタスク・オペレーティング・システムの不可欠な機能である。コンテキストスイッチは当然ながら、関連するコスト処理オーバヘッドを有する。
ここで、本発明の態様の要旨に移ると、本発明の1つまたは複数の実施形態は、セキュア・ドメインの実行に際して付加的なセキュリティを提供するためにソフトウェアとハードウェアとの間のコンテキストスイッチを必要としない、セキュア・インターフェース・コントロールの効率的かつ軽量の通信インターフェースを提供することによって、技術的課題に対処する。通信インターフェースは特に、セキュア・インターフェース・コントロール機能の呼び出しにハードウェアを利用する。1つまたは複数の実施形態の技術的効果および利益として、コンテキストスイッチおよび関連する処理オーバヘッドの必要がなくなる。
ホスト・ハイパーバイザ(たとえば、非信頼エンティティ)の制御下でゲストとして動作する仮想マシン(VM)は、当該ゲストの仮想化サービスを透過的に提供するため、当該ハイパーバイザに依拠する。これらのサービスは、セキュア・エンティティと、別の非信頼エンティティとの間で、従来からこの他方のエンティティによるセキュア・リソースへのアクセスを可能にする任意のインターフェースに適用され得る。前述の通り、これらのサービスとしては、メモリ管理、命令エミュレーション、および中断処理が挙げられるが、これらに限定されない。たとえば、中断および例外インジェクションの場合、ハイパーバイザは通常、ゲストのプレフィックス・エリア(ローコア)に対する読み出しまたは書き込み、あるいはその両方を行う。本明細書において、用語「仮想マシン(VM:virtual machine)」は、物理マシン(コンピュータ機器、プロセッサ等)およびその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソース等)の論理的表現を表す。VMは、下層のホスト・マシン(物理的なプロセッサまたはプロセッサ集合)上で実行されるソフトウェアとして維持される。ユーザまたはソフトウェア・リソースの観点から、VMは、それ自体の独立した物理マシンに見える。本明細書において、用語「ハイパーバイザ(hypervisor)」および「VMモニタ(VMM:VM Monitor)」は、同じホスト・マシン上の複数の(および、場合により異なる)OSを用いた複数のVMの実行を管理・許可する処理環境またはプラットフォーム・サービスを表す。VMの展開には、VMの導入プロセスおよびVMの起動(または、開始)プロセスが含まれることを理解されたい。別の例において、VMの展開には、VMの起動(または、開始)プロセスが含まれる(たとえば、VMが過去に導入されて既に存在する場合)。
セキュア・ゲスト(たとえば、セキュア・エンティティ)の容易化およびサポートには技術的課題が存在し、ハイパーバイザがVMからのデータにアクセスできず、それにより上記のようなサービスを提供できなくなるように、ハイパーバイザへの依拠なく、ハイパーバイザとセキュア・ゲストとの間にセキュリティを追加する必要がある。
本明細書に記載のセキュア実行は、セキュア・ストレージと非セキュア・ストレージとの間のほか、異なるセキュア・ユーザに属するセキュア・ストレージ間の隔離を保証するハードウェア・メカニズムを提供する。セキュア・ゲストの場合は、「非信頼」非セキュア・ハイパーバイザとセキュア・ゲストとの間にセキュリティが追加される。このため、ゲストに代わってハイパーバイザが通常実行する機能の多くをマシンに組み込む必要がある。本明細書においては、ハイパーバイザとセキュア・ゲストとの間のセキュア・インターフェースを提供する新たなセキュア・インターフェース・コントロール(本明細書においては、「UV」とも称する)について説明する。本明細書においては、セキュア・インターフェース・コントロールおよびUVという用語を区別なく使用している。セキュア・インターフェース・コントロールは、ハードウェアとの協働によって、この付加的なセキュリティを提供する。また、下位レベル・ハイパーバイザがこの非信頼ハイパーバイザの仮想化を提供していてもよく、この下位レベル・ハイパーバイザは、信頼コードで実装された場合、セキュア・インターフェース・コントロールの一部にもなり得る。
一例において、セキュア・インターフェース・コントロールは、内部のセキュアな信頼ハードウェアまたはファームウェア、あるいはその両方により実装される。セキュア・ゲストまたはエンティティの場合、セキュア・インターフェース・コントロールは、セキュア環境の初期化および保守のほか、ハードウェア上のこれらセキュア・エンティティのディスパッチの調整を提供する。セキュア・ゲストは、能動的にデータを使用し、ホスト・ストレージに存在する場合、セキュア・ストレージにおいて「信用(in the clear)」に保たれる。セキュア・ゲスト・ストレージは、単一のセキュア・ゲストによりアクセス可能であり、このことは、ハードウェアによって厳密に強制される。すなわち、ハードウェアは、当該データに対する如何なる非セキュア・エンティティ(ハイパーバイザまたは他の非セキュア・ゲストを含む)のアクセスも、異なるセキュア・ゲストのアクセスも防止する。この例において、セキュア・インターフェース・コントロールは、最下位レベルのファームウェアの信頼された部分として動作する。最下位レベルすなわちミリコードは、実際のところ、ハードウェアの拡張であり、たとえばIBM(登録商標)のzAarchitecture(登録商標)に規定された複雑な命令および機能の実装に用いられる。ミリコードは、ストレージのすべての部分にアクセス可能であり、ストレージは、セキュア実行に関しては、それ自体のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージおよび共有ストレージを含む。これにより、セキュア・ゲストまたは当該ゲストをサポートするハイパーバイザが必要とする任意の機能を提供可能である。また、セキュア・インターフェース・コントロールは、ハードウェアに直接アクセス可能であって、これにより、ハードウェアは、セキュア・インターフェース・コントロールにより確立された条件の制御下でセキュリティ確認を効率的に提供可能となる。
本発明の1つまたは複数の実施形態によれば、ソフトウェアは、UV Call(UVC)命令を使用して、特定の動作の実行をセキュア・インターフェース・コントロールに要求する。たとえば、ハイパーバイザによるUVC命令の使用によって、セキュア・インターフェース・コントロールの初期化、セキュア・ゲスト・ドメイン(たとえば、セキュア・ゲスト設定)の生成、および当該セキュア設定内の仮想CPUの生成が可能となる。また、ハイパーバイザのページインまたはページアウト動作の一部としてのセキュア・ゲスト・ページのインポート(復号およびセキュア・ゲスト・ドメインへの割り当て)およびエクスポート(暗号化およびホストのアクセス許可)にも使用可能である。また、セキュア・ゲストは、ハイパーバイザと共有されるストレージの規定、セキュア・ストレージの共有、およびセキュア・ストレージの保護が可能である。
ここで図1を参照して、この図は、本発明の1つまたは複数の実施形態に係る、ゾーン・セキュリティのテーブル100を大略示している。図1に示すゾーン・セキュリティ・テーブル100は、セキュア・インターフェース・コントロールにより維持されるとともに、セキュア・インターフェース・コントロールおよびハードウェアによる使用によって、セキュア・エンティティがアクセスする任意のページへのセキュア・アクセスを保証する。ゾーン・セキュリティ・テーブル100は、ホスト絶対アドレスによるインデックス110がなされている。すなわち、ホスト絶対ストレージのページごとに1つのエントリが存在する。各エントリは、アクセスするセキュア・エンティティに当該エントリが属することの確認に用いられる情報を含む。
さらに、図1に示すように、ゾーン・セキュリティ・テーブル100は、セキュア・ドメインID120(このページと関連付けられたセキュア・ドメインを識別する)、UVビット130(このページがセキュア・インターフェース・コントロールに提供され、セキュア・インターフェース・コントロールに所有されていることを示す)、無効アドレス比較(DA))ビット140(ホスト絶対として規定されたセキュア・インターフェース・コントロール・ページが関連するホスト仮想アドレスを持たない場合等の特定の状況において、ホストアドレス対比較の無効化に使用される)、共有(SH)ビット150(当該ページが非セキュア・ハイパーバイザと共有されることを示す)、およびホスト仮想アドレス160(このホスト絶対アドレスに対して登録されたホスト仮想アドレスを示す(ホストアドレス対と称する))を含む。なお、ホストアドレス対は、ホスト絶対アドレス-関連する登録されたホスト仮想アドレスを示す。ホストアドレス対は、このページのマッピングを表しており、ハイパーバイザによりインポートされた場合に、その比較によって、ゲストによる使用中はホストによる当該ページの再マッピングを行わないようにする。
仮想ストレージの実ストレージへのマッピングには、動的アドレス変換(DAT)が用いられる。ゲストVMがハイパーバイザの制御下でページング可能なゲストとして動作している場合、ゲストは、DATを使用して、そのメモリに存在するページを管理する。また、ホストは、ゲスト・ページがそのメモリに存在する場合、独立してDATを使用することにより、これらのページを(それ自体のページと併せて)管理する。ハイパーバイザは、DATを用いて、異なるVM間のストレージの隔離または共有、あるいはその両方を提供するほか、ハイパーバイザ・ストレージへのゲスト・アクセスを防止する。ハイパーバイザは、ゲストが非セキュア・モードで動作している場合、すべてのゲスト・ストレージにアクセス可能である。
DATは、共通リソースの共有は許可しつつ、あるアプリケーションを別のアプリケーションから隔離可能である。また、VMの実装も可能にするが、これは、アプリケーション・プログラムの同時処理と併せて、新バージョンのOSの設計およびテストに用いられるようになっていてもよい。仮想アドレスは、仮想ストレージ中の場所を識別する。アドレス空間は、連続した一連の仮想アドレスであって、ストレージ中のバイト位置で識別される関連する絶対アドレスへの各仮想アドレスの変換を可能にする特定の変換パラメータ(DATテーブルを含む)を伴う。
DATでは、マルチテーブル検索を使用して、仮想アドレスを関連する絶対アドレスに変換する。このテーブル構造は通常、ストレージ・マネージャにより規定・維持される。このストレージ・マネージャは、たとえば1ページのページアウトにより別のページを取り込むことによって、複数のプログラム間で絶対ストレージを透過的に共有する。ページのページアウトに際して、ストレージ・マネージャは、たとえば関連するページ・テーブルに無効ビットを設定することになる。ページアウトされたページにプログラムがアクセスを試みる場合、ハードウェアは、プログラム中断(ページ・フォールトと称することが多い)をストレージ・マネージャに提示することになる。これに応答して、ストレージ・マネージャは、要求されたページをページインし、無効ビットをリセットすることになる。これらはすべて、プログラムに対して透過的となるため、ストレージ・マネージャは、ストレージを仮想化して、種々異なるユーザ間で共有可能となる。
仮想アドレスは、主ストレージへのアクセスのためにCPUが使用している場合、最初にDATによって実アドレスへと変換された後、プレフィクシングによって絶対アドレスへと変換される。特定のアドレス空間に関する最高レベルのテーブルの指定(起点および長さ)は、アドレス空間制御要素(ASCE)と呼ばれ、関連するアドレス空間を規定する。
ここで図2を参照して、この図は、本発明の1つまたは複数の実施形態に係る、DATを実行するための例示的な仮想アドレス空間202および204ならびに絶対アドレス空間206を大略示している。図2に示す例においては、(アドレス空間制御要素(ASCE)A208により規定された)仮想アドレス空間202および(ASCE B210により規定された)仮想アドレス空間204という2つの仮想アドレス空間が存在する。ストレージ・マネージャがマルチテーブル検索(セグメント230およびページ・テーブル232a、232b)においてASCE A208を使用することにより、仮想ページA1.V212a1、A2.V212a2、およびA3.V212a3が絶対ページA1.A220a1、A2.A220a2、およびA3.A220a3へとマッピングされる。同様に、2テーブル(234および236)検索においてASCE B210を使用することにより、仮想ページB1.V214b1およびB2.V214b2がそれぞれ絶対ページB1.A222b1およびB2.A222b2へとマッピングされる。
ここで図3を参照して、この図は、本発明の1つまたは複数の実施形態に係る、ハイパーバイザの下で動作するVMのサポートに用いられるネスト状マルチパートDAT変換の一例を大略示している。図3に示す例においては、(ゲストASCE(GASCE)A304により規定された)ゲストA仮想アドレス空間A302および(GASCE B308により規定された)ゲストB仮想アドレス空間B306の両者が共有ホスト(ハイパーバイザ)の仮想アドレス空間325に存在する。図示のように、ゲストAストレージ・マネージャがGASCE A304を使用することにより、ゲストAに属する仮想ページA1.GV 310a1、A2.GV 310a2、およびA3.GV 310a3がそれぞれゲスト絶対ページA1.HV 340a1、A2.HV 340a2、およびA3.HV 340a3へとマッピングされ、ゲストBストレージ・マネージャがGASCE B308を使用することにより、ゲストBに属する仮想ページB1.GV 320b1およびB2.GV 320b2がそれぞれ独立してゲスト絶対ページB1.HV 360b1およびB2.HV 360b2へとマッピングされる。この例において、これらのゲスト絶対ページは、共有ホスト仮想アドレス空間325に直接マッピングされた後、付加的なホストDAT変換によって、ホスト絶対アドレス空間330にマッピングされる。図示のように、ホスト・ストレージ・マネージャがホストASCE(HASCE)350を使用することにより、ホスト仮想アドレスA1.HV 340a1、A3.HV340a3、およびB1.HV360b1がA1.HA 370a1、A3.HA 370a3、およびB1.HA 370b1にマッピングされる。ゲストAに属するホスト仮想アドレスA2.HV 340a2およびゲストBに属するB2.HV 360b2の両者は、同じホスト絶対ページAB2.HA 380にマッピングされる。これにより、2つのゲスト間でデータを共有可能となる。ゲストDAT変換中、ゲスト・テーブル・アドレスはそれぞれ、ゲスト絶対として処理され、付加的なネスト状ホストDAT変換を受ける。
本明細書に記載の本発明の実施形態は、セキュア・ゲストおよびUVストレージ保護を提供する。非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスが禁止される。ハイパーバイザは、所与の内在するセキュア・ゲスト・ページに対して、以下を提供する。関連するホスト絶対アドレスは、単一のハイパーバイザ(ホスト)DATマッピングによってのみアクセス可能である。すなわち、セキュア・ゲストに割り当てられた任意の所与のホスト絶対アドレスに対して、単一のホスト仮想アドレスがマッピングされる。また、所与のセキュア・ゲスト・ページと関連付けられたハイパーバイザDATマッピング(ホスト仮想-ホスト絶対)は、ページインの間は変化しない。セキュア・ゲスト・ページと関連付けられたホスト絶対ページは、単一のセキュア・ゲストに対してマッピングされる。
また、本発明の1つまたは複数の実施形態によれば、セキュア・ゲスト間のストレージの共有も禁止される。ストレージは、単一のセキュア・ゲストの制御の下、当該セキュア・ゲストとハイパーバイザとの間で共有される。UVストレージは、セキュア・ストレージであり、セキュア・インターフェース・コントロールによるアクセスが可能である一方、ゲスト/ホストはアクセス不可能である。ストレージは、ハイパーバイザによってセキュア・インターフェース・コントロールに割り当てられる。本発明の1つまたは複数の実施形態によれば、これらのルールに対する如何なる違反未遂も、ハードウェアおよびセキュア・インターフェース・コントロールにより禁止されている。
ここで図4を参照して、この図は、本発明の1つまたは複数の実施形態に係る、セキュア・ゲスト・ストレージのマッピングの一例を大略示している。図4の例は、セキュア・ゲストAとセキュア・ゲストBとの間のストレージの共有を許可しない点を除いて、図3に類似する。図3の非セキュアな例では、ゲストAに属するホスト仮想アドレスA2.HV 340a2およびゲストBに属するB2.HV 360b2の両者が同じホスト絶対ページAB2.HA 380にマッピングされる。図4のセキュア・ゲスト・ストレージの例では、ゲストAに属するホスト仮想アドレスA2.HV 340a2がホスト絶対アドレスA2.HA 490aにマッピングされる一方、ゲストBに属するB2.HV 360b2がそれ自体のB2.HA 490bにマッピングされる。この例においては、セキュア・ゲスト間の共有が存在しない。
セキュア・ゲスト・ページは、ディスク上に存在する間、暗号化されている。ハイパーバイザは、セキュア・ゲスト・ページをページインすると、UV Call(UVC)を発行するが、これによりセキュア・インターフェース・コントロールが当該ページを(共有されていなければ)セキュアとしてマーキングし、(共有されていなければ)復号し、適当なセキュア・ゲスト(たとえば、ゲストA)に属するものとして(ゾーン・セキュリティ・テーブルに)登録する。また、セキュア・インターフェース・コントロールは、関連するホスト仮想アドレス(たとえば、A3.HV 340a3)を当該ホスト絶対ページ(ホストアドレス対と称する)に登録する。ハイパーバイザは、正しいUVCを発行できない場合、セキュア・ゲスト・ページにアクセスしようとした場合に例外を受信する。ハイパーバイザがゲスト・ページをページアウトすると、ゲスト・ページを非セキュアとしてゾーン・セキュリティ・テーブルに登録する前に、ゲスト・ページを暗号化した類似のUVCが(共有されていなければ)発行される。
所与の5つのホスト絶対ページK、P、L、M、およびNを有する一例においては、ハイパーバイザがページインした場合に、セキュア・インターフェース・コントロールによってホスト絶対ページがそれぞれセキュアとしてマーキングされる。これにより、非セキュア・ゲストおよびハイパーバイザのアクセスを防止する。ホスト絶対ページK、P、およびMは、ハイパーバイザがページインした場合に、ゲストAに属するものとして登録され、ホスト絶対ページLおよびNは、ハイパーバイザがページインした場合に、ゲストBに属するものとして登録される。共有ページ(単一のセキュア・ゲストとハイパーバイザとの間で共有されたページ)は、ページング中に暗号化も復号もされない。これらは、セキュアとしてマーキングされない(ハイパーバイザによるアクセスを許可する)が、ゾーン・セキュリティ・テーブル中に単一のセキュア・ゲスト・ドメインで登録される。
本発明の1つまたは複数の実施形態によれば、セキュア・ゲストが所有するページに非セキュア・ゲストまたはハイパーバイザがアクセスしようとする場合、ハイパーバイザは、セキュア・ストレージ・アクセス(PIC3D)の例外を受信する。この決定のために変換ステップを追加する必要はない。
1つまたは複数の実施形態によれば、セキュア・エンティティがページにアクセスしようとする場合、ハードウェアは、ストレージが実際に当該特定のセキュア・ゲストに属することを確認する付加的な変換確認を実行する。属さない場合は、非セキュア・アクセス(PIC3E)の例外がハイパーバイザに提示される。また、変換対象のホスト仮想アドレスがゾーン・セキュリティ・テーブルに登録されたホストアドレス対からのホスト仮想アドレスに一致しない場合は、セキュア・ストレージ違反(「3F」X)の例外が認識される。ハイパーバイザとの共有を可能にするため、変換確認によりアクセスが可能である限りは、セキュアとしてマーキングされていないストレージにセキュア・ゲストがアクセスするようにしてもよい。
ここで図5を参照して、この図は、本発明の1つまたは複数の実施形態に係る、DAT動作のシステム概要500を大略示している。システム概要500は、ホスト一次仮想アドレス空間510およびホスト・ホーム仮想アドレス空間520を含み、そこからページがハイパーバイザ(ホスト)絶対アドレス空間530へと変換される(たとえば、ホストDAT変換525参照(なお、点線は、DAT変換525によるマッピングを表す))。たとえば、図5は、2つの異なるホスト仮想アドレス空間によるホスト絶対ストレージの共有および2つのゲスト間のみならず、ホスト自体との上記ホスト仮想アドレスのうちの1つの共有を示している。これに関して、ホスト一次仮想アドレス空間510およびホスト・ホーム仮想アドレス空間520は、2つのホスト仮想アドレス空間の例であり、それぞれが別個のASCE(ホスト一次ASCE(HPASCE)591およびホスト・ホームASCE(HHASCE)592)によりアドレス指定される。なお、すべてのセキュア・インターフェース・コントロール・ストレージ(仮想および実の両者)がハイパーバイザにより提供され、セキュアとしてマーキングされる。提供されたセキュア・インターフェース・コントロール・ストレージは、関連するセキュア・エンティティが存在する限り、セキュア・インターフェース・コントロールのみがアクセス可能である。
図示のように、ホスト一次仮想アドレス空間510は、ゲストA絶対ページA1.HV、ゲストA絶対ページA2.HV、ゲストB絶対ページB1.HV、およびホスト仮想ページH3.HVを含む。ホスト・ホーム仮想アドレス空間520は、セキュア・インターフェース・コントロール仮想ページU1.HV、ホスト仮想ページH1.HV、およびホスト仮想ページH2.HVを含む。
本発明の1つまたは複数の実施形態によれば、すべてのセキュア・ゲスト(たとえば、セキュア・ゲストAおよびセキュア・ゲストB)ストレージがセキュア・ゲスト設定に属するものとして、本明細書に記載のゾーン・セキュリティ・テーブルに登録され、また、関連するホスト仮想アドレス(たとえば、A1.HV、A2.HV、B1.HV)がホストアドレス対の一部として登録される。1つまたは複数の実施形態においては、すべてのセキュア・ゲスト・ストレージがホスト一次仮想空間においてマッピングされる。また、すべてのセキュア・インターフェース・コントロール・ストレージがセキュア・インターフェース・コントロールに属するものとして、ゾーン・セキュリティ・テーブルに登録されるとともに、関連するセキュア・ゲスト・ドメインに基づいてゾーン・セキュリティ・テーブルでさらに区別されていてもよい。本発明の1つまたは複数の実施形態によれば、UV仮想ストレージがホスト・ホーム仮想空間においてマッピングされ、関連するホスト仮想アドレスがホストアドレス対の一部として登録される。1つまたは複数の実施形態によれば、UV実ストレージは関連するホスト仮想マッピングを有さず、これを示すように、(仮想アドレス比較が無効であることを示す)ゾーン・セキュリティ・テーブル中のDAビットが設定される。ホスト・ストレージは非セキュアとしてマーキングされ、また、非セキュアとしてゾーン・セキュリティ・テーブルに登録される。
このように、「ゲスト絶対=ホスト仮想」の場合、(HPASCE591により規定された)ハイパーバイザ(ホスト)一次DATテーブルは、ホスト一次仮想アドレス空間510のページを以下のように変換する。ゲストA絶対ページA1.HVは、セキュア・ゲストAに属するホスト絶対A1.HVにマッピングされ、ゲストA絶対ページA2.HVは、セキュア・ゲストAに属するホスト絶対A2.HAにマッピングされ、ゲストB絶対ページB1.HVは、セキュア・ゲストBに属するホスト絶対B1.HAにマッピングされ、ホスト仮想ページH3.HVは、ホスト絶対ページH3.HA(非セキュアホスト)にマッピングされる(非セキュアであるため、ホストアドレス対は存在しない)。さらに、(HHASCE592により規定された)ハイパーバイザ(ホスト)ホームDATテーブルは、ホスト・ホーム仮想アドレス空間520のページを以下のように変換する。セキュア・インターフェース・コントロール仮想ページU1.HVは、セキュアUV仮想として規定されたホスト絶対ページU1.HAにマッピングされ、ホスト仮想ページH1.HVは、非セキュアとして規定されたホスト絶対ページH1.HAにマッピングされ、ホスト仮想ページH2.HVは、非セキュアとして規定されたホスト絶対ページH2.HAにマッピングされる。非セキュアであるため、H1.HAまたはH2.HAと関連付けられたホストアドレス対は存在しない。
動作時、セキュア・インターフェース・コントロールに割り当てられたセキュア・ページにセキュア・ゲストがアクセスしようとする場合は、ハードウェアによって、セキュア-ストレージ違反(「3F」X)の例外がハイパーバイザに提示される。任意のセキュア・ページ(セキュア・インターフェース・コントロールに割り当てられたセキュア・ページを含む)に非セキュア・ゲストまたはハイパーバイザがアクセスしようとする場合は、ハードウェアによって、セキュア-ストレージ・アクセス(「3D」X)の例外がハイパーバイザに提示される。あるいは、セキュア・インターフェース・コントロール空間に対するアクセス未遂について、エラー条件が提示され得る。セキュア・インターフェース・コントロール・アクセス上のセキュア割り当ての不一致をハードウェアが検出した場合(たとえば、ストレージがセキュア・インターフェース・コントロールではなくセキュア・ゲストに属するものとしてゾーン・セキュリティ・テーブルに登録された場合または登録対と併用されるホストアドレス対の不一致が存在する場合)は、確認が提示される。
言い換えると、ホスト一次仮想アドレス空間510は、(セキュア・ゲストAに属する)ホスト仮想ページA1.HVおよびA2.HVならびに(セキュア・ゲストBに属する)B1.HVを含み、これらがホスト絶対A1.HA、A2.HA、およびB1.HAにそれぞれマッピングされる。また、ホスト一次仮想アドレス空間510は、ホスト絶対H3.HAにマッピングされるホスト(ハイパーバイザ)ページH3.HVを含む。ホスト・ホーム仮想空間520は、2つのホスト仮想ページH1.HVおよびH2.HVを含み、これらがホスト絶対ページH1.HAおよびH2.HAにマッピングされる。ホスト一次仮想アドレス空間510およびホスト・ホーム仮想アドレス空間520の両者は、単一のホスト絶対530にマッピングされる。セキュア・ゲストAおよびセキュア・ゲストBに属するストレージ・ページは、セキュアとしてマーキングされ、それぞれのセキュア・ドメインおよび関連するホスト仮想アドレスとともに、図1に示すゾーン・セキュリティ・テーブル100に登録される。一方、ホスト・ストレージは、非セキュアとしてマーキングされる。ハイパーバイザは、セキュア・ゲストを規定している際、ホスト・ストレージをセキュア・インターフェース・コントロールに提供して、これらのセキュア・ゲストのサポートに要するセキュア・コントロール・ブロックに使用する必要がある。このストレージは、ホスト絶対空間またはホスト仮想空間において規定可能であり、一例においては具体的に、ホスト・ホーム仮想空間において規定可能である。図5を再び参照して、ホスト絶対ページU1.HAおよびU2.HAの(セキュアUV絶対)は、ホスト絶対ストレージとして規定されたセキュア・インターフェース・コントロール・ストレージである。結果として、これらのページは、セキュアとしてマーキングされ、セキュア・インターフェース・コントロールおよび関連するセキュア・ドメインに属するものとして、図1に示すゾーン・セキュリティ・テーブル100に登録される。これらのページがホスト絶対アドレスとして規定されていることから、関連するホスト仮想アドレスは存在せず、ゾーン・セキュリティ・テーブル100においてDAビットが設定される。
変換後のハイパーバイザ(ホスト)絶対アドレス空間530の一例を図6に示す。図6は、本発明の1つまたは複数の実施形態に係る、セキュア・インターフェース・コントロール・メモリに関するシステム概要600を示している。システム概要600は、ホスト絶対ページA2.HAセキュア・ゲストA(A2.HV用)、ホスト絶対ページB1.HAセキュア・ゲストB(B1.HV用)、ホスト絶対ページH1.HA非セキュア(ホスト)、ホスト絶対ページH2.HA非セキュア(ホスト)、ホスト絶対ページU3.HAセキュアUV実(HVマッピングなし)、ホスト絶対ページU1.HAセキュアUV仮想(U1.HV用)、およびホスト絶対ページA1.HAセキュア・ゲストA(A1.HV用)を含むハイパーバイザ(ホスト)絶対アドレス空間630を示している。
ここで図7を参照して、この図は、本発明の1つまたは複数の実施形態に係る、インポート動作のプロセス・フロー700を大略示している。ハイパーバイザがページアウトしたページにセキュア・ゲストがアクセスする場合は、プロセス・フロー700に示すような一連のイベントが発生して、当該ページをセキュアにページインする。プロセス・フロー700は、ブロック705で開始となり、セキュア・ゲストがゲスト仮想ページにアクセスする。たとえばページが無効であることから、ハードウェアは、プログラム中断コード11(PIC11)が示すホスト・ページ・フォールトをハイパーバイザに提示する(ブロック715参照)。ハイパーバイザはこれを受けて、このゲスト・ページに対する利用可能な非セキュア・ホスト絶対ページを識別し(ブロック720参照)、暗号化されたゲスト・ページを識別したホスト絶対ページにページインする(ブロック725参照)。
その後、ブロック730において、ホスト絶対ページは、適当な(ホスト仮想アドレスに基づく)ホストDATテーブルにおいてマッピングされる。その後、ブロック735において、ハイパーバイザ(ホスト)は、セキュア・ゲストを再ディスパッチする。ブロック740において、セキュア・ゲストは、ゲスト・セキュア・ページに再アクセスする。ページ・フォールトはもはや存在しないものの、これがセキュア・ゲスト・アクセスであり、図1のゾーン・セキュリティ・テーブル100においてページがセキュアとしてマーキングされていないことから、ハードウェアは、ブロック745において、非セキュア・ストレージの例外(PIC3E)をハイパーバイザに提示する。このPIC3Eは、必要なインポートが発行されるまで、このセキュア・ページへのゲストのアクセスを防止する。次に、プロセス・フロー700は、図8につながる「A」へと進む。
ここで図8を参照して、この図は、本発明の1つまたは複数の実施形態に係る、インポート動作を実行するためのプロセス・フロー800を大略示している。PIC3Eに応じて、正常に動作する(たとえば、エラーなく期待通りに動作する)ハイパーバイザがインポートUVCを発行することになる(ブロック805参照)。なお、この時点では、インポート対象のページが非セキュアとしてマーキングされ、ハイパーバイザ、他の非セキュア・エンティティ、およびセキュア・インターフェース・コントロールのみがアクセス可能である。セキュア・ゲストによるアクセスは不可能である。
インポートUVCの一部として、セキュア・インターフェース・コントロールとして作用する信頼ファームウェアは、このページがセキュア・インターフェース・コントロールによって既にロックされているかを確認する(判定ブロック810参照)。ロックされている場合、プロセス・フロー800は、ブロック820に進む。ブロック820においては、「ビジー」リターン・コードがハイパーバイザに返される。ハイパーバイザは、これに応答して遅延し(ブロック825参照)、インポートUVCを再発行する(プロセス・フロー800は、ブロック805に戻る)。ページが未だロックされていない場合、プロセス・フロー800は、判定ブロック822に進む。
判定ブロック822において、セキュア・インターフェース・コントロールは、当該ページが非セキュア・ハイパーバイザと共有されたページであるかを確認する。共有されている場合(プロセス・フロー800が判定ブロック824に進む場合)、セキュア・インターフェース・コントロールは、関連するセキュア・ゲスト・ドメイン、ホスト仮想アドレスとともに共有されたものとして、ホスト絶対アドレスをゾーン・セキュリティ・テーブルに登録する。このページは、非セキュアとしてマーキングされた状態を維持する。これによりインポートUVCは完了となって、当該ページは、ゲストによるアクセスに利用可能となる。この処理は、ハイパーバイザによるゲストの再ディスパッチ(ブロック830)およびセキュア・ゲストのページ・アクセスの成功(ブロック835)と続く。
インポート対象のホスト仮想ページがハイパーバイザと共有されていない場合(プロセス・フロー800がブロック840に進む場合)は、セキュア・インターフェース・コントロールがページをセキュアとしてマーキングすることになるため、ハイパーバイザは、当該ページにアクセスできなくなる。ブロック845においては、セキュア・インターフェース・コントロールがページをロックするため、他のUVCは、ページ・ステータスを修正不可能である。ロックが設定されると(ブロック850)、セキュア・インターフェース・コントロールは、ゲスト・ページのコンテンツが暗号化中に変化していないことを確認する。変化があった場合は、エラー・リターン・コードがハイパーバイザに返され、それ以外の場合は、セキュア・インターフェース・コントロールがセキュア・ページを復号することになる。
ブロック855において、セキュア・インターフェース・コントロールは、ページをロック解除して他のUVCによるアクセスを可能にし、セキュアかつ適当なゲスト・ドメインおよびホスト仮想アドレスと関連付けられたものとしてページをゾーン・セキュリティ・テーブルに登録することによって、ホストアドレスHV-HA対を完了する。これにより、ゲストによるアクセスが可能となって、UVCが完了する。
ここで図9を参照して、この図は、本発明の1つまたは複数の実施形態に係る、提供メモリ動作に関するプロセス・フロー900を大略示している。プロセス・フロー900は、ブロック905で開始となり、ハイパーバイザがセキュア・インターフェース・コントロールに対してクエリUVCを発行する。ブロック910において、セキュア・インターフェース・コントロールは、データ(たとえば、クエリUVC)を返す。このデータには、基準ゾーン固有ホスト絶対ストレージ必要量、基準セキュア・ゲスト・ドメイン固有ホスト絶対ストレージ必要量、可変セキュア・ゲスト・ドメイン固有ホスト仮想ストレージ必要量/MB、または基準セキュア・ゲストCPU固有ホスト絶対ストレージ必要量、あるいはその組み合わせが含まれ得る。
ブロック915において、ハイパーバイザは、(たとえば、クエリUVCにより返されたサイズに基づいて)基準ゾーン固有ホスト絶対ストレージを予約する。ブロック920において、ハイパーバイザは、初期化をセキュア・インターフェース・コントロールに発行する。これに関して、ハイパーバイザは、ゾーン全体のセキュア・ゲスト設定間で調整が必要なUV制御ブロックに提供ストレージを与える初期化UVCを発行可能である。初期化UVCは、基準ゾーン固有ストレージ起点を指定する。
ブロック925において、セキュア・インターフェース・コントロールは、提供ストレージをUVに登録し、セキュアとしてマーキングすることにより初期化(たとえば、初期化UVC)を実装する。この初期化UVCについて、セキュア・インターフェース・コントロールは、提供ストレージをセキュアとしてマーキングし、提供ストレージの一部をゾーン・セキュリティ・テーブルに対して割り当て、一意のセキュア・ドメインとともに(ただし、関連するセキュア・ゲスト・ドメインを伴わずに)関連するホスト仮想アドレス対を有さないものとして、UV使用のために提供ストレージをゾーン・セキュリティ・テーブルに登録することができる。
ブロック930において、ハイパーバイザは、ストレージ(たとえば、基準および可変セキュア・ゲスト・ドメイン固有ストレージ)を予約する。たとえば、ハイパーバイザは、(たとえば、クエリUVCにより返されたセキュア・ゲスト・ドメイン・ストレージのサイズに基づいて)基準および可変セキュア・ゲスト・ドメイン固有ストレージを予約する。ブロック935において、ハイパーバイザは、生成設定をセキュア・インターフェース・コントロールに発行する。これに関して、ハイパーバイザは、基準および可変セキュア・ゲスト・ドメイン固有ストレージ起点を指定する生成セキュア・ゲスト設定UVCを発行可能である。さらに、生成セキュア・ゲスト設定UVCは、このセキュア・ゲスト設定をサポートする必要があるUV制御ブロックに提供ストレージを与える。
ブロック940において、セキュア・インターフェース・コントロールは、生成設定(たとえば、生成セキュア・ゲスト設定UVC)を実装する。生成セキュア・ゲスト設定UVCについて、セキュア・インターフェース・コントロールは、提供ストレージをセキュアとしてマーキングし、UV使用のために提供ストレージをゾーン・セキュリティ・テーブルに登録し、提供ストレージに関連するセキュア・ゲスト・ドメインを登録することができる。提供基準(ホスト絶対)ストレージは、関連するホスト仮想アドレス対を有さないものとして登録される。提供可変(ホスト仮想)ストレージには、関連するホスト仮想アドレス対が登録される。
ブロック945において、ハイパーバイザは、(たとえば、クエリUVにより返されたサイズ)基準セキュア・ゲストCPU固有ストレージを予約する。ブロック950において、ハイパーバイザは、ストレージ起点を指定する。たとえば、ハイパーバイザは、基準セキュア・ゲストCPU固有ストレージ起点を指定するUV生成セキュア・ゲストCPUに対して発行する。ブロック955において、セキュア・インターフェース・コントロールは、生成CPU(たとえば、生成セキュア・ゲストCPU UVC)を実装する。生成セキュア・ゲストCPU UVCについて、セキュア・インターフェース・コントロールは、提供ストレージをセキュアとしてマーキングし、関連するセキュア・ゲスト・ドメインを伴わずに関連するホスト仮想アドレス対を有さないものとして、UV使用のために提供ストレージをゾーン・セキュリティ・テーブルに登録することができる。
ここで図10を参照して、この図は、本発明の1つまたは複数の実施形態に係る、セキュア・インターフェース・コントロールの非セキュア・ハイパーバイザ・ページのセキュア・ページへの遷移に関するプロセス・フロー1000を大略示している。プロセス・フロー1000においては、3つのハイパーバイザ・ページ(たとえば、非セキュア・ハイパーバイザ・ページA、非セキュア・ハイパーバイザ・ページB、および非セキュア・ハイパーバイザ・ページC)を示している。
ハイパーバイザ(非セキュア)ページA、B、およびCは、非セキュア・エンティティ(ハイパーバイザを含む)によりアクセス可能である。さらに、ハイパーバイザ(非セキュア)ページA、B、およびCは、非セキュア(NS)としてマーキングされるとともに、非セキュアおよび非共有としてゾーン・セキュリティ・テーブル(たとえば、図1に示すゾーン・セキュリティ・テーブル100)に登録される。矢印1005においては、初期化UVCが発行されるが、これは、ゾーン全体と関連付けられたセキュア・インターフェース・コントロール実ストレージ・ページ1010(UV2)へとゲスト・ページAを遷移させる。セキュア・インターフェース・コントロール実ストレージ1010は、セキュアとしてマーキングされるとともに、セキュア・ゲスト・ドメインおよびハイパーバイザのホスト絶対へのマッピング(HV-HA)を伴わずに、UVとしてゾーン・セキュリティ・テーブル(たとえば、図1に示すゾーン・セキュリティ・テーブル100)に登録可能である。代替として、一意のUV2セキュア・ドメインが登録されるとともに、DAビットが1に設定される。なお、セキュア・インターフェース・コントロール実ストレージ1010は、現実として、セキュア・インターフェース・コントロールによりアクセス可能である。
ハイパーバイザ(非セキュア)ページBからは、矢印1025において、生成SG設定または生成SG CPU UVCが発行され、これによって、セキュア・ゲスト・ドメインと関連付けられたセキュア・インターフェース・コントロール実ストレージ1030(UVS)へとページが遷移する。セキュア・インターフェース・コントロール実ストレージ1030は、セキュアとしてマーキングされるとともに、関連するセキュア・ゲスト・ドメインとともに(ハイパーバイザのホスト絶対へのマッピング(HV-HA)を伴わずに)UVとしてゾーン・セキュリティ・テーブル(たとえば、図1に示すゾーン・セキュリティ・テーブル100)に登録可能である(すなわち、DAビット=1)。なお、セキュア・インターフェース・コントロール実ストレージ1010は、セキュア・ゲスト・ドメインの代わりに、現実として、セキュア・インターフェース・コントロールによりアクセス可能である。
ハイパーバイザ(非セキュア)ページCからは、矢印1045において、生成SG設定UVCが発行され、これによって、セキュア・ゲスト・ドメインと関連付けられたセキュア・インターフェース・コントロール仮想ストレージ1050(UVV)へとページが遷移する。セキュア・インターフェース・コントロール仮想ストレージ1050は、セキュアとしてマーキングされるとともに、セキュア・ゲスト・ドメインおよびハイパーバイザのホスト絶対へのマッピング(HV-HA)を伴って、UVとしてゾーン・セキュリティ・テーブル(たとえば、図1に示すゾーン・セキュリティ・テーブル100)に登録可能である。なお、セキュア・インターフェース・コントロール仮想ストレージ1050は、セキュア・ゲスト・ドメインの代わりに、UV仮想としてアクセス可能である。
ここで図11を参照して、この図は、1つまたは複数の実施形態に係る、プログラムまたはセキュア・インターフェース・コントロールによるセキュア・ストレージ・アクセスに関するプロセス・フロー1100を示している。これは、セキュア・インターフェース・コントロールがゲスト・ストレージまたはセキュア・インターフェース・コントロール・ストレージにアクセスし、当該アクセスへの正しいタグ付けによって、ハードウェアによる当該アクセスのセキュリティの確認を可能にする必要がある状況を表す。1100は、セキュア・インターフェース・コントロールによるこのストレージ・アクセスのタグ付けを表す。プロセス・フロー1100は、ブロック1110で開始となり、セキュア・インターフェース・コントロールは、セキュア・インターフェース・コントロール・ストレージにアクセスしているかを判定する。
これがセキュア・インターフェース・コントロール・ストレージへのアクセスではない場合、プロセス・フロー1100は、(「いいえ」の矢印で示すように)判定ブロック1112へと進む。判定ブロック1112において、セキュア・インターフェース・コントロールは、セキュア・ゲスト・ストレージにアクセスしているかを判定する。これがセキュア・ゲスト・ストレージへのアクセスではない場合、プロセス・フロー1100は、(図12のプロセス・フロー1200につながる)「B」に進んで、非セキュア・アクセスのデフォルト設定が使用されることになる。これがセキュア・ゲスト・ストレージへのアクセスである場合、プロセス・フロー1100は、判定ブロック1113に進んで、セキュア・インターフェース・コントロールは、デフォルトのセキュア・ゲスト・ドメインが使用されているかを判定する。使用されている場合、プロセス・フロー1100は、(図12のプロセス・フロー1200につながる)「B」に進んで、セキュア・ゲスト・アクセスのデフォルト設定が用いられることになる。使用されていない場合、プロセス・フロー1100は、ブロック1114に進む。ブロック1114においては、適当なセキュア・ゲスト・ドメインがSGセキュア・ドメイン・レジスタにロードされる(そして、図12のプロセス・フロー1200につながる「B」へと進む)。
これがセキュア・インターフェース・コントロール・ストレージへのアクセスである場合、プロセス・フロー1100は、(「はい」の矢印で示すように)判定ブロック1120へと進む。ブロック1120においては、アクセスがセキュアUVとしてタグ付けされる(たとえば、UVセキュア・ドメイン・レジスタを使用する)。
その後、プロセス・フロー1100は、判定ブロック1130に進んで、セキュア・インターフェース・コントロールは、これがUVV空間へのアクセスであるかを判定する(たとえば、SG設定変数テーブル)。UVV空間へのアクセスである場合、プロセス・フロー1100は、(「はい」の矢印で示すように)ブロック1134へと進む。ブロック1134においては、アクセスが仮想としてタグ付けされる。ブロック1136においては、適用可能なセキュア・ゲスト・ドメインがUVセキュア・ドメイン・レジスタにロードされる。ブロック1138においては、DAT変換およびストレージ・アクセスの開始の準備が整う。判定ブロック1130に戻り、これがUVV空間へのアクセスではない場合、プロセス・フロー1100は、(「いいえ」の矢印で示すように)ブロック1140へと進む。ブロック1140においては、アクセスが実としてタグ付けされる。
判定ブロック1150において、セキュア・インターフェース・コントロールは、これがUVS空間へのアクセスであるかを判定する(たとえば、SG設定またはCPUテーブル)。これがUVS空間へのアクセスである場合、プロセス・フロー1100は、(「はい」の矢印で示すように)ブロック1136へと進む。これがUVS空間へのアクセスではない場合、プロセス・フロー1100は、(「いいえ」の矢印で示すように)ブロック1170へと進む。その後、このアクセスは、UV2空間へのアクセスとなる(たとえば、ゾーン・セキュリティ・テーブル)。ブロック1170においては、一意のUV2セキュア・ドメインがUVセキュア・ドメイン・レジスタにロードされる。
図12は、本発明の1つまたは複数の実施形態に係る、プロセス・フロー1200を示している。ゲストがディスパッチされた場合、SIEエントリ・ファームウェアは、ハードウェアに対して、ゲストが動作している(たとえば、ゲスト・モードがアクティブである)ことを示し得るとともに、ゲストがセキュアであるかを示し得る。ゲストがセキュアである場合は、関連するセキュア・ゲスト・ドメインをハードウェア(たとえば、SGセキュア・ドメイン・レジスタ)にロード可能である。プログラムがストレージにアクセスしている場合、ハードウェアは、アクセス時点のプログラムの現在状態に基づいて、アクセスにタグ付け可能である。図12は、このプロセスの一例をプロセス・フロー1200にて示している。ブロック1205において、ハードウェアは、マシンが現在、ゲスト・モードで動作しているかを判定し、動作していない場合は、ブロック1210でホスト・アクセスであるものとして、ブロック1215で非セキュア・アクセスであるものとして、アクセスにタグ付け可能である。ブロック1205において、マシンがゲスト・モードで動作している場合は、ブロック1220でアクセスをゲスト・アクセスとしてタグ付け可能であり、さらにブロック1225において、現在のゲストがセキュア・ゲストであるかを判定する。ゲストがセキュアでない場合は、ブロック1215において、アクセスを非セキュアとしてタグ付け可能である。ゲストがセキュアである場合、ハードウェアは、ブロック1230において、ゲストにセキュアとしてタグ付け可能であり、これによって、セキュア・ゲストがディスパッチされた場合にロードされたSGセキュア・ドメイン・レジスタとセキュア・ゲストを関連付けることができる。ブロック1235においては、非セキュアおよびセキュア・ゲストの両者について、DATステータスを確認可能である。DATがオフの場合は、ブロック1240において、アクセスを現実としてタグ付け可能である。DATがオンの場合は、ブロック1245において、アクセスを仮想としてタグ付け可能である。DATがオフの場合にブロック1240でアクセスが実としてタグ付けされた場合またはDATがオンの場合にブロック1245でアクセスが仮想としてタグ付けされた場合、ハードウェアは、図13においてさらに説明する通り、ブロック1250において、変換およびストレージ・アクセスの開始の準備が整う。
図13は、本発明の1つまたは複数の実施形態に係る、プロセス・フロー1300においてセキュアおよび非セキュアの両アクセスをサポートするようにハードウェアが実行する変換の一例を示している。ブロック1305において、ハードウェアは、アクセスがゲスト変換としてタグ付けされているかを判定する。ゲスト変換としてタグ付けされており、ブロック1310においてアクセスが仮想である場合は、ブロック1315においてゲストDATを実行可能である。ゲストDAT変換中は、ゲストDATテーブルに対するネスト状の中間フェッチが存在し得る。元の変換がセキュアとしてタグ付けされている場合は、ゲスト実かつセキュアとしてテーブル・フェッチをタグ付け可能である。また、テーブル・フェッチは、プロセス・フロー1300の変換プロセスに従い得る。ブロック1315でゲスト仮想としてタグ付けされたアクセスおよびブロック1310でゲスト現実としてタグ付けされた(仮想=「いいえ」)任意のアクセスに対してゲストDATが実行された後は、ブロック1320において、ゲスト・プレフィクシングおよびゲスト・メモリ・オフセットを適用可能である。ブロック1325において元のゲスト変換がセキュアとしてタグ付けされた場合は、ゲスト変換プロセスの完了時に、結果としてもたらされるアドレスをホスト仮想かつセキュアとしてタグ付け可能となる。プロセス1300は、ホスト仮想としてタグ付けされた如何なるアクセスについても継続可能である。元のアクセスがブロック1305においてホスト・アクセスであり(ゲスト=「いいえ」)、ブロック1330において仮想である場合は、ブロック1335において、ホストDATを実行可能である。ブロック1335においては、ホスト・テーブル・フェッチを非セキュアとしてマーキング可能である。ブロック1335においてホストDATが実行された後、または、ブロック1330において元のホスト・アクセスが現実としてタグ付けされた場合(仮想=「いいえ」)、ブロック1340においては、ホスト・プレフィクシングを適用可能である。ブロック1345において、結果としてもたらされるアドレスは、ホスト絶対アドレスとなり得る。
図14は、本発明の1つまたは複数の実施形態に係る、プロセス・フロー1400においてハードウェアにより実行可能なセキュア・ストレージ保護を伴うDAT変換の一例を示している。図13のブロック1345の続きとして、ブロック1405でセキュアUVアクセスが識別された場合、ハードウェアは、ブロック1410において、ストレージがセキュアUVストレージとして登録されているかを確認可能であり、登録されていない場合は、ブロック1415においてエラーが提示される。セキュアUVアクセスは、UVストレージにアクセスする場合のセキュア・インターフェース・コントロールにより可能である。ブロック1410において、ストレージがセキュアUVストレージとして登録されている場合は、処理が継続するブロック1420でのドメイン確認用の指定のセキュア・ドメインとして(セキュアUVアクセスの前にセキュア・インターフェース・コントロールにより設定された)UVセキュア・ドメイン・レジスタを使用可能な場合を除き、任意のセキュア・アクセスに対して実行可能であるのと同様に保護確認が継続し得る。また、ブロック1425(入力点D)でUVアクセスに対して検出された如何なる違反も、ブロック1425でセキュア・ゲスト違反に対して行われるように(セキュアUV=「いいえ」)、ブロック1435におけるハイパーバイザの例外ではなく、ブロック1430でエラーとして提示され得る。
ブロック1405において、セキュアUVアクセスとしてタグ付けされてないアクセスの場合、ハードウェアは、ブロック1440において、アクセスがセキュア・ゲスト・アクセスであるかを判定し、そうではなく、ブロック1445において当該ページがセキュアとしてマーキングされている場合は、ブロック1435において、例外がハイパーバイザに提示され得る。そうではなく、ブロック1440においてアクセスがセキュア・ゲスト・アクセスではなく、ブロック1445においてページがセキュアとしてマーキングされていない場合は、ブロック1450において変換が成功となる。
ブロック1440においてアクセスがセキュア・ゲスト・アクセスである場合、または、ブロック1410においてセキュアUVストレージとして登録されたストレージへのセキュアUVアクセスである場合、ハードウェアは、ブロック1420において、当該アクセスと関連付けられたセキュア・エンティティにストレージが登録されていることを確認することができる。これがセキュアUVアクセスである場合は、(セキュアUVストレージがアクセスされることに基づいてセキュア・インターフェース・コントロールによりロードされた)UVセキュア・ドメイン・レジスタから指定のセキュア・ドメインを取得可能であり、セキュア・ゲスト・アクセスの場合は、(セキュア・エンティティのディスパッチに際してロードされた)SGセキュア・ドメイン・レジスタから指定のセキュア・ドメインが取得される。ブロック1420において、アクセス対象のストレージが指定のセキュア・ドメインに登録されていない場合、ブロック1425でセキュアUVアクセスの場合は、ブロック1430でエラーが提示され、ブロック1425でセキュア・ゲスト・アクセスの場合は(セキュアUV=「いいえ」)、ブロック1435で例外がハイパーバイザに提示される。
ブロック1440および1410においてストレージへのセキュア・アクセスであり、ブロック1420において指定のセキュア・ドメインに登録されている場合、ブロック1455において仮想アドレス確認が無効すなわちDAビット=1であり、ブロック1460においてアクセスが現実である場合は、ブロック1450において変換が完了となる。ただし、ブロック1455においてDAビット=1であるものの、ブロック1460においてアクセスが仮想である場合(実=「いいえ」)、ブロック1425でセキュアUVアクセスの場合は、ブロック1430でエラーが提示され、ブロック1425でセキュア・ゲスト・アクセスの場合は(セキュアUV=「いいえ」)、ブロック1435で例外がハイパーバイザに提示される。ブロック1455においてDAビット=0であり、ブロック1475においてアクセスが仮想アクセスである場合、ハードウェアは、ブロック1470において、アクセスのホスト仮想-ホスト絶対マッピングが、このホスト絶対アドレスに対して登録されたものに一致するかを判定可能である。一致する場合は、ブロック1450において、変換が成功して完了する。ブロック1470においてマッピングが一致しない場合、ブロック1425でセキュアUVアクセスの場合は、ブロック1430でエラーが提示され、ブロック1425でセキュア・ゲスト・アクセスの場合は(セキュアUV=「いいえ」)、ブロック1435で例外がハイパーバイザに提示される。DAビット=0かつブロック1475においてアクセスが現実アクセスである場合(仮想=「いいえ」)、ブロック1425でセキュアUVアクセスの場合は、ブロック1430でエラーが提示され、ブロック1425でセキュア・ゲスト・アクセスの場合は(セキュアUV=「いいえ」)、ブロック1435で例外がハイパーバイザに提示される。または、ブロック1450において、変換が成功して完了する。ブロック1480においては、I/Oサブシステムによる任意のアクセスにより、ブロック1445においてページがセキュアとしてマーキングされたかを確認可能であり、ページがセキュアである場合は、ブロック1435において、例外がハイパーバイザに提示され得る。ページがセキュアとしてマーキングされていない場合は、ブロック1450において変換が成功となる。
ゾーン・セキュリティ・テーブル・インターフェース1485を通じて、ストレージ登録およびマッピングのさまざまな確認を一体的に管理可能である。たとえば、ブロック1410、1420、1455、1470、および1475は、同じゾーンと関連付けられたゾーン・セキュリティ・テーブルとの連動により、さまざまなアクセスを管理可能である。
図15は、本発明の1つまたは複数の実施形態に係る、システム1500を示している。システム1500としては、本明細書に記載のような任意のコンピュータ機器が可能であるが、プロセッサ1502、システム・メモリ1503、およびセキュア・インターフェース・コントロール1530をサポートするハードウェア1501を具備する。ハードウェア1501上では、1つまたは複数の非信頼エンティティをサポートする論理区画ハイパーバイザ1510が動作している(たとえば、非信頼エンティティ1521および1522により表されるハイパーバイザ)。非信頼(たとえば、非セキュア)エンティティ1521は、(セキュア・エンティティ1541a.0~セキュア・エンティティ1541a.n(nは1以上の整数)により表される)1つまたは複数のセキュア・エンティティ(たとえば、ゲスト)をサポートする。同様に、非信頼エンティティ1522は、(セキュア・エンティティ1542a.0~セキュア・エンティティ1542a.n(nは1以上の整数)により表される)1つまたは複数のセキュア・エンティティをサポートする。ハイパーバイザ1521および1522またはセキュア・エンティティ1541および1542、あるいはその両方のいずれかは、セキュア・インターフェース・コントロール1530に対して呼び出し(命令呼び出し)を行うことができる。ハイパーバイザ1521および1522またはセキュア・エンティティ1541および1542、あるいはその両方は、セキュア・インターフェース・コントロール1530と通信するシステム1500のソフトウェアと考えられる。本特許に関して、記載のハイパーバイザは、非信頼エンティティ1521および1522に対応し、ホストまたはオペレーティング・システム(OS)とも称する。LPARハイパーバイザ1510は、信頼ファームウェアの一部であるが、必ずしもセキュア・インターフェース・コントロールの一部ではない。セキュア・エンティティ1541および1542は、ゲスト、仮想マシン(VM)、またはコンテナとも称し得る。
本明細書に記載の通り、セキュア・インターフェース・コントロール1530は、ハードウェア1501およびミリコード1570と協働してハイパーバイザ1521および1522とセキュア・エンティティ1541および1542との間にセキュア・インターフェースを提供することにより、付加的なセキュリティをもたらす。図示のように、セキュア・インターフェース・コントロール1530は、内部のセキュアかつ信頼ハードウェアまたはファームウェア(たとえば、システム1500のソフトウェアとハードウェア1501との間でハードウェア1501上に存在)、あるいはその両方における実装によって、セキュア環境の初期化および保守のほか、これらのセキュア・エンティティのハードウェア1501上のディスパッチの調整を可能にする。すなわち、セキュア・インターフェース・コントロール1530は、ハードウェア1501によって厳密に強制されるように、単一の各セキュア・エンティティ1541および1542がデータ・セキュア・ストレージの明確に異なる部分を使用可能となるように、最下位レベルのファームウェアの信頼部分として動作する。
MVCL(Move Character Long)およびSIE(Start Interpretive Execution)等のマシンのアーキテクト基準命令またはコマンドの多くは、ミリコード1570において実装される。これに関して、ミリコード1570は、ハードウェア・インターフェース(本明細書においては、通信インターフェース1580と称する)を使用することによって、より複雑なアーキテクチャ命令(すなわち、ミリコード化命令)の一実施態様を与えるハードウェア1501の拡張として作用する。この通信インターフェース1580は、これらのミリコード化命令および機能を実装するための「ミリモード」の開始および終了を提供するように最適化される。一方、1つまたは複数の実施形態によれば、セキュア・インターフェース・コントロール1530は、この通信インターフェース1580を利用し、セキュア・インターフェース・コントロール1530が必要とする新規追加機能の多くは、セキュアSIEディスパッチおよびUV Call(UVC)等のミリコード1570において実装されているためである。なお、「セキュア・インターフェース・コントロール・モード」は存在しない。すなわち、システム1500は、セキュア・インターフェース・コントロール・モードに対する出入りを行わず、むしろ、システム1500の他の機能と同様に、ミリコード1570がセキュア・インターフェース・コントロール機能を実行する。結果として、セキュア・インターフェース・コントロール1530としての動作と「通常の」ミリコードとしての動作との間に遷移はない。これにより、本明細書の実施形態の技術的効果および利益として、通信インターフェース1580は、ソフトウェア・コンテキストスイッチも、このようなコンテキストスイッチと関連付けられたオーバヘッドも一切含まない。さらに、ハードウェア1501は、動作中のゲストまたはハイパーバイザ・コードの「アーキテクト」状態を維持し、「一時的」ミリコード状態から独立して保つ。たとえば、ハードウェア1501は、中断をモニタリングして、セキュア・インターフェース・コントロール1530を呼び出したアーキテクト・ゲストまたはハイパーバイザ、あるいはその両方のレベルに維持し続ける。
1つまたは複数の実施形態によれば、セキュア・エンティティ1541または1542が非信頼エンティティ1521または1522によりディスパッチされた場合、SIEエントリ・ミリコードは、セキュア・エンティティが動作している旨の新たな指定を設定し、セキュア・ドメインIDを含むセキュア・ゲスト状態をハードウェア1501にロードする。そして、ハードウェア1501は、この状態を用いて、当該ゲスト・ドメインが動作している間に、必要なセキュリティ確認を行う。
ミリコード1570は、既に信頼ファームウェアであるため、モードの切り替えなく「シームレス」に、ゲスト設備、ハイパーバイザ設備、およびセキュア・インターフェース・コントロール設備にアクセス可能である。また、すべてのストレージ(非セキュア・ストレージ、特定のセキュア・ゲスト・ドメインと関連付けられたセキュア・ストレージ、および特定のセキュア・ゲスト・ドメインと同様に関連付けられる場合がある補助セキュア・ストレージ)にもアクセス可能である。1つまたは複数の実施態様において、ミリコード1570は、適正なセキュリティ確認がハードウェア1501により実行され得るように、アクセスする意図のあるストレージの種類を指定可能な拡張ハードウェア設備を用いて上記を実行する。これらの確認は、セキュア・インターフェース・コントロール1530によりアクセスが実行される場合にも行われる。セキュア・インターフェース・コントロール1530は、UVC命令の実行ならびに特定の他のホストもしくはゲスト命令および機能の解釈に際して、これらの新たなメカニズムを利用する(たとえば、UVCコマンドの一部は、セキュア・ゲストまたはセキュアUVストレージに対する任意のアクセスに対して、ミリコード1570を呼び出す)。
図16は、本発明の1つまたは複数の実施形態に係る、図15の通信インターフェース1580のプロセス・フロー1600を示している。プロセス・フロー1600は、図15のハードウェア1501が2つの別個のコンテキスト(アーキテクトおよびミリコード)を既に維持している状態で、コンテキストスイッチなしで、UVCに対して既存のミリコード・インターフェース(たとえば、図15の通信インターフェース1580)を使用する一例を示している。
プロセス・フロー1600は、ブロック1610で開始となり、図15のシステム1500は、アーキテクト命令(たとえば、MVCLまたはUVC)を実行する。アーキテクト命令は、セキュア・エンティティ1541、1542または非信頼エンティティ1521、1522等のプログラムまたはソフトウェアに由来し得る。判定ブロック1620において、通信インターフェース1580は、アーキテクト命令がミリコード化命令であるかを判定する。アーキテクト命令がミリコード化命令ではない場合、プロセス・フロー1600は、ブロック1640へと進み、アーキテクト命令が、ミリコード制御を伴わずに、ハードウェア1501によって直接実行される。その後、プロセスは、ブロック1640で終了となる。
アーキテクト命令がミリコード化命令である場合、プロセス・フロー1600は、ブロック1650へと進み、図15の通信インターフェース1580がミリモードに入る。1580がミリモードに入ることにより、当該通信インターフェース1580を通じて、ハードウェア1501がミリコード化命令を実行するように作動(engage)される。ブロック1660において、図15のミリコード1570は、ミリコード化命令を実行する。
これに関して、図15のハードウェア1501において動作するセキュア・インターフェース・コントロール1530は、ハイパーバイザ1521および1522またはセキュア・エンティティ1541および1542、あるいはその両方からアーキテクト命令(たとえば、UVC)を受信する。判定ブロック1620において、セキュア・インターフェース・コントロール1530は、通信インターフェース1580を利用することにより、アーキテクト命令がミリコード化命令であるかを判定する。なお、ミリコード1570は、アーキテクト命令の実行に際してセキュア・インターフェース・コントロールの機能を実行するハードウェアの拡張である。通信インターフェース1580を強化しているため、ミリコード1570は、セキュア実行コンテキストにおいて、(たとえば、アーキテクト命令と関連付けられたセキュア・エンティティ1541、1542に対して)特定のセキュア・ゲスト・ドメインと関連付けられたセキュア・ストレージを含むすべてのストレージにアクセス可能である。通信インターフェースの強化には、セキュア・アクセスの指定のためにミリコードが設定可能な制御ビットの追加が含まれる。さらに、セキュア・ゲストがディスパッチされた場合、ミリコードにおいて実行されたセキュア・インターフェース・コントロールは、セキュア・ゲストが動作している旨の指定を設定し、セキュア・ゲスト状態をハードウェアにロードすることができる。このセキュア・ディスパッチ・コードは、ゲスト状態の非セキュア部分およびゲスト状態のセキュア部分の両者に容易にアクセス可能である。ブロック1670において、図15の通信インターフェース1580は、ミリモードを終了する。その後、プロセスは、ブロック1640で終了となる。一方、ハードウェアは、セキュア・ゲストと関連付けられたセキュア・ゲスト・ドメインが動作している間に、(ミリモードで動作していない場合でも)セキュア・ゲスト状態を使用することによって、セキュリティ確認を実行し続ける。
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に挙げる教示内容の実装は、クラウド・コンピューティング環境に限定されないことが了解されるものとする。むしろ、本発明の実施形態は、その他任意の種類の既知のコンピューティング環境または今後開発されるコンピューティング環境と併せて実現可能である。
クラウド・コンピューティングは、最小限の管理労力またはサービス提供者との相互作用で迅速に設定および解除し得る設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、VM、およびサービス)の共用プールへの簡便なオンデマンド・ネットワーク・アクセスを可能にするサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
特性は、以下の通りである。
オンデマンド・セルフサービス:クラウド利用者は、サービス提供者との人間の相互作用の必要なく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等のコンピューティング機能を一方的に設定可能である。
広範なネットワーク・アクセス:各機能は、ネットワーク上で利用可能であり、シン/シックを問わず異種クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソース・プーリング:マルチテナント・モデルを用いることにより、複数の利用者に対して、提供者のコンピューティング・リソースがプールされる。その際、要求に応じて、さまざまな物理的リソースおよび仮想的リソースが動的に割り当ておよび再割り当てされる。利用者は一般的に、提供されるリソースの正確な場所を制御も把握もできないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)では、場所を特定し得る点において、ある意味で場所の独立性が存在する。
迅速な柔軟性:各機能は、場合によっては自動的に、高速スケール・アウトするように迅速かつ柔軟に設定され、高速スケール・インするように迅速に解除され得る。利用者にとって、設定に利用可能な機能は、見かけ上は制限なく、いつでも如何なる量でも購入可能である。
サービス測定:クラウド・システムは、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した抽象化レベルでの測定機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量は、モニタリング、制御、および報告によって、利用サービスの提供者および利用者の両者に透明性をもたらし得る。
サービス・モデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS):利用者に提供される機能は、クラウド・インフラ上で動作する提供者のアプリケーションを使用する。これらのアプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インターフェースを通じて、さまざまなクライアント機器からアクセス可能である(たとえば、ウェブベースの電子メール)。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、あるいは個々のアプリケーション機能等、下層のクラウド・インフラを管理も制御もしない。ただし、ユーザ固有の限定されたアプリケーション構成の設定については、この限りではない。
サービスとしてのプラットフォーム(PaaS):利用者に提供される機能は、提供者がサポートするプログラミング言語およびツールを用いて作成された利用者作成または取得アプリケーションをクラウド・インフラ上に展開する。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージ等、下層のクラウド・インフラを管理も制御もしない。ただし、展開されたアプリケーションと、場合によっては、アプリケーション・ホスティング環境の構成とを制御する。
サービスとしてのインフラ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースを設定するが、利用者は、オペレーティング・システムおよびアプリケーション等、任意のソフトウェアを展開および実行可能である。利用者は、下層のクラウド・インフラを管理も制御もしない。ただし、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては、選択されたネットワーク・コンポーネント(たとえば、ホストのファイアウォール)を限定的に制御する。
展開モデルは、以下の通りである。
プライベート・クラウド:このクラウド・インフラは、ある組織のために単独で運用される。また、当該組織またはサード・パーティにより管理され、オンプレミスまたはオフプレミスとして存在し得る。
コミュニティ・クラウド:このクラウド・インフラは、複数の組織により共有され、懸案事項(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス事項)を共有する特定のコミュニティをサポートする。また、当該組織またはサード・パーティにより管理され、オンプレミスまたはオフプレミスとして存在し得る。
パブリック・クラウド:このクラウド・インフラは、一般の人々または大規模な業界団体が利用可能で、クラウド・サービスを販売する組織により所有される。
ハイブリッド・クラウド:このクラウド・インフラは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組み合わせであり、それぞれに固有のエンティティは維持する一方、データおよびアプリケーションの移植性(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)を実現する標準または個別の技術により結合される。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール方式、およびセマンティック相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心には、相互接続ノードのネットワークを含むインフラがある。
ここで図17を参照して、この図は、例示的なクラウド・コンピューティング環境50を示している。図示のように、クラウド・コンピューティング環境50は、たとえば個人用デジタル補助装置(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせ等、クラウド利用者が使用するローカルのコンピュータ機器の通信を可能にする1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信するようにしてもよい。これらは、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせ等、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化されていてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド利用者がローカルのコンピュータ機器上でリソースを維持する必要のないサービスとしてのインフラ、プラットフォーム、またはソフトウェア、あるいはその組み合わせを提供することができる。図17に示すコンピュータ機器54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえば、ウェブ・ブラウザを用いることにより)任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方において、任意の種類のコンピュータ機器と通信可能であることが了解される。
ここで図18を参照して、この図は、クラウド・コンピューティング環境50(図17)が提供する一組の機能的抽象化レイヤを示している。図18に示すコンポーネント、レイヤ、および機能は、例示を意図したものに過ぎず、本発明の実施形態はこれらに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
ハードウェア・ソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、およびネットワーク/ネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
仮想化レイヤ70は、抽象化レイヤを提供し、考え得る仮想エンティティの例としては、仮想サーバ71、仮想ストレージ72、仮想ネットワーク73(仮想プライベート・ネットワークを含む)、仮想アプリケーション/オペレーティング・システム74、および仮想クライアント75が挙げられる。
一例において、管理レイヤ80は、後述の機能を提供するようにしてもよい。リソース設定81は、クラウド・コンピューティング環境におけるタスクの実行に利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定・価格設定82は、クラウド・コンピューティング環境においてリソースが利用される場合のコスト追跡ならびにこれらリソースの消費に対する請求もしくはインボイスを提供する。一例において、これらのリソースには、アプリケーション・ソフトウェア・ライセンスが含まれ得る。セキュリティは、クラウド利用者およびタスクの識別情報確認のほか、データおよび他のリソースの保護を提供する。ユーザ・ポータル83は、利用者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、所要サービス・レベルを満足するように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)計画・実行85は、SLAに従って将来的な要件が見込まれるクラウド・コンピューティング・リソースの事前の取り決めおよび調達を提供する。
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発・ライフサイクル管理92、仮想教室教育提供93、データ解析処理94、トランザクション処理95、および通信インターフェース96が挙げられる。これらは、一部の例に過ぎず、他の実施形態においては各レイヤに異なるサービスを含み得ることが了解される。
ここで図19を参照して、この図は、本発明の1つまたは複数の実施形態に係る、システム1900を示している。システム1900は、ネットワーク165等を介して1つまたは複数のクライアント機器20A~20Eと直接的または間接的に連通した例示的なノード10(たとえば、ホスト・ノード)を具備する。ノード10としては、クラウド・コンピューティング提供者のデータセンタまたはホスト・サーバが可能である。ノード10は、1つまたは複数のVM15(15A~15N)の展開を容易化するハイパーバイザ12を実行する。ノード10は、VM15A~15Nおよびハイパーバイザ12が必要とする機能を直接サポートするほか、ハイパーバイザ12による1つまたは複数のサービスのVM15への提供を容易化するハードウェア/ファームウェア・レイヤ11をさらに具備する。これと同時に起こる実施態様においては、ハードウェア/ファームウェア・レイヤ11とハイパーバイザ12との間、ハードウェア/ファームウェア・レイヤ11とVM15との間、ハイパーバイザ12とVM15との間、およびハードウェア/ファームウェア・レイヤ11を介したハイパーバイザ12とVM15との間で通信が提供される。本発明の1つまたは複数の実施形態によれば、セキュア・インターフェース・コントロールがハードウェア/ファームウェア・レイヤ11に設けられ、ハイパーバイザ12とVM15との間の直接通信が除外される。
たとえば、ノード10は、クライアント機器20AによるVM15A~15Nのうちの1つまたは複数の展開を容易化し得る。VM15A~15Nは、異なるクライアント機器20A~20Eからの各リクエストに応じて展開されるようになっていてもよい。たとえば、VM15Aがクライアント機器20Aにより展開され、VM15Bがクライアント機器20Bにより展開され、VM15Cがクライアント機器20Cにより展開されるようになっていてもよい。また、ノード10は、クライアントによる物理的なサーバの設定(VMとしては動作しない)を容易化し得る。本明細書に記載の各例では、VMの一部として、ノード10におけるリソースの設定を具現化するが、上記技術的解決手段の適用によっても、物理的なサーバの一部としてリソースを設定可能である。
一例において、クライアント機器20A~20Eは、人物、事業、政府機関、企業内の部署、またはその他任意のエンティティ等、同じエンティティに属していてもよく、また、ノード10は、エンティティのプライベート・クラウドとして運用されるようになっていてもよい。この場合、ノード10は、エンティティに属するクライアント機器20A~20Eにより展開されたVM15A~15Nを単独でホスティングする。別の例において、クライアント機器20A~20Eは、異なるエンティティに属していてもよい。たとえば、第1のエンティティがクライアント機器20Aを所有する一方、第2のエンティティがクライアント機器20Bを所有していてもよい。この場合、ノード10は、異なるエンティティのVMをホスティングするパブリック・クラウドとして運用されるようになっていてもよい。たとえば、VM15A~15Nは、VM15AがVM15Bへのアクセスを容易化しない被覆状態にて展開されていてもよい。たとえば、ノード10は、IBM z Systems(R)Processor Resource/Systems Manager(PR/SM)Logical Partition(LPAR)機能を使用して、VM15A~15Nを被覆していてもよい。これらPR/SM LPARのような機能は、区画間の隔離を提供するため、異なる論理区画における同じ物理的ノード10上の異なるエンティティに対して、ノード10による2つ以上のVM15A~15Nの展開を容易化する。
クライアント機器20A~20Eのうちのクライアント機器20Aは、コンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ等の通信装置、またはノード10のハイパーバイザ12によるVMの展開を要求するその他任意の通信装置である。クライアント機器20Aは、ハイパーバイザにより受信されるリクエストをネットワーク165経由で送るようにしてもよい。VM15A~15NのうちのVM15Aは、クライアント機器20A~20Eのうちのクライアント機器20Aからのリクエストに応じてハイパーバイザ12が展開するVMイメージである。ハイパーバイザ12は、VMモニタ(VMM)であり、これは、VMを生成して実行するソフトウェア、ファームウェア、またはハードウェアであってもよい。ハイパーバイザ12は、プログラムの実行またはデータの格納、あるいはその両方のためのVM15Aによるノード10のハードウェア・コンポーネントの使用を容易化する。適当な機能および改良を伴って、ハイパーバイザ12は、IBM z Systems(R)、Oracle VM Server、Citrix XenServer、Vmware ESX、Microsoft Hyper-Vハイパーバイザ、またはその他任意のハイパーバイザであってもよい。ハイパーバイザ12は、ノード10上で直接実行されるネイティブ・ハイパーバイザであってもよいし、別のハイパーバイザ上で実行されるホスティング・ハイパーバイザであってもよい。
ここで図20を参照して、この図は、本発明の1つまたは複数の実施形態に係る、本明細書の教示内容を実装するためのノード10を示している。ノード10としては、本明細書に記載の通り、さまざまな通信技術を利用する任意数のコンピュータ機器およびネットワークの包含または採用、あるいはその両方を行った電子的コンピュータ・フレームワークが可能である。ノード10は、スケーリング、拡張、およびモジュール化が容易であって、異なるサービスに変更することも可能であるし、一部の特徴を他の特徴とは独立に再構成することも可能である。
本実施形態において、ノード10は、1つまたは複数の中央演算処理装置(CPU)2001a、2001b、2001c等を含み得るプロセッサ2001を有する。プロセッサ2001は、処理回路、マイクロプロセッサ、演算ユニットとも称するが、システム・バス2002を介して、システム・メモリ2003および他のさまざまな構成要素に結合されている。システム・メモリ2003は、リード・オンリー・メモリ(ROM)2004およびランダム・アクセス・メモリ(RAM)2005を含む。ROM2004は、システム・バス2002に結合され、ノード10の特定の基本機能を制御する基本入出力システム(BIOS)を含んでいてもよい。RAMは、システム・バス2002に結合され、プロセッサ2001が使用する読み出し/書き込みメモリである。
図20のノード10は、プロセッサ2001による読み出し・実行が可能な有形記憶媒体の一例であるハード・ディスク2007を具備する。ハード・ディスク2007は、ソフトウェア2008およびデータ2009を格納する。ソフトウェア2008は、プロセッサ2001によってノード10上で実行される(図1~図19を参照して説明したプロセス等のプロセスを実行する)命令として格納される。データ2009は、ソフトウェア2008の動作のサポートおよびソフトウェア2008の動作による使用のためにさまざまなデータ構造として構造化された定性的または定量的な変数の一組の値を含む。
図20のノード10は、ノード10のプロセッサ2001、システム・メモリ2003、ハード・ディスク2007、および他の構成要素(たとえば、周辺機器および外部機器)間の通信を相互接続してサポートする1つまたは複数のアダプタ(たとえば、ハード・ディスク・コントローラ、ネットワーク・アダプタ、グラフィックス・アダプタ等)を具備する。本発明の1つまたは複数の実施形態において、1つまたは複数のアダプタは、中間バス・ブリッジを介してシステム・バス2002に接続された1つまたは複数のI/Oバスに接続可能であり、この1つまたは複数のI/Oバスは、PCI(Peripheral Component Interconnect)等の一般的なプロトコルを利用可能である。
図示のように、ノード10は、キーボード2021,マウス2022、スピーカ2023、およびマイク2024をシステム・バス2002に相互接続するインターフェース・アダプタ2020を具備する。ノード10は、システム・バス2002をディスプレイ2031に相互接続するディスプレイ・アダプタ2030を具備する。ディスプレイ・アダプタ2030(またはプロセッサ2001、あるいはその両方)は、GUI2032の表示および管理等、グラフィックス性能を提供するグラフィックス・コントローラを具備し得る。また、通信アダプタ2041がシステム・バス2002をネットワーク2050に相互接続することにより、サーバ2051およびデータベース2052等、他のシステム、機器、データ、およびソフトウェアとノード10が通信できるようにする。本発明の1つまたは複数の実施形態において、ソフトウェア2008およびデータ2009の動作は、サーバ2051およびデータベース2052によって、ネットワーク2050上で実現可能である。たとえば、ネットワーク2050,サーバ2051、およびデータベース2052が一体になり、サービスとしてのプラットフォーム、サービスとしてのソフトウェア、またはサービスとしてのインフラ、あるいはその組み合わせとして(たとえば、分散システムにおけるウェブ・アプリケーションとして)、ソフトウェア2008およびデータ2009の内部反復を提供可能である。
本明細書に記載の実施形態は必然的に、コンピュータ技術、特に、VMをホスティングするコンピュータ・サーバに基づく。さらに、本発明の1つまたは複数の実施形態は、VMをホスティングするコンピュータ・サーバによるセキュアVM(ハイパーバイザでさえ、セキュアVMに関連付けられたメモリ、レジスタ、および他のデータへのアクセスが禁止されている)のホスティングを容易化することによって、コンピュータ技術自体、特に、VMをホスティングするコンピュータ・サーバの動作の改善を容易化する。また、本発明の1つまたは複数の実施形態は、セキュアVMおよびハイパーバイザの分離を容易化するハードウェア、ファームウェア(たとえば、ミリコード)、またはその組み合わせを含むセキュア・インターフェース・コントロール(本明細書においては、「ウルトラバイザ」または「UV」とも称する)を使用することにより、コンピュータ・サーバがホスティングするVMのセキュリティを維持することによって、VMをホスティングするコンピュータ・サーバの改善に向けた大きなステップを提供する。セキュア・インターフェース・コントロールは、本明細書に記載の通り、VMの初期化/終了の間にVM状態保護への実質的なオーバヘッドの追加なく、セキュリティを容易化する軽量な中間動作を提供する。
本明細書に開示の本発明の実施形態は、セキュア・インターフェース・コントロールの通信インターフェースを実装するシステム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせ(本明細書においては、システム)を含んでいてもよい。なお、説明ごとに、異なる図面の他の類似要素に対して、要素の識別子を再利用している。
本明細書においては、関連する図面を参照して、本発明の種々実施形態を説明する。本発明の範囲から逸脱することなく、本発明の代替実施形態を考案可能である。以下の説明および図面においては、さまざまな接続および位置関係(たとえば、上方(over)、下方(below)、隣接(adjacent)等)が要素間に規定される。これらの接続または位置関係あるいはその両方は、別段の指定のない限り、直接的でも間接的でも可能であり、この点に関して、本発明は何らの制限も意図していない。したがって、エンティティの結合は、直接的または間接的な結合を表すことができ、エンティティ間の位置関係としては、直接的または間接的な位置関係が可能である。さらに、本明細書に記載のさまざまなタスクおよびプロセス・ステップは、本明細書に詳しく記載していない付加的なステップまたは機能を有するより包括的な手順またはプロセスに組み込み可能である。
以下の定義および略語は、特許請求の範囲および本明細書の解釈のために使用するものとする。本明細書において、用語「備える(comprise、comprising)」、「具備する(include、including)」、「有する(have、having)」、「含む(contain、containing)」、またはこれらのその他任意の変形は、非排他的な包含を網羅することが意図される。たとえば、要素の一覧を含む組成物、混合物、プロセス、方法、品目、または装置は、必ずしもこれらの要素だけに限定されず、このような組成物、混合物、プロセス、方法、品目、または装置に対して明示的に一覧化もされていなければ固有でもない他の要素を含み得る。
また、本明細書において、用語「例示的な(exemplary)」は、「一例、事例、または実例として機能する」を意味するものとして使用している。本明細書で「例示的(exemplary)」として記載する如何なる実施形態も設計も、他の実施形態または設計より好ましいものまたは有利なものとしては必ずしも解釈されないものとする。用語「少なくとも1つ(at least one)」および「1つまたは複数(one or more)」は、1以上の任意の整数すなわち1、2、3、4等を含むものと理解可能である。用語「複数(a plurality)」は、2以上の任意の整数すなわち2、3、4、5等を含むものと理解可能である。用語「接続(connection)」は、間接的な「接続(connection)」および直接的な「接続(connection)」の両者を含み得る。
用語「およそ(about)」、「実質的に(substantially)」、「約(approximately)」、およびこれらの変形は、本願の出願時点で利用可能な機器に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図される。たとえば、「およそ(about)」は、所与の値の±8%、5%、または2%の範囲を含み得る。
本発明は、考え得る任意の技術的詳細統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令が格納された(1つまたは複数の)コンピュータ可読記憶媒体を具備していてもよい。
コンピュータ可読記憶媒体としては、命令実行デバイスが使用する命令を保持および格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意好適な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去・プログラム可能リード・オンリー・メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ(登録商標)・ディスク、パンチカードもしくは命令が記録された溝中の隆起構造等の機械的符号化デバイス、ならびにこれらの任意好適な組み合わせが含まれる。本明細書において、コンピュータ可読記憶媒体は、電波等の自由伝搬電磁波、導波路等の送信媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて送信される電気信号等、本質的に一時的な信号としては解釈されないものとする。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピュータ/処理機器にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組み合わせを介して外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークには、送信銅ケーブル、送信光ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせが含まれていてもよい。各コンピュータ/処理機器のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピュータ/処理機器内のコンピュータ可読記憶媒体に格納する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、あるいはSmalltalk(登録商標)、C++等のオブジェクト指向プログラミング言語ならびに「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、独立型ソフトウェア・パッケージとして全部または一部をユーザのコンピュータ上で実行するようにしてもよいし、一部をユーザのコンピュータ上、一部をリモート・コンピュータ上で実行するようにしてもよいし、全部をリモート・コンピュータまたはサーバ上で実行するようにしてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)等、任意の種類のネットワークを通じてリモート・コンピュータをユーザのコンピュータに接続するようにしてもよいし、(たとえば、インターネット・サービス・プロバイダを用いることによりインターネットを通じて)外部コンピュータに接続するようにしてもよい。いくつかの実施形態においては、本発明の態様を実行するため、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることにより、たとえばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路がコンピュータ可読プログラム命令を実行するようにしてもよい。
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様を説明している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令により実装可能であることが了解される。
これらのコンピュータ可読プログラム命令は、コンピュータ等のプログラム可能データ処理装置のプロセッサを介した実行によって、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装する手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成していてもよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能データ処理装置、または他の機器、あるいはその組み合わせに対して特定の様態で機能するように指示し得る当該コンピュータ可読記憶媒体に格納されていてもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他の機器上での実行によって、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他の機器へのロードによって、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他の機器上で実行させることにより、コンピュータ実装プロセスを生成するようにしてもよい。
図中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示している。この点、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表していてもよい。いくつかの代替実施態様において、ブロックに記載の機能は、図面に記載の順序から外れて発生するようになっていてもよい。たとえば、連続して示す2つのブロックは実際のところ、関与する機能に応じて、実質的に同時に実行されるようになっていてもよいし、場合により逆の順序で実行されるようになっていてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックならびにブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェアベースのシステムにより実装することも可能であるし、専用ハードウェアおよびコンピュータ命令の組み合わせを実行することも可能である。
本明細書において使用する専門用語は、特定の実施形態の説明のみを目的としており、何ら限定を意図したものではない。本明細書において、単数形「a」、「an」、および「the」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。さらに、本明細書において使用する場合の用語「備える(compriseまたはcomprising、あるいはその両方)」は、記載の特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組み合わせの存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはその群、あるいはその組み合わせの存在または追加を除外するものではない。
本明細書の種々実施形態の説明は、例示を目的として提示しているものの、何ら網羅的でもなければ、開示の実施形態に限定されることを意図したものでもない。上記実施形態の範囲および思想から逸脱することなく、当業者には、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、上記実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明すること、または、当業他者が本明細書に開示の実施形態を理解できるようにすることを目的として選定したものである。