(57)【特許請求の範囲】
【請求項１】
第１コンピュータに対して証明可能なアイデンティティを確立する方法であって、
第２コンピュータ上で前記第１コンピュータのアカウントを作成するのに応答して、第１データを前記第１コンピュータに送信すると共に、前記第１データを前記第２コンピュータに送信するステップであって、前記第１コンピュータが前記第１データを前記第２コンピュータに送信し、前記第２コンピュータが、前記第１コンピュータから受信した前記第１データを、前記第１コンピュータのアカウントを作成するのに応答して前記第２コンピュータに送信された前記第１データに対して検証する、ステップと、
前記第２コンピュータが前記第１コンピュータから受信した第１データを、前記第１コンピュータのアカウントを作成するのに応答して前記第２コンピュータに送信された前記第１データに対して検証するのに応答して、前記第１コンピュータのアイデンティティのアサーションを含むフルトークンを前記第１コンピュータに送信するステップであって、前記フルトークンが、前記第１コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成される、ステップと、
公開キーを第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第１コンピュータの前記フルトークンと、前記第１コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第１コンピュータの前記アイデンティティを確認する、ステップと
を含む、方法。
【請求項２】
請求項１記載の方法において、
前記第２コンピュータ上で前記第１コンピュータのアカウントを作成するステップは、第４コンピュータによって実行され、前記第４コンピュータが、前記第２コンピュータ上のアカウント、および前記第１コンピュータのアカウントを作成するオーソリティを有し、当該方法が、更に、
前記第４コンピュータによって、前記第２コンピュータに前記第１コンピュータの前記アカウントを作成するように指示するステップを含む、方法。
【請求項３】
前記第１コンピュータに前記フルトークンを送信するステップが、前記第２コンピュータによって実行される、請求項２記載の方法。
【請求項４】
請求項１に記載の方法において、
前記公開キーを前記第３コンピュータに送信する前記ステップであって、前記第３コンピュータが、前記第１コンピュータの前記フルトークンと、前記第１コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第１コンピュータの前記アイデンティティを確認する前記ステップが、
前記フルトークンが前記第２コンピュータによって発行されたので、前記第３コンピュータが、前記フルトークンを信頼することの判定を行うステップであって、前記第３コンピュータが、前記第２コンピュータの一意識別ロケータ（ＵＲＬ）を受信するために前記第２コンピュータのネットワーク・アドレスを用いてドメイン名システムに問い合わせると共に、前記第２コンピュータのＵＲＬを前記第２コンピュータについての証明書に格納されたＵＲＬと比較することを通じて、前記第２コンピュータのアイデンティティを認証している、ステップをさらに備える、方法。
【請求項５】
請求項１に記載の方法において、前記第３コンピュータが、前記第２コンピュータのドメイン名システム名が前記第２コンピュータの証明書の名前と一致することの判定によって、前記第２コンピュータのアイデンティティを認証している、方法。
【請求項６】
請求項１に記載の方法において、前記第２コンピュータによって作成されたフルトークンを前記第１コンピュータに送信するステップが、
前記第２コンピュータ上の前記第１コンピュータのアカウントに格納されたクレデンシャルに対応するクレデンシャルを前記第１コンピュータから受信することに応答して、前記第２コンピュータによって、前記フルトークンを前記第１コンピュータに送信するステップを含む、方法。
【請求項７】
請求項１に記載の方法において、
前記第２コンピュータ上で前記第１コンピュータのアカウントを作成するステップが、第４コンピュータによって実行され、更に、
第５コンピュータによって、第６コンピュータのアカウントを前記第２コンピュータ上で作成するステップと、
前記第６コンピュータのアイデンティティのアサーションを含む第２フルトークンを、前記第６コンピュータに送信するステップであって、前記第２フルトークンが、前記第２コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成される、ステップと
を含み、
前記公開キーを前記第３コンピュータに送信するステップが、
前記公開キーを前記第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第６コンピュータの前記フルトークンと、前記第６コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第６コンピュータの前記アイデンティティを確認する、ステップを含む、方法。
【請求項８】
請求項１に記載の方法であって、更に、
前記公開キーを第７コンピュータに送信するステップであって、その結果、前記第７コンピュータが、既知の結果を算出する前記公開キーを用いて前記第１コンピュータによって提供される前記フルトークンの処理に基づいて、前記第１コンピュータのアイデンティティを確認する、ステップを含む、方法。
【請求項９】
請求項１に記載の方法であって、更に、
前記第２コンピュータ上で第８コンピュータのアカウントを作成するステップと、
前記第８コンピュータのアイデンティティのアサーションを含む第２フルトークンを前記第８コンピュータに送信するステップであって、前記第２フルトークンが、前記第８コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成されるトークンである、ステップと
を含み、
前記公開キーを前記第３コンピュータに送信するステップが、
前記公開キーを前記第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第８コンピュータの前記第２フルトークンと、前記第８コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第８コンピュータの前記アイデンティティを確認するステップを含む、方法。
【請求項１０】
第１コンピュータに対して証明可能なアイデンティティを確立するシステムであって、プロセッサによって実行されると、当該システムに、
第２コンピュータ上で前記第１コンピュータのアカウントを作成するのに応答して、
第１データを前記第１コンピュータに送信すると共に、前記第１データを前記第２コンピュータに送信するステップであって、前記第１コンピュータが前記第１データを前記第２コンピュータに送信し、前記第２コンピュータが、前記第１コンピュータから受信した前記第１データを、前記第１コンピュータのアカウントを作成するのに応答して前記第２コンピュータに送信された前記第１データに対して検証する、ステップと、
前記第２コンピュータが前記第１コンピュータから受信した第１データを、前記第１コンピュータのアカウントを作成するのに応答して前記第２コンピュータに送信された前記第１データに対して検証するのに応答して、前記第１コンピュータのアイデンティティのアサーションを含むフルトークンを前記第１コンピュータに送信するステップであって、前記フルトークンが、前記第１コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成される、ステップと、
公開キーを第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第１コンピュータの前記フルトークンと、前記第１コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第１コンピュータの前記アイデンティティを確認する、ステップと
を少なくとも実行させる命令を有するメモリを備える、システム。
【請求項１１】
請求項１０に記載のシステムにおいて、
前記第２コンピュータ上で前記第１コンピュータのアカウントを作成するステップは、第４コンピュータによって実行され、前記第４コンピュータが、前記第２コンピュータ上のアカウント、および前記第１コンピュータのアカウントを作成するオーソリティを有し、
前記メモリが、更に、前記プロセッサによって実行されると、当該システムに、前記第４コンピュータによって、前記第２コンピュータに前記第１コンピュータの前記アカウントを作成するように指示させる命令を少なくとも有する、システム。
【請求項１２】
前記第１コンピュータに前記フルトークンを送るステップが、前記第２コンピュータによって実行される、請求項１１に記載のシステム。
【請求項１３】
請求項１０記載のシステムにおいて、前記第３コンピュータが、前記第２コンピュータのドメイン名サービス名が前記第２コンピュータの証明書の名前と一致することの判定によって前記第２コンピュータのアイデンティティを認証している、システム。
【請求項１４】
前記証明書が、前記第３コンピュータによって信頼された証明書オーソリティによって発行されている、請求項１３記載のシステム。
【請求項１５】
請求項１０記載のシステムにおいて、前記プロセッサによって実行されると、当該システムに、前記第２コンピュータによって作成されたフルトークンを前記第１コンピュータに送信するステップを少なくとも実行させる前記命令が、更に、当該システムに、
前記第２コンピュータ上の前記第１コンピュータのアカウントに格納されたクレデンシャルに対応するクレデンシャルを前記第１コンピュータから受信することに応答して、前記第２コンピュータによって前記フルトークンを前記第１コンピュータに送信させる、システム。
【請求項１６】
請求項１０記載のシステムにおいて、前記第２コンピュータ上で前記第１コンピュータのアカウントを作成するステップが第４コンピュータで実行され、
前記メモリが、前記プロセッサによって実行されると、当該システムに、
第５コンピュータによって、第６コンピュータのアカウントを前記第２コンピュータ上で作成するステップと、
前記第６コンピュータのアイデンティティのアサーションを含む第２フルトークンを、前記第６コンピュータに送信するステップであって、前記第２フルトークンが、前記第２コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成される、ステップと
を少なくとも実行させる命令を有し、
前記公開キーを前記第３コンピュータに送信するステップが、前記公開キーを前記第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第６コンピュータの前記フルトークンと、前記第６コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第６コンピュータの前記アイデンティティを確認するステップを含む、システム。
【請求項１７】
請求項１０記載のシステムにおいて、前記メモリが更に、前記プロセッサによって実行されると、当該システムに、前記公開キーを第７コンピュータに送信させる命令を少なくとも有し、
前記第７コンピュータが、前記第１コンピュータの前記フルトークンと、前記第１コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第１コンピュータの前記アイデンティティを確認する、システム。
【請求項１８】
請求項１０記載のシステムにおいて、前記メモリが更に、前記プロセッサによって実行されると、当該システムに、
前記第２コンピュータ上で第８のコンピュータのアカウントを作成するステップと、
前記第１コンピュータのアイデンティティのアサーションを含む第２フルトークンを前記第８コンピュータに送信するステップであって、前記フルトークンが、前記第８コンピュータの前記アカウントに基づいて前記第２コンピュータによって作成される、ステップと
を実行させる命令を少なくとも有し、
前記公開キーを前記第３コンピュータに送信するステップが、前記公開キーを前記第３コンピュータに送信するステップであって、前記第３コンピュータが、前記第１コンピュータの前記フルトークンと、前記第１コンピュータの前記アイデンティティと一致する結果を算出する前記公開キーとを組み合わせることの判定に基づいて、前記第８コンピュータの前記アイデンティティを確認するステップを含む、システム。
【請求項１９】
仮想マシン（ＶＭ）についての証明可能なアイデンティティを確立するためのコンピュータ可読ストレージ・デバイスであって、コンピュータによって実行されると、
前記ＶＭについてのトークン・サービスのアカウントを作成するステップと、
前記ＶＭを作成するステップと、
前記ＶＭについてのシークレットを作成するステップと、
前記シークレットを前記ＶＭおよび前記トークン・サービスに送信するステップであって、その結果、
前記ＶＭが前記シークレットを所有していることの証明を前記トークン・サービスに送信し、
前記ＶＭが前記シークレットを所有することを判断するのに応答して、前記トークン・サービスがフルトークンを前記ＶＭに送信し、
前記トークン・サービスの公開キーについての要求を外部コンピュータから受信したのに応答して、前記トークン・サービスが、前記公開キーを前記外部コンピュータに送信し、
前記外部コンピュータが前記公開キーを用いて前記フルトークンを処理することにより前記ＶＭのアイデンティティを認証して前記ＶＭと通信するように、前記ＶＭが前記フルトークンを前記外部コンピュータに送信する
ステップと
を含む動作を前記コンピュータに実行させるコンピュータ可読命令を有する、コンピュータ可読ストレージ・デバイス。
【請求項２０】
請求項１９記載のコンピュータ可読ストレージ・デバイスであって、コンピュータによって実行されると、
前記トークン・サービス上に第２ＶＭのアカウントを作成するステップと、
前記第２ＶＭを提供するステップと、
前記第２ＶＭについての第２シークレットを作成するステップと、
前記第２シークレットを前記第２ＶＭおよび前記トークン・サービスに送信するステップであって、その結果、
前記第２ＶＭが前記第２シークレットを所有することの証明を前記トークン・サービスに送信し、
前記第２ＶＭが前記第２シークレットを所有することを判断するのに応答して、前記トークン・サービスが第２フルトークンを前記ＶＭに送信し、
前記外部コンピュータが前記公開キーを用いて前記第２フルトークンを処理することにより前記第２ＶＭのアイデンティティを認証して前記第２ＶＭと通信するように、前記第２ＶＭが前記第２フルトークンを前記外部コンピュータに送信する
ステップと
を含む動作を前記コンピュータに実行させるコンピュータ可読命令を更に有する、コンピュータ可読ストレージ・デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
一般に、コンピュータはセキュアに通信する。コンピュータは、証明可能なアイデンティティを有し、別のコンピュータは、最初のコンピュータが（例えば、特定企業のログインおよび許可サーバ）であると主張するコンピュータであるかを判定するのにそのアイデンティティを評価することができる。
【０００２】
企業または他の事業体が、仮想マシン（ＶＭ）から成るサーバファームを展開（deploy）することも一般的である。そのようなサーバファームでは、複数のＶＭが均一に構成され、リモートデスクトップまたはリモートアプリケーションなどの、クライアントにリソースを提供する。そのようなサーバファームを管理する過程で、ＶＭは、破壊されて（再）作成され得る。ＶＭは、例えば、ある周知のマシン状態にＶＭを再作成することによって、ある周知のマシン状態のドリフトを防ぐなどの、種々の理由で破壊され、その後再作成され得る。
【０００３】
ＶＭが破壊されて作成されるこのような展開（deployment）では、各ＶＭは、証明可能なアイデンティティを有することができる。ＶＭの展開に対して証明可能なアイデンティティを確立するには多くの問題があり、その一部は、よく知られている。
【発明の概要】
【０００４】
従って、サーバファームのＶＭに対して証明可能なアイデンティティを確立する技術を提供することによって、従来技術が改善されるであろう。
【０００５】
従来技術が有し、且つ本発明によって削減または除去される１つの問題は、ＶＭの証明可能なアイデンティティを確立するのに必要な時間の長さである。従来技術は、実行するのに比較的長い時間が必要である。この時間コストは、ひとたびマシンがセットアップされると、長期間稼動するであろう静的環境では大した問題にはならない。しかしながら、ＭＩＣＲＯＳＯＦＴ  Ａｚｕｒｅのクラウドコンピューティングプラットフォームなどの、ＶＭの展開環境では、ＶＭは、寿命が比較的短く、何度も再作成されるであろう。このような膨大な数の作成イベント、およびＶＭが作成された後の寿命が比較的短いことは、作成されたＶＭに対して証明可能なアイデンティティを確立する際にかかるこの比較的大きいコストが、ＶＭの長い時間を占め、そしてＶＭが完全に機能している状態の時間がより短くなるであろうことを意味する。
【０００６】
本発明の一実施形態において、コントローラは、サーバファームのＶＭを管理する。このコントローラは、例えば、ＭＩＣＲＯＳＯＦＴ  Ａｚｕｒｅのクラウドコンピューティング環境の展開においてＶＭをモニタし、維持し、そして設定（provision）する、ＭＩＣＲＯＳＯＦＴのＡｚｕｒｅファブリックコントローラであってよい。この展開は、サーバファームのクライアントに、クライアントがＶＭの証明可能なアイデンティティをサーバファーム内で確認するのに使用することができるトークンを提供するように構成されたセキュリティトークンサービスも備える。
【０００７】
一実施形態において、コントローラが新しいＶＭのインスタンスを展開するとき、コントローラは、ＶＭがブートするイメージファイルに１つの暗号データ（「シークレット」）を注入する。他の実施形態では、個別に確立されたセキュリティネットワークチャネル経由などでシークレットと通信するか、またはＶＭがシークレットを生成し、そしてセキュアなネットワークチャネルを介してシークレットをコントローラに送信する、他の方法を実装できる。コントローラは、これと同じ暗号データ（または暗号データが秘密キーであり、もう１つの暗号データが公開キーである非対称キーのペアなどの、暗号データに対応する他の暗号データ）を、セキュリティトークンサービスがその新しいＶＭのクレームを生成するのに使用する他の情報と一緒に、セキュリティトークンサービスに送る。コントローラがその新しいＶＭのインスタンスを展開した後、その新しいＶＭは、そのＶＭがシークレットを所有するセキュリティトークンサービス証明をセキュリティプロトコル経由で送り、それに応答して、フルクレームトークン（full claim token）を受信する。
【０００８】
クライアントがサーバファームに接続するとき、クライアントは、接続するＶＭの証明可能なアイデンティティを確立しようと試みる。それを行うために、クライアントは、セキュリティトークンサービスがクレームに署名するのに使用する公開キーをセキュリティトークンサービスから読み出す。クライアントは、ＶＭからフルクレームトークンも受信し、そしてセキュリティトークンサービスからの公開キー、およびＶＭからのフルクレームトークンを使用して、ＶＭのアイデンティティが証明されたか否かを判定する。
【０００９】
本明細書に説明する実施形態例では、クライアントがサーバファームのＶＭに接続する状況を論じる。説明されているように、クライアントは、従来、サーバによって実行されると見なされている役割、つまりＶＭのアイデンティティを認証する役割を果たすものと考えてよい。その役割を逆にして、ＶＭがクライアントのアイデンティティを認証する通信を行う実施形態もある。いずれの種類の実施形態においても、サーバファームのＶＭのセキュアで証明可能なアイデンティティを確立する発明を展開できる。
【００１０】
別の実施形態において、本発明は、コントローラが、単一のアプリケーションインスタンスをサーバファーム内（あるいはアプリケーションインスタンスが、例えば、地理的な制約のために移動する場合、異なるデータセンター内）の別のＶＭホストに再展開するときに実装される。アプリケーションインスタンスは、基礎となるオペレーティングシステムがセキュリティパッチング、または再ブート(rebooting)を経るために、または基礎となるハードウェアが不具合を起こす場合に頻繁に移動する恐れがある。従って、本発明は、空間および時間にわたって耐久性のあるセキュアで証明可能なアイデンティティを提供するので、たとえアプリケーションインスタンスが異なる物理的サーバに強制的に移動されても、セキュアで証明可能なアイデンティティは、変わらないままである。これが、セキュアで証明可能なアイデンティティが基礎となる物理的ハードウェアに縛られていた、従来技術に対する改善である。
【図面の簡単な説明】
【００１１】
サーバファームの仮想マシンに対して証明可能なアイデンティティを確立するシステム、方法、およびコンピュータ可読媒体について、添付図面を参照してさらに説明する。
【図１】本明細書に説明する技術を実施できる汎用コンピューティング環境の例を示す図である。
【図２】証明可能なアイデンティティを有する仮想マシン内で実施できるリモートプレゼンテーションセッションサーバの例を示す図である。
【図３】本明細書に説明する技術を実装することができる仮想マシンホストの例を示す図である。
【図４】本明細書に説明する技術を実装することができる仮想マシンホストの第２の例を示す図である。
【図５】本発明の実施形態の態様が実装されるサーバファームの例を示す図である。
【図６】本発明の実施形態の態様が実装されるサーバファームの別の例を示す図である。
【図７】本発明の実施形態の態様が実装されるサーバファームの別の例を示す図である。
【図８】サーバファームのＶＭに対して証明可能なアイデンティティを確立するサーバファームの動作手順の例を示す図である。
【図９】サーバファームのＶＭの証明可能なアイデンティティを検証するサーバファームのクライアントの動作手順の例を示す図である。
【発明を実施するための形態】
【００１２】
実施形態は、１または複数のコンピュータシステム上で実行できる。図１および以下の説明は、開示された発明の主題を実装できる、適切なコンピューティング環境の簡潔な概説を与えることを意図する。
【００１３】
説明全体に使用されるプロセッサという用語は、ハードウェア割り込みコントローラ、ネットワークアダプタ、グラフィックプロセッサ、ハードウェアベースのビデオ／オーディオコーデックなどの、ハードウェアコンポーネント、およびそのようなハードウェアを動作するのに使用されるファームウェアを含むことができる。プロセッサという用語は、マイクロプロセッサ、特定用途向け集積回路、および／または１または複数の論理プロセッサ、例えば、ファームウェアおよび／またはソフトウェアから読み取られる命令によって構成されたマルチコア汎用処理ユニットの１または複数のコアも含むことができる。論理プロセッサは、メモリ、例えば、ＲＡＭ、ＲＯＭ、ファームウェア、および／またはマスストレージからロードされる機能を実行する働きをする論理を実施する命令によって構成されることができる。
【００１４】
図１を参照すると、例示的な汎用コンピューティングシステムが示されている。汎用コンピューティングシステムは、少なくとも１つのプロセッサまたは処理ユニット２１、システムメモリ２２、およびシステムが動作状態の時に、システムメモリを含む種々のシステムコンポーネントを処理ユニット２１に通信接続するシステムバス２３を含むことができる。システムバス２３は、種々のバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のいずれであってもよい。システムメモリは、リードオンリーメモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含むことができる。コンピュータ２０内の要素間で、起動時などに情報を転送するのに役立つ基本ルーチンを包含する基本入力／出力システム２６（ＢＩＯＳ）は、ＲＯＭ２４に記憶される。コンピュータ２０は、ハードディスク（図示せず）の読み取りおよび書き込みを行うハードディスクドライブ２７、リムーバブル磁気ディスク２９の読み取りおよび書き込みを行う磁気ディスクドライブ２８、およびＣＤ  ＲＯＭまたは他の光媒体などの、リムーバブル光ディスク３１の読み取りおよび書き込みを行う光ディスクドライブ３０をさらに含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、図示したように、それぞれ、ハードディスクドライブインタフェース３２、磁気ディスクドライブインタフェース３３、光ディスクドライブインタフェース３４によってシステムバス２３に接続されている。ドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ２０のコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータから成る不揮発性ストレージを提供する。本明細書に説明する例示的な環境は、ハードディスク、リムーバブル磁気ディスク２９およびリムーバブル光ディスク３１を用いるが、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）などの、コンピュータによってアクセス可能であるデータを記憶することができる、他のタイプのコンピュータ可読媒体も例示的なオペレーティング環境に使用できることを当業者は理解されたい。一般に、そのようなコンピュータ可読記憶媒体をいくつかの実施形態に使用して、本開示の態様を実施するプロセッサ実行可能命令を記憶することができる。
【００１５】
コンピュータ可読命令を備えるいくつかのプログラムモジュールは、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５などの、コンピュータ可読媒体上に記憶されてもよく、それらの可読媒体は、オペレーティングシステム３５、１または複数のアプリケーションプログラム３６、他のプログラムモジュール３７およびプログラムデータ３８を含んでもよい。処理ユニットによって実行されると、コンピュータ可読命令は、以下により詳細に説明するアクションが実行されるようにさせるか、または種々のプログラムモジュールがインスタンス化されるようにさせる。ユーザは、キーボード４０およびポインティングデバイス４２などの、入力デバイスを介してコマンドおよび情報をコンピュータ２０に入力できる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことができる。これらと他の入力デバイスは、システムバスに接続されているシリアルポートインタフェース４６を介して処理ユニット２１に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの、他のインタフェースによって接続されてもよい。モニタ４７、ディスプレイまたは他のタイプの表示デバイスも、ビデオアダプタ４８などのインタフェース経由でシステムバス２３に接続することができる。ディスプレイ４７に加えて、コンピュータは、典型的には、スピーカおよびプリンタなどの、他の周辺出力デバイス（図示せず）を含む。図１の例示的なシステムは、ホストアダプタ５５、小型計算システムインタフェース（ＳＣＳＩ）バス５６、およびＳＣＳＩバス５６に接続された外部ストレージデバイス６２も含む。
【００１６】
コンピュータ２０は、リモートコンピュータ４９などの１または複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作できる。リモートコンピュータ４９は、別のコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードであってよいし、図１にはメモリストレージデバイス５０しか例示されていないが、典型的には、コンピュータ２０に対して上記の要素うちの多くまたはすべてを含むことができる。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含むことができる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００１７】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ２０を、ネットワークインタフェースまたはアダプタ５３を介してＬＡＮ５１に接続することができる。ＷＡＮネットワーキング環境で使用される場合、コンピュータ２０は、典型的には、インターネットなどのワイドエリアネットワーク５２を通じて通信を確立するモデム５４または他の手段を含むことができる。内部または外部であってよいモデム５４を、シリアルポートインタフェース４６経由でシステムバス２３に接続することができる。ネットワーク化環境において、コンピュータ２０に対して示されたプログラムモジュール、またはその一部を、リモートメモリストレージデバイスに記憶できる。図示されたネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段も使用されてよいことが理解されよう。さらに、本開示の様々な実施形態は、特に、コンピュータ化されたシステムに適合するように想定されているが、本明細書では、本開示をそのような実施形態に限定することを全く意図していない。
【００１８】
コンピュータ２０のシステムメモリ２２は、コンピュータ２０によって実行されると、コンピュータ２０が図５または図６の動作手順などの本発明を実装するようにさせる命令を備えることができる。
【００１９】
一般に、図２は、本発明の態様を含むように構成されることができるサーバ環境のハイレベルの概略を示す。サーバ２０４は、図１のコンピュータ２０内で有効であり(effectuate)、システムメモリ２２は、処理ユニット２１によって実行されると、処理ユニット２１が本発明を実装する動作を実行するようにさせる命令を備える。図に関しては、リモートプレゼンテーションセッションサーバを有効にするように構成された回路を含むことができるサーバ２０４が示され、他の実施形態において、サーバ２０４は、リモートプレゼンテーション接続をサポートするように構成された回路を含むことができる。示された例において、サーバ２０４は、セッション１からＮ（Ｎは、１よりも大きい整数）までのような、クライアントに接続する１または複数のセッションを生成するように構成されることができる。簡単に言えば、本発明の実施形態の例のセッションは、一般的に、サーバ２０４のカーネル２１４と対話するように構成された複数のサブシステム（例えば、ソフトウェアコード）によって有効にする動作環境を含むことができる。例えば、セッションは、デスクトップウィンドウなどのユーザインタフェースをインスタンス化するプロセス、ウィンドウ内のマウスの動きをトラックするサブシステム、アイコン上のマウスクリックを、プログラムなどのインスタンスを有効にするコマンドに変換するサブシステムを含むことができる。セッションは、例えば、サーバ２０４がクライアント２０１からネットワーク接続を通じて接続要求を受信するときに、サーバ２０４によってユーザごとに生成されることができる。一般に、接続要求は、例えば、サーバ２０４の回路によって有効にすることができるトランスポート論理２１０によって最初に対処されることができる。トランスポート論理２１０は、いくつかの実施形態において、接続メッセージを受信して、そのメッセージをエンジン２１２に転送するように構成されることができるネットワークアダプタ、ファームウェア、およびソフトウェアを含む。図２に示すように、トランスポート論理２１０は、いくつかの実施形態において、セッションごとにプロトコルスタックインスタンスを含むことができる。一般に、各プロトコルスタックインスタンスは、ユーザインタフェースの出力をクライアントに送り、そしてクライアントから受信されたユーザ入力を、そのセッションと関連付けられたセッションコア２４４に送るように構成されることができる。
【００２０】
引き続き図２の概説に関して、エンジン２１２は、本発明のいくつかの実施形態の例において、セッションの要求を処理し、セッションごとの機能性を判定し、物理的リソースのセットをセッションに割り当てることによってセッションを生成し、そしてセッションのプロトコルスタックインスタンスをインスタンス化するように構成されることができる。いくつかの実施形態において、エンジン２１２は、上述した動作手順のうちのいくつかを実装することができる特化した回路コンポーネントによって有効にすることができる。例えば、その回路は、いくつかの実施形態の例において、メモリ、およびエンジン２１２を有効にするコードを実行するように構成されたプロセッサを含むことができる。図２に示すように、いくつかの事例において、エンジン２１２は、接続要求を受信して、例えば、ライセンスが利用可能であることを判定することができ、そしてその要求に対するセッションが生成される。サーバ２０４が、リモートプレゼンテーション能力を含む、リモートコンピュータである状況において、エンジン２１２は、ライセンスを検査せずに接続要求に応答してセッションを生成するように構成されることができる。図２に示すように、セッションマネージャ２１６は、メッセージをエンジン２１２から受信するように構成されることができ、そのメッセージに応答して、セッションマネージャ２１６は、セッション識別子をテーブルに付加し、メモリをセッション識別子に割り当て、そしてシステム環境変数およびサブシステムプロセスのインスタンスをセッション識別子に割り当てられたメモリ内で生成することができる。
【００２１】
図２に示すように、セッションマネージャ２１６は、セッションコア２４４などのカーネルモード部を含むことができるランタイムサブシステム２４０などの環境サブシステムをインスタンス化することができる。例えば、環境サブシステムは、実施形態において、サービスのいくつかのサブセットをアプリケーションプログラムに顕在化(expose)し、そしてアクセスポイントをオペレーティングシステム２１４のカーネルに提供するように構成されている。実施形態の例において、ランタイムサブシステム２４０は、プロセスおよびスレッドの実行を制御することができ、セッションコア２４４は、スレッドおよびスレッドが実行されるスケジュール時間にメモリを割り当てる要求をカーネル２１４の管理部(executive)に送ることができる。実施形態において、セッションコア２４４は、グラフィック表示インタフェース（ＧＤＩ）２４６、セキュリティシステム２５０、および入力サブシステム２５２を含むことができる。入力サブシステム２５２は、これらの実施形態において、クライアント２０１からセッションと関連付けられたプロトコルスタックインスタンス経由でユーザ入力を受信して、その入力を適切なセッションのセッションコア２４４に送信するように構成されることができる。ユーザ入力は、いくつかの実施形態において、絶対的および／または相対的なマウスの動きコマンド、マウス座標、マウスクリック、キーボード信号、ジョイスティックの動き信号などを示す信号を含む。ユーザ入力、例えば、アイコン上のマウスのダブルクリックは、セッションコア２４４によって受信されることができ、入力サブシステム２５２は、アイコンがそのダブルクリックと関連付けられた座標に位置していることを判定するように構成されることができる。入力サブシステム２５２は、その後、そのアイコンと関連付けられたアプリケーションのプロセスを実行することができるランタイムサブシステム２４０に通知を送るように構成されることができる。
【００２２】
クライアント２０１から入力を受信することに加え、描画コマンドが、アプリケーションおよび／またはデスクトップから受信されて、そしてＧＤＩ２４６によって処理されることができる。ＧＤＩ２４６は、一般に、グラフィカルオブジェクト描画コマンドを生成することができるプロセスを含むことができる。ＧＤＩ２４６は、この実施形態の例において、その出力をリモートプレゼンテーションサブシステム２５４に渡すように構成されることができ、そのシステムにおいてコマンドは、セッションにアタッチされる表示ドライバ用にフォーマットされる。ある実施形態の例において、１または複数の物理的表示を、例えば、リモートプレゼンテーションのセッション状況において、サーバ２０４にアタッチすることができる。このような実施形態の例において、リモートプレゼンテーションサブシステム２５４は、リモートコンピュータシステムの表示ドライバによってレンダリングされる描画コマンドを作成（mirror）し、そして作成された情報をセッションと関連付けられたスタックインスタンス経由でクライアント２０１に送信するように構成されることができる。別の実施形態の例において、サーバ２０４がリモートプレゼンテーションセッションサーバである場合、リモートプレゼンテーションサブシステム２５４は、サーバ２０４に物理的にアタッチされる表示と関連付けられなくてよい仮想表示ドライバを含むように構成されることができ、例えば、サーバ２０４は、ヘッドレスに稼動することもあり得る。リモートプレゼンテーションサブシステム２５４は、この実施形態において、１または複数の仮想表示の描画コマンドを受信し、そして描画コマンドをセッションと関連付けられたスタックインスタンス経由でクライアント２０１に送信するように構成されることができる。本発明の実施形態において、リモートプレゼンテーションサブシステム２５４は、各表示ドライバの表示解像度を判定するように構成されることができ、例えば、仮想表示と関連付けられた仮想表示ドライバの表示解像度または物理的表示と関連付けられた表示ドライバの表示解像度を判定し、そして関連するプロトコルスタックインスタンス経由でクライアント２０１にパケットを送ることができる。
【００２３】
いくつかの実施形態において、セッションマネージャ２１６は、セッションのログオンおよびログオフに対処するように構成されることができるセッションのセッション識別子と関連付けられたログオンプロセス（ログインプロセスと呼ばれることもある）のインスタンスを付加的にインスタンス化することができる。このような実施形態の例において、ログオンプロセスと関連付けられたグラフィカルユーザインタフェースを示す描画コマンドを、クライアント２０１に送信することができ、そこでのクライアント２０１のユーザは、アカウント識別子、例えば、ユーザ名／パスワードの組み合わせ、スマートカード識別子、および／または生体情報をログオン画面に入力することができる。その情報をサーバ２０４に送信し、そしてエンジン２１２およびセッションコア２４４のセキュリティサブシステム２５０に送ることができる。例えば、ある実施形態の例において、エンジン２１２は、ユーザアカウントがライセンスと関連付けられているかどうか判定するように構成されることができ、セキュリティサブシステム２５０は、セッションのセキュリティトークンを生成するように構成されることができる。
【００２４】
図３は、本発明の実施形態の態様を実装することができる仮想マシンホスト（ＶＭＨｏｓｔまたはＶＭホストと呼ばれることもある）の例を示す。ＶＭＨｏｓｔを図１に示したコンピュータ２０などのコンピュータ上で実装することができ、ＶＭＨｏｓｔ上のＶＭは、図２のサーバオペレーティングシステム２１４などの、リモートプレゼンテーションセッションサーバを有効にするオペレーティングシステムを実行できる。
【００２５】
ハイパーバイザマイクロカーネル３０２は、システムメモリのゲストオペレーティングシステムのビューを制限することによってパーティションを強制することができる。ゲストメモリは、ハイパーバイザによって制御されているメモリのパーティションのビューである。ゲスト物理アドレスを、ハイパーバイザによって管理される、システム物理アドレス（ＳＰＡ）、即ち、物理的コンピュータシステムのメモリによって支援（back）することができる。実施形態において、ＧＰＡおよびＳＰＡをメモリブロック、即ち、メモリのうちの１または複数のページに配置することができる。ゲストが自身のページテーブルを使用してブロックに書き込む場合、そのデータは、実際には、ハイパーバイザによって使用されるシステム規模のページテーブルに従って異なるシステムアドレスを有するブロックに記憶される。
【００２６】
示された例において、親パーティションコンポーネント３０４は、いくつかのハイパーバイザの実装において「ドメイン０」と同様であると考えることもでき、仮想化層に提供するためにハイパーバイザマイクロカーネル３０２と対話することができる。この動作環境における親パーティション３０４は、「バックエンドドライバ」と呼ばれることもある仮想化サービスプロバイダ３２８（ＶＳＰ）を使用することによって子パーティション１−Ｎ内で実行するゲストオペレーティングシステムにリソースを提供するように構成されることができる。大まかに言えば、ＶＳＰ３２８は、仮想化サービスクライアント（ＶＳＣ）（「フロントエンドドライバ」と呼ばれることもある）によってハードウェアリソースのインタフェースを多重化し、そして通信プロトコル経由で仮想化サービスクライアントと通信するのに使用されることができる。図に示すように、仮想化サービスクライアントは、ゲストオペレーティングシステムという状況において実行することができる。これらのドライバは、それらがゲストではなく、ハイパーバイザに供給され得るという点において、ゲスト内のその他のドライバとは異なる。
【００２７】
エミュレータ３３４（例えば、仮想化された統合デバイスエレクトロニクスデバイス（ＩＤＥデバイス）、仮想化されたビデオアダプタ、仮想化されたＮＩＣなど）は、親パーティション３０４内で稼動するように構成されることができ、ゲストオペレーティングシステム３２０および３２２に使用可能なリソースにアタッチされる。例えば、ゲストＯＳが仮想デバイスまたは仮想デバイス３０２にマップされたメモリのレジスタにタッチすると、マイクロカーネルハイパーバイザは、要求をインターセプトして、関連するエミューレタに書き込もうと試みるゲストＯＳに値を渡す。
【００２８】
各子パーティションは、ゲストオペレーティングシステム（３２０および３２２）がその上で実行するスレッドを管理してスケジュールすることができる、１または複数の仮想プロセッサ（３３０および３３２）を含むことができる。一般に、仮想プロセッサは、実行可能命令、および物理プロセッサの表現(representation)を特定のアーキテクチャに提供する関連した状態情報である。例えば、１つの仮想マシンは、ＩＮＴＥＬｘ８６プロセッサの特性を有する仮想プロセッサを有することもあれば、一方で別の仮想プロセッサは、ＰｏｗｅｒＰＣプロセッサの特性を有することもある。この例における仮想プロセッサは、仮想プロセッサを有効にする命令が論理プロセッサによって支援されるように、コンピュータシステムの論理プロセッサにマップされることができる。従って、複数の論理プロセッサを含む実施形態において、例えば、他の論理プロセッサがハイパーバイザ命令を実行する間、仮想プロセッサは同時に論理プロセッサによって実行されることができる。パーティション内の仮想プロセッサとメモリの組み合わせを仮想マシンと見なすことができる。
【００２９】
ゲストオペレーティングシステムは、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなどのオペレーティングシステムを任意に含むことができる。ゲストオペレーティングシステムは、ユーザ／カーネルモードの動作を含むことができ、スケジューラ、メモリマネージャなどを含むことができるカーネルを有することができる。一般的に言えば、カーネルモードは、少なくとも特権的プロセッサ命令へのアクセスを許可する実行モードを論理プロセッサ内に含むことができる。各ゲストオペレーティングシステムは、関連するファイルシステムを有することができ、そのファイルシステムに記憶されるターミナルサーバ、電子商取引サーバ、電子メールサーバなどのアプリケーション、およびゲストオペレーティングシステム自体に記憶されるアプリケーションを有することができる。ゲストオペレーティングシステムは、仮想プロセッサ上で実行するスレッドをスケジュールすることができ、そのようなアプリケーションのインスタンスを有効にすることができる。
【００３０】
図４は、本明細書に説明する技術を実装することができるＶＭＨｏｓｔの第２の例を示す図である。図４は、図３のコンポーネントと同様のコンポーネントを示す。しかしながら、この実施形態の例において、ハイパーバイザ３３８は、マイクロカーネルコンポーネント、および図３の仮想化サービスプロバイダ３２８およびデバイスドライバ３２４などの、親パーティションからのコンポーネントを含むことができ、一方で管理オペレーティングシステム３３６は、例えば、ハイパーバイザ３３８を構成するのに使用される構成ユーティリティを包含できる。このアーキテクチャにおいて、ハイパーバイザ３３８は、図３のハイパーバイザマイクロカーネル３０２と同じまたは同様の機能を実行することができる。しかしながら、このアーキテクチャにおいて、ハイパーバイザ３３８は、子パーティション内で実行するゲストオペレーティングシステムにリソースを提供するように構成されることができる。図４のハイパーバイザ３３８をスタンドアロンのソフトウェア製品、オペレーティングシステムの一部にすることができ、マザーボードのファームウェアに組み込むことができるし、またはハイパーバイザ３３８の一部を特定集積回路によって有効にすることができる。
【００３１】
図５は、本発明の実施形態の態様が実装される展開の例を示す図である。図５に示したホスト４１４は、図３または図４のＶＭホスト３００の例を備えることができ、ホスト４１４は、図２のリモートプレゼンテーションセッションサーバ２０４などのリモートプレゼンテーションセッションサーバの機能を実行するＶＭ４０８を備えることができる。展開４００は、ファブリックコントローラ４０２、セキュリティトークンサービス４０４、ホスト層４０６、ＶＭ４０８−１から４０８−Ｎまで、およびＶＭイメージ４１０−１から４１０−Ｎまで、を備える。図示したように、ＶＭ４０８のインスタンスは３つあるが、システム内で本発明を実装するＶＭ４０８のインスタンスはそれよりも多くまたは少なく存在する場合もあることが理解されよう。同様に、図示したように、ＶＭイメージ４１０のインスタンスは３つあるが、システム内で本発明を実装するＶＭイメージ４１０のインスタンスはそれよりも多くまたは少なく存在する場合もあることが理解されよう。ＶＭ４０８のインスタンスは、均一に構成されている。即ち、インスタンスは、オペレーティングシステムの同じバージョンを実行し、且つあるアプリケーションを実行するように構成されている。展開４００内に他のＶＭがあり、ＶＭ４０８で均一に構成されていない場合がある。図示したように、ＶＭ４０８の各インスタンスは、展開４００にアクセスするクライアントコンピュータにリソースを提供するように構成されている。例えば、ＶＭ４０８のインスタンスは、リモートデスクトップまたはリモートアプリケーションをクライアントに提供するように構成され得る。ＶＭ４０８の各インスタンスは、関連付けられたＶＭイメージ４１０を有する（例えば、ＶＭ４０８−１は、関連付けられたＶＭイメージ４１０−ａを有する）。ＶＭに関連付けられたＶＭイメージは、ＶＭを実行する際に使用される命令および／またはデータを出す(bear)記憶媒体を備える。例えば、ＶＭイメージ４１０−１は、ＶＭ４０８−１を実行するゲストオペレーティングシステム（ゲストＯＳ）を備えることができる。ＶＭイメージ４１０は、ＶＭ４０８が実行されると、ＶＭ４０８が、関連付けられたＶＭイメージ４１０をマウントして、それに記憶された命令および／またはデータにアクセスするように構成することによってＶＭ４０８と関連付られる。
【００３２】
ＶＭ４０８のインスタンスは、物理ホスト４１４のホスト層４０６によってホストされる。例えば、ＭＩＣＲＯＳＯＦＴ  Ａｚｕｒｅ環境において、ホスト層４０６は、Ａｚｕｒｅ  ＶＭＨｏｓｔのインスタンスを備えることができる。ホスト層４０６は、物理マシン上で実行し、ＶＭ４０８の複数のインスタンスが物理マシン上で同時に稼動できるように構成されている。ホスト層４０６は、ＶＭ４０８に仮想オペレーティングプラットフォームを提供して、ＶＭ４０８の実行（およびＶＭ４０８内で実行するゲストオペレーティングシステム）をモニタする。
【００３３】
セキュリティトークンサービス４０４は、展開４００内でＶＭおよび他のエンティティ（ファブリックコントローラ４０２など）のアカウントを作成および管理するように構成されている。つまり、セキュリティトークンサービス４０４は、展開４００内で信頼の連鎖(a chain of trust)を拡張して、他のエンティティをその連鎖の一部にすることができる。セキュリティトークンサービス４０４自体は、クライアント４１２が、セキュリティトークンサーバ４０４によって発行されるセキュリティトークンをクライアントが認証するのを許可する情報で構成されているので、信頼されていると見なしてよい。例えば、クライアント４１２は、セキュリティトークンサービス４０４が、トークンに署名してそれをＶＭ４０８に渡すのに使用する証明書で構成されることができる。代替として、クライアント４１２は、セキュリティトークンサービス４０４がトークンに署名して発行するのに使用される証明書のサブジェクト名を所有するように構成され得る。
【００３４】
ＶＭ４０８は、セキュリティトークンサービス４０４からトークンを要求できる。その要求において、ＶＭ４０８は、ＶＭ４０８がファブリックコントローラ４０２によって設定されたシークレットを所有しているという証明を提供することによって自身のアイデンティティをセキュリティトークンサービス４０４に証明する。セキュリティトークンサービス４０４は、ファブリックコントローラ４０２によって作成されたアカウント情報（ＶＭ４０８の公開キーなど）を使用してＶＭ４０８のアイデンティティを認証する。セキュリティトークンサービス４０４は、その後、ＶＭ４０８にトークンを発行する。トークンは、セキュリティトークンサービス４０４の秘密キーを用いて署名される。ＶＭ４０８は、その後、トークンをクライアント４１２に送り、クライアント４１２は、クライアント４１２が備えているセキュリティトークンサービスの証明書に関する情報を使用して、そのトークンがセキュリティトークンサービス４０４によって署名されたことを認証する。トークンを認証すると、クライアント４１２は、ＶＭ４０８のトークンでアサートされたアイデンティティを検査することができる。
【００３５】
本発明を有効にする通信フローの例も図５に示す。通信フロー（１）において、セキュリティトークンサービス４０４は、自身の公開キーをクライアント４１２に送る。これは、セキュリティトークンサービス４０４がクライアント４１２からその公開キーの要求を受信することに応答して発生する場合もある。通信フロー（２）は、ホスト層４０６に命令して、ＶＭ４０８−１を作成し、そして（ＶＨＤ４１０−１の位置にＶＭ４０８−１を記憶して、そこでＶＭ４０８−１がシークレットを探すように構成するなどによって）シークレットをＶＭ４０８−１に渡すようにさせるファブリックコントローラ４０２を示している。通信フロー（３）は、ファブリックコントローラ４０２がそのシークレットをセキュリティトークンサービス４０４に送り、そしてセキュリティトークンサービス４０４に命令してＶＭ４０８−１のアカウントを作成するようにさせることも示している。通信フロー（４）において、ＶＭ４０８−１は、自身がシークレットを持っているという証拠をセキュリティトークンサービス４０４に送る。これは、シークレット自体を備えてもよいが、攻撃者が通信フロー（４）に使用される通信リンクを調べまわる(snoop)ことが考えられ得る状況において、セキュリティトークンサービスシークレットを所有しているというある間接的証拠を備えたほうがよいであろう。例えば、シークレットが数字を備える場合、ＶＭ−１ ４０８−１は、数値演算に入力する時にシークレットを使用し、その後、その数値演算からの出力（それがシークレットであるという証拠）をセキュリティトークンサービス４０４に送る。セキュリティトークンサービス４０４もシークレットを有し、入力時にシークレットを使用する同じ数値演算を実行し、その後、その計算結果をＶＭ−１ ４０８−１から受信した計算結果と比較することもできる。その計算結果が受信した計算結果と一致する場合、セキュリティトークンサービスは、ＶＭ−１ ４０８−１がシークレット、従って展開の有効メンバを有していると判定し、そしてＶＭ−１ ４０８−１が自身のアイデンティティをクライアントに証明するのに使用することができるフルトークン（full token）を、ＶＭ−１ ４０８−１に送ることができる。セキュリティトークンサービス４０４は、ＶＭ−１ ４０８−１がセキュリティトークンサービス４０４の公開キーを用いてフルトークンを復号し、そしてフルトークンがセキュリティトークンサービス４０４によって生成されたこと、およびそのフルトークンが送信中に変更されなかったことを確認できるように、フルトークンを送る前に自身の秘密キーを用いてこのフルトークンに署名できる。通信フロー（５）は、ＶＭ−１ ４０８−１のフルトークンを受信するクライアント４１２を示す。これは、例えば、クライアント４１２がＶＭ−１ ４０８−１のフルトークンの要求をＶＭ−１ ４０８−１に送ることに応答して発生する場合もある。別の実施形態において、ＶＭ−１ ４０８−１は、自身のトークンを（展開のゲートウェアまたは接続ブローカなどの）周知の位置においてブロードキャストあるいは提供でき、クライアント４１２は、この位置からトークンを取得できる。
【００３６】
通信フロー（１）および通信フロー（５）の結果として、クライアント４１２は、セキュリティトークンサービス３０４の公開キーとＶＭ−１ ４０８−１のフルトークンとの両方を有することになる。そうなればクライアント４１２は、公開キーを用いてフルトークンを認証できる（および、その結果、ＶＭ−１ ４０８−１は、自身が有していると主張するアイデンティティを有する）。例えば、入力時に公開キーおよびフルトークンを必要とする数値演算が、クライアント４１２が知っている出力と一致する周知の出力を算出する場合、その出力は、ＶＭ−１ ４０８−１が、自身が有していると主張するアイデンティティを有するのであれば、一致するはずであり、クライアント４１２は、ＶＭ−１ ４０８−１が、自身が有していると主張するアイデンティティを有すると判定することになる。
【００３７】
本発明を、図５のこのような通信フローに厳密に順守することなしに（図６の通信フローを実装することなどによって）有効にできることが理解されよう。例えば、本発明の実施形態において、クライアント４１２は、通信フロー（２）、（３）、（４）または（５）のうちのいずれかが発生するまで、セキュリティトークンサービス４０４から公開キーを受信（本明細書では通信フロー（１）として示されている）しなくてよい。本発明の別の実施形態において、通信フロー（３）（ファブリックコントローラ４０２がシークレットをセキュリティトークンサービス４０４に送る）は、通信フロー（２）（ファブリックコントローラ４０２がシークレットをＶＭ４０８−１に送る）の前に、発生し得る。これらの例は、考えられる通信フローのすべてを列挙をしたものではない。
【００３８】
図６は、図５と同様の、本発明の実施形態の態様が実装される展開の別の例を示す。ファブリックコントローラ４０２ｂ、セキュリティトークンサービス４０４ｂ、ホスト層４０６ｂ、ＶＭ４０８−１ｂから４０８−Ｎｂまで、ＶＨＤ４１０−１ｂから４１０−Ｎｂまで、クライアント４１２ｂ、およびホスト４１４ｂは、それぞれ、図５のファブリックコントローラ４０２、セキュリティトークンサービス４０４、ホスト層４０６、ＶＭ４０８−１から４０８−Ｎまで、ＶＨＤ４１０−１から４１０−Ｎまで、クライアント４１２、およびホスト４１４と同様であってよい。
【００３９】
図６の実施形態と図５の実施形態との主な違いは、図６の実施形態において、セキュリティトークンサービス４０４ｂとＶＭ４０８−１ｂとは、図５のように直接通信しないが、ファブリックコントローラ４０２ｂを中間に使用していることである。実施形態において、このことは、セキュリティトークンサービス４０４ｂが維持する通信リンクがより少なくなるため、有利になるであろう。セキュリティトークンサービス４０４とＶＭ４０８とが直接通信して、ＶＭ４０８にフルトークンを提供する実施形態では、トークンが一定の時間のみ有効であるような場合、ファブリックコントローラ４０２ｂを介して間接的にトークンを送るのに費やされる時間が、時にはそのフルトークンが有効である時間を占めることもあるので、有利になるであろう。
【００４０】
図５の通信フローと同様に、図６の実施形態の通信フローは、必須ではなく、本発明を実装する他の実施形態もあり、その実施形態は、異なる通信フローを使用してよい。
【００４１】
図６に示すように、通信フロー１Ｂにおいて、クライアント４１２ｂは、セキュリティトークンサービス４０４ｂから公開キーを取得し、通信フロー４Ｂにおいて、クライアント４１２ｂは、ＶＭ−１ｂ４０８−１ｂからフルトークンを取得する。これらの通信フロー１Ｂと通信フロー４Ｂとは、図５に説明したように、それぞれ、通信フロー１、通信フロー５と同様であってよい。
【００４２】
通信フロー２Ｂは、セキュリティトークンサービス４０４ｂに命令してＶＭ−１ｂ４０８−１ｂのアカウントを作成するようにさせて、そしてＶＭ−１ｂ４０８−１ｂからフルトークンを受信するファブリックコントローラ４０２ｂを示す。シークレットも作成されて判定される実施形態において、通信フロー２Ｂでは、セキュリティトークンサービス４０４ｂがシークレットを作成するまたは判定して、その後、そのシークレットをファブリックコントローラ４０２ｂに送るか、またはファブリックコントローラ４０２ｂがシークレットを作成するまたは判定して、その後、そのシークレットをセキュリティトークンサービス４０４ｂに送るいずれかを含む。
【００４３】
通信フロー３Ｂは、フルトークンをＶＭ−１ｂ４０８−１ｂに送るファブリックコントローラ４０２ｂを示す。シークレットも実施形態に使用される場合、通信フロー３Ｂは、シークレットをＶＭ−１ｂ４０８−１ｂに送るファブリックコントローラ４０２ｂを含む。ＶＭ−１ｂ４０８−１ｂがフルトークンを有した後、ＶＭ−１ｂ４０８−１ｂは、通信フロー４Ｂにおいてフルトークンをクライアント４１２ｂに送ることができる。通信フロー１Ｂと通信フロー４Ｂとの間で、クライアント４１２ｂは、セキュリティトークンサービス４０４ｂからの（通信フロー１Ｂ）公開キーとＶＭ−１ｂ４０８−１ｂからの（通信フロー４Ｂ）フルトークンとの両方を有する。クライアント４１２ｂは、その後、図５に関して説明したように、その公開キーおよびトークンを使用してＶＭ−１ｂ４０８−１ｂが主張したアイデンティティを認証できる。
【００４４】
図７は、図５および図６と同様の、本発明の実施形態の態様が実装される展開の別の例を示す。ファブリックコントローラ４０２ｃ、セキュリティトークンサービス４０４ｃ、ホスト層４０６ｃ、ＶＭ４０８−１ｃから４０８−Ｎｃまで、ＶＨＤ４１０−１ｃから４１０−Ｎｃまで、クライアント４１２ｃ、およびホスト４１４ｃは、それぞれ、図５のファブリックコントローラ４０２、セキュリティトークンサービス４０４、ホスト層４０６、ＶＭ４０８−１から４０８−Ｎまで、ＶＨＤ４１０−１から４１０−Ｎまで、クライアント４１２、およびホスト４１４と同様であってよい。
【００４５】
図７は、ファブリックコントローラ４０２ｃおよびセキュリティトークンサービス４０４ｃを備える、展開管理（deployment management）４１６ｃも示す。展開管理４１６ｃは、ＶＭを設定すること、および認証のトークンをＶＭに提供することなどを含む、ホスト４１４ｃを含む展開の管理役割に対処する。
【００４６】
図７の実施形態と図５および図６の実施形態との主な違いは、図７の実施形態において、展開管理４１６ｃは、ＶＭ−１ｃ４０８−１ｃを設定し、公開キーをクライアント４１２ｃに送り、そしてフルトークンをＶＭ−１ｃ４０８−１ｃに送るのに対し、例えば、図５では、それらのタスクは、ファブリックコントローラ４０２ｃとセキュリティトークンサービス４０４ｃとに分割されていた。このような実施形態は、単一のシステムまたはプロセスが自身でこれらのタスクに対処する場合に発生し得る。
【００４７】
図５の通信フローと同様に、図７の実施形態の通信フローは、必須ではなく、本発明を実装する他の実施形態もあり、その実施形態は、異なる通信フローを使用してよい。
【００４８】
図７に示すように、通信フロー１Ｃにおいて、クライアント４１２ｃは、展開管理４１６ｃから公開キーを取得する。これは、図５の通信フロー１においてクライアント４１２ｃがセキュリティトークンサービス４０４から公開キーを取得するやり方と同様の方法で発生し得る。図７にさらに示すように、通信フロー３Ｃにおいて、クライアント４１２ｃは、ＶＭ−１ｃ４０８−１ｃからフルトークンを取得する。これは、図４Ａの通信フロー５においてクライアント４１２ｃがＶＭ−１ ４０８−１からフルトークンを取得するやり方と同様の方法で発生し得る。
【００４９】
図７に示すように、通信フロー２Ｃにおいて、展開管理４１６ｃは、ＶＭ−１ｃ４０８−１ｃを設定し（それを行わせる命令をホスト４１４ｃに送るなどによって設定する）、そしてさらに、この設定する（provisioning）動作の一部として、ＶＭ−１ｃ４０８−１ｃが自身のアイデンティティをクライアント４１２ｃなどのクライアントに証明するのに使用できるフルトークンをＶＭ−１ｃ４０８−１ｃに送る。
【００５０】
通信フロー１Ｃ、２Ｃ、および３Ｃが発生した後、クライアント４１２ｃは、（通信フロー１Ｃにおいて取得される）展開管理４１６ｃからの公開キーと（通信フロー３Ｃにおいて取得される）ＶＭ−１ｃ４０８−１ｃからのフルトークンとの両方を有する。クライアント４１２ｃは、その後、図５に関して説明したように、その公開キーおよびトークンを使用してＶＭ−１ｃ４０８−１ｃが主張したアイデンティティを認証できる。
【００５１】
図８は、展開したＶＭに対して証明可能なアイデンティティを確立する展開の動作手順の例を示し、例えば、図５から図７までに示したシステムに実装できる。図８の動作手順は、ファブリックコントローラ４０２などの、ファブリックコントローラによって実行される。図８の動作手順は、動作５００から開始し、動作５００は、動作５０２に進む。動作５０２は、第２のコンピュータ（セキュリティトークンサービス４０４など）上で第１のコンピュータ（ＶＭ−１ ４０８−１など）のアカウントを作成することを示す。動作５０２は、図５の通信フロー（３）または図６の通信フロー（２Ｂ）と同様の方法で有効にできる。
【００５２】
第２のコンピュータ上で第１のコンピュータのアカウントを作成することが第４のコンピュータ（ファブリックコントローラ４０２など）によって実行され、そこでの第４のコンピュータが第２のコンピュータ上でアカウントおよび他のコンピュータのアカウントを作成する権限を有する実施形態において、動作５０２は、第４のコンピュータによって第２のコンピュータが命令されて、第１のコンピュータのアカウントを作成するようにさせることを含むことができる。例えば、図５において、ファブリックコントローラ４０２は、セキュリティトークンサービス４０４を用いたアカウントを有し、および他のコンピュータのアカウントを作成する能力を有する。
【００５３】
動作５０４は、第１のコンピュータが通信ネットワーク上で通信するように準備することを示す。設定すること（provisioning）は、ファブリックコントローラが、ＶＭを作成することなどによって、第１のコンピュータ／ＶＭが動作するように準備すること、およびファブリックコントローラの機能を遂行する適切なデータおよびソフトウェアで構成されることを備えることができる。
【００５４】
動作５０６は、第１のコンピュータに、第１のコンピュータのアイデンティティのアサーションを備えるフルトークンを送ることを示し、そのフルトークンは、第１のコンピュータのアカウントに基づくコンピュータである、第２のコンピュータによって作成される。そのトークンは、第１のコンピュータのアイデンティティのクレームを備えることができる。実施形態において、動作５０６は、第２のコンピュータ（セキュリティトークンサービス４０４）によって実行される。これは、図５の通信フロー（４）と同様であってよい。
【００５５】
実施形態において、動作５０６は、第２のコンピュータ上の第１のコンピュータのアカウントに記憶されたクレデンシャルに対応する第１のコンピュータからクレデンシャルを受信することに応答して、第２のコンピュータによってフルトークンを第１のコンピュータに送ることを備える。例えば、ファブリックコントローラ４０２が、ＶＭ−１ ４０８−１を設定し、さらにセキュリティトークンサービス４０４を用いてＶＭ−１ ４０８−１のアカウントを作成する時、ファブリックコントローラは、ＶＭ−１ ４０８−１とセキュリティトークンサービス４０４との両方にクレデンシャル（シークレットと呼ばれることもある）を送ることができる。その後、ＶＭ−１ ４０８−１が、アカウントのフルトークンを受信するのを許可されていることをセキュリティトークンサービス４０４に証明したいと望む場合、ＶＭ−１ ４０８−１は、クレデンシャルを（セキュリティトークンサービス４０４の公開キーを用いてクレデンシャルを符号化することなどによって）セキュリティトークンサービス４０４に提供できる。
【００５６】
動作５０８は、公開キーを第３のコンピュータ（クライアント４１２など）に送ることを示し、そこでの第３のコンピュータは、第１のコンピュータのフルトークンと公開キーとの組み合わせが、第１のコンピュータのアイデンティティと一致する結果を算出する判定に基づいて第１のコンピュータのアイデンティティを確認する。これは、図５の通信フロー（１）および（５）、図６の通信フロー（１Ｂ）および（４Ｂ）、または図７の通信フロー（１Ｃ）および（３Ｃ）を備えることができる。クライアント４１２が、セキュリティトークンサービス４０４の公開キーとＶＭ−１ ４０８−１からのフルトークンとの両方を取得する時、クライアント４１２は、第１のコンピュータのアイデンティティと一致するという周知の結果を算出する公開キーを用いてセキュアなトークンを処理することによって、ＶＭ−１ ４０８−１のアイデンティティを認証できる。
【００５７】
実施形態において、動作５０８は、フルトークンが第２のコンピュータによって発行されたので、第３のコンピュータがそのフルトークンを信頼すると判定することを備え、第３のコンピュータは、第２のコンピュータのアイデンティティを認証している。第３のコンピュータは、第２のコンピュータのドメイン名サービス名（ＤＮＳを介して提供される名前など）が、第２のコンピュータの証明書の名前（ＳｅｃｕｒｅＳｏｃｋｅｔｓＬａｙｅｒ−ＳＳＬ−ｃｅｒｔｉｆｉｃａｔｅなど）と一致すると判定することによって第２のコンピュータのアイデンティティを認証したかもしれない。クライアント４１２が信頼するフルトークンのすべては、クライアントが信頼するエンティティからＶＭ−１ ４０８−１まで拡張する信頼の連鎖に基づいてよい。この連鎖の最上は、ドメインネームシステム（ＤＮＳ）であってよい。即ち、クライアント４１２がドメイン名ｔｏｋｅｎｓｅｒｖｉｃｅ，ｃｏｎｔｏｓｏ，ｃｏｍを有するコンピュータをＤＮＳにクエリして、セキュリティトークンサービス４０４が対象になる場合、その情報は、正確である。クライアント４１２は、次に、セキュリティトークンサービス４０４によって提供された証明書（証明書オーソリティによる発行か、または自己発行のもの）が、ＤＮＳを介して取得されたセキュリティトークンサービスの名前と同じ名前を有していると認証できる。クライアント４１２は、次に、セキュリティトークンサービス４０４が、有するとアサートしているアイデンティティを有していることを信頼できる。この信頼の連鎖は、次にＶＭ−１ ４０８−１まで拡張し、そこでＶＭ−１ ４０８−１は、すでに信頼されているセキュリティトークンサービス４０４の公開キーを用いて認証され得るフルトークンをクライアント４１２に提示することができる。
【００５８】
動作５１０は、実施形態において、第２のコンピュータ上で第１のコンピュータのアカウントを作成することが第４のコンピュータによって実行されることであって、および第５のコンピュータ（ファブリックコントローラ４０２の第２のインスタンスなど）によって第６のコンピュータ（ＶＭ−２ ４０８−２など）のアカウントを第２のコンピュータ上で作成することと、第５のコンピュータによって第６のコンピュータを設定することと、第６のコンピュータに、第２のコンピュータによって作成された第２のフルトークンを送ることをさらに備えることと、および公開キーを第３のコンピュータに送ることであって、第２の周知の結果を算出する公開キーを用いて第２のコンピュータによって提供されるフルトークンの処理に基づいて、第３のコンピュータが、第６のコンピュータのアイデンティティを確認するように、公開キーを第３のコンピュータに送ることを備えることを示す。複数のファブリックコントローラ４０２が展開内に共存し、各ファブリックコントローラは、セキュリティトークンサービス４０４と通信して、ＶＭ４０８の代わりに設定するフルトークンを取得する場合もあり得る。動作５１０において、第２のファブリックコントローラ４０２は、第２のＶＭ（ＶＭ−２ ４０８−２など）を設定して、セキュリティトークンサービス４０４からこの第２のＶＭ４０８の第２のフルトークンを取得する。
【００５９】
動作５１２は、周知の結果を算出する公開キーを用いて第１のコンピュータによって提供されるフルトークンを処理することに基づいて、第７のコンピュータが、第１のコンピュータのアイデンティティを確認するように、公開キーを第７のコンピュータ（クライアント４１２の第２のインスタンスなど）に送ることを示す。複数のクライアントは、ＶＭ４０８によって提供された同じフルトークン、ならびにセキュリティトークンサービス４０４によって提供された同じフルトークンを使用して、ＶＭ（ＶＭ−１ ４０８−１など）のアイデンティティを認証できる。
【００６０】
動作５１４は、第２のコンピュータ上で第８のコンピュータ（ＶＭ−Ｎ４０８−Ｎなど）のアカウントを作成することと、第８のコンピュータを設定することと、第８のコンピュータに、第２のコンピュータによって作成された第２のフルトークンを送ることと、および公開キーを第３のコンピュータに送ることであって、第２の周知の結果を算出する公開キーを用いて第８のコンピュータによって提供されるフルトークンの処理に基づいて、第３のコンピュータが、第８のコンピュータのアイデンティティを確認するように、公開キーを第３のコンピュータに送ることを備えることを示す。複数のＶＭがそれら自身のフルトークンで設定される場合、それらのトークンのそれぞれは、クライアントがセキュリティトークンサービス４０４の同じ公開キー使用することによって、認証され得る。動作５１４に示すように、単一のクライアント４１２は、セキュリティトークンサービス４０４からの１つの公開キーを使用して、２つのフルトークン、即ち、１つはＶＭ−１ ４０８−１のフルトークン、および１つはＶＭ−Ｎ４０８−Ｎのフルトークンを認証する。
【００６１】
動作手順は、動作５１６で終了する。本発明の実施形態には、図８の動作をすべて実装しているのではない、またはそれらの動作（またはそれらの動作のサブセット）を図示されたものとは異なる順序で実装するものがあることが理解されよう。例えば、本発明の実施形態は、動作５００、５０２、５０４、５０６、５０８、および５１６を実装してよいし、または本発明の実施形態は、動作５０２の前に動作５０４を実装してよい。
【００６２】
図８および図９に関して、図５から図７までの要素がすべて例に列挙されているわけではないことが理解されよう。例えば、図５のクライアント４１２がタスクを実行すると言われる場合、そのタスクは、図６のクライアント４１２ｂによって実行されてもよいし、図７のクライアント４１２ｃによって実行されてもよいことが理解されよう。
【００６３】
図９は、例えば、図５から図７までに示したシステムに実装され得る、展開したＶＭの証明可能なアイデンティティを検証する展開したクライアントの動作手順の例を示す。図９の動作手順は、例えば、図５のクライアント４１２によって実装されてよく、そこで図５のファブリックコントローラ４０２は、ファブリックコントローラ４０２の動作手順を実装する。図９の動作手順は、動作６００から開始し、動作６００は、動作６０２に進む。動作６０２は、トークンサービスから公開キーを取得することを示す。動作６０４は、図５の通信フロー（１）、図６の通信フロー（１Ｂ）、または図７の通信フロー（１Ｃ）と同様の方法で発生し得る。
【００６４】
動作６０４は、コンピュータからフルトークンを取得することを示し、フルトークンは、コンピュータのアイデンティティを示す。動作６０４は、図５の通信フロー（５）、図６の通信フロー（４Ｂ）、または図７の通信フロー（３Ｃ）と同様の方法で発生し得る。
【００６５】
動作６０６は、周知の結果を算出する公開キーを用いてフルトークンを処理することによってコンピュータのアイデンティティを認証することを示す。動作６０２におけるセキュリティトークンサービス４０４の公開キー、および動作６０４におけるＶＭ−１ ４０８−１のフルトークンを取得して、クライアント４１２は、公開キーとフルトークンとの両方を有することになり、そしてクライアント４１２が信頼するセキュリティトークンサービス４０４からの公開キーを使用して、フルトークン（従って、ＶＭ−１ ４０８−１のアイデンティティ）を認証できる。
【００６６】
動作６０８は、セキュアな関係でコンピュータと通信することを示す。動作６０６において、クライアント４１２は、ＶＭ−１ ４０８−１が自身をアサートしているＶＭ−１ ４０８−１のアイデンティティを認証した。セキュリティトークンサービス４０４を介してＶＭ−１ ４０８−１まで拡張している信頼の連鎖に基づいて、クライアント４１２は、ＶＭ−１ ４０８−１を信頼でき、通信する時に（ＶＭ−１ ４０８−１がクライアント４１２にリモートプレゼンテーションセッションを提供する場合など）この通信は、セキュアまたは信頼した関係において発生し得る。
【００６７】
図９の動作手順は、動作６１０で終了する。
【００６８】
本発明は、種々の図面に示したように、好適な態様と関連して説明されているが、本発明の範囲から逸脱せずに本発明の同じ機能を実行するために、他の同様の態様が使用されてもよいし、説明した態様に変更および付加がなされてもよいことを理解されたい。従って、本発明は、単一の態様に限定されるべきではなく、むしろ添付の特許請求の範囲に従って幅広く解釈されるものである。例えば、本明細書に説明した種々の手順は、ハードウェアまたはソフトウェア、または両方を組み合わせたものに実装されてよい。従って、開示された実施形態の方法および装置、またはそれらのある態様または一部は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、またはその他のマシン可読記憶媒体などの、有形媒体に具体化されるプログラムコード（即ち、プログラム命令）の形をとってよい。そのプログラムコードがロードされ、そしてコンピュータなどのマシンによって実行されると、そのマシンは、開示された実施形態を実施するように構成された装置になる。本明細書に明示的に記載された特定の実装に加え、本明細書に開示された仕様を考慮することによって他の態様および実装も当業者には明らかであろう。仕様および例示された実装は、単に例と見なされることを意図する。
【図１】
0005934224.tif 000002
【図２】
0005934224.tif 000003
【図３】
0005934224.tif 000004
【図４】
0005934224.tif 000005
【図５】
0005934224.tif 000006
【図６】
0005934224.tif 000007
【図７】
0005934224.tif 000008
【図８】
0005934224.tif 000009
【図９】
0005934224.tif 000010