様々な実施の形態の以下の説明では、上記で特定され、本明細書の一部を形成し、本明細書に記載する態様が実施され得る様々な実施の形態の例として示される添付図面を参照する。本明細書に記載された範囲を逸脱することなく、他の実施の形態を利用してよく、構造的及び機能的な修正を行ってよいことを理解されたい。様々な態様は、他の実施の形態を行うことができ、様々な異なる方法で実践または実行が可能である。
以下でより詳細に記載する主題の一般的な導入として、本明細書に記載する態様は、仮想アプリケーションの起動時間を短縮することを目的とする。例えば、確立された安全なセッション中の第1の受信機インスタンスのプロトコル状態は、保持されてよく、後続の受信機インスタンスと共有されてよい。プロトコル状態を保持することにより、後続の受信機インスタンスは、安全なセッションを再確立するために以前は必要であった1つまたは複数の計算コストのかかるステップを回避し得る。
本明細書で使用されている表現及び用語は、説明を目的としており、限定的なものと見なすべきでないことも理解されたい。むしろ、本明細書で使用される語句及び用語は、それらの最も広い解釈及び意味を与えられるべきである。「including(含む)」、「comprising(含む)」、及びこれらの変形の使用は、その後に列挙される項目及びそれらの同等物、並びに、追加の項目及びそれらの同等物を包含することを意味する。「取り付けられた」、「接続された」、「結合された」、「配置された」、「係合された」という用語及び同様の用語の使用は、直接及び間接の両方の取り付け、接続、結合、配置、及び係合を含むことを意味する。
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、及びネットワークは、スタンドアロン、ネットワーク、リモートアクセス(リモートデスクトップの別名でも知られる)、仮想、及び/または、クラウドベースの環境等を含む、様々な異なるシステム環境で利用されてよい。図1は、本明細書に記載する1つまたは複数の例示的な態様をスタンドアロン及び/またはネットワーク環境で実施するために使用され得るシステムアーキテクチャ及びデータ処理デバイスの一例を示す。様々なネットワークノード103、105、107、及び109は、インターネット等の広域ネットワーク(WAN)101を介して相互接続されてよい。プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイヤレスネットワーク、パーソナルネットワーク(PAN)等、他のネットワークも追加または代替として使用されてよい。ネットワーク101は、例示を目的としたものであり、より少ないまたは追加のコンピュータネットワークで置き換えられてもよい。ローカルエリアネットワーク133は、任意の既知のLANトポロジの1つまたは複数を有してよく、イーサネット等の様々な異なるプロトコルの1つまたは複数を使用してよい。デバイス103、105、107、及び109並びに他のデバイス(図示せず)は、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークの1つまたは複数に接続されてよい。
本明細書で使用され、図面に示される「ネットワーク」という用語は、リモートストレージデバイスが1つまたは複数の通信パスを介して一緒に結合されるシステムだけでなく、ストレージ機能を持つそのようなシステムに時々結合され得るスタンドアロンデバイスも指す。したがって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、すべての物理ネットワークにわたって存在する(単一のエンティティに起因する)データで構成される「コンテンツネットワーク」も含む。
コンポーネントは、データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107、109を含み得る。データサーバ103は、本明細書に記載される1つまたは複数の例示的な態様を実行するためのデータベース及び制御ソフトウェアの全体的なアクセス、制御、及び管理を行う。データサーバ103は、ウェブサーバ105に接続されてよく、ユーザはウェブサーバ105を通して要求に応じてデータと対話し、データを取得する。あるいは、データサーバ103は、それ自体がウェブサーバとして機能し、インターネットに直接接続されてもよい。データサーバ103は、ローカルエリアネットワーク133、広域ネットワーク101(例えば、インターネット)を介して、直接もしくは間接接続を介して、または他の何らかのネットワークを介して、ウェブサーバ105に接続されてよい。ユーザは、リモートコンピュータ107、109を使用して、例えば、ウェブブラウザを使用してウェブサーバ105によってホストされる1つまたは複数の外部に公開されたウェブサイトを介してデータサーバ103に接続して、データサーバ103と対話してよい。クライアントコンピュータ107、109は、データサーバ103に記憶されたデータにアクセスするためにデータサーバ103と協力して使用されてよい、または、他の目的のために使用されてよい。例えば、クライアント装置107から、ユーザは、当技術分野で知られているように、インターネットブラウザを使用して、または、(インターネット等の)コンピュータネットワークを介してウェブサーバ105及び/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスしてよい。
サーバとアプリケーションは、同じ物理マシン上で組み合わせられて、別々の仮想アドレスまたは論理アドレスを保持してよい、または、別々の物理マシン上に常駐してよい。図1は、使用され得るネットワークアーキテクチャのほんの一例を示しており、当業者は、本明細書でさらに説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは様々であってよく、それらが提供する機能に依存することを理解されよう。例えば、ウェブサーバ105及びデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わされてよい。
各コンポーネント103、105、107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってよい。データサーバ103は、例えば、データサーバ103の全体的な動作を制御するプロセッサ111を含んでよい。データサーバ103はさらに、ランダムアクセスメモリ(RAM)113、読み取り専用メモリ(ROM)115、ネットワークインタフェース117、入力/出力インタフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタ等)、及びメモリ121を含んでよい。入力/出力(I/O)119は、データまたはファイルの読み取り、書き込み、表示、及び/または印刷のための様々なインタフェースユニット及びドライブを含んでよい。メモリ121は、データ処理デバイス103の全体的な動作を制御するオペレーティングシステムソフトウェア123、データサーバ103に本明細書に記載の態様を実行するように命令する制御ロジック125、並びに、二次的な機能、サポート機能、及び/または本明細書に記載する態様と併せて使用されても使用されなくてもよい他の機能を提供する他のアプリケーションソフトウェア127をさらに記憶してよい。制御ロジックは、本明細書ではデータサーバソフトウェア125と呼ばれることもある。データサーバソフトウェアの機能は、制御ロジックにコード化されたルールに基づいて自動的に行われた操作または決定、システムに入力を提供するユーザが手動で行った操作または決定、及び/または、ユーザ入力に基づく自動処理の組み合わせ(クエリ、データ更新など)を指してよい。
メモリ121はまた、第1のデータベース129及び第2のデータベース131を含み、本明細書に記載する1つまたは複数の態様の実行で使用されるデータを記憶してよい。一部の実施の形態では、第1のデータベースは、(例えば、別個のテーブル、レポート等として)第2のデータベースを含んでよい。つまり、情報は、システム設計に応じて、単一のデータベースに記憶できる、または、異なる論理データベース、仮想データベース、もしくは物理データベースに分離できる。デバイス105、107、及び109は、デバイス103に関して記載したのと同様または異なるアーキテクチャを有してよい。本明細書に記載されるデータ処理デバイス103(またはデバイス105、107、または109)の機能が、複数のデータ処理デバイスに分散されて、例えば、複数のコンピュータに処理負荷を分散させ、地理的位置、ユーザアクセスレベル、サービス品質(QoS)等に基づいてトランザクションを分離してよいことを、当業者は理解されよう。
1つまたは複数の態様は、本明細書に記載の1つまたは複数のコンピュータまたは他のデバイスによって実行される、1つまたは複数のプログラムモジュール等、コンピュータで使用可能もしくは読み取り可能なデータ及び/またはコンピュータ実行可能命令で具体化されてよい。一般に、プログラムモジュールは、コンピュータまたは他のデバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。モジュールは、後に実行のためにコンパイルされるソースコードプログラミング言語で記述されてよい、または、ハイパーテキストマークアップ言語(HTML)や拡張マークアップ言語(XML)(に限らないが)等のスクリプト言語で記述されてよい。コンピュータ実行可能命令は、不揮発性記憶装置等のコンピュータ可読媒体に記憶されてよい。ハードディスク、CD-ROM、光学記憶装置、磁気記憶装置、及び/または、それらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてよい。さらに、本明細書に記載するデータまたはイベントを表す様々な伝送(非ストレージ)媒体は、金属線、光ファイバ、及び/または無線伝送媒体(例えば、空気及び/または空間)等、信号を伝える媒体を通して移動する電磁波の形で、送信元と宛先の間で伝えられてよい。本明細書に記載する様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてよい。したがって、様々な機能が、ソフトウェア、ファームウェア、及び/または、集積回路、フィールドプログラマブルゲートアレイ(FPGA)等のハードウェアもしくはハードウェア同等物の形で全体的または部分的に具体化されてよい。特定のデータ構造を使用して、本明細書に記載する1つまたは複数の態様をより効果的に実装してよく、そのようなデータ構造は、本明細書に記載するコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
さらに図2を参照すると、本明細書に記載する1つまたは複数の態様は、リモートアクセス環境で実施されてよい。図2は、本明細書に記載する1つまたは複数の例示的な態様に従って使用され得る例示的なコンピューティング環境200内のコンピューティングデバイス201を含む例示的なシステムアーキテクチャを示す。コンピューティングデバイス201は、クライアントアクセスデバイスに仮想マシンを提供するように構成された単一サーバまたはマルチサーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)のサーバ206aとして使用されてよい。コンピューティングデバイス201は、RAM205、ROM207、入力/出力(I/O)モジュール209、及びメモリ215を含む、サーバ及びその関連コンポーネントの全体的な動作を制御するためのプロセッサ203を有してよい。
I/Oモジュール209は、コンピューティングデバイス201のユーザが入力を提供し得るマウス、キーパッド、タッチスクリーン、スキャナ、光学式リーダ、及び/またはスタイラス(または他の入力デバイス(複数可))を含んでよく、また、音声出力を提供するためのスピーカの1つまたは複数と、テキスト、オーディオビジュアル、及び/またはグラフィカル出力を提供するためのビデオディスプレイデバイスの1つまたは複数も含んでよい。本明細書に記載する様々な機能を実行するために、コンピューティングデバイス201を専用コンピューティングデバイスに構成する命令をプロセッサ203に提供するソフトウェアがメモリ215及び/または他のストレージ内に記憶されてよい。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、及び関連するデータベース221等、コンピューティングデバイス201によって使用されるソフトウェアを記憶してよい。
コンピューティングデバイス201は、端末240(クライアントデバイスとも呼ばれる)等の1つまたは複数のリモートコンピュータへの接続をサポートするネットワーク環境で動作してよい。端末240は、コンピューティングデバイス103または201に関して前述した要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってよい。図2に示すネットワーク接続は、ローカルエリアネットワーク(LAN)225及び広域ネットワーク(WAN)229を含むが、他のネットワークも含んでよい。LANネットワーキング環境で使用される場合、コンピューティングデバイス201は、ネットワークインタフェースまたはアダプタ223を介してLAN225に接続されてよい。WANネットワーキング環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)等のWAN229を介して通信を確立するためのモデム227または他の広域ネットワークインタフェースを含んでよい。示されているネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してよいことは理解されよう。コンピューティングデバイス201及び/または端末240は、バッテリ、スピーカ、及びアンテナ(図示せず)等の他の様々なコンポーネントを含むモバイル端末(例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント(PDA)、ノートブック等)であってもよい。
本明細書に記載する態様は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作してもよい。本明細書に記載する態様での使用に適する可能性のある他のコンピューティングシステム、環境、及び/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、上記のシステムもしくはデバイスの任意のものを含む分散コンピューティング環境等が含まれるが、これらに限定されない。
図2に示すように、1つまたは複数のクライアントデバイス240は、1つまたは複数のサーバ206a~206n(本明細書では一般に「サーバ(複数可)206」と呼ばれる)と通信してよい。一実施の形態では、コンピューティング環境200は、サーバ(複数可)206とクライアントマシン(複数可)240の間にインストールされたネットワークアプライアンスを含んでよい。ネットワークアプライアンスは、クライアント/サーバ接続を管理してよく、場合によっては、複数のバックエンドサーバ206間でクライアント接続の負荷を分散できる。
クライアントマシン(複数可)240は、一部の実施の形態では、単一のクライアントマシン240またはクライアントマシン240の単一グループと呼ばれる場合があり、一方、サーバ(複数可)206は、単一のサーバ206またはサーバグループ206の単一のグループと呼ばれる場合がある。一実施の形態では、単一のクライアントマシン240は複数のサーバ206と通信し、別の実施の形態では、単一のサーバ206は複数のクライアントマシン240と通信する。さらに別の実施の形態では、単一のクライアントマシン240は、単一のサーバ206と通信する。
クライアントマシン240は、一部の実施の形態では、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン、リモートマシン、クライアントノード(複数可)、エンドポイント(複数可)、またはエンドポイントノード(複数可)のいずれかによって言及できるが、これらの用語が全てではない。サーバ206は、一部の実施の形態では、サーバ(複数可)、ローカルマシン、リモートマシン、サーバファーム(複数可)、またはホストコンピューティングデバイス(複数可)のいずれかによって言及されてよいが、これらの用語が全てではない。
一実施の形態では、クライアントマシン240は仮想マシンであってよい。仮想マシンは、任意の仮想マシンであってよく、一部の実施の形態では、仮想マシンは、タイプ1またはタイプ2のハイパーバイザ、例えば、Citrix Systems、IBM、Vmwareによって開発されたハイパーバイザ、または任意の他のハイパーバイザによって管理される任意の仮想マシンであってよい。一部の態様では、仮想マシンはハイパーバイザによって管理されてよく、他の態様では、仮想マシンは、サーバ206上で実行されるハイパーバイザまたはクライアント240上で実行されるハイパーバイザによって管理されてよい。
一部の実施の形態は、サーバ206または他のリモートに配置されたマシン上でリモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス240を含む。これらの実施の形態では、クライアントデバイス240は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示してよい。一例では、アプリケーションはデスクトップであるが、他の例では、アプリケーションはデスクトップを生成または提示するアプリケーションである。デスクトップは、ローカル及び/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでよい。アプリケーションは、本明細書では、オペレーティングシステムのインスタンス(及びオプションでデスクトップも)がロードされた後に実行されるプログラムである。
サーバ206は、一部の実施の形態では、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモートディスプレイアプリケーションにデータを送信して、サーバ206上で実行されるアプリケーションによって生成される表示出力を提示する。シンクライアントまたはリモートディスプレイプロトコルはフロリダ州フォートローダーデールのCitrix Systems社が開発した独立コンピューティングアーキテクチャ(ICA)プロトコル、または、ワシントン州レドモンドのマイクロソフト社によって製造されたリモートデスクトッププロトコル(RDP)のいずれかであってよいが、これらが全てではない。
リモートコンピューティング環境は、例えば、クラウドコンピューティング環境において、サーバ206a~206nがサーバファーム206に論理的に一緒にグループ化されるように、2つ以上のサーバ206a~206nを含み得る。サーバファーム206は、論理的に一緒にグループ化されながら地理的に分散しているサーバ206、または論理的に一緒にグループ化され、互いに近接して配置されたサーバ206を含んでよい。サーバファーム206内の地理的に分散したサーバ206a~206nは、一部の実施の形態では、WAN(広域)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信でき、異なる地理的領域は、異なる大陸、ある大陸の異なる地域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。一部の実施の形態では、サーバファーム206は単一のエンティティとして管理されてよいが、他の実施の形態では、サーバファーム206は複数のサーバファームを含むことができる。
一部の実施の形態では、サーバファームは、実質的に類似のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIAN等)を実行するサーバ206を含んでよい。他の実施の形態では、サーバファーム206は、第1のタイプのオペレーティングシステムプラットフォームを実行する1つまたは複数のサーバの第1のグループと、第2のタイプのオペレーティングシステムプラットフォームを実行する1つまたは複数のサーバの第2のグループとを含んでよい。
サーバ206は、必要に応じて、任意のタイプのサーバとして構成されてよい、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケット層(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバとして、または、マスタアプリケーションサーバ、アクティブディレクトリを実行するサーバ、もしくは、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成されてよい。他の種類のサーバも使用されてよい。
一部の実施の形態は、第1のサーバ206aを含み、第1のサーバ206aは、クライアントマシン240から要求を受信し、その要求を第2のサーバ206b(図示せず)に転送し、第2のサーバ206b(図示せず)からの応答でクライアントマシン240によって生成された要求に応答する。第1のサーバ206aは、クライアントマシン240が利用可能なアプリケーションの列挙と、アプリケーションの列挙内で識別されたアプリケーションをホストするアプリケーションサーバ206に関連付けられたアドレス情報とを取得してよい。次に、第1のサーバ206aは、ウェブインタフェースを使用してクライアントの要求に対する応答を提示し、クライアント240と直接通信して、識別されたアプリケーションへのアクセスをクライアント240に提供することができる。1つまたは複数のクライアント240及び/または1つまたは複数のサーバ206は、ネットワーク230、例えばネットワーク101を介してデータを送信してよい。
図3は、例示的なデスクトップ仮想化システムの高レベルのアーキテクチャを示す。図に示すように、デスクトップ仮想化システムは、仮想デスクトップ及び/または仮想アプリケーションを1つまたは複数のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ301を含む、単一サーバシステム、マルチサーバシステム、またはクラウドシステムであってよい。本明細書で使用するとき、デスクトップとは、1つまたは複数のアプリケーションをホスト及び/または実行し得るグラフィカルな環境または空間を指す。デスクトップは、ローカル及び/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでよい。アプリケーションは、オペレーティングシステム(及びオプションでデスクトップ)のインスタンスがロードされた後に実行されるプログラムを含んでよい。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイスごとに1つのオペレーティングシステム)または仮想(例えば、単一のデバイスで実行されているOSの多くのインスタンス)であってよい。各アプリケーションは、ローカルデバイスで実行されてよい、または、リモートに配置されたデバイスで実行されて(リモートであって)よい。
コンピュータデバイス301は、仮想化環境における仮想化サーバ、例えば、単一サーバ、マルチサーバ、またはクラウドコンピューティング環境として構成されてよい。図3に示す仮想化サーバ301は、図2に示されるサーバ206の1つまたは複数の実施の形態として、または、他の既知のコンピューティングデバイスとして展開、及び/または、それらによって実装されてよい。仮想化サーバ301には、1つまたは複数の物理ディスク304、1つまたは複数の物理デバイス306、1つまたは複数の物理プロセッサ308、及び1つまたは複数の物理メモリ316を含み得るハードウェア層が含まれる。一部の実施の形態では、ファームウェア312は、物理メモリ316のメモリ要素内に記憶することができ、物理プロセッサ308の1つまたは複数によって実行することができる。仮想化サーバ301は、オペレーティングシステム314をさらに含んでよく、オペレーティングシステム314は、物理メモリ316内のメモリ要素に記憶されてよく、物理プロセッサ308の1つまたは複数によって実行されてよい。さらに、ハイパーバイザ302が、物理メモリ316のメモリ要素に記憶されてよく、物理プロセッサ308の1つまたは複数によって実行することができる。
物理プロセッサ308の1つまたは複数上で実行されるのは、1つまたは複数の仮想マシン332A~332C(総称で332)であってよい。各仮想マシン332は、仮想ディスク326A~326C及び仮想プロセッサ328A~328Cを有してよい。一部の実施の形態では、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行してよい。制御プログラム320は、制御仮想マシン、Dom0、ドメイン0、またはシステム管理及び/または制御に使用される他の仮想マシンを指してよい。一部の実施の形態では、1つまたは複数の仮想マシン332B~332Cは、仮想プロセッサ328B~328Cを使用して、ゲストオペレーティングシステム330A~330Bを実行することができる。
仮想化サーバ301は、仮想化サーバ301と通信する1つまたは複数のハードウェアを備えたハードウェア層310を含んでよい。一部の実施の形態では、ハードウェア層310は、1つまたは複数の物理ディスク304、1つまたは複数の物理デバイス306、1つまたは複数の物理プロセッサ308、及び1つまたは複数の物理メモリ316を含むことができる。物理コンポーネント304、306、308、及び316は、例えば、上記のコンポーネントのいずれかを含んでよい。物理デバイス306は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、ストレージデバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータ等)、または、仮想化サーバ301に接続または通信する任意のデバイスを含んでよい。ハードウェア層310内の物理メモリ316は、任意のタイプのメモリを含んでよい。物理メモリ316は、データを記憶してよく、一部の実施の形態では、1つまたは複数のプログラム、または実行可能命令のセットを記憶してよい。図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶される実施の形態を示す。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つまたは複数のプロセッサ308によって実行することができる。
仮想化サーバ301は、ハイパーバイザ302も含んでよい。一部の実施の形態では、ハイパーバイザ302は、任意の数の仮想マシン332を作成及び管理するために仮想化サーバ301上のプロセッサ308によって実行されるプログラムであってよい。ハイパーバイザ302は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと呼ばれる場合がある。一部の実施の形態では、ハイパーバイザ302は、実行可能命令と、コンピューティングマシン上で実行されている仮想マシンを監視するハードウェアとの任意の組み合わせであってよい。ハイパーバイザ302は、タイプ2ハイパーバイザであってよく、この場合、ハイパーバイザは、仮想化サーバ301上で実行されるオペレーティングシステム314内で実行される。その後、仮想マシンはハイパーバイザより上のレベルで実行してよい。一部の実施の形態では、タイプ2ハイパーバイザは、タイプ2ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行されてよい。他の実施の形態では、仮想化環境内の1つまたは複数の仮想化サーバ301は、代わりにタイプ1ハイパーバイザ(図示せず)を含んでよい。タイプ1ハイパーバイザは、ハードウェア層310内のハードウェア及びリソースに直接アクセスすることにより、仮想化サーバ301上で実行されてよい。すなわち、図に示すように、タイプ2ハイパーバイザ302は、ホストオペレーティングシステム314を介してシステムリソースにアクセスするが、タイプ1ハイパーバイザは、ホストオペレーティングシステム314無しで全てのシステムリソースに直接アクセスしてよい。タイプ1ハイパーバイザは、仮想化サーバ301の1つまたは複数の物理プロセッサ308で直接実行されてよく、物理メモリ316に記憶されたプログラムデータを含んでよい。
ハイパーバイザ302は、一部の実施の形態では、システムリソースに直接アクセスするオペレーティングシステム330または制御プログラム320をシミュレーションする任意の方法で、仮想マシン332上で実行されるオペレーティングシステム330または制御プログラム320に仮想リソースを提供できる。システムリソースは、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、及び仮想化サーバ301のハードウェア層310に含まれる任意の他のコンポーネントを含むことができるが、これらに限定されない。ハイパーバイザ302を使用して、仮想ハードウェアのエミュレート、物理ハードウェアの分割、物理ハードウェアの仮想化、及び/またはコンピューティング環境へのアクセスを提供する仮想マシンの実行を行ってよい。さらに他の実施の形態では、ハイパーバイザ302は、仮想化サーバ301上で実行される仮想マシン332のプロセッサスケジューリング及びメモリ分割を制御してよい。ハイパーバイザ302は、カリフォルニア州パロアルトのVMWare社によって製造されるハイパーバイザ、オープンソースのXenProject.orgコミュニティによって開発が監督されているオープンソース製品であるXENPROJECTハイパーバイザ、Microsoft社によって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザ等を含んでよい。一部の実施の形態では、仮想化サーバ301は、ゲストオペレーティングシステムが実行し得る仮想マシンプラットフォームを作成するハイパーバイザ302を実行してよい。これらの実施の形態では、仮想化サーバ301は、ホストサーバと呼ばれてよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのCitrix Systems社が提供するXENSERVERである。
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行される1つまたは複数の仮想マシン332B~332C(一般的に332)を作成してよい。一部の実施の形態では、ハイパーバイザ302は、仮想マシンイメージをロードして、仮想マシン332を作成してよい。他の実施の形態では、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行してよい。さらに他の実施の形態では、仮想マシン332は、ゲストオペレーティングシステム330を実行してよい。
仮想マシン332を作成することに加えて、ハイパーバイザ302は、少なくとも1つの仮想マシン332の実行を制御してよい。他の実施の形態では、ハイパーバイザ302は、仮想化サーバ301によって提供される少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)の抽象化を少なくとも1つの仮想マシン332に提示してよい。他の実施の形態では、ハイパーバイザ302は、仮想マシン332が仮想化サーバ301で利用可能な物理プロセッサ308にアクセスする方法を制御してよい。物理プロセッサ308へのアクセスの制御は、仮想マシン332がプロセッサ308にアクセスを有すべきか否か、及び物理プロセッサ機能が仮想マシン332にどのように提示されるかを決定することを含んでよい。
図3に示すように、仮想化サーバ301は、1つまたは複数の仮想マシン332をホストまたは実行してよい。仮想マシン332は、実行可能命令のセットであり、実行可能命令のセットは、プロセッサ308によって実行されると、物理コンピュータの動作を模倣して、仮想マシン332が物理コンピューティングデバイスのようにプログラム及びプロセスを実行できるようにする。図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施の形態を示し、他の実施の形態では、仮想化サーバ301は、任意の数の仮想マシン332をホストすることができる。ハイパーバイザ302は、一部の実施の形態では、各仮想マシン332に、その仮想マシン332が利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供してよい。一部の実施の形態では、一意の仮想ビューは、仮想マシン許可の1つまたは複数、1つまたは複数の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシンで実行されるアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準に基づくことができる。例えば、ハイパーバイザ302は、セキュリティ保護されていない1つまたは複数の仮想マシン332及び1つまたは複数の安全な仮想マシン332を作成してよい。安全な仮想マシン332がアクセスすることを許可され得るリソース、ハードウェア、メモリ位置、及びプログラムにセキュリティ保護されていない仮想マシン332がアクセスすることを防止してよい。他の実施の形態では、ハイパーバイザ302は、仮想マシン332に利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの実質的に同様の仮想ビューを各仮想マシン332に提供してよい。
各仮想マシン332は、仮想ディスク326A~326C(総称で326)及び仮想プロセッサ328A~328C(総称で328)を含んでよい。一部の実施の形態では、仮想ディスク326は、仮想化サーバ301の1つまたは複数の物理ディスク304の仮想化ビュー、または、仮想化サーバ301の1つまたは複数の物理ディスク304の一部の仮想化ビューである。物理ディスク304の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理することができる。一部の実施の形態では、ハイパーバイザ302は、各仮想マシン332に物理ディスク304の一意のビューを提供する。したがって、これらの実施の形態では、各仮想マシン332に含まれる特定の仮想ディスク326は、他の仮想ディスク326と比較したときに一意であってよい。
仮想プロセッサ328は、仮想化サーバ301の1つまたは複数の物理プロセッサ308の仮想化ビューであってよい。一部の実施の形態では、物理プロセッサ308の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理することができる。一部の実施の形態では、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308の同じ特性を実質的に全て有する。他の実施の形態では、仮想プロセッサ308は、仮想プロセッサ328の特性の少なくとも一部が対応する物理プロセッサ308の特性とは異なるように、物理プロセッサ308の修正されたビューを提供する。
図4をさらに参照すると、本明細書に記載する一部の態様は、クラウドベース環境で実施されてよい。図4は、クラウドコンピューティング環境(またはクラウドシステム)400の例を示す。図4に示すように、クライアントコンピュータ411~414は、クラウド管理サーバ410と通信して、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403a~403b(本明細書では総称で「ホストサーバ403」と呼ばれる)、ストレージリソース404a~404b(本明細書では総称で「ストレージリソース404」と呼ばれる)、及びネットワークリソース405a~405b(本明細書では総称で「ネットワークリソース405」と呼ばれる)にアクセスしてよい。
管理サーバ410は、1つまたは複数の物理サーバ上に実装されてよい。管理サーバ410は、例えば、フロリダ州フォートローダーデールのCitrix Systems社によるCLOUDPLATFORM、または、OPENSTACK等を実行してよい。管理サーバ410は、クラウドのハードウェア及びソフトウェアリソース、例えば、ホストコンピュータ403、データストレージデバイス404、及びネットワーキングデバイス405を含む、様々なコンピューティングリソースを管理してよい。クラウドのハードウェア及びソフトウェアリソースはプライベート及び/またはパブリックコンポーネントを含んでよい。例えば、クラウドは、1つまたは複数の特定の顧客またはクライアントコンピュータ411~414が使用するプライベートクラウドとして、及び/またはプライベートネットワークを介して、構成されてよい。他の実施の形態では、パブリッククラウドまたはハイブリッドパブリックプライベートクラウドは、オープンまたはハイブリッドネットワークを介して他の顧客によって使用されてよい。
管理サーバ410は、クラウドオペレータ及びクラウド顧客がクラウドシステム400と対話し得るユーザインタフェースを提供するように構成されてよい。例えば、管理サーバ410は、アプリケーションプログラミングインタフェース(API)のセット及び/またはユーザインタフェースを備えた1つまたは複数のクラウドオペレータコンソールアプリケーション(例えば、ウェブベースまたはスタンドアロンアプリケーション)を提供して、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、他のクラウド管理タスクを実行できるようにしてよい。管理サーバ410はまた、APIのセット及び/またはクライアントコンピュータ411~414を介してエンドユーザから、クラウドコンピューティング要求、例えば、クラウド内の仮想マシンの作成、修正、破棄の要求を受信するように構成されたユーザインタフェースを備えた1つまたは複数のカスタマーコンソールアプリケーションを含んでよい。クライアントコンピュータ411~414は、インターネットまたは他の何らかの通信ネットワークを介して管理サーバ410に接続してよく、管理サーバ410によって管理される1つまたは複数のコンピューティングリソースへのアクセスを要求してよい。クライアント要求に応答して、管理サーバ410は、クライアント要求に基づいてクラウドシステムのハードウェア層の物理リソースを選択及びプロビジョニングするように構成されたリソースマネージャを含んでよい。例えば、管理サーバ410及びクラウドシステムの追加のコンポーネントはネットワーク(例えば、インターネット)を介してクライアントコンピュータ411~414の顧客に対して、仮想マシン及びそれらの動作環境(例えば、ハイパーバイザ、ストレージリソース、ネットワーク要素によって提供されるサービス等)をプロビジョニング、作成、及び管理するように構成され、それによって、計算リソース、データストレージサービス、ネットワーク機能、並びにコンピュータプラットフォーム及びアプリケーションサポートを顧客に提供してよい。クラウドシステムはまた、セキュリティシステム、開発環境、ユーザインタフェース等を含む、様々な具体的なサービスを提供するように構成されてよい。
あるクライアント411~414は、関連していてよい、例えば、同じエンドユーザ、または同じ会社や組織に所属する異なるユーザに代わって、仮想マシンを作成する異なるクライアントコンピュータであってよい。他の例では、あるクライアント411~414は、異なる企業または組織に所属するユーザ等、無関係であってよい。関連のないクライアントの場合、ある任意のユーザの仮想マシンまたはストレージに関する情報は、他のユーザから隠される場合がある。
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、アベイラビリティゾーン401~402(またはゾーン)は、配列された物理コンピューティングリソースのセットを指す場合がある。ゾーンは、コンピューティングリソースのクラウド全体で他のゾーンから地理的に離れている場合がある。例えば、ゾーン401は、カリフォルニアに位置する第1のクラウドデータセンタであってよく、ゾーン402は、フロリダに位置する第2のクラウドデータセンタであってよい。管理サーバ410は、アベイラビリティゾーンの1つに、または別の場所に配置されてよい。各ゾーンは、ゲートウェイを介して、管理サーバ410等のゾーン外にあるデバイスとインタフェースする内部ネットワークを含み得る。クラウドのエンドユーザ(例えば、クライアント411~414)は、ゾーン間の違いを認識している場合と認識していない場合がある。例えば、エンドユーザは、指定された量のメモリ、処理能力、及びネットワーク機能を備えた仮想マシンの作成を要求してよい。管理サーバ410は、ユーザの要求に応答してよく、仮想マシンがゾーン401またはゾーン402からのリソースを使用して作成されたか否かをユーザが知ることなく、仮想マシンを作成するためのリソースを割り当ててよい。他の例では、クラウドシステムは、仮想マシン(または他のクラウドリソース)が特定のゾーンまたはゾーン内の特定のリソース403~405に割り当てられることをエンドユーザが要求するのを可能にしてよい。
この例では、各ゾーン401~402は、様々な物理ハードウェアコンポーネント(またはコンピューティングリソース)403~405の配置、例えば、物理ホスティングリソース(または処理リソース)、物理ネットワークリソース、物理ストレージリソース、スイッチ、及びクラウドコンピューティングサービスを顧客に提供するために使用し得る追加のハードウェアリソースの配置を含んでよい。クラウドゾーン401~402内の物理ホスティングリソースは、仮想マシンインスタンスを作成及びホストするように構成され得る上記仮想化サーバ301等の1つまたは複数のコンピュータサーバ403を含んでよい。クラウドゾーン401または402内の物理ネットワークリソースは、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータ等、クラウドの顧客にネットワークサービスを提供するように構成されたハードウェア及び/またはソフトウェアを含む1つまたは複数のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含んでよい。クラウドゾーン401~402内のストレージリソースは、ストレージディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスク等)及び他のストレージデバイスを含んでよい。
図4に示すクラウドコンピューティング環境の例はまた、仮想マシンを作成及び管理し、クラウドの物理リソースを使用して顧客に他のサービスを提供するように構成された追加のハードウェア及び/またはソフトウェアリソースを備えた(例えば、図1~3に示すような)仮想化層を含んでよい。仮想化層は、図3で前述したように、ネットワーク仮想化、ストレージ仮想化等を提供する他のコンポーネントとともにハイパーバイザを含んでよい。仮想化層は、物理リソース層とは別の層として存在してよい、または同じハードウェア及び/またはソフトウェアリソースの一部または全てを物理リソース層と共有してよい。例えば、仮想化層は、物理コンピューティングリソースを備えた仮想化サーバ403のそれぞれにインストールされたハイパーバイザを含んでよい。例えば、WINDOWS(登録商標) AZURE(ワシントン州レドモンドMicrosoft社)、AMAZON EC2(ワシントン州シアトルAmazon社)、IBM BLUE CLOUD(ニューヨーク州アーモンクIBM社)等、既知のクラウドシステムを代わりに使用してよい。
エンタープライズモビリティ管理アーキテクチャ
図5は、「ブリング・ユア・オウン・デバイス」(BYOD)環境で使用するためのエンタープライズモビリティ技術アーキテクチャ500を表す。このアーキテクチャは、モバイルデバイス502のユーザが、モバイルデバイス502からエンタープライズリソースまたは個人リソースにアクセスすること、及び個人使用のためにモバイルデバイス502を使用することの両方を可能にする。ユーザは、ユーザが購入したモバイルデバイス502、または企業がユーザに提供したモバイルデバイス502を使用して、そのようなエンタープライズリソース504またはエンタープライズサービス508にアクセスしてよい。ユーザは、モバイルデバイス502をビジネス用途のみに、またはビジネス及び個人用途に利用してよい。モバイルデバイス502は、iOSオペレーティングシステム、Android(登録商標)オペレーティングシステム等を実行してよい。企業は、モバイルデバイス502を管理するためのポリシーを実装することを選択してよい。ポリシーは、モバイルデバイス502が識別、セキュリティ保護、またはセキュリティ検証され、エンタープライズリソース(例えば、504及び508)への選択的または完全なアクセスが提供されるように、ファイアウォールまたはゲートウェイを介して実装されてよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、及びデータの管理ポリシーの何らかの組み合わせであってよい。モバイルデバイス管理ポリシーの適用を通して管理されるモバイルデバイス502は、登録済みデバイスと呼ばれてよい。
一部の実施の形態では、モバイルデバイス502のオペレーティングシステムは、管理対象パーティション510及び非管理対象パーティション512に分離されてよい。管理対象パーティション510には、管理対象パーティション510で実行されているアプリケーションと管理対象パーティション510に記憶されているデータをセキュリティ保護するためのポリシーを適用してよい。管理対象パーティション510上で実行されるアプリケーションは、安全なアプリケーションであり得る。他の実施の形態では、全てのアプリケーションは、アプリケーションとは別に受信される1つまたは複数のポリシーファイルのセットに従って実行してよく、ポリシーファイルは、1つまたは複数のセキュリティパラメータ、機能、リソース制限、及び/またはアプリケーションがモバイルデバイス502で実行されているときにモバイルデバイス管理システムが実施する他のアクセス制御を定義する。それぞれのポリシーファイル(複数可)に従って動作することにより、各アプリケーションは、1つまたは複数の他のアプリケーション及び/またはリソースとの通信を許可または制限され、それにより仮想パーティションを作成してよい。したがって、本明細書で使用される場合、パーティションは、メモリの物理的に分割された部分(物理パーティション)、メモリの論理的に分割された部分(論理パーティション)、及び/または、1つまたは複数のポリシー及び/または本明細書に記載されている複数のアプリケーションにわたるポリシーファイルの実施の結果として作成された仮想パーティション(仮想パーティション)を指してよい。言い換えると、管理対象アプリケーションにポリシーを実施することにより、それらのアプリケーションは、他の管理対象アプリケーション及び信頼できるエンタープライズリソースとのみ通信できるように制限され、それにより、非管理対象アプリケーション及びデバイスからアクセスできない仮想パーティションを作成してよい。
安全なアプリケーションは、電子メールアプリケーション、ウェブ閲覧アプリケーション、サービスとしてのソフトウェア(SaaS)アクセスアプリケーション、Windows(登録商標)アプリケーションアクセスアプリケーション等であってよい。安全なアプリケーションは、安全なネイティブアプリケーション514、安全なアプリケーションランチャー518によって実行される安全なリモートアプリケーション522、安全なアプリケーションランチャー518によって実行される仮想化アプリケーション526等であってよい。安全なネイティブアプリケーション514は、安全なアプリケーションラッパー520によってラップされてよい。安全なアプリケーションラッパー520は、安全なネイティブアプリケーション514がモバイルデバイス502上で実行されるときにモバイルデバイス502上で実行される統合ポリシーを含んでよい。安全なアプリケーションラッパー520は、安全なネイティブアプリケーション514の実行時に安全なネイティブアプリケーション514が要求されたタスクを完了するために必要とし得る企業でホストされているリソース(例えば、504及び508)にモバイルデバイス502上で実行されている安全なネイティブアプリケーション514を指摘するメタデータを含んでよい。
安全なアプリケーションランチャー518によって実行される安全なリモートアプリケーション522は、安全なアプリケーションランチャー518内で実行されてよい。安全なアプリケーションランチャー518によって実行される仮想化アプリケーション526は、モバイルデバイス502、エンタープライズリソース504等でリソースを利用してよい。安全なアプリケーションランチャー518によって実行される仮想化アプリケーション526によってモバイルデバイス502上で使用されるリソースは、ユーザ対話リソース、処理リソース等を含んでよい。ユーザ対話リソースを使用して、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力等を収集して送信してよい。処理リソースは、ユーザインタフェースを提示し、エンタープライズリソース504から受信したデータを処理する等のために使用されてよい。安全なアプリケーションランチャー518によって実行される仮想化アプリケーション526によってエンタープライズリソース504で使用されるリソースは、ユーザインタフェース生成リソース、処理リソース等を含んでよい。
ユーザインタフェース生成リソースは、ユーザインタフェースのアセンブル、ユーザインタフェースの修正、ユーザインタフェースのリフレッシュ等に使用されてよい。処理リソースは、情報の作成、情報の読み取り、情報の更新、情報の削除等に使用されてよい。例えば、仮想化アプリケーション526は、グラフィカルユーザインタフェース(GUI)に関連するユーザ対話を記録し、ユーザ対話をサーバアプリケーションに通信し、サーバアプリケーションは、ユーザ対話データをサーバで動作するアプリケーションへの入力として使用する。このような配置では、企業は、サーバ側のアプリケーションと、アプリケーションに関連付けられたデータ、ファイル等とを維持することを選択してよい。
企業は、モバイルデバイス502に展開するためにアプリケーションをセキュリティ保護することにより、本明細書の原理に従って一部のアプリケーションを「モバイル化する」ことを選択してよいが、この配置は特定のアプリケーションに対して選択されてもよい。例えば、一部のアプリケーションはモバイルデバイス502での使用のためにセキュリティ保護され得るが、他のアプリケーションはモバイルデバイス502での展開に対して無防備または不適切な可能性があるため、企業は仮想化手法を通して無防備なアプリケーションへのモバイルユーザアクセスを提供することを選択してよい。別の例として、企業は、大規模で複雑なデータセットを有する大規模で複雑なアプリケーション(例えば、資材リソース計画アプリケーション)を有している場合があり、この場合、モバイルデバイス502のアプリケーションをカスタマイズすることは、非常に難しい、または、望ましくないので、企業は仮想化手法を通したアプリケーションへのアクセスの提供を選択してよい。さらに別の例として、企業は、セキュリティ保護されたモバイル環境に対してさえ機密であると企業が見なし得る高度にセキュリティ保護されたデータ(例えば、人事データ、顧客データ、エンジニアリングデータ)を維持するアプリケーションを有する場合があり、よって、企業は、仮想化技術を使用して、そのようなアプリケーションやデータへのモバイルアクセスを許可することを選択してよい。
企業は、モバイルデバイス502に完全にセキュリティ保護された完全に機能するアプリケーションと、サーバ側でより適切に操作されると見なされるアプリケーションへのアクセスを可能にする仮想化アプリケーション526との両方を提供することを選択してよい。ある実施の形態では、仮想化アプリケーション526は、一部のデータ、ファイル等をモバイルデバイス502上の安全な記憶場所の1つに記憶してよい。企業は、例えば、他の情報を許可せずに、特定の情報をモバイルデバイス502に記憶することを許可することを選択してよい。
本明細書に記載するように、仮想化アプリケーション526に関連して、モバイルデバイス502は、仮想化アプリケーション526を有してよく、仮想化アプリケーション526は、GUIを提示し、次いでユーザのGUIとの対話を記録するように設計される。仮想化アプリケーション526は、サーバ側にユーザ対話を通信してよく、サーバ側アプリケーションはアプリケーションとのユーザ対話としてユーザ対話を使用する。これに応答して、サーバ側のアプリケーションは、新しいGUIをモバイルデバイス502に返信してよい。例えば、新しいGUIは、静的ページ、動的ページ、アニメーション等であってよく、それにより、リモートに配置されたリソースへのアクセスを提供する。
安全なアプリケーション514は、モバイルデバイス502の管理対象パーティション510の安全なデータコンテナ528に記憶されたデータにアクセスしてよい。安全なデータコンテナでセキュリティ保護されたデータは、安全なネイティブアプリケーション514、安全なアプリケーションランチャー518によって実行される安全なリモートアプリケーション522、安全なアプリケーションランチャー518によって実行される仮想化アプリケーション526等によってアクセスされてよい。安全なデータコンテナ528に記憶されたデータは、ファイル、データベース等を含んでよい。安全なデータコンテナ528に記憶されたデータは、特定の安全なアプリケーション530に制限されたデータ、安全なアプリケーション532の間で共有されたデータ等を含んでよい。安全なアプリケーションに制限されたデータには、安全な一般データ534及び高度に安全なデータ538を含んでよい。安全な一般データは、高度暗号化標準(AES)128ビット暗号化等の強力な暗号化形式を使用してよく、高度に安全なデータ538は、AES256ビット暗号化等の非常に強力な暗号化形式を使用してよい。安全なデータコンテナ528に記憶されたデータは、デバイスマネージャ524からコマンドを受信すると、モバイルデバイス502から削除されてよい。安全なアプリケーション(例えば、514、522、及び526)は、デュアルモードオプション540を有してよい。デュアルモードオプション540は、セキュリティ保護されたアプリケーションを非保護モードまたは非管理モードで操作するオプションをユーザに提示してよい。非保護または非管理モードでは、安全なアプリケーションは、モバイルデバイス502の非管理対象パーティション512上の非保護データコンテナ542に記憶されているデータにアクセスしてよい。非保護データコンテナに記憶されたデータは、個人データ544であってよい。非保護データコンテナ542に記憶されたデータは、モバイルデバイス502の非管理対象パーティション512上で実行されている非保護アプリケーション546によってもアクセスされてよい。非保護データコンテナ542に記憶されたデータは、安全なデータコンテナ528に記憶されたデータがモバイルデバイス502から削除されたとき、モバイルデバイス502上に残ってよい。企業は、ユーザが所有、ライセンス、または制御する個人データ、ファイル及び/またはアプリケーション(個人データ)を残し、またはその他の方法で保存しながら、企業が所有、ライセンス、または制御する全てのデータ、ファイル、及び/またはアプリケーション(企業データ)を選択したモバイルデバイス502から削除したい場合がある。この操作は、選択的ワイプと呼ばれてよい。本明細書に記載された態様に従って配置された企業及び個人データを用いて、企業は選択的ワイプを実行してよい。
モバイルデバイス502は、企業のエンタープライズリソース504及びエンタープライズサービス508をパブリックインターネット548等に接続してよい。モバイルデバイス502は、仮想プライベートネットワーク接続を介してエンタープライズリソース504及びエンタープライズサービス508に接続してよい。マイクロVPNまたはアプリケーション固有VPNとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション(マイクロVPN550、特定のデバイス、モバイルデバイスの(O/S VPN552で示されるような)特定のセキュリティ保護された領域等に固有であってよい。例えば、モバイルデバイス502のセキュリティ保護された領域内のラップされたアプリケーションのそれぞれは、アプリケーション固有のVPNを通してエンタープライズリソースにアクセスすることによって、VPNへのアクセスは、おそらくユーザまたはデバイスの属性情報と共に、アプリケーションに関連付けられた属性に基づいて許可されてよい。仮想プライベートネットワーク接続は、Microsoft Exchangeトラフィック、Microsoftアクティブディレクトリトラフィック、ハイパーテキスト転送プロトコル(HTTP)トラフィック、ハイパーテキスト転送プロトコルセキュア(HTTPS)トラフィック、アプリケーション管理トラフィック等を伝えてよい。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス554をサポート及び有効化してよい。シングルサインオンプロセスは、ユーザが認証資格情報の単一のセットを提供することを可能にしてよく、次に、その認証資格情報は、認証サービス558によって検証される。次に、認証サービス558は、ユーザに個々のエンタープライズリソース504のそれぞれに認証資格情報を提供することを要求することなく、複数のエンタープライズリソース504へのアクセスをユーザに許可してよい。
仮想プライベートネットワーク接続は、アクセスゲートウェイ560によって確立及び管理されてよい。アクセスゲートウェイ560は、モバイルデバイス502へのエンタープライズリソース504の配信を管理、加速、及び改善するパフォーマンス強化機能を含んでよい。アクセスゲートウェイ560はまた、モバイルデバイス502からパブリックインターネット548にトラフィックを再ルーティングし、モバイルデバイス502がパブリックインターネット548上で実行される公に利用可能なセキュリティ保護されていないアプリケーションにアクセスすることを可能にしてよい。モバイルデバイス502は、トランスポートネットワーク562を介してアクセスゲートウェイに接続してよい。トランスポートネットワーク562は、1つまたは複数のトランスポートプロトコルを使用してよく、有線ネットワーク、ワイヤレスネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、パブリックネットワーク、プライベートネットワーク等であってよい。
エンタープライズリソース504は、電子メールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、Windows(登録商標)アプリケーションサーバ等を含んでよい。電子メールサーバは、Exchangeサーバ、ロータスノーツサーバ等を含んでよい。ファイル共有サーバは、ShareFileサーバ等を含んでよい。SaaSアプリケーションは、Salesforce等を含んでよい。Windows(登録商標)アプリケーションサーバは、ローカルのWindows(登録商標)オペレーティングシステム等で実行することを目的としたアプリケーションを提供するために構築された任意のアプリケーションサーバを含んでよい。エンタープライズリソース504は、建物ベースのリソース、クラウドベースのリソース等であってよい。エンタープライズリソース504は、モバイルデバイス502によって直接またはアクセスゲートウェイ560を介してアクセスされてよい。エンタープライズリソース504は、トランスポートネットワーク562を介してモバイルデバイス502によってアクセスされてよい。
エンタープライズサービス508は、認証サービス558、脅威検出サービス564、デバイスマネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャル統合サービス572、アプリケーションコントローラサービス574等を含んでよい。認証サービス558は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービス等を含んでよい。認証サービス558は、証明書を使用してよい。証明書は、モバイルデバイス502、エンタープライズリソース504等に記憶されてよい。モバイルデバイス502に記憶された証明書は、モバイルデバイス502の暗号化された場所に記憶されてよく、証明書は、認証時等に使用するためにモバイルデバイス502に一時的に記憶されてよい。脅威検出サービス564は、侵入検出サービス、不正アクセス試行検出サービス等を含んでよい。不正アクセス試行検出サービスには、デバイス、アプリケーション、データ等への不正アクセスが含まれてよい。デバイス管理サービス524は、構成、プロビジョニング、セキュリティ、サポート、監視、報告、及び廃止措置サービスを含んでよい。ファイル共有サービス568は、ファイル管理サービス、ファイルストレージサービス、ファイルコラボレーションサービス等を含んでよい。ポリシーマネージャサービス570は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービス等を含んでよい。ソーシャル統合サービス572は、連絡先統合サービス、コラボレーションサービス、Facebook、Twitter、LinkedIn等のソーシャルネットワークとの統合を含んでよい。アプリケーションコントローラサービス574は、管理サービス、プロビジョニングサービス、展開サービス、割り当てサービス、失効サービス、ラッピングサービス等を含んでよい。
エンタープライズモビリティ技術アーキテクチャ500は、アプリケーションストア578を含んでよい。アプリケーションストア578は、ラップされていないアプリケーション580、事前にラップされたアプリケーション582等を含んでよい。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578にポピュレートされてよい。アプリケーションストア578は、アクセスゲートウェイ560を介して、パブリックインターネット548等を介して、モバイルデバイス502によってアクセスされてよい。アプリケーションストア578は、直感的で使いやすいユーザインタフェースを備えてよい。
ソフトウェア開発キット584は、この説明で前述したようにアプリケーションをラップすることにより、ユーザが選択したアプリケーションをセキュリティ保護する機能をユーザに提供してよい。ソフトウェア開発キット584を使用してラップされたアプリケーションは、次に、アプリケーションコントローラ574を使用してアプリケーションストア578にそれをポピュレートすることにより、モバイルデバイス502が利用できるようにされてよい。
エンタープライズモビリティ技術アーキテクチャ500は、管理及び分析機能588を含んでよい。管理及び分析機能588は、リソースが使用される方法、リソースが使用される頻度等に関連する情報を提供してよい。リソースは、デバイス、アプリケーション、データ等を含んでよい。リソースの使用方法は、どのデバイスがどのアプリケーションをダウンロードするか、どのアプリケーションがどのデータにアクセスするか等を含んでよい。リソースが使用される頻度は、アプリケーションがダウンロードされた頻度、アプリケーションが特定のデータセットにアクセスした回数等を含んでよい。
図6は、別の例示的なエンタープライズモビリティ管理システム600である。図5を参照して前述したモビリティ管理システム500の構成要素の一部は、簡単にするために省略されている。図6に示すシステム600のアーキテクチャは、図5を参照して前述したシステム500のアーキテクチャと多くの点で類似しており、前述していない追加機能を含んでよい。
この場合、左側は、クライアントエージェント604を有する登録済みのモバイルデバイス602を表し、クライアントエージェント604は、(アクセスゲートウェイ及びアプリケーションコントローラ機能を含む)ゲートウェイサーバ606と対話して、上記右側に示すように、Exchange、Sharepoint、公開キー基盤(PKI)リソース、Kerberosリソース、証明書発行サービス等の様々なエンタープライズリソース608及びサービス609にアクセスする。具体的には示されていないが、モバイルデバイス602は、アプリケーションの選択及びダウンロードのために、エンタープライズアプリケーションストア(ストアフロント)と対話してもよい。
クライアントエージェント604は、エンタープライズデータセンタでホストされるWindows(登録商標)アプリ/デスクトップのUI(ユーザインタフェース)手段として機能し、高解像度ユーザ体験(HDX)/ICAディスプレイリモートプロトコルを使用してアクセスされる。クライアントエージェント604はまた、ネイティブのiOSまたはAndroid(登録商標)アプリケーション等、モバイルデバイス602上のネイティブアプリケーションのインストール及び管理をサポートする。例えば、上の図に示されている管理対象アプリケーション610(メール、ブラウザ、ラップされたアプリケーション)は全て、モバイルデバイス602でローカルに実行されるネイティブアプリケーションである。このアーキテクチャのクライアントエージェント604及びアプリケーション管理フレームワークは、エンタープライズリソース/サービス608に接続性やSSO(シングルサインオン)等のポリシー駆動管理機能や特徴を提供するように機能する。クライアントエージェント604は、企業に、通常は他のゲートウェイサーバコンポーネントへのSSOを用いてアクセスゲートウェイ(AG)606へのプライマリユーザ認証を処理する。クライアントエージェント604は、モバイルデバイス602上の管理対象アプリケーション610の挙動を制御するポリシーをゲートウェイサーバ606から取得する。
ネイティブアプリケーション610とクライアントエージェント604の間の安全なプロセス間通信(IPC)リンク612は、管理チャネルを表し、管理チャネルは、各アプリケーションを「ラッピング」するアプリケーション管理フレームワーク614が施行するポリシーを、クライアントエージェントが提供するのを可能にし得る。IPCチャネル612はまた、クライアントエージェント604が、エンタープライズリソース608への接続性及びSSOを有効にする資格情報及び認証情報を供給することを可能にし得る。最後に、IPCチャネル612は、アプリケーション管理フレームワーク614が、オンライン及びオフライン認証等のクライアントエージェント604によって実装されるユーザインタフェース機能を呼び出すことを可能にし得る。
クライアントエージェント604とゲートウェイサーバ606の間の通信は、本質的に、各ネイティブ管理アプリケーション610をラップするアプリケーション管理フレームワーク614からの管理チャネルの拡張である。アプリケーション管理フレームワーク614は、クライアントエージェント604にポリシー情報を要求してよく、クライアントエージェント604は次に、ゲートウェイサーバ606にポリシー情報を要求してよい。アプリケーション管理フレームワーク614は認証を要求してよく、クライアントエージェント604はゲートウェイサーバ606(NETSCALER ACCESS GATEWAYとしても知られている)のゲートウェイサービス部分にログインしてよい。クライアントエージェント604はまた、ゲートウェイサーバ606のサポートサービスを呼び出してよく、これにより、ローカルデータボルト616の暗号化キーを導出するための入力資料を生成してよい、または、PKI保護リソースへの直接認証を有効にし得るクライアント証明書を提供してよい。これについては、下記でより詳細に説明する。
より詳細には、アプリケーション管理フレームワーク614は、各管理対象アプリケーション610を「ラップ」する。これは、明示的なビルドステップまたは、またはポストビルド処理ステップを介して組み込まれてよい。アプリケーション管理フレームワーク614は、アプリケーション610の最初の起動時にクライアントエージェント604と「ペアリング」して、安全なIPCチャネル612を初期化し、そのアプリケーションのポリシーを取得してよい。アプリケーション管理フレームワーク614は、ローカルOSサービスの使用方法、または管理対象アプリケーション610との対話方法を制限するクライアントエージェントのログイン依存関係や封じ込めポリシーの一部等、ローカルに適用するポリシーの関連部分を実施してよい。
アプリケーション管理フレームワーク614は、認証及び内部ネットワークアクセスを容易にするために、安全なIPCチャネル612を介してクライアントエージェント604によって提供されるサービスを使用してよい。プライベート及び共有データボルト616(コンテナ)のキー管理は、管理対象アプリケーション610とクライアントエージェント604の間の適切な対話によって管理されてもよい。ボルト616は、オンライン認証後にのみ使用可能であってよい、または、ポリシーで許可されている場合はオフライン認証後に使用可能にされてよい。ボルト616の最初の使用には、オンライン認証が必要な場合があり、オフラインアクセスは、最大でも、オンライン認証が再び必要になる前のポリシーリフレッシュ期間に制限されてよい。
内部リソースへのネットワークアクセスは、アクセスゲートウェイ606を介して、個々の管理対象アプリケーション610から直接発生する場合がある。アプリケーション管理フレームワーク614は、各管理対象アプリケーション610に代わってネットワークアクセスのオーケストレーションを担当してよい。クライアントエージェント604は、オンライン認証に続いて得られる適切な時間制限のある二次的な資格情報を提供することにより、これらのネットワーク接続を促進してよい。リバースウェブプロキシ接続やエンドツーエンドVPNスタイルのトンネル618等、ネットワーク接続の複数のモードを使用してよい。
メール及びブラウザ管理対象アプリケーション610には特別なステータスがあり、任意のラップされたアプリケーションでは一般に利用できない機能を使用してよい。例えば、メールアプリケーション610は、完全なAGログオンを必要とせずに長期間にわたってExchangeサーバ608にアクセスすることを可能にする特別なバックグラウンドネットワークアクセスメカニズムを使用してよい。ブラウザアプリケーション610は、複数のプライベートデータボルト616を使用して、異なる種類のデータを分離してよい。
このアーキテクチャは、他の様々なセキュリティ機能の組み込みをサポートしてよい。例えば、ゲートウェイサーバ606(そのゲートウェイサービスを含む)は、場合によっては、アクティブディレクトリ(AD)パスワードを検証する必要がない場合がある。ADパスワードを一部の状況で一部のユーザの認証要素として使用し得るか否かは、企業の裁量に任せることができる。ユーザがオンラインまたはオフライン(つまり、ネットワークに接続されている、または、接続されていない)場合、異なる認証方法を使用してよい。
ステップアップ認証は、ゲートウェイサーバ606が、強力な認証を必要とする機密性の高いデータへのアクセスを許可されている管理対象ネイティブアプリケーション610を識別し、その前のより弱いレベルのログインの後、ユーザによる再認証が必要とされることを意味する場合でさえ、これらのアプリケーションへのアクセスが適切な認証の実行後にのみ許可されることを確実にする機能である。
この解決法の別のセキュリティ機能は、モバイルデバイス602上のデータボルト616(コンテナ)の暗号化である。ボルト616は、ファイル、データベース、及び構成を含む全てのオンデバイスデータが保護されるように暗号化されてよい。オンラインボルトの場合、キーはサーバ(ゲートウェイサーバ606)に記憶されてよく、オフラインボルトの場合、キーのローカルコピーがユーザパスワードまたは生体認証によって保護されてよい。安全なコンテナ616内のモバイルデバイス602にローカルにデータが記憶されている場合または時、最小のAES256暗号化アルゴリズムが利用されることが好ましい場合がある。
他の安全なコンテナ機能も実装されてよい。例えば、ロギング機能が含まれてもよく、この場合、管理対象アプリケーション610の内部で発生するセキュリティイベントがログされ、バックエンドに報告されてよい。管理対象アプリケーション610が改ざんを検出した場合または時など、データワイプがサポートされてよく、関連する暗号化キーがランダムなデータで上書きされてよく、ユーザデータが破壊されたというヒントがファイルシステムに残らないようにする。スクリーンショット保護は別の機能であってよく、アプリケーションがスクリーンショットにデータが記憶されるのを防いでよい。例えば、キーウィンドウの非表示プロパティがYESに設定されてよい。これにより、画面に現在表示されているあらゆるコンテンツが隠され、コンテンツが通常、存在しているスクリーンショットが空白にされる。
例えば、データのコピーまたは外部アプリケーションへのデータの送信によって、アプリケーションコンテナの外部にローカルにデータが転送されるのを防ぐなどによって、ローカルデータ転送を防いでよい。キーボードキャッシュ機能が動作して、機密性の高いテキストフィールドの自動修正機能を無効にしてよい。SSL証明書の検証が機能し得るので、アプリケーションは、サーバのSSL証明書をキーチェーンに記憶せずに、詳細に検証する。(オフラインアクセスが要求される場合)モバイルデバイス602でデータの暗号化に使用されるキーを、ユーザが提供するパスフレーズまたはバイオメトリックデータを使用して生成するように暗号化キー生成機能を使用してよい。オフラインアクセスが要求されない場合、サーバ側でランダムに生成され、記憶された別のキーでXORされてよい。キー導出関数は、ユーザパスワードから生成されたキーが、キーの暗号学的ハッシュを作成するのではなく、KDF(キー導出関数、特にパスワードベースのキー導出関数2(PBKDF2))を使用するように動作してよい。キーの暗号学的ハッシュ作成では、キーは、ブルートフォース攻撃や辞書攻撃の影響を受けやすくなる。
さらに、1つまたは複数の初期化ベクトルが、暗号化方法で使用されてよい。初期化ベクトルにより、同じ暗号化データの複数のコピーが異なる暗号文出力を生成し、再生攻撃と暗号解読攻撃の両方を防ぐ。これはまた、暗号化キーが盗まれた場合でも、攻撃者がデータを解読するのを防ぐ。さらに、認証、次に、解読を使用してよく、アプリケーションデータは、ユーザがアプリケーション内で認証された後にのみ解読される。別の機能は、メモリ内の機密データに関連してよく、機密データは、必要な時にのみ(ディスクではなく)メモリに保存されてよい。例えば、ログイン資格情報は、ログイン後にメモリからワイプされてよく、Objective-Cインスタンス変数内の暗号化キーや他のデータは、簡単に参照され得るので、記憶されない。代わりに、これらに手動でメモリを割り当ててよい。
非活動タイムアウトが実装されてよく、ポリシーで定義された非活動期間の後、ユーザセッションが終了する。
アプリケーション管理フレームワーク614からのデータ漏洩は、他の方法で防ぎ得る。例えば、管理対象アプリケーション610がバックグラウンドに置かれた場合または時、メモリは、所定の(設定可能な)期間の後に消去されてよい。バックグラウンド化する時、アプリケーションの最後に表示された画面のスナップショットを取得して、フォアグラウンド化プロセスを強化してよい。スクリーンショットは機密データを含む可能性があるため、消去されるべきである。
別のセキュリティ機能は、1つまたは複数のアプリケーションにアクセスするためのAD(アクティブディレクトリ)622パスワードを使用せずに、OTP(ワンタイムパスワード)620を使用することに関連してよい。場合によっては、一部のユーザは自分のADパスワードを知らない(または知ることを許可されない)ため、これらのユーザはSecurIDなどのハードウェアOTPシステムを使用するなど、OTP620を使用して認証してよい(OTPは、EntrustやGemalto等、様々なベンダによって提供されてよい)。場合によっては、ユーザがユーザIDを用いて認証した後、OTP620を有するユーザにテキストが送信されてよい。場合によっては、これはオンラインでの使用にのみ実装されてよく、プロンプトは単一のフィールドである。
オフラインでの使用がエンタープライズポリシーによって許可されている管理対象アプリケーション610のオフライン認証用にオフラインパスワードが実装されてよい。例えば、企業はこの方法でストアフロントにアクセスしたい場合がある。この場合、クライアントエージェント604は、ユーザにカスタムオフラインパスワードを設定するように要求してよく、ADパスワードは使用されない。ゲートウェイサーバ606は、標準のWindows(登録商標)サーバのパスワードの複雑性要件等で記載されているように、パスワードの最小長、文字クラス構成、及び経過時間に関してパスワード標準を制御及び適用するポリシーを提供し得るが、これらの要件は修正されてよい。
別の機能は、(アプリケーション管理フレームワークのマイクロVPN機能を介してPKIで保護されたウェブリソースにアクセスするために)二次資格情報として特定のアプリケーション610のクライアント側証明書の有効化に関連してよい。例えば、管理対象アプリケーション610は、そのような証明書を利用してよい。この場合、ActiveSyncプロトコルを使用した証明書ベースの認証がサポートされてよく、クライアントエージェント604からの証明書がゲートウェイサーバ606によって読み出され、キーチェーンで使用されてよい。各管理対象アプリケーション610は、ゲートウェイサーバ606で定義されたラベルによって識別される1つの関連付けられたクライアント証明書を有してよい。
ゲートウェイサーバ606は、企業の専用ウェブサービスと対話して、クライアント証明書の発行をサポートし、関連する管理対象アプリケーションが内部PKI保護リソースを認証できるようにしてよい。
クライアントエージェント604及びアプリケーション管理フレームワーク614は、内部PKI保護ネットワークリソースに対する認証のためのクライアント証明書の取得及び使用をサポートするように強化されてよい。様々なレベルのセキュリティ及び/または分離要件に一致させる等のために、複数の証明書がサポートされてよい。証明書は、メール及びブラウザ管理対象アプリケーション610によって使用されてよく、最終的には任意のラップされたアプリケーション610によって使用されてよい(これらのアプリケーションが、アプリケーション管理フレームワークがHTTPS要求を仲介することが妥当なウェブサービススタイルの通信パターンを使用することを条件として)。
iOSでのアプリケーション管理クライアント証明書のサポートは、公開キー暗号規格(PKCS)12BLOB(バイナリラージオブジェクト)を、使用期間ごとに各管理対象アプリケーション610のiOSキーチェーンにインポートすることに依存してよい。アプリケーション管理フレームワークのクライアント証明書のサポートでは、プライベートインメモリキーストレージを備えたHTTPS実装を使用してよい。クライアント証明書はiOSキーチェーンに存在しない場合があり、強力に保護された「オンラインのみ」のデータ値に潜在的に存在する場合を除いて保持されない場合がある。
相互SSLまたはTLSを実装して、モバイルデバイス602が企業に対して認証されること、または、その逆を要求することにより、追加のセキュリティを提供してもよい。ゲートウェイサーバ606に対する認証のための仮想スマートカードも実装されてよい。
制限付き及び完全なケルベロスサポートの両方が追加機能であってよい。完全サポート機能は、ADパスワードまたは信頼されるクライアント証明書を使用してアクティブディレクトリ(AD)622への完全なケルベロスログインを実行し、HTTPネゴシエート認証チャレンジに応答するためのケルベロスサービスチケットを取得する能力に関連する。制限付きサポート機能はCitrixのAGEE(Access Gateway Enterprise Edition)の制約付き委任に関連し、AGEEはケルベロスプロトコル遷移の呼び出しをサポートしているため、HTTPネゴシエート認証チャレンジに応答してケルベロスサービスチケット(制約付き委任の対象)を取得して使用できる。このメカニズムは、リバースウェブプロキシ(別名、企業仮想プライベートネットワーク(CVPN))モードで、並びに、HTTP(HTTPSではない)接続がVPN及びマイクロVPNモードでプロキシされる場合に機能する。
別の機能は、アプリケーションコンテナのロック及びワイプに関連してよく、アプリケーションコンテナのロック及びワイプは、ジェイルブレイクまたはルート化の検出時に自動的に発生し、管理コンソールからのプッシュコマンドとして発生する場合があり、管理対象アプリケーション610が実行されていない場合でもリモートワイプ機能を含んでよい。
エンタープライズアプリケーションストアとアプリケーションコントローラのマルチサイトアーキテクチャまたは構成がサポートされて、障害が発生した場合に幾つかの異なる場所の1つからユーザにサービスを提供するのを可能にしてよい。
場合によっては、管理対象アプリケーション610は、API(例えば、オープンSSL)を介して証明書と秘密キーにアクセスを許可されてよい。企業の信頼できる管理対象アプリケーション610は、アプリケーションのクライアント証明書と秘密キーを使用して特定の公開キー操作を実行することを許可されてよい。アプリケーションがブラウザのように振舞い、証明書アクセスが不要な場合または時、アプリケーションが「私は誰であるか」の証明書を読み取る場合または時、アプリケーションが証明書を使用して安全なセッショントークンを構築する場合または時、並びに、アプリケーションが重要なデータ(例えば、トランザクションログ)のデジタル署名または一時的なデータ暗号化に秘密キーを使用する場合または時など、様々な使用例が識別され、それに従って処理されてよい。
仮想アプリケーションの即時起動
図7は、ユーザデバイス705でリモートアクセスの安全なセッションを確立するための例示的な図を示す。最初に、ユーザデバイス705は、モバイルデバイス、ラップトップコンピュータ等のモバイルコンピューティングデバイスを含んでよい。ユーザデバイス705は、CITRIX(商標)セキュアブラウザのインスタンスまたはCITRIX RECIEVER(商標)のインスタンス等、仮想デスクトップインスタンスを使用して安全なセッションを確立するためのクエリを発行してよい。クエリは、ファイアウォール725を通過して、ゲートウェイコンピューティングプラットフォーム710に到達し得る。ゲートウェイコンピューティングプラットフォームは、例えば、Netscalarゲートウェイを含んでよい。
ゲートウェイコンピューティングプラットフォーム710は、ストアフロント715との接続を確立してよく、ストアフロント715は、アプリケーションを列挙してよい、及び/または、ユーザデバイス705を認証してよい。ストアフロント715はまた、デスクトップ配信コントローラ(DDC)にユーザデバイストークンを登録してよく、ブローカリングプロセスを開始する目的で仮想配信エージェント(VDA)720との接続を確立してよい。VDA720は、XENAPP(登録商標)やXENDESKTOP(登録商標)等のアプリケーション仮想化ソフトウェアを含んでよい。VDAは、ユーザデバイス705が負荷分散される複数のVDA及び/またはターミナルサーバの1つを含んでよい。VDA720は、暗号化サービスを使用して、ユーザデバイスの資格情報を暗号化し、次に、ユーザデバイスの資格情報を記憶してよい。VDA720はまた、ユーザデバイスの資格情報を使用して、ログオンチケットを生成してよい。VDA720は、ログオンチケットをストアフロントに返信してよい。
ストアフロント715は、セキュアチケットオーソリティ(STA)サービス730との接続を確立してよく、STAサービス730は、VDA720の識別情報の記憶に使用されてよい。STAサービス730は、例えば、サーバを含んでよい。STAサービス730は、後続の認証試行に使用し得るSTAチケットを発行してよい。例えば、STAチケットは、VDA720のIPアドレスとVDA720のポート番号を参照するのに使用されてよい。ストアフロント715はまた、独立コンピューティングアーキテクチャ(ICA)ファイルを生成してよく、ICAファイルをユーザデバイス705が利用できるようにしてよい。一部の例では、ICAファイルは、上記のセキュアチケットオーソリティ(STA)チケット及びログオンチケットを含んでよい。ICAファイルは、要求されたアプリケーションまたは仮想デスクトップの名前を含んでよく、ゲートウェイコンピューティングプラットフォーム710のアドレスを含んでよい。
ゲートウェイコンピューティングデバイス710はまた、VDA720との接続を確立してよい。例えば、ゲートウェイコンピューティングデバイス710は、要求及び認証資格証明をユーザデバイス705からVDA720に渡してよい。
図8は、本明細書に記載する1つまたは複数の例示的な態様による、安全なセッションを確立及び再確立するための例示的な方法800を示す。図8を参照すると、ステップ805で、第1の受信機インスタンスと仮想配信エージェント(VDA)の間で安全なセッションが事前起動されてよい。第1の受信機インスタンスは、例えば、HTML5受信機インスタンスのインスタンスまたは安全なブラウザのインスタンス等の第1の仮想デスクトップインスタンスであってよい。一部の例では、第1の受信機インスタンスは、エンドポイントクライアントデバイスに基づいてよく、他の例では、第1の受信機インスタンスは、クラウドサービスによってホストされてよい。事前起動は、第1の受信機インスタンスを使用して、インターネットエクスプローラ(商標)等のアプリケーションに関連する情報を読み出すことから開始されてよい。例えば、ユーザデバイスは、第1の受信機インスタンスを使用して、安全なセッションを確立するためのクエリを発行してよい。クエリはファイアウォールを通過し、ゲートウェイコンピューティングプラットフォームに到達してよく、ゲートウェイコンピューティングプラットフォームは、その後、第1の受信機インスタンスを認証し、VDAとの接続ブローカリングを行う。例えば、ゲートウェイコンピューティングプラットフォームは、ファイアウォールを介してストアフロントにアクティブディレクトリ(AD)ログオントークンを送信してよい。ストアフロントは、ADログオントークンを使用してアプリケーションを列挙してよい、及び/またはユーザデバイスを認証してよい。ADログオントークンを受信後、ストアフロントはデスクトップ配信コントローラ(DDC)を用いてユーザデバイストークンを登録し、VDAとのブローカリングプロセスを開始してよい。ブローカリングの一部として、VDAはADログオントークン等のユーザデバイス資格情報を受信してよい。暗号化サービスを使用して、VDAはユーザデバイスの資格情報を暗号化し、記憶してよい。VDAはまた、ユーザデバイスの資格情報を使用して、ログオンチケットを生成してよい。VDAはログオンチケットをストアフロントに返信してよい。VDAはまた、VDAのインターネットプロトコル(IP)アドレスとVDAのポート詳細をストアフロントに送信してよい。ストアフロントは、STAサービスにVDAのIPアドレスとポート詳細を記憶してよい。STAサービスは、STAチケットを発行してよく、STAチケットをストアフロントに送信してよい。
STAチケットは、VDAのIPアドレスとVDAのポート番号を参照するために使用されてよい。例えば、ユーザデバイスがVDAに再接続しようとする時、ユーザデバイスは、VDAのアドレスを知らない場合がある。この例では、ユーザデバイスは、ゲートウェイコンピューティングプラットフォームに接続してよく、ゲートウェイコンピューティングプラットフォームにSTAチケットを提供してよい。STAチケットは、ユーザデバイスからゲートウェイコンピューティングプラットフォームへの共通ゲートウェイプロトコル(CGP)を介してやり取りされてよく、ユーザデバイスとゲートウェイコンピューティングプラットフォームの間の認証トークンとして機能し得る。STAチケットは、VDAの内部の詳細を隠してよい。一部の例では、ゲートウェイコンピューティングプラットフォームは、ICAファイルを介してユーザデバイスにSTAチケットを送信してよい。ユーザデバイスとVDAの間の安全なセッションを再確立する後続の要求中に、ユーザデバイスはSTAチケットを使用して、ストアフロントとVDAの間のブローカリングプロセスを回避してよい。STAチケットの受信に応答して、STAコンピューティングプラットフォームは、ゲートウェイコンピューティングプラットフォームに、VDAのIPアドレスとポートを送信してよい。
VDAにブローカリングした後、ストアフロントは独立コンピューティングアーキテクチャ(ICA)ファイルを生成してよく、ICAファイルをユーザデバイスが利用できるようにしてよい。例えば、ICAファイルは、第1の受信機インスタンスのプロトコル状態及び複数の認証トークンを含んでよい。例えば、ICAファイルは、STAチケット、ログオンチケット、要求されたアプリケーションまたは仮想デスクトップの名前、ゲートウェイのアドレス等の1つまたは複数を含んでよい。ICAファイルは、ユーザのデバイスに記憶されてよい。ICAファイルは使用後に削除されてよい。ICAファイルはまた、異なるサーバに接続するための構成情報を含んでよく、アプリケーション及び/またはサーバデスクトップ環境にリンクしてよい。次に、第1の受信機インスタンスがVDAとの接続の確立を開始してよい。例えば、第1の受信機インスタンスは、最初にウェブソケット接続を確立して、単一の伝送制御プロトコル(TCP)接続を介して二重通信チャネルを提供してよい。次に、第1の受信機インスタンスは、ゲートウェイコンピューティングプラットフォームを介して、VDAを使用してICA接続を確立してよい。ICA接続は、ゲートウェイコンピューティングプラットフォームとVDAの間の6ウェイハンドシェイクを含み得るICAハンドシェイクを介して確立されてよい。ICA接続の確立は、STAチケットの検証も含んでよい。STAチケットが検証されると、ゲートウェイコンピューティングプラットフォームはVDAのIPアドレスとポートの詳細を使用して、ユーザデバイスをVDAに接続してよい。一部の例では、ゲートウェイコンピューティングプラットフォームは、ネットワークが中断した場合に接続を再認証するために使用し得るリフレッシュSTAチケットをSTAサービスから読み出してよい。VDAは、ゲートウェイコンピューティングプラットフォームから、安全なセッションを確立する要求を受信してよい。一部の例では、VDAがユーザデバイスを既に識別している場合がある。例えば、ゲートウェイ通信プラットフォームは、ユーザデバイスのアイデンティティをVDAに送信してよい。安全なセッションを確立する要求と共に、VDAはログオンチケットを受信してよく、VDAはログオンチケットを使用して、暗号化サービスのユーザデバイスの資格情報を解決して、ユーザデバイスを検証してよい。VDAは、CITRIX(商標)資格情報プロバイダフィルタ等の資格情報プロバイダフィルタまたはMICROSOFT(商標)資格情報プロバイダ等の資格情報プロバイダの1つに、ユーザデバイス資格情報を送信してよい。
複数の仮想チャネルを含む接続を含むICA接続が確立され、且つ、第1の受信機インスタンスとVDAが初期化されると、第1の受信機インスタンスが安全なセッションのレンダリングを開始してよく、VDAが安全なセッションをホストしてよい。安全なセッションは、高解像度体験(HDX)セッションを含んでよい。
ユーザデバイスがVDAに接続した後、VDAはユーザデバイスを用いて再接続クッキーを登録してよい。一例では、再接続クッキーは、CGPクッキーを含んでよい。起こり得るネットワーク中断の後、これにより、ユーザデバイスは、セッションを中断することなく、VDAとの安全なセッションを再確立できる。例えば、ネットワーク中断の後、ユーザデバイスは、ゲートウェイコンピューティングプラットフォームに前述のリフレッシュSTAチケットを提供することによって、ネットワーク接続の再作成及び再認証が可能であってよい。次に、ユーザデバイスは、VDAにCGPクッキーを提供することによって、安全なセッションに安全に再接続してよい。したがって、ユーザデバイスは、資格情報プロバイダフィルタまたは資格情報プロバイダのいずれにもユーザデバイス資格情報を再供給することなく、セッションに再接続してよい。ユーザデバイスは、VDAの認証サブシステムを用いて完全な再認証を実行せずにセッションに再接続してよい。ゲートウェイコンピューティングプラットフォームは、STAサービスから新しいリフレッシュSTAチケットを読み出してよい。VDAは新しいCGPクッキーを生成してよい。新しいリフレッシュSTAチケットとCGPクッキーは、次いでCGPハンドシェイクプロトコルを介してユーザデバイスに返されてよいので、これらは、起こり得る将来のネットワーク中断の後に使用することができる。
ステップ810で、セッションの事前起動を実行した後、第1の受信機インスタンスは、ステップ805で確立された第1の受信機インスタンスのプロトコル状態を、第1の受信機インスタンスに対して保持してよい。例えば、第1の受信機インスタンスは、フレーミング状態、基本的な暗号化状態、安全なICA暗号化状態、ICAレデューサ(圧縮)状態、ネゴシエートされたICA能力状態等のICA状態を含む内部プロトコル状態変数を記録してよい。別の例では、第1の受信機インスタンスは、第1の受信機インスタンスと事前起動の安全なセッションをホストするVDAとの間のネットワークプロトコル会話を記録してよい。第1の受信機インスタンスは、記録されたネットワークプロトコル会話を後続の受信機インスタンスに対してオープンにしてよい。この例では、第1の受信機インスタンスは、複数の認証トークンも記録してよい。複数の認証トークンは、例えば、Netscalarゲートウェイ等のゲートウェイコンピューティングプラットフォームに対して第1の受信機インスタンスを認証するために使用し得るリフレッシュセキュアチケットオーソリティ(STA)チケットを含んでよい。複数の認証トークンはまた、例えば、共通ゲートウェイプロトコル(CGP)クッキーを含んでよく、CGPクッキーは、安全なセッションへの再認証及び再接続のために使用されてよい。
一部の例では、第1の受信機インスタンスは、ICAハンドシェイクの終了まで、第1の受信機インスタンスのプロトコル状態を保持してよい。例えば、ICAプロトコルネットワーク会話が1つまたは複数のキープアライブパケットを含まないとすると、事前起動の後、安全なセッションが古くなるので、第1の受信機インスタンスは、ICAハンドシェイクの終了まで第1の受信機インスタンスのプロトコル状態を保持してよい。この例では、ICAハンドシェイクの終了まで記録するだけで、プロトコルモジュールと機能を確立するのに十分であり得る。第1の受信機インスタンスは、ICAハンドシェイク後に送信されたICAパケットは新しい受信機インスタンスに関連していない場合があるので、それらを無視してよい。
他の例では、第1の受信機インスタンスは、第1の受信機インスタンスとVDAの間のネットワークプロトコル会話全体を記録してよい。これらの例では、第1の受信機インスタンスのプロトコル状態は、ネットワーク経由で送信されるのではなく、ユーザデバイス上でローカルに共有されてよい。
ステップ815で、第1の受信機インスタンスがプロトコル状態を保持すると、ユーザデバイスは、ウェブリンク、コンテンツを有する公開アプリケーション、新しい公開アプリケーション等の1つを含む安全なセッションを起動する命令を受信してよい。例えば、ユーザが安全なブラウザでコンテンツにアクセスしようとしている場合、ユーザは、ユニフォームリソースロケータ(URL)を含むユーザデバイスにユーザ入力を提供してよい。別の例では、ユーザは、モバイルデバイス上で新しいHDXテンプレートアプリケーションを起動しようとしている場合があり、モバイルデバイスがモバイルデバイスのスプリングボードから新しいHDXテンプレートアプリケーションを起動することを要求するユーザ入力をモバイルデバイスに提供してよい。さらに別の例では、ユーザは、新しいHTML5公開アプリケーションを起動する命令、またはアプリケーションストアから新しい公開アプリケーションを起動する命令を含むユーザ入力をユーザデバイスに提供してよい。例えば、ユーザが、MICROSOFT WORD(商標)、MICROSOFT EXCEL(商標)等を起動しようとする場合がある。
ステップ820で、ユーザデバイスが安全なセッションへのアクセスを試みると、第1の受信機インスタンスは、ステップ810で上記のように保持された第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスと共有してよい。第1の受信機インスタンスは、ステップ805で決定された、ICAファイルの複数の共有及びキャッシング最適化のうちの1つを実行することによって、第1の受信機インスタンスと第2の受信機インスタンスの間で第1の受信機インスタンスのプロトコル状態を共有してよい。
例えば、第1の受信機インスタンス及び第2の受信機インスタンスは、CITRIX(商標)セキュアブラウザまたはHTML5受信機等のセキュアブラウザサービスのインスタンスを含んでよい。第1の受信機インスタンスは、クラウドサービスによってホスト及び管理されるHTML5受信機インスタンスを含んでよく、第2の受信機インスタンスは、クライアントエンドポイントによってホストされ、クラウドサービスによって管理されるHTML5受信機インスタンスを含んでよい。第1の受信機インスタンスは、ステップ805で上記のように決定されたICAファイルで第1の受信機インスタンスのプロトコル状態を、第2の受信機インスタンスに送信してよい。この例では、第1の受信機インスタンスは、第2の受信機インスタンスが安全なセッションの確立を試みるたびに、第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスに送信してよい。ICAファイルは、一方向の送信を介して、第2の受信機インスタンスに送信されてよい。第2の受信機インスタンスが第1の受信機インスタンスのプロトコル状態を受信すると、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態をキャッシュしてよい。第1の受信機インスタンスのプロトコル状態が第2の受信機インスタンスでキャッシュされると、第1の受信機インスタンスは、第1の受信機インスタンスに更新または変更があったときに第1の受信機インスタンスのプロトコル状態を送信してよく、それ以外の場合は、第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスに送信しなくてよい。第1の受信機インスタンスのプロトコル状態は、キャッシュされると、第2の受信機インスタンスに埋め込まれてよい。一部の例では、第1の受信機インスタンスのプロトコル状態は、第1の受信機インスタンスにも埋め込まれてよい。
別の例では、第1の受信機インスタンス及び第2の受信機インスタンスは、HDXソフトウェア開発キット(SDK)モバイルアプリケーションのインスタンスを含んでよい。HDX SDKモバイルアプリケーションは共有プロファイルによって署名されてよく、第1の受信機インスタンスは、オペレーティングシステム(OS)キーチェーンを介して、第2の受信機インスタンスと第1の受信機インスタンスのプロトコル状態を共有してよい。あるいは、HDX SDKモバイルアプリケーションは、モバイルアプリケーション管理(MAM)、モバイルデバイス管理(MDM)、またはMDMとMAMの組み合わせの1つで管理されてよく、第1の受信機インスタンスは、モバイルデバイス体験(MDX)秘密ボルトを介して、第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスと共有してよい。次に、第2の受信機インスタンスは、MDX秘密ボルトを介して、第1の受信機インスタンスのプロトコル状態と関連する認証トークンとにアクセスしてよい。HDXモバイルアプリケーション間での第1の受信機インスタンスのプロトコル状態の共有は、図11に示し、以下にさらに記載する。
さらに別の例では、第1の受信機インスタンス及び第2の受信機インスタンスは、異なるブラウザタブで実行されるHTML5受信機のインスタンスを含んでよい。例えば、ユーザがINTERNET EXPLORER(商標)の異なるタブで実行されている2つのHTML5受信機のそれぞれで異なるコンテンツを起動しようとする場合がある。この例では、第1の受信機インスタンスは、ローカルブラウザストレージを使用して、第1の受信機インスタンスのプロトコル状態と関連する認証トークンとを記憶してよい。次に、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態及び関連する認証トークンにアクセスしてよい。第2の受信機インスタンスは、HTML5受信機の新しいインスタンス、またはフォーカスされ得るブラウザタブ内の既存のHTML受信機インスタンスの1つを含んでよい。異なるブラウザタブで実行されているHTML受信機のインスタンス間での第1の受信機インスタンスのプロトコル状態の共有は、図12に示し、以下にさらに記載する。
ステップ825で、第1の受信機インスタンスのプロトコル状態を受信した後、第2の受信機インスタンスは、トランスポート再接続を行ってよく、ゲートウェイコンピューティングプラットフォーム及び安全なセッションに対して再認証されてよい。第2の受信機インスタンスは、CGPを介して、認証トークンを使用して、トランスポート再接続及び認証プロセスを行ってよい。例えば、第2の受信機インスタンスは、ゲートウェイコンピューティングプラットフォームに対する認証のためにリフレッシュSTAチケットを使用してよく、CGPクッキーを使用して、ステップ805で確立された事前作成セッションに再認証及び再接続してよい。第2の受信機インスタンスは、VDAと第2の仮想デスクトップインスタンスの間の接続の認証の前にトランスポート再接続を行ってよい。
ステップ830で、第2の受信機インスタンスは、所定の期間、ネットワークアクティビティを一時停止してよい。これには、CGPの一時停止が含まれてよい。
ネットワークアクティビティがステップ830で一時停止されると、ステップ835で、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態を使用して、第1の受信機インスタンスのプロトコル状態のアプリケーション内再作成を行い、その結果、第2の受信機インスタンスのプロトコル状態を生じ得る。例えば、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態からステップ805で生成されたICA状態を再作成してよい。第1の受信機インスタンスのプロトコル状態のこの再作成は、ユーザデバイスのメモリから行われてよく、ストレージに配置されてよい。第2の受信機インスタンスのプロトコル状態を生成するために、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態を含むホストからクライアントへのプロトコルを読み取ってよく、クライアントからホストへの応答をドロップしてよい。第2の受信機インスタンスのプロトコル状態をオフラインで生成することにより、VDAに記憶されているプロトコル状態は影響を受けないままとなる。この方法により、プレゼンテーションレベルのプロトコルネゴシエーションによる複数の往復ネットワークレイテンシを回避してよく、HDXセッションの再接続処理時間を短縮してよい。
例えば、第2の受信機インスタンスのプロトコル状態を生成するために、第2の受信機インスタンスは、ステップ810で前述のように生成されたICAファイルから読み取ってよく、第2の受信機インスタンスは、対応する書き込み操作を放棄してよい。これにより、第2の受信機インスタンスは、記録されたネットワーク会話と通信することにより、ネットワークとの通信及びネゴシエーションをシミュレーションできてよい。次に、第2の受信機インスタンスは、この記録されたネットワーク会話を使用して、第2の受信機インスタンスのプロトコル状態を作成してよい。これは、第2の受信機インスタンスのプロトコル状態を生成する計算コストを削減し得る。
第1の受信機インスタンスがHTML5受信機のインスタンスを含む時など、一部の例では、第1の受信機インスタンスは、それ自体の中に、第1の受信機インスタンスのプロトコル状態を埋め込んでよい。これらの例では、ユーザがHTML5受信機の第2のインスタンスをユーザデバイスにダウンロードする時、第1の受信機インスタンスのプロトコル状態が既に埋め込まれていてよい。
ステップ835での第2の受信機インスタンスのプロトコル状態の作成後、ステップ840で、第2の受信機インスタンスは、通常のネットワークアクティビティ及びCGPプロトコルを再開してよい。第2の受信機は、次に、VDAでのセッションとの通常の通信を続けてよい。第2の受信機とセッションの間の通信には、CGPを介してトンネリングされたICAまたはICA仮想チャネル等のプレゼンテーションレベルのプロトコルが含まれる場合がある。第2の受信機とセッションの間の通信により、セッションとのユーザ対話及び/またはデータのやり取りが可能になり得る。第2の受信機とセッションの間の通信は、第2の受信機でICA状態をさらに修正し得る。
ステップ840で通常のネットワークアクティビティ及びCGPを再開した後、ステップ845で、第2の受信機インスタンスは、新しいICAプロトコルコマンドを介してICAレデューサ圧縮状態をリセットしてよい。第2の受信機インスタンスはまた、ICAスタックプロトコルヘッダのオーバーヘッドをリセットしてよく、これは、使用するトランスポートのタイプに依存してよい。一部の例では、トランスポートはEDT(enlightened data transport)を含んでよい。他の例では、トランスポートは、伝送制御プロトコル(TCP)を含んでよい。ICAレデューサ圧縮状態とICAスタックプロトコルヘッダとのリセットは並行して行われてよく、リセットはログオン時間に影響しない場合がある。
ステップ850で、要求されたコンテンツ(ウェブリンク、コンテンツを有する公開アプリケーション、新しい公開アプリケーション等)は、第2の受信機インスタンスを介して起動されてよい。
ステップ805~850は、図8では1つの例示的な順序で示されているが、指定された順序で全て実行される必要はなく、一部のステップは省略されてよい、または順序が変更されてよい。方法800は、継続的に繰り返す再帰的方法であってよい。方法800は、完全にまたは部分的に繰り返されてよい。
図9は、本明細書に記載する1つまたは複数の例示的な態様による、段階的ログオンを介して安全なセッションを確立及び再確立するための例示的な方法900を示す。例示的な方法900は、上記方法800の拡張バージョンを含んでよい。図9を参照すると、ステップ905で、第1の受信機インスタンスと仮想配信エージェントVDAの間で安全なセッションが事前起動されてよい。ステップ905で行われるアクションは、ステップ805に関して前述したアクションと同様であってよい。
ステップ910で、セッションの事前起動を行った後、第1の受信機インスタンスは、ステップ805で確立された第1の受信機インスタンスのプロトコル状態を、第1の受信機インスタンスに対して保持してよい。ステップ910で行われるアクションは、ステップ810に関して前述したアクションと同様であってよい。
ステップ915で、第1の受信機インスタンスがプロトコル状態を保持していると、ユーザデバイスは、ウェブリンク、コンテンツを有する公開アプリケーション、新しい公開アプリケーション等の1つを含む安全なセッションを起動する命令を受信してよい。ステップ915で行われるアクションは、ステップ815に関して前述したアクションと同様であってよい。
ステップ920で、ユーザデバイスが安全なセッションにアクセスしようとすると、第1の受信機インスタンスは、ステップ910で前述のように保持した第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスと共有してよい。ステップ920で行われるアクションは、ステップ820に関して前述したアクションと同様であってよい。
ステップ925で、第1の受信機インスタンスのプロトコル状態を受信した後、第2の受信機インスタンスは、トランスポート再接続を実行し、ゲートウェイコンピューティングプラットフォーム及び安全なセッションに対して再認証されてよい。ステップ925で実行されるアクションは、ステップ825に関して前述したアクションと同様であってよい。
ステップ930で、第2の受信機インスタンスは、所定の期間、ネットワークアクティビティを一時停止してよい。ステップ930で行われるアクションは、ステップ830に関して前述したアクションと同様であってよい。
ネットワークアクティビティがステップ930で一時停止されると、ステップ935で、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態を使用して、第1の受信機インスタンスのプロトコル状態のアプリケーション内再作成を行い、その結果、第2の受信機インスタンスのプロトコル状態を生じ得る。ステップ935で行われるアクションは、ステップ835に関して前述したアクションと同様であってよい。
ステップ935での第2の受信機インスタンスのプロトコル状態の作成後、ステップ940で、第2の受信機インスタンスは、ネットワークアクティビティ及びCGPプロトコルを再開してよい。ステップ940で行われるアクションは、ステップ840に関して前述したアクションと同様であってよい。
ステップ940で通常のネットワークアクティビティ及びCGPプロトコルを再開した後、ステップ945で、第2の受信機インスタンスは、新しいICAプロトコルコマンドを介してICAレデューサ圧縮状態をリセットしてよい。第2の受信機インスタンスはまた、ICAスタックプロトコルヘッダのオーバーヘッドをリセットしてよく、これは、使用するトランスポートのタイプに依存してよい。ステップ945で行われるアクションは、ステップ845に関して前述したアクションと同様であってよい。
ステップ950で、要求されたコンテンツ(ウェブリンク、コンテンツを有する公開アプリケーション、新しい公開アプリケーション等)が、第2の受信機インスタンスを介して起動されてよい。ステップ950で行われるアクションは、ステップ850に関して前述したアクションと同様であってよい。
ステップ952で、第2の受信機インスタンスは、第1の受信機インスタンスの全てのプロトコル状態が保持されているか否かを決定してよい。一部の例では、ユーザのデバイスタイプ及び/またはローカル環境に応じた様々な仮想チャネル(VC)機能と状態は保持されない場合がある。第1の受信機インスタンスの全てのプロトコル状態が保持された場合、第2の受信機インスタンスは、ステップ954に進み、完全なログオンを開始してよい。第1の受信機インスタンスのプロトコル状態を全ては保持していない場合、第2の受信機インスタンスはステップ955に進み、段階的ログオンを開始してよい。
ステップ954で、第2の受信機インスタンスは、ウェブリンク、コンテンツを有する公開アプリケーション、またはステップ950で前述のように起動した公開アプリケーションを確立して表示してよい。例えば、第2の受信機インスタンスは、安全なセッションに関連する全ての機能をロードしてよい。次に、方法900は、ステップ975に進み、安全なセッションを再確立するための別の試みが受信されたか否かを決定してよい。
ステップ955で、第2の受信機インスタンスは、表示を確立することによって段階的ログオンを開始してよく、ユーザデバイスを介して初期ユーザ入力をプロンプトしてよい。例えば、ユーザは、第2の受信機インスタンスを介してキーボード、マウス、及び基本的な表示機能にアクセスしてよい。
ステップ960で、第2の受信機インスタンスは、仮想チャネルとユーザデバイスの機能とのリストをVDAに送信してよい。例えば、ユーザデバイスは、オーディオ仮想チャネル、マルチメディア仮想チャネル、タッチ仮想チャネル、シンワイヤグラフィックス仮想チャネル、独立ソフトウェアベンダ(ISV)仮想チャネル等に関連付けられてよい。第2の受信機はまた、第2の受信機インスタンスの機能に応じて、仮想チャネルに関連付けられた複数のVCモジュールをロードしてよい。
ステップ965で、VDAは、VCモジュールのホストに、セッション再接続イベントを送信してよい。
ステップ970で、仮想チャネルを再び開いてよく、仮想チャネルの機能は、それぞれのVCプロトコルを介して再ネゴシエートされてよい。これは、第2の受信機インスタンスが、ディスプレイ及びユーザ入力の初期プロンプトを超えた追加のHDX機能に段階的にログオンするのを可能にし得る。例えば、これは、第2の受信機インスタンスがクライアントデバイスマッピング(CDM)、ユニバーサルシリアルバス(USB)、マルチメディア機能、オーディオ機能、印刷機能、ドラッグアンドドロップ機能等の機能を起動するのを可能にし得る。VDAはまた、ステップ960における送信に基づいて、ユーザデバイス機能を決定してよい。基本的な機能をステップ955で事前にロードすることにより、ここに記載する方法は、ユーザのデスクトップ仮想化プログラムとの対話を改善し得る、また、プラットフォーム及び/または受信機固有の機能の初期ロードによって引き起こされる遅延時間を削減し得る。
ステップ975で、別の受信機インスタンスが安全なセッションへの接続を試みているか否かを決定してよい。接続を試みていない場合、方法900は終了してよい。接続を試みている場合、方法900はステップ915に戻ってよく、ユーザは、ウェブリンク、コンテンツを有する公開アプリケーション、または新しい公開アプリケーションの起動を試みてよい。一部の例では、第1の受信機インスタンスが、安全なセッションの再確立を試みてよい。他の例では、新しい受信機インスタンスが、安全なセッションの再確立を試みてよい。
ステップ905~975は、図9では1つの例示的な順序で示されているが、ステップ905~975の全てを指定された順序で行う必要はなく、一部のステップは省略されてよい、または順序が変更されてよい。方法900は、継続的に繰り返す再帰的方法であってよい。方法900は、完全にまたは部分的に繰り返されてよい。
図10は、本明細書に記載する1つまたは複数の例示的な態様による、非同期起動を介して安全なセッションを確立及び再確立するための例示的な方法1000を示す。例示的な方法1000は、前述の方法800の拡張バージョンを含んでよい。図10を参照すると、ステップ1005で、第1の受信機インスタンスと仮想配信エージェントVDAの間で安全なセッションが事前起動されてよい。ステップ1005で行われるアクションは、ステップ805に関して前述したアクションと同様であってよい。
セッションの事前起動を実行した後、ステップ1010で、第1の受信機インスタンスは、ステップ1005で確立された第1の受信機インスタンスのプロトコル状態を第1の受信機インスタンスに対して保持してよい。ステップ1010で行われるアクションは、ステップ810に関して前述したアクションと同様であってよい。
ステップ1015で、第1の受信機インスタンスがプロトコル状態を保持していると、ユーザデバイスは、ウェブリンク、コンテンツを有する公開アプリケーション、新しい公開アプリケーション等の1つを含む安全なセッションを起動する命令を受信してよい。ステップ1015で行われるアクションは、ステップ815に関して前述したアクションと同様であってよい。
ステップ1017で、VDAは、非同期起動を実行すべきか否かを決定してよい。これは、デバイスの機能、予想される接続時間、ロードされるコンテンツ等に依存し得る。非同期起動を実行すべき場合、VDAはステップ1020に進み、ウェブリンク、コンテンツを有する公開アプリケーション、または新しい公開アプリケーションを起動してよい。例えば、VDAは、安全なセッションを再確立するプロセスと並行してコンテンツを起動してよい。非同期起動が行われるべきでない場合、方法1000は、ステップ1020に記載された方法を実行することなくステップ1025に進んでよい。
ステップ1020で、最初にステップ1005で確立された安全なセッションを第2の受信機インスタンスとVDAの間で再確立する前に、ウェブページ等のコンテンツがユーザデバイスのバックエンドにロードされてよい。この例では、第2の受信機インスタンスが安全なセッションを確立する前にコンテンツがロードされてよい。一部の例では、VDAは、オプションのコンテンツを含む初期アプリケーションとともに、HDXセッション等の安全なセッションを安全に事前起動してよい。VDAはまた、ブローカリング命令に基づいてゲートウェイコンピューティングプラットフォームに接続し、安全なセッションを準備してよい。この例では、VDAは、ゲートウェイコンピューティングプラットフォームとの接続を確立する前に、第2の受信機インスタンスがゲートウェイコンピューティングプラットフォームに接続するのを待たなくてよい。その結果、第2の受信機インスタンスがVDAとの安全なセッションを再確立するまでに、安全なセッションは既にコンテンツを起動し、ロードしている場合がある。例えば、ユーザがインターネットブラウザの第2のインスタンスを介してウェブページをロードしようとする場合がある。VDAは安全なセッションでウェブページをロードしてよい。そうすると、インターネットブラウザの第2のインスタンスが実際にVDAとの安全なセッションを確立するまでに、ウェブページがすでにロードされている場合がある。ステップ1020でコンテンツを起動することは、ステップ1015で安全なセッションを起動することに応答してよい。
ステップ1025で、ユーザデバイスが安全なセッションにアクセスしようとすると、第1の受信機インスタンスは、ステップ1010で前述のように保持された第1の受信機インスタンスのプロトコル状態を第2の受信機インスタンスと共有してよい。ステップ1025で行われるアクションは、ステップ810に関して前述したアクションと同様であってよい。
ステップ1030で、第1の受信機インスタンスのプロトコル状態を受信した後、第2の受信機インスタンスは、トランスポート再接続を行い、ゲートウェイコンピューティングプラットフォーム及び安全なセッションに対して再認証されてよい。ステップ1030で行われるアクションは、ステップ825に関して前述したアクションと同様であってよい。
ステップ1035で、第2の受信機インスタンスは、所定の期間、ネットワークアクティビティを一時停止してよい。ステップ1035で行われるアクションは、ステップ830に関して前述したアクションと同様であってよい。
ネットワークアクティビティがステップ1035で一時停止されると、ステップ1040で、第2の受信機インスタンスは、第1の受信機インスタンスのプロトコル状態を使用して、第1の受信機インスタンスのプロトコル状態のアプリケーション内再作成を行い、結果として第2の受信機インスタンスのプロトコル状態を生じ得る。ステップ1040で行われるアクションは、ステップ835に関して前述したアクションと同様であってよい。
ステップ1040で第2の受信機インスタンスのプロトコル状態を作成した後、ステップ1045で、第2の受信機インスタンスは、ネットワークアクティビティ及びCGPプロトコルを再開してよい。ステップ1045で行われるアクションは、ステップ840に関して前述したアクションと同様であってよい。
ステップ1045で通常のネットワークアクティビティ及びCGPプロトコルを再開した後、ステップ1050で、第2の受信機インスタンスは、新しいICAプロトコルコマンドを介してICAレデューサ圧縮状態をリセットしてよい。第2の受信機インスタンスはまた、ICAスタックプロトコルヘッダのオーバーヘッドをリセットしてよく、これは、使用するトランスポートのタイプに依存してよい。ステップ1050で行われるアクションは、ステップ845に関して前述したアクションと同様であってよい。
ステップ1053で、VDAは、ウェブリンク、コンテンツを有する公開アプリケーション、またはステップ1015でユーザによって起動された新しい公開アプリがVDA上で起動されたか否かを決定してよい。それらがVDAで起動されていない場合、方法は、ステップ1055に進み、ステップ1055でウェブリンク、コンテンツを有する公開アプリケーション、または新しい公開アプリケーションを起動してよい。それらが以前にステップ1020で起動されている場合、方法1000は終了してよい。
ステップ1005~1055は、図10では1つの例示的な順序で示されているが、ステップ1005~1055の全てを指定された順序で実行する必要はなく、一部のステップは省略されるか、または順序が変更されてもよい。方法1000は、継続的に繰り返す再帰的方法であってよい。方法1000は、完全にまたは部分的に繰り返されてよい。
図11は、本明細書に記載する1つまたは複数の例示的な態様による、ステップ820で上述した例示的な仮想モバイルアプリケーションの起動を示す。例えば、ユーザは、モバイルデバイス1140を使用して、安全なセッションを確立し、複数のアプリケーションを起動したい場合がある。これらのアプリケーションは、HDXモバイルアプリケーションの第1のインスタンス1110及びHDXモバイルアプリケーションの第2のインスタンス1120等、HDX SDKアプリケーションのインスタンスを含んでよい。この例では、HDXモバイルアプリケーションの第1のインスタンス1110は、OSキーチェーンまたはMDX共有秘密ボルト1130を介して、第1のインスタンスのプロトコル状態と、HDXモバイルアプリケーションの第1のインスタンス1110とゲートウェイコンピューティングプラットフォームまたはVDA間の接続の確立に使用される複数の認証トークンとを、HDXモバイルアプリケーションの第2のインスタンス1120と共有してよい。HDXモバイルアプリケーションの第1のインスタンス1110は、送信1250を介して、第1のインスタンスのプロトコル状態及び複数の認証トークンを共有してよい。HDXモバイルアプリケーションの第2のインスタンス1120は、第1のHDXモバイルアプリケーションのプロトコル状態に基づいて、第2のHDXモバイルアプリケーションのプロトコル状態を生成してよく、第2のHDXモバイルアプリケーションのプロトコル状態を使用して安全なセッションを再確立してよい。HDX SDKモバイルアプリケーションは、モバイルアプリケーション管理(MAM)、モバイルデバイス管理(MDM)、またはMDMとMAMの組み合わせのいずれかで管理されてよい。HDX SDKモバイルアプリケーションは、共有プロファイルによって署名されてよい。
図12は、本明細書に記載する1つまたは複数の例示的な態様による、ステップ820で前述したHTML5受信機インスタンスの例示的な仮想起動を示す。例えば、ユーザはブラウザ1240と対話してよい。ユーザは、第1のHTML5受信機インスタンス1210を使用して、第1のブラウザタブ内で作業してよい。第2のブラウザタブでHTML5受信機の第2のインスタンス1220を起動する要求に応答して、第1のHTML5受信機インスタンスは、通信1350を介して、第1のHTML5受信機インスタンス1210のプロトコル状態と、第1のHTML5受信機インスタンス1210のプロトコル状態に関連する認証トークンをローカルブラウザストレージ1230に記憶してよい。次に、第2のHTML5受信機インスタンスは、第1のHTML5受信機インスタンスのプロトコル状態と関連する認証トークンとにアクセスしてよい。第2のHTML5受信機インスタンスは、HTML5受信機の新しいインスタンス、またはフォーカスされ得るブラウザタブ内の既存のHTML受信機インスタンスのいずれかを含んでよい。第2のHTML5受信機1220インスタンスは、第1のHTML5受信機インスタンスのプロトコル状態に基づいて、第2のHTML5受信機のプロトコル状態を生成してよく、第2のHTML5受信機のプロトコル状態を使用して安全なセッションを再確立してよい。
本主題は、構造的特徴及び/または方法論的行為に特有の言語で記載されているが、添付の特許請求の範囲で定義される本主題が必ずしも上記の特定の特徴または行為に限定されないことを理解されたい。むしろ、上述の特定の特徴及び行為は、特許請求の範囲を実施する例示的実施態様として記載される。
関連出願の相互参照
この出願は、2018年3月8日出願の米国非仮出願第15/915,203号の国際出願であり、その優先権を主張し、同非仮出願は、参照によりその全体が本明細書に組み込まれ、本明細書の一部となる。