(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-27
(54)【発明の名称】仮想セッション要求をバリデーションするためのシステムおよび方法
(51)【国際特許分類】
G06F 21/44 20130101AFI20220720BHJP
H04L 9/08 20060101ALI20220720BHJP
H04L 9/32 20060101ALI20220720BHJP
【FI】
G06F21/44
H04L9/08 F
H04L9/32 200B
H04L9/32 200F
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021558663
(86)(22)【出願日】2020-04-16
(85)【翻訳文提出日】2021-11-29
(86)【国際出願番号】 US2020028448
(87)【国際公開番号】W WO2020236355
(87)【国際公開日】2020-11-26
(32)【優先日】2019-05-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-04-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ゲオルギー モンチロフ
(72)【発明者】
【氏名】ヒュバート ディヴォー
(72)【発明者】
【氏名】ロベルト バルデス
(72)【発明者】
【氏名】レオ シー.シングルトン ザ フォース
(72)【発明者】
【氏名】ポール ブラウン
(72)【発明者】
【氏名】ケヴィン ウッドマンズィー
(57)【要約】
コンピューティングシステムは、複数のクライアントデバイスに対してパブリッシュリソースエンタイトルメントを格納し更新するように構成されたコンピューティングデバイスを含む。システムは、クライアントデバイスからの接続要求を受信し、接続要求が、クライアントデバイスに対するパブリッシュリソースエンタイトルメントに基づいて発行された接続リースを含み、コンピューティングデバイスからの接続リースのバリデーションを要求し、コンピューティングデバイスからの接続リースのバリデーションに応答して、パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスをクライアントデバイスに提供するように構成された複数の仮想配信アプライアンスをさらに含むことがある。コンピューティングデバイスは、仮想配信アプライアンスからのバリデーション要求に応答して、更新されたパブリッシュリソースエンタイトルメントと接続リースを比較することに基づいて仮想セッション要求をバリデーションすることもある。
【特許請求の範囲】
【請求項1】
コンピューティングデバイスにおいて、複数のクライアントデバイスに対してパブリッシュリソースエンタイトルメントを格納し更新することと、
前記クライアントデバイスから接続要求を受信し、前記接続要求は、前記クライアントデバイスに対する前記パブリッシュリソースエンタイトルメントに基づいて発行された接続リースを含み、
前記コンピューティングデバイスからの前記接続リースのバリデーションを要求する
ために複数の仮想配信アプライアンスを使用することと、
前記コンピューティングデバイスにおいて、前記仮想配信アプライアンスからのバリデーション要求に応答して、前記更新されたパブリッシュリソースエンタイトルメントと前記接続リースを比較することに基づいて前記仮想セッション要求をバリデーションすることと、
前記仮想配信アプライアンスにおいて、前記コンピューティングデバイスからの接続リースのバリデーションに応答して、前記パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスを前記クライアントデバイスに提供することと
を備える方法。
【請求項2】
前記コンピューティングデバイスにおいて、前記仮想配信アプライアンスに対して事前認定されたバリデーションを生成することと、前記仮想配信アプライアンスにおいて、前記事前認定されたバリデーションに基づいて、前記コンピューティングデバイスの可用性なしに、要求された仮想セッションへのアクセスを少なくとも1つのクライアントデバイスに提供することとをさらに備える、請求項1に記載の方法。
【請求項3】
前記仮想配信アプライアンスは、プールに配列され、および、前記方法は、前記プールにて与えられた仮想配信アプライアンスにおいて、前記要求された仮想セッションへのアクセスを前記少なくとも1つのクライアントデバイスに提供した後、前記コンピューティングデバイスの可用性なしに、仮想セッションへの他のクライアントデバイスのアクセスを提供することを停止することをさらに備える、請求項2に記載の方法。
【請求項4】
前記与えられた仮想配信アプライアンスを再プロビジョニングして、前記要求された仮想セッションが閉じられた後、前記事前認定されたバリデーションを生成することをさらに備える、請求項3に記載の方法。
【請求項5】
前記仮想配信アプライアンスにおいて、前記コンピューティングデバイスの可用性なしに、他の仮想配信アプライアンスへの前記接続要求を拒否しリダイレクトすることをさらに備える、請求項1に記載の方法。
【請求項6】
前記接続リースは、前記複数の仮想配信アプライアンスのサブセットをリストし、および、前記方法は、前記コンピューティングデバイスにおいて、仮想配信アプライアンス使用レベルに基づいて、仮想配信アプライアンスの前記リストされたサブセットの内部か外部かいずれかの仮想配信アプライアンスに、バリデーションされた接続リースを有するクライアントデバイスをリダイレクトすることをさらに備える、請求項1に記載の方法。
【請求項7】
前記接続リースは、前記コンピューティングデバイスの公開/秘密暗号化キーペアに関連付けられ、前記秘密暗号化キーを用いて署名され、および、前記方法は、前記仮想配信アプライアンスにおいて、前記コンピューティングデバイスから前記接続リースのバリデーションを要求する前に、前記公開暗号化キーを用いて前記接続リースをバリデーションすることをさらに備える、請求項1に記載の方法。
【請求項8】
前記接続リースは、時間ベースでもあり、および、前記方法は、前記仮想配信アプライアンスにおいて、前記コンピューティングデバイスから前記接続リースのバリデーションを要求する前に、前記接続リースの時間ベースのバリデーションを行うことをさらに備える、請求項7に記載の方法。
【請求項9】
前記コンピューティングデバイスは、関連付けられた公開鍵/秘密鍵ペアをさらに有し、前記コンピューティングデバイスの前記公開鍵は、ルートオブトラスト(RoT)の秘密鍵によって署名され、および、前記方法は、前記コンピューティングデバイスにおいて、仮想セッション要求バリデーションとともに署名された公開鍵を前記仮想配信アプライアンスに提供することをさらに備える、請求項1に記載の方法。
【請求項10】
ゲートウェイデバイスにおいて、
前記RoTの公開鍵を用いて、前記コンピューティングデバイスの前記署名された公開鍵を認証することと、
前記コンピューティングデバイスの前記認証された公開鍵を用いて前記仮想セッション要求バリデーションを認証することと、
前記仮想セッション要求バリデーションを認証することに応答して、前記クライアントデバイスと前記仮想配信アプライアンスとの間にセッション接続を確立することと
をさらに備える、請求項9に記載の方法。
【請求項11】
前記クライアントデバイスにおいて
前記RoTの公開鍵を用いて、前記コンピューティングデバイスの前記署名された公開鍵を認証することと、
前記コンピューティングデバイスの前記認証された公開鍵を用いて前記仮想セッション要求バリデーションを認証することと、
前記仮想セッション要求バリデーションを認証することに応答して、前記仮想配信アプライアンスとのセッション接続を確立することと
をさらに備える、請求項9に記載の方法。
【請求項12】
メモリと、
複数のクライアントデバイスから接続要求を受信し、前記接続要求は、コンピューティングデバイスにおいて格納され更新された前記クライアントデバイスに対するパブリッシュリソースエンタイトルメントに基づいて発行された接続リースを含み、
前記接続リースのバリデーションを要求して、前記コンピューティングデバイスに、前記更新されたパブリッシュリソースエンタイトルメントと前記接続リースを比較することに基づいて前記仮想セッション要求をバリデーションさせ、
前記コンピューティングデバイスからの接続リースのバリデーションに応答して、前記パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスを前記クライアントデバイスに提供する
ために前記メモリと協働するように構成されたプロセッサと
を備えた仮想配信アプライアンス。
【請求項13】
前記コンピューティングデバイスは、前記コンピューティングデバイスに対して事前認定されたバリデーションを生成するように構成され、前記プロセッサは、前記事前認定されたバリデーションに基づいて、前記コンピューティングデバイスの可用性なしに、要求された仮想セッションへのアクセスを少なくとも1つのクライアントデバイスに提供するようにさらに構成される、請求項12に記載の仮想配信アプライアンス。
【請求項14】
プロセッサは、前記コンピューティングデバイスの可用性なしに、別の仮想配信アプライアンスへの前記接続要求を拒否しリダイレクトするようにさらに構成される、請求項12に記載の仮想配信アプライアンス。
【請求項15】
前記接続リースは、公開/秘密暗号化キーペアに関連付けられ、前記秘密暗号化キーを用いて署名され、および、前記プロセッサは、前記コンピューティングデバイスから前記接続リースのバリデーションを要求する前に、前記公開暗号化キーを用いて前記接続リースをバリデーションするように構成される、請求項12に記載の仮想配信アプライアンス。
【請求項16】
前記コンピューティングデバイスは、関連付けられた公開鍵/秘密鍵ペアをさらに有し、前記コンピューティングデバイスの前記公開鍵は、ルートオブトラスト(RoT)の秘密鍵によって署名され、および、前記コンピューティングデバイスは、仮想セッション要求バリデーションとともに署名された公開鍵を前記プロセッサに提供するように構成される、請求項12に記載の仮想配信アプライアンス。
【請求項17】
コンピューティングシステムであって、
複数のクライアントデバイスに対してパブリッシュリソースエンタイトルメントを格納し更新するように構成されたコンピューティングデバイスと、
前記クライアントデバイスから接続要求を受信し、前記接続要求は、前記クライアントデバイスに対する前記パブリッシュリソースエンタイトルメントに基づいて発行された接続リースを含み、
前記コンピューティングデバイスからの前記接続リースのバリデーションを要求し、
前記コンピューティングデバイスからの接続リースのバリデーションに応答して、前記パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスを前記クライアントデバイスに提供する
ように構成された複数の仮想配信アプライアンスと
を備え、
前記コンピューティングデバイスは、前記仮想配信アプライアンスからのバリデーション要求に応答して、前記更新されたパブリッシュリソースエンタイトルメントと前記接続リースを比較することに基づいて前記仮想セッション要求をバリデーションする、コンピューティングシステム。
【請求項18】
前記コンピューティングデバイスは、前記仮想配信アプライアンスに対して事前認定されたバリデーションを生成するようにさらに構成され、前記仮想配信アプライアンスは、前記事前認定されたバリデーションに基づいて、前記コンピューティングデバイスの可用性なしに、要求された仮想セッションへのアクセスを少なくとも1つのクライアントデバイスに提供するように構成される、請求項17に記載のコンピューティングシステム。
【請求項19】
前記仮想配信アプライアンスは、前記コンピューティングデバイスの可用性なしに、他の仮想配信アプライアンスへの前記接続要求を拒否しリダイレクトするようにさらに構成される、請求項17に記載のコンピューティングシステム。
【請求項20】
前記接続リースは、前記複数の仮想配信アプライアンスのサブセットをリストし、および、前記コンピューティングデバイスは、仮想配信アプライアンス使用レベルに基づいて、仮想配信アプライアンスの前記リストされたサブセットの内部か外部かいずれかの仮想配信アプライアンスに、バリデーションされた接続リースを有するクライアントデバイスをリダイレクトするようにさらに構成される、請求項17に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想セッション要求に関し、より詳細には、仮想セッション要求をバリデーションするためのシステムおよび方法に関する。
【背景技術】
【0002】
関連出願の相互参照
本出願は、2019年5月20に出願された特許仮出願第62/850,089号明細書の利益を主張し、参照によりその全体が本明細書に組み込まれる。
【0003】
多数の組織が今や、それぞれのユーザの変動するニーズに対処するためのより柔軟なオプションを提供するために、アプリケーションおよび/またはデスクトップ仮想化を使用している。デスクトップ仮想化において、ユーザのコンピューティング環境は、ユーザの物理的コンピューティングデバイスから分離され得る。クライアント-サーバ技術を使用して、「仮想化されたデスクトップ」がクライアントコンピューティングデバイスのローカルストレージ内ではなく、リモートサーバ内に記憶され、リモートサーバによって管理され得る。
【0004】
いくつかの異なるタイプのデスクトップ仮想化システムがある。一例として、仮想デスクトップインフラストラクチャ(VDI)は、サーバ内に常駐する仮想マシン内でユーザデスクトップおよび/またはアプリケーションを動作させるプロセスを指す。仮想化システムは、仮想デスクトップをプロビジョニングするために、および/または共有アプリケーションへのアクセスを提供するために、コンピューティングリソースのプール、記憶ディスク、ネットワーキングハードウェア、および他の物理的リソースが使用され得る、クラウドコンピューティング環境、またはクラウドシステムにおいても実装され得る。
【発明の概要】
【0005】
方法は、コンピューティングデバイスにおいて複数のクライアントデバイスのためのパブリッシュリソースエンタイトルメント(published resource entitlement)を記憶および更新することと、複数の仮想配信アプライアンスを使用して、クライアントデバイスから接続要求を受信し、コンピューティングデバイスからの接続リースのバリデーションを要求することとを含み得る。接続要求は、クライアントデバイスのためのパブリッシュリソースエンタイトルメントに基づいて発行される接続リースを含み得る。この方法は、コンピューティングデバイスにおいて、仮想配信アプライアンスからのバリデーション要求に応答して、接続リースと更新されたパブリッシュリソースエンタイトルメントとを比較し、それに基づいて仮想セッション要求をバリデーションすることをさらに含み得る。この方法は、仮想配信アプライアンスにおいて、コンピューティングデバイスからの接続リースのバリデーションに応答して、パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスをクライアントデバイスに提供することも含み得る。
【0006】
この方法は、コンピューティングデバイスにおいて、仮想配信アプライアンスのための事前認定されたバリデーションを生成することと、仮想配信アプライアンスにおいて、事前認定されたバリデーションに基づいて、コンピューティングデバイスの可用性なしに、要求された仮想セッションへのアクセスを少なくとも1つのクライアントデバイスに提供することとをさらに含み得る。例示的な一実装では、仮想配信アプライアンスは、プールに配列されてもよく、この方法は、プール内の所与の仮想配信アプライアンスにおいて、要求された仮想セッションへのアクセスを少なくとも1つのクライアントデバイスに提供した後、コンピューティングデバイスの可用性なしに、仮想セッションへのアクセスを他のクライアントデバイスに提供することを中止することをさらに含み得る。さらに、この方法は、所与の仮想配信アプライアンスを再プロビジョニングして、要求された仮想セッションが閉じられた後、事前認定されたバリデーションを生成することをさらに含み得る。
【0007】
例示的な一実施形態では、この方法は、仮想配信アプライアンスにおいて、コンピューティングデバイスの可用性なしに、他の仮想配信アプライアンスへの接続要求を拒否およびリダイレクトすることをさらに含み得る。別の例示的な実装によれば、接続リースは、複数の仮想配信アプライアンスのサブセットをリストしてもよく、この方法は、コンピューティングデバイスにおいて、仮想配信アプライアンス使用レベルに基づいて、仮想配信アプライアンスのリストされたサブセットの内部または外部の仮想配信アプライアンスへのバリデーションされた接続リースを用いてクライアントデバイスをリダイレクトすることをさらに含み得る。
【0008】
例示的な一実装では、接続リースは、公開/秘密暗号化キーペアに関連付けられ、秘密暗号化キーを使用して署名され得、この方法は、仮想配信アプライアンスにおいて、コンピューティングデバイスに接続リースのバリデーションを要求する前に、公開暗号化キーを使用して接続リースをバリデーションすることをさらに含み得る。さらに、接続リースは時間ベースであってもよく、この方法は、仮想配信アプライアンスにおいて、たとえば、コンピューティングデバイスに接続リースのバリデーションを要求する前に、接続リースの時間ベースのバリデーションを実施することをさらに含み得る。
【0009】
またさらに別の例によれば、コンピューティングデバイスは、コンピューティングデバイスに関連付けられた公開/秘密鍵ペアをさらに有してもよく、コンピューティングデバイスの公開鍵は、ルートオブトラスト(Root of Trust;RoT)の秘密鍵によって署名され得、この方法は、コンピューティングデバイスにおいて、その署名済み公開鍵を仮想セッション要求バリデーションと共に仮想配信アプライアンスに提供することをさらに含み得る。例示的な一実装では、この方法は、RoTの公開鍵を使用して、コンピューティングデバイスの署名済み公開鍵を認証することと、コンピューティングデバイスの認証された公開鍵を使用して、仮想セッション要求バリデーションを認証することと、仮想セッション要求バリデーションの認証に応答して、クライアントデバイスと仮想配信アプライアンスとの間のセッション接続を確立することとをさらに含み得る。別の例示的な実装によれば、この方法は、クライアントデバイスにおいて、RoTの公開鍵を使用して、コンピューティングデバイスの署名済み公開鍵を認証することと、コンピューティングデバイスの認証された公開鍵を使用して、仮想セッション要求バリデーションを認証することと、仮想セッション要求バリデーションの認証に応答して、仮想配信アプライアンスとのセッション接続を確立することとをさらに含み得る。
【0010】
関連のコンピューティングシステムは、複数のクライアントデバイスのためのパブリッシュリソースエンタイトルメントを記憶および更新するように構成されたコンピューティングデバイスを含み得る。このシステムは、クライアントデバイスから接続要求を受信することであって、接続要求は、クライアントデバイスのためのパブリッシュリソースエンタイトルメントに基づいて発行された接続リースを含む、受信することと、コンピューティングデバイスからの接続リースのバリデーションを要求することと、コンピューティングデバイスからの接続リースのバリデーションに応答して、パブリッシュリソースエンタイトルメントに対応する仮想セッションへのアクセスをクライアントデバイスに提供することと、を行うように構成された複数の仮想配信アプライアンスをさらに含み得る。コンピューティングデバイスはまた、仮想配信アプライアンスからのバリデーション要求に応答して、接続リースと更新済みのパブリッシュリソースエンタイトルメントとを比較し、それに基づいて仮想セッション要求をバリデーションし得る。
【0011】
関連の仮想配信アプライアンスも提供される。
【図面の簡単な説明】
【0012】
【
図1】本開示の様々な態様が実装され得るコンピューティングデバイスのネットワーク環境の概略ブロック図である。
【
図2】
図1に示されているクライアントマシンまたはリモートマシンの一実施形態を実施するために有用なコンピューティングデバイスの概略ブロック図である。
【
図3】本開示の様々な態様が実装され得るクラウドコンピューティング環境の概略ブロック図である。
【
図4】本開示の様々な態様が実装され得るワークスペースアプリを動作させるデスクトップデバイス、モバイルデバイス、およびウェブベースのデバイスの概略ブロック図である。
【
図5】本開示の様々な態様が実装され得るコンピューティングデバイスのワークスペースネットワーク環境の概略ブロック図である。
【
図6】例示的な一実施形態による接続リースを通じて仮想セッションアクセスを提供するコンピューティングシステムの概略ブロック図である。
【
図7】例示的な一実施形態による
図6のシステムが実装され得る接続リースアーキテクチャおよび独立のフローシーケンスの概略ブロック図である。
【
図8】例示的な一実施形態における
図7のシステム内で実施され得る仮想配信アプライアンスセッション用逆準備シーケンスのためのシーケンス図である。
【
図9A】例示的な一実施形態における
図7のシステム内で実施され得る仮想配信アプライアンス-ブローカ登録シーケンスのシーケンス図である。
【
図9B】例示的な一実施形態における
図7のシステム内で実施され得る仮想配信アプライアンス-ブローカ登録シーケンスのシーケンス図である。
【
図10A】例示的な一実施形態における
図7のシステム内で実施され得る別の仮想配信アプライアンス-ブローカ登録シーケンスのシーケンス図である。
【
図10B】例示的な一実施形態における
図7のシステム内で実施され得る別の仮想配信アプライアンス-ブローカ登録シーケンスのシーケンス図である。
【
図11】例示的な一実装による
図7のシステムのブローカによる異なるバリデーションシナリオをリストする表である。
【
図12】
図6のシステムに関連付けられた方法態様を例示するフロー図である。
【
図13】
図6のシステムに関連付けられた方法態様を例示するフロー図である。
【発明を実施するための形態】
【0013】
仮想コンピューティングアーキテクチャにおいて、接続リースは、仲介サービスによってクライアントデバイスに発行され得る。接続リースは、クライアントデバイスがアクセスすることを許可されるリソースエンタイトルメントの静的なスナップショットを含み得る。例として、クライアントデバイスによってアクセスされているリソースは、仮想アプリケーション、仮想デスクトップ、ソフトウェアアズアサービス(SaaS)アプリケーション、デスクトップアズアサービス(DaaS)セッションなどを含んでもよい。さらに、接続リースは、接続リースが満了し、新しくされなければならなくなる前に、比較的長期のアクセス(たとえば、1週間または複数週間)を可能にするリソースロケーションデータも含み得る。これは、クライアントデバイスが仮想コンピューティングセッションへのアクセスを要求するたびに、クライアントデバイスは仲介サービスに再登録することを必要とされないので、クライアントデバイスによるリソースへのより高速なアクセスを促進する助けとなる。しかし、いくつかの状況において、接続リースの静的な性質は、ユーザエンタイトルメントの動的な性質およびパブリッシュされたリソースロケーションの状態と結び付くと、一定のレジリエンシまたは性能の問題をもたらすことがある。たとえば、ユーザは、以前に確立されたセッションを継続し、既存のセッションにおけるアプリケーションとセッション共有し、クロックドリフトまたは期限切れのセキュリティ鍵に起因して、仮想配信アプライアンスとの接続を確立するなどの能力を失うことがある。
【0014】
本明細書において述べられるアプローチは、クライアントデバイスによるより高速なアクセスを保持するために、そのような静的な接続リースの継続した使用を有利に可能にし、なお一方で、クライアントデバイスを様々なリソースに接続する仮想配信アプライアンスに、クライアントエンタイトルメント(接続リースにおいて指定される、ユーザが使用の許可を有する、アプリケーションまたはデスクトップなどのリソース)が、最新か、リアルタイムか、セッション要求に応答するかをバリデーションするために、仲介サービスと協働することを許可する。さらに、本明細書において述べられるアプローチは、仮想配信アプライアンスに、非可用性の期間の間に仲介サービスの一定の機能を持つことを可能にすることによって、仲介サービスの非可用性の期間の間に、部分的だが依然として安全な動作も有利に可能にする。すなわち、それ以外の場合に提供される完全な接続機能性は、仲介サービス停止に起因して利用可能ではない一方で、仮想配信アプライアンスは、いくつかの接続を制御された方式で依然として提供することが可能であり得る。
【0015】
最初に
図1を参照すると、本開示の様々な態様が実装され得る非限定的なネットワーク環境10は、1つまたは複数のクライアントマシン12A~12Nと、1つまたは複数のリモートマシン16A~16Nと、1つまたは複数のネットワーク14、14’と、コンピューティング環境10内に設置された1つまたは複数のアプライアンス18とを含む。クライアントマシン12A~12Nは、ネットワーク14、14’を介してリモートマシン16A~16Nと通信する。
【0016】
いくつかの実施形態では、クライアントマシン12A~12Nは、中間アプライアンス18を介してリモートマシン16A~16Nと通信する。図のアプライアンス18は、ネットワーク14、14’間に配置され、ネットワークインターフェースまたはゲートウェイと称されることもある。いくつかの実施形態では、アプライアンス108は、アプリケーション配信コントローラ(ADC)として動作し得、クライアントにデータセンタ、クラウド内で展開される、またはクライアントデバイスの範囲にわたってソフトウェアアズアサービス(SaaS)として配信されるビジネスアプリケーションおよび他のデータへのアクセスを提供し、および/または負荷分散など他の機能性を提供する。いくつかの実施形態では、複数のアプライアンス18が使用され得、アプライアンス18は、ネットワーク14および/または14’の一部として展開され得る。
【0017】
クライアントマシン12A~12Nは、全体的に、クライアントマシン12、ローカルマシン12、クライアント12、クライアントノード12、クライアントコンピュータ12、クライアントデバイス12、コンピューティングデバイス12、エンドポイント12、またはエンドポイントノード12と称されることがある。リモートマシン16A~16Nは、全体的に、サーバ16またはサーバファーム16と称されることがある。いくつかの実施形態では、クライアントデバイス12は、サーバ16によって提供されるリソースにアクセスしようとするクライアントノードとしても、他のクライアントデバイス12A~12Nのためのホストされるリソースへのアクセスを提供するサーバ16としても機能するための能力を有し得る。ネットワーク14、14’は、全体的に、ネットワーク14と称されることがある。ネットワーク14は、有線ネットワークおよびワイヤレスネットワークの任意の組合せで構成されてよい。
【0018】
サーバ16は、たとえば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、セキュアソケットレイヤ仮想プライベートネットワーク(SSL VPN)サーバ、ファイヤウォール、ウェブサーバ、アクティブディレクトリを実行するサーバ、クラウドサーバ、またはファイヤウォール機能性、アプリケーション機能性、もしくは負荷分散機能性を提供するアプリケーションアクセラレーションプログラムを実行するサーバなど、任意のサーバタイプであってよい。
【0019】
サーバ16は、ソフトウェア、プログラム、実行可能命令、仮想マシン、ハイパーバイザ、ウェブブラウザ、ウェブベースのクライアント、クライアント-サーバアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなボイスオーバーインターネットプロトコル(VoIP)通信に関連するソフトウェア、ストリーミングビデオおよび/またはオーディオのためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、Oscarクライアント、Telnetクライアント、または実行可能命令の任意の他のセットのいずれか1つであってよいアプリケーションを実行し、動作させ、または他の方法で提供し得る。
【0020】
いくつかの実施形態では、サーバ16は、シンクライアントまたはリモートディスプレイプロトコルを使用しサーバ16上で実行されるアプリケーションによって生成されるディスプレイ出力を取り込むリモートプレゼンテーションサービスプログラムまたは他のプログラムを実行し、アプリケーションディスプレイ出力をクライアントデバイス12に送信し得る。
【0021】
さらに他の実施形態では、サーバ16は、クライアントデバイス12のユーザにコンピューティング環境へのアクセスを提供する仮想マシンを実行し得る。クライアントデバイス12は、仮想マシンであってよい。仮想マシンは、たとえばハイパーバイザ、仮想マシンマネージャ(VMM)、またはサーバ16内の任意の他のハードウェア仮想化技法によって管理され得る。
【0022】
いくつかの実施形態では、ネットワーク14は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、プライマリパブリックネットワーク14、およびプライマリプライベートネットワーク14であってよい。追加の実施形態は、様々なプロトコルを使用しモバイルデバイスの間で通信するモバイル電話ネットワークのネットワーク14を含み得る。ワイヤレスローカルエリアネットワーク(WLAN)内の近距離通信については、プロトコルは、802.11、Bluetooth、および近距離無線通信(NFC)を含み得る。
【0023】
図2は、クライアントデバイス12、アプライアンス18、および/またはサーバ16の一実施形態を実施するために有用なコンピューティングデバイス20のブロック図を示す。コンピューティングデバイス20は、1つまたは複数のプロセッサ22、揮発性メモリ24(たとえば、ランダムアクセスメモリ(RAM))、不揮発性メモリ30、ユーザインターフェース(UI)38、1つまたは複数の通信インターフェース26、および通信バス48を含む。
【0024】
不揮発性メモリ30は、1つもしくは複数のハードディスクドライブ(HDD)もしくは他の磁気記憶媒体もしくは光記憶媒体、フラッシュドライブもしくは他のソリッドステート記憶媒体など1つもしくは複数のソリッドステートドライブ(SSD)、1つもしくは複数のハイブリッド磁気およびソリッドステートドライブ、ならびに/またはクラウドストレージなど1つもしくは複数の仮想ストレージボリューム、あるいはそのような物理的ストレージボリュームおよび仮想ストレージボリュームの組合せ、またはそのアレイを含み得る。
【0025】
ユーザインターフェース38は、グラフィカルユーザインターフェース(GUI)40(たとえば、タッチスクリーン、ディスプレイなど)および1つまたは複数の入力/出力(I/O)デバイス42(たとえば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカ、1つまたは複数のカメラ、1つまたは複数のバイオメトリックスキャナ、1つまたは複数の環境センサ、および1つまたは複数の加速度計など)を含み得る。
【0026】
不揮発性メモリ30は、オペレーティングシステム32、1つまたは複数のアプリケーション34、およびデータ36を記憶し、たとえばオペレーティングシステム32および/またはアプリケーション34のコンピュータ命令が揮発性メモリ24から取り出されプロセッサ22によって実行されるようにする。いくつかの実施形態では、揮発性メモリ24は、メインメモリより速い応答時間を提供し得る1つまたは複数のタイプのRAMおよび/またはキャッシュメモリを含み得る。データは、GUI40の入力デバイスを使用して入力されても、I/Oデバイス42から受信されてもよい。コンピュータ20の様々な要素は、通信バス48を介して通信し得る。
【0027】
図のコンピューティングデバイス20は、例示的なクライアントデバイスまたはサーバとして示されているにすぎず、本明細書に記載されているように動作することが可能な好適なハードウェアおよび/またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットを有する任意のコンピューティングまたは処理環境によって実装されてよい。
【0028】
プロセッサ22は、1つまたは複数のプログラム可能なプロセッサによって、コンピュータプログラムなど1つまたは複数の実行可能命令を実行し、システムの機能を実施するように実装され得る。本明細書で使用されるとき、「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実施する回路を表す。機能、動作または動作のシーケンスは、回路にハードコード化されても、メモリデバイス内に保持された命令によりソフトコード化され、回路によって実行されてもよい。プロセッサは、デジタル値を使用して、および/またはアナログ信号を使用して機能、動作、または動作のシーケンスを実施し得る。
【0029】
いくつかの実施形態では、プロセッサは、1つもしくは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィック処理ユニット(GPU)、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)、マルチコアプロセッサ、または関連のメモリを有する汎用コンピュータ内に埋め込むことができる。
【0030】
プロセッサ22は、アナログ、デジタル、または混合信号であってよい。いくつかの実施形態では、プロセッサ22は、1つもしくは複数の物理的プロセッサ、または1つもしくは複数の仮想(たとえば、リモートに位置する、またはクラウド)プロセッサであってよい。複数のプロセッサコアを含むプロセッサおよび/または複数のプロセッサは、命令の並列同時実行のための、または複数のデータ上の1つの命令の並列同時実行のための機能性を提供し得る。
【0031】
通信インターフェース26は、コンピューティングデバイス20が、セルラ接続を含む様々な有線および/またはワイヤレス接続を通じてローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはインターネットなどコンピュータネットワークにアクセスすることを可能にするための1つまたは複数のインターフェースを含み得る。
【0032】
記載の実施形態では、コンピューティングデバイス20は、クライアントデバイスのユーザの代わりにアプリケーションを実行し得る。たとえばコンピューティングデバイス20のハイパーバイザによって管理される1つまたは複数の仮想マシンを実行し得る。各仮想マシンは、ホストされるデスクトップセッションなど、ユーザまたはクライアントデバイスの代わりにアプリケーションが実行される実行セッションを提供し得る。また、コンピューティングデバイス20は、ホストされるデスクトップ環境を提供するために端末サービスセッションを実行し得る。コンピューティングデバイス20は、1つまたは複数のアプリケーション、1つまたは複数のデスクトップアプリケーション、および1つまたは複数のアプリケーションが実行され得る1つまたは複数のデスクトップセッションを含むリモートコンピューティング環境へのアクセスを提供し得る。
【0033】
例示的な仮想化サーバ16は、フロリダ州フォートローダーデールのCitrix Systems, Inc.(「Citrix Systems」)によって提供されるCitrix Hypervisorを使用して実装され得る。仮想アプリおよびデスクトップセッションは、やはりCitrix SystemsからのCitrix Virtual Apps and Desktops(CVAD)によってさらに提供され得る。Citrix Virtual Apps and Desktopsは、任意のデバイスからの仮想アプリ、デスクトップ、およびデータセッションを含む仮想セッションへの広範なアクセスと共に、スケーラブルなVDI解決策を実装するためのオプションを加えて、生産性を高めるアプリケーション仮想化解決策である。仮想セッションは、たとえばソフトウェアアズアサービス(SaaS)およびデスクトップアズアサービス(DaaS)セッションをさらに含み得る。
【0034】
図3を参照すると、クラウド環境、クラウドコンピューティング、またはクラウドネットワークとも称されることがあるクラウドコンピューティング環境50が示されている。クラウドコンピューティング環境50は、複数のユーザまたはテナントへの共有コンピューティングサービスおよび/またはリソースの配信を提供することができる。たとえば共有リソースおよびサービスは、それだけには限らないがネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、データベース、ソフトウェア、ハードウェア、アナリティクス、およびインテリジェンスを含むことができる。
【0035】
クラウドコンピューティング環境50では、1つまたは複数のクライアント52A~52C(上記のものなど)がクラウドネットワーク54と通信する。クラウドネットワーク54は、バックエンドプラットフォーム、たとえばサーバ、ストレージ、サーバファーム、またはデータセンタを含み得る。ユーザまたはクライアント52A~52Cは、単一の組織/テナントまたは複数の組織/テナントに対応することができる。より具体的には、例示的な実装では、クラウドコンピューティング環境50は、単一の組織(たとえば、エンタープライズクラウド)にサービスを提供するプライベートクラウドを提供し得る。別の例では、クラウドコンピューティング環境50は、複数の組織/テナントにサービスを提供するコミュニティまたはパブリッククラウドを提供し得る。さらなる実施形態では、クラウドコンピューティング環境50は、パブリッククラウドとプライベートクラウドの組合せであるハイブリッドクラウドを提供し得る。パブリッククラウドは、サードパーティによってクライアント52A~52Cまたは企業体/テナントに対して維持されるパブリックサーバを含み得る。サーバは、遠隔の地理的ロケーションなどに現地から離れて位置してもよい。
【0036】
クラウドコンピューティング環境50は、それぞれの環境内の異なる需要に応答して異なる物理的リソースおよび仮想リソースが動的に割り当てまたは再割り当てされるマルチテナント環境またはマルチテナントモデルを通じて、クライアント52A~52Cを介して複数のユーザにサービスを提供するために、リソースプール化を提供することができる。マルチテナント環境は、複数のユーザにサービスを提供するためにソフトウェア、アプリケーション、またはソフトウェアアプリケーションの単一のインスタンスを提供することができるシステムまたはアーキテクチャを含むことができる。いくつかの実施形態では、クラウドコンピューティング環境50は、複数のクライアント52A~52Cのためにネットワークにわたってコンピューティング能力(たとえば、サーバ時間、ネットワークストレージ)を一方的にプロビジョニングするためのオンデマンドのセルフサービスを提供することができる。クラウドコンピューティング環境50は、1つまたは複数のクライアント52からの異なる需要に応答して動的にスケールアウトまたはスケールインするための弾力性を提供することができる。いくつかの実施形態では、コンピューティング環境50は、提供された共有サービスおよびリソースに対応するレポートを監視、制御、および/または生成するための監視サービスを含む、または提供することができる。
【0037】
いくつかの実施形態では、クラウドコンピューティング環境50は、たとえばソフトウェアアズアサービス(SaaS)56、プラットフォームアズアサービス(PaaS)58、インフラストラクチャアズアサービス(IaaS)60、およびデスクトップアズアサービス(DaaS)62など異なるタイプのクラウドコンピューティングサービスのクラウドベースの配信を提供し得る。IaaSは、ユーザが、特定の時間期間の間に必要とされるインフラストラクチャリソースの使用を貸借することを指し得る。IaaSは、大きなプールからストレージ、ネットワーキング、サーバ、または仮想化リソースを提供し、ユーザが必要に応じてより多くのリソースにアクセスすることによって迅速にスケールアップすることを可能にし得る。IaaSの例は、ワシントン州シアトルのAmazon.com, Inc.によって提供されているAMAZON WEB SERVICES、テキサス州サンアントニオのRackspace US, Inc.によって提供されているRACKSPACE CLOUD、カリフォルニア州マウンテンビューのGoogle Inc.によって提供されているGoogle Compute Engine、またはカリフォルニア州サンタバーバラのRightScale, Inc.によって提供されているRIGHTSCALEを含む。
【0038】
PaaSプロバイダは、たとえばストレージ、ネットワーキング、サーバ、または仮想化を含むIaaSによって提供される機能性、ならびに、たとえばオペレーティングシステム、ミドルウェア、またはランタイムリソースなど追加のリソースを提供し得る。PaaSの例は、ワシントン州レドモンドのMicrosoft Corporationによって提供されているWINDOWS AZURE、Google Inc.によって提供されているGoogle App Engine、およびカリフォルニア州サンフランシスコのHeroku, Inc.によって提供されているHEROKUを含む。
【0039】
SaaSプロバイダは、ストレージ、ネットワーキング、サーバ、仮想化、オペレーティングシステム、ミドルウェア、またはランタイムリソースを含めて、PaaSが提供するリソースを提供し得る。いくつかの実施形態では、SaaSプロバイダは、たとえば、データおよびアプリケーションリソースを含む追加のリソースを提供し得る。SaaSの例は、Google Inc.によって提供されているGOOGLE APPS、カリフォルニア州サンフランシスコのSalesforce.com Inc.によって提供されているSALESFORCE、またはMicrosoft Corporationによって提供されているOFFICE 365を含む。また、SaaSの例は、データストレージプロバイダ、たとえば、カリフォルニア州サンフランシスコのDropbox, Inc.によって提供されているDROPBOX、Microsoft Corporationによって提供されているMicrosoft SKYDRIVE、Google Inc.によって提供されているGoogle Drive、またはカリフォルニア州クパチーノのApple Inc.によって提供されているApple ICLOUDを含み得る。
【0040】
SaaS、DaaS(ホストされるデスクトップサービスとしても知られる)と同様のものは、仮想デスクトップセッションが仮想デスクトップ上で使用されるアプリと共にクラウドサービスとして配信されることが典型的である仮想デスクトップインフラストラクチャ(VDI)の形態である。Citrix Cloudは、DaaS配信プラットフォームの一例である。DaaS配信プラットフォームは、たとえばワシントン州レドモンドのMicrosoft CorporationからのAZURE CLOUD(本明細書では「Azure」)、またはワシントン州シアトルのAmazon.com, Inc.によって提供されているAMAZON WEB SERVICES(本明細書では「AWS」)など、パブリッククラウドコンピューティングインフラストラクチャ上でホストされ得る。Citrix Cloudの場合、統一されたエクスペリエンスを届けるためにアプリ、ファイル、およびデスクトップを(オンプレミスまたはクラウド内にかかわらず)一緒にするための単一のエントリポイントとして、Citrix Workspaceアプリが使用され得る。
【0041】
次に、Citrix Workspaceアプリによって提供される統一されたエクスペリエンスについて、
図4を参照してより詳細に論じられる。Citrix Workspaceアプリは、本明細書では、全体的にワークスペースアプリ70と称されることになる。ワークスペースアプリ70は、その1つのカテゴリがアプリケーションである、ユーザがワークスペースリソースにアクセスする方法である。これらのアプリケーションは、SaaSアプリ、ウェブアプリ、または仮想アプリとすることができる。また、ワークスペースアプリ70は、ローカルデスクトップまたは仮想デスクトップであり得るデスクトップへユーザがアクセスできるようにする。さらに、ワークスペースアプリ70は、多数のリポジトリに記憶され得るファイルおよびデータにユーザがアクセスできるようにする。ファイルおよびデータは、たとえばCitrix ShareFile上でホストされても、オンプレミスネットワークファイルサーバ上でホストされても、Microsoft OneDriveまたはGoogle Drive Boxなど何らかの他のクラウドストレージプロバイダにおいてホストされてもよい。
【0042】
統一されたエクスペリエンスを提供するために、ユーザが必要とするリソースのすべてが、ワークスペースアプリ70に位置しそこからアクセス可能であってよい。ワークスペースアプリ70は、異なるバージョンで提供される。ワークスペースアプリ70の1つのバージョンは、デスクトップ72用のインストールされたアプリケーションであり、それはWindows、Mac、またはLinuxプラットフォームに基づくものであってよい。ワークスペースアプリ70の第2のバージョンは、モバイルデバイス74用のインストールされたアプリケーションであり、それはiOSまたはAndroidプラットフォームに基づくものであってよい。ワークスペースアプリ70の第3のバージョンは、ハイパーテキストマークアップ言語(HTML)ブラウザを使用し、ワークスペース環境へのユーザアクセスを提供する。ワークスペースアプリ70のウェブバージョンは、公衆ブース76を動作させるときなどユーザがワークスペースアプリをインストールしたくない、またはワークスペースアプリをインストールする権利を有していないときに使用される。
【0043】
ワークスペースアプリ70のこれらの異なるバージョンのそれぞれは、同じユーザエクスペリエンスを提供することが有利であり得る。これは、異なるプラットフォームでクライアントデバイス72からクライアントデバイス74からクライアントデバイス76へユーザが移動し、それらのワークスペースについて同じユーザエクスペリエンスを受けることを可能にすることが有利である。クライアントデバイス72、74、および76は、エンドポイントと称される。
【0044】
上記のように、ワークスペースアプリ70は、Windows、Mac、Linux、iOS、およびAndroidプラットフォーム、ならびにHTMLブラウザ(HTML5)を用いたプラットフォームをサポートする。ワークスペースアプリ70は、複数のエンジン80~90を組み込んでおり、ユーザが多数のタイプのアプリおよびデータリソースにアクセスすることを可能にする。各エンジン80~90は、特定のリソースについてユーザエクスペリエンスを最適化する。また、各エンジン80~90は、組織または企業体にユーザ活動および潜在的なセキュリティ脅威への洞察力を提供する。
【0045】
組み込みブラウザエンジン80は、SaaSおよびウェブアプリを、ローカルでインストールされた管理されていないブラウザ上で起動する代わりに、ワークスペースアプリ70内に含まれたまま保つ。組み込みブラウザを用いて、ワークスペースアプリ70は、SaaSおよびウェブアプリ内でユーザによって選択されたハイパーリンクをインターセプトし、アクセスを認可、拒否、または隔離する前にリスク分析を要求することができる。
【0046】
ハイデフィニションエクスペリエンス(HDX)エンジン82は、WindowsオペレーティングシステムまたはLinuxオペレーティングシステム上で動作する仮想ブラウザ、仮想アプリ、およびデスクトップセッションとの接続を確立する。HDXエンジン82を用いて、WindowsおよびLinuxリソースはリモートで動作し、一方、ディスプレイは、エンドポイント上でローカルのままとなる。可能な最良のユーザエクスペリエンスを提供するために、HDXエンジン82は、異なる仮想チャネルを使用し、変化するネットワーク条件およびアプリケーション要件に適応する。高レイテンシまたは高パケット損失ネットワークを克服するために、HDXエンジン82は、最適化されたトランスポートプロトコルおよびより大きな圧縮アルゴリズムを自動的に実装する。各アルゴリズムは、ビデオ画像またはテキストなど、あるタイプのディスプレイのために最適化される。HDXエンジン82は、アプリケーション内でこれらのタイプのリソースを識別し、画面のそのセクションに最も適切なアルゴリズムを適用する。
【0047】
多数のユーザについて、ワークスペースはデータを中心とする。コンテンツコラボレーションエンジン84は、そのデータがオンプレミスにあるかクラウド内にあるかにかかわらず、ユーザがすべてのデータをワークスペースに統合することを可能にする。コンテンツコラボレーションエンジン84は、管理者およびユーザが、協働するためのコネクタのセット、およびユーザ特有のデータストレージロケーションを作成することを可能にする。これは、たとえばOneDrive、Dropbox、およびオンプレミスネットワークファイル共有を含むことができる。ユーザは、ファイルを複数のリポジトリ内で維持し、ワークスペースアプリ70がそれらを単一の個人化されたライブラリにまとめることを可能にすることができる。
【0048】
ネットワーキングエンジン86は、エンドポイントまたはエンドポイント上のアプリが安全なバックエンドリソースへのネットワークコネクティビティを必要とするか否かを識別する。ネットワーキングエンジン86は、エンドポイントデバイス全体のために完全なVPNトンネルを自動的に確立することができ、またはアプリ特有のμVPN接続を作成することができる。μVPNは、どのバックエンドリソースにアプリケーションおよびエンドポイントデバイスがアクセスすることができるかを定義し、したがってバックエンドインフラストラクチャを保護する。多数の例において、いくつかのユーザ活動は、独特なネットワークベースの最適化から利益を得る。ユーザがファイルコピーを要求する場合、ワークスペースアプリ70は、その活動をより速く完了するために、自動的に複数のネットワーク接続を同時に使用する。ユーザがVoIP呼を開始する場合、ワークスペースアプリ70は、その呼を複数のネットワーク接続にわたって複製することによってその品質を改善する。ネットワーキングエンジン86は、最初に到着するパケットだけを使用する。
【0049】
アナリティクスエンジン88は、ユーザのデバイス、ロケーション、および挙動についてレポートし、クラウドベースのサービスは、盗難にあったデバイス、ハッキングされた識別、または退職する準備をしているユーザの結果起こり得る潜在的な異常を識別する。アナリティクスエンジン88によって集められる情報は、対策を自動的に実装することによって企業資産を保護する。
【0050】
管理エンジン90は、ワークスペースアプリ70を現在のまま保つ。これは、ユーザに最新の能力を提供するだけでなく、追加的なセキュリティ拡張をも含む。ワークスペースアプリ70は、カスタマイズ可能なポリシに基づいて、規定通りにチェックし、自動的に更新を展開する自動更新サービスを含む。
【0051】
次に
図5を参照して、ワークスペースアプリ70に基づいて、統一されたエクスペリエンスをユーザに提供するワークスペースネットワーク環境100について論じられる。ワークスペースアプリ70のデスクトップバージョン、モバイルバージョン、およびウェブバージョンはすべて、クラウド104内で動作するワークスペースエクスペリエンスサービス102と通信する。次いで、ワークスペースエクスペリエンスサービス102は、リソースフィードマイクロサービス108を介して異なるリソースフィード16をすべて引き込む。すなわち、クラウド104内で動作する他のサービスからの異なるリソースすべてが、リソースフィードマイクロサービス108によって引き込まれる。異なるサービスは、仮想アプリおよびデスクトップサービス110、安全なブラウザサービス112、エンドポイント管理サービス114、コンテンツコラボレーションサービス116、ならびにアクセス制御サービス118を含み得る。組織または企業体がサブスクライブするサービスは、自動的にワークスペースエクスペリエンスサービス102内に引き込まれ、ユーザのワークスペースアプリ70に配信される。
【0052】
クラウドフィード120に加えて、リソースフィードマイクロサービス108は、オンプレミスフィード122を引き込むことができる。オンプレミスデータセンタ内で動作している仮想アプリおよびデスクトップ展開を提供するために、クラウドコネクタ124が使用される。デスクトップ仮想化は、たとえばCitrix仮想アプリおよびデスクトップ126、Microsoft RDS 128、またはVMware Horizon 130によって提供され得る。クラウドフィード120およびオンプレミスフィード122に加えて、たとえばモノのインターネット(IoT)デバイス134からのデバイスフィード132がリソースフィードマイクロサービス108によって引き込まれてもよい。異なるリソースをユーザの全体的なワークスペースエクスペリエンスに結び付けるために、サイトアグリゲーションが使用される。
【0053】
クラウドフィード120、オンプレミスフィード122およびデバイスフィード132はそれぞれ、異なる独特のタイプのアプリケーションでユーザのワークスペースエクスペリエンスを提供する。ワークスペースエクスペリエンスは、ローカルアプリ、SaaSアプリ、仮想アプリ、およびデスクトップブラウザアプリ、ならびにストレージアプリをサポートすることができる。フィードが増大および膨張し続けるにつれて、ワークスペースエクスペリエンスは、ユーザの全体的なワークスペース内に追加のリソースを含むことができる。これは、ユーザがアクセスすることを必要とするアプリケーションに1つずつ到達することができることを意味する。
【0054】
なおもワークスペースネットワーク環境20を参照して、統一されたエクスペリエンスがどのようにユーザに提供されるかについて、一連のイベントが記載される。統一されたエクスペリエンスは、ユーザがワークスペースアプリ70を使用し、クラウド104内で動作するワークスペースエクスペリエンスサービス102に接続し、その識別を提示することで始まる(イベント1)。識別は、たとえばユーザ名およびパスワードを含む。
【0055】
ワークスペースエクスペリエンスサービス102は、ユーザの識別をクラウド104内の識別マイクロサービス140に転送する(イベント2)。識別マイクロサービス140は、組織のワークスペース構成に基づいて、正しい識別プロバイダ142に対してユーザを認証する(イベント3)。認証は、クラウドコネクタ146の展開を必要とするオンプレミスアクティブディレクトリ144に基づくものであってよい。また、認証は、たとえば、Azure Active Directory148、さらにはCitrix ADCまたはOktaなどサードパーティ識別プロバイダ150に基づくものであってもよい。
【0056】
認定された後、ワークスペースエクスペリエンスサービス102は、リソースフィードマイクロサービス108に、認定されたリソースのリストを要求する(イベント4)。各構成されたリソースフィード106について、リソースフィードマイクロサービス108は、シングルサインマイクロサービス152に識別トークンを要求する(イベント5)。
【0057】
リソースフィード特有の識別トークンが、各リソースの認証ポイントに渡される(イベント6)。オンプレミスリソース122が、クラウドコネクタ124を通じて接触を受ける。各リソースフィード106は、それぞれの識別について認定されたリソースのリストで返信する(イベント7)。
【0058】
リソースフィードマイクロサービス108は、異なるリソースフィード106からすべてのアイテムを集約し、ワークスペースエクスペリエンスサービス102に転送する(イベント8)。ユーザは、ワークスペースエクスペリエンスサービス102からリソースを選択する(イベント9)。
【0059】
ワークスペースエクスペリエンスサービス102は、要求をリソースフィードマイクロサービス108に転送する(イベント10)。リソースフィードマイクロサービス108は、シングルサインオンマイクロサービス152に識別トークンを要求する(イベント11)。ユーザの識別トークンは、ワークスペースエクスペリエンスサービス102に送られ(イベント12)、ここで起動チケットが生成され、ユーザに送られる。
【0060】
ユーザは、ゲートウェイサービス160に対する安全なセッションを開始し、起動チケットを提示する(イベント13)。ゲートウェイサービス160は、適切なリソースフィード106に対する安全なセッションを開始し、ユーザをシームレスに認証するために識別トークンを提示する(イベント14)。セッションが初期化した後、ユーザは、リソースを使用することができる(イベント15)。ワークスペース全体が単一のアクセスポイントまたはアプリケーションを通じて配信されることは、生産性を改善し、ユーザにとって共通ワークフローを簡素化することが有利である。
【0061】
ここで
図6を参照して、仮想コンピューティングシステム200がまず記載され、仮想コンピューティングシステム200は、仮想コンピューティングセッションへアクセスするための拡張された接続リースを提供する。例として、システム200は、上記のコンピューティングデバイスを使用して実装されてもよく、いくつかの実装では、ワークスペースインフラストラクチャ内に実装されてもよい。仮想コンピューティングセッションへのアクセスを提供するための別の例示的なアーキテクチャは、本出願人Citrix Systems, Inc.のCitrix Virtual Apps and Desktops(CVAD)である。Citrix Virtual Appsは、異なるクライアントデバイスからの仮想アプリおよびサーバベースのデスクトップへのユニバーサルアクセスを用いて生産性を最適化する助けとなるアプリケーション仮想化解決策である。CVADは、Citrix Virtual Appsと全く同じ機能性に加えて、スケーラブル仮想デスクトップインフラストラクチャ(VDI)を実装するためのオプションを搭載している。Citrix Virtual Apps/CVADは、クラウドサービスまたは従来のソフトウェア構成として使用可能である。
【0062】
そのようなコンピュータ仮想化インフラストラクチャは従来、ユーザが権利を有する仮想セッションおよびコンピューティングリソースにクライアントデバイスがアクセスすることを認証するための独立コンピューティングアーキテクチャ(ICA)プロトコルおよびICAファイルを使用し得る。ICAは、ネットワークの上でWindowsグラフィカルディスプレイデータならびにユーザ入力を送信するために設計されたプロトコルである。ICAファイルは、短命のセキュアチケットオーソリティ(STA)およびログオンチケットを含む。STAチケットは、ゲートウェイ(たとえば、Citrix Gateway)を介して仮想配信アプライアンス(たとえば、Citrix Virtual Delivery Agent(VDA))に対する接続を認定するために使用され得る。ログオンチケットは、ユーザを仮想コンピューティングセッションにシングルサインオン(SSOn)させ得る。CVADの場合、これは、異なるクライアントデバイス上および異なるネットワークの上で、集中型アプリケーションおよびデスクトップのユーザにとって使用可であり得る「ハイデフィニション」エクスペリエンス(HDX)セッションを通じて行われる。CitrixHDXは、ICAリモーティングプロトコルの上に構築される。
【0063】
リモートでもまたはそうでなくても、いかなるネットワークインフラストラクチャでも、外部攻撃に対するセキュリティは常に著しい問題である。さらに、接続リースは長命であり(たとえば、ポリシに基づいて数時間から数週間)、したがって、攻撃機会ウィンドウが増え、セキュリティ要件も従来のICAファイルと比較して増える。したがって、接続リースは暗号化され、署名される。接続リースはまた、盗難にあったデバイス、損なわれたユーザアカウント、閉じられたユーザアカウントなどのイベントに対処するために取り消され得る。接続リース取り消しは、クライアント/エンドポイントデバイスまたはホストが接続リース発行サービス(CLIS)またはブローカに関してオンラインであるときに適用される。しかし、接続リースは、オフラインモードで使用されることが意図されているので、CLISまたはブローカは、典型的には、以前に発行された接続リースをクライアントが使用するためにオンラインである必要はない。
【0064】
システム200は、例示的には、複数のクライアントデバイス203a~203nのためのパブリッシュリソースエンタイトルメント202を記憶および更新するように構成されたコンピューティングデバイス201を含む。例として、コンピューティングデバイス201は、仲介サービスまたは接続リース発行サービスの一部であってもよく、パブリッシュリソースエンタイトルメントは、クライアントデバイス203a~203nがアクセスすることを許可される、または認定される仮想コンピューティングリソース(たとえば、SaaSアプリ、DaaSセッション、仮想アプリ/デスクトップなど)に関連し得る。クライアントデバイス203a~203nは、上記のように、デスクトップまたはラップトップコンピュータ、タブレットコンピュータ、スマートフォンなどであってもよい。
【0065】
システム200は、例示的には、ネットワーク205(たとえば、インターネットまたはウェブ)を介してクライアントデバイス203a~203nと通信する複数の仮想配信アプライアンス204a~204nをさらに含む。仮想配信アプライアンス204a~204nは、クライアントデバイスのためのそれぞれのパブリッシュリソースエンタイトルメント202に基づいて発行された接続リースを含む、クライアントデバイス203a~203bからの接続要求を受信するように構成される。例示的な一実装では、仮想配信アプライアンス204a~204nは、たとえば、Citrix Virtual Delivery Agents (VDAs)を使用して実装されてもよいが、他の適切な仮想配信アプライアンスが、異なる実装では使用されてもよい。
【0066】
仮想配信アプライアンス204a~204nは、コンピューティングデバイス201からの接続リースのバリデーションを要求し、コンピューティングデバイスからの接続リースのバリデーションに応答して、パブリッシュリソースエンタイトルメント202に対応する仮想セッションへのアクセスをクライアントデバイス203a~203nに提供するようにも構成される。この点において、コンピューティングデバイス201はまた、仮想配信アプライアンス204a~204nからのバリデーション要求に応答して、接続リースとコンピューティングデバイス201が維持する更新済みのパブリッシュリソースエンタイトルメント202とを比較し、それに応じて仮想セッション要求をバリデーションする。
【0067】
ここで、前述の内容は、
図7に示されるコンピューティングシステム250の例示的な実装の文脈において、さらに記載されることになる。図の例では、上記のコンピューティングデバイス201およびリース生成機能は、クラウドコンピューティングサービス255(たとえば、Citrix Cloud)内で実施され、クラウドコンピューティングサービス255は、例示的には、加入およびリース生成のためにクライアントデバイス252とインターフェースするように構成されたクラウドインターフェース256を含む。例示的な一実装では、クラウドインターフェース256は、Citrix Workspaceを用いて実装されてもよく、クライアントデバイス252は、Citrix Workspace Appを実行していてもよいが、他の適切なプラットフォームが、異なる実施形態では使用されてもよい。クラウドコンピューティングサービス255は、例示的には、ルートオブトラスト(RoT)257、接続リース発行サービス(CLIS)258、ゲートウェイサービス259、ブローカ260、およびデータベース261をさらに含み、これらについては下記にさらに記載される。
【0068】
クライアントデバイス252には、図の例ではハードウェアバック鍵ストア(hardware-backed key store)262によって作成される公開-秘密暗号化キーペアが関連付けられている。ハードウェアバック鍵ストア262は、クライアントデバイス252のオペレーティングシステム(OS)が秘密鍵にアクセスすることを防止する。クライアントデバイス252のOSは、秘密鍵を用いて暗号演算を実施するが、鍵にアクセスする/鍵をエクスポートする能力を有していない。ハードウェアバック鍵ストアの例は、たとえばパーソナルコンピュータ(PC)上のトラステッドプラットフォームモジュール(TPM)、iOS Secure Enclave、およびAndroid Hardware Key Storeを含むが、他の好適な暗号化キー生成プラットフォームが使用されてもよい。背景として、いくつかの実施形態では、TPMなどハードウェアバック鍵ストア262は、クライアントデバイス252のマザーボード上に設けられ、基本的なセキュリティ関連の機能、たとえば元来含まれる暗号化キーを提供するように設計されたマイクロチップである。ハードウェアバック鍵ストア262は、ハードウェアバスを使用することによってシステムの残りの部分と通信する。ハードウェアバック鍵ストア262を組み込んでいるクライアントデバイス252は、暗号鍵を作成し、それらを、ハードウェアバック鍵ストア262によってのみ復号することができるように暗号化することができる。鍵のラッピングまたはバインディングと称されるこのプロセスは、開示されることから鍵を保護する助けとなることができる。ハードウェアバック鍵ストア262は、ストレージルート鍵と呼ばれ、ハードウェアバック鍵ストア262それ自体内に記憶されるマスタラッピング鍵を有することができる。ハードウェアバック鍵ストア262内で作成されるストレージルート鍵のプライベート部分またはエンドースメント鍵は、他の構成要素、ソフトウェア、プロセス、またはユーザに決してさらされない。ハードウェアバック鍵ストア262は、命令を処理するためにそれ自体の内部ファームウェアおよび論理回路を使用するので、オペレーティングシステムに依拠せず、オペレーティングシステムまたはアプリケーションソフトウェアに存在し得る脆弱性にさらされない。
【0069】
図7に戻ると、クライアントデバイス252は、公開鍵をクラウドインターフェース256に提供し(
図7におけるステップ(1))、これは次いでRoT257によって公開鍵に署名させ(
図7におけるステップ(2))、署名済み公開鍵をクライアントデバイスに返す(
図7におけるステップ(3))。RoT257によって公開鍵に署名させることは、ゲートウェイ263、仮想配信アプライアンス253、およびブローカ260もまたRoTを信頼し、したがってクライアントデバイス公開鍵を認証するためにその署名を使用することができるので重要である。
【0070】
次いで、クライアントデバイス252は、接続リースを得るためにクラウドインターフェース256を介してCLIS258と通信し得る(
図7におけるステップ(4))。クライアントデバイス252の公開鍵は、ブローカ260を介して間接的に、またはクライアントデバイスによって直接、ホストまたは仮想配信アプライアンス253(たとえば、Citrix VDA)に提供され得る。クライアントデバイス252の公開鍵が仮想配信アプライアンス253に間接的に提供される場合には、安全なクライアント公開鍵送信のために、クライアントからブローカへの通信および仮想配信アプライアンスからブローカへの通信に関連付けられたセキュリティが利用され得る。しかし、これは、比較的多数のクライアント公開鍵(複数の異なるクライアントデバイス252からのもの)が間接的に仮想配信アプライアンス253に通信されることを含み得る。
【0071】
一方、クライアントデバイス252の公開鍵は、クライアントデバイスによって仮想配信アプライアンス253に直接提供することができ、これは、この場合には、ゲートウェイ263を介して行われる(
図7におけるステップ(5))。クライアントデバイス252および仮想配信アプライアンス253は共に、RoT257を信頼する。仮想配信アプライアンス253は、RoT257を信頼し、RoT公開鍵へのアクセスを有するので、仮想配信アプライアンス253は、公開鍵上のRoT署名に基づいてクライアントデバイス252の有効性を検証することができ、有効である場合には、クライアントデバイス公開鍵を信頼し得る。さらに別の実施形態では、クライアントデバイス公開鍵は、任意選択で、ブローカ260によって事前に署名を受けてもよい。クライアントデバイス252および仮想配信アプライアンス253は共に、ブローカ260を信頼する。仮想配信アプライアンス253はブローカ260を信頼し、ブローカ公開鍵へのアクセスを有するので、仮想配信アプライアンス253は、公開鍵上のブローカ署名に基づいてクライアントデバイス252の有効性を検証することができ、有効である場合には、クライアントデバイス公開鍵を信頼し得る。図の例では、クライアントデバイス252の署名済み公開鍵は、ゲートウェイ263を介して接続リースと共に仮想配信アプライアンス253に直接提供される。例示的な一実装では、ゲートウェイ263は、たとえばCitrix Gatewayを使用して実装され得、異なる実施形態において他の好適なプラットフォームが使用されてもよい。
【0072】
仮想配信アプライアンス253およびゲートウェイ263は、クラウドコネクタ264を介してブローカ260およびゲートウェイサービス259(たとえば、Citrix Secure Web Gatewayを使用して実装され得る)と通信し得る。例示的な一実施形態では、クラウドコネクタ264は、Citrix Cloud Connectorを用いて実装され得るが、異なる実施形態において他の好適なプラットフォームが使用されてもよい。Citrix Cloud Connectorは、Citrix Cloudとカスタマリソースロケーションとの間で通信のためのチャネルとして働く構成要素であり、複雑なネットワーキングまたはインフラストラクチャ構成を必要とすることなくクラウド管理を可能にする。しかし、異なる実施形態において他の好適なクラウド接続インフラストラクチャが使用されてもよい。
【0073】
クライアントデバイス252署名済み公開鍵またはクライアントデバイス署名済み公開鍵のハッシュ(拇印)は、CLIS258によって生成される接続リース内に含まれ、接続リースの署名を計算するときに含まれる接続リースのフィールドの1つである。接続リースの署名は、接続リースコンテンツが有効であり改ざんされていないことを確実にする助けとなる。その結果、接続リースは、特定の認証済みユーザだけでなく特定のクライアントデバイス252のために作成される。
【0074】
さらに、仮想配信アプライアンス253は、クライアントデバイス252が対応する秘密鍵の真のオーナであることをバリデーションするためにチャレンジレスポンスを使用し得る。最初に、仮想配信アプライアンス253は、クライアントデバイス252の公開鍵が有効であること、より具体的には、RoT257および/またはブローカ260によって署名されていることをバリデーションする(
図7におけるステップ(6))。図の例では、クライアントデバイス252の公開鍵は、上記のように、クライアントデバイスによって仮想配信アプライアンス253に直接送られている。いくつかの実施形態では、クライアントデバイス252または仮想配信アプライアンス253がCLIS258またはブローカ260に対してオフラインであるとき、接続リース取り消しが適用され得る。接続リースはオフラインモードで使用され得るので、オンラインであることは接続リースの使用のための要件ではない。仮想配信アプライアンス253によって提供される情報とブローカ260によって比較されるように、接続リースおよび取り消しリスト詳細がデータベース261内に記憶され得る。
【0075】
次に、クライアントデバイス252と仮想配信アプライアンス253との間で早期のセッションを確立したとき、たとえば、トランスポートおよびプレゼンテーションレベルのプロトコル確立後、仮想配信アプライアンス253は、その秘密鍵でナンス(暗号通信において1回使用される任意の数)に署名するようにクライアントデバイス252にチャレンジする(
図7におけるステップ(7))。仮想配信アプライアンス253は、クライアントデバイス252の公開鍵でナンスの署名を検証する。これは、クライアントデバイス252が実際に対応する秘密鍵のオーナであることを仮想配信アプライアンス253が知ることを可能にする。このステップは、いくつかの実施形態において、望むなら、クライアントデバイス252の公開鍵をRoT257および/またはブローカ260でバリデーションする前に実施することができることに留意されたい。
【0076】
さらに、仮想配信アプライアンス253は、接続リースがクライアントデバイス252の公開鍵に一致する公開鍵(または公開鍵のハッシュ)を含むことをバリデーションする。より具体的には、仮想配信アプライアンス253は、最初に、接続リース署名および日付をバリデーションし、リース上のブローカ260の署名が有効であること(仮想配信アプライアンスはRoTを信頼するので、RoT257署名済みブローカ公開鍵を使用して)、およびリースが満了していないことを確認する。さらに、仮想配信アプライアンス253は、接続リースがクライアントデバイス252の公開鍵、またはクライアントデバイス公開鍵のハッシュを含むことを検証し、その場合、仮想配信アプライアンスは、クライアントデバイス公開鍵のハッシュを計算する。接続リースが、一致するクライアントデバイス252の公開鍵を含む場合には、仮想配信アプライアンス253は、それがそのために作成されたクライアントデバイスから接続リースが送られたことを確認する。
【0077】
その結果、接続リースがクライアントデバイス252から盗難にあい、悪意のあるクライアントデバイスから使用される場合、悪意のあるクライアントと仮想配信アプライアンス253との間のセッション確立は成功しないことになる。なぜなら、悪意のあるクライアントデバイスは、クライアント秘密鍵へのアクセスを有しておらず、この鍵は、エクスポート不可能であり、ハードウェアバック鍵ストア262内に記憶されるからである。
【0078】
図6を参照して簡単に上述したように、例示された接続リース管理インフラストラクチャは、ターゲットリソースロケーションとしての、仮想配信アプライアンス253(たとえば、Citrix VDAなど)から、ブローカ260(たとえば、Citrix Virtual Apps and Desktop Broker)への「セッション用逆準備(reverse prepare for session)」動作を使用して、接続リースバリデーションも有利に可能にする。これは、クライアントデバイス252と仮想配信アプライアンス253との間で行われる接続リース交換と共に、ブローカ260および仮想配信アプライアンス253からの署名された応答を利用して行われ得る。下記でさらに説明されることになるように、これらは、接続リース処理に関してレジリエンシ、セキュリティ、性能およびユーザエクスペリエンス(UX)のために重要な役割を果たす。さらに、下記でさらに説明されることになるように、接続リース管理インフラストラクチャは、レジリエンシを高め、エンタイトルメント、ポリシおよび接続ステアリングに関する正確なリアルタイムデータを促進するための階層的なオポチュニスティックアプローチにおける段階として、オンラインモード対オフラインモードも可能にする。
【0079】
より具体的には、上記のように、接続リースは、長期使用(たとえば、1週間)のためのエンタイトルメントおよびリソースロケーションデータの静的なスナップショットを含む。しかし、いくつかの状況において、ユーザエンタイトルメントの動的な性質およびパブリッシュされたリソースロケーションの状態と結び付けられた、CLの静的な性質は、レジリエンシまたは性能の問題をもたらすことがある。たとえば、個々のリソースロケーション(たとえば、仮想配信アプライアンス253)は、異なるマシン上でユーザが既に実行しているセッションに関する知識を有していないことがある。仮想配信アプライアンス間通信は、複雑となり、特別なセキュリティ対策を必要とし、最新のソフトウェアバージョンにより維持することが困難となり得る。またさらに、VDA間通信が、仮想配信アプライアンス253に対して、それらの状態、ユーザセッションなどの知識を交換するために使用可能であったとしても、クライアントデバイス252が、それを正しい仮想配信アプライアンスインスタンスにリダイレクトするために、潜在的に悪意のある仮想配信アプライアンスに何らかの理由で依拠するようになる場合、セキュリティ問題は依然として存在し得る。
【0080】
ユーザ接続リースごとの仮想配信アプライアンス253割り当てのインテリジェントな分布のための技法は、ユーザがそれらの好適な仮想配信アプライアンスインスタンス上でそれらのセッションに戻る可能性を改善するが、それらは常に作動することを保証されるとは限らない。たとえば、仮想配信アプライアンスは、故障していたり、またはオーバーロードされていたりすることがあり(少ない使用可能なCPU、メモリまたはネットワーク帯域幅)、ユーザは、(たとえば、高い使用量、停止状態などに基づいて、接続リースにおいてリストされた代替の仮想配信アプライアンスにクライアントデバイスを向ける、接続リースファンアウトアプローチの結果として)別の仮想配信アプライアンスインスタンスへリダイレクトされていることがある。結果として、ユーザは、新しいセッションを獲得し、ユーザが他のアプライアンス上で以前のセッションにおいて中止した場所からユーザの作業を継続することができないことになる。
【0081】
別の例示的な問題において、ユーザは、既存のセッションにおいてアプリケーションとセッション共有することができないことがあり、これは、性能問題(ログオン時間)、(仮想配信アプライアンスのための)スケーラビリティ問題、およびユーザエクスペリエンス問題(たとえば、直接的なコピー/ペーストまたは他のアプリ間通信なし)をもたらす。さらに、クライアントデバイス252またはゲートウェイ263は、接続リースにおいてリストされた次の仮想配信アプライアンスインスタンスに接続しようと繰り返し試行しなければならないので、いくつかの状況における上記の接続リースアプローチはまた、性能問題を潜在的に引き起こすことがある。
【0082】
さらに、セキュリティ問題は、プールされた仮想配信アプライアンス253の使用に関して存在することがあり、これは最初の使用時に割り当てられるマシンインスタンスである。プールされた仮想配信アプライアンス253上のソフトウェアが、プールされた仮想配信アプライアンスは依然として使用されていないと見えるように、何らかの理由で悪意を持って改ざんされた場合、異なるユーザは、それもそれらの接続リースにおいてリストされている場合、同じ仮想配信アプライアンス253に接続し、ブローカ260によって成功裡に認定され、シングルサインオンを介して、またはアプライアンス253にインタラクティブに、ユーザ自身のクレデンシャルを提供し得る。その結果、仮想配信アプライアンス253上の改ざんされたソフトウェアは、悪意のあるユーザに代わって、ユーザクレデンシャルを収集し得る。したがって、悪意のあるユーザは、他の疑いを持たないユーザのクレデンシャルを潜在的に収集し得る。
【0083】
別の潜在的な問題は、接続リースにおいてリストされた仮想配信アプライアンス253がクロックドリフトなどの問題を経験し、したがって、誤った時間バリデーションに起因して、接続リース交換中に本来なら有効な接続リースを拒否するという問題である。その仮想配信アプライアンス253が、多くのユーザの接続リースに含まれる場合、ドリフトしたクロックを有する仮想配信アプライアンスが「ブラックホール」になることになるという点で、停止状態が発生することがある。同様に、仮想配信アプライアンス253上のソフトウェアは、潜在的に破損し得、アプライアンス253の鍵は、仮想配信アプライアンスが長い間オフラインであり、鍵が回転された場合、無効になり得る。ブローカ260と接触しなければ、仮想配信アプライアンス253は、ここで再び接続を拒否し、「ブラックホール」になるリスクを冒し得る。
【0084】
電源管理シナリオにおいて、また別の問題は、ユーザの接続リースにおいてリストされた、仮想配信アプライアンス253の限定されたセットが、もはや使用可能ではないかもしれないということ(たとえば、マシンシャットダウンなど)である。同様に、接続リースにおけるプールされた仮想配信アプライアンス253のセットは、他のユーザによって既に使用されていることがある。結果として、ユーザの接続リースにおいてリストされたマシンは使用不可能であるので、たとえ使用可能なマシンがあったとしても、ユーザは、接続することができないことになる。
【0085】
本明細書において記載されるアプローチは、有利に、これらの技術的な課題を克服するのを助け、追加の利点を提示する。より具体的には、ブローカ260が使用可能であり、またはオンラインである場合の、正常運転条件中に、仮想配信アプライアンス253は、接続リースをバリデーションし、クライアントデバイス252と要求されたリソース(仮想コンピューティングセッション254)とを接続するために、ブローカからのリアルタイムデータおよび署名された応答を使用する。すなわち、仮想配信アプライアンス253は、接続リースにおけるエンタイトルメントおよびリソースロケーションデータの静的なスナップショットに制約されないが、代わりに、セッションアクセスを提供する場合に(
図7におけるステップ(8))、ブローカ260からの、リアルタイムの、更新済みのパブリッシュリソースエンタイトルメントデータにアクセスする。
【0086】
この点では、仮想配信アプライアンス253は、たとえば、エンタイトルメント、ポリシおよび接続ステアリング(元々要求されたものとは異なる仮想配信アプライアンスへクライアントデバイス252を向けること)に関する、現在のリアルタイムかつ最新のデータを提供するために、セッション用逆準備動作を介してブローカ260と通信するべく、セッションアクセス時に仮想「記憶サービス」として使用され得る。ブローカ260がオンラインであり、有効な接続リース要求が仮想配信アプライアンス253によって提示される場合に発生する、例示的なセッション用逆準備シーケンスが、
図8のシーケンス
図280に示されている。図の例において、仮想配信アプライアンス253におけるプロトコルスタック281は、接続リース署名および日付の最初のバリデーションを実施し、次いで、それを接続リース対称鍵と共に仮想配信アプライアンス253におけるセッションマネージャ282へ渡し、いくつかの実施形態では、仮想配信アプライアンス253公開鍵を用いて暗号化されてもよく、その結果、セッションマネージャ282は、接続リースを構文解析し、そのペイロードを抽出し得る。いくつかの実施形態では、接続リースは、JavaScript Object Notation (JSON)文書の形態であってもよく、少なくともマニフェストセクションと、ペイロードセクションと、署名セクションとから構成されてもよい。接続リースのマニフェストは、平文であってもよく、すなわち、暗号化されていなくてもよく、接続リース識別子(ID)、タイプ(たとえば、Citrix Virtual Apps and Desktops)、有効期間(有効開始日時および有効終了日時)、ユーザID、カスタマID、ワークスペースストア(たとえば、クラウドインターフェース256)ユニフォームリソースロケータ(URL)、パブリッシュされたリソース鍵および名称、エンドポイント(たとえば、クライアントデバイス252)公開鍵拇印(たとえば、ハッシュ)などの情報を含み得る。接続リースペイロードは、前述の対称鍵を用いて暗号化され得、仮想配信アプライアンスIPアドレスおよび/または完全修飾ドメイン名(FQDN)、ポート番号、トランスポートタイプ、プロキシ情報、ゾーン情報、ゲートウェイ情報、クラウドコネクタ情報、仮想セッション嗜好(たとえば、セッション解像度、オーディオ、ビデオ、USBおよび他のデバイスタイプ嗜好、シームレスアプリケーション対デスクトップモード)などのうちの少なくとも1つを含み得る。接続リース署名は、接続リースが和らげられていないことを確実にするために、マニフェストセクションとペイロードセクションとの両方に適用され得る。
図8のシーケンス
図280に戻ると、セッションマネージャ282は、仮想配信アプライアンス253における暗号サービス283とさらに通信し得、暗号サービス283は、仮想配信アプライアンス253秘密鍵を用いて接続リース対称鍵を復号し、接続リース対称鍵を用いてペイロードを復号し、復号されたペイロードをセッションマネージャ282に返し得る。
【0087】
前述のように、接続リースマニフェストは、ユーザ識別子(ID)と、パブリッシュされたリソース鍵とを既に含むので、次いで、セッションマネージャ282は、接続リースマニフェストおよびペイロードを仮想配信アプライアンス253のブローカエージェント284へ転送することによって、セッション用逆準備動作の開始に進んでもよく、ブローカエージェント284は、バリデーション要求をブローカ260に渡す。ブローカ260は、次いで、セッション結果をバリデーションおよび署名し、(たとえば、許可または拒否された要求、ポリシブロブなどを示す状態の形態で)ブローカエージェント284に適当な情報を返す。次いで、ブローカエージェント284は、仮想配信アプライアンス253におけるポリシブロブを適用し、ブローカ署名されたバリデーションされたセッション結果(たとえばvalidateSessionResult)をセッションマネージャ282に返す。したがって、セッションマネージャ282は、リソース接続チケット(たとえば、仮想配信アプライアンス253接続チケット)を作成し得、次いで、これは、ブローカ署名された(バリデーションされた)セッション結果と共にプロトコルスタック281へ提供される。
【0088】
仮想配信アプライアンス253からブローカ260へのセッション用逆準備呼は、validateSessionResultを仮想配信アプライアンス253に返し、これは、要求の状態(たとえば、許可、拒否、別の仮想配信アプライアンスインスタンスへのリダイレクトなど)と、他の情報とを含む。ブローカ260は、性能およびレジリエンシ、たとえば、他のサービスからの独立のためにvalidateSessionResultに署名する。ブローカ260の公開鍵は、有利には、ユーザのリソース接続リースに含まれている。したがって、クライアントデバイス252およびゲートウェイ263は、それらが接続リース自体を既にバリデーションしており、信頼しているので、validateSessionResultの署名をバリデーションすることができる。代替的実施形態において、ルートオブトラスト(RoT)257の秘密鍵によって署名されたブローカ260の公開鍵は、有利には、署名されたvalidateSessionResult自体に含まれ得る。したがって、クライアントデバイス252およびゲートウェイ263は、それら両方がRoT257を信頼しているので、RoT257の公開鍵を使用して、ブローカ269の含まれた公開鍵の署名をまずバリデーションし、次いで、ブローカ269のバリデーションされた公開鍵を使用して、validateSessionResultの署名をバリデーションすることができる。
図11の表310は、ブローカ260のオンライン対停止状態モードにおけるvalidateSessionResultの一部として返される値をリストしたものであり、ただし、「許可」行には、ブローカがオンラインである場合、有効な接続リースのためにブローカ260によって署名された(バリデーションされた)validateSessionResultが提供されることが示されている。
【0089】
次に、ブローカ260登録シーケンスに対する例示的な仮想配信アプライアンス253が、
図9A~
図9Bのシーケンス
図290を参照して記載される。鍵初期化は、接続リース発行サービス(CLIS)258がその公開鍵をルートオブトラスト(RoT)257に提供することから始まり、公開鍵は署名され、RoT公開鍵と共にCLISに返され、次いで、マシン作成サービス(MCS:Machine Creation Service)291およびブローカ26へ渡される。MCS 291は、仮想配信アプライアンス253汎用一意識別子(UUID)と、仮想配信アプライアンス秘密/公開鍵ペアとを生成し、RoT257によって署名された公開鍵を有する。次いで、MCS291は、ブローカ260から署名された応答を要求し、接続要求に対する応答をブローカ署名された「許可」の形態で受信し、この時点で、MCSは、この情報を含む仮想配信アプライアンス253のための識別ディスクを作成し得る。
【0090】
次いで、識別ディスクは、仮想配信アプライアンスレジストリ292または等価なアクセス制御リスト(ACL)保護されたメモリロケーションをプロビジョニングするために使用され得、これは、ブローカ260が故障しているか、またはオフラインであり、仮想配信アプライアンス253が登録されていない場合、暗号演算を可能にする。初期化のとき、暗号サービス283は、ブローカ停止状態についての表310の「許可」行(これは下記でさらに論じられることになる)において示されるように、ブローカ260が故障しており、仮想配信アプライアンスが登録されていない場合、署名された応答を可能にするために、仮想配信アプライアンスレジストリ292から、昇格された権限(たとえばローカルシステム)で、RoT257公開鍵と、RoTによって署名されたCLIS258および仮想配信アプライアンス253公開鍵と、仮想配信アプライアンス253秘密鍵とを読み取り得る。ブローカエージェント284が初期化する場合、仮想配信アプライアンス253 UUIDおよびブローカ260署名された「許可」は、仮想配信アプライアンスレジストリ292から読み取られ、仮想配信アプライアンス登録は、ブローカエージェント284からの仮想配信アプライアンスUUIDをブローカ260に通信して、登録プロセスを完了させることによって実施される。
【0091】
次に、たとえば、トラステッドプラットフォームモジュール(TPM)またはソフトウェア鍵ストレージプロバイダ(KSP)301を使用した、ブローカ260登録シーケンスに対する別の例示的な仮想配信アプライアンス253が、
図10A~
図10Bのシーケンス
図300を参照して記載される。鍵初期化シーケンスは、上記で論じたようにブローカ260と、CLIS258と、RoT257との間で、まず実施される。初期化のとき、暗号サービス283は、昇格された権限(たとえばローカルシステム)で、仮想配信アプライアンスレジストリ292から、仮想配信アプライアンス253秘密鍵を読み取り得る。この鍵が存在しない場合、TPM301は、仮想配信アプライアンス253公開/秘密鍵ペアをまず生成し、公開鍵を暗号サービス283に提供し得る。次いで、暗号サービス283は、仮想配信アプライアンスレジストリ292内に公開鍵を記憶し得る。仮想配信アプライアンス253UUIDが、既に存在する場合、ブローカエージェント284は、それを仮想配信アプライアンスレジストリ292から読み取る(そうでない場合、ブローカエージェント284は、それを生成し、次いで、それを仮想配信アプライアンスレジストリ292内に記憶することになる)。ブローカエージェント284は、仮想配信アプライアンスレジストリ292から、仮想配信アプライアンス253公開鍵も読み取る。次いで、仮想配信アプライアンス253登録は、ブローカエージェント284からの仮想配信アプライアンス253 UUIDおよび公開鍵をブローカ260に提供することによって実施され得る。ブローカ260は、RoT257によって署名された仮想配信アプライアンス253公開鍵を有する。次いで、ブローカ260は、ブローカ署名された「許可」を生成して、ブローカ260が故障している場合、仮想配信アプライアンス253による署名された応答を可能にする。次いで、ブローカ260は、登録応答をブローカエージェント284に提供し、ブローカエージェント284は、次いで、RoT257によって署名されたRoT257公開鍵、CLIS258および仮想配信アプライアンス253公開鍵、ならびに仮想配信アプライアンスレジストリ292に対するブローカ署名された「許可」を書き込む。
【0092】
上記の仮想配信アプライアンス253登録シーケンスの結果、ブローカ260がオフラインである場合、仮想配信アプライアンスは、有利には、一時的なまたは代行ブローカとして引き継いで、ブローカエージェント284への安全な仮想セッションアクセスを依然として提供し得る。上記のように、表310は、様々なブローカ260のオンラインおよび停止状態モードについての例示的なセッションバリデーションの結果を要約しており、これは、署名された「許可」、署名された「拒否」、署名された「リダイレクトターゲット」、および「ソフト拒否」を含む。上記のように、「許可」応答(この仮想配信アプライアンスにおいて接続を受け入れる)と、「リダイレクトターゲット」応答(異なるターゲットに仮想配信アプライアンスへリダイレクトする)との両方が署名済みであり、それによって、クライアントデバイス252および/またはゲートウェイ263が、接続を信頼する前に、応答をバリデーションすることを可能にするので、セキュリティに関して、この構成は、有利には、「悪意のある」仮想配信アプライアンス253へリダイレクトされことを回避するのを助ける。
【0093】
さらに、この構成は、損なわれた仮想配信アプライアンス253がユーザをそそのかし、ユーザ自身のクレデンシャル(たとえば、管理者アクセスを有する、上記のプールされた仮想配信アプライアンス)を盗むことを回避することを助ける。より具体的には、プールされた仮想配信アプライアンス253構成に対して、記憶された事前署名アロー(pre-signed allow)は、たとえば、ブローカエージェント284が最初の(単一の)ユーザ接続を受け入れることを許可し、その後、事前署名アローは、ブローカエージェントから自動的に除去され得る。したがって、セッション要求バリデーションは、一時的なブローカ停止状態に基づいて直ちには中止せず、それでもなお停止状態が持続する場合、さらなるクライアントデバイス252は、仮想配信アプライアンス253を使用することを許可されないことになり、それらの関連付けられたユーザクレデンシャルが上記のように盗まれるという可能性を回避する。
【0094】
例示的な構成は、有利には、オフラインブローカ260モードとオンラインブローカ260モードの両方において、拡張されたレジリエンシを提供するのも助ける。より具体的には、オフラインモードにおいて、仮想配信アプライアンス253による「ソフト拒否」の使用は、クロックドリフト、または鍵満了/回転のような他の仮想配信アプライアンス障害、および接続リース署名バリデーション障害から保護する助けとなる。すなわち、ソフト拒否は、上記の接続リース機構を介して、クライアントデバイス252を異なる仮想配信アプライアンス253へ黙示的にリダイレクトし、その結果、第1の仮想配信アプライアンスが、クロックドリフトなどに起因して接続リースをバリデーションすることができない場合、クライアントデバイス252は、クライアントデバイスがサービスの欠如を体験することのないように、接続リースを適切にバリデーションすることができる、クライアントの接続リースリソースロケーションにおいて既にリストされている、別の仮想配信アプライアンスへ、依然として黙示的にリダイレクトされ得る。換言すれば、「ソフト拒否」を受信した後、(たとえば、仮想配信アプライアンスへの直接接続のための)クライアントデバイス252および/または(たとえば、ゲートウェイ接続のための)ゲートウェイ263は、接続リースリソースロケーションにおいてリストされている、次の仮想配信アプライアンスを選び、それへの接続を代わりに試みることになる。次の使用可能な仮想配信アプライアンスを選ぶこの接続プロセスは、「ファンアウト」とも称され得る。この目的のために、ブローカエージェント284は、(ブローカ260ができるように)要求を拒否しないが、代わりに「ソフト拒否」を使用する。
【0095】
オンラインモードにおいて、「リダイレクトターゲット」は、たとえば、電源管理問題またはプールされたVDAが既に使用中である結果として、現在の接続リースリソースロケーションの外部の使用可能な仮想配信アプライアンス253へのリダイレクションを同様に可能にし、ここでも、クライアントデバイス252が、その接続リースにおける特定の仮想配信アプライアンスにおける局所的な問題が理由で、サービスの低下を経験することを防止する助けとなり得る。(ブローカ260がオンラインであることを示唆する)「リダイレクトターゲットを用いた性能に関して、このアプローチは、接続リース「ファンアウト」アプローチを回避して、より良好な接続速度を提供するだけではなく、たとえば、以前に起動された異なるアプリケーションとのセッション共有も可能にする。さらに、「リダイレクトターゲット」(オンラインブローカ260モード)を用いたユーザエクスペリエンスは、新しいセッションを獲得し、作業を再使用しないこととは対照的に、ユーザが既存のセッションに再接続することを可能にする。たとえば、「リダイレクトターゲット」を使用しなければ、接続するべき仮想配信アプライアンスを選ぶことは、接続リースリソースロケーションにおいて既にリストされているものに、および指定された選択の順序に、限定され得る。可能なシナリオにおいて、クライアントデバイス252のユーザは、第1の仮想配信アプライアンスに最初に接続され、アプリケーションまたはデスクトップセッションを開始していることがある。たとえば、第1選択の仮想配信アプライアンスが、その時に使用不能であったか、またはオーバーロードであった場合、この第1の仮想配信アプライアンスは、必ずしも接続リースリソースロケーション順序において第1の選択であったとは限らない。その後になって、ユーザは、第1の仮想配信アプライアンス上で既存のセッションに再接続することを試み得る。接続リースリソースロケーション順序に厳密に従うことは、クライアントデバイス252のユーザを、第1選択の仮想配信アプライアンスに、それが今は使用可能であると仮定して、接続することになり、したがって、作業を再使用する代わりに、ユーザを新しいセッションに割り当てる。「リダイレクトターゲット」は、ユーザを、既にそれらのセッションをホストしている仮想配信アプライアンスに、たとえそれが接続リースリソースロケーションにおいて規定された第1選択ではなかったとしても、リダイレクトすることによって、問題を解決する。
【0096】
例示的な一実装では、セッション結果は、「ミニ」接続リースを使用して、バリデーションされてもよい。たとえば、ミニ接続リースは、「redirectTarget」において使用される「connectionDetails」を含むJSONであってもよい。例示的なJSONミニ接続リーススクリプトは、下記に述べられる。
{
"validateSessionResult": {
"status": "allow, deny, softDeny, redirectTarget",
"reason": "empty, clInvalid, clExpired, clRevoked",
"connectionDetails": {
"address": "10.1.2.2",
"port": "2598",
"protocol": "TCP"
},
"signature": {
"signingEntity": "XD Broker",
"date": "2018-10-03T03:16:56.6808507Z",
"alg": null,
"kid": "Unique identifier of the key used to sign",
"value": "Encrypted with XD Broker private key (hash(key))"
}
}
}
【0097】
別の例示的な実施形態では、ブローカ260公開鍵は、接続リース内に含まれていない。むしろ、ブローカ260公開鍵は、RoT257秘密鍵によって署名される。次いで、各署名されたバリデーションオブジェクト(validateSessionResult)と共に、ブローカ260は、RoT257秘密鍵によって署名された、そのブローカ公開鍵も返す。クライアント252および/またはゲートウェイ263は、RoT257公開鍵を信頼する。したがって、クライアント252および/またはゲートウェイ263は、RoT257公開鍵を使用して、ブローカ260公開鍵の署名をバリデーションすることができる。今や、ブローカ260公開鍵は、それを接続リース内に含める必要なしに、信頼される。その結果、バリデーションオブジェクトは、ブローカ260公開鍵を使用して、バリデーションされ、または認証され得る。
【0098】
様々な接続アプローチが、クライアントデバイス252と仮想配信アプライアンス253との間で使用され得る。クライアントデバイス252と仮想配信アプライアンス253との間に直接接続がある(ゲートウェイ263なし)場合、validateSessionResultは、仮想配信アプライアンス253からクライアントデバイス252に送られ得、クライアントデバイスは、バリデーションを実施する。ゲートウェイ263が存在する場合、validateSessionResultは、仮想配信アプライアンス253からゲートウェイへ最初に送られ、ゲートウェイは、それをバリデーションする。次いで、結果のタイプ(たとえば、許可、拒否など)に依存して、それはクライアントデバイス252へ中継され得る。例示的な実装では、ソフト拒否およびリダイレクトターゲットは、ゲートウェイ263によって扱われ、クライアント252へ中継されない。次いで、validateSessionResultも、ゲートウェイ263からクライアントデバイス252に送られ得、その結果、クライアントデバイスも同様に、それをバリデーションし得る。
【0099】
次に、さらなる方法態様が、
図12のフロー
図320に関して記載されることになる。ブロック321で始まり、方法は、コンピューティングデバイス201においてクライアントデバイス203a~203nのためのパブリッシュリソースエンタイトルメントを記憶および更新することと、ブロック322~323で、仮想配信アプライアンス204a~204nを使用して、クライアントデバイス203a~203nから接続要求を受信することとから始まる。上記のように、接続要求は、クライアントデバイス203a~203nのためのパブリッシュリソースエンタイトルメント202に基づいて発行された接続リースを含み、仮想配信アプライアンス204a~204nは、コンピューティングデバイス201から接続リースのバリデーションを要求する(ブロック324)。この方法は、例示的に、ブロック325で、コンピューティングデバイス201において、仮想配信アプライアンス204a~204nからのバリデーション要求に応答して、接続リースと更新されたパブリッシュリソースエンタイトルメント202とを比較し、それに基づいて仮想セッション要求をバリデーションすることをさらに含む。この方法は、例示的には、ブロック326で、仮想配信アプライアンス204a~204nにおいて、コンピューティングデバイス201からの接続リースのバリデーションに応答して、クライアントデバイス203a~203nに、パブリッシュリソースエンタイトルメント202に対応する仮想セッションへのアクセスを提供することも含み、これは、例示的には、
図12の方法を終わらせる(ブロック327)。
【0100】
追加の方法態様も、
図13のフロー
図330に示される。ブロック331で始まり、上記のように、接続リースも時間ベースであってよく、たとえば、ブロック332~333で、仮想配信アプライアンス204a~204nは、コンピューティングデバイス201に接続リースのバリデーションを要求する前に、接続リースの時間ベースのバリデーションをさらに実施し得る。すなわち、接続リースは、ある一定期間に対して発行され、この時間外での使用に対しては、新しくされるか、または再発行されない限り、有効ではない。また上記のように、ブロック334~335で、接続リースは、それぞれのクライアントデバイス203a~203nに割り当てられた仮想配信アプライアンス204a~204nのサブセットをリストしてもよく、コンピューティングデバイス201は、(たとえば、使用閾値を越える)仮想配信アプライアンス使用レベルに基づいて、仮想配信アプライアンスのリストされたサブセット内またはこのサブセット外の仮想配信アプライアンスへ、バリデーションされた接続リースを用いてクライアントデバイスをリダイレクトしてもよい。さらに、接続リースは、コンピューティングデバイス201の秘密暗号化キーを使用して署名され得、仮想配信アプライアンスは、上記でもさらに論じられたように、コンピューティングデバイスに接続リースのバリデーションを要求する前に、コンピューティングデバイスの公開暗号化キーを使用して、接続リースをバリデーションし得る(ブロック336)。
図13の方法は、例示的には、ブロック337で終わる。
【0101】
本開示を読めば当業者には理解されるように、本明細書に記載の様々な態様は、デバイス、方法、またはコンピュータプログラム製品(たとえば、記載の動作またはステップを実施するためのコンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体)として具体化され得る。したがって、これらの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアの態様とハードウェアの態様の組合せの実施形態の形態をとり得る。
【0102】
さらに、そのような態様は、1つまたは複数のコンピュータ可読記憶媒体によって記憶されたコンピュータプログラム製品の形態をとり得、コンピュータ可読プログラムコード、または命令が記憶媒体内または記憶媒体上で具体化される。ハードディスク、CD-ROM、光記憶デバイス、磁気記憶デバイス、および/またはそれらの任意の組合せを含む任意の好適なコンピュータ可読記憶媒体が使用されてよい。
【0103】
多数の修正および他の実施形態が、前述の記載および関連の図面に提示されている教示の利益を有する当業者には想起されよう。したがって、前述は例示的な実施形態に限定されるべきではなく、修正および他の実施形態が添付の特許請求の範囲内に含まれることが意図されていることを理解されたい。
【国際調査報告】