(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-06
(45)【発行日】2023-11-14
(54)【発明の名称】セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用
(51)【国際特許分類】
G06F 12/14 20060101AFI20231107BHJP
【FI】
G06F12/14 510E
(21)【出願番号】P 2021550298
(86)(22)【出願日】2020-03-02
(86)【国際出願番号】 IB2020051753
(87)【国際公開番号】W WO2020183283
(87)【国際公開日】2020-09-17
【審査請求日】2022-08-24
(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)【発明者】
【氏名】ブラッドベリー、ジョナサン
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2019/0042463(US,A1)
【文献】特表2016-536720(JP,A)
【文献】SEONGWOOK JIN; ET AL,ARCHITECTURAL SUPPORT FOR SECURE VIRTUALIZATION UNDER A VULNERABLE HYPERVISOR,PROCEEDINGS OF THE 44TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE,米国,2011年,PAGE(S):272-283,http://dx.doi.org/10.1145/2155620.2155652
【文献】SEONGWOOK JIN; ET AL,H-SVM: HARDWARE-ASSISTED SECURE VIRTUAL MACHINES UNDER A VULNERABLE HYPERVISOR,IEEE TRANSACTIONS ON COMPUTERS,米国,IEEE,2015年10月,VOL:64, NR:10,PAGE(S):2833-2846,http://dx.doi.org/10.1109/TC.2015.2389792
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
コンピュータ・システムのセキュア・インタフェース制御によって、前記コンピュータ・システムの非セキュア・エンティティが前記非セキュア・エンティティと前記コンピュータ・システムのセキュア・ドメインとの間で共用されているメモリのページにアクセスすることを、前記ページのセキュア・ストレージ保護インジケータがクリアであり前記ページに非セキュア・ページのマークが付けられていることに基づいて、有効化すること、
前記セキュア・インタフェース制御によって、前記非セキュア・エンティティが前記ページにアクセスすることを許す前に、前記ページの前記セキュア・ストレージ保護インジケータがクリアであることを確認すること、および
前記セキュア・インタフェース制御によって、前記ページの前記セキュア・ストレージ保護インジケータのチェックなしで、前記セキュア・ドメインのセキュア・エンティティに、前記ページへのアクセスを提供すること
を含む、方法。
【請求項2】
前記セキュア・インタフェース制御によって、前記非セキュア・エンティティによって確立されると共に前記セキュア・エンティティによって使用される動的アドレス変換マッピングが、前記セキュア・エンティティに前記ページへのアクセスを提供する前に変更されていないことを確認すること
をさらに含む、請求項1に記載の方法。
【請求項3】
前記セキュア・インタフェース制御によって、前記ページへの共用アクセスを確立することを求める前記セキュア・エンティティからのリクエストを受け取ること、
前記セキュア・インタフェース制御によって、前記ページが現在、前記セキュア・ストレージ保護インジケータがセットされたセキュア・ページとして識別されているかどうか、および前記ページが前記セキュア・エンティティの前記セキュア・ドメインに登録されているかどうかを判定すること、ならびに
前記セキュア・インタフェース制御によって、前記ページがセキュア・ページとして識別されており、かつ前記セキュア・エンティティの前記セキュア・ドメインに登録されていると判定したことに基づいて、前記ページを前記セキュア・ドメインに共用ページとして登録すること
をさらに含む、請求項1
または請求項2に記載の方法。
【請求項4】
前記セキュア・インタフェース制御によって、前記ページが現在、セキュア・ページとして識別されていると共に前記セキュア・エンティティの前記セキュア・ドメインに登録されており、かつ前記ページが現在、ロックされていない、と判定したことに基づいて、前記ページをロックすること、および
前記セキュア・インタフェース制御によって、前記セキュア・エンティティまたは異なるコンテキストにおいては前記セキュア・インタフェース制御が、前記ページがロックされているときに前記ページにアクセスすることを防ぐこと
をさらに含む、請求項3に記載の方法。
【請求項5】
前記セキュア・インタフェース制御によって、前記ページがロックされているときに前記ページの1つまたは複数の許可チェックまたは状態更新を実行すること、および
前記セキュア・インタフェース制御によって、前記ページの前記1つまたは複数の許可チェックまたは状態更新を完了したことに基づいて、前記ページのロックを解除すること
をさらに含む、請求項4に記載の方法。
【請求項6】
前記ページへの共用アクセスを確立することを求める前記リクエストを受け取る前に前記ページが既にロックされていた、と判定したことに基づいて、前記セキュア・エンティティに使用中インジケータを送ること
をさらに含む、請求項4に記載の方法。
【請求項7】
前記ページに関連づけられたセキュア・ドメイン識別子と前記ページに関連づけられた仮想アドレス・マッピング・データとを含むゾーン・セキュリティ・テーブルを介して、前記セキュア・ドメインがチェックおよび更新される、請求項1
から請求項6のいずれか一項に記載の方法。
【請求項8】
前記セキュア・ストレージ保護インジケータが、前記メモリの複数のページのうちのそれぞれのページに対する前記コンピュータ・システムのハードウェア内のビットを含む、請求項1
から請求項7のいずれか一項に記載の方法。
【請求項9】
前記セキュア・インタフェース制御が、ファームウェア、ハードウェア、またはファームウェアとハードウェアの組合せを含み、前記非セキュア・エンティティがハイパーバイザを含み、前記セキュア・エンティティが前記セキュア・ドメイン内の前記ハイパーバイザにホストされるセキュア・ゲストである仮想機械を含む、請求項1
から請求項8のいずれか一項に記載の方法。
【請求項10】
システムであって、
処理ユニットと、
セキュア・インタフェース制御と、
を備え、前記セキュア・インタフェース制御が、請求項1から請求項9のいずれか一項に記載の方法を前記処理ユニットに実行させるように構成されている、システム。
【請求項11】
処理ユニットに請求項1から請求項9のいずれか一項に記載の方法を実行させるように構成されている、コンピュータ・プログラム。
【請求項12】
請求項11に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にコンピュータ技術に関し、より詳細には、セキュアな(secure)(以後、セキュア)ドメインと非セキュア(non-secure)・エンティティとの間のストレージ共用に関する。
【背景技術】
【0002】
クラウド・コンピューティングおよびクラウド・ストレージは、ユーザが所有するデータを第三者のデータ・センタに記憶し、それらのデータをそのデータ・センタで処理する能力をユーザに提供する。クラウド・コンピューティングは、ハードウェアを購入することまたは物理サーバのための床面積を提供することを顧客に要求することなしに、VMを迅速かつ簡単に顧客に提供する能力を容易にする。顧客は、顧客の嗜好または要件の変化に応じてVMを簡単に拡張または縮小することができる。クラウド・コンピューティングのプロバイダは通常、プロバイダのデータ・センタのサーバ上に物理的に存在するVMを提供する。顧客はしばしば、VM内のデータのセキュリティについて心配する。これは特に、コンピューティング・プロバイダがしばしば、同じサーバ上に2以上の顧客のデータを記憶しているためである。顧客は、顧客が所有するコード/データとクラウド・コンピューティング・プロバイダのコード/データとの間のセキュリティ、および顧客が所有するコード/データとプロバイダのサイトで動作している他のVMのコード/データとの間のセキュリティを要望することがある。さらに、顧客が、プロバイダの管理者からのセキュリティ、および機械上で動作している他のコードによる潜在的なセキュリティ侵害に対するセキュリティを要望することもある。
【0003】
このような機密に関わる状況を取り扱うために、クラウド・サービス・プロバイダは、適正なデータ分離および論理ストレージ隔離を保証するためのセキュリティ制御を実装することがある。クラウド・インフラストラクチャを実装する際に仮想化が広範に使用されている結果、クラウド・サービスの顧客に対するセキュリティ上の特有の心配が生じている。これは、仮想化が、オペレーティング・システム(OS)と基礎をなすハードウェアとの間の関係を変化させるためである。このハードウェアは、コンピューティングもしくはストレージ・ハードウェアであることがあり、またはネットワーキング・ハードウェアであることさえある。これにより、仮想化は、それ自体が適正に構成、管理および防護されなければならない追加の層として導入される。
【0004】
一般に、ホスト・ハイパーバイザの制御下でゲストとして動作しているVMは、ゲストに対する仮想化サービスをトランスペアレントに(transparently)提供することを、このハイパーバイザに頼っている。これらのサービスには、メモリ管理、命令エミュレーションおよび割込み処理が含まれる。
【0005】
メモリ管理の場合、VMは、そのVMのデータを、メモリに存在するようにディスクから移動させ(ページイン)、さらに、そのVMのデータをディスクに戻す(ページアウト)ことができる。そのページがメモリに存在する間、VM(ゲスト)は、動的アドレス変換(dynamic address translation)(DAT)を使用して、メモリ内のページをゲスト仮想アドレスからゲスト絶対アドレスにマップする。さらに、ホスト・ハイパーバイザも、メモリ内のゲスト・ページに対するそれ自体の(ホスト仮想アドレスからホスト絶対アドレスへの)DATマッピングを有しており、ホスト・ハイパーバイザは、ゲストとは独立に、またゲストに対してトランスペアレントに、ゲスト・ページをメモリにページインすることおよびメモリからページアウトすることができる。ハイパーバイザは、2つの別個のゲストVM間でのゲスト・メモリのメモリ分離またはメモリ共用を、ホストDATテーブルによって提供する。ホストはさらに、必要に応じて、ゲストに代わって、ゲスト・メモリにアクセスして、ゲスト・オペレーションをシミュレートすることができる。
【発明の概要】
【0006】
本発明の1つまたは複数の実施形態によれば、コンピュータ実施方法(computerimplemented method)は、コンピュータ・システムのセキュア・インタフェース制御によって、コンピュータ・システムの非セキュア・エンティティがこの非セキュア・エンティティとコンピュータ・システムのセキュア・ドメインとの間で共用されているメモリのページにアクセスすることを、このページのセキュア・ストレージ保護インジケータがクリアでありこのページに非セキュア・ページのマークが付けられていることに基づいて、有効化することを含む。セキュア・インタフェース制御は、非セキュア・エンティティがこのページにアクセスすることを許す前に、このページのセキュア・ストレージ保護インジケータがクリアであることを確認することができる。セキュア・インタフェース制御は、このページのセキュア・ストレージ保護インジケータのチェックなしで、セキュア・ドメインのセキュア・エンティティに、このページへのアクセスを提供することができる。利点は、セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用を含みうる。
【0007】
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、非セキュア・エンティティによって確立された、セキュア・エンティティによって使用される動的アドレス変換マッピングが、セキュア・エンティティにこのページへのアクセスを提供する前に変更されていないことを確認することができる。利点は、セキュア・エンティティによって使用されるアドレス変換が非セキュア・エンティティによって変更されていないことを保証することを含みうる。
【0008】
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、このページへの共用アクセスを確立することを求めるセキュア・エンティティからのリクエストを受け取ることができる。セキュア・インタフェース制御は、このページが現在、セキュア・ストレージ保護インジケータがセットされたセキュア・ページとして識別されているかどうか、およびこのページが、セキュア・エンティティのセキュア・ドメインに登録されているかどうかを判定することができる。セキュア・インタフェース制御は、このページがセキュア・ページとして識別されており、セキュア・エンティティのセキュア・ドメインに登録されていると判定したことに基づいて、このページを、セキュア・ドメインに、共用ページとして登録することができる。利点は、ストレージ保護ステータスおよびページ登録を追跡することを含みうる。
【0009】
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、このページが現在、セキュア・ページとして識別されており、セキュア・エンティティのセキュア・ドメインに登録されており、このページが現在、ロックされていないと判定したことに基づいて、このページをロックすることができる。セキュア・インタフェース制御は、セキュア・エンティティまたは異なるコンテキストにおいてはセキュア・インタフェース制御が、このページがロックされているときにこのページにアクセスすることを防ぐことができる。利点は、ある種の条件下でセキュア・ページへのアクセスを制限することを含みうる。
【0010】
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、このページがロックされているときにこのページの1つまたは複数の許可チェック(authorization check)または状態更新(state update)を実行することができる。セキュア・インタフェース制御は、このページの1つまたは複数の許可チェックまたは状態更新を完了したことに基づいて、このページのロックを解除することができる。利点は、ページの許可チェックを管理することを含みうる。
【0011】
本発明の追加の実施形態または代替実施形態によれば、このページへの共用アクセスを確立することを求めるリクエストを受け取る前にこのページが既にロックされていた、と判定したことに基づいて、セキュア・エンティティに使用中インジケータ(busy indicator)を送ることができる。利点は、通知タイミングを制御することを含みうる。
【0012】
本発明の追加の実施形態または代替実施形態によれば、このページに関連づけられたセキュア・ドメイン識別子およびこのページに関連づけられた仮想アドレス・マッピング・データを含むゾーン・セキュリティ・テーブルを介して、セキュア・ドメインをチェックおよび更新することができる。利点は、複数のページおよびゾーンのステータスを管理することを含みうる。
【0013】
本発明の追加の実施形態または代替実施形態によれば、セキュア・ストレージ保護インジケータは、メモリの複数のページのうちのそれぞれのページに対するコンピュータ・システムのハードウェア内のビットを含むことができる。利点は、メモリのストレージ保護インジケータを管理することを含みうる。
【0014】
本発明の追加の実施形態または代替実施形態によれば、セキュア・インタフェース制御は、ファームウェア、ハードウェア、またはファームウェアとハードウェアの組合せとすることができる。非セキュア・エンティティはハイパーバイザとすることができる。セキュア・エンティティは仮想機械とすることができ、この仮想機械は、セキュア・ドメイン内のハイパーバイザにホストされるセキュア・ゲストである。利点は、セキュア・エンティティからのセキュア・ページを非セキュア・エンティティと共用することを含みうる。
【0015】
本発明の他の実施形態は、上述の方法の特徴を、コンピュータ・システムおよびコンピュータ・プログラム製品に実装する。
【0016】
本開示の技法によって、追加の特徴および利益が実現される。本明細書には、本発明の他の実施形態および態様が詳細に記載されており、それらは、本発明の部分とみなされる。本発明ならびに本発明の利点および特徴をより十分に理解するためには、以下説明および図面を参照されたい。
【0017】
本明細書に記載された独占権の詳細は、本明細書の末尾の特許請求の範囲に具体的に示されており、明確に主張されている。本発明の実施形態の上記の特徴および利点ならびにその他の特徴および利点は、添付図面とともに解釈される以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0018】
【
図1】本発明の1つまたは複数の実施形態による、ゾーン・セキュリティのためのテーブルを示す図である。
【
図2】本発明の1つまたは複数の実施形態による、DATを実行するための仮想アドレス空間および絶対アドレス空間を示す図である。
【
図3】本発明の1つまたは複数の実施形態による、ハイパーバイザの下で動作している仮想機械(virtual machine)(VM)をサポートするネストされた(nested)マルチパートDATを示す図である。
【
図4】本発明の1つまたは複数の実施形態による、セキュア・ゲスト・ストレージのマッピングを示す図である。
【
図5】本発明の1つまたは複数の実施形態による、動的アドレス変換(DAT)オペレーションのシステム概略図を示す図である。
【
図6】本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御メモリのシステム概略図を示す図である。
【
図7】本発明の1つまたは複数の実施形態による、インポート・オペレーションのプロセス・フローを示す図である。
【
図8】本発明の1つまたは複数の実施形態による、インポート・オペレーションのプロセス・フローを示す図である。
【
図9】本発明の1つまたは複数の実施形態による、供与メモリ・オペレーション(donated memory operation)のプロセス・フローを示す図である。
【
図10】本発明の1つまたは複数の実施形態による、非セキュア(non-secure)ハイパーバイザ・ページからセキュア・インタフェース制御のセキュア・ページへの移行(transition)のプロセス・フローを示す図である。
【
図11】本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御によってなされたセキュア・ストレージ・アクセスのプロセス・フローを示す図である。
【
図12】本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御およびハードウェアによるアクセス・タグ付けのプロセス・フローを示す図である。
【
図13】本発明の1つまたは複数の実施形態による、プログラムおよびセキュア・インタフェース制御によるセキュア・アクセスおよび非セキュア・アクセスをサポートする変換のプロセス・フローを示す図である。
【
図14】本発明の1つまたは複数の実施形態による、プログラムおよびセキュア・インタフェース制御によるセキュア・ストレージ保護付きのDATのプロセス・フローを示す図である。
【
図15】本発明の1つまたは複数の実施形態による、共用アクセス・ストレージ保護のためのプロセス・フローを示す図である。
【
図16】本発明の1つまたは複数の実施形態による、セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用のためのプロセス・フローを示す図である。
【
図17】本発明の1つまたは複数の実施形態によるクラウド・コンピューティング環境を示す図である。
【
図18】本発明の1つまたは複数の実施形態による抽象化モデル層を示す図である。
【
図19】本発明の1つまたは複数の実施形態によるシステムを示す図である。
【
図20】本発明の1つまたは複数の実施形態による処理システムを示す図である。
【発明を実施するための形態】
【0019】
本明細書に示された図は例示を目的としている。本発明の思想を逸脱しない、図および図に記載されたオペレーションに対する多くの変形態様が存在しうる。例えば、動作を異なる順序で実行することができ、または動作を追加、削除もしくは変更することができる。さらに、用語「結合された(coupled)」およびその変異語は、2つの要素間に通信経路を有することを示し、要素間に介在要素/接続がない要素間の直接接続を含意しない。これらの変形態様は全て本明細書の一部とみなされる。
【0020】
本発明の1つまたは複数の実施形態は、追加のセキュリティを提供するために、ソフトウェアと機械との間の効率的で軽量のセキュア・インタフェース制御を強化する。
【0021】
ホスト・ハイパーバイザの制御下でゲストとして動作している仮想機械(VM)は、ゲストに対する仮想化サービスをトランスペアレントに提供することを、このハイパーバイザに頼っている。これらのサービスは、セキュア・エンティティと信頼できない別のエンティティとの間のインタフェースに適用することができる。このインタフェースは従来、この別のエンティティによるセキュア・リソースへのアクセスを許している。前述のとおり、これらのサービスには、限定はされないが、メモリ管理、命令エミュレーションおよび割込み処理が含まれうる。例えば、割込みおよび例外インジェクション(exception injection)のために、ハイパーバイザは通常、ゲストのプレフィックス領域(ロー・コア(low core))に対する読出しもしくは書込みまたはその両方を実行する。本明細書で使用される用語「仮想機械」ないし「VM」は、物理機械(コンピューティング・デバイス、プロセッサなど)およびその処理環境(オペレーティング・システム(OS)、ソフトウェア・リソースなど)の論理表現のことを指している。VMは、基礎をなすホスト機械(物理プロセッサまたは一組のプロセッサ)上で実行されるソフトウェアとして維持される。ユーザまたはソフトウェア・リソースから見ると、VMは、それ自体の独立した物理機械であるように見える。本明細書で使用される用語「ハイパーバイザ」および「VMモニタ(VMM)」は、複数のVMを管理する処理環境またはプラットフォーム・サービスであって、それらのVMが、同じホスト機械上で複数の(時に異なる)OSを使用して実行されることを可能にする処理環境またはプラットフォーム・サービスのことを指している。VMをデプロイすることは、VMのインストール・プロセスおよびVMの起動(または始動)プロセスを含むことを理解すべきである。別の例では、VMをデプロイすることが、VMの起動(または始動)プロセスを含む(例えばVMが以前にインストールされた場合またはVMが既に存在する場合)。
【0022】
セキュア・ゲストを容易にし、サポートするため、ハイパーバイザとセキュア・ゲストとの間の、ハイパーバイザに依存しない追加のセキュリティであって、ハイパーバイザが、VMからのデータにアクセスすることができず、したがって上で説明したやり方でサービスを提供することができないような態様の追加のセキュリティが求められているという、技術上の課題が存在している。
【0023】
本明細書に記載されたセキュア実行(secure execution)は、セキュア・ストレージと非セキュア・ストレージの間の分離、および異なるセキュア・ユーザに属するセキュア・ストレージ間の分離を保証するハードウェア機構を提供する。セキュア・ゲストに関しては、「信頼できない」非セキュア・ハイパーバイザとセキュア・ゲストの間に追加のセキュリティが提供される。これを達成するためには、通常はゲストに代わってハイパーバイザが実行する機能の多くを機械に組み込む必要がある。ハイパーバイザとセキュア・ゲストの間にセキュア・インタフェースを提供するために、本明細書では「UV」とも呼ぶ新規のセキュア・インタフェース制御を説明する。本明細書では、用語セキュア・インタフェース制御とUVとが相互に交換可能に使用される。この追加のセキュリティを提供するために、セキュア・インタフェース制御はハードウェアと協力して働く。さらに、より低水準の(lower level)ハイパーバイザが、この信頼できないハイパーバイザに対して仮想化を提供していることがあり、このより低水準のハイパーバイザが、信頼できるコードの中に実装されている場合には、このハイパーバイザを、セキュア・インタフェース制御の部分とすることもできる。
【0024】
一例では、セキュア・インタフェース制御が、内部の信頼できるセキュア・ハードウェアもしくはファームウェアまたはその両方の中に実装される。この信頼できるファームウェアは、例えばプロセッサ・ミリコードまたはPR/SM論理分割コード(logical partitioning code)を含むことができる。セキュア・ゲストまたはエンティティに関して、セキュア・インタフェース制御は、セキュア環境の初期化および維持、ならびにハードウェア上でのこれらのセキュア・エンティティのディスパッチの調整を提供する。セキュア・ゲストがデータを能動的に使用しており、セキュア・ゲストがホスト・ストレージに存在する間、セキュア・ゲストは、セキュア・ストレージ内で「妨げるものなしに(in the clear)」保たれる。その単一のセキュア・ゲストは、セキュア・ゲスト・ストレージにアクセスすることができる。このことは、ハードウェアによって厳しく強制される。すなわち、ハードウェアは、(ハイパーバイザまたは他の非セキュア・ゲストを含む)非セキュア・エンティティまたは異なるセキュア・ゲストがそのデータにアクセスすることを防ぐ。この例では、セキュア・インタフェース制御が、最も低水準のファームウェアの信頼できる部分として動作する。最も低水準のファームウェアまたはミリコードは、実際にハードウェアの拡張であり、複雑な命令および機能、例えばIBMのzArchitecture(R)に定義された複雑な命令および機能を実施するために使用される。ミリコードは、ストレージの全ての部分にアクセスすることができ、セキュア実行のコンテキストでは、この部分が、それ自体のセキュアUVストレージ、非セキュア・ハイパーバイザ・ストレージ、セキュア・ゲスト・ストレージおよび共用ストレージを含む。このことは、このミリコードが、セキュア・ゲストまたはそのゲストをサポートするハイパーバイザが必要とする機能を提供することを可能にする。セキュア・インタフェース制御はさらに、ハードウェアに直接にアクセスすることができ、このことは、ハードウェアが、セキュア・インタフェース制御によって確立された条件の制御の下で、セキュリティ・チェックを効率的に提供することを可能にする。
【0025】
本発明の1つまたは複数の実施形態によれば、このソフトウェアは、UV呼出し(UVC)命令を使用して、特定の動作を実行するようセキュア・インタフェース制御に要求する。例えば、ハイパーバイザはこのUVC命令を使用して、セキュア・インタフェース制御を初期化すること、セキュア・ゲスト・ドメイン(例えばセキュア・ゲスト構成)を生成すること、およびそのセキュア構成内に仮想CPUを生成することができる。さらに、このUVC命令を使用して、ハイパーバイザ・ページイン・オペレーションまたはハイパーバイザ・ページアウト・オペレーションの部分として、セキュア・ゲスト・ページをインポートすること(復号し、セキュア・ゲスト・ドメインに割り当てること)およびエクスポートすること(暗号化し、セキュア・ゲスト・ページへのホスト・アクセスを許すこと)もできる。さらに、セキュア・ゲストは、ハイパーバイザと共用するストレージを定義し、セキュア・ストレージを共用し、共用ストレージをセキュアにする能力を有する。
【0026】
多くの他のアーキテクテッド命令(architected instruction)と同様に、これらのUVCコマンドを機械ファームウェアによって実行することができる。この機械はセキュア・インタフェース制御モードには入らず、その代わりに、この機械が現在動作しているモードでセキュア・インタフェース制御の機能を実行する。ハードウェアは、ファームウェア状態とソフトウェア状態の両方を維持し、そのため、これらのオペレーションを取り扱うためのコンテキストの切換え(switch of contexts)は起こらない。この低いオーバヘッドは、ソフトウェア、セキュア・インタフェース制御の複雑さを最小化し低減させ、それにもかかわらず必要なセキュリティ・レベルを提供するような形での、信頼できるファームウェアおよびハードウェアの異なる層間の緊密な協働を可能にする。
【0027】
本発明の1つまたは複数の実施形態によれば、セキュア・ゲスト環境およびサポート・ハイパーバイザ環境を適正に維持するためにセキュア・インタフェース制御およびハードウェアが必要とする制御ブロック構造のサポートにおいて、ハイパーバイザは、セキュア・ゲスト環境を初期化する間に、セキュア・インタフェース制御にストレージを供与する。その結果として、ハイパーバイザは、1)セキュア・ゲストを動作するゾーンを初期化するため、2)セキュア・ゲスト・ドメインを生成するため、および3)それぞれのドメインで動作するセキュアCPUを生成するための準備において、とりわけ供与に必要なストレージの量を決定するために、照会UVC(query UVC)命令を発する。ストレージが供与された後、そのストレージにはセキュア・ストレージのマークが付けられ、そのストレージは、セキュア・インタフェース制御に属するものとして登録され、非セキュアまたはセキュア・ゲスト・エンティティによるアクセスが禁じられる。このことは、関連エンティティ(例えばセキュア・ゲストCPU、セキュア・ゲスト・ドメインまたはゾーン)が破壊されるときまで事実であり続ける。
【0028】
一例では、ゾーン特定UV制御ブロックをサポートするUVストレージの第1のセクションが、初期化UVCの一部としてセキュア・インタフェース制御に供与され、このセクションは、本明細書ではUV2ストレージと呼ぶものの中に存在する。(それぞれのセキュア・ゲスト・ドメインに対する)ベース(base)セキュア・ゲスト構成制御ブロックおよび可変(variable)セキュア・ゲスト構成制御ブロックをサポートするUVストレージの第2および第3のセクションは、セキュア・ゲスト構成生成(create-secure-guest-configuration)UVCの一部として供与され、それらのセクションはそれぞれ、UVSおよびUVVストレージの中に存在する。セキュアCPU制御ブロックをサポートするUVストレージの第4のセクションおよび最終セクションもUVS空間に存在し、それらのセクションは、セキュア・ゲストCPU生成(create-secure-guest-CPU)UVCの一部として供与される。これらのそれぞれのエリアが供与されると、セキュア制御インタフェースは、(非セキュア・エンティティがそれらエリアにアクセスすることを防ぐために)それらのエリアにセキュアのマークを付け、さらに、(セキュア・ゲスト・エンティティがそれらのエリアにアクセスすることを防ぐために)それらのエリアを、ゾーン・セキュリティ・テーブルに、セキュア・インタフェース制御に属するものとして登録する。UV空間内のさらなる分離を提供するため、(特定のどのセキュア・ゲスト・ドメインにも関連づけられていない)UV2空間にさらに、固有のUV2セキュア・ドメインのタグが付けられ、その一方で、UVS空間とUVV空間の両方に、関連する特定のセキュア・ゲスト・ドメインのタグが付けられる。この例では、UVV空間がホスト仮想空間に存在し、したがって、ホスト仮想-ホスト絶対マッピングによってUVV空間をさらに識別することができる。
【0029】
セキュア・インタフェース制御は、全てのストレージ(非セキュア・ストレージ、セキュア・ゲスト・ストレージおよびUVストレージ)にアクセスすることができるが、本発明の1つまたは複数の実施形態は、セキュア・インタフェース制御がUVストレージに非常に特異的にアクセスすることを可能にする機構を提供する。セキュア・ゲスト・ドメイン間の分離を提供する同じハードウェア機構を使用して、本発明の実施形態は、UVストレージ内の同様の分離を提供することができる。このことは、セキュア・インタフェース制御が、意図および指定されたときにUVストレージだけにアクセスすること、セキュア・インタフェース制御が、所望の指定されたセキュア・ゲストに対するセキュア・ゲスト・ストレージだけにアクセスすること、および、セキュア・インタフェース制御が、指定されたときに、非セキュア・ストレージだけにアクセスすることを保証する。すなわち、セキュア・インタフェース制御は、セキュア・インタフェース制御がアクセスしようと意図するストレージを非常に明確に指定することができ、そのため、ハードウェアは、セキュア・インタフェース制御がそのストレージに実際にアクセスすることを保証することができる。さらに、セキュア・インタフェース制御は、セキュア・インタフェース制御が、指定されたセキュア・ゲスト・ドメインに関連づけられたUVストレージだけにアクセスすることを意図していることをさらに指定することができる。
【0030】
セキュリティを提供するため、ハイパーバイザが、セキュア・ゲスト・データをトランスペアレントにページインおよびページアウトしているときには、ハードウェアとともに働いているセキュア・インタフェース制御が、データの復号および暗号化を提供および保証する。これを達成するため、ハイパーバイザは、ゲスト・セキュア・データをページインおよびページアウトするときに、新たなUVCを発行する必要がある。これらの新たなUVC中にセキュア・インタフェース制御によってセットアップされた制御に基づいて、ハードウェアは、これらのUVCが実際にハイパーバイザによって発行されることを保証する。
【0031】
この新規のセキュア環境では、ハイパーバイザがセキュア・ページをページアウトしているときにはいつでも、ハイパーバイザは、新たなセキュア・ストレージからの変換(convert from secure storage)(エクスポート)UVCを発行する必要がある。このエクスポートUVCに応答して、セキュア・インタフェース制御は、1)そのページがUVによって「ロックされている」ことを示し、2)そのページを暗号化し、3)そのページを非セキュアにセットし、4)UVロックをリセットする。このエクスポートUVCが完了した後、ハイパーバイザは次に、暗号化されたゲスト・ページをページアウトすることができる。
【0032】
さらに、ハイパーバイザがセキュア・ページをページインしているときにはいつでも、ハイパーバイザは、新たなセキュア・ストレージへの変換(convert to secure storage)(インポート)UVCを発行しなければならない。このインポートUVCに応答して、UVないしセキュア・インタフェース制御は、1)ハードウェア内で、そのページにセキュア・ページのマークを付け、2)そのページがUVによって「ロックされている」ことを示し、3)そのページを復号し、4)特定のセキュア・ゲスト・ドメインに権限(authority)をセットし、5)UVロックをリセットする。セキュア・エンティティによってアクセスがなされているときにはいつでも、ハードウェアは、変換中にそのページに対する許可チェックを実行する。これらのチェックは、1)このページが実際に、このページにアクセスしようとしているセキュア・ゲスト・ドメインに属していることを確認するためのチェック、および2)このページがゲスト・メモリに存在している間、ハイパーバイザが、このページのホスト・マッピングを変更しなかったことを確かめるためのチェックを含む。ページにセキュア・ページのマークが付けられた後、ハードウェアは、ハイパーバイザまたは非セキュア・ゲストVMによるセキュア・ページへのアクセスを防ぐ。これらの追加の変換ステップは、別のセキュアVMによるアクセスを防ぎ、ハイパーバイザによる再マッピングを防ぐ。
【0033】
本発明の1つまたは複数の実施形態は、セキュア・ゲストがハイパーバイザとページを共用することを可能にする。セキュア・インタフェース制御は、デファイン・シェアード・ストレージ・コマンド(define-shared-storage command)またはメーク・シェアード・コマンド(make-shared command)などの1つまたは複数の共用コマンドを提供することができる。共用ページに関して、セキュア・インタフェース制御は、このページを単一のセキュア・ゲスト構成に割り当てること、およびこのページに非セキュア・ページのマークを付けることができる。このセキュア・ゲスト・アクセスは、このページが、ハイパーバイザによって再マップされていないこと、またはこのページが、異なるゲストに再割当てされていないことを確認し続けることができる。セキュア・インタフェース制御は、ハイパーバイザによるアクセスを許しつつ、異なるセキュア・ゲスト構成の共用ストレージ間の分離を提供することができる。
【0034】
次に
図1を参照すると、本発明の1つまたは複数の実施形態による、ゾーン・セキュリティのためのテーブル100が概括的に示されている。
図1に示されたゾーン・セキュリティ・テーブル100は、セキュア・エンティティによってアクセスされたページへのセキュア・アクセスを保証するために、セキュア・インタフェース制御によって維持され、セキュア・インタフェース制御およびハードウェアによって使用される。ゾーン・セキュリティ・テーブル100は、ホスト絶対アドレス110によって索引付けされている。すなわち、ホスト絶対ストレージのページごとに1つのエントリが存在する。それぞれのエントリは、アクセスしているセキュア・エンティティにそのエントリが属していることを確認するために使用される情報を含む。
【0035】
さらに、
図1に示されているように、ゾーン・セキュリティ・テーブル100は、(このページに関連づけられたセキュア・ドメインを識別する)セキュア・ドメインID120、(このページが、セキュア・インタフェース制御に供与されたものであること、およびこのページが、セキュア・インタフェース制御によって所有されていることを示す)UVビット130、(ホスト絶対ページと定義されたセキュア・インタフェース制御ページが関連ホスト仮想アドレスを有していないときなどのある種の状況においてホスト・アドレス対比較を無効(ディスエーブル)にするために使用される)アドレス比較無効化(disable address compare)(DA)ビット140、(このページが非セキュア・ハイパーバイザによって共用されていることを示す)共用(shared)(SH)ビット150、および(ホスト・アドレス対と呼ばれる、このホスト絶対アドレスに対して登録されたホスト仮想アドレスを示す)ホスト仮想アドレス160を含む。ホスト・アドレス対は、ホスト絶対アドレスおよび登録された関連ホスト仮想アドレスを示すことに留意されたい。ホスト・アドレス対は、ハイパーバイザによってインポートされた後のこのページのマッピングを表し、この比較は、このページがゲストによって使用されている間、ホストがこのページをリマップしないことを保証する。
【0036】
動的アドレス変換(DAT)は、仮想記憶を実ストレージにマップするために使用される。ハイパーバイザの制御下で、ゲストVMが、ページング可能なゲストとして動作しているとき、ゲストは、DATを使用して、ゲストのメモリに存在するページを管理する。さらに、ホストは、独立してDATを使用して、それらのページがホストのメモリに存在するときに、(ホスト自体のページとともに)それらのゲスト・ページを管理する。ハイパーバイザは、DATを使用して、異なるVM間でのストレージの分離もしくは共用またはその両方を提供し、ハイパーバイザ・ストレージへのゲスト・アクセスを防ぐ。ゲストが非セキュア・モードで動作しているとき、ハイパーバイザは、それらのゲストの全てのストレージにアクセスすることができる。
【0037】
DATは、1つのアプリケーションを別のアプリケーションから分離することを可能にし、その一方で、それでも、それらのアプリケーションが共通のリソースを共用することを許す。さらに、DATは、VMの実装を可能にする。VMは、OSの新しいバージョンの設計および試験、ならびにアプリケーション・プログラムの並行処理に使用されることがある。仮想アドレスは、仮想ストレージ内の位置を識別する。アドレス空間は、連続する一連の仮想アドレスであり、それらの仮想アドレスは、(DATテーブルを含む)特定の変換パラメータとともに、それぞれの仮想アドレスを関連絶対アドレスに変換することを可能にする。この関連絶対アドレスは、ストレージ内のバイト位置によってそのアドレスを識別する。
【0038】
DATは、マルチテーブル・ルックアップを使用して、仮想アドレスを関連絶対アドレスに変換する。このテーブル構造は通常、ストレージ・マネージャによって定義および維持される。このストレージ・マネージャは、1つのページをページアウトして例えば別のページを持ち込むことによって、複数のプログラム間で絶対ストレージをトランスペアレントに共用する。そのページがページアウトされたとき、ストレージ・マネージャは、例えば、関連ページ・テーブル内の無効ビットをセットする。1つのプログラムが、ページアウトされたページにアクセスしようとすると、ハードウェアは、しばしばページ・フォールト(page fault)と呼ばれるプログラム割込みをストレージ・マネージャに提示する。これに応答して、ストレージ・マネージャは、リクエストされたページをページインし、無効ビットをリセットする。これは全て、そのプログラムに対してトランスペアレントに実行され、これによって、ストレージ・マネージャは、そのストレージを仮想化し、さまざまな異なるユーザ間でそのストレージを共用することができる。
【0039】
主ストレージにアクセスするためにCPUによって仮想アドレスが使用されるとき、その仮想アドレスは最初にDATによって実アドレスに変換され、次いでプレフィックス変換(prefixing)によって絶対アドレスに変換される。特定のアドレス空間に対する最も高水準のテーブルの指示(designation)(起点および長さ)は、アドレス空間制御要素(address-space-control element)(ASCE)と呼ばれ、この指示が関連アドレス空間を定義する。
【0040】
次に
図2を参照すると、本発明の1つまたは複数の実施形態による、DATを実行するための例示的な仮想アドレス空間202、204および絶対アドレス空間206が概括的に示されている。
図2に示された例には、2つの仮想アドレス空間、すなわち(アドレス空間制御要素(ASCE)A 208によって定義された)仮想アドレス空間202、および(ASCE B 210によって定義された)仮想アドレス空間204が存在する。仮想ページA1.V 212a1、A2.V 212a2およびA3.V 212a3は、ストレージ・マネージャによって、マルチテーブル(セグメント230およびページ・テーブル232a、232b)ルックアップにおいて、ASCE A 208を使用して、絶対ページA1.A 220a1、A2.A 220a2およびA3.A 220a3にマップされる。同様に、仮想ページB1.V 214b1およびB2.V 214b2は、2テーブル234および236ルックアップにおいて、ASCE B 210を使用して、それぞれ絶対ページB1.A 222b1およびB2.A 222b2にマップされる。
【0041】
次に
図3を参照すると、本発明の1つまたは複数の実施形態による、ハイパーバイザの下で動作しているVMをサポートするために使用されるネストされたマルチパートDAT変換の一例が概括的に示されている。
図3に示された例では、(ゲストASCE(GASCE)A 304によって定義された)ゲストA仮想アドレス空間A 302と(GASCEB 308によって定義された)ゲストB仮想アドレス空間B 306がともに、共用ホスト(ハイパーバイザ)仮想アドレス空間325内に存在する。示されているように、ゲストAに属する仮想ページA1.GV 310a1、A2.GV 310a2およびA3.GV 310a3はそれぞれ、ゲストAストレージ・マネージャによって、GASCEA 304を使用して、ゲスト絶対ページA1.HV 340a1、A2.HV 340a2およびA3.HV 340a3にマップされている。ゲストBに属する仮想ページB1.GV 320b1およびB2.GV 320b2はそれぞれ、独立して、ゲストBストレージ・マネージャによって、GASCEB 308を使用して、ゲスト絶対ページB1.HV 360b1およびB2.HV 360b2にマップされている。この例では、これらのゲスト絶対ページが、共用ホスト仮想アドレス空間325内に直接にマップし、続いて、追加のホストDAT変換を経て、ホスト絶対アドレス空間330にマップする。示されているように、ホスト仮想アドレスA1.HV 340a1、A3.HV 340a3およびB1.HV 360b1は、ホスト・ストレージ・マネージャによって、ホストASCE(HASCE)350を使用して、A1.HA 370a1、A3.HA 370a3およびB1.HA 370b1にマップされている。ゲストAに属するホスト仮想アドレスA2.HV 340a2とゲストBに属するB2.HV 360b2はともに、同じホスト絶対ページAB2.HA 380にマップされている。これによって、これらの2つのゲスト間でデータを共用することができる。ゲストDAT変換の間、それぞれのゲスト・テーブル・アドレスはゲスト絶対アドレスとして取り扱われ、追加のネストされたホストDAT変換を受ける。
【0042】
本明細書に記載された本発明の実施形態は、セキュア・ゲストおよびUVストレージ保護を提供する。非セキュア・ゲストおよびハイパーバイザによるセキュア・ストレージへのアクセスは禁じられる。ハイパーバイザは、存在する所与のセキュア・ゲスト・ページに関して以下のことが起こることを規定している。関連するホスト絶対アドレスには、単一のハイパーバイザ(ホスト)DATマッピングによってのみアクセス可能である。すなわち、セキュア・ゲストに割り当てられた所与のホスト絶対アドレスにマップする単一のホスト仮想アドレスが存在する。所与のセキュア・ゲスト・ページに関連した(ホスト仮想アドレスからホスト絶対アドレスへの)ハイパーバイザDATマッピングは、そのページがページインされている間、変化しない。セキュア・ゲスト・ページに関連したホスト絶対ページは、単一のセキュア・ゲストに対してマップされる。
【0043】
本発明の1つまたは複数の実施形態によれば、セキュア・ゲスト間のストレージの共用も禁じられる。ストレージは、単一のセキュア・ゲストとハイパーバイザとの間で、そのセキュア・ゲストの制御下で共用される。UVストレージはセキュア・ストレージであり、セキュア・インタフェース制御によるアクセスは可能だが、ゲスト/ホストはアクセスできない。ストレージは、ハイパーバイザによってセキュア・インタフェース制御に割り振られる。本発明の1つまたは複数の実施形態によれば、これらの規則の違反の企ては、ハードウェアおよびセキュア・インタフェース制御によって禁じられる。
【0044】
次に
図4を参照すると、本発明の1つまたは複数の実施形態による、セキュア・ゲスト・ストレージのマッピングの一例が概括的に示されている。
図4は
図3に似ているが、
図4の例は、セキュア・ゲストAとセキュア・ゲストBとの間のストレージの共用を許さない点が異なる。
図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にマップしている。この例では、セキュア・ゲスト間の共用がない。
【0045】
ディスク上にある間、セキュア・ゲスト・ページは暗号化されている。ハイパーバイザがセキュア・ゲスト・ページをページインするとき、ハイパーバイザは、UV呼出し(UVC)を発行する。このUVCは、(共用されていない場合に)そのページにセキュア・ページのマークを付けること、(共用されていない場合に)そのページを復号すること、およびそのページを、適切なセキュア・ゲスト(例えばゲストA)に属しているとして(ゾーン・セキュリティ・テーブルに)登録することを、セキュア・インタフェース制御に実行させる。さらに、セキュア・インタフェース制御は、関連するホスト仮想アドレス(例えばA3.HV 340a3)を、そのホスト絶対ページ(ホスト・アドレス対と呼ばれる)に登録する。正しいUVCを発行することにハイパーバイザが失敗した場合、ハイパーバイザは、そのセキュア・ゲスト・ページにアクセスしようとしたときに例外を受け取る。ハイパーバイザがゲスト・ページをページアウトするときにも、同様のUVCが発行される。このUVCは、(共用されていない場合に)ゲスト・ページを暗号化し、その後、そのゲスト・ページに非セキュア・ページのマークを付け、そのゲスト・ページを、ゾーン・セキュリティ・テーブルに非セキュア・ページとして登録する。
【0046】
5つの所与のホスト絶対ページK、P、L、MおよびNを有する一例では、ハイパーバイザがそれらのページをページインするときに、セキュア・インタフェース制御によって、それぞれのホスト絶対ページにセキュア・ページのマークが付けられる。このことは、非セキュア・ゲストおよびハイパーバイザがそれらのページにアクセスすることを防ぐ。ホスト絶対ページK、PおよびMは、ハイパーバイザがそれらのページをページインするときに、ゲストAに属するものとして登録され、ホスト絶対ページLおよびNは、ハイパーバイザによってページインされるときに、ゲストBに登録される。共用ページ、すなわち単一のセキュア・ゲストとハイパーバイザとの間で共用されたページは、ページング中に暗号化もまたは復号もされない。それらのページにはセキュア・ページのマークが付けられていない(それらのページはハイパーバイザによるアクセスを許す)が、それらのページは、単一のセキュア・ゲスト・ドメインとともに、ゾーン・セキュリティ・テーブルに登録される。
【0047】
本発明の1つまたは複数の実施形態によれば、非セキュア・ゲストまたはハイパーバイザが、セキュア・ゲストによって所有されたページにアクセスしようとすると、ハイパーバイザが、セキュア・ストレージ・アクセス(PIC3D)例外を受け取る。これを決定するのに追加の変換ステップは必要ない。
【0048】
1つまたは複数の実施形態によれば、セキュア・エンティティがページにアクセスしようとすると、ハードウェアが、ストレージが実際にその特定のセキュア・ゲストに属していることを確認する追加の変換チェックを実行する。その特定のセキュア・ゲストに属していない場合には、ハイパーバイザに、非セキュア・アクセス(PIC3E)例外が提示される。さらに、変換中のホスト仮想アドレスが、ゾーン・セキュリティ・テーブル内の登録されたホスト・アドレス対のホスト仮想アドレスと一致しない場合には、セキュア・ストレージ違反(‘3F’x)例外が認識される。ハイパーバイザによる共用を可能にするため、セキュア・ゲストは、変換チェックがアクセスを許す限り、セキュア・ストレージのマークが付けられていないストレージにアクセスすることができる。
【0049】
次に
図5を参照すると、本発明の1つまたは複数の実施形態による、DATオペレーションのシステム概略
図500が概括的に示されている。システム概略
図500は、ホスト・プライマリ(primary)仮想アドレス空間510およびホスト・ホーム(home)仮想アドレス空間520を含み、これらの空間のページが、ハイパーバイザ(ホスト)絶対アドレス空間530に変換される(例えばホストDAT変換525参照。点線は、DAT変換525によるマッピングを表していることに留意されたい)。例えば、
図5は、2つの異なるホスト仮想アドレス空間によるホスト絶対ストレージの共用、2つのゲスト間での、それらのホスト仮想アドレスのうちの1つのホスト仮想アドレスの共用、および、ホスト自体による、それらのホスト仮想アドレスのうちの1つのホスト仮想アドレスの共用を示している。この点に関して、ホスト・プライマリ仮想アドレス空間510およびホスト・ホーム仮想アドレス空間520は、2つのホスト仮想アドレス空間の例であり、これらの2つのホスト仮想アドレス空間はそれぞれ、別個のASCE、すなわちホスト・プライマリASCE(HPASCE)591およびホスト・ホームASCE(HHASCE)592によってアドレスされる。セキュア・インタフェース制御ストレージ(仮想ストレージと実ストレージの両方)は全てハイパーバイザによって供与されたものであり、それらのストレージにはセキュア・ストレージのマークが付けられていることに留意されたい。供与された後、セキュア・インタフェース制御ストレージには、関連するセキュア・エンティティが存在する限り、セキュア・インタフェース制御だけがアクセスすることができる。
【0050】
示されているとおり、ホスト・プライマリ仮想アドレス空間510は、ゲストA絶対ページA1.HV、ゲストA絶対ページA2.HV、ゲストB絶対ページB1.HVおよびホスト仮想ページH3.HVを含む。ホスト・ホーム仮想アドレス空間520は、セキュア・インタフェース制御仮想ページU1.HV、ホスト仮想ページH1.HVおよびホスト仮想ページH2.HVを含む。
【0051】
本発明の1つまたは複数の実施形態によれば、全てのセキュア・ゲスト(例えばセキュア・ゲストAおよびセキュア・ゲストB)ストレージが、本明細書に記載されたゾーン・セキュリティ・テーブルに、セキュア・ゲスト構成に属するものとして登録され、さらに、関連するホスト仮想アドレス(例えばA1.HV、A2.HV、B1.HV)が、ホスト・アドレス対の部分として登録される。1つまたは複数の実施形態では、全てのセキュア・ゲスト・ストレージが、ホスト・プライマリ仮想空間でマップされる。さらに、全てのセキュア・インタフェース制御ストレージが、やはりゾーン・セキュリティ・テーブルに、セキュア・インタフェース制御に属するものとして登録され、さらに、全てのセキュア・インタフェース制御ストレージを、関連するセキュア・ゲスト・ドメインに基づいて、ゾーン・セキュリティ・テーブル内で区別することができる。本発明の1つまたは複数の実施形態によれば、UV仮想ストレージがホスト・ホーム仮想空間でマップされ、関連するホスト仮想アドレスが、ホスト・アドレス対の部分として登録される。1つまたは複数の実施形態によれば、UV実ストレージは、関連するホスト仮想マッピングを有しておらず、このことを示すために、(仮想アドレス比較が無効化されていることを示す)ゾーン・セキュリティ・テーブル内のDAビットがセットされる。ホスト・ストレージには非セキュア・ストレージのマークが付けられ、さらに、ホスト・ストレージは、ゾーン・セキュリティ・テーブルに、非セキュア・ストレージとして登録される。
【0052】
したがって、「ゲスト絶対=ホスト仮想」である場合には、(HPASCE 591によって定義された)ハイパーバイザ(ホスト)プライマリDATテーブルが、ホスト・プライマリ仮想アドレス空間510のページを以下のように変換する。ゲストA絶対ページA1.HVが、セキュア・ゲストAに属するホスト絶対A1.HAにマップされ、ゲストA絶対ページA2.HVが、セキュア・ゲストAに属するホスト絶対A2.HAにマップされ、ゲストB絶対ページB1.HVが、セキュア・ゲストBに属するホスト絶対B1.HAにマップされ、ホスト仮想ページH3.HVが、ホスト絶対ページH3.HA非セキュア・ホストにマップされる(このページは非セキュア・ページであるためホスト・アドレス対は存在しない)。さらに、(HHASCE 592によって定義された)ハイパーバイザ(ホスト)ホームDATテーブルが、ホスト・ホーム仮想アドレス空間520のページを以下のように変換する。セキュア・インタフェース制御仮想ページU1.HVが、セキュアUV仮想ページとして定義されたホスト絶対ページU1.HAにマップされ、ホスト仮想ページH1.HVが、非セキュア・ページとして定義されたホスト絶対ページH1.HAにマップされ、ホスト仮想ページH2.HVが、非セキュア・ページとして定義されたホスト絶対ページH2.HAにマップされる。H1.HAまたはH2.HAは非セキュア・ページであるため、それらのページに関連づけられたホスト・アドレス対は存在しない。
【0053】
オペレーションの際、セキュア・ゲストが、セキュア・インタフェース制御に割り当てられたセキュア・ページにアクセスしようとした場合には、ハードウェアによって、ハイパーバイザに、セキュア・ストレージ違反(‘3F’X)例外が提示される。非セキュア・ゲストまたはハイパーバイザが、セキュア・ページ(セキュア・インタフェース制御に割り当てられたセキュア・ページを含む)にアクセスしようとした場合には、ハードウェアによって、ハイパーバイザに、セキュア・ストレージ・アクセス(‘3D’X)例外が提示される。あるいは、セキュア・インタフェース制御空間に対して試みられたアクセスに対して、エラー条件を提示することもできる。セキュア・インタフェース制御アクセスに関して、ハードウェアが、セキュア割当ての不整合を検出した場合(例えば、ストレージが、セキュア・インタフェース制御に属するものとしてではなく、セキュア・ゲストに属するものとしてゾーン・セキュリティ・テーブルに登録されている場合、または使用されているホスト・アドレス対と登録された対との間に不整合がある場合)には、チェックが提示される。
【0054】
言い換えると、ホスト・プライマリ仮想アドレス空間510は、(セキュア・ゲストAに属する)ホスト仮想ページA1.HVおよびA2.HV、ならびに(セキュア・ゲストBに属する)B1.HVを含み、それらのページはそれぞれ、ホスト絶対A1.HA、A2.HAおよびB1.HAにマップする。さらに、ホスト・プライマリ仮想アドレス空間510はホスト(ハイパーバイザ)ページH3.HVを含み、このページは、ホスト絶対H3.HAにマップする。ホスト・ホーム仮想空間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ビットがセットされる。
【0055】
この変換後のハイパーバイザ(ホスト)絶対アドレス空間530の一例が
図6に示されている。
図6には、本発明の1つまたは複数の実施形態による、セキュア・インタフェース制御メモリに関するシステム概略
図600が示されている。システム概略
図600は、ハイパーバイザ(ホスト)絶対アドレス空間630を示しており、ハイパーバイザ(ホスト)絶対アドレス空間630は、ホスト絶対ページ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に対するもの)を含む。
【0056】
次に
図7を参照すると、本発明の1つまたは複数の実施形態による、インポート・オペレーションのためのプロセス・フロー700が概括的に示されている。セキュア・ゲストが、ハイパーバイザによってページアウトされたページにアクセスすると、そのページを再びセキュアにページインするために、プロセス・フロー700に示されたイベントなどの一連のイベントが実行される。プロセス・フロー700はブロック705から始まり、ブロック705で、セキュア・ゲストがゲスト仮想ページにアクセスする。このページは例えば無効であるため、ハードウェアは、プログラム割込みコード(program-interruption-code)11(PIC11)によって示された、ホスト・ページ・フォールトをハイパーバイザに提示する(ブロック715参照)。これを受けて、ハイパーバイザは、このゲスト・ページに対する使用可能な非セキュア・ホスト絶対ページを識別し(ブロック720参照)、暗号化されたゲスト・ページを、識別されたホスト絶対ページにページインする(ブロック725参照)。
【0057】
次いで、ブロック730で、このホスト絶対ページを、(ホスト仮想アドレスに基づいて)適切なホストDATテーブルにマップする。次いで、ブロック735で、ハイパーバイザ・ホストが、セキュア・ゲストを再びディスパッチする。ブロック740で、セキュア・ゲストが、ゲスト・セキュア・ページに再びアクセスする。ページ・フォールトはもはや存在しないが、このセキュア・ゲスト・アクセスおよびページは、
図1のゾーン・セキュリティ・テーブル100内でセキュアのマークが付けられていないため、ブロック745で、ハードウェアは、ハイパーバイザに、非セキュア・ストレージ例外(PIC3E)を提示する。このPIC3Eは、必要なインポートが発行されるまで、ゲストがこのセキュア・ページにアクセスすることを防ぐ。次に、プロセス・フロー700は、
図8に接続された「A」に進む。
【0058】
次に
図8を参照すると、本発明の1つまたは複数の実施形態による、インポート・オペレーションを実行するためのプロセス・フロー800が概括的に示されている。行儀のよい(well-behaved)ハイパーバイザ(例えば期待されるやり方でエラーなく実行するハイパーバイザ)は、このPIC3Eに応答して、インポートUVCを発行する(ブロック805参照)。この時点で、インポートするページには、非セキュアのマークが付けられており、このページには、ハイパーバイザ、他の非セキュア・エンティティおよびセキュア・インタフェース制御だけがアクセスできることに留意されたい。セキュア・ゲストはこのページにアクセスできない。
【0059】
このインポートUVCの一部として、セキュア・インタフェース制御の役目を果たす信頼できるファームウェアが、このページがセキュア・インタフェース制御によって既にロックされているかどうかを知るためのチェックを実行する(判断ブロック810参照)。ロックされている場合、プロセス・フロー800はブロック820に進む。ブロック820で、ハイパーバイザに「使用中(busy)」リターン・コードが返され、ハイパーバイザは、それに応答して遅延し(ブロック825参照)、インポートUVCを再発行する(プロセス・フロー800はブロック805に戻る)。ページがまだロックされていない場合、プロセス・フロー800は判断ブロック822に進む。
【0060】
判断ブロック822で、セキュア・インタフェース制御は、そのページが、非セキュア・ハイパーバイザによって共用されているページであるかどうかを知るためのチェックを実行する。そのページが共用されている場合には(プロセス・フロー800は判断ブロック824に進み)、セキュア・インタフェース制御が、ホスト絶対アドレスを、関連セキュア・ゲスト・ドメイン、ホスト仮想アドレスとともに、ゾーン・セキュリティ・テーブルに、共用されているとして、登録する。このページは、非セキュアのマークが付けられたままである。これによってインポートUVCは完了し、このページは、この時点で、ゲストによるアクセスに対して使用可能である。処理は進んで、ハイパーバイザがゲストを再びディスパッチし(ブロック830)、セキュア・ゲストは、成功のうちにこのページにアクセスする(ブロック835)。
【0061】
インポートするホスト仮想ページがハイパーバイザによって共用されていない場合、(プロセス・フロー800はブロック840に進み、)セキュア・インタフェース制御が、そのページにセキュアのマークを付け、もはやハイパーバイザがそのページにアクセスできないようにする。ブロック845で、セキュア・インタフェース制御はそのページをロックし、他のUVCがページ・ステータスを変更できないようにする。ロックをセットした後、(ブロック850で、)セキュア・インタフェース制御は、ゲスト・ページが暗号化される間にゲスト・ページの内容が変化しなかったことを確認する。ゲスト・ページの内容が変化した場合には、ハイパーバイザにエラー・リターン・コードが返され、変化しなかった場合には、セキュア・インタフェース制御がセキュア・ページを復号する。
【0062】
ブロック855で、セキュア・インタフェース制御は、ページのロックを解除して、他のUVCによるアクセスを可能にし、そのページを、ゾーン・セキュリティ・テーブルに、セキュアとして登録し、適切なゲスト・ドメインおよびホスト仮想アドレスに関連づけて、ホスト・アドレスHV→HA対を完成させる。これによって、ゲストによるアクセスが可能になり、UVCが完了する。
【0063】
次に
図9を参照すると、本発明の1つまたは複数の実施形態による、供与メモリ・オペレーションに関するプロセス・フロー900が概括的に示されている。プロセス・フロー900はブロック905から始まり、ブロック905で、ハイパーバイザが、セキュア・インタフェース制御に照会UVCを発行する。ブロック910で、セキュア・インタフェース制御は、データ(例えば照会UVC)を返す。このデータは、必要なベース・ゾーン特定(zone-specific)ホスト絶対ストレージの量、必要なベース・セキュア・ゲスト・ドメイン特定(secure-guest-domain-specific)ホスト絶対ストレージの量、MBごとに必要な可変セキュア・ゲスト・ドメイン特定(secure-guest-domain-specific)ホスト仮想ストレージの量、もしくは必要なベース・セキュア・ゲストCPU特定(secure-guest-CPU-specific)ホスト絶対ストレージの量、またはこれらの組合せを含むことができる。
【0064】
ブロック915で、ハイパーバイザが、ベース・ホスト絶対ゾーン特定ストレージを(例えば照会UVCによって返されたサイズに基づいて)予約する。ブロック920で、ハイパーバイザは、セキュア・インタフェース制御に初期化を発行する。この点に関して、ハイパーバイザは、ゾーン全体に対するセキュア・ゲスト構成間の調整に必要なUV制御ブロックのための供与されたストレージ(以後、供与ストレージ)を提供する初期化UVCを発行することができる。この初期化UVCは、ベース・ゾーン特定ストレージ起点を指定する。
【0065】
ブロック925で、セキュア・インタフェース制御は、供与ストレージをUVに登録し、供与ストレージにセキュアのマークを付けることにより、初期化(例えば初期化UVC)を実施する。この初期化UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、その供与ストレージの一部をゾーン・セキュリティ・テーブルに割り当て、その供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに、固有のセキュア・ドメインとともに、関連セキュア・ゲスト・ドメインは含めずに、関連ホスト仮想アドレス対を持たないものとして、登録することができる。
【0066】
ブロック930で、ハイパーバイザは、ストレージ(例えばベースおよび可変セキュア・ゲスト・ドメイン特定ストレージ)を予約する。例えば、ハイパーバイザは、ベースおよび(例えばセキュア・ゲスト・ドメイン・ストレージのサイズに基づく)可変セキュア・ゲスト・ドメイン特定ストレージ(例えば照会UVCによって返されたサイズ)を予約する。ブロック935で、ハイパーバイザは、構成生成(create configuration)をセキュア・インタフェース制御に発行する。この点に関して、ハイパーバイザは、ベースおよび可変セキュア・ゲスト・ドメイン特定ストレージ起点を指定するセキュア・ゲスト構成生成UVCを発行することができる。さらに、このセキュア・ゲスト構成生成UVCは、このセキュア・ゲスト構成をサポートするために必要なUV制御ブロックのための供与ストレージを提供する。
【0067】
ブロック940で、セキュア・インタフェース制御は、構成生成(例えばセキュア・ゲスト構成生成UVC)を実施する。このセキュア・ゲスト構成生成UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、この供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに登録し、この供与ストレージを、関連セキュア・ゲスト・ドメインとともに登録することができる。ベース(ホスト絶対)供与ストレージは、関連ホスト仮想アドレス対を持たないものとして登録される。可変(ホスト仮想)供与ストレージは、関連ホスト仮想アドレス対とともに登録される。
【0068】
ブロック945で、ハイパーバイザが、ベース・セキュア・ゲストCPU特定ストレージ(例えば照会UVによって返されたサイズ)を予約する。ブロック950で、ハイパーバイザはストレージ起点を指定する。例えば、ハイパーバイザは、ベース・セキュア・ゲストCPU特定ストレージ起点を指定するセキュア・ゲストCPU生成を、UVに発行する。ブロック955で、セキュア・インタフェース制御が、CPU生成(例えばセキュア・ゲストCPU生成UVC)を実施する。このセキュア・ゲストCPU生成UVCに関して、セキュア・インタフェース制御は、供与ストレージにセキュアのマークを付け、その供与ストレージを、UVが使用するために、ゾーン・セキュリティ・テーブルに、関連セキュア・ゲスト・ドメインなしで、関連ホスト仮想アドレス対を持たないものとして、登録することができる。
【0069】
次に
図10を参照すると、本発明の1つまたは複数の実施形態による、非セキュア・ハイパーバイザ・ページからセキュア・インタフェース制御のセキュア・ページへの移行に関するプロセス・フロー1000が概括的に示されている。プロセス・フロー1000には、3つのハイパーバイザ・ページ(例えば非セキュア・ハイパーバイザ・ページA、非セキュア・ハイパーバイザ・ページBおよび非セキュア・ハイパーバイザ・ページC)が示されている。
【0070】
ハイパーバイザ(非セキュア)ページA、BおよびCには、(ハイパーバイザを含む)非セキュア・エンティティがアクセスすることができる。さらに、ハイパーバイザ(非セキュア)ページA、BおよびCには、非セキュア(NS)のマークが付けられており、ハイパーバイザ(非セキュア)ページA、BおよびCは、ゾーン・セキュリティ・テーブル(例えば
図1に示されたゾーン・セキュリティ・テーブル100)に、非セキュアおよび非共用として登録されている。矢印1005において、初期化UVCが発行される。この初期化UVCは、ゲスト・ページAを、ゾーン全体に関連したセキュア・インタフェース制御実ストレージ・ページ(UV2)1010に移行させる。セキュア・インタフェース制御実ストレージ1010にセキュアのマークを付けることができ、セキュア・インタフェース制御実ストレージ1010を、ゾーン・セキュリティ・テーブル(例えば
図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、セキュア・ゲスト・ドメインおよびハイパーバイザ-ホスト絶対(HV→HA)マッピングなしで登録することができる。その代わりに、セキュア・インタフェース制御実ストレージ1010は、固有のUV2セキュア・ドメインとともに登録され、DAビットが1にセットされる。セキュア・インタフェース制御実ストレージ1010には、セキュア・インタフェース制御が実ストレージとしてアクセスすることができることに留意されたい。
【0071】
矢印1025において、ハイパーバイザ(非セキュア)ページBから、SG構成生成UVCまたはSG CPU生成UVCが発行される。このUVCは、このページを、セキュア・ゲスト・ドメインに関連したセキュア・インタフェース制御実ストレージ(UVS)1030に移行させる。セキュア・インタフェース制御実ストレージ1030にセキュアのマークを付けることができ、セキュア・インタフェース制御実ストレージ1030を、ゾーン・セキュリティ・テーブル(例えば
図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、関連セキュア・ゲスト・ドメインとともに、ハイパーバイザ-ホスト絶対(HV→HA)マッピングなし(すなわちDAビット=1)で登録することができる。セキュア・インタフェース制御実ストレージ1030には、セキュア・ゲスト・ドメインに代わって、セキュア・インタフェース制御が実ストレージとしてアクセスすることができることに留意されたい。
【0072】
矢印1045において、ハイパーバイザ(非セキュア)ページCから、SG構成生成UVCが発行される。このUVCは、このページを、セキュア・ゲスト・ドメインに関連したセキュア・インタフェース制御仮想ストレージ(UVV)1050に移行させる。セキュア・インタフェース制御仮想ストレージ1050にセキュアのマークを付けることができ、セキュア・インタフェース制御仮想ストレージ1050を、ゾーン・セキュリティ・テーブル(例えば
図1に示されたゾーン・セキュリティ・テーブル100)に、UVとして、セキュア・ゲスト・ドメインおよびハイパーバイザ-ホスト絶対(HV→HA)マッピングとともに登録することができる。セキュア・インタフェース制御仮想ストレージ1050には、セキュア・ゲスト・ドメインに代わって、UV仮想ストレージとしてアクセスすることができることに留意されたい。
【0073】
次に
図11を参照すると、1つまたは複数の実施形態による、プログラムまたはセキュア・インタフェース制御によってなされたセキュア・ストレージ・アクセスに関するプロセス・フロー1100が示されている。この図は、セキュア・インタフェース制御が、ゲスト・ストレージまたはセキュア・インタフェース制御ストレージにアクセスしようとしており、そのアクセスのセキュリティをハードウェアが確認することを可能にするために、そのアクセスに正しくタグ付けしなければならない状況を表している。プロセス・フロー1100は、セキュア・インタフェース制御によるストレージ・アクセスのこのタグ付けを示している。プロセス・フロー1100はブロック1110から始まり、ブロック1110で、セキュア・インタフェース制御は、セキュア・インタフェース制御がセキュア・インタフェース制御ストレージにアクセスしているかどうかを判定する。
【0074】
このアクセスが、セキュア・インタフェース制御ストレージへのアクセスでない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)判断ブロック1112に進む。判断ブロック1112で、セキュア・インタフェース制御は、セキュア・インタフェース制御がセキュア・ゲスト・ストレージにアクセスしているかどうかを判定する。このアクセスが、セキュア・ゲスト・ストレージへのアクセスでない場合、プロセス・フロー1100は、非セキュア・アクセスのためのデフォルト設定を使用する(
図12のプロセス・フロー1200に接続された)「B」に進む。このアクセスが、セキュア・ゲスト・ストレージへのアクセスである場合、プロセス・フロー1100は判断ブロック1113に進み、判断ブロック1113で、セキュア・インタフェース制御は、デフォルト・セキュア・ゲスト・ドメインが使用されているどうかを判定する。はいの場合、プロセス・フロー1100は、セキュア・ゲスト・アクセスのためのデフォルト設定を使用する(
図12のプロセス・フロー1200に接続された)「B」に進む。いいえの場合、プロセス・フロー1100はブロック1114に進む。ブロック1114で、適切なセキュア・ゲスト・ドメインをSGセキュア・ドメイン・レジスタにロードする(プロセス・フロー1100は、
図12のプロセス・フロー1200に接続された「B」に進む)。
【0075】
このアクセスが、セキュア・インタフェース制御ストレージへのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1120に進む。ブロック1120で、そのアクセスにセキュアUVのタグを付ける(例えば、そのアクセスはUVセキュア・ドメイン・レジスタを使用する)。
【0076】
プロセス・フロー1100は次いで判断ブロック1130に進み、判断ブロック1130で、セキュア・インタフェース制御は、このアクセスが、UVV空間(例えばSG構成可変テーブル(SG-Config Variable Table))へのアクセスであるかどうかを判定する。このアクセスがUVV空間へのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1134に進む。ブロック1134で、そのアクセスに仮想アクセスのタグを付ける。ブロック1136で、適用可能なセキュア・ゲスト・ドメインをUVセキュア・ドメイン・レジスタにロードする。ブロック1138では、DAT変換およびストレージ・アクセスが始まる準備ができている。判断ブロック1130に戻る。このアクセスが、UVV空間へのアクセスではない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)ブロック1140に進む。ブロック1140で、そのアクセスに実アクセスのタグを付ける。
【0077】
判断ブロック1150で、セキュア・インタフェース制御は、このアクセスが、UVS空間(例えばSG構成またはCPUテーブル)へのアクセスであるかどうかを判定する。このアクセスがUVS空間へのアクセスである場合、プロセス・フロー1100は、(はいの矢印によって示されているように)ブロック1136に進む。このアクセスがUVS空間へのアクセスではない場合、プロセス・フロー1100は、(いいえの矢印によって示されているように)ブロック1170に進む。このアクセスはUV2空間(例えばゾーン・セキュリティ・テーブル)へのアクセスであるということになる。ブロック1170で、固有のUV2セキュア・ドメインをUVセキュア・ドメイン・レジスタにロードする。
【0078】
図12は、本発明の1つまたは複数の実施形態によるプロセス・フロー1200を示している。ゲストがディスパッチされると、SIE Entryファームウェアは、ゲストが動作していること(例えばゲスト・モードがアクティブであること)をハードウェアに示すことができ、そのゲストがセキュアであるかどうかを示すことができる。ゲストがセキュアである場合、関連セキュア・ゲスト・ドメインをハードウェアに(例えばSGセキュア・ドメイン・レジスタに)ロードすることができる。プログラムがストレージにアクセスしているとき、ハードウェアは、そのアクセスの時点におけるプログラムの現在の状態に基づいて、そのアクセスにタグを付けることができる。
図12は、プロセス・フロー1200の中のこのプロセスの一例を示している。ブロック1205で、ハードウェアは、機械が現在、ゲスト・モードで動作しているかどうかを判定することができ、ゲスト・モードで動作していない場合には、ブロック1210で、そのアクセスに、ホスト・アクセスであるとのタグを付けることができ、ブロック1215で、そのアクセスに、非セキュア・アクセスであるとのタグを付けることができる。ブロック1205で、機械がゲスト・モードで動作している場合、ブロック1220で、そのアクセスに、ゲスト・アクセスのタグを付けることができ、さらに、ブロック1225で、現在のゲストがセキュア・ゲストであるかどうかを判定することができる。ゲストがセキュアでない場合、ブロック1215で、そのアクセスに、非セキュアのタグを付けることができる。ゲストがセキュアである場合、ブロック1230で、ハードウェアは、そのゲストに、セキュアのタグを付けることができ、それによって、そのセキュア・ゲストを、そのセキュア・ゲストがディスパッチされたときにロードされたSGセキュア・ドメイン・レジスタに関連づけることができる。非セキュア・ゲストとセキュア・ゲストの両方に関して、ブロック1235で、DATステータスをチェックすることができる。DATがオフの場合、ブロック1240で、そのアクセスに、実アクセスのタグを付けることができる。DATがオンの場合、ブロック1245で、そのアクセスに、仮想アクセスのタグを付けることができる。DATがオフの場合に、ブロック1240で、そのアクセスに、実アクセスのタグを付けた後、またはDATがオンの場合に、ブロック1245で、そのアクセスに、仮想アクセスのタグを付けた後に、ブロック1250において、ハードウェアは、変換を開始し、ストレージにアクセスする準備ができている。これについては
図13でさらに説明する。
【0079】
図13は、本発明の1つまたは複数の実施形態による、セキュア・アクセスと非セキュア・アクセスの両方をサポートするためにプロセス・フロー1300においてハードウェアによって実行される変換の一例を示している。ブロック1305で、ハードウェアは、そのアクセスにゲスト変換のタグが付けられているかどうかを判定することができ、ゲスト変換のタグが付けられており、ブロック1310で、そのアクセスが仮想アクセスである場合、ブロック1315で、ゲストDATを実行することができる。ゲストDAT変換の間、ゲストDATテーブルのためのネストされた介在フェッチが存在しうる。それらのテーブル・フェッチに、ゲスト実フェッチのタグを付けることができ、元の変換にセキュアのタグが付けられた場合には、それらのテーブル・フェッチにセキュア・フェッチのタグを付けることができる。それらのテーブル・フェッチはさらに、プロセス・フロー1300の変換プロセスに従うことができる。ブロック1315でゲスト仮想アクセスのタグが付けられたアクセスに対して、ゲストDATが実行された後、およびブロック1310でゲスト実アクセスのタグが付けられたアクセス(仮想=いいえ)に対して、ブロック1320で、ゲスト・プレフィックス変換およびゲスト・メモリ・オフセットを適用することができる。このゲスト変換プロセスが完了したら、ブロック1325で、結果として生じたアドレスに、ホスト仮想アドレスのタグを付けることができ、元のゲスト変換にセキュアのタグが付けられた場合には、結果として生じたアドレスに、セキュア・アドレスのタグを付けることができる。ホスト仮想アクセスのタグが付けられた任意のアクセスに対して、プロセス1300を続けることができる。ブロック1305で、元のアクセスがホスト・アクセスであり(ゲスト=いいえ)、ブロック1330で、元のアクセスが仮想アクセスである場合、ブロック1335で、ホストDATを実行することができる。ブロック1335で、ホスト・テーブル・フェッチに、非セキュア・フェッチのマークを付けることができる。ブロック1335でホストDATを実行した後、またはブロック1330で、元のホスト・アクセスに実アクセスのタグが付けられた場合(仮想=いいえ)、ブロック1340で、ホスト・プレフィックス変換を適用することができる。ブロック1345で、結果として生じたアドレスはホスト絶対アドレスでありうる。
【0080】
図14は、本発明の1つまたは複数の実施形態による、プロセス・フロー1400においてハードウェアによって実行することができるセキュア・ストレージ保護付きのDAT変換の一例を示している。
図13のブロック1345から続いて、ブロック1405で、セキュアUVアクセスが識別された場合、ハードウェアは、ブロック1410で、ストレージが、セキュアUVストレージとして登録されているかどうかを確認することができ、セキュアUVストレージとして登録されていない場合には、ブロック1415で、エラーを提示する。UVストレージにアクセスするときには、セキュア・インタフェース制御によってセキュアUVアクセスを実行することができる。ブロック1410で、ストレージが、セキュアUVストレージとして登録されている場合、保護チェックを続けることができ、(セキュアUVアクセスを実行する前にセキュア・インタフェース制御によってセットアップされた)UVセキュア・ドメイン・レジスタを、処理が続く場合にブロック1420で実行されるドメイン・チェックのための指定されたセキュア・ドメインとして使用することができることを除いて、この保護チェックは、任意のセキュア・アクセスに対して実行することができる。さらに、ブロック1425でUVアクセスに対して検出された違反(入口点D)を、ブロック1430で、エラーとして提示することができ、ブロック1425でのセキュア・ゲスト違反(セキュアUV=いいえ)に対しては、ブロック1435で、ハイパーバイザに例外を提示することができる。
【0081】
ブロック1405でセキュアUVアクセスのタグが付けられていなかったアクセスについて、ハードウェアは、ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスであるかどうかを判定し、そのアクセスがセキュア・ゲスト・アクセスではなく、ブロック1445で、そのページにセキュアのマークが付けられている場合、ブロック1435で、ハイパーバイザに例外を提示することができる。一方、ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスでなく、ブロック1445で、そのページにセキュアのマークが付けられていない場合、ブロック1450で、変換は成功となる。
【0082】
ブロック1440で、そのアクセスがセキュア・ゲスト・アクセスである場合、または、そのアクセスが、ブロック1410でセキュアUVストレージとして登録されたストレージへのセキュアUVアクセスである場合、ハードウェアは、ブロック1420で、そのストレージが、そのアクセスに関連したセキュア・エンティティに登録されていることを確かめるためのチェックを実行することができる。このアクセスがセキュアUVアクセスである場合、(アクセスされているセキュアUVストレージに基づいてセキュア・インタフェース制御によってロードされた)UVセキュア・ドメイン・レジスタから、指定されたセキュア・ドメインを取得することができ、セキュア・ゲスト・アクセスに関して、指定されたセキュア・ドメインは、(セキュア・エンティティがディスパッチされたときにロードされた)SGセキュア・ドメイン・レジスタから取得される。ブロック1420で、アクセスされているストレージが、指定されたセキュア・ドメインに登録されていない場合、ブロック1425でのセキュアUVアクセスに関しては、ブロック1430でエラーが提示され、ブロック1425でのセキュア・ゲスト・アクセス(セキュアUV=いいえ)に関しては、ブロック1435で、ハイパーバイザに例外が提示される。
【0083】
ブロック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で、ハイパーバイザに例外が提示される。ブロック1475で、DAビット=0であり、そのアクセスが実アクセスである(仮想アクセス=いいえ)場合、ブロック1425でのセキュアUVがアクセスに関しては、ブロック1430でエラーが提示され、ブロック1425でのセキュア・ゲスト・アクセス(セキュアUVアクセス=いいえ)に関しては、ブロック1435で、ハイパーバイザに例外が提示され、あるいは、ブロック1450で、変換は成功のうちに完了となる。ブロック1480でのI/Oサブシステムによるアクセスは、ブロック1445でそのページにセキュア・ページのマークが付けられているかどうかを知るためのチェックを実行することができる。そのページがセキュア・ページである場合、ブロック1435で、ハイパーバイザに例外を提示することができ、そのページにセキュア・ページのマークが付けられていない場合、ブロック1450で、変換は成功となる。
【0084】
ゾーン・セキュリティ・テーブル・インタフェースによって、ストレージ登録およびマッピングのさまざまなチェックを集合的に管理することができる1485。例えば、ブロック1410、1420、1455、1470および1475は、さまざまなアクセスを管理するために、同じゾーンに関連づけられたゾーン・セキュリティ・テーブルとインタフェースすることができる。
【0085】
次に
図15を参照すると、本発明の1つまたは複数の実施形態による、共用アクセス・ストレージ保護のためのプロセス・フロー1500が概括的に示されている。ブロック1505で、セキュア・ゲストなどのセキュア・エンティティが、メモリのページを共用することが計画されているが、このページの内容が秘密である場合に、このページのデータ内容を共用することの一部としてではなく、例えばメモリ管理の一部として、このメモリのページを暗号化することができる。暗号化は、セキュア・インタフェース制御のサービスとして提供することができ、または、セキュア・ゲストが、別個の暗号化プロセスを実施することを選んでもよい。
【0086】
図15の例では、ブロック1510で、セキュア・エンティティが、セキュア・インタフェース制御にセット・シェアード・アクセス・コマンド(set-shared-access command)を発行することができる。セキュア・インタフェース制御において、このセット・シェアード・アクセス・コマンドを、このページへの共用アクセスを確立することを求めるセキュア・エンティティからのリクエストとして受け取ることができる。セキュア・インタフェース制御は、ブロック1515で、このページが現在、セキュア・ストレージ保護インジケータがセットされた(例えばSSP=1)セキュア・ページとして識別されているかどうかを判定することができ、ブロック1520で、このページが、このコマンドを発行したセキュア・エンティティのセキュア・ドメインに登録されているかどうかを判定することができる。セキュア・インタフェース制御は、ブロック1515で、このページがセキュア・ページとして識別されていると判定したことに、およびブロック1520で、このページが、セキュア・エンティティのセキュア・ドメインに登録されていると判定したことに基づいて、このページを、セキュア・ドメインに、共用ページとして登録することができる。ブロック1530で、セキュア・インタフェース制御によって、このページが現在、セキュア・ページとして識別されており(ブロック1515)、セキュア・エンティティのセキュア・ドメインに登録されており(ブロック1520)、このページがまだロックされていない(ブロック1525)と判定したことに基づいて、このページをロックすることができる。セキュア・インタフェース制御は、同じセキュア・ページを管理することを企てているセキュア・エンティティまたはセキュア・インタフェース制御が、このページがロックされているときにこのページにアクセスすることを防ぐことができる。例えば、セキュア・インタフェース制御は、異なるプロセッサ上でもしくは異なるコンテキストでまたはその両方でのページ登録の変更の企てを試みているセキュア・エンティティもしくはセキュア・インタフェース制御またはその両方が、このページがロックされているときにこのページにアクセスすることを防ぐことができる。このページがロックされているときにこのページの1つまたは複数の許可チェックもしくは状態更新またはその両方を、セキュア・インタフェース制御によって実行することができる。この許可チェックおよび状態更新は例えば、暗号化された内容をハイパーバイザがメモリにページインおよびメモリからページアウトしているときにその内容に対する変更を維持および検出するために使用される、機械の完全性状態(integrity state)に関係するチェックおよび更新を含むことができる。ブロック1535で、このページの1つまたは複数の許可チェックを完了したことに基づいて、このページのロックを解除し、このページを、セキュア・ドメインに、共用ページとして登録することができる。ブロック1540で、このページに、非セキュア・ページのマークを付けることができる。
【0087】
いくつかの実施形態では、暗号化が必要な場合に、ブロック1505を、プロセス・フロー1500の後の方で、すなわち、ページをロックした後、ページを共用し、このページに非セキュア・ページのマークを付ける前の時点で、実行することができる。ブロック1545で、このページへの共用アクセスを確立することを求めるリクエストを受け取る前にこのページが既にロックされていたと判定したことに基づいて(ブロック1525=はい)、セキュア・エンティティに使用中インジケータを送ることができる。例えば以前に発行されたコマンドが完了するための追加の時間を提供するため、および再試行レートを遅くするめに、ブロック1550で、使用中インジケータを遅延させることができる。この遅延は、セキュア・インタフェース制御またはセキュア・ゲストによって実行することができる。このページがセキュア・ドメインに登録されなかった場合(ブロック1520=いいえ)、または、このページがセキュア・ページでなく(ブロック1515=いいえ)、このページが共用されていた場合(ブロック1560=はい)、ブロック1555で、エラーを報告することができる。このページがセキュア・ページでなく(ブロック1515=いいえ)、このページが共用ページでなかった場合(ブロック1560=いいえ)、ブロック1555で、非セキュア・エンティティに例外を提示することができる。
【0088】
次に
図16を参照すると、本発明の1つまたは複数の実施形態による、セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用のためのプロセス・フロー1600が概括的に示されている。プロセス・フロー1600は、
図15のプロセス・フロー1500の変形形態である。
【0089】
ブロック1605で、コンピュータ・システムのセキュア・インタフェース制御は、コンピュータ・システムの非セキュア・エンティティがこの非セキュア・エンティティとコンピュータ・システムのセキュア・ドメインとの間で共用されているメモリのページにアクセスすることを、このページのセキュア・ストレージ保護インジケータがクリアであり(例えばSSP=0)このページに非セキュア・ページのマークが付けられていることに基づいて、有効化することができる。ブロック1610で、セキュア・インタフェース制御は、非セキュア・エンティティがこのページにアクセスすることを許す前に、このページのセキュア・ストレージ保護インジケータがクリアであることを確認することができる。セキュア・ストレージ保護インジケータは、メモリの複数のページのうちのそれぞれのページに対するコンピュータ・システムのハードウェア内のビットとすることができる。非セキュア・エンティティはハイパーバイザとすることができる。セキュア・エンティティは仮想機械とすることができ、この仮想機械は、セキュア・ドメイン内のハイパーバイザにホストされるセキュア・ゲストである。ブロック1615で、セキュア・インタフェース制御は、このページのセキュア・ストレージ保護インジケータのチェックなしで(例えばSSPのチェックなしで)、セキュア・ドメインのセキュア・エンティティに、このページへのアクセスを提供することができる。
【0090】
それでも、アクセス確認の一部として、ホスト・アドレスのメモリ・マッピング・テストを実行することができるが、SSPのチェックを回避することはさらに、非セキュア・エンティティがセキュア・ストレージにアクセスすることができないことを保証しつつ、処理速度を高めることができる。セキュア・インタフェース制御は、非セキュア・エンティティによって確立された、セキュア・エンティティによって使用される動的アドレス変換マッピングが、セキュア・エンティティにこのページへのアクセスを提供する前に変更されていないことを確認することができる。このページに関連づけられたセキュア・ドメイン識別子およびこのページに関連づけられた仮想アドレス・マッピング・データを含む、
図1のゾーン・セキュリティ・テーブル100などのゾーン・セキュリティ・テーブルを介して、セキュア・ドメインをチェックおよび更新することができる。
【0091】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実施態様はクラウド・コンピューティング環境だけに限定されないことを理解されたい。本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境において実施することができる。
【0092】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限のインタラクションで迅速に供給およびリリースすることができる構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、VMおよびサービス)の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント(deployment)モデルを含むことができる。
【0093】
特徴は以下のとおりである。
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方的に供給することができる。
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば移動電話、ラップトップおよびPDA)による使用を促進する標準的機構を通してアクセスされる。
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して複数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理的および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州またはデータセンタ)で位置を指定することができるという意味で、位置独立の感覚がある。
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に供給することができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、供給に利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用状況を自動的に制御および最適化する。リソースの使用状況を監視、制御および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
【0094】
サービス・モデルは以下のとおりである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからアプリケーションにアクセス可能である。場合によっては可能な限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション機能を含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラム言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションをデプロイする機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成は制御することができる。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワークおよび他の基本的なコンピューティング・リソースを供給する機能であり、コンシューマは任意のソフトウェアをデプロイおよび動作することができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理もまたは制御もしないが、オペレーティング・システム、ストレージおよびデプロイされたアプリケーションは制御することができ、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
【0095】
デプロイメント・モデルは以下のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシーおよびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティを維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の合成体である。
【0096】
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的相互運用性(semantic interoperability)に重きを置くサービス指向の環境である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0097】
次に
図17を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイス、例えばパーソナル・ディジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54Cまたは自動車コンピュータ・システム54Nあるいはこれらの組合せは、これらのノードと通信することができる。ノード10は互いに通信することができる。それらのノードは、上で説明したプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークに、物理的にまたは仮想的にグループ分けされていることがある(図示せず)。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組合せをサービスとして提供することができ、そのため、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上にリソースを維持する必要がない。
図17に示されたタイプのコンピューティング・デバイス54A~Nは単なる例であることが意図されていること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワーク上もしくはアドレス指定可能なネットワーク接続上またはその両方で(例えばウェブ・ブラウザを使用して)、コンピュータ化された任意のタイプのデバイスと通信することができることが理解される。
【0098】
次に
図18を参照すると、クラウド・コンピューティング環境50(
図17)によって提供される一組の機能抽象化層が示されている。
図18に示された構成要素、層および機能は単なる例であることが意図されており、本発明の実施形態はそれらに限定されないことを予め理解しておくべきである。図示のとおり、以下の層および対応する機能が提供される。
【0099】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ(blade server)64、ストレージ・デバイス65ならびにネットワークおよびネットワーキング構成要素66を含む。いくつかの実施形態では、ソフトウェア構成要素が、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0100】
仮想化層70は抽象化層を提供し、この層から、仮想エンティティの以下の例を提供することができる:仮想サーバ71、仮想ストレージ72、仮想専用ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0101】
一例では、管理層80が以下の機能を提供することができる。リソース供給(Resource provisioning)81は、クラウド・コンピューティング環境内でタスクを実行する目的に利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計量および価格決定(Metering and Pricing)82は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースがアプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクの識別確認ならびにデータおよび他のリソースの保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者に、クラウド・コンピューティング環境へのアクセスを提供する。サービス水準管理84は、必要なサービス水準が達成されるようなクラウド・コンピューティング・リソースの割振りおよび管理を提供する。サービス水準合意(Service Level Agreement)(SLA)計画および履行85は、SLAによって将来必要になると予想されるクラウド・コンピューティング・リソースの事前調整および調達を提供する。
【0102】
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、および仮想機械に関連づけられたセキュア・ストレージへのアクセスの制御96を含む。これらは一部の例でしかないこと、および他の実施形態ではこれらの層が異なるサービスを含みうることが理解される。
【0103】
次に
図19を参照すると、本発明の1つまたは複数の実施形態によるシステム1900が示されている。システム1900は、1つまたは複数のクライアント・デバイス20A~20Eと直接にまたは間接的に、例えばネットワーク165を介して間接的に通信する例示的なノード10(例えばホスティング・ノード)を含む。ノード10は、クラウド・コンピューティング・プロバイダのデータセンタまたはホスト・サーバとすることができる。ノード10は、ハイパーバイザ12を実行する。ハイパーバイザ12は、1つまたは複数のVM15(15A~15N)のデプロイを容易にする。ノード10はさらに、セキュア・インタフェース制御11を含むハードウェア/ファームウェア層13を含む。セキュア・インタフェース制御11は、ハイパーバイザ12が1つまたは複数のサービスを仮想機械15に提供するのを容易にする1つまたは複数のハードウェア・モジュールおよびファームウェアを含む。ハイパーバイザ12とセキュア・インタフェース制御11の間、セキュア・インタフェース制御11と1つまたは複数のVM15の間、およびハイパーバイザ12と1つまたは複数のVM15の間の通信、ならびにセキュア・インタフェース制御11を通したハイパーバイザ12からVM15への通信が存在しうる。セキュアVM環境を容易にするため、本発明の1つまたは複数の実施形態によるホスティング・ノード10は、ハイパーバイザ12と1つまたは複数のVM15との間の直接通信を一切含まない。
【0104】
例えば、ホスティング・ノード10は、VM15A~15Nのうちの1つまたは複数のVMをクライアント・デバイス20Aがデプロイするのを容易にすることができる。VM15A~15Nは、異なるクライアント・デバイス20A~20Eからのそれぞれのリクエストに応答してデプロイすることができる。例えば、VM15Aは、クライアント・デバイス20Aによってデプロイすることができ、VM15Bは、クライアント・デバイス20Bによってデプロイすることができ、VM15Cは、クライアント・デバイス20Cによってデプロイすることができる。ノード10はさらに、クライアントが、(VMとして動作しない)物理サーバを供給するのを容易にすることができる。本明細書に記載された例は、ノード10内のリソースをVMの一部として供給することを実施するが、記載された技術的ソリューションを適用して、それらのリソースを物理サーバの一部として供給することもできる。
【0105】
一例では、クライアント・デバイス20A~20Eが、同じエンティティ、例えば同じ人間、ビジネス、政府機関、企業内の部門または他のエンティティに属していてもよく、そのエンティティのプライベート・クラウドとしてノード10を動作させることができる。その場合、ノード10は単に、そのエンティティに属するクライアント・デバイス20A~20EによってデプロイされたVM15A~15Nをホストする。別の例では、クライアント・デバイス20A~20Eが異なるエンティティに属していてもよい。例えば、第1のエンティティは、クライアント・デバイス20Aを所有することができ、その一方で、第2のエンティティは、クライアント・デバイス20Bを所有することができる。その場合には、異なるエンティティからのVMをホストするパブリック・クラウドとしてノード10を動作させることができる。例えば、VM15AがVM15Bへのアクセスを容易にしないシュラウドされた(shrouded)方式で、VM15A~15Nをデプロイすることができる。例えば、ノード10は、IBM z Systems(R) Processor Resource/Systems Manager(PR/SM)Logical Partition(LPAR)フィーチャを使用して、VM15A~15をシュラウドすることができる。PR/SM LPARなどのこれらのフィーチャは、パーティション間の分離を提供し、したがって、ノード10が、異なる論理パーティション内の同じ物理ノード10上の異なるエンティティに対して2つ以上のVM15A~15Nをデプロイすることを容易にする。PR/SM LPARハイパーバイザは、この分離を提供するための特定のハードウェアを有する信頼できる内部ファームウェア内に実装される。
【0106】
クライアント・デバイス20A~20Eからのクライアント・デバイス20Aは、ノード10のハイパーバイザ12によるVMのデプロイメントをリクエストする、コンピュータ、スマートフォン、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータまたは他の通信装置などの通信装置である。クライアント・デバイス20Aは、ネットワーク165を介してハイパーバイザが受け取るリクエストを送ることができる。VM15A~15NからのVM15Aは、クライアント・デバイス20A~20Eからのクライアント・デバイス20Aからのリクエストに応答してハイパーバイザ12がデプロイするVMイメージである。ハイパーバイザ12はVMモニタ(VMM)であり、そのVMMは、VMを生成および動作するソフトウェア、ファームウェアまたはハードウェアとすることができる。ハイパーバイザ12は、VM15Aが、ノード10のハードウェア構成要素を使用して、プログラムの実行もしくはデータの記憶またはその両方を実施することを容易にする。適切なフィーチャおよび変更がある場合、ハイパーバイザ12は、IBM z Systems(R)、オラクル(Oracle)のVM Server、シトリックス(Citrix)のXenServer、VmwareのESX、Microsoft Hyper-Vハイパーバイザ、または他の任意のハイパーバイザとすることができる。ハイパーバイザ12は、ノード10上で直接に実行されるネイティブのハイパーバイザ、または別のハイパーバイザ上で実行されるホステッド(hosted)・ハイパーバイザとすることができる。
【0107】
次に
図20を参照すると、本発明の1つまたは複数の実施形態による、本明細書の教示を実施するためのノード10が示されている。ノード10は、本明細書に記載されたさまざまな通信技術を利用する任意の数および組合せのコンピューティング・デバイスおよびネットワークを含み、もしくはそのようなコンピューティング・デバイスおよびネットワークを使用し、またはそのようなコンピューティング・デバイスおよびネットワークを含み、使用する、電子コンピュータ・フレームワークとすることができる。ノード10は、異なるサービスに変化する能力または他から独立していくつかのフィーチャを再構成する能力を有したまま、簡単にスケーリング、拡張、およびモジュール化することができる。
【0108】
この実施形態では、ノード10がプロセッサ2001を有し、プロセッサ2001は、1つまたは複数の中央処理ユニット(CPU)2001a、2001b、2001cなどを含むことができる。処理回路、マイクロプロセッサ、コンピューティング・ユニットとも呼ばれるプロセッサ2001は、システム・バス2002を介してシステム・メモリ2003および他のさまざまな構成要素に結合されている。システム・メモリ2003は、リード・オンリー・メモリ(ROM)2004およびランダム・アクセス・メモリ(RAM)2005を含む。ROM2004は、システム・バス2002に結合されており、基本入出力システム(BIOS)を含むことができ、BIOSは、ノード10のある種の基本機能を制御する。RAMは、プロセッサ2001によって使用されるためにシステム・バス2002に結合された読出し-書込みメモリである。
【0109】
図20のノード10はハードディスク2007を含む。ハードディスク2007は、プロセッサ2001が読み、実行することができる有形のストレージ媒体の例である。ハードディスク2007は、ソフトウェア2008およびデータ2009を記憶している。ソフトウェア2008は、(
図1~19を参照して説明したプロセスなどのプロセスを実行するために)プロセッサ2001によってノード10上で実行される命令として記憶されている。データ2009は、ソフトウェア2008のオペレーションをサポートするように、およびソフトウェア2008のオペレーションによって使用されるようにさまざまなデータ構造で編成された定性的または定量的変量の一組の値を含む。
【0110】
図20のノード10は、プロセッサ2001、システム・メモリ2003、ハードディスク2007およびノード10の他の構成要素(例えば周辺および外部デバイス)を相互接続し、それらの構成要素間の通信をサポートする1つまたは複数のアダプタ(例えばハードディスク・コントローラ、ネットワーク・アダプタ、グラフィクス・アダプタなど)を含む。本発明の1つまたは複数の実施形態では、この1つまたは複数のアダプタを、介在するバス・ブリッジを介してシステム・バス2002に接続された1つまたは複数のI/Oバスに接続することができ、この1つまたは複数のI/Oバスは、ペリフェラル・コンポーネント・インターコネクト(Peripheral Component Interconnect)(PCI)などの一般的なプロトコルを利用することができる。
【0111】
示されているとおり、ノード10は、キーボード2021、マウス2022、スピーカ2023およびマイクロフォン2024をシステム・バス2002に相互接続するインタフェース・アダプタ2020を含む。ノード10は、システム・バス2002をディスプレイ2031に相互接続するディスプレイ・アダプタ2030を含む。ディスプレイ・アダプタ2030(もしくはプロセッサ2001またはその両方)は、GUI2032の表示および管理などのグラフィクス性能を提供するグラフィクス・コントローラを含むことができる。通信アダプタ2041が、システム・バス2002をネットワーク2050に相互接続し、ノード10が、サーバ2051やデータベース2052などの他のシステム、デバイス、データおよびソフトウェアと通信することを可能にする。本発明の1つまたは複数の実施形態では、ソフトウェア2008およびデータ2009のオペレーションを、ネットワーク2050上で、サーバ2051およびデータベース2052によって実施することができる。例えば、ソフトウェア2008およびデータ2009の内部反復を、プラットフォーム・アズ・ア・サービス、ソフトウェア・アズ・ア・サービスもしくはインフラストラクチャ・アズ・ア・サービスまたはこれらの組合せとして(例えば分散システム内のウェブ・アプリケーションとして)提供するために、ネットワーク2050、サーバ2051およびデータベース2052を結合することができる。
【0112】
本明細書に記載された実施形態は必然的に、コンピュータ技術、特にVMをホストするコンピュータ・サーバに根差したものである。さらに、本発明の1つまたは複数の実施形態は、VMをホストするコンピュータ・サーバが、ハイパーバイザでさえもセキュアVMに関連づけられたメモリ、レジスタおよび他のデータにアクセスすることが禁じられているセキュアVMをホストすることを容易にすることによって、コンピューティング技術のオペレーション自体の改良、特にVMをホストするコンピュータ・サーバのオペレーションの改良を容易にする。さらに、本発明の1つまたは複数の実施形態は、ハードウェア、ファームウェア(例えばミリコード)またはこれらの組合せを含むセキュア・インタフェース制御(本明細書では「UV」とも呼ばれる)を使用して、セキュアVMとハイパーバイザとの分離を容易にすることによって、したがって、コンピューティング・サーバにホストされるVMのセキュリティを維持することによって、VMホスティング・コンピューティング・サーバの改良に向けてのかなりのステップを提供する。セキュア・インタフェース制御は、本明細書に記載されたとおり、VMの初期化/終了時のセキュアVM状態に重大なオーバヘッドを追加することなく、セキュリティを容易にするための軽量の介在オペレーションを提供する。
【0113】
本明細書に開示された本発明の実施形態は、VMのセキュア・ストレージへのアクセスを制御するシステム、方法もしくはコンピュータ・プログラム製品(本明細書ではシステム)またはこれらの組合せを含むことがある。それぞれの説明に関して、要素の識別子は、異なる図の他の類似の要素に対して再使用されていることに留意されたい。
【0114】
本明細書では、本発明のさまざまな実施形態が関連図を参照して説明される。本発明の範囲を逸脱することなく本発明の代替実施形態を考案することができる。以下の説明および図面には、要素間のさまざまな接続および位置関係(例えば上、下、隣りなど)が示されている。これらの接続もしくは位置関係またはその両方は、特に指定されていない限り、直接的なものであることまたは間接的なものであることができ、本発明は、この点に関して限定を意図したものではない。したがって、実体の結合は、直接結合または間接結合であることができ、実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書には詳細に記載されていない追加のステップまたは機能を有するより包括的な手順またはプロセスに、本明細書に記載されたさまざまなタスクおよびプロセス・ステップを組み込むことができる。
【0115】
特許請求の範囲および本明細書の解釈のために、以下の定義および略語が使用される。本明細書で使用されるとき、用語「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「含有する(contains)」もしくは「含有する(containing)」、またはこれらの用語の他の変異語は、非排他的包含(non-exclusive inclusion)をカバーすることが意図されている。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品または装置は、必ずしもそれらの要素だけに限定されるわけではなく、明示的にはリストに入れられていない他の要素、あるいはこのような組成物、混合物、プロセス、方法、物品または装置に固有の他の要素を含みうる。
【0116】
さらに、本明細書では、用語「例示的な」が、「例、事例または実例として役立つ」ことを意味するものとして使用されている。本明細書に「例示的」として記載された実施形態または設計は必ずしも、他の実施形態または設計よりも好ましいまたは有利であるとは解釈されない。用語「少なくとも1つの」および「1つまたは複数の」は、1以上の任意の整数、すなわち1、2、3、4などを含むと理解してもよい。用語「複数の」は、2以上の任意の整数、すなわち2、3、4、5などを含むと理解してもよい。用語「接続」は、間接「接続」と直接「接続」の両方を含むことがある。
【0117】
用語「約」、「実質的に」、「およそ」およびこれらの用語の変異語は、特定の数量の大きさに関連した、本出願の提出時に利用可能な機器に基づく誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%、5%または2%の範囲を含みうる。
【0118】
本発明は、インテグレーションの可能な技術的詳細レベルにおいて、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【0119】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、ディジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0120】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0121】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用の構成データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくは遠隔サーバ上で実行されてもよい。上記の最後のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0122】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0123】
これらのコンピュータ可読プログラム命令は、機械を形成する汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに、それらのコンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指図することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
【0124】
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
【0125】
添付図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0126】
本明細書で使用される用語の目的は特定の実施形態を説明することだけであり、それらの用語が限定を目的とすることは意図されていない。文脈からそうでないことが明らかである場合を除き、本明細書で使用されるとき、単数形の「a」、「an」および「the」は複数形も含むことが意図されている。本明細書で使用されるとき、用語「備える(comprises)」もしくは「備える(comprising)」またはその両方は、明示された特徴、完全体(integer)、ステップ、動作、要素もしくは構成要素またはこれらの組合せの存在を指定するが、他の1つもしくは複数の特徴、完全体、ステップ、動作、要素、構成要素もしくはこれらのグループ、またはこれらの組合せの存在または追加を排除しないことも理解される。
【0127】
本明細書のさまざまな実施形態の説明は例示のために提示されたものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲および思想を逸脱しない多くの変更および変形が明白になるであろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術には見られない技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。