(58)【調査した分野】(Int.Cl.,DB名)
前記ポリシ・エンジンは、前記役割識別子、前記VMイメージ測定値、および実行環境識別子を、要求する実行環境から受け取るように構成され、前記実行環境識別子は、前記要求する実行環境を識別する、請求項1に記載のコンピューティング・システム。
前記ポリシ・エンジンは、前記要求する実行環境が前記VMイメージ測定値にマッピングされるかどうかを前記実行環境識別子に基づいて判定し、前記判定に基づいて前記評価信号を生成するように構成される、請求項2に記載のコンピューティング・システム。
前記ポリシ・エンジンは、複数の異なる役割のそれぞれを異なるVMイメージ測定値にマッピングする測定値−役割マッピングの集合にアクセスし、前記VMイメージ測定値が前記役割にマッピングされるかどうかを前記測定値−役割マッピングの集合に基づいて判定するように構成されている、請求項2に記載のコンピューティング・システム。
前記実行環境は、前記VMイメージ測定値を生成し、前記VMイメージ測定値を前記鍵サービスに提供するように構成された測定システムを含む、請求項6に記載のコンピューティング・システム。
前記測定システムは、前記VMイメージ測定値を含むハッシュ値を入手するために前記VMイメージに対してハッシュ関数を実行する、請求項9に記載のコンピューティング・システム。
前記VMイメージ測定値を生成することが、測定システムを用いて、VMイメージ測定値を含むハッシュ値を入手するためにVMイメージに対してハッシュ関数を実行することを含む、請求項16に記載の方法。
【発明を実施するための形態】
【0009】
[0014]
図1は、開発チャネル100の動作の一例を示す流れ図である。開発チャネル100は、実例として、開発者102、ビルド・システム104、署名システム106、仮想マシンイメージ・ジェネレータ108、およびイメージ測定システム110を含む。
図1は、開発チャネル100が、クラウド・ケージ123(それ自体は、信頼される実行環境124および126を含む)、クラウド・ケージ展開サービス128、およびクラウド・ケージ鍵サービス130を含むクラウド・アーキテクチャ122に結合され得、他の項目129を含むことができることをも示す。
図1は、1つまたは複数のセキュア・サービス・ユーザ・システム131が、ネットワーク132を介してアーキテクチャ122にアクセスできることをも示す。
【0010】
[0015]
図1に示された例では、開発者102は、実例として、信頼される実行環境124〜126内などのホスティングされるセキュア・サービス内で走行させられるコードであるソース・コード112を開発する。そのようなサービスは、支払いサービス、バンキング・サービス、クレジット・カード処理サービス、または様々な他のサービスのいずれかとすることができる。
【0011】
[0016] ビルド・システム104は、ソース・コード112を受け取り、コードを実行可能バイナリ(または他のビルドされたコード)114にビルドする。コード114は、実例として、スクリプトおよび様々なデータ・ファイルを含むことができるコンパイルされた実行可能コードである。これは、実例として、署名システム106に供給される。署名システム106は、実例として、署名された実行可能コード116を生成するためにコード114に署名する。コード116が署名されるので、これは、署名が行われた後にコード116が変更されないことを保証することができる。署名は、コード署名者(または署名システム106のアイデンティティ)をも示すことができる。
【0012】
[0017] その後、仮想マシンイメージ・ジェネレータ108は、適当なオペレーティング・システム・イメージと署名された実行可能コード116とを組み合わせることによって仮想マシンイメージを生成する。結果の仮想マシン(VM)イメージ118は、1つまたは複数のサービスと、実行環境内でこれらのサービスを実施するために展開され得るデータベースとを含むことができる。一例では、仮想マシンイメージ・ジェネレータ108は、仮想マシン用のハード・ディスクとして仮想ハード・ドライブ・フォーマットを使用することができる。これは、複数のオペレーティング・システムが単一のマシン上に常駐することを可能にすることができる。
【0013】
[0018] その後、イメージ測定システム110は、仮想マシンイメージ118に基づいて1つまたは複数の仮想マシンイメージ測定値120を生成する。測定値120は、実例として、各イメージ118を表す再計算可能な強いアイデンティティを含む。一例では、各測定値120は、対応するVMイメージ118に対して計算された暗号ハッシュ値とすることができる。その後、VMイメージ118およびそれに対応する測定値120は、クラウド環境(またはクラウド・アーキテクチャ)122に供給され得、ここで、1つまたは複数の信頼される実行環境124〜126内の仮想マシンによって実行され得る。
【0014】
[0019] VMイメージ118は、VMイメージ118をそれが実行するサービスに対応する特定の役割にマッピングする役割−VMイメージ・マッピングと一緒に、クラウド・ケージ展開サービス128に供給され得る。VM測定値120も、VMイメージ118の特定の測定値を役割にマッピングする測定値−役割マッピングと一緒に、クラウド・ケージ鍵サービス130に供給され得る。さらに、VMイメージ118のうちの1つを実行するのに使用されている特定の信頼される実行環境124〜126は、VMイメージ測定値120によって表されるVMイメージ118を展開する特定の信頼される実行環境を識別する信頼される実行環境識別子をクラウド・ケージ鍵サービス130に送ることができる。
【0015】
[0020] 短く言うと、動作中に、クラウド・ケージ展開サービス128は、信頼される実行環境124〜126に特定のVMイメージを展開することができる。その後、その環境124〜126は、クラウド・ケージ鍵サービス130に役割鍵を要求することができる。クラウド・ケージ鍵サービス130は、特定のVMイメージが特定の役割に適当であるかどうかと要求する実行環境とを識別し、そうである場合には、要求する実行環境がそのサービスを実行するように動作できるようにするために、要求する実行環境に戻って暗号化された役割鍵を返す。
【0016】
[0021]
図1は、サービス(支払いサービスまたは他のセキュア・サービスなど)が信頼される実行環境124〜126に展開された後に、支払い(または他のセキュア・サービス)ユーザ・システム131が、ネットワーク132およびクラウド121を介して信頼される実行環境のうちの1つ内のサービスにアクセスできることをも示す。たとえば、セキュア・サービスが、クレジット・カード処理サービスである場合には、ユーザ・システム131を、クレジット・カード処理が必要であるクレジット・カード会社のシステムとすることができる。バンキング・サービスの場合には、システム131を、銀行で展開することができる。これらは、例にすぎない。
【0017】
[0022] ネットワーク132は、広域ネットワーク、ローカル・エリア・ネットワーク、あるいは様々な他の有線もしくは無線のネットワークのいずれかまたはネットワークの組合せなど、様々なネットワークのいずれかとすることができる。一部が、例のために下でリストアップされる。
【0018】
[0023]
図2は、クラウド121内で展開されたクラウド・ケージ・アーキテクチャ122の一例をより詳細に示すブロック図である。
図2に示された項目の一部は、
図1に示された項目に類似し、これらは、同様の番号を付けられている。
【0019】
[0024]
図2に示されたアーキテクチャ122の全体的な動作を説明する前に、
図2の項目の一部およびその動作の短い説明をまず提供する。
図2に示された例では、クラウド・ケージ123は、1つまたは複数のプロセッサまたはサーバ136、信頼される実行環境124〜126を含むことができ、他の項目を含むこともできる。信頼される実行環境124は、暗号化解除システム141および測定システム142と一緒に、ハイパーバイザ138および1つまたは複数の仮想マシン140を含むことができる。信頼される実行環境124は、他の項目144をも含むことができる。信頼される実行環境126も、ハイパーバイザ146を含むことができ、あるいは、ハイパーバイザ138および146は、仮想マシン140〜148を生成するための単一のハイパーバイザとして実現され得る。実行環境126は、暗号化解除システム149、測定システム150、および様々な他の項目152をも含むことができる。信頼される実行環境124〜126は、同様のものまたは異なるものとすることができる。この説明において、信頼される実行環境124〜126は、同様と仮定され、したがって、信頼される実行環境124の動作だけが、本明細書で提供される。
【0020】
[0025] 仮想マシン140は、実例として、クラウド・ケージ展開サービス128(下でより詳細に説明される)から仮想マシンイメージを受け取り、そのイメージを実行する。測定システム142は、仮想マシン140上で展開されたイメージを測定することができる。測定値は、イメージに暗号ハッシュ関数を適用することによって生成され得る。たとえば、イメージが、仮想ハード・ディスク・イメージによって表される場合に、測定値は、そのイメージにSHA−256ハッシュを適用することによって生成され得る。これは、一例にすぎず、仮想マシンイメージの測定値を生成する様々な他の形を使用することもできる。VMイメージによって表されたサービスを実行する際に、信頼される実行環境124は、ユーザ・システム131がサービスを使用するために相互作用することのできるアプリケーション・プログラミング・インターフェース(API)151を公開することができる。
【0021】
[0026] 仮想マシンイメージを信頼される実行環境124に展開するために、クラウド・ケージ展開サービス128を使用することができる。一例では、サービス128は、1つまたは複数のプロセッサまたはサーバ154、展開エンジン156、仮想マシンイメージ・リポジトリ158、役割−仮想マシンイメージ・マッピング160を含むことができ、他の項目162を含むことができる。信頼される実行環境124は、実例として、展開エンジン156に役割(実行すべきサービスを表す)を供給する。その後、展開エンジン156は、役割−VMイメージ・マッピング160にアクセスして、その役割に対応する特定のVMイメージを識別し、VMイメージ・リポジトリ158からそのイメージを入手する。その後、展開エンジン156は、要求する信頼される実行環境124内の仮想マシン140上にそのVMイメージを展開する。これは、下で
図3に関してより詳細に説明される。
【0022】
[0027] VMイメージが仮想マシン140上に展開された後に、信頼される実行環境124は、実例として、それでも、展開された特定のサービス(または役割)を実行するために、それが使用する役割鍵を必要とする。すなわち、展開された仮想マシンイメージは、1つまたは複数のサービスおよびデータベースを表すコードを含むことができるが、その動作を実行するために必要な鍵をまだ有しない。したがって、信頼される実行環境124は、仮想マシン140上に展開されたVMイメージの測定値を生成し、これを、役割(サービスに対応する)と一緒に、動作するために必要な役割鍵を入手するためにクラウド・ケージ鍵サービス130に供給する。
【0023】
[0028] クラウド・ケージ鍵サービス130は、1つまたは複数のプロセッサまたはサーバ164、仮想信頼される実行環境(VTEE)鍵サービス166、ポリシ・エンジン168、鍵ラッピング暗号エンジン170、VMイメージ測定値ストア172、測定値−役割マッピング174、役割鍵ストア/ジェネレータ176、鍵ラッパー鍵178を含むことができ、様々な他の項目180をも含むことができる。VTEE鍵サービス166は、要求(仮想マシンイメージ測定値、対応する役割、および要求する信頼される実行環境124のアイデンティティ)をポリシ・エンジン168に供給する。ポリシ・エンジン168は、要求する信頼される実行環境がVMイメージによって表される特定の役割を実行するのに適当な環境であることを検証するためにVMイメージ測定値172にアクセスする。エンジン168は、信頼される実行環境124によって供給されたVMイメージ測定値が、鍵の要求内で信頼される実行環境124によって識別された役割にマッピングされるかどうかを識別するために、測定値−役割マッピング174にもアクセスする。ポリシ・エンジン168が、肯定的に評価する場合には、これは、鍵を要求している信頼される実行環境が、識別された役割を実行するのに適当な環境であることを示す。これは、信頼される実行環境124内で展開されたVMイメージ内のコード(たとえば、オペレーティング・システム、コード、データベースなど)の測定値が、信頼される実行環境124によって識別された役割にマッピングすることをも示す。したがって、これは、信頼される実行環境124が適当であることと、コードが変更されておらず、識別された役割にマッピングすることとを示す。
【0024】
[0029] その場合に、VTEE鍵サービス166は、鍵ラッピング暗号エンジンが、役割鍵ストア/ジェネレータ176から識別された役割の役割鍵を入手し、1つまたは複数の鍵ラッパー鍵178を用いてこれらの鍵をラップしまたは暗号化することを要求する。その後、ラップされた鍵は、VTEE鍵サービス166に戻って供給され、VTEE鍵サービス166は、要求する信頼される実行環境124にそれらを返す。要求する信頼される実行環境124では、それらの鍵は、暗号化解除システム141によって暗号化解除され、その環境内でサービス(または役割)を実行するのに使用され得る。
【0025】
[0030]
図3は、クラウド・ケージ展開サービス128の動作の一例をより詳細に示す流れ図である。展開エンジン156は、まず、信頼される実行環境124内に展開されなければならない役割を識別する役割識別子を受け取る。これは、
図3のブロック190によって示される。役割は、実例として、支払いサービス、クレジット・カード・サービス、その他など、信頼される実行環境124によってホスティングされるセキュア・サービスに対応する。これは、ブロック192によって示される。役割識別子は、任意のストリング194または他の表現196とすることができる。
【0026】
[0031] その後、展開エンジン156は、役割に対応する特定のVMイメージを識別するために役割−VMイメージ・マッピング160にアクセスする。役割−VMイメージ・マッピングへのアクセスは、ブロック198によって示され、これらのマッピングに基づく、役割がマッピングされるVMイメージの識別は、ブロック200によって示される。一例では、マッピングは、下の式1に示されているように表され、ここで、「イメージ」は、仮想イメージ・フォーマットで表され、「H」は、暗号ハッシュ関数である。
φ:役割→H(イメージ) 式1
【0027】
[0032] 役割マッピングΦは、役割マッピング署名鍵K
Φを用いて署名され得、展開エンジン156は、信頼される実行環境124内の展開マシン上にインストールされた(たとえば、VM 140上にインストールされた)公開鍵認証局に対して署名を妥当性検査することができる。役割マッピング署名の妥当性検査は、ブロック202によって示される。やはり、VMイメージは、ブロック204によって示されるように、適当なオペレーティング・システムのイメージと組み合わされた署名されたコードとすることができる。VMイメージは、ブロック206によって示されるように1つまたは複数のサービスおよびデータベースを表すことができ、VMイメージは、ブロック208によって示されるように、他の形でも識別され得る。
【0028】
[0033] その後、展開エンジン156は、識別されたVMイメージをVMイメージ・リポジトリ158から入手する。これは、ブロック210によって示される。その後、展開エンジン156は、識別されたVMイメージをクラウド・ベースの信頼される実行環境124に展開する。これは、ブロック212によって示される。
【0029】
[0034]
図4は、クラウド・ケージ鍵サービス130に役割鍵を要求し、これらの鍵を受け取り、その作業を実行するためにこれらを使用する際の、信頼される実行環境124の動作の一例を示す流れ図である。まず、環境124内で実行されるサービスを表すVMイメージが、信頼される実行環境124内で展開サービス128によって展開済みであると仮定する。これは、ブロック218によって示される。その後、信頼される実行環境124は、それが実行するサービスを表す役割の役割鍵が、動作を実行するのに必要であると判定する。これは、
図4の流れ図でブロック220によって示される。
【0030】
[0035] その後、測定システム142は、仮想マシン140上で展開された、展開されたVMイメージのVMイメージ測定値を生成する。これは、ブロック222によって示される。やはり、上で短く説明したように、VMイメージ測定値は、VMイメージにハッシュ関数を適用することによって入手され得る。これは、ブロック224によって示される。ブロック226によって示されるように、これを他の形で入手することもできる。
【0031】
[0036] その後、信頼される実行環境124は、役割の役割鍵を入手するために、VMイメージ測定値および役割を識別する役割識別子をクラウド・ケージ鍵サービス130に送り、その結果、信頼される実行環境124は、その動作を実行できるようになる。これは、ブロック228によって示される。
【0032】
[0037] その後、クラウド・ケージ鍵サービス130は、役割が、要求する信頼される実行環境に適当であることと、鍵が役割に適当であることとを検証する。そうである場合には、サービス130は、クラウド・ケージ123内の要求する信頼される実行環境124にラップされた(または暗号化された)役割鍵を返す。クラウド・ケージ鍵サービス130の動作は、下で
図5に関してより詳細に説明され、信頼される実行環境124でのラップされたまたは暗号化された役割鍵の入手は、
図4の流れ図のブロック230によって示される。
【0033】
[0038] その後、信頼される実行環境124内の暗号化解除システム141は、受け取られた役割鍵をアンラップ(または暗号化解除)し、これらを使用して、それが実行しようとしている役割(またはサービス)内の作業を実行する。これは、
図3の流れ図内のブロック232および234によって示される。信頼される実行環境内で実行される特定の作業は、信頼される実行環境がホスティングしまたは実行している特定のサービスに依存して大幅に変化する。たとえば、ブロック236によって示されるように、役割鍵を使用して、クレジット・カード情報を暗号化解除することができる。ブロック238によって示されるように、役割鍵を使用して、支払い処理を実行することができる。役割鍵は、もちろん、様々な他の形でも使用され得、これは、ブロック240によって示される。
【0034】
[0039]
図5は、クラウド・ケージ鍵サービス130の動作の一例をより詳細に示す流れ図である。VTEE鍵サービス166は、まず、実行環境(信頼される実行環境124など)から役割鍵を要求する引用を受け取る。これは、
図5の流れ図でブロック250によって示される。上で短く議論したように、引用は、要求する実行環境によって実行される特定の役割を識別する役割識別子252を含むことができる。引用は、実例として、その環境によって生成されたVM測定値をも含む。これは、ブロック254によって示される。引用は、要求を行っている特定の信頼される実行環境を識別する信頼される実行環境識別子256を含むことができる。要求は、他の項目258をも含むことができる。
【0035】
[0040] その後、要求は、ポリシ・エンジン168に供給され、ここで、引用(または要求)が適当な信頼される実行環境から来たかどうかおよび引用(または要求)が識別された役割に関する正しいオペレーティング・システム、コードなどを有するかどうかを判定するために評価される。これは、
図5の流れ図のブロック260によって示される。一例では、ポリシ・エンジン168は、要求する信頼される実行環境が、要求内で受け取られたVMイメージ測定値に対応するかどうかを識別するために、VMイメージ測定値ストア172にアクセスする。たとえば、ポリシ・エンジン168は、VMイメージが、適当な信頼される実行環境上で正しく展開されたかどうかを判定することができる。これは、ブロック262によって示される。
【0036】
[0041] ポリシ・エンジン168は、要求する信頼される実行環境上で展開された(かつ、VMイメージ測定値によって表される)VMイメージが、識別された役割にマッピングされるかどうかを判定するために測定値−役割マッピング174にもアクセスすることができる。これは、ブロック264によって示される。したがって、VMイメージ測定値を仮定して、ポリシ・エンジン168は、以下のように、VMイメージを役割の集合にマッピングするマッピング174にアクセスすることによって役割の集合を作る。
θ:h→S
R
S
R={役割|φ(役割)=h}
ただし、
h=H(イメージ) 式2
【0037】
[0042] 上の式2から、マッピングΦが、イメージh(上の式1に示されているように、H(イメージ)と等しい)を役割の集合S
Rにマッピングすることがわかる。役割の集合S
Rは、マッピングΦによってVMイメージ測定値にマッピングされる役割である。役割の集合は、イメージ測定値hへのマッピングを仮定して役割から構成される。
【0038】
[0043] ポリシ・エンジン168が、要求する信頼される実行環境がVMイメージ測定値によって識別されるVMイメージを走行させるのに適当な環境ではないと判定する場合、または、VMイメージ測定値が要求する信頼される実行環境の役割にマッピングしないと判定する場合のいずれかには、VTEE鍵サービス166は、ポリシ・エンジン168が、引用を肯定的に評価しなかったと判定する。これは、
図5のブロック270によって示される。したがって、VTEE鍵サービス166は、ブロック272によって示されるように、役割鍵の要求を否定する。VTEE鍵サービス166は、その否定の評価に応答して、通知、警報、または他のメッセージを送るか、他の動作を実行することができる。これは、ブロック274によって示される。
【0039】
[0044] しかし、ポリシ・エンジン168が、要求する信頼される実行環境124が、役割を実行するのに適当な感光であると判定すると仮定し、要求する信頼される実行環境によって供給されたVMイメージ測定値が、識別された役割にマッピングすると仮定すると、VTEE鍵サービス166は、ブロック270で、ポリシ・エンジン評価が肯定的または賛成であると判定する。その場合に、VTEE鍵サービス166は、要求する信頼される実行環境124に役割鍵を供給できるようにするために、役割鍵を入手するために鍵ラッピング暗号エンジンと相互作用する。
【0040】
[0045] それを行うために、VTEE鍵サービス166は、役割識別子を鍵ラッピング暗号エンジン170に供給する。エンジン170は、識別された役割の役割鍵を入手しまたは生成するために、役割鍵ストア/ジェネレータ176にアクセスする。これは、
図5の流れ図のブロック276によって示される。その後、エンジン170は、鍵ラッパー鍵178にアクセスし、1つまたは複数の鍵ラッパー鍵178を用いて役割鍵の集合をラップする(または暗号化する)。これは、
図5の流れ図のブロック278によって示される。役割鍵は、個別にまたは集合としてラップされ得る。鍵ラッパー鍵は、ブロック280によって示されるように公開鍵とすることができ、役割鍵のラップは、他の形でも実行され得、これは、ブロック282によって示される。
【0041】
[0046] 役割鍵は、任意の暗号鍵タイプとすることができ、ラップする鍵は、実例として、その特定の役割に関する公開鍵である。ラッパー鍵を入手する際に、エンジン170は、下の式3に示されているように、所与の役割をラップする公開鍵
【数1】
にマッピングするマップΨにアクセスすることができる。
【数2】
【0042】
[0047] S
krは、次のように役割鍵をラップする公開鍵
【数3】
を用いて暗号化されたラップされた役割鍵の集合
【数4】
である。
【数5】
【0043】
[0048] 鍵ラッピング暗号エンジン170は、役割鍵を入手し、これらを適当な鍵ラッパー鍵178を用いてラップした後に、ラップされた役割鍵をVTEE鍵サービス166に返し、VTEE鍵サービス166は、これらを、要求する信頼される実行環境124に返す。これは、
図5の流れ図のブロック284によって示される。
【0044】
[0049] したがって、クラウド・ケージが、複数の支払いサービスを役割として扱い、これらの役割を上で定義されたVMイメージにマッピングすることを了解されたい。クラウド・ケージ信頼される実行環境内で走行する役割またはサービスのいくつかの例は、とりわけ、仮想ハードウェア・セキュリティ・モジュール(または暗号サービス)、送金エージェント・サービス、送金エージェント・データベースとすることができる。
【0045】
[0050] 上で説明されたアーキテクチャ内では、一例で、サーバ・ハードウェアのそれぞれが、実例として、ハイ・アシュアランス(high assurance)暗号プロセッサ、相対的に少量の鍵ストレージ、鍵対、およびクラウド・ケージ展開サービス128内の信頼されるハードウェアによってロードされたバイナリ・イメージを測定する能力を有する。ハイ・アシュアランス暗号プロセッサは、検証可能な証明書を有する公開鍵を有することができる。ハイ・アシュアランス暗号プロセッサは、そのハードウェアによって生成された鍵に関するハードウェア内の証明能力をも含むことができる。これは、鍵完全性を特定の鍵証明書に束縛する。さらに、上で議論したように、役割−VMイメージ・マッピングに署名することができる。署名鍵の秘密およびその公開鍵完全性は、別々のシステムによって検証され得、あるいは、これらのシステムは、クラウド・ケージ・アーキテクチャの一部とされ得る。役割鍵およびラッピング鍵は、上で議論したマッピングΦおよびΨに頼る。役割定義コードおよびデータは、署名され、外部機関とすることのできる認証局までさかのぼって検証され得る。
【0046】
[0051] したがって、本システムが、開発リソースおよび展開リソースを取り巻く物理的なケージ・セキュリティがない場合であっても、セキュリティを保証することがわかる。本システムは、信頼される実行環境上で展開された仮想マシンイメージが変更されていないことを保証する。本システムは、役割鍵を入手する前に、仮想マシンイメージが、これらの鍵を入手するのに適当な仮想マシンイメージであることと、信頼される実行環境が、その仮想マシンイメージを走行させるのに適当な環境であることとをも保証する。役割鍵は、信頼される実行環境がその動作を実行できるようにするために、信頼される実行環境に返される時に、ラップされまたは暗号化される。
【0047】
[0052] 上の議論が、様々な異なるシステム、構成要素、および/または論理を説明したことに留意されたい。そのようなシステム、構成要素、および/または論理は、これらのシステム、構成要素、および/または論理に関連する機能を実行するハードウェア項目(その一部が下で説明される、プロセッサおよび関連するメモリまたは他の処理構成要素)からなるものとすることができることを了解されたい。さらに、システム、構成要素、および/または論理は、下で説明するように、メモリにロードされ、その後にプロセッサもしくはサーバまたは他のコンピューティング構成要素によって実行されるソフトウェアからなるものとすることができる。システム、構成要素、および/または論理は、そのいくつかの例が下で説明される、ハードウェア、ソフトウェア、ファームウェアなどの異なる組合せからなるものとすることもできる。これらは、上で説明したシステム、構成要素、および/または論理を形成するのに使用され得る異なる構造のいくつかの例にすぎない。他の構造を使用することもできる。
【0048】
[0053] この議論は、プロセッサおよびサーバに言及した。一実施形態では、プロセッサおよびサーバは、別々に図示されてはいない関連するメモリおよびタイミング回路網と共にコンピュータ・プロセッサを含む。これらは、これらが属し、それによってアクティブ化されるシステムまたはデバイスの機能的部分であり、これらのシステム内の他の構成要素または項目の機能性を容易にする。
【0049】
[0054] また、複数のユーザ・インターフェース・ディスプレイが議論された。これらは、様々な異なる形態をとることができ、その上に配置された様々な異なるユーザ作動可能な入力機構を有することができる。たとえば、ユーザ作動可能な入力機構は、テキスト・ボックス、チェック・ボックス、アイコン、リンク、ドロップダウン・メニュー、検索ボックスなどとすることができる。これらを、様々な異なる形で作動させることもできる。たとえば、これらを、ポイント・アンド・クリック・デバイス(トラック・ボールまたはマウスなど)を使用して作動させることができる。これらを、ハードウェア・ボタン、スイッチ、ジョイスティックまたはキーボード、サム・スイッチまたサム・パッドなどを使用して作動させることができる。これらを、仮想キーボードまたは他の仮想アクチュエータを使用して作動させることもできる。さらに、これらがその上に表示されるスクリーンがタッチ感知スクリーンである場合に、これらを、タッチ・ジェスチャを使用して作動させることができる。また、これらを表示するデバイスが音声認識構成要素を有する場合に、これらを、音声コマンドを使用して作動させることができる。
【0050】
[0055] 複数のデータ・ストアも議論された。これらが、それぞれ、複数のデータ・ストアに分解され得ることに留意されたい。すべてを、それらにアクセスするシステムにローカルとすることができ、すべてをリモートとすることができ、あるいは、いくつかをローカルとし、他をリモートすることができる。これらの構成のすべてが、本明細書で企図されている。
【0051】
[0056] また、図面は、各ブロックに属する機能性を有する複数のブロックを示す。機能性がより少数の構成要素によって実行されるように、より少数のブロックを使用できることに留意されたい。また、より多数のブロックを使用し、機能性をより多数の構成要素の間で分散させることができる。
【0052】
[0057] アーキテクチャ122は、本明細書ではクラウド・コンピューティング・アーキテクチャとして説明される。クラウド・コンピューティングは、サービスを配信するシステムの物理位置または物理構成のエンドユーザ知識を要求しない、計算サービス、ソフトウェア・サービス、データ・アクセス・サービス、およびストレージ・サービスを提供する。様々な実施形態では、クラウド・コンピューティングは、適当なプロトコルを使用して、インターネットなどの広域ネットワークを介してサービスを配信する。たとえば、クラウド・コンピューティング・プロバイダは、広域ネットワークを介してアプリケーションを配信し、これらのアプリケーションは、ウェブ・ブラウザまたは任意の他のコンピューティング構成要素を介してアクセスされ得る。アーキテクチャ122のソフトウェアまたは構成要素ならびに対応するデータは、リモート位置にあるサーバ上に記憶され得る。クラウド・コンピューティング環境内のコンピューティング・リソースは、リモート・データ・センタ位置で統合され得、あるいは、散在され得る。クラウド・コンピューティング・インフラストラクチャは、ユーザにとって単一のアクセス点に見える場合であっても、共有されるデータ・センタを介してサービスを配信することができる。したがって、本明細書で説明される構成要素および機能は、クラウド・コンピューティング・アーキテクチャを使用して、リモート位置にあるサービス・プロバイダから供給され得る。代替案では、それらは、従来のサーバから供給され得、あるいは、直接にまたは他の形でクライアント・デバイスにインストールされ得る。
【0053】
[0058] この説明は、公共クラウド・コンピューティングと私有クラウド・コンピューティングとの両方を含むことが意図されている。クラウド・コンピューティング(公共と私有との両方)は、リソースの実質的にシームレスなプール化ならびに基礎になるハードウェア・インフラストラクチャを管理し構成する必要の削減を提供する。
【0054】
[0059] 公共クラウドは、ベンダによって管理され、通常は、同一のインフラストラクチャを使用して複数の消費者をサポートする。また、公共クラウドは、私有クラウドとは異なって、ハードウェアの管理からエンド・ユーザを解放することができる。私有クラウドは、組織自体によって管理され得、インフラストラクチャは、通常、他の組織と共有されない。組織は、それでも、インストールおよび修復など、ある程度までハードウェアを保守する。
【0055】
[0060]
図6は、アーキテクチャ100またはその一部(たとえば)を展開できるコンピューティング環境の一例である。
図6を参照すると、いくつかの実施形態を実施する例のシステムは、コンピュータ810の形の汎用コンピューティング・デバイスを含む。コンピュータ810の構成要素は、処理ユニット820(プロセッサまたはサーバ136、154、または164を含むことができる)、システム・メモリ830、およびシステム・メモリを含む様々なシステム構成要素を処理ユニット820に結合するシステム・バス821を含むことができるが、これに限定はされない。システム・バス821は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのいずれかを使用するローカル・バスを含む複数のタイプのバス構造のいずれかとすることができる。限定ではなく例として、そのようなアーキテクチャは、Industry Standard Architecture(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、およびメザニン・バスとも称するPeripheral Component Interconnect(PCI)バスを含む。
図1に関して説明したメモリおよびプログラムを、
図6の対応する部分に展開することができる。
【0056】
[0061] コンピュータ810は、通常は様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ810によってアクセスされ得る任意の使用可能な媒体とすることができ、揮発性媒体と不揮発性媒体との両方、取り外し可能媒体と取り外し不能媒体との両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができる。コンピュータ記憶媒体は、変調されたデータ信号または搬送波とは異なり、これを含まない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実施された、揮発性と不揮発性との両方で、取り外し可能と取り外し不能との両方の媒体を含むハードウェア記憶媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ、もしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくは他の光学ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、もしくは他の磁気ストレージ、または所望の情報を記憶するのに使用でき、コンピュータ810によってアクセスできる任意の他の媒体を含むが、これに限定はされない。通信媒体は、通常、トランスポート機構内でコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを実施し、すべての情報配信媒体を含む。用語「変調されたデータ信号」は、信号内で情報を符号化する形でその特性のうちの1つまたは複数をセットされまたは変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体とを含む。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれなければならない。
【0057】
[0062] システム・メモリ830は、読取専用メモリ(ROM)831およびランダム・アクセス・メモリ(RAM)832などの揮発性および/または不揮発性のメモリの形のコンピュータ記憶媒体を含む。スタートアップ中などに、コンピュータ810内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム833(BIOS)が、通常はROM 831内に記憶される。RAM 832は、通常、処理ユニット820から即座にアクセス可能であり、かつ/または処理ユニット820によって現在操作されつつあるデータおよび/またはプログラム・モジュールを含む。限定ではなく例として、
図6は、オペレーティング・システム834、アプリケーション・プログラム835、他のプログラム・モジュール836、およびプログラム・データ837を示す。
【0058】
[0063] コンピュータ810は、他の取り外し可能/取り外し不能な揮発性/不揮発性のコンピュータ記憶媒体をも含むことができる。例としてのみ、
図6は、取り外し不能な不揮発性磁気媒体から読み取り、またはこれに書き込むハード・ディスク・ドライブ841と、CD ROMまたは他の光学媒体などの取り外し可能な不揮発性光ディスク856から読み取り、またはこれに書き込む光ディスク・ドライブ855とを示す。例示的なオペレーティング環境内で使用され得る他の取り外し可能/取り外し不能な揮発性/不揮発性のコンピュータ記憶媒体は、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM、および類似物を含むが、これに限定はされない。ハード・ディスク・ドライブ841は、通常、インターフェース840などの取り外し不能メモリ・インターフェースを介してシステム・バス821に接続され、光ディスク・ドライブ855は、通常、インターフェース850などの取り外し可能メモリ・インターフェースによってシステム・バス821に接続される。
【0059】
[0064] その代わりにまたはそれに加えて、本明細書で説明される機能は、少なくとも部分的に、1つまたは複数のハードウェア論理構成要素によって実行され得る。たとえば、限定なしに、使用され得るハードウェア論理構成要素の実例のタイプは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラム固有標準製品(ASSP)、システムオンアチップ・システム(SOC)、複合プログラム可能論理デバイス(CPLD)などを含む。
【0060】
[0065] 上で議論され、
図6に示されたドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータの記憶をコンピュータ810に提供する。
図6では、たとえば、ハード・ディスク・ドライブ841は、オペレーティング・システム844、アプリケーション・プログラム845、他のプログラム・モジュール846、およびプログラム・データ847を記憶するものとして図示されている。これらの構成要素が、オペレーティング・システム834、アプリケーション・プログラム835、他のプログラム・モジュール836、およびプログラム・データ837と同一または異なるのいずれかとされ得ることに留意されたい。オペレーティング・システム844、アプリケーション・プログラム845、他のプログラム・モジュール846、およびプログラム・データ847は、少なくともこれらが異なるコピーであることを示すために、ここでは異なる番号を与えられている。
【0061】
[0066] ユーザは、キーボード862、マイクロホン863、およびマウス、トラックボール、またはタッチパッドなどのポインティング・デバイス861などの入力デバイスを介してコンピュータ810にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、ジョイスティック、ゲーム・パッド、衛星パラボラ・アンテナ、スキャナ、または類似物を含むことができる。上記および他の入力デバイスは、しばしば、システム・バスに結合されるユーザ入力インターフェース860を介して処理ユニット820に接続されるが、パラレル・ポート、ゲーム・ポート、またはuniversal serial bus(USB)などの他のインターフェースおよびバス構造によって接続される場合がある。ビジュアル・ディスプレイ891または他のタイプのディスプレイ・デバイスも、ビデオ・インターフェース890などのインターフェースを介してシステム・バス821に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース895を介して接続され得る、スピーカ897およびプリンタ896などの他の周辺出力デバイスを含むこともできる。
【0062】
[0067] コンピュータ810は、リモート・コンピュータ880などの1つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク化された環境内で操作される。リモート・コンピュータ880は、パーソナル・コンピュータ、ハンドヘルド・デバイス、サーバ、ルータ、ネットワークPC、ピア・デバイス、または他の一般的なネットワーク・ノードとすることができ、通常は、コンピュータ810に関して上で説明した要素の多くまたはすべてを含む。
図6に示された論理接続は、ローカル・エリア・ネットワーク(LAN)871および広域ネットワーク(WAN)873を含むが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターネットにおいてありふれたものである。
【0063】
[0068] LANネットワーキング環境内で使用される時に、コンピュータ810は、ネットワーク・インターフェースまたはネットワーク・アダプタ870を介してLAN 871に接続される。WANネットワーキング環境内で使用される時に、コンピュータ810は、通常は、モデム872またはインターネットなどのWAN 873を介する通信を確立する他の手段を含む。モデム872は、内蔵または外付けとすることができるが、ユーザ入力インターフェース860または他の適当な機構を介してシステム・バス821に接続され得る。ネットワーク化された環境では、コンピュータ810に関して示されたプログラム・モジュールまたはその部分は、リモート・メモリ・ストレージ・デバイス内に記憶され得る。限定ではなく例として、
図6は、リモート・コンピュータ880に常駐するものとしてリモート・アプリケーション・プログラム885を示す。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段が使用され得ることを了解されたい。
【0064】
[0069] 本明細書で説明される異なる実施形態が、異なる形で組み合わされ得ることにも留意されたい。すなわち、1つまたは複数の実施形態の諸部分を、1つまたは複数の他の実施形態の諸部分と組み合わせることができる。このすべてが、本明細書で企図されている。
【0065】
[0070] 例1は、
[0071] サービスを識別する役割と、実行環境内で展開される仮想マシンイメージを示す仮想マシン(VM)イメージ測定値とを受け取り、VMイメージ測定値が役割にマッピングされるかどうかを判定し、判定を示す評価信号を生成するポリシ・エンジンと、
[0072] VMイメージ測定値が役割にマッピングされることを示す評価信号に基づいて、役割鍵の集合を入手し、ラップする鍵ラッピング暗号エンジンであって、役割鍵は、役割に対応し、実行環境がサービスを実行することを可能にする、鍵ラッピング暗号エンジンと、
[0073] ラップされた役割鍵の集合を実行環境に提供する鍵サービスと
を含むコンピューティング・システムである。
【0066】
[0074] 例2は、ポリシ・エンジンが、役割、VMイメージ測定値、および実行環境識別子を、要求する実行環境から受け取るように構成され、実行環境識別子が、要求する実行環境を識別する、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0067】
[0075] 例3は、ポリシ・エンジンが、実行環境識別子に基づいて要求する実行環境がVMイメージ測定値にマッピングされるかどうかを判定し、判定に基づいて評価信号を生成するように構成される、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0068】
[0076] 例4は、
役割の複数の異なる集合のそれぞれを異なるVMイメージ測定値にマッピングする測定値−役割マッピングの集合であって、ポリシ・エンジンは、測定値−役割マッピングにアクセスすることによってVMイメージ測定値が役割にマッピングされるかどうかを判定する、測定値−役割マッピングの集合
[0077] をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0069】
[0078] 例5は、
[0079] 役割鍵の集合を鍵ラッピング暗号エンジンに提供するように構成された役割鍵ストア/ジェネレータと、鍵ラッパー鍵の集合であって、各鍵ラッパー鍵は、所与の役割にマッピングされ、鍵ラッピング暗号エンジンは、役割にマッピングされた1つまたは複数の鍵ラッパー鍵を識別し、識別された1つまたは複数の鍵ラッパー鍵を用いて役割鍵を暗号化する、鍵ラッパー鍵の集合と
をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0070】
[0080] 例6は、
役割を受け取り、役割に基づいてVMイメージを入手し、VMイメージを実行環境に展開するように構成された展開エンジン
[0081] をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0071】
[0082] 例7は、
役割をVMイメージにマッピングする役割−イメージ・マッピングの集合であって、展開エンジンは、VMイメージを識別するために役割−イメージ・マッピングの集合にアクセスする、役割−イメージ・マッピングの集合
[0083] をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0072】
[0084] 例8は、
VMイメージを記憶するVMイメージ・リポジトリであって、展開エンジンは、VMイメージ・リポジトリから展開のためにVMイメージを入手する、VMイメージ・リポジトリ
[0085] をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0073】
[0086] 例9は、実行環境が、
VMイメージ測定値を生成し、VMイメージ測定値を鍵サービスに提供するように構成された測定システム
[0087] を含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0074】
[0088] 例10は、測定システムが、VMイメージ測定値を含むハッシュ値を入手するためにVMイメージに対してハッシュ関数を実行する、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0075】
[0089] 例11は、
[0090] 鍵サービスにおいて、実行環境サービスと、実行環境内で展開される仮想マシンイメージを示す仮想マシン(VM)イメージ測定値とを識別することと、
[0091] VMイメージ測定値が実行環境サービスにマッピングされるかどうかを判定することと、
[0092] 判定を示す評価信号を生成することと、
[0093] VMイメージ測定値が実行環境サービスにマッピングされることを示す評価信号に応答して、役割鍵の集合を入手することであって、役割鍵は、実行環境サービスに対応し、実行環境が実行環境サービスを実行することを可能にする、入手することと、
[0094] 役割鍵の集合内の役割鍵を暗号化することと、
[0095] 実行環境に暗号化された役割鍵の集合を提供することと
を含む、コンピュータ実施される方法である。
【0076】
[0096] 例12は、
実行環境サービスを識別する役割を受け取ることと、
[0097] VMイメージ測定値を受け取ることと、
[0098] 要求する実行環境から実行環境識別子を受け取ることであって、実行環境識別[0099]子は、要求する実行環境を識別し、VMイメージ測定値が 上 実行環境サービス マッピングされるかどうかを判定することは、実行環境識別子に基づいて要求する実行環境がVMイメージ測定値にマッピングされるかどうかを判定することを含み、評価信号を生成することは、判定に基づいて評価信号を生成することを含む、受け取ることと
をさらに含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0077】
[0100] 例13は、VMイメージ測定値が実行環境サービスにマッピングされるかどうかを判定することが、
[0101] 役割の複数の異なる集合を異なるVMイメージ測定値にマッピングする測定値−役割マッピングの資産にアクセスすることによって、VMイメージ測定値が役割にマッピングされるかどうかを判定すること
を含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0078】
[0102] 例14は、役割鍵を暗号化することが、
[0103] 役割にマッピングされた1つまたは複数の鍵ラッパー鍵を識別することと、
[0104] 識別された1つまたは複数の鍵ラッパー鍵を用いて役割鍵を暗号化することと
を含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0079】
[0105] 例15は、
[0106] 展開システムで役割を受け取ることと、
[0107] 展開システムで、役割をVMイメージにマッピングする役割−イメージ・マッピングの集合にアクセスすることによって、役割に基づいてVMイメージを入手することと、
[0108] VMイメージを実行環境に展開することと
をさらに含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0080】
[0109] 例16は、
[0110] 実行環境内の測定システムを用いてVMイメージ測定値を生成することと、
[0111] VMイメージ測定値を鍵サービスに提供することと
をさらに含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0081】
[0112] 例17は、VMイメージ測定値を生成することが、
[0113] 測定システムを用いて、VMイメージ測定値を含むハッシュ値を入手するためにVMイメージに対してハッシュ関数を実行すること
を含む、いずれかまたはすべての以前の例のコンピュータ実施される方法である。
【0082】
[0114] 例18は、
[0115] 展開された仮想マシン(VM)イメージによって表され、役割によって識別されるサービスを実行する実行環境と、
[0116] VMイメージ測定値を生成するためにVMイメージにハッシュ関数を適用し、VMイメージ測定値を鍵サービスに提供するように構成された測定システムであって、実行環境は、役割鍵の集合を要求するために鍵サービスに役割およびVMイメージ測定値を提供する、測定システムと、
[0117] 役割鍵の要求された集合を入手するために、鍵サービスからラップされた役割鍵の集合を受け取り、ラップされた役割鍵の集合を暗号化解除する暗号化解除システムであって、実行環境は、要求された役割鍵を使用してサービスを実行する、暗号化解除システムと
を含むコンピューティング・システムである。
【0083】
[0118] 例19は、鍵サービスが、
[0119] サービスを識別する、実行環境からの役割と、実行環境内で展開される仮想マシンイメージを示すVMイメージ測定値とを受け取り、VMイメージ測定値が役割にマッピングされるかどうかを判定し、判定を示す評価信号を生成するポリシ・エンジンと、
[0120] VMイメージ測定値が役割にマッピングされることを示す評価信号に基づいて、役割鍵の集合を入手し、ラップする鍵ラッピング暗号エンジンであって、鍵サービスは、ラップされた役割鍵の集合を実行環境に提供する、鍵ラッピング暗号エンジンと
を含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0084】
[0121] 例20は、
[0122] 役割をVMイメージにマッピングする役割−イメージ・マッピングの集合と、VMイメージを記憶するVMイメージ・リポジトリとを含む展開システムと、役割に基づいて役割−イメージ・マッピングにアクセスすることによってVMイメージ・リポジトリから展開のためにVMイメージを入手するように構成され、VMイメージを実行環境に展開するように構成された展開エンジンと
をさらに含む、いずれかまたはすべての以前の例のコンピューティング・システムである。
【0085】
[0123] 本発明を、構造的特徴および/または方法論的行為に固有の言葉で説明されたが、添付の特許請求の範囲で定義される本発明が、必ずしも上で説明された特定の特徴または行為に限定されないことを理解されたい。そうではなく、上で説明された特定の特徴および行為は、特許請求の範囲を実施する例の形として開示される。