(57)【特許請求の範囲】
【請求項１】
少なくとも１つのコンピュータデバイスと、
前記少なくとも１つのコンピュータデバイスと通信する少なくとも１つのメモリと、
を備えるコンピューティングシステムであって、
前記少なくとも１つのメモリは、コンピュータ可読命令を有し、前記コンピュータ可読命令が前記コンピューティングシステムによって実行される際に、前記コンピューティングシステムは、少なくとも、
インスタンスに対する要求を受け取り、
前記インスタンスに対する前記要求を受け取ることに応えて、前記要求されたインスタンスをインスタンス化し、前記要求されたインスタンスをインスタンス化することはオペレーティングシステムソフトウェアまたはデータをロードすることを含み、
前記ロードされたオペレーティングシステムソフトウェアまたはデータのレコードを生成するために前記インスタンスを監査し、
ロードされたオペレーティングシステムソフトウェアまたはデータの前記レコードと、前記インスタンスのためのコンフィギュレーションと、に基づいてコンフィギュレーション整合性ベリファイヤーを計算し、
前記オペレーティングシステムソフトウェアまたはデータの検証に対する要求に応えて、前記コンフィギュレーション整合性ベリファイヤー、前記監査済みのインスタンス化されたインスタンスに関する情報、および、前記オペレーティングシステムソフトウェアまたはデータが前記インスタンスをインスタンス化するために使用された旨の信頼されるサードパーティ検証としてのロードされたオペレーティングシステムソフトウェアまたはデータの前記レコードを提供する、
コンピューティングシステム。
【請求項２】
前記コンフィギュレーション整合性ベリファイヤーは、チェックサムを含む、
請求項１に記載のシステム。
【請求項３】
前記オペレーティングシステムソフトウェアまたはデータの検証に対する前記要求は、前記コンフィギュレーションのプロバイダまたは前記インスタンスのユーザーから受け取られる、
請求項１に記載のシステム。
【請求項４】
前記コンフィギュレーション整合性ベリファイヤーのプロバイダは、検証サービスによって確証される、
請求項１に記載のシステム。
【請求項５】
前記コンフィギュレーション整合性ベリファイヤーは、公開鍵基盤のデジタル証明書によって確証される、
請求項１に記載のシステム。
【請求項６】
オペレーティングシステムまたはデータの検証を提供する許可は、前記インスタンスの要求者によって許可される、
請求項１に記載のシステム。
【請求項７】
コンピューティングコンフィギュレーションを検証するための方法であって、
コンピューティングリソースに対する要求を受け取り、前記コンピューティングリソースを提供することは、コードまたはデータをロードすることを含み、
前記コンピューティングリソースに対する前記要求を受け取ることに応えて、前記コードまたはデータをロードすることによって前記要求されたコンピューティングリソースをインスタンス化し、
前記ロードされたコードまたはデータのレコードを生成するために前記ロードされたコードまたはデータを監査し、
前記ロードされたコードまたはデータの前記レコードに基づいてコンフィギュレーション整合性ベリファイヤーを計算し、
前記ロードされたコードまたはデータの検証に対する要求に応えて前記コンフィギュレーション整合性ベリファイヤーを送信し、前記コンフィギュレーション整合性ベリファイヤーは、前記ロードされたコードまたはデータの信頼される検証として使用可能である、
方法。
【請求項８】
前記要求は、コンピューティングリソースを提供する複数のコンピュータデバイスを含むコンピューティング環境で受け取られる、
請求項７に記載の方法。
【請求項９】
前記コンピューティングリソースは、仮想マシンである、
請求項７に記載の方法。
【請求項１０】
前記コンフィギュレーション整合性ベリファイヤーは、前記コードまたはデータの前記プロバイダからの前記コードまたはデータの検証に対する要求に応えて、前記コードまたはデータのプロバイダに送信される、
請求項７に記載の方法。
【請求項１１】
前記コンフィギュレーション整合性ベリファイヤーは、前記コードまたはデータの検証に対する前記コンピューティングリソースのユーザーによる要求に応えて、前記コードまたはデータのユーザーに送信される、
請求項７に記載の方法。
【請求項１２】
前記コンフィギュレーション整合性ベリファイヤーは、前記コンピューティングリソースのユーザーが前記コンピューティングリソースにアクセスする前に、前記コードまたはデータのプロバイダに送信される、
請求項７に記載の方法。
【請求項１３】
前記コンフィギュレーション整合性ベリファイヤーは、チェックサムを含む、
請求項７に記載の方法。
【請求項１４】
前記コンフィギュレーション整合性ベリファイヤーは、公開鍵基盤でのデジタル証明書によって確証される、
請求項７に記載の方法。
【請求項１５】
前記コンフィギュレーション整合性ベリファイヤーは、前記コードまたはデータのプロバイダによって認証されるサービスプロバイダに送信される、
請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１３年３月４日に出願された米国特許出願第１３／７８４，２７６号の利益を主張し、その開示は全体として参照することにより本明細書に組み込まれる。
【背景技術】
【０００２】
データセンタは、コンピュータシステム並びに多様なネットワーキング構成要素、記憶構成要素、および他の関係する構成要素を収容する施設である。データセンタは、例えば、遠隔コンピューティングサービスとして企業および個人に対してコンピューティングサービスを提供してよい、または「サービスとしてのソフトウェア」（例えば、クラウドコンピューティング）を提供してよい。データセンタによって提供されるコンピューティングリソースは、例えばデータ処理リソース、データ記憶リソース、データ通信リソース等の多様なタイプのリソースを含んでよい。
【０００３】
データセンタリソースの活用増加を容易にするために、仮想化技術は単一の物理コンピューティングマシンが、接続されているコンピュータユーザーにとって独立したコンピュータマシンとして見え、独立したコンピュータマシンとして動作する仮想マシンの１つまたは複数のインスタンスをホストできるようにしてよい。仮想化を用いると、単一の物理コンピュータデバイスは、動的に仮想マシンを作成、維持、または削除できる。データセンタのカスタマが新しい仮想マシンインスタンスを要求するとき、データセンタは新しいインスタンスを実行するための「スロット」を識別する仮想マシン管理サービスを提供してよい。カスタマは特定のコンフィギュレーションで仮想マシンインスタンスを要求することがある。いくつかの場合、コンフィギュレーションは、カスタマによってまたはサードパーティサプライヤによって提供されるソフトウェアおよびデータを含んでよい。
【０００４】
図面を通して、参照番号は、参照される要素間の一致を示すために再利用されてよい。図面は、本明細書に説明される実施形態を示すために提供され、本開示の範囲を制限することを意図していない。
【図面の簡単な説明】
【０００５】
【図１】本開示に係るコンフィギュレーション検証サービスを提供するための機構を示す図である。
【図２】いくつかの実施形態で使用されてよい例のコンピュータシステムを示す図である。
【図３】本開示に係るコンフィギュレーション検証サービスを提供するための機構を示す図である。
【図４】本開示に係る監査レコードを示す図である。
【図５】本開示に係るコンフィギュレーション検証サービスを提供するための機構を示す図である。
【図６】本開示に係るコンフィギュレーション検証サービスを提供するための例の手順を示すフローチャートである。
【図７】本開示に係るコンフィギュレーション検証サービスを提供するための例の手順を示すフローチャートである。
【発明を実施するための形態】
【０００６】
信頼されるプラットホームの活用および検証のためのハードウェア技術およびソフトウェア技術が概して本明細書に説明される。コンピューティングリソースが既知のコンフィギュレーションまたは所望されるコンフィギュレーションであることを、コンピューティングリソースサービスプロバイダによって確証するためのシステムおよび方法の実施形態が説明される。例えば、仮想マシンが既知のコンフィギュレーションにブートされた旨の確認が提供されてよい。多様な実施形態では、データセンタ等のコンピューティングリソースサービスプロバイダは、ロードプロセスおよびコンフィギュレーションプロセスと対話して信頼されるサードパーティにコンフィギュレーションのバリデーションを与える信頼されるサードパーティとしての機能を果たしてよい。いくつかの実施形態では、サードパーティバリデーションは、データセンタで実行中のプロセスによって提供されてよい。例えば、ブートプロセスと対話して、帯域外で照会できるロード検証サービスまたはコンフィギュレーション検証サービスが実装されてよい。ロード検証サービスまたはコンフィギュレーション検証サービスは、要求されたバーチャルリソースのプロビジョニング、ブートローダをセットアップすること、およびバーチャルリソースと対話することに責任があることがある。ブートローダはロード検証サービスまたはコンフィギュレーション検証サービスと通信して、検出されたコンフィギュレーションを記録または監査してよい。ブートローダによって提供される値は、通常、ライトワンスであり、システムをリブートすることによってだけリセットされる。ロード検証サービスまたはコンフィギュレーション検証サービスはロードされたファイルの暗号チェックサムを生成、および提供してもよい。ロード検証サービスまたはコンフィギュレーション検証サービスはチェックサム値およびブートコンフィギュレーションを認可された関係者に提供し、認可された関係者が独自の検証方法に頼ることなくバーチャルリソースのブートコンフィギュレーションの整合性を決定できるようにする。
【０００７】
図１は、本開示に係るロード検証サービスまたはコンフィギュレーション検証サービスを提供するための機構を含むシステム１００を示す図である。本開示では、ロード検証サービスは、サードパーティ検証サービスまたはコンフィギュレーション検証サービスと呼ばれることもある。該用語は、交互に用いられてよい。図１を参照すると、システム１００は、１つまたは複数のサーバコンピュータ１３０および１４０上で実行してよい仮想マシンインスタンス１１０および１２０を含んでよい。いくつかの実施形態が、システム１００の追加のサーバコンピュータ上でインスタンス化されてよい追加の仮想マシンインスタンスを含むことがあることが理解される。
【０００８】
図１は、コンピュータ１６０および１７０等の１つまたは複数のコンピュータデバイスを含んでよい公衆網１５０も示す。一実施形態に従って、仮想マシンインスタンス１１０は、ゲートウェイ１９０並びにコンピュータ１６０および１７０を介して公衆網１５０のコンピュータユーザー（不図示）にコンピューティングサービスを提供するように構成されてよい。例えば、仮想マシンインスタンス１１０は、例えば企業カスタマの従業員であってよいユーザーのグループに対しリモートアクセス企業アプリケーションのセットを提供してよい。
【０００９】
カスタマ、ユーザー、管理者、またはシステム１００の任意のコンピューティングリソースは、特定のソフトウェアコンフィギュレーションでリソースインスタンスを要求してよい。一実施形態では、ブートプロセスおよびロードプロセスと対話するコンフィギュレーション検証サービス１８０が提供されてよい。要求されたバーチャルリソースはシステム１００によってプロビジョニングすることができ、コンフィギュレーション検証サービス１８０はバーチャルリソースと対話するように構成されてよい。例えば、インスタンスマネージャ（例えば、ハイパーバイザまたはＤｏｍ０）は、ブート中に仮想マシンにロードされたファイルを識別し、検出されたコンフィギュレーションを追跡調査し、ファイルのリストを報告する、またはファイル自体をコンフィギュレーション検証サービス１８０に送信できる。同様に、インスタンスを起動するために使用されるブートローダは、コンフィギュレーション検証サービス１８０と通信して、検出されたコンフィギュレーションを追跡調査し、報告するように構成されてよい。一実施形態では、インスタンスマネージャまたはコンフィギュレーション検証サービス１８０は、ロードされたファイルの監査を提供し、チェックサムを生成してよい。コンフィギュレーション検証サービス１８０は監査結果およびチェックサム値を認可された関係者に提供し、認可された関係者がバーチャルリソースのブートコンフィギュレーションの整合性を検証できるようにする。コンフィギュレーション検証を提供することによって、システム１００はある特定のコンフィギュレーションの信頼される確認を効率的に提供できる。信頼される確認は、データセンタのカスタマによって、データセンタの管理者、特定のソフトウェア製品のプロバイダまたはベンダ、またはサーバ１３０等のデータセンタ内の任意のコンピューティングリソースによって直接的に要求されてよい。サーバ１３０は、それ自体の代わりにまたは他のサーバの代わりに要求を送信してもよい。
【００１０】
本開示の多様な態様は、本開示を説明することを目的とするが、本開示を制限することを目的としない、特定の実施例および実施形態に関して説明される。
【００１１】
データセンタは、多様なタイプのクラウドベースのコンピューティングまたは記憶等の、インターネットを介してアクセス可能な１つまたは複数のサービスを、分散されたクライアントのセットに提供してよい。データセンタは、物理コンピュータサーバおよび仮想コンピュータサーバ、記憶デバイス、ネットワーキング設備等の集合体等の、データセンタによって提供されるサービスを実装し、分散するために必要とされる多様なリソースプールをホストしてよい。また、データセンタは、カスタマがユーザーによって定義されるバーチャルネットワークでコンピューティングリソースを起動してよいそのデータサービスの私設のセクションおよび隔離されたセクションも提供してよい。いくつかの実施形態では、ネットワークインタフェース仮想化サービスの機能性の異なる部分が、プロバイダネットワークの多様なハードウェアプラットホームで実行中のハイパーバイザまたはオペレーティングシステムのモジュール、エッジデバイスのルータソフトウェア等のいくつかの異なる協調するソフトウェア構成要素および／またはソフトウェアデバイスの中に組み込まれてよい。
【００１２】
一実施形態では、データセンタはカスタマに、それぞれがカスタマがリソースと対話できるようにするためのネットワークアドレス可能性を必要とすることがある、仮想化されたコンピュータリソースおよび／または記憶リソースの１つまたは複数のインスタンスを提供してよい。
【００１３】
図２は、本明細書に説明される実施形態が実装されてよい例のコンピューティング環境を示す。図２は、通信ネットワーク２３０を介して（本明細書では単数で「１つのコンピュータ２０２」と、または複数形で「コンピュータ２０２」と呼ばれることがある）ユーザーコンピュータ２０２ａおよび２０２ｂを介して（本明細書では単数で「１人のユーザー２００」と、または複数形で「ユーザー２００」と呼ばれることがある）ユーザー２００ａおよび２００ｂにコンピューティングリソースを提供できるデータセンタ２１０の例を概略で示す図である。データセンタ２１０は、恒久的に、または必要に応じてアプリケーションを実行するためのコンピューティングリソースを提供するように構成されてよい。データセンタ２１０によって提供されるコンピューティングリソースは、データ処理リソース、データ記憶リソース、データ通信リソース等の多様なタイプのリソースを含んでよい。各タイプのコンピューティングリソースは汎用であってよい、またはいくつかの特定のコンフィギュレーションで利用可能であってよい。例えば、データ処理リソースは仮想マシンインスタンスとして利用可能であってよい。インスタンスは、ウェブサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバ等を含むアプリケーションを実行するように構成されてよい。データ記憶リソースは、ファイル記憶デバイス、ブロック記憶デバイス等を含んでよい。
【００１４】
コンピューティングリソースの各タイプまたはコンフィギュレーションは―多くのプロセッサ、大量のメモリ、および／または大きな記憶容量から成る―大型リソース、およびより少ない数のプロセッサ、より少量のメモリ、および／またはより小さい記憶容量から成る−小型リソース等の異なるサイズで使用可能であってよい。カスタマは、ウェブサーバとしてのいくつかの小型処理リソースおよび／または例えばデータベースサーバとしての１つの大型処理リソースを割り当てることを選んでよい。
【００１５】
データセンタ２１０は、（本明細書では単数で「１つの仮想マシンインスタンス２１８」または複数で「仮想マシンインスタンス２１８」と呼ばれることがある）仮想マシンインスタンス２１８ａおよび２１８ｂとして使用可能なコンピューティングリソースを提供する（本明細書では単数で「１つのサーバ２１６」または複数で「サーバ２１６」として呼ばれることがある）サーバ２１６ａおよび２１６ｂを含んでよい。仮想マシンインスタンス２１８は、ウェブサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバ等を含むアプリケーションを実行するように構成されてよい。提供されてよい他のリソースはデータ記憶リソース（不図示）を含み、ファイル記憶デバイス、ブロック記憶デバイス等を含むことがある。
【００１６】
コンピューティングハードウェアに対する仮想化技術の可用性は、カスタマに大規模なコンピューティングリソースを提供し、コンピューティングリソースを複数のカスタマ間で効率的に且つ安全に共用できるようにするための利点を提供してきた。例えばＶＭｗａｒｅまたは他の仮想化システムによって提供される技術等の仮想化技術は、物理コンピュータデバイスによってホストされる１つまたは複数の仮想マシンインスタンスを各ユーザーに提供することによって物理コンピュータデバイスを複数のユーザー間で共用できるようにしてよい。仮想マシンインスタンスは、別個の論理コンピューティングシステムとしての機能を果たすある特定の物理コンピューティングシステムのソフトウェアエミュレーションであってよい。係る仮想マシンインスタンスは、所与の物理コンピューティングリソースを共用する複数のオペレーティングシステムの間で隔離を提供する。さらに、いくつかの仮想化技術は、単一の仮想マシンインスタンス等の１つまたは複数の物理リソースに及ぶバーチャルリソースを、複数の異なる物理コンピューティングシステムに及ぶ複数の仮想プロセッサに提供してよい。
【００１７】
図２を参照すると、通信ネットワーク２３０は、例えば、リンクされたネットワークの公にアクセス可能なネットワークであってよく、おそらくインターネット等の多様な異なる関係者によって運営されてよい。他の実施形態では、通信ネットワーク２３０は、全体的にまたは部分的に非特権ユーザーがアクセスできない、例えば企業ネットワークまたは大学ネットワーク等のプライベートネットワークであってよい。さらに他の実施形態では、通信ネットワーク２３０は、インターネットへおよび／インターネットからのアクセスを備えた１つまたは複数のプライベートネットワークを含んでよい。
【００１８】
通信ネットワーク２３０は、コンピュータ２０２へのアクセスを提供してよい。ユーザーコンピュータ２０２は、ユーザー２００またはデータセンタ２１０の他のユーザーによって活用されるコンピュータであってよい。例えば、ユーザーコンピュータ２０２ａまたは２０２ｂは、サーバ、デスクトップ型パソコンもしくはラップトップ型パソコン、タブレットコンピュータ、無線電話、パーソナルデジタルアシスタント（ＰＤＡ）、電子書籍リーダ、ゲーム機、セットトップボックス、またはデータセンタ２１０にアクセスできる任意の他のコンピュータデバイスであってよい。ユーザーコンピュータ２０２ａまたは２０２ｂは、（例えば、ケーブルモデルまたはデジタル加入者回線（ＤＳＬ）を介して）インターネットに直接的に接続してよい。２つのユーザーコンピュータ２０２ａおよび２０２ｂしか示されていないが、複数のユーザーコンピュータがある可能性があることが理解されるべきである。
【００１９】
また、ユーザーコンピュータ２０２は、データセンタ２１０によって提供されるコンピューティングリソースの態様を構成するために活用されてもよい。この点で、データセンタ２１０は、その動作の態様がユーザーコンピュータ２０２上で実行中のウェブブラウザアプリケーションプログラムを使用することによって構成されてよい、ウェブインタフェースを提供する可能性がある。代わりに、ユーザーコンピュータ２０２で実行中のスタンドアロンアプリケーションプログラムは、コンフィギュレーション動作を実行するためにデータセンタ２１０によって曝露されるアプリケーションプログラミングインタフェース（ＡＰＩ）にアクセスする可能性がある。アプリケーションに更新を配備することを含む、データセンタ２１０の動作を構成するための他の機構も活用される可能性がある。
【００２０】
図２に示されるサーバ２１６は、上述されたコンピューティングリソースを提供するために適切に構成された標準サーバであってよく、１つまたは複数のアプリケーションを実行するためのコンピューティングリソースを提供してよい。一実施形態では、コンピューティングリソースは、仮想マシンインスタンス２１８であってよい。仮想マシンインスタンスの例では、サーバ２１６のそれぞれが、仮想マシンインスタンス２１８を実行できる（本明細書では単数で「１つのインスタンスマネージャ２２０」と、または複数形で「インスタンスマネージャ２２０」と呼ばれることがある）インスタンスマネージャ２２０ａまたは２２０ｂを実行するように構成されてよい。インスタンスマネージャ２２０は、仮想マシンモニタ（ＶＭＭ）または例え仮想マシンインスタンス２１８のサーバ２１６上での実行を可能にするように構成された別のタイプのプログラムであってよい。上述されるように、仮想マシンインスタンス２１８のそれぞれは、アプリケーションのすべてまたは一部を実行するように構成されてよい。
【００２１】
上記に開示されている実施形態が仮想マシンインスタンスのコンテキストを説明しているが、他のタイプの実装が本明細書に開示される概念および技術で活用できることが理解されるべきである。例えば、本明細書に開示される実施形態は、仮想マシンインスタンスを活用しないコンピューティングシステムと活用される可能性もある。
【００２２】
図２に示される例のデータセンタ２１０では、ルータ２１４は、サーバ２１６ａおよび２１６ｂを相互接続するために活用されてよい。ルータ２１４は、通信ネットワーク２３０に接続されるゲートウェイ２２０に接続されてもよい。ルータ２１４は、データセンタ２１０のネットワーク内の通信を、例えば係る通信の特徴（例えば、ソースアドレスおよび／または宛先アドレス、プロトコル識別子等を含むヘッダ情報）、および／またはプライベートネットワークの特徴（例えば、ネットワークトポロジに基づいたルート等）に基づいて適宜にパケットまたは他のデータ通信を転送することによって管理してよい。簡略にするために、この実施例のコンピューティングシステムおよび他のデバイスの多様な態様は、特定の従来の詳細を示すことなく説明されることが理解される。追加のコンピューティングシステムおよび他のデバイスは、他の実施形態で相互接続されてよく、異なる方法で相互接続されてよい。
【００２３】
図２に示されるネットワークトポロジが大いに簡略化されていること、並びにさらに多くのネットワークおよびネットワーキングデバイスが本明細書に開示される多様なコンピューティングシステムを相互接続するために活用され得ることが理解されるべきである。これらのネットワークトポロジおよびデバイスは当業者に明らかとなるべきである。
【００２４】
図２に説明されるデータセンタ２１０が例示的にすぎないこと、および他の実装が活用される可能性があることも理解されるべきである。さらに、本明細書に開示される機能性は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの組合せで実装される可能性があることが理解されるべきである。他の実装は、当業者に明らかになるべきである。サーバ、ゲートウェイ、または他のコンピュータデバイスは、デスクトップコンピュータもしくは他のコンピュータ、データベースサーバ、ネットワーク記憶デバイスおよび他のネットワークデバイス、ＰＤＡ、タブレット、携帯電話、無線電話、ページャ、電子手帳、インターネット機器、（例えば、セットトップボックスおよび／またはパーソナル／デジタルビデオレコーダを使用する）テレビベースのシステム、並びに適切な通信機能を含む多様な他の消費者向け製品を制限なく含む、対話し、説明されているタイプの機能性を実行できるハードウェアまたはソフトウェアの任意の組合せを含んでよいことも理解されるべきである。さらに、示されているモジュールによって提供される機能性は、いくつかの実施形態ではより少ないモジュールで組み合されてよい、または追加のモジュールで分散されてよい。同様に、いくつかの実施形態では、示されているモジュールのいくつかの機能性は、提供されないことがある、および／または他の追加の機能性が使用可能であってよい。
【００２５】
データセンタ２１０によって提供される購入済みのコンピューティングリソースの容量は、需要に応えてスケーリングされてよい。この点で、スケーリングは、（本明細書では「起動する」または「作成する」と呼ばれることもある）インスタンス化する、または需要に応えてコンピューティングリソースのインスタンスを（本明細書では「デスケーリング（de-scaling）」と呼ばれることがある）終了するプロセスを指す。このようにして、データセンタ２１０のカスタマによって購入されるリソースの容量は、オンデマンドでスケーリングできる。
【００２６】
自動スケーリングは、これらのリソースの需要の増加または一時的休止に応えてコンピューティングリソースをスケーリングするための１つの機構である。自動スケーリングは、データセンタ２１０のカスタマがデータセンタ２１０を構成して、カスタマによって定められた条件に従って購入したコンピューティングリソースをスケーリングできるようにする。例えば、規則は、需要の急増等の指定された条件の発生に応えて特定の方法で容量を拡大するために定められてよい。同様に、規則は需要の一時的休止等の他の条件の発生に応えて特定の方法で容量を縮小するために定められる可能性もある。仮想マシンインスタンスを起動するための本明細書に開示される機構は、インスタンスがカスタマによって手動で起動されるとき、またはインスタンスがデータセンタ２１０の自動スケーリング構成要素によって起動されるときに活用される可能性がある。
【００２７】
また、データセンタ２１０は、コンピューティングリソースの新しいインスタンスの配備においてカスタマを支援するように配備構成要素と構成されてもよい。配備構成要素は、新しいインスタンスがどのようにして構成されるべきであるのかを説明するデータを含むコンフィギュレーションをカスタマから受け取ってよい。例えば、コンフィギュレーションは、新しいインスタンスでインストールされる必要がある１つまたは複数のアプリケーションまたはソフトウェア構成要素を指定し、新しいインスタンスで実行されるスクリプトおよび／または他のタイプのコードを提供し、アプリケーションキャッシュがどのように準備される必要があるのかを指定するキャッシュ警告論理、および他のタイプの情報を提供する可能性がある。配備構成要素は、カスタマによって提供されるコンフィギュレーションおよびキャッシュ警告論理を活用して、コンピューティングリソースの新しいインスタンスを起動、構成、および準備する。
【００２８】
多くの場合に、データセンタのカスタマ、またはデータセンタへのソフトウェアもしくはデータのサプライヤが、指定されたコンピューティングコンフィギュレーションが修正されていない、または改ざんされていない旨の検証を要求することがある。例えば、カスタマは、指定された運用システムがロードされている旨の保証を受け取ることを望むことがある。いくつかの実施形態では、カスタマは特定のソフトウェアプリケーションがロードされ、改ざんされていない旨の保証を受け取ることを望むことがある。例えば、クラウドコンピューティングシステムを提供するデータセンタは、係る保証を提供するための有利な位置にいることがある。サービスプロバイダまたはデータセンタは、通常、コンピューティングインフラストラクチャを所有し、運用する。一方、コンテンツプロバイダはサービスプロバイダまたはデータセンタにソフトウェアおよび／またはデータを提供するにすぎないことがある。ソフトウェアおよびコンテンツをデータセンタおよびクラウドベースサービスに分散するコンテンツプロバイダ等の多くのソフトウェア／データサプライヤは、データセンタによって提供されるコンピューティングサービスおよびクラウドベースサービスが、データロード整合性、特定のデータを処理する能力等の特定の基準を満たす旨の保証を要求することがある。
【００２９】
バーチャルサービスを提供するクラウドベースサービスでは、ソフトウェア／データロードプロセスに関するサービスプロバイダの位置が、クライアントによっておよびクライアントのために信頼されるサービスを提供する位置にプロバイダを置く。多くの組織および企業は、コンピューティングサービスおよび情報サービスを提供して自らの日常業務をサポートするために、サービスプロバイダによって提供されるコンピューティングリソースに依存する。コンピューティングサービスの継続的且つ信頼性が高い可用性は、企業の継続中の業務にとって重要であるので、サービスプロバイダによって提供されるコンピューティングサービスは企業にとってきわめて重要である。セキュリティは、サービス信頼性のためだけではなく、カスタマの貴重な情報および専有情報の保護にとっても重要事項である。したがって、カスタマが、データセンタによって提供されるコンピューティングサービスの信頼性およびセキュリティを信頼することができることが必要である。例えば、カスタマが指定されたオペレーティングシステムのインストールを要求する場合、クラウドベースサービスは、指定されたオペレーティングシステムで仮想マシンを起動すると信頼されている。カスタマがクラウドベースサービスにサインアップするときに想定される信頼は、このようにして、サービスプロバイダの評判を利用することによって、サービスプロバイダによって提供される信頼されるサービスを介してサードパーティに対してその信頼を譲渡できるようにするために利用され得る。例えば、サービスプロバイダはカスタマのソフトウェアコンフィギュレーションを監査および検証し、コンフィギュレーションの整合性を検証するサードパーティに対する信任状として使用できる一意の識別子をコンフィギュレーションに与えることができる。サービスプロバイダはこのようにして、サービスプロバイダのリソース上で自らのソフトウェアをホストするカスタマによって提供されるサービスに関して監査人の役割を担う。
【００３０】
一実施形態では、カスタマはインスタンスを要求し、特定のソフトウェアコンフィギュレーションおよびデータが配備されることを要求することがある。データセンタのサーバオペレータは、インスタンスにカスタマの要求したソフトウェアおよびデータをロードする任務を負うことがある。さらに、カスタマは、データセンタが監査証明書を提供することを要求できる。監査証明書は、いくつかの実施形態ではデジタル証明書であってよいが、電子的であるのか、それともそれ以外であるのかに関わりなく任意のタイプの証明書が提供され得ることが理解できる。監査証明書は、次いで何が配備されたのかを検証するためにサードパーティに提示されてよい。サードパーティはサービスプロバイダを信頼しているので、監査証明書は配備されたソフトウェアおよび／またはデータの確認として受け入れられてよい。
【００３１】
したがって、多様な実施形態では、サービスプロバイダは、何が配備されたのかを検証する信頼される関係者の機能を果たし、配備の信頼される検証を提供するための手段を提供してよい。いくつかの実施形態では、サービスプロバイダによるサービスとして運用されるリソースを使用するカスタマは、インスタンスが、サービスプロバイダによってロードされ、検証されるソフトウェアを活用していることをそのユーザーに確認するために上述された監査証明書の仕組みを使用してよい。例えば、デジタルビデオサービスまたはミュージックサービスを提供するカスタマは、ファイルの不正コピーを防止しつつ、ビデオファイルまたはミュージックファイルをレンダリングするためにそのユーザーに専門のメディアプレーヤーソフトウェアを提供してよい。ビデオプロバイダまたはミュージックプロバイダに、ユーザーが改ざんされていない合法的なレンダリングソフトウェアを使用している旨の保証を与えるために、サービスプロバイダは、サービスプロバイダのコンピューティングリソース上でホストされるレンダリングソフトウェアのインスタンスが既知のコンフィギュレーションにロードされ、検証されていることを保証するために、ビデオプロバイダまたはミュージックプロバイダに監査証明書を提供してよい。
【００３２】
このようにして、ソフトウェアおよびデータを配備するコンピューティングハードウェアの所有者／運用者として、サービスプロバイダは、コンフィギュレーション整合性ベリファイヤーを計算する等の検証方法論を使用して、配備されたソフトウェアおよびデータを監査できる。一実施形態では、ロードされたソフトウェアおよびデータのチェックサムが計算されてよい。チェックサムは、伝送または記憶中のデータの変更またはエラーを検出するために使用できる、データのブロックから計算される値である。送信されたデータまたは記憶されたデータの整合性は、チェックサムを計算し直し、それを、インスタンスを起動するために使用されるファイルの既知の状態または予想状態のチェックサムを表す記憶されているチェックサムと比較することによってチェックされる。他の実施形態では、ハッシュ関数および指紋等の他の検証方法論を使用できる。
【００３３】
サービスプロバイダのカスタマは喜んで、信頼されるユーザーにデータをダウンロードする、またはそれ以外の場合、信頼されるユーザーと対話するにすぎない可能性があるので、サービスプロバイダによって提供されるコンフィギュレーション整合性ベリファイヤーは、信頼できるデータ整合性機構を提供することによって係る信頼を提供できる。このようにして、本明細書に説明される信頼モデルは、３つの関係者―サービスプロバイダ（信頼プロバイダ）、サービスプロバイダのカスタマ（信頼要求者）、およびサービスプロバイダのカスタマの製品またはサービスのエンドユーザー―の間で信頼機構を提供してよい。一実施形態では、通常コンピューティングハードウェアを所有し、運用するサービスプロバイダは、カスタマが提供するソフトウェアコンフィギュレーションを受け取ってよい。サービスプロバイダは、チェックサム等のデータ整合性機構を使用してカスタマによって要求されるバーチャルリソースにロードされるものを記録または監視してよい。ソフトウェアコンフィギュレーションがロードされるとき、またはエンドユーザーがバーチャルリソースと対話する前等、それ以外の場合、カスタマによって要求されるとき、チェックサムはサービスプロバイダによってカスタマに提供されてよい。また、サービスプロバイダは、テンプレートおよびロードされたファイルの名前を含む監査ログ等の他の情報を提供してもよい。サービスプロバイダはサードパーティ要求者によって必要とされるすべての検証を提供できるので、ソフトウェアコンフィギュレーションでインスタンスを要求したカスタマは、あらゆるサードパーティ要求者にどのような追加検証も提供する必要はない。
【００３４】
一実施形態では、監査情報はサービスプロバイダからサードパーティ要求者に送信でき、このようにしてサードパーティ要求者が直接的にサービスプロバイダからの監査およびチェックサムの情報に頼ることができるようにする。サードパーティ要求者は、サービスプロバイダから受け取られたチェックサムおよび他の情報が、サードパーティ要求者が予想するものに一致することを検証してよい。いくつかの実施形態では、サードパーティ要求者は、ハードディスク画像、ブートローダ、ブートローダコンフィギュレーション、ハードウェアコンフィギュレーション（例えば、プロセッサおよびメモリ）等の、仮想マシンをインスタンス化するための詳細な情報のセットを提供してよい。
【００３５】
チェックサムは、本明細書に開示される実施形態で使用され得るデータ整合性機構の一実施例である。言及されたように、ハッシュ関数または指紋アルゴリズム等のデータ整合性を検証するためのどのような機構も使用できる。一実施形態では、公開鍵基盤（ＰＫＩ）が使用されてよい。いくつかの実施形態では、信頼されるプラットホームモジュール関数がコンピュータデバイスと含まれてよい。信頼されるプラットホームモジュールは、信頼されるプラットホームモジュール、したがって物理ホストを一意に識別する承認秘密鍵を含んでよい。また、信頼されるプラットホームモジュールは、暗号関数も含んでよい。ハードウェア製造業者は、信頼されるプラットホームモジュールの整合性、および鍵の有効性を保証するために対応する公開鍵に署名してよい。信頼されるプラットホームは、検証を可能にするために信頼されるプラットホームモジュールの機能を利用してよい。例えば、ブート時、ホスト（例えば、インスタンスマネージャ）はブートシーケンスに含まれるソフトウェアのハッシュから成る測定リストを計算してよい（例えば、ＢＩＯＳ、ブートローダ、およびプラットホームを実装するソフトウェア）。測定リストは、ホストの信頼されるプラットホームモジュールの内部に安全に記憶されてよい。コンフィギュレーション検証サービス１８０に対して確認を提供するために、サービスはノンス（例えば、暗号通信に署名するために使用されるシーケンス）を使ってホストにチャレンジしてよい。コンフィギュレーション検証サービス１８０は、信頼されるローカルプラットホームモジュールに、測定リストとノンスの両方を含んだメッセージを作成するように要求してよい。メッセージは、信頼されるプラットホームモジュールの秘密鍵で暗号化されてよい。ホストは、次いで、秘密鍵の対応する公開鍵を使用してメッセージを解読してよいコンフィギュレーション検証サービス１８０にメッセージを送信し、それによってホストを認証してよい。コンフィギュレーション検証サービス１８０は、次いで検証されたリストを記憶し、検証されたリストまたは少なくとも部分的に検証されたリストに基づいた情報をサードパーティ要求者に送信してよい。ノンスが一致すること、および測定リストが、信頼されると見なされるコンフィギュレーションに相当することをチェックすることによって、サードパーティ要求者は、信頼されていないホストでプラットホームを識別できる。信頼されるプラットホームモジュールを使用することによって、コンテンツのプロバイダは、コンテンツが改ざんされていないまたは改変されていない信頼されるデバイスだけにダウンロードされることを保証されてよい。
【００３６】
いくつかの実施形態では、追加の、つまり第四者が、検証の任意選択のまたは追加のレベルを提供するための検証サービスとして使用されてよい。例えば、第四者ベリファイヤーは、サービスプロバイダが確実なロードプロセスおよび検証プロセスを利用しており、信頼されるべきであることを監査し、検証してよい。
【００３７】
図３は、コンフィギュレーション検証サービスが提供される一実施形態を示す。図３は、仮想マシンインスタンス３０２、３０４、３０６、および３０８を含む。図中、仮想マシンインスタンス３０２は、ファイルＡ、Ｂ、Ｇ、およびＨ、並びにチェックサムを含む。仮想マシンインスタンス３０４は、ファイルＡ、Ｂ、Ｃ、Ｄ、Ｅ、およびＦ、並びにチェックサムを含む。仮想マシンインスタンス３０６は、ファイルＡおよびＢ、並びにチェックサムを含む。仮想マシンインスタンス３０８は、ファイルＧ、Ｈ、Ｍ、およびＮ、並びにチェックサムを含む。仮想マシンインスタンス３０２、３０４、３０６、および３０８のそれぞれは、それぞれのソフトウェアコンフィギュレーション３１２、３１４、３１６、および３１８と関連付けられてよい。一実施例として、ソフトウェアコンフィギュレーション３１２は、特定のオペレーティングシステムを含んでよい。
【００３８】
図４は、監査レコード４００の実施例を示す。図４に示される要素またはフィールドのサブセットは、いくつかの実施形態で実装されてよく、すべての実装されたフィールドがポピュレートされるわけではないことがある。監査レコード４００が作成されると、監査レコード４００を一意に識別するために使用されてよい新しい監査ＩＤ４０１が作成されてよい。いくつかの実施形態では、記述フィールド４０２がユーザーまたは管理者によって提供されてよい。監査レコードが使用されなければならないデータセンタネットワークは、いくつかの実施形態での仮想マシンインスタンス等の複数のコンピューティングリソースを含んでよい。音声レコード４００は、係る場合リソースＩＤ４０３を含んでよい。例えば、プロバイダネットワークの運用者は、サービスプラットホームのセット、ネットワークアドレス範囲のセット、他の設備またはリソース、およびそのカスタマによる独占的な使用のためのネットワーク管理機能を別にすることによって特定のカスタマに論理パーティションを確立してよい。
【００３９】
カスタマＩＤ４０４は、リソースを要求したカスタマを識別するために使用されてよい。サードパーティＩＤ４０５は、監査レコード４００のいくらかまたはすべてまたはコンテンツを要求することを許可されてよい１つまたは複数のサードパーティを識別してよい。一実施形態では、サードパーティが監査レコード４００を要求し、受け取ることを許可する方針がカスタマによって作成されてよい。コンフィギュレーション検証サービス１８０は、監査レコードに対する要求を受け取って、方針が要求側サードパーティがレコードを見るまたは受け取ることを許可するかどうかを判断するために方針をチェックしてよい。
【００４０】
監査レコード４００は、コンフィギュレーション検証サービス１８０のデジタルシグナチャ４１０を含んでよい。ファイルリスト４４０は、リソースＩＤ４０３によって識別されたリソースにロードされたファイル名等のデータのリストを含んでよい。例えば、ファイルリスト４４０は、ファイル４５０、４５１、４５２、および４５３を含んでよい。整合性ベリファイヤータイプ４６０は、ファイルリスト４４０のコンテンツを検証するために使用されるデータ整合性方法論のタイプを識別してよい。整合性ベリファイヤーデータ４７０は、整合性ベリファイヤーの値を記憶してよい。
【００４１】
一実施形態では、図４に示されるフィールドのいくつかは、他のオブジェクトに対するリファレンスまたはポインタによって置き換えられてよい。例えば、監査レコード４００に対するデータは別個のデータオブジェクトに記憶されてよく、監査レコード４００はデータオブジェクトに対するリファレンスを記憶してよい。
【００４２】
図５は、本書に説明される実施形態が実装されてよい実施例のコンピューティング環境を示す。図を参照すると、サーバコンピュータ５０２、５１０、５２０、および５３０は、ソフトウェアおよびデータの情報を監査できるように、コンフィギュレーション検証サービス５０４と通信してよい。監査情報は、サーバコンピュータ５０２、５１０、５２０、および５３０の内の１つのデータストアに、またはコンフィギュレーション検証サービス５０４（不図示）の一部であるデータストアに記憶されてよい。コンフィギュレーション検証サービス５０４は、いくつかの実施形態では、図１に示されるコンフィギュレーション検証サービス１８０に対応してよい。サーバコンピュータ５０２は、仮想マシンインスタンス５０６および５０８をホストしてよい。同様に、サーバコンピュータ５１０は、仮想マシンインスタンス５１２をホストしてよく、サーバコンピュータ５２０は仮想マシンインスタンス５２２、５２４、および５２６をホストしてよく、サーバコンピュータ５３０は仮想マシンインスタンス５３２をホストしてよい。
【００４３】
サーバコンピュータ５０２は、コンフィギュレーション検証サービス５０４に対して、仮想マシン５３２が起動される旨の表示を送信してよく、それに応じてコンフィギュレーション検証サービス５０４はコンフィギュレーション検証プロセスを開始してよい。コンフィギュレーション検証サービス５０４は、サーバコンピュータ５０２のロードプロセスおよびコンフィギュレーションプロセスと対話して、インスタンスを起動するために使用されるファイルおよびデータのレコードを生成してよい。さらに、コンフィギュレーション検証サービス５０４は、インストールされたファイルおよびデータに基づいてコンフィギュレーション整合性ベリファイヤーを生成してよい。別のコンフィギュレーションでは、サーバ５０２は仮想マシン５０６または５０８のためにインストールされたファイルおよびデータのレコードを生成し、記憶のためにコンフィギュレーション検証サービス５０４にレコードを送信してよい。コンフィギュレーション検証サービス５０４は、レコード、つまりレコードに基づいた情報をサードパーティに販売できる。一実施形態では、インスタンスマネージャはカスタマからの要求に応えてレコードを生成するように構成できる。例えば、カスタマは、コンフィギュレーション検証サービス５０４が特定のインスタンスのためにレコードを生成する旨のプリファレンスを示すために（コンソールまたはＡＰＩを介して）サービスプロバイダに要求を提出できる。同様に、インスタンスを起動するとき、カスタマは、レコード生成が有効化されることを示すＡＰＩコールにパラメータを追加できる。インスタンスがサービスプロバイダによって起動されるとき、レコードを生成する要求はホストに伝搬することができ、ホストは、同様にコンフィギュレーション検証プロセスを有効化できる。
【００４４】
いくつかの実施形態では、コンフィギュレーション検証に対する要求は、他のサーバコンピュータ５１０、５２０、および５３０の内の１つの代わりにサーバコンピュータ５０２からコンフィギュレーション検証サービス５０４に送信されてよい。他の実施形態では、サーバコンピュータ５０２、５１０、５２０、および５３０の内の１つで実行する、または別のコンピュータデバイスで実行するサービス等のサードパーティは、サーバコンピュータ５０２、５１０、５２０、および５３０の内の１つまたは複数の代わりに要求を送信してよい。
【００４５】
コンフィギュレーション検証サービス５０４は、分散型システムとして実装されてよく、１つまたは複数のサーバコンピュータ、および／または１つまたは複数のデータセンタの他のコンピューティングリソース上に常駐できる。コンフィギュレーション検証サービス５０４は、いくつかの実施形態では、ＶＭＭまたはデータセンタで実行する他の管理ソフトウェアによって管理されてよい。コンフィギュレーション検証サービス５０４は、１つまたは複数の仮想マシンで実行してもよい。
【００４６】
図６は、コンフィギュレーション検証サービスを提供するための実施例の操作手順を示す。一実施形態では、データセンタはカスタマに仮想化コンピュータリソースおよび／または記憶リソースの１つまたは複数のインスタンスを与えてよい。動作６００中、カスタマは、バーチャルインスタンス等のコンピューティングリソースを要求し、特定のソフトウェアコンフィギュレーションおよびデータが配備されることを要求してよい。例えば、カスタマは、実行するアクション（例えば、ＲｕｎＩｎｓｔａｎｃｅｓ）および起動する画像を示す計算サービスにＡＰＩコールを提出してよい。また、カスタマは画像のコンフィギュレーションの検証を要求してもよい。一実施形態では、カスタマはコンフィギュレーション検証情報をサードパーティに提供できるようにするための方針を作成してよい。方針は、サードパーティがコンフィギュレーション監査レコードへのアクセスを許されるのか、それとも単にコンフィギュレーション検証の結果へのアクセスを許されるのかも指定できる。検証コンフィギュレーションおよび／または方針に対する要求は、インスタンス画像に添付されるメタデータとして記憶されてよい。例えば図１に示されるネットコンフィギュレーション検証サービス１８０および／または図５に示されるコンフィギュレーション検証サービス５０４に対応する、上述されたコンフィギュレーション検証サービスが呼び出されてよい。動作６１０で、データセンタ（不図示）で実行中の配置サービスが、データセンタのコンピュータサーバ等の要求されたコンピューティングリソースを提供してよいリソースを識別してよい。
【００４７】
動作６２０で、要求されたコンピューティングリソースはオンラインにされてよい。要求されたコンピューティングリソースが仮想マシンである場合、次いで仮想マシンは識別されたサーバコンピュータでインスタンス化されてよい。動作６２２で、コンフィギュレーション検証メタデータは読み取られ、コンフィギュレーション検証機能性を有効化する要求が起動要求の一部としてホストにプッシュされてよい。動作６２４で、要求されたソフトウェアおよびデータがロードされてよい。一実施形態では、インスタンスの成功した起動は、カスタマにＩｎｓｔａｎｃｅＩＤまたはＩｎｓｔａｎｃｅＩＤにマッピングするなんらかの他のトークンを送信することを含んでよい。いくつかの実施形態では、トークンはＩｎｓｔａｎｃｅＩＤの暗号化されたバージョンであってよい。
【００４８】
動作６２５で、ホストによってロードされているソフトウェアおよびデータは監査できる。例えば、インスタンスマネージャは、インスタンスによってロードされたソフトウェアファイルおよびデータを追跡調査し、情報を使用してレコードを生成できる。動作６３０では、チェックサム等の整合性ベリファイヤーを生成できる。例えば、インスタンスマネージャは、ロードされた各ファイルのために、および／またはブート手順の一部としてインスタンスによってロードされたファイルの集合体のためにチェックサムを生成することができる。代わりに、コンフィギュレーション整合性ベリファイヤーはコンフィギュレーション検証サービスによって生成できる。例えば、ブート動作中にブートするために使用されたファイルは、１つまたは複数のチェックサムを生成できるコンフィギュレーション検証サービスに送信することができる。本明細書に留意されるように、これらの動作のシーケンスは順次である必要はなく、平行して実行できる。例えば、コンフィギュレーション検証サービスは、ソフトウェアおよびデータがロードされている間に、ロードされたソフトウェアおよびデータを監査し、コンフィギュレーション整合性ベリファイヤーを生成してよい。
【００４９】
動作６３５で、検証要求が受け取られたかどうかが決定される。検証要求が受け取られた場合、次いで動作６４０で、ｉｎｓｔａｎｃｅＩＤまたはトークンが検証を要求するサードパーティに提供されてよい。いくつかの実施形態では、サードパーティは検証についてＡＰＩに照会し、ＡＰＩを介してｉｎｓｔａｎｃｅＩＤまたはトークンを渡してよい。カスタマによって生成された方針は、サードパーティが検証情報を受け取ることを許可されているかどうかを判断するためにチェックされてよい。方針に応じて、監査の結果および／またはコンフィギュレーション整合性ベリファイヤーが提供されてよい。
【００５０】
図７はコンピューティングコンフィギュレーションを検証するための実施例の操作手順を示す。図７を参照すると、動作７００が操作手順を始める。動作７００には動作７０２が続いてよい。動作７０２は、バーチャルリソースに対する要求、およびバーチャルリソースに対するコンフィギュレーションを受け取ることを示す。一実施形態では、要求は、コンピューティングリソースを提供する複数のコンピュータデバイスを含むコンピューティング環境で受け取られてよい。さらにおよび任意選択で、コンフィギュレーションは、少なくとも１つのソフトウェアコンフィギュレーションのプロバイダによって整合性検証が要求される少なくとも１つのソフトウェアコンフィギュレーションを含んでよい。
【００５１】
動作７０２には動作７０４が続いてよい。動作７０４は、バーチャルリソースに対する要求を受け取ったことに応えて、要求されたコンフィギュレーションに従って要求されたバーチャルリソースをインスタンス化することを示す。動作７０４には動作７０６が続いてよい。動作７０６は、インスタンス化されたバーチャルリソースを監査してロードされたソフトウェアおよびデータのレコードを生成することを示す。動作７０６には動作７０８が続いてよい。動作７０８は、ロードされたソフトウェアおよびデータのレコード、並びに要求されたコンフィギュレーションに基づいてコンフィギュレーション整合性ベリファイヤーを計算することを示す。
【００５２】
動作７０８には動作７１０が続いてよい。動作７１０は、ロードされたコンフィギュレーションの検証に対する要求が受け取られたかどうかを判断することを示す。要求が受け取られていない場合、次いで動作７１０には動作７０２が続いてよい。
【００５３】
ロードされたコンフィギュレーションの検証に対する要求が受け取られている場合、次いで動作７１０には動作７１２が続いてよい。動作７１２はコンフィギュレーション整合性ベリファイヤーを提供することを示す。一実施形態では、サービスプロバイダは、所与のインスタンスの整合性を照会するためのＡＰＩを露呈し、インスタンスによって提供される機能性を使用する企業等のサードパーティは、インスタンスと対話する前にＡＰＩにクエリーを提出してよい。ＡＰＩと対話するとき、サードパーティはＶｅｒｉｆｙＩｎｓｔａｎｃｅＣｏｎｆｉｇｕｒａｔｉｏｎ等のアクションを指定し、インスタンスのＩｎｓｔａｎｃｅＩＤ、インスタンスの公衆ＩＰアドレス、および／またはパラメータとしてのトークンを渡すことができる。要求が受け取られた後、インスタンスコンフィギュレーションを検証する要求はコンフィギュレーション検証サービスに送ることができる。コンフィギュレーション検証サービスは、サードパーティからの要求を認証し、サードパーティがインスタンスのためのコンフィギュレーション情報を受け取ることを許可されているかどうかを判断できる。例えば、コンフィギュレーション検証サービスは、アイデンティティサービスと通信してサードパーティが十分な特権を有しているかどうかをチェックできる。サードパーティが十分な特権を有する場合、コンフィギュレーション検証サービスはサードパーティにレコードを送信できる。代わりに、コンフィギュレーション検証サービスは「真の」つまり「検証済みの」応答をサードパーティに戻すことができる。このコンフィギュレーションは、ソフトウェアが実際にロードされた内容の詳細がサードパーティに分散されないようにするために使用することができ、方針に指定できる。コンフィギュレーション整合性ベリファイヤーは、ロードされたソフトウェアおよびデータが要求されたコンフィギュレーションを提供する旨の信頼されるサードパーティ検証として使用され得る。例えば、少なくとも１つのソフトウェアコンフィギュレーションのプロバイダによる検証に対する要求に応えて、またはインスタンス化されたバーチャルリソースのユーザーによる少なくとも１つのソフトウェアコンフィギュレーションの検証に対する要求に応えて、コンフィギュレーション整合性ベリファイヤー、および監査済みのインスタンス化されたバーチャルリソースに関する情報、並びにロードされたソフトウェアおよびデータのレコードが、少なくとも１つのソフトウェアコンフィギュレーションのプロバイダに送信される。
【００５４】
本開示の実施形態は以下の節を鑑みて説明できる。
１．コンピューティングシステムであって、
少なくとも１つのコンピュータデバイスと、
少なくとも１つのコンピュータデバイスと通信する少なくとも１つのメモリであって、コンピューティングシステムによる実行時に、コンピューティングシステムに少なくとも
インスタンスに対する要求を受け取らせる、
コンピュータ可読命令をその上に記憶している少なくとも１つのメモリと、
含み、
インスタンスに対する要求を受け取ることに応えて、要求されたインスタンスをインスタンス化することであって、要求されたインスタンスをインスタンス化することはオペレーティングシステムソフトウェアまたはデータをロードすることを含む、要求されたインスタンスをインスタンス化することと、
ロードされたオペレーティングシステムソフトウェアまたはデータのレコードを生成するためにインスタンスを監査することと、
ロードされたオペレーティングシステムソフトウェアまたはデータのレコード、およびインスタンスのためのコンフィギュレーションに基づいてコンフィギュレーション整合性ベリファイヤーを計算することと、
オペレーティングシステムソフトウェアまたはデータの検証に対する要求に応えて、コンフィギュレーション整合性ベリファイヤー、監査済みのインスタンス化されたインスタンスに関する情報、およびオペレーティングシステムソフトウェアまたはデータがインスタンスをインスタンス化するために使用された旨の信頼されるサードパーティ検証としてのロードされたオペレーティングシステムソフトウェアまたはデータのレコードを提供することと、
を含む、コンピューティングシステム。
２．コンフィギュレーション整合性ベリファイヤーがチェックサムを含む、節１に記載のシステム。
３．オペレーティングシステムソフトウェアまたはデータの検証に対する要求が、コンフィギュレーションのプロバイダまたはインスタンスのユーザーから受け取られる、節１に記載のシステム。
４．コンフィギュレーション整合性ベリファイヤーのプロバイダが検証サービスによって確証される、節１に記載のシステム。
５．コンフィギュレーション整合性ベリファイヤーが公開鍵基盤のデジタル証明書によって確証される、節１に記載のシステム。
６．オペレーティングシステムまたはデータの検証を提供する許可が、インスタンスの要求者によって許可される、節１に記載のシステム。
７．コンピューティングコンフィギュレーションを検証するための方法であって、
コンピューティングリソースに対する要求を受け取ることであって、コンピューティングリソースを提供することがコードまたはデータをロードすることを含む、受け取ることと、
コンピューティングリソースに対する要求を受け取ることに応えて、このコードまたはデータをロードすることによって要求されたコンピューティングリソースをインスタンス化することと、
ロードされたコードまたはデータのレコードを生成するためにこのロードされたコードまたはデータを監査することと、
ロードされたコードまたはデータのレコードに基づいてコンフィギュレーション整合性ベリファイヤーを計算することと、
ロードされたコードまたはデータの検証に対する要求に応えてコンフィギュレーション整合性ベリファイヤーを送信することであって、コンフィギュレーション整合性ベリファイヤーがロードされたコードまたはデータの信頼される検証として使用可能である、送信することと、
を含む方法。
８．要求が、コンピューティングリソースを提供する複数のコンピュータデバイスを含むコンピューティング環境で受け取られる、節７に記載の方法。
９．コンピューティングリソースが仮想マシンである、節７に記載の方法。
１０．コンフィギュレーション整合性ベリファイヤーが、コードまたはデータの検証に対するコードまたはデータのプロバイダからの要求に応えて、コードまたはデータのプロバイダに送信される、節７に記載の方法。
１１．コンフィギュレーション整合性ベリファイヤーが、コードまたはデータの検証に対するコンピューティングリソースのユーザーによる要求に応えて、コードまたはデータのユーザーに送信される、節７に記載の方法。
１２．コンフィギュレーション整合性ベリファイヤーが、コンピューティングリソースのユーザーがコンピューティングリソースにアクセスする前に、コードまたはデータのプロバイダに送信される、節７に記載の方法。
１３．コンフィギュレーション整合性ベリファイヤーがチェックサムを含む、節７に記載の方法。
１４．コンフィギュレーション整合性ベリファイヤーが公開鍵基盤でのデジタル証明書によって確証される、節７に記載の方法。
１５．コンピュータ可読命令をその上に記憶している非一過性なコンピュータ可読記憶媒体であって、コンピュータ可読命令が、コンピューティングノードでの実行時に、少なくとも
コードまたはデータのロードを必要とするコンフィギュレーションを含む、コンピューティングリソースに対する要求を受け取ることに応えて、このコードまたはデータを含む要求されたコンフィギュレーションに従って要求されたコンピューティングリソースを提供することと、
ロードされたコードまたはデータを生成するためにコンピューティングリソースを監査することと、
ロードされたコードまたはデータのレコードに基づいてコンフィギュレーション整合性ベリファイヤーを計算することと、
ロードされたコードまたはデータの信頼される検証としてコンフィギュレーション整合性ベリファイヤーを提示することと、
を引き起こす命令を含む、非一過性コンピュータ可読記憶媒体。
１６．この提示することが、このコードまたはデータによって提供される機能性にアクセスする、コンピューティングリソースによる要求に応えている、節１５に記載の一過性のコンピュータ可読媒体。
１７．この提示することが、コードまたはデータのプロバイダにコンフィギュレーション整合性ベリファイヤーを送信することを含む、節１６に記載の非一過性コンピュータ可読媒体。
１８．この提示することが、コードまたはデータのプロバイダによって許可されるサービスプロバイダへコンフィギュレーション整合性ベリファイヤーを送信することを含む、節１６に記載の非一過性コンピュータ可読媒体。
１９．コンピューティングリソースがバーチャルインスタンスである、節１６に記載の非一過性コンピュータ可読媒体。
２０．コンフィギュレーション整合性ベリファイヤーがチェックサムを含む、節１６に記載の非一過性コンピュータ可読媒体。
２１．コンピュータシステムの１つまたは複数のプロセッサによる実行時に、コンピュータシステムに少なくとも
コンピューティングリソースに対する要求を示す識別子を符号化する第１の電子メッセージを受け取ることであって、コンピューティングリソースがコードまたはデータのロードを含む、受け取るように、
電子メッセージの１つを受け取ることに応えて、
このコードまたはデータを含む要求されたコンピューティングリソースのロードと、
ロードされたコードまたはデータのレコードを生成するためのこのロードの監査と、
ロードされたコードまたはデータのレコードに基づいてコンフィギュレーション整合性ベリファイヤーを計算することと、
を生じさせる命令を示す第２の電子メッセージを送信するように、
構成されるアプリケーションプログラミングインタフェースサブシステム
を実装させる、実行可能な命令をその上に集合的に記憶している１つまたは複数の非一過性コンピュータ可読媒体。
２２．第２の電子メッセージが、ロードされたコードまたはデータの検証に対する要求を示す識別子を符号化する第３の電子メッセージに応えてコンフィギュレーション整合性ベリファイヤーを送信することを引き起こすための命令を示し、コンフィギュレーション整合性ベリファイヤーがロードされたコードまたはデータの信頼されるベリフィケーションとして使用できる、節２１に記載の非一過性コンピュータ可読媒体。
【００５５】
前節に説明されるプロセス、方法、およびアルゴリズムのそれぞれは、１つまたは複数のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールで具現化され、コードモジュールによって完全にまたは部分的に自動化されてよい。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスク等の任意のタイプの非一過性コンピュータ可読媒体またはコンピュータ記憶デバイスに記憶されてよい。プロセスおよびアルゴリズムは、アプリケーションに特殊な回路網に部分的にまたは完全に実装されてよい。開示されているプロセスおよびプロセスステップの結果は、例えば揮発性記憶装置または不揮発性記憶装置等の任意のタイプの非一過性コンピュータ記憶装置に恒久的にまたは別の方法で記憶されてよい。
【００５６】
上述された多様な特徴およびプロセスは互いとは無関係に使用されてよい、または多様な方法で組み合されてよい。すべての考えられる組合せおよび副組合せは本開示の範囲内に入ることを目的としている。さらに、特定の方法またはプロセスブロックはいくつかの実装では省略されてよい。本明細書で説明される方法およびプロセスは、任意の特定のシーケンスに制限されず、それに関係するブロックまたは状態は適切である他のシーケンスで実行できる。例えば、説明されるブロックもしくは状態は、明確に開示されている順序以外の順序で実行されてよい、または複数のブロックもしくは状態は単一のブロックもしくは状態で組み合されてよい。実施例のブロックまたは状態は、連続して、並行で、またはなんらかの他の方法で実行されてよい。ブロックまたは状態は、開示されている実施例の実施形態に追加されてよい、または開示されている実施例の実施形態から削除されてよい。本明細書に説明される実施例のシステムおよび構成要素は、説明されているのとは異なって構成されてよい。例えば、要素は、開示されている実施例の実施形態に追加されてよい、開示されている実施例の実施形態から取り除かれてよい、または開示されている実施例の実施形態に比較して配置し直されてよい。
【００５７】
多様な項目が使用されている間メモリ内または記憶領域に記憶されていると示されている、およびこれらの項目またはその部分が、メモリ管理およびデータ整合性のためにメモリと他の記憶装置との間で転送されてよいことも理解される。代わりに、他の実施形態では、ソフトウェアモジュールおよび／またはシステムのいくつかまたはすべては別のデバイス上のメモリ内で実行し、コンピュータ間通信を介して示されているコンピューティングシステムと通信してよい。さらに、いくつかの実施形態では、システムおよび／またはモジュールのいくつかまたはすべては、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、標準集積回路、（例えば、適切な命令を実行し、マイクロコントローラおよび／または組込コントローラを含むことによる）コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）等を含むが、これに限定されるものではないファームウェアおよび／またはハードウェアに少なくとも部分的に等、他の方法で実装されてよい、または設けられてよい。モジュール、システム、およびデータ構造のいくつかまたはすべては、ハードディスク、メモリ、ネットワーク、または適切なドライブによってもしくは適切な接続を介して読み取られる携帯型メディア製品等のコンピュータ可読媒体上に（例えば、ソフトウェア命令または構造化されたデータとして）記憶されてもよい。システム、モジュール、およびデータ構造は、無線ベースの媒体および有線／ケーブルベースの媒体を含むさまざまなコンピュータ可読送信媒体上で（例えば、搬送波または他のアナログ伝搬信号もしくはデジタル伝搬信号の一部として等）生成されたデータ信号として送信されてもよく、（例えば、単一のアナログ信号もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして等）さまざまな形をとってよい。係るコンピュータプログラム製品は、他の実施形態では他の形をとってもよい。その結果、本発明は他のコンピュータシステム構成で実践されてよい。
【００５８】
とりわけ「できる」、「ことがある」、「可能性がある」、「してよい」、「例えば」等の本明細書に使用される条件言語は、特に別段に示されない限り、または使用されている通り文脈内で理解されない限り、概して、特定の実施形態が特定の特徴、要素、および／またはステップを含み、一方他の実施形態は含まないことを伝えることを目的とする。したがって、係る条件言語は、概して、特徴、要素、および／またはステップがどのようにしても１つまたは複数の実施形態のために必要とされること、または１つまたは複数の実施形態が必ずや、オーサー入力またはプロンプトの有無に関わりなく、これらの特徴、要素、および／またはステップが任意の特定の実施形態に含まれる、または実行されるべきであるかを決定するための論理を含むことを暗示することを意図していない。用語「備える」、「含む」、「有する」等は同義語であり、制約なく包含的に使用され、追加の要素、特徴、行為、動作等を排除しない。また、用語「または」は、例えば要素のリストを接続するために使用されるときに、用語「または」はリスト中の要素の１つ、いくつか、またはすべてを意味するようにその包含的な意味で（およびその除外的な意味ではなく）使用される。
【００５９】
特定の実施例の実施形態が説明されてきたが、これらの実施形態は実施例としてのみ提示されており、本明細書に開示される本発明の範囲を制限することを意図しない。したがって、上述の説明における何も、任意の特定の特長、特徴、ステップ、モジュール、またはブロックが必要または不可欠であることを暗示することを意図していない。実際には、本明細書に説明される新規の方法およびシステムはさまざまな他の形式で具現化されてよく、さらに本明細書に説明される方法およびシステムの形での多様な省略、置換、および変更は、本明細書に開示される本発明の精神から逸脱することなく行われてよい。添付特許請求の範囲およびその同等物は、本明細書に開示される本発明の特定の範囲および精神に含まれるように、係る形または修正形態を扱うことを目的とする。
【図１】
0006022718.tif 000002
【図２】
0006022718.tif 000003
【図３】
0006022718.tif 000004
【図４】
0006022718.tif 000005
【図５】
0006022718.tif 000006
【図６】
0006022718.tif 000007
【図７】
0006022718.tif 000008