IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-仮想化環境で情報を覆い隠すこと 図1
  • 特許-仮想化環境で情報を覆い隠すこと 図2
  • 特許-仮想化環境で情報を覆い隠すこと 図3
  • 特許-仮想化環境で情報を覆い隠すこと 図4
  • 特許-仮想化環境で情報を覆い隠すこと 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-27
(45)【発行日】2023-11-07
(54)【発明の名称】仮想化環境で情報を覆い隠すこと
(51)【国際特許分類】
   G06F 9/455 20180101AFI20231030BHJP
   G06F 21/62 20130101ALI20231030BHJP
   G06F 21/71 20130101ALI20231030BHJP
【FI】
G06F9/455 150
G06F21/62 309
G06F21/71
【請求項の数】 16
(21)【出願番号】P 2022516770
(86)(22)【出願日】2020-09-22
(65)【公表番号】
(43)【公表日】2022-11-24
(86)【国際出願番号】 IB2020058838
(87)【国際公開番号】W WO2021059125
(87)【国際公開日】2021-04-01
【審査請求日】2023-02-24
(31)【優先権主張番号】16/580,067
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チャッタージー、デバプリヤ
(72)【発明者】
【氏名】コッククロフト、ブライアント
(72)【発明者】
【氏名】シューマン、ジョン
(72)【発明者】
【氏名】ヨクム、カレン
【審査官】田中 幸雄
(56)【参考文献】
【文献】特表2008-518367(JP,A)
【文献】特開2009-223776(JP,A)
【文献】米国特許出願公開第2019/0034666(US,A1)
【文献】米国特許出願公開第2018/0165224(US,A1)
【文献】米国特許第10049211(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 21/62
G06F 21/71
(57)【特許請求の範囲】
【請求項1】
ハイパーバイザ動作のための方法であって、
アプリケーションのハードウェア要求を検出することであって、前記アプリケーションが仮想化コンピュータ・システム上で実行される、前記検出することと、
前記ハードウェア要求がカウンタを含むと判定することであって、前記カウンタが前記仮想化コンピュータ・システムによって更新されるべきであり、前記カウンタがカウンタ値を含む、前記判定することと、
前記ハードウェア要求が前記カウンタを含むと前記判定したことに基づいて、前記仮想化コンピュータ・システムをホストするハイパーバイザによって前記ハードウェア要求が処理される前に、前記ハードウェア要求を傍受することと、
セキュア・メモリ内に前記カウンタ値を保存することであって、前記セキュア・メモリが前記ハイパーバイザから覆い隠される、前記保存することと、
スクランブル化カウンタ値を生成することと、
前記スクランブル化カウンタ値で前記ハードウェア要求を更新することと、
前記ハードウェア要求を前記更新した後、前記ハイパーバイザに前記ハードウェア要求を提供することと
を含む方法。
【請求項2】
前記ハードウェア要求の前記検出に基づいて、前記ハードウェア要求内の1つまたは複数のデータ入力を決定することと、
前記1つまたは複数のデータ入力を覆い隠すことと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記セキュア・メモリが暗号化され、前記ハイパーバイザが前記セキュア・メモリにアクセスできない、請求項1または2に記載の方法。
【請求項4】
ウルトラバイザによって実施される、請求項1ないし3のいずれかに記載の方法。
【請求項5】
前記スクランブル化カウンタ値が、前記ウルトラバイザの乱数発生器によって生成される、請求項4に記載の方法。
【請求項6】
前記ハイパーバイザに前記ハードウェア要求を前記提供する前に、前記スクランブル化カウンタ値を記憶することと、
前記ハードウェア要求に対する応答を識別することであって、前記応答が前記ハイパーバイザによって提供される、前記識別することと、
前記応答が更新後スクランブル化カウンタ値を含むと判定することであって、前記更新後スクランブル化カウンタ値が前記スクランブル化カウンタ値に基づく、前記判定することと、
前記応答をブロックすることと、
前記更新後スクランブル化カウンタ値に基づいて、かつ前記スクランブル化カウンタ値に基づいて、更新量を生成することと、
前記カウンタ値に基づいて、かつ前記更新量に基づいて、更新後カウンタ値を計算することと、
前記アプリケーションに前記更新後カウンタ値を提供することと
をさらに含む、請求項1ないし5のいずれかに記載の方法。
【請求項7】
前記カウンタがデクリメンタである、請求項1ないし6のいずれかに記載の方法。
【請求項8】
ハイパーバイザ動作のためのシステムであって、
1つまたは複数の命令を含むメモリと、
前記メモリに通信可能に結合され、前記1つまたは複数の命令を読み取ったことに応答して、
アプリケーションのハードウェア要求を検出することであって、前記アプリケーションが仮想化コンピュータ・システム上で実行される、前記検出することと、
前記ハードウェア要求がカウンタを含むと判定することであって、前記カウンタが前記仮想化コンピュータ・システムによって実施されるべきであり、前記カウンタがカウンタ値を含む、前記判定することと、
前記ハードウェア要求が前記カウンタを含むと前記判定したことに基づいて、前記仮想化コンピュータ・システムをホストするハイパーバイザによって前記ハードウェア要求が処理される前に、前記ハードウェア要求を傍受することと、
セキュア・メモリ内に前記カウンタ値を保存することであって、前記セキュア・メモリが前記ハイパーバイザから覆い隠される、前記保存することと、
スクランブル化カウンタ値を生成することと、
前記スクランブル化カウンタ値で前記ハードウェア要求を更新することと、
前記ハードウェア要求を前記更新した後、前記ハイパーバイザに前記ハードウェア要求を提供することと
を行うように構成されたプロセッサと
を備えるシステム。
【請求項9】
前記プロセッサが、
前記ハードウェア要求の前記検出に基づいて、前記ハードウェア要求内の1つまたは複数のデータ入力を決定し、
前記1つまたは複数のデータ入力を覆い隠す
ようにさらに構成される、請求項8に記載のシステム。
【請求項10】
前記セキュア・メモリが暗号化され、前記ハイパーバイザが前記セキュア・メモリにアクセスできない、請求項8または9に記載のシステム。
【請求項11】
前記プロセッサが、ウルトラバイザを実行するように構成される、請求項8ないし10のいずれかに記載のシステム。
【請求項12】
前記スクランブル化カウンタ値を前記生成することが、前記ウルトラバイザと通信しているトラステッド・プラットフォーム・モジュールから前記スクランブル化カウンタ値を取得することを含む、請求項11に記載のシステム。
【請求項13】
前記ハイパーバイザに前記ハードウェア要求を前記提供する前に、前記スクランブル化カウンタ値を記憶することと、
前記ハードウェア要求に対する応答を識別することであって、前記応答が前記ハイパーバイザによって提供される、前記識別することと、
前記応答が更新後スクランブル化カウンタ値を含むと判定することであって、前記更新後スクランブル化カウンタ値が前記スクランブル化カウンタ値に基づく、前記判定することと、
前記更新後スクランブル化カウンタ値に基づいて、かつ前記スクランブル化カウンタ値に基づいて、更新量を生成することと、
前記カウンタ値に基づいて、かつ前記更新量に基づいて、更新後カウンタ値を計算することと、
前記アプリケーションに前記更新後カウンタ値を提供することと
をさらに含む、請求項8ないし12のいずれかに記載のシステム。
【請求項14】
前記カウンタがデクリメンタである、請求項8ないし13のいずれかに記載のシステム。
【請求項15】
請求項1ないし7のいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム
【請求項16】
請求項15に記載の前記コンピュータ・プログラムを、コンピュータ可読媒体上に記憶した、記録媒体
【発明の詳細な説明】
【技術分野】
【0001】
本開示はハイパーバイザ動作に関し、より詳細には、マルチ・テナント・サーバ内のハイパーバイザからタイム・ベース情報を覆い隠すことに関する。
【背景技術】
【0002】
アプリケーションおよびオペレーティング・システムはコンピュータ・システム上で動作し得る。コンピュータ・システムは、メモリ、プロセッサ、および入出力インターフェース(I/O)であり得る。コンピュータ・システムは、ハイパーバイザによって運用される仮想コンピュータ・システムであり得る。あるクライアントは仮想コンピュータ・システムの柔軟性を好むことがある。こうしたクライアントはまた、仮想コンピュータ・システム上で運用中に、情報よりもセキュリティを好むことがある。クラウド環境では、クラウド・ユーザによって与えられるOSインスタンスが、クラウド・プロバイダによって維持されるハイパーバイザ上で、同一のマシン上の別々のパーティションとして実行される。通常、ハイパーバイザは、任意のパーティションのデータにアクセスする資格を有する。これにより、クラウド・プロバイダは本質的に、クラウド・ユーザの機密データを含む、OS(およびOS内部で実行中のアプリケーション)からの任意の情報にアクセスし得るので、セキュリティ・リスクが生じる。
【0003】
したがって、上記の問題に対処することが当技術分野で求められている。
【発明の概要】
【0004】
第1の態様から見て、本発明は、ハイパーバイザ動作のための方法であって、アプリケーションのハードウェア要求を検出することであって、アプリケーションが仮想化コンピュータ・システム上で実行される、検出することと、ハードウェア要求がカウンタを含むと判定することであって、カウンタが仮想化コンピュータ・システムによって更新されるべきであり、カウンタがカウンタ値を含む、判定することと、ハードウェア要求がカウンタを含むと判定したことに基づいて、仮想化コンピュータ・システムをホストするハイパーバイザによってハードウェア要求が処理される前に、ハードウェア要求を傍受することと、セキュア・メモリ内にカウンタ値を保存することであって、セキュア・メモリがハイパーバイザから覆い隠される、保存することと、スクランブル化カウンタ値を生成することと、スクランブル化カウンタ値でハードウェア要求を更新することと、ハードウェア要求を更新した後、ハイパーバイザにハードウェア要求を提供することとを含む方法を提供する。
【0005】
別の態様から見て、本発明は、1つまたは複数の命令を含むメモリと、メモリに通信可能に結合され、1つまたは複数の命令を読み取ったことに応答して、アプリケーションのハードウェア要求を検出することであって、アプリケーションが仮想化コンピュータ・システム上で実行される、検出することと、ハードウェア要求がカウンタを含むと判定することであって、カウンタが仮想化コンピュータ・システムによって実施されるべきであり、カウンタがカウンタ値を含む、判定することと、ハードウェア要求がカウンタを含むと判定したことに基づいて、仮想化コンピュータ・システムをホストするハイパーバイザによってハードウェア要求が処理される前に、ハードウェア要求を傍受することと、セキュア・メモリ内にカウンタ値を保存することであって、セキュア・メモリがハイパーバイザから覆い隠される、保存することと、スクランブル化カウンタ値を生成することと、スクランブル化カウンタ値でハードウェア要求を更新することと、ハードウェア要求を更新した後、ハイパーバイザにハードウェア要求を提供することとを行うように構成されたプロセッサとを備えるシステムを提供する。
【0006】
別の態様から見て、本発明は、ハイパーバイザ動作のためのコンピュータ・プログラム製品であって、処理回路によって読み取り可能であり、本発明のステップを実施するための方法を実施するための、処理回路による実行のための命令を記憶するコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品を提供する。
【0007】
別の態様から見て、本発明は、コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、本発明のステップを実施するためのソフトウェア・コード部分を含むコンピュータ・プログラムを提供する。
【0008】
第1の態様から見て、本発明は、プログラム命令がそれと共に実施されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、プログラム命令が、アプリケーションのハードウェア要求を検出することであって、アプリケーションが仮想化コンピュータ・システム上で実行される、検出することと、ハードウェア要求がカウンタを含むと判定することであって、カウンタが仮想化コンピュータ・システムによって実施されるべきであり、カウンタがカウンタ値を含む、判定することと、ハードウェア要求がカウンタを含むと判定したことに基づいて、仮想化コンピュータ・システムをホストするハイパーバイザによってハードウェア要求が処理される前に、ハードウェア要求を傍受することと、セキュア・メモリ内にカウンタ値を保存することであって、セキュア・メモリがハイパーバイザから覆い隠される、保存することと、スクランブル化カウンタ値を生成することと、スクランブル化カウンタ値でハードウェア要求を更新することと、ハードウェア要求を更新した後、ハイパーバイザにハードウェア要求を提供することとを行うように構成される、コンピュータ・プログラム製品を提供する。
【0009】
いくつかの実施形態によれば、システム、方法、およびコンピュータ・プログラム製品が開示される。アプリケーションのハードウェア要求が検出される。アプリケーションが仮想化コンピュータ・システム上で実行される。ハードウェア要求がカウンタを含むと判定される。カウンタは、仮想化コンピュータ・システムによって実施されるべきである。カウンタはカウンタ値を含む。仮想化コンピュータ・システムをホストするハイパーバイザによってハードウェア要求が処理される前に、ハードウェア要求が傍受される。傍受は、ハードウェア要求がカウンタを含むと判定したことに基づく。カウンタ値はセキュア・メモリ内に保存される。セキュア・メモリはハイパーバイザから覆い隠される。スクランブル化カウンタ値が生成される。ハードウェア要求がスクランブル化カウンタ値で更新される。ハードウェア要求が更新された後、ハードウェア要求がハイパーバイザに提供される。
【0010】
上記の概要は、図示される各実施形態や、本開示のあらゆる実装を説明するためのものではない。
【0011】
本願に含まれる図面は本明細書に組み込まれ、本明細書の部分を形成する。図面は本開示の実施形態を示し、説明と共に、本開示の原理を明らかにする役割を果たす。図面は、いくつかの実施形態の例に過ぎず、本開示を限定するものではない。
【図面の簡単な説明】
【0012】
図1】本開示のいくつかの実施形態に適合する、セキュア・ゲスト・マシンおよびタイム・ベースの精度を活用する例示的コンピューティング環境を示す図である。
図2】本開示のいくつかの実施形態に適合する、タイミング・レジスタおよびカウンタ値を覆い隠すことを実施するための例示的方法を示す図である。
図3】本開示のいくつかの実施形態による、使用され得る例示的コンピュータ・システムの代表的な主な構成要素を示す図である。
図4】本発明のいくつかの実施形態によるクラウド・コンピューティング環境を示す図である。
図5】本発明のいくつかの実施形態による抽象化モデル層を示す図である。
【発明を実施するための形態】
【0013】
本発明には、様々な修正形態および代替形態の余地があるが、本発明の詳細が、図面では例として示されており、詳細に説明されることになる。しかしながら、記載の特定の実施形態に本発明を限定する意図はないことを理解されたい。それどころか、本発明の範囲内に含まれるすべての修正形態、均等物、および代替形態を包含することが意図される。
【0014】
本開示の態様はハイパーバイザ動作に関し、より具体的な態様は、マルチ・テナント・サーバ内のハイパーバイザからタイム・ベース情報を覆い隠すことに関する。本開示は必ずしもそのような適用分野に限定されないが、本開示の様々な態様は、この文脈を用いた様々な例の議論を通じて理解することができる。
【0015】
アプリケーションおよびオペレーティング・システム(OS)ホスティング環境では、プロバイダによって提供されるOSインスタンスが、プロバイダによって維持されるハイパーバイザ上で実行され得る。たとえば、クラウド環境では、OSインスタンスは、クラウド・プロバイダによって維持されるハイパーバイザ上のゲスト・マシンとして実行され、OSインスタンスは、同一の物理システム上の別々のパーティションとして実行される。いくつかの状況では、ハイパーバイザは、任意のパーティションのデータにアクセスする権利を有する。ハイパーバイザが任意のパーティションにアクセスすると、プロバイダはユーザの機密データを含むOS(およびOS内部で動作するアプリケーション)のあらゆる情報にアクセスできるため、セキュリティ・リスクが発生する可能性がある。クラウド・プロバイダがデータ・プライバシーを保証し、規制によって機密データの保護が義務付けられている場合もあるので、この問題はさらに深刻になる可能性がある。
【0016】
解決策の1つは、ハイパーバイザより上の特権レベル(たとえば、ハイパーバイザより上の特権レベルは信頼されたものとみなされる特権レベルである)を導入し、ハイパーバイザに向かうセキュアと考えられるパーティションからのいかなる例外もインターセプトすることができる。たとえば、ウルトラバイザは、ハイパーバイザと比べて高い特権レベルを持つことができる。
【0017】
例外のための高められた特権ハンドラ(たとえば、ハイパーバイザより上のレベル)が、ハイパーバイザにとってアクセス可能なハードウェア・レジスタの値を不明瞭にすることができる。たとえば、様々なハードウェア・レジスタ内の値には、ユーザ・プログラムまたはOS(「アプリケーション」)からの情報が格納される。ハイパーバイザによって提供される仮想マシン上で動作中のアプリケーションに対応するこれらの値およびハードウェア・レジスタは、ハイパーバイザによって検査され、閲覧され得る。ハイパーバイザより上位の特権を設けることにより、アプリケーションに対応する様々な値およびハードウェア・レジスタを、ハイパーバイザの視点からは暗号化されたものとして見えるようにすることができる。
【0018】
別の例では、メモリの一部(たとえば、ハイパーバイザがアプリケーションに提供する仮想メモリ)に対する保存操作または復元操作(「メモリ操作」)と、ハイパーバイザが仮想メモリの同一の部分にアクセスすることができる場合がある。ハイパーバイザがメモリの一部分にアクセスすることを許可しないようにすることで、特定のメモリ操作が防止される場合がある。ハイパーバイザによってアクセスされない仮想メモリの一部分は、セキュア・メモリであり得る。これらの例におけるハイパーバイザには、様々な操作を実施するために必要な厳密な量の情報のみが提供され、セキュア・メモリへのアクセスは提供されない。
【0019】
ウルトラバイザによって使用されるような高められた特権レベルに伴う問題がある。最近のコンピュータ・アーキテクチャの多くは、マルチプロセッシングと呼ばれる技術の上で動作する。マルチプロセッシングにより、ユーザ・プログラムまたはOSが、複数のプロセスまたはスレッドを同時に処理することが可能となる。マルチプロセッシングは、これらのアプリケーションの効率を高め、より高い処理スループットを実現することができる。マルチプロセッシングは、非常に特殊なハードウェア要求に依拠する場合がある。たとえば、アプリケーションは、マルチスレッド処理を実行するために、プロセッサの様々なレジスタにハードウェア要求を送信することがある。これらの様々なレジスタは、カウンタ、デクリメンタ、インクリメンタなどの専用レジスタであり得る。
【0020】
カウンタ(プロセッサ・クロックと共にカウントダウンし、ゼロを越えたときにタイマ割込みを生成するレジスタ)は、タイマ割込みの発生源であるので、ユーザ・プログラムまたはOSにとって不可欠なレジスタであり得る。カウンタは、多くの最新オペレーティング・システムで採用されているプリエンプティブ・プロセス・スケジューリングのための基本的なハードウェア機構であり得る。カウンタは、あるケースでは(たとえばレガシーな理由などで)ハイパーバイザからアクセス可能なこともある。ウルトラバイザの導入により、カウンタもハイパーバイザから見えなくなり、カウンタを見えなくすることは、ハイパーバイザによるタイミング・アタックの試行、防止に有効である。
【0021】
カウンタなどの様々な専用レジスタがハイパーバイザから見えなくなると、意図しない結果として、仮想マシン内で動作するアプリケーションがより悪い性能で実行される可能性がある。たとえば、特定のカウンタおよび他の専用レジスタが、処理リソースを正確に共有したり、様々な構成要素間でコンテキスト・スイッチを実行するために使用される。スケジューラ、コンテキスト・スイッチャ、スタック・ポインタ、プログラム・カウンタ、または他の関連する処理ハードウェア・レジスタは、プロセッサ(および仮想マシンの場合は、ハイパーバイザ)からの正確なカウンタ値に依存する場合がある。一部のウルトラバイザの操作および他の高められた特権操作の間に、不明瞭な(覆われた)カウンタがハイパーバイザに提供され、ハイパーバイザに受け取られる。ウルトラバイザは、元の値を記録し、ハイパーバイザにはアクセスできないセキュア領域にその値を記憶し、ゲスト仮想マシンまたはプロセスに戻る前に値を復元する。この方法は、プロセッサ・クロックで減分または増分しない、またはプロセッサ・クロックの関数ではないレジスタ(すなわち、何らかの方法による時間測定を意図しないレジスタ)には十分かもしれないが、プロセッサ・クロックと実際に関連するレジスタについては、この方法では、セキュア・メモリからの復元された値が不正確となる。
【0022】
ゲスト仮想マシンまたはアプリケーションが不明瞭な(覆い隠された)値に基づいて動作する場合、プロセスおよびスレッドに、必要以上のコンピュータ・リソースが与えられ、あるいは少ないリソースで演算されることがある。たとえば、プログラム・コードの複数の並列実行(たとえば、スレッド、プロセス)の不正確なタイム・スライシングにより、特定のプログラム・コードが時間内に終了することが妨げられ得る。プログラム・コードのある部分が、割込みを受ける前に終了しない場合、その部分が再び待ち行列に入れられ、停止し、さらにはクラッシュし得る。カウンタが不正確だと、プログラム・コードの一部分が、プログラム終了に対応する割込みなしに終了し得る。その結果、プログラム・コード実行が実際に終了した後に割込みが発生すると、プロセッサが何サイクルもアイドル状態となり得る。さらに、プログラムが終了せず、再び待ち行列に入れられると、終了して中断された作業を再実行するために、プロセス/スレッド間の切換えが繰り返され、サイクルの浪費またはプログラムの低速化が引き起こされる。さらに、プログラム・コードの第1のセグメントの実行を停止し、第2のプログラム・コードの実行を開始する動作は、コンピュータの処理、メモリ、またはI/Oでのオーバヘッドを有する場合がある。
【0023】
カウンタ・アウェア・ウルトラバイザ(CAUV)は、ハイパーバイザに不明瞭な(覆い隠された)またはスクランブルされたカウンタを提供する一方で、マルチプロセッシングの実行に関連する値を提供するアプリケーションにカウンタを変換して返すことによって、他のウルトラバイザの問題を克服することができる。CAUVは、ハイパーバイザから情報を覆い隠し得るプレースホルダ値をハイパーバイザに提供し得る。CAUVはまた、ハイパーバイザで費やされた時間を測定し、ハイパーバイザによる操作の後、OSまたはOS上で動作するプログラムに値を復元する前に、値を調節することができる。CAUVは、ハイパーバイザに情報を提供する前に情報を隠蔽することにより、ウルトラバイザまたは他の関連する高められた特権システムで実行されるすべてのゲスト仮想マシンのセキュリティを維持し得る。CAUVは、アプリケーションのマルチプロセッシング動作に関係する様々なシステム・レベル・カウンタおよび専用ハードウェア・レジスタを追跡することにより、OSが低レベルのプログラム・カウンタの精度を維持し、正確なサービス品質を提供することを可能にすることができる。
【0024】
図1は、本開示のいくつかの実施形態に適合する、セキュア・ゲスト・マシンおよびタイム・ベースの精度を活用する例示的コンピューティング環境100を示す。コンピューティング環境100は、複数のコンピュータ・システム110-1、110-2、110-3から110-n(集合的に110)と、1つまたは複数のゲスト・コンピュータ120-1、120-2から120-n(集合的に120)と、ゲスト・コンピュータ120をホストするための仮想化環境130とを含み得る。コンピュータ・システム110は、仮想化環境130を促進し、ホストするための物理メモリ、物理処理リソース、および物理I/Oを含み得る。図3は、本開示のいくつかの実施形態に適合する、ホスティングを実施することのできる例示的コンピュータ・システム300を示す。コンピュータ・システム110はデータセンタに配置され得る。いくつかの実施形態では、コンピュータ・システム110は地理的に分離され得る。たとえば、コンピュータ・システム110-1が第1の位置に配置され、コンピュータ・システム110-2がコンピュータ・システム110-1とは地理的に異なって配置され得る。
【0025】
ゲスト・コンピュータ120は、仮想マシンおよびセキュア仮想マシンの形態であり得る。たとえば、ゲスト・コンピュータ120-1は、仮想化環境130からコンピュータ・システム110-1および110-3のハードウェア・リソースのサービスを受ける仮想マシンであり得る。別の例では、ゲスト・コンピュータ120-2は、仮想化環境130からのサーバ・ハードウェア・リソースであるセキュア仮想マシンであり得る。ゲスト・コンピュータ120は、ハードウェア要求(たとえば、プロセッサの演算論理装置、キャッシュに対するメモリ参照、カウンタ、ダイナミック・ランダム・アクセス・メモリ(DRAM)に対する読み取りコマンド、および3次記憶デバイスに対する記憶コマンド)の形でハードウェアを参照し得る。
【0026】
仮想化環境130は、ゲスト・コンピュータ120を含む様々なコンピュータ・システムをホストするように構成され得る。仮想化環境130は、仮想マシンをホストするためのハードウェア、ファームウェア、およびソフトウェアの組合せであり、コンピュータ・システム110上で実行され得る。仮想化環境130は、ゲスト・コンピュータ120とは別々のエンティティによって運用されるサービス・プロバイダによって提供され得る。たとえば、仮想化環境130は、様々なクライアントにコンピュータ・システム110を提供するクラウド・ベースのサービス・プロバイダであり得る。仮想化環境130のサービス・プロバイダは、様々なレベルのプライバシーおよびコンピュータ性能を保証し得る。
【0027】
仮想化環境130は、プログラム・データ、オペレーティング・システム・データ、および仮想化ハードウェア・レジスタを記憶するためのメモリ空間140と、プログラム・データ、オペレーティング・システム・データ、および仮想化ハードウェア・レジスタを記憶するためのセキュア・メモリ空間150と、ゲスト・コンピュータ120の様々なハードウェア要求にサービスするためのハイパーバイザ160と、ゲスト・コンピュータ120の様々なハードウェア要求にサービスするためのウルトラバイザとを含み得る。仮想化環境130はまた、トラステッド・プラットフォーム・モジュール(TPM)(図示せず)などの他の構成要素をも含み得る。
【0028】
仮想化環境130は、クラウド・プロバイダにコンピュータ・リソースを要求する側からの要求に応答して、ゲスト・コンピュータ120をインスタンス化または作成し得る。たとえば、クライアントがコンピュータ・リソースを要求し、それに応答して、ハイパーバイザ160は、基礎となるコンピュータ・システムのリソースを予約し、ゲスト・コンピュータの実行のためにメモリ空間140の一部分を予約することによって、ゲスト・コンピュータ120-1を割り振り得る。プログラム122-1および124-1は、ゲスト・コンピュータ120-1上で動作し、ゲスト・コンピュータ120-1の動作に対応するすべての低レベル・レジスタおよびメモリが、メモリ空間140内に記憶され得る。プログラム122-1が実行され、様々なプログラム・カウンタ、コンテキスト切換え、および他の関連するマルチプロセッシング動作が実施されるとき、ハイパーバイザ160は、これらの要素に関するデータを観測し得る。
【0029】
仮想化環境130はまた、ハイパーバイザからのセキュリティおよびプライバシーが高められたゲスト・コンピュータ120をインスタンス化または作成し得る。仮想化環境130のコンピュータ・システム110またはファームウェアの製造時に、公開鍵および秘密鍵、たとえば仮想化環境130のTPMによって生成された鍵の作成が実施され得る。いくつかの実施形態では、各コンピュータ・システム110は別々の公開鍵および秘密鍵を生成し得る。秘密鍵は、仮想化環境130のプロバイダまたはハイパーバイザ160によってアクセス可能ではないことがある。
【0030】
仮想マシンは、保護されるように要求を行い、暗号鍵を公開鍵で包み隠し得る。要求に応答して、仮想化環境130は、ハイパーバイザ160から仮想マシンを保護するように動作し得る。たとえば、クライアントからの要求に応答して、ゲスト・コンピュータ120-2がハイパーバイザ160によって作成され得る。この時点でのゲスト・コンピュータ120-2は、ハイパーバイザ160によってゲスト・コンピュータ120-2に割り振られたメモリ空間140内の仮想マシンとして動作中であり得る。クライアントは、ゲスト・コンピュータ120-2との間でデータを送信および受信することを求めるセキュリティ要求を生成し得る。ゲスト・コンピュータ120-2は、仮想化環境130の公開鍵でセキュリティ要求を暗号化し得る。ウルトラバイザ170は、ゲスト・コンピュータ120-2からセキュリティ要求を受信し、公開鍵を使用して、セキュア・メモリ空間150に仮想マシンを移動し、その結果、ゲスト・コンピュータ120-2をセキュア仮想マシンにする。OSおよびユーザ・プログラム(たとえば、ユーザ・プログラム122-2)をさらに実行することは、セキュア・メモリ空間150内に存在し、ウルトラバイザ170は、ハイパーバイザ160に対する様々なハードウェア要求の任意のデータ入力を保護するように動作し得る。たとえば、ウルトラバイザ170は、ハードウェア要求の様々なデータ入力を傍受し、覆い隠し、したがってハイパーバイザ160は、データ入力の情報を読み取り、あるいは識別することができない。
【0031】
仮想化環境130はまた、セキュア仮想マシンとして動作しているゲスト・コンピュータ120の正確なカウンタ・データを維持するためにCAUVを実装し得る。CAUVはまた、ハイパーバイザ160からの情報を保護し得る。たとえば、ハードウェア要求180が、セキュア仮想マシン120-2から仮想化環境130に送られ得る。ハードウェア要求180はハイパーバイザ160に向けて送られ得る。ウルトラバイザ170は、ハードウェア要求180を検出し、要求がカウンタ値を有するカウンタ(たとえば、8ビット・デクリメンタ)を含むと判定し得る。ウルトラバイザ170は、ハードウェア要求180がハイパーバイザ160に送られる前にハードウェア要求180を傍受し得る。ウルトラバイザ170は、セキュア・メモリ空間150内にカウンタ値を記憶し、ハイパーバイザは、カウンタ値にアクセスすることができないことがある。ウルトラバイザ170は、カウンタ値のスクランブル化バージョンまたは覆い隠されたバージョンを生成し、スクランブル化カウンタ値をハイパーバイザ160に提供し、したがってハイパーバイザは、スクランブル化カウンタ値でハードウェア要求を実施し得る。図1には、本開示のいくつかの実施形態に適合する、ハードウェア要求の傍受を実施して、カウンタをスクランブル化する/覆い隠すための複数の例示的演算182が示されている。ウルトラバイザ170は、メモリ空間140内にスクランブル化カウンタ値を記憶し得る。
【0032】
さらに、ハードウェア要求180に対する応答190がハイパーバイザ160によって送られ得る。応答190は更新後カウンタを含み得る。更新後カウンタは、ウルトラバイザ170によって覆い隠されたスクランブル化カウンタ値に基づき得る。ウルトラバイザ170は応答190を傍受し、更新カウンタを明白(unobscure)にし得る。ウルトラバイザ170は、カウンタ値のスクランブル化バージョンとハイパーバイザ160の更新後カウンタ値との差を用いて、セキュア・メモリ空間150内に記憶されたカウンタ値をオフセットすることによって更新後カウンタを明白にし得る。ウルトラバイザ170は、仮想マシン120-2に対する応答190で、明白にされた更新後カウンタを送り得る。本開示のいくつかの実施形態に適合する、ハードウェア応答の傍受を実施して、カウンタをスクランブル解除する/明白にするための複数の例示的演算192が示されている。
【0033】
図2は、本開示のいくつかの実施形態に適合する、タイミング・レジスタおよびカウンタ値を覆い隠すことを実施するための例示的方法200を示す。方法200はコンピュータ・システムによって実施され得る。図3に示されるコンピュータ・システム300は、方法200の1つまたは複数の部分を実施するように構成され得る。方法200は、本開示のいくつかの実施形態に適合するCAUVによって実施され得る。
【0034】
205の開始から、210で、アプリケーションとハイパーバイザとの間のトラフィックについてハイパーバイザが監視され得る。いくつかの実施形態では、アプリケーションは、エンジニアリング・シミュレーション・プログラム、ワード・プロセッシング・プログラム、グラフィカル・レンダリング・プログラムなどのユーザ・プログラムであり得る。いくつかの実施形態では、アプリケーションは、仮想化システムによってホストされるゲスト・コンピュータなどのOSであり得る。トラフィックを監視することは、セキュア仮想マシン内で実行中のアプリケーション、たとえばハイパーバイザの検査からメモリおよび一定の動作情報を保護するCAUVでセキュア・セッションを開始したアプリケーションを監視することを含み得る。いくつかの実施形態では、トラフィックの監視は、ハイパーバイザに与えられる一定のデータ入力を覆い隠すこと、スクランブル化すること、あるいは(乱数発生器などによって)ランダム化することを含み得る。たとえば、ハードウェア要求が、ハイパーバイザがゲスト・コンピュータについての動作を実施するのに不要な一定のレジスタ値、ポインタ、または他のデータ要素を含む場合、ウルトラバイザは、データ要素を隠し、ゼロアウトし、ランダム化し、データ・シフトし、あるいは覆い隠し得る。
【0035】
215で、ハードウェア要求が検出された場合(Y)、220で、ハードウェア要求内にカウンタがあるかどうかが判定される。カウンタがない場合(220:N)、方法200は295で終了する。カウンタがある場合(220:Y)、230で、ハードウェア要求が傍受され得る。ハードウェア要求を傍受することは能動的な動作であり得る。たとえば、ウルトラバイザは、ハイパーバイザによる処理のためのキュー内にハードウェア要求が配置されていることを検出し得る。ウルトラバイザは、ハイパーバイザが要求を確認または検査することができる前に、ハードウェア要求を傍受し得る。ハードウェア要求の傍受は反応性の動作であり得る。たとえば、セキュア仮想マシンからのハードウェア要求が暗号化され、したがって、ウルトラバイザまたは仮想化環境の別のセキュア要素のみがハードウェア要求を読み取ることができ、一方、ハイパーバイザは、ハードウェア要求が非暗号化されるまでハードウェア要求を読み取ることができない。
【0036】
240で、傍受されたハードウェア要求内のカウンタが保存され得る。カウンタは、コンピュータ・システムの参照、ポインタ、値、または他のデータ要素(たとえば、プログラム・カウンタ、デクリメンタ、専用レジスタ、マルチプロセッシング・レジスタ、マルチスレッド化レジスタ)であり得る。カウンタはカウンタ値(たとえば、3ビット値、8ビット値)を含み得る。250で、傍受された要求内のカウンタ値が覆い隠され得る。カウンタ値を覆い隠すことは、カウンタ値に無関係のデータをスクランブル化すること、(たとえば、TPMによって)ランダム化すること、バイト・シフトすること、ゼロアウトすること、あるいは挿入することを含み得る。カウンタ値を覆い隠すことは、ハイパーバイザによる検査時に、ハイパーバイザによって意味のある情報が識別され得ないようにカウンタ値を変更することを含み得る。覆い隠されたカウンタ値はメモリ(たとえば、ハイパーバイザと共有されるメモリ空間、またはハイパーバイザによってアクセス不能なセキュア・メモリ空間)内に保存され得る。
【0037】
260で、更新後ハードウェア要求がハイパーバイザに提供され得る。更新後ハードウェア要求を提供することは、復号された形式の、カウンタが覆い隠されたハードウェア要求をハイパーバイザに提供することを含み得る。更新後ハードウェア要求を提供することは、カウンタが覆い隠されたハードウェア要求をハイパーバイザのキューに移動することを含み得る。たとえば、ハイパーバイザは、様々な要求およびハイパーバイザの作業メモリが常駐するメモリ空間を有し得る。260で更新後要求を提供することは、ウルトラバイザが、ハイパーバイザによってアクセス不能なセキュア・メモリからメモリ空間に更新後要求を移動することを含み得る。260で更新後要求を提供した後、方法200は295で終了する。いくつかの実施形態では、方法200は再び205から開始し、210でハイパーバイザが引き続き監視され得る。
【0038】
ハードウェア要求がない場合(215:N)、270で、ハードウェア要求に対する応答が識別され得る。いくつかの実施形態では、識別された応答がある場合(270:Y)、ハイパーバイザによって意図されるアプリケーション(たとえば、応答に対応するハードウェア要求を送ったアプリケーション)に応答を送り返すことがブロックされ得る。ハイパーバイザによるハードウェア要求に対する応答がある場合(270:Y)、280でカウンタがスクランブル解除され得る。
【0039】
カウンタをスクランブル解除することは、応答内のハイパーバイザからの更新後カウンタ値を決定することを含み得る。カウンタのスクランブル解除は、更新量を生成することを含み得る。たとえば、ウルトラバイザは、応答からの更新後カウンタ値を、ハイパーバイザに以前に提供された、記憶された覆い隠されたカウンタと比較し得る。値を比較すること(たとえば、減算、加算すること)により、更新後の量が計算され得る。たとえば、覆い隠されたカウンタ値が「1011」であり、更新後カウンタ値が「0010」である場合、更新後の量は「1001」であり得る。したがって、更新後の量は、ハイパーバイザによる演算の前後のカウンタ値の差であり得る。更新後の量は、更新後の明白にされたカウンタ値(たとえば、ゲスト・コンピュータのアプリケーションによって提供されるカウンタに関連するカウンタ値)を計算するために使用され得る。たとえば、覆い隠される前のカウンタ値が「1101」であり、スクランブル解除後のカウンタが更新後の量「1001」を有する場合、計算される更新後の明白にされたカウンタ値は「0100」となる。更新後の明白にされたカウンタ値を計算することは、覆い隠されたカウンタ値とハイパーバイザからの更新後カウンタ値との差から、覆い隠される前のカウンタ値を減算することを含み得る。
【0040】
290で、更新後の明白にされたカウンタ値が、カウンタを有するハードウェア要求を送ったアプリケーションに提供され得る。更新後の明白にされたカウンタ値を提供することは、応答内に値を挿入することを含み得る。更新後の明白にされたカウンタ値を提供することは、アプリケーションのゲスト・コンピュータに対する出力キュー内に応答を配置する前に、応答を暗号化することを含み得る。更新後の明白にされたカウンタ値が提供された後、方法200は295で終了する。いくつかの実施形態では、290で更新後の明白にされたカウンタ値が提供された後、方法200は210でハイパーバイザを引き続き監視し得る。
【0041】
図3は、本開示のいくつかの実施形態による、使用され得る例示的コンピュータ・システム300(代替として、コンピュータ)の代表的な主な構成要素を示す。個々の構成要素は、複雑さ、数、タイプ、または構成、あるいはその組合せの点で変動し得ることを理解されたい。開示される特定の例は例示のためのものに過ぎず、必ずしもそのような唯一の変形形態ではない。コンピュータ・システム300は、プロセッサ310、メモリ320、入力/出力インターフェース(本明細書ではI/OまたはI/Oインターフェース)330、およびメイン・バス340を備え得る。メイン・バス340は、コンピュータ・システム300の他の構成要素のための通信経路を提供し得る。いくつかの実施形態では、メイン・バス340は、専用デジタル信号プロセッサ(図示せず)などの他の構成要素に接続され得る。
【0042】
コンピュータ・システム300のプロセッサ310は、1つまたは複数のコア312A、312B、312C、312D(集合的に312)から構成され得る。プロセッサ310は、コア312のための命令およびデータの一時的記憶を実現する1つまたは複数のメモリ・バッファまたはキャッシュ(図示せず)をさらに含み得る。コア312は、キャッシュまたはメモリ320から提供される入力に対する命令を実施し、結果をキャッシュまたはメモリに出力し得る。コア312は、本開示の実施形態に適合する1つまたは複数の方法を実施するように構成された1つまたは複数の回路から構成され得る。いくつかの実施形態では、コンピュータ・システム300は複数のプロセッサ310を含み得る。いくつかの実施形態では、コンピュータ・システム300は、単一のコア312を有する単一のプロセッサ310であり得る。
【0043】
コンピュータ・システム300のメモリ320はメモリ・コントローラ322を含み得る。いくつかの実施形態では、メモリ320は、データおよびプログラムを記憶するためのランダム・アクセス半導体メモリ、記憶デバイス、または記憶媒体(揮発性または不揮発性)を含み得る。いくつかの実施形態では、メモリはモジュール(たとえば、デュアル・インライン・メモリ・モジュール)の形態であり得る。メモリ・コントローラ322はプロセッサ310と通信し、メモリ320内への情報の記憶、およびメモリ320内の情報の検索を容易にする。メモリ・コントローラ322はI/Oインターフェース330と通信し、メモリ320の入力または出力の記憶および検索を容易にする。
【0044】
I/Oインターフェース330は、I/Oバス350、端末インターフェース352、ストレージ・インターフェース354、I/Oデバイス・インターフェース356、およびネットワーク・インターフェース358を備え得る。I/Oインターフェース330は、メイン・バス340をI/Oバス350に接続し得る。I/Oインターフェース330は、プロセッサ310およびメモリ320からの命令およびデータをI/Oバス350の様々なインターフェースに向けて送り得る。I/Oインターフェース330はまた、I/Oバス350の様々なインターフェースからの命令およびデータをプロセッサ310およびメモリ320に向けて送り得る。様々なインターフェースは、端末インターフェース352、ストレージ・インターフェース354、I/Oデバイス・インターフェース356、およびネットワーク・インターフェース358を含み得る。いくつかの実施形態では、様々なインターフェースは、前述のインターフェースのサブセットを含み得る(たとえば、産業応用例での組込みコンピュータ・システムは、端末インターフェース352およびストレージ・インターフェース354を含まないことがある)。
【0045】
限定はしないがメモリ320、プロセッサ310、およびI/Oインターフェース330を含む、コンピュータ・システム300全体にわたる論理モジュールが、1つまたは複数の構成要素に対する障害および変更をハイパーバイザまたはオペレーティング・システム(図示せず)に通信し得る。ハイパーバイザまたはオペレーティング・システムは、コンピュータ・システム300内で利用可能な様々なリソースを割り振り、メモリ320内のデータの位置、および様々なコア312に割り当てられたプロセスの位置を追跡し得る。要素を組み合わせ、または再配置する実施形態では、論理モジュールの態様および機能が組み合わされ、または再分配され得る。こうした変形形態は当業者には明らかであろう。
【0046】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される任意の他のタイプのコンピューティング環境と共に実装することができる。
【0047】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話で迅速にプロビジョニングされ、解放され得る構成可能コンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
【0048】
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングし得る。
広範なネットワーク・アクセス:機能がネットワークを介して利用可能であり、異種シンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:マルチ・テナント・モデルを使用して複数の消費者にサービスするためにプロバイダのコンピューティング・リソースがプールされ、異なる物理および仮想リソースが、要求に従って動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの厳密な位置に関する制御または知識を有さないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)で位置を指定することができ得るという点で、ある意味で位置独立性がある。
迅速な弾力性:迅速にスケールアウトし、迅速に解放して迅速にスケールインするために、機能が、迅速かつ弾力的に、あるケースでは自動的にプロビジョニングされ得る。消費者にとって、プロビジョニングのために利用可能な機能はしばしば、無制限であり、いつでも任意の量を購入できるように見える。
測定サービス:クラウド・システムは、サービスのタイプにとって適切な何らかのレベルの抽象化(たとえば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)の計量機能を活用することによってリソース使用を自動的に制御し、最適化する。リソース使用量が監視され、制御され、レポートされ、利用されるサービスのプロバイダと消費者の両方についての透明性が実現される。
【0049】
サービス・モデルは以下の通りである。
Software as a Service(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、可能性のある例外は、限定されたユーザ特有のアプリケーション構成設定である。
Platform as a Service(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に配置することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、配置されるアプリケーション、および場合によってはアプリケーション・ホスティング環境構成に関する制御を有する。
Infrastructure as a Service(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本コンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配置および実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配置されるアプリケーションに関する制御、および場合によっては選択されたネットワーキング構成要素(たとえば、ホスト・ファイアウォール)の限定された制御を有する。
【0050】
配置モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャが組織だけのために運用される。クラウド・インフラストラクチャは、組織または第3者によって管理され、オンプレミスまたはオフプレミスで存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャがいくつかの組織によって共有され、共有される関心事(たとえば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織または第3者によって管理され、オンプレミスまたはオフプレミスで存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャが、一般社会または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションのポータビリティを可能にする標準化技術または所有権を主張できる技術(たとえば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって互いに結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
【0051】
クラウド・コンピューティング環境は、ステートレスネス(statelessness)、低結合、モジュラリティ、およびセマンティック相互運用性(semantic interoperability)に焦点を合わせることを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0052】
次に図4を参照すると、例示的クラウド・コンピューティング環境50が示されている。図示されるように、クラウド・コンピューティング環境50は、たとえば、携帯情報端末(PDA)またはセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信し得る1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は互いに通信し得る。ノード10は、前述のようなプライベート、コミュニティ、パブリック、またはハイブリッド・クラウドなどの1つまたは複数のネットワーク、またはそれらの組合せの中で、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上のリソースを維持する必要のないサービスとして提供することが可能となる。図1に示されるコンピューティング・デバイス54A~Nのタイプは例示のみを目的としていること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50が、任意のタイプのネットワークまたは(たとえば、ウェブ・ブラウザを使用して)ネットワーク・アドレス指定可能な接続あるいはその両方を介して、任意のタイプのコンピュータ化されたデバイスと通信し得ることを理解されたい。
【0053】
次に図5を参照すると、クラウド・コンピューティング環境50(図4)によって提供される機能的抽象化層のセットが示されている。図5に示される構成要素、層、および機能は、例示のみを目的としており、本発明の実施形態はそれに限定されないことをあらかじめ理解されたい。図示されるように、以下の層および対応する機能が提供される。
【0054】
ハードウェアおよびソフトウェア層60がハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶デバイス65、ならびにネットワークおよびネットワーキング構成要素66が含まれる。いくつかの実施形態では、ソフトウェア構成要素はネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0055】
仮想化層70が抽象化層を提供し、抽象化層から仮想エンティティの以下の例が提供され得る:仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。仮想アプリケーションおよびオペレーティング・システム74は、本開示のいくつかの実施形態に適合するCAUVに基づいて動作し得る。
【0056】
一例では、管理層80が、以下で説明される機能を提供し得る。リソース・プロビジョニング81が、クラウド・コンピューティング環境内のタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的調達(dynamic procurement)を実現する。計量および価格設定(Meteringand Pricing)82が、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡と、こうしたリソースの消費に対する請求書作成(billing)または送り状送付(invoicing)とを実現する。一例では、こうしたリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティが、クラウド消費者およびタスクについての識別検証、ならびにデータおよび他のリソースに対する保護を実現する。ユーザ・ポータル83が、消費者およびシステム管理者のためのクラウド・コンピューティング環境へのアクセスを実現する。サービス・レベル管理84が、必要とされるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割振りおよび管理を実現する。サービス・レベル・アグリーメント(SLA)計画および履行85が、SLAに従って、将来の必要が予想されるクラウド・コンピューティング・リソースの事前調整および調達を実現する。
【0057】
作業負荷層90が、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得る作業負荷および機能の例には、地図作成およびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ解析処理94、取引処理95、モバイル・デスクトップ96が含まれる。
【0058】
本発明は、任意の可能な技術的詳細統合レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。
【0059】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、下記のポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、命令が記録されたパンチ・カードや溝の中の隆起構造などの機械的に符号化されたデバイス、および前述の任意の適切な組合せが含まれる。本明細書では、コンピュータ可読記憶媒体は、電波または他の自由伝播電磁波、導波路または他の伝送媒体を通じて伝播する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、ワイヤを通じて伝送される電気信号など、本質的に一時的信号であると解釈されるべきではない。
【0060】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するためにコンピュータ可読プログラム命令を転送する。
【0061】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語や類似のプログラミング言語などの手続型プログラミング言語とを含む、1つまたは複数のプログラミング言語の何らかの組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ、および部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され、または接続が外部コンピュータに対して(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われ得る。いくつかの実施形態では、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによってコンピュータ可読プログラム命令を実行し得る。
【0062】
本発明の態様が、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、フローチャート図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることを理解されよう。
【0063】
こうしたコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するための手段を生み出すように、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに与えられ、マシンが作り出され得る。こうしたコンピュータ可読プログラム命令はまた、命令を記憶するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示し得るコンピュータ可読記憶媒体内に記憶され得る。
【0064】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させて、コンピュータ実装プロセスが生成され得る。
【0065】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、指定の論理的機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装では、ブロック内に記載の機能は、図に記載されている以外の順序で行われ得る。たとえば、連続して示される2つのブロックは、実際には、1つのステップとして実施され、部分的または全体的に時間的に重複する方式で、同時に、ほぼ同時に実行され、またはブロックは、関係する機能に応じて、時には逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せが、指定の機能または動作を実施し、あるいは専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されよう。
【0066】
本開示の様々な実施形態の説明が例示のために提示されたが、網羅的なものではなく、開示される実施形態に限定されないものとする。記載の実施形態の範囲から逸脱することなく、多くの修正形態および変形形態が当業者には明らかであろう。本明細書で用いられた用語は、実施形態の原理、実際の応用、または市場で見出される技術に勝る技術的改良を説明し、当業者が本明細書で開示される実施形態を理解することを可能にするように選ばれた。
図1
図2
図3
図4
図5