様々な実施形態の以下の説明では、上記で特定され、本明細書の一部を形成する添付図面が参照され、添付図面では、本明細書で説明される態様を実施することができる様々な実施形態を例として示している。本明細書で説明される範囲を逸脱することなく、他の実施形態が利用されてよく、構造的及び機能的な修正が行われてよいことを理解されたい。様々な態様は、他の実施形態を行うことができ、様々な異なる方法で実践または実行が可能である。
本明細書で使用されている表現及び用語は、説明を目的としており、限定的なものと見なすべきでないことも理解されたい。むしろ、本明細書で使用される語句及び用語は、それらの最も広い解釈及び意味を与えられるべきである。「including(含む)」、「comprising(含む)」、及びこれらの変形の使用は、その後に列挙される項目及びそれらの等価物、並びに、追加の項目及びそれらの等価物を包含することを意味する。「取り付けられた」、「接続された」、「結合された」、「配置された」、「係合された」という用語及び同様の用語の使用は、直接的な及び間接的な取り付け、接続、結合、配置,及び係合の両方を含むことを意味する。
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン、ネットワーク化、リモートアクセス(リモートデスクトップとしても知られる)、仮想化、及び/またはクラウドベースの環境等を含む、様々な異なるシステム環境において利用されてよい。図1は、本明細書で説明される1つ以上の例示的な態様をスタンドアロン及び/またはネットワーク環境において実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一例を示す。様々なネットワークノード103、105、107、及び109は、インターネット等の広域ネットワーク(WAN)101を介して相互接続されてよい。加えてまたは代わりに、プライベートイントラネット、企業ネットワーク、LAN、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、及びパーソナルネットワーク(PAN)等を含む他のネットワークが使用されてよい。ネットワーク101は、例示を目的としたものであり、より少ないまたは追加のコンピュータネットワークで置き換えられてもよい。ローカルエリアネットワーク(LAN)は、任意の既知のLANトポロジのうちの1つ以上を有してよく、イーサネット等の様々な異なるプロトコルのうちの1つ以上を使用してよい。デバイス103、105、107、及び109、並びに他のデバイス(図示せず)は、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークのうちの1つ以上に接続されてよい。
本明細書で使用され、図面に示される用語「ネットワーク」は、リモートストレージデバイスが1つ以上の通信パスを介して共に結合されるシステムだけでなく、記憶機能を有するそのようなシステムに随時結合することができるスタンドアロンデバイスも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する(単一のエンティティに起因する)データから構成される「コンテンツネットワーク」も含む。
コンポーネントは、データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107、109を含み得る。データサーバ103は、本明細書で説明される1つ以上の例示的な態様を実行するためのデータベース及び制御ソフトウェアの全体的なアクセス、制御、及び管理を提供する。データサーバ103は、ウェブサーバ105に接続されてよく、ウェブサーバ105を通じて、ユーザは要求に応じてデータと対話し、データを取得する。あるいは、データサーバ103は、それ自体がウェブサーバとして機能し、インターネットに直接接続されてもよい。データサーバ103は、直接もしくは間接接続を介して、またはいくつかの他のネットワークを介して、ネットワーク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つ以上を含んでよい。本明細書で説明される様々な機能を実行するために、汎用コンピューティングデバイス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)プロトコル、または、ワシントン州レドモンドのMicrosoft Corporationによって製造されたリモートデスクトッププロトコル(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サーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、または、マスタアプリケーションサーバとしてのサーバ、アクティブディレクトリを実行するサーバ、または、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成されてよい。他の種類のサーバも使用されてよい。
一部の実施形態は、クライアントマシン240から要求を受信し、要求を第2のサーバ206bに転送し、クライアントマシン240によって生成された要求に対して第2のサーバ206bからの応答により応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240に対して利用可能なアプリケーションの列挙、並びにアプリケーションの列挙内で識別されたアプリケーションをホストするアプリケーションサーバ206と関連付けられたアドレス情報を取得することができる。次いで、第1のサーバ206aは、ウェブインタフェースを使用してクライアントの要求に対する応答を提示し、クライアント240と直接通信して、識別されたアプリケーションへのアクセスをクライアント240に提供することができる。1つ以上のクライアント240及び/または1つ以上のサーバ206は、ネットワーク230、例えばネットワーク101を介してデータを送信してよい。
図2は、例示的なデスクトップ仮想化システムの高レベルのアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、仮想デスクトップ及び/または仮想アプリケーションを1つ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ206を含む、単一サーバシステム、マルチサーバシステム、またはクラウドシステムであってよい。本明細書で使用されるとき、デスクトップは、1つ以上のアプリケーションをホストすることができ、及び/または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカル及び/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでよい。アプリケーションは、オペレーティングシステム(及びオプションでデスクトップ)のインスタンスがロードされた後に実行されるプログラムを含んでよい。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイスごとに1つのオペレーティングシステム)または仮想的(例えば、単一のデバイスで実行されているOSの多くのインスタンス)であってよい。各アプリケーションは、ローカルデバイスで実行されてよい、または、リモートに配置されたデバイスで実行されて(リモートであって)よい。
図3を参照して、コンピュータデバイス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~C(全体的に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社によって製造されるハイパーバイザ、その開発がオープンソースのXen.orgコミュニティによって開発が監督されているオープンソース製品であるXENハイパーバイザ、Microsoft社によって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザ等を含んでよい。一部の実施形態では、仮想化サーバ301は、ゲストオペレーティングシステムが実行することができる仮想マシンプラットフォームを作成するハイパーバイザ302を実行する。これらの実施形態では、仮想化サーバ301は、ホストサーバと称されてよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのCitrix Systems社によって提供されるXEN SERVERである。
ハイパーバイザ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と通信して、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403、ストレージリソース404、及びネットワークリソース405)にアクセスしてもよい。
管理サーバ410は、1つ以上の物理サーバ上に実装されてよい。管理サーバ410は、とりわけ、例えば、CLOUDSTACKまたはOPENSTACKを実行してよい。管理サーバ410は、クラウドのハードウェア及びソフトウェアリソース、例えば、ホストコンピュータ403、データストレージデバイス404、及びネットワーキングデバイス405を含む、様々なコンピューティングリソースを管理してよい。クラウドのハードウェア及びソフトウェアリソースはプライベート及び/またはパブリックコンポーネントを含んでよい。例えば、クラウドは、1つ以上の特定の顧客もしくはクライアントコンピュータ411~414によって、及び/またはプライベートネットワークを介して使用されることになるプライベートクラウドとして構成されてよい。他の実施形態では、パブリッククラウドまたはハイブリッドパブリックプライベートクラウドは、オープンまたはハイブリッドネットワークを介して他の顧客によって使用されてよい。
管理サーバ410は、それを通じてクラウドオペレータ及びクラウド顧客がクラウドシステム400と対話することができるユーザインタフェースを提供するように構成されてよい。例えば、管理サーバ410は、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、他のクラウド管理タスクを実行することを可能にする、ユーザインタフェースとのアプリケーションプログラミングインタフェース(API)のセット及び/または1つ以上のクラウドオペレータコンソールアプリケーション(例えば、ウェブベースのスタンドアロンアプリケーション)を提供してもよい。管理サーバ410はまた、クライアントコンピュータ411~414を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内で仮想マシンを作成、修正、または破壊する要求を受信するように構成されたユーザインタフェースを有するAPIのセット及び/または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 Corporation)、AMAZON EC2(ワシントン州シアトルAmazon.com Inc.)、IBM BLUE CLOUD(ニューヨーク州アーモンクIBM Corporation)等、既知のクラウドシステムを代わりに使用してよい。
エンタプライズモビリティ管理アーキテクチャ
図5は、BYOD環境における使用のためのエンタプライズモビリティ技術アーキテクチャ500を表す。アーキテクチャは、モバイルデバイス502のユーザが、モバイルデバイス502からエンタプライズリソースまたは個人リソースにアクセスすること、及び個人使用のためにモバイルデバイス502を使用することの両方を可能にする。ユーザは、ユーザによって購入されるモバイルデバイス502、または企業によってユーザに提供されるモバイルデバイス502を使用して、そのようなエンタプライズリソース504またはエンタプライズサービス508にアクセスしてよい。ユーザは、モバイルデバイス502をビジネス用途のみに、またはビジネス及び個人用途に利用してよい。モバイルデバイスは、iOSオペレーティングシステム及びAndroid(登録商標)オペレーティングシステム等を実行してよい。企業は、モバイルデバイス504を管理するためのポリシーを実装することを選択してよい。ポリシーは、モバイルデバイスを識別、保護、またはセキュリティ検証することができ、エンタプライズリソースへの選択的または完全アクセスを提供することができるように、ファイアウォールまたはゲートウェイを通じて組み込まれてもよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、及びデータ管理ポリシーのいくつかの組み合わせであってもよい。モバイルデバイス管理ポリシーの適用を通じて管理されるモバイルデバイス504は、登録済みデバイスと呼ばれてよい。
一部の実施形態では、モバイルデバイスのオペレーティングシステムは、管理対象パーティション510及び非管理対象パーティション512に分離されてよい。管理対象パーティション510は、管理対象パーティション上で実行するアプリケーション及び管理対象パーティションに記憶されたデータを保護するために、それに適用されたポリシーを有してよい。管理対象パーティション上で実行するアプリケーションは、安全なアプリケーションであってよい。他の実施形態では、全てのアプリケーションは、アプリケーションとは別個に受信され、1つ以上のセキュリティパラメータ、機能、リソース制限、及び/またはそのアプリケーションがデバイス上で実行しているときにモバイルデバイス管理システムによって実施される他のアクセス制御を定義する、1つ以上のポリシーファイルのセットに従って実行してよい。それぞれのポリシーファイル(複数可)に従って動作することによって、各アプリケーションは、1つ以上の他のアプリケーション及び/またはリソースとの通信を許可または制限されてもよく、それによって、仮想パーティションを作成する。よって、本明細書で使用されるように、パーティションは、メモリの物理的に分割された部分(物理パーティション)、メモリの論理的に分割された部分(論理パーティション)、並びに/または本明細書で説明されるような複数のアプリケーションにわたる1つ以上のポリシー及び/もしくはポリシーファイルの実施の結果として作成された仮想パーティション(仮想パーティション)を指してよい。言い換えると、管理対象アプリケーション上でポリシーを実施することによって、それらのアプリケーションは、他の管理対象アプリケーション及び信頼できるエンタプライズリソースとのみ通信することが可能であるように制限されてもよく、それによって、非管理対象アプリケーション及びデバイスによってアクセス可能でない仮想パーティションを作成する。
安全なアプリケーションは、電子メールアプリケーション、ウェブ閲覧アプリケーション、サービスとしてのソフトウェア(SaaS)アクセスアプリケーション、Windows(登録商標)アプリケーションアクセスアプリケーション等であってよい。安全なアプリケーションは、安全なネイティブアプリケーション514、安全なアプリケーションランチャ518によって実行される安全なリモートアプリケーション522、安全なアプリケーションランチャ518によって実行される仮想化アプリケーション526等であってよい。安全なネイティブアプリケーション514は、安全なアプリケーションラッパ520によってラップされてよい。安全なアプリケーションラッパ520は、安全なネイティブアプリケーション514がデバイス上で実行されるときにモバイルデバイス502上で実行される統合ポリシーを含んでよい。安全なアプリケーションラッパ520は、安全なネイティブアプリケーション514の実行時に安全なネイティブアプリケーション514が要求されたタスクを完了するために必要とすることがある企業にホストされるリソースに、モバイルデバイス502上で実行する安全なネイティブアプリケーション514を示すメタデータを含んでよい。安全なアプリケーションランチャ518によって実行される安全なリモートアプリケーション522は、安全なアプリケーションランチャアプリケーション518内で実行されてよい。安全なアプリケーションランチャ518によって実行される仮想化アプリケーション526は、モバイルデバイス502上で、及びエンタプライズリソース504において等でリソースを利用してよい。安全なアプリケーションランチャ518によって実行される仮想化アプリケーション526によってモバイルデバイス502上で使用されるリソースは、ユーザ対話リソース及び処理リソース等を含んでよい。ユーザ対話リソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、及びジェスチャ入力等を収集及び送信するために使用されてよい。処理リソースは、ユーザインタフェースを提示し、エンタプライズリソース504から受信されたデータを処理する等のために使用されてよい。安全なアプリケーションランチャ518によって実行される仮想化アプリケーション526によってエンタプライズリソース504において使用されるリソースは、ユーザインタフェース生成リソース及び処理リソース等を含んでよい。ユーザインタフェース生成リソースは、ユーザインタフェースのアセンブル、ユーザインタフェースの修正、ユーザインタフェースのリフレッシュ等に使用されてよい。処理リソースは、情報の作成、情報の読み出し、情報の更新、情報の削除等に使用されてよい。例えば、仮想化アプリケーション526は、グラフィカルユーザインタフェース(GUI)と関連付けられたユーザ対話を記録してもよく、それらをサーバアプリケーションに通信してもよく、サーバアプリケーションは、ユーザ対話データをサーバ上で動作するアプリケーションへの入力として使用してもよい。この配置では、企業は、サーバ側のアプリケーションと共に、アプリケーションと関連付けられたデータ、ファイル等とを維持することを選択することがある。企業は、モバイルデバイス上での展開のためにアプリケーションを保護することによって、本明細書における原理に従って一部のアプリケーションを「モバイル化する」ことを選択することがあり、この配置は、特定のアプリケーションに対して選択されることがある。例えば、一部のアプリケーションはモバイルデバイス上での使用のために保護されてもよく、他のアプリケーションは、モバイルデバイス上での展開のために準備されないことがあり、または適切でないことがあり、よって、企業は、仮想化技術を通じて作成されていないアプリケーションへのモバイルユーザアクセスを提供することを選択することがある。更なる別の例として、企業は、大規模且つ複合的なデータセットを有する大規模複合アプリケーション(例えば、資材リソース計画アプリケーション)を有していることがあり、モバイルデバイスに対してアプリケーションをカスタマイズすることは、非常に難しく、またはそうでなければ望ましくなく、よって、企業は、仮想化技術を通じてアプリケーションへのアクセスを提供することを選択することがある。更なる別の例として、企業は、保護されたモバイル環境に対してさえ非常に機密であると企業によって見なされることがある高度に保護されたデータ(例えば、人事データ、顧客データ、エンジニアリングデータ)を維持するアプリケーションを有することがあり、よって、企業は、そのようなアプリケーション及びデータへのモバイルアクセスを許可するために、仮想化技術を使用することを選択することがある。企業は、モバイルデバイス上で完全に保護され、完全に機能的なアプリケーションと共に、サーバ側でより適切に動作すると見なされるアプリケーションへのアクセスを可能にする仮想化アプリケーションの両方を提供することを選択することがある。実施形態では、仮想化アプリケーションは、一部のデータ、ファイル等をモバイル電話上の安全な記憶位置の1つに記憶してよい。企業は、例えば、他の情報を許可せずに、特定の情報を電話に記憶されることを可能にすることを選択することがある。
本明細書で説明されるように、仮想化アプリケーションに関連して、モバイルデバイスは、GUIを提示し、次いでGUIとのユーザ対話を記録するように設計された仮想化アプリケーションを有してよい。アプリケーションは、アプリケーションとのユーザ対話としてサーバ側アプリケーションによって使用されることになるユーザ対話をサーバ側に通信してよい。これに応答して、サーバ側上のアプリケーションは、新たなGUIをモバイルデバイスに再度返信してよい。例えば、新たなGUIは、静的ページ、動的ページ、及びアニメーション等であってよく、それによって、リモートに位置するリソースへのアクセスを提供する。
安全なアプリケーションは、モバイルデバイスの管理対象パーティション510内の安全なデータコンテナ528に記憶されたデータにアクセスしてよい。安全なデータコンテナにおいて保護されたデータは、安全なラップされたアプリケーション514、安全なアプリケーションランチャ522によって実行されるアプリケーション、及び安全なアプリケーションランチャ522によって実行される仮想化アプリケーション526等によってアクセスされてよい。安全なデータコンテナ528に記憶されたデータは、ファイル及びデータベース等を含んでよい。安全なデータコンテナ528に記憶されたデータは、特定の安全なアプリケーション530に制限されたデータ、及び安全なアプリケーション532の間で共有されたデータ等を含んでよい。安全なアプリケーションに制限されたデータには、安全な一般データ534及び高度に安全なデータ538を含んでよい。安全な一般データは、高度暗号化標準(AES)128ビット暗号化等の強力な暗号化形式を使用してよく、高度に安全なデータ538は、AES256ビット暗号化等の非常に強力な暗号化形式を使用してよい。安全なデータコンテナ528に記憶されたデータは、デバイスマネージャ524からコマンドを受信すると、デバイスから削除されてよい。安全なアプリケーションは、デュアルモードオプション540を有してよい。デュアルモードオプション540は、セキュリティ保護されたアプリケーションを非保護モードまたは非管理モードで操作するオプションをユーザに提示してよい。非保護または非管理モードでは、安全なアプリケーションは、モバイルデバイス502の非管理対象パーティション512上の非保護データコンテナ542に記憶されているデータにアクセスしてよい。非保護データコンテナに記憶されたデータは、個人データ544であってよい。非保護データコンテナ542に記憶されたデータは、モバイルデバイス502の非管理対象パーティション512上で実行している非保護アプリケーション548によってもアクセスされてよい。非保護データコンテナ542に記憶されたデータは、安全なデータコンテナ528に記憶されたデータがモバイルデバイス502から削除されたとき、モバイルデバイス502上に残ってよい。企業は、ユーザによって所有、ライセンス、または管理される個人データ、ファイル、及び/またはアプリケーション(個人データ)を残し、またはそうでなければ保存しながら、企業によって所有、ライセンス、または制御される、選択されまたは全てのデータ、ファイル、及び/またはアプリケーション(企業データ)をモバイルデバイスから削除することを望むことがある。この操作は、選択的ワイプと呼ばれてよい。本明細書で説明される態様に従って配置された企業及び個人データにより、企業は選択的ワイプを実行してよい。
モバイルデバイス502は、企業におけるエンタプライズリソース504及びエンタプライズサービス508をパブリックインターネット548等に接続してよい。モバイルデバイスは、仮想プライベートネットワーク接続を通じてエンタプライズリソース504及びエンタプライズサービス508に接続してよい。マイクロVPNまたはアプリケーション固有VPNとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション(マイクロVPN550によって示されるような)、特定のデバイス、およびモバイルデバイス上の特定の保護された領域(O/S VPN552によって示されるような)等に固有であってよい。例えば、電話の保護された領域内のラップされたアプリケーションの各々は、アプリケーション固有VPNを通じてエンタプライズリソースにアクセスしてもよく、その結果、場合によっては、ユーザまたはデバイス属性情報と共に、アプリケーションと関連付けられた属性に基づいてVPNへのアクセスを許可することができる。仮想プライベートネットワーク接続は、Microsoft Exchangeトラフィック、Microsoft Active Directoryトラフィック、ハイパーテキスト転送プロトコル(HTTP)トラフィック、ハイパーテキスト転送プロトコルセキュア(HTTPS)トラフィック、及びアプリケーション管理トラフィック等を搬送してよい。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス554をサポート及び有効化してよい。シングルサインオンプロセスは、ユーザが認証証明書の単一のセットを提供することを可能にしてよく、次に、認証証明書は、認証サービス558によって検証される。次に、認証サービス558は、個々のエンタプライズリソース504の各々に認証証明書を提供することをユーザに要求することなく、複数のエンタプライズリソース504へのユーザアクセスを許可してよい。
仮想プライベートネットワーク接続は、アクセスゲートウェイ560によって確立及び管理されてよい。アクセスゲートウェイ560は、モバイルデバイス502へのエンタプライズリソース504の配信を管理、加速、及び改善するパフォーマンス強化機能を含んでよい。アクセスゲートウェイはまた、モバイルデバイス502からパブリックインターネット548にトラフィックを再ルーティングしてもよく、モバイルデバイス502がパブリックインターネット548上で実行する公に利用可能な非保護アプリケーションにアクセスすることを可能にする。モバイルデバイスは、トランスポートネットワーク562を介してアクセスゲートウェイに接続してよい。トランスポートネットワーク562は、1つ以上のトランスポートプロトコルを使用してよく、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、パブリックネットワーク、及びプライベートネットワーク等であってよい。
エンタプライズリソース504は、電子メールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、及びWindows(登録商標)アプリケーションサーバ等を含んでよい。電子メールサーバは、Exchangeサーバ、及びLotus Notesサーバ等を含んでよい。ファイル共有サーバは、ShareFileサーバ等を含んでよい。SaaSアプリケーションは、Salesforce等を含んでよい。Windows(登録商標)アプリケーションサーバは、ローカルのWindows(登録商標)オペレーティングシステム等で実行することを目的としたアプリケーションを提供するために構築された任意のアプリケーションサーバを含んでよい。エンタプライズリソース504は、プレミスベースのリソース、及びクラウドベースのリソース等であってよい。エンタプライズリソース504は、モバイルデバイス502によって直接またはアクセスゲートウェイ560を通じてアクセスされてよい。エンタプライズリソース504は、トランスポートネットワーク562を介してモバイルデバイス502によってアクセスされてよい。トランスポートネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、パブリックネットワーク、及びプライベートネットワーク等であってよい。
エンタプライズサービス508は、認証サービス558、脅威検出サービス564、デバイスマネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャル統合サービス572、及びアプリケーションコントローラサービス574等を含んでよい。認証サービス558は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、及びデータ認証サービス等を含んでよい。認証サービス558は、認証情報を使用してよい。認証情報は、モバイルデバイス502に、及びエンタプライズリソース504によって等で記憶されてよい。モバイルデバイス502に記憶された認証情報は、モバイルデバイス上の暗号化された位置に記憶されてよく、認証情報は、認証の時の使用のためにモバイルデバイス502によって一時的に記憶されてよい、等である。脅威検出サービス564は、侵入検出サービス及び不正アクセス試行検出サービス等を含んでよい。不正アクセス試行検出サービスは、デバイス、アプリケーション、データ等への不正アクセス試行を含んでよい。デバイス管理サービス524は、構成、プロビジョニング、セキュリティ、サポート、監視、報告、及び廃止措置サービスを含んでよい。ファイル共有サービス568は、ファイル管理サービス、ファイルストレージサービス、ファイルコラボレーションサービス等を含んでよい。ポリシーマネージャサービス570は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、及びデータポリシーマネージャサービス等を含んでよい。ソーシャル統合サービス572は、連絡先統合サービス、コラボレーションサービス、Facebook、Twitter、LinkedIn等のソーシャルネットワークとの統合を含んでよい。アプリケーションコントローラサービス574は、管理サービス、プロビジョニングサービス、デプロイメントサービス、割り当てサービス、失効サービス、ラッピングサービス等を含んでよい。
エンタプライズモビリティ技術アーキテクチャ500は、アプリケーションストア578を含んでよい。アプリケーションストア578は、ラップされていないアプリケーション580、事前にラップされたアプリケーション582等を含んでよい。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578にポピュレートされてよい。アプリケーションストア578は、アクセスゲートウェイ560を介して、パブリックインターネット548等を介して、モバイルデバイス502によってアクセスされてよい。アプリケーションストアは、ユーザに対して直感的且つ使用することが容易なユーザインタフェースを備えてよい。
ソフトウェア開発キット584は、この説明で前述したようにアプリケーションをラップすることにより、ユーザが選択したアプリケーションをセキュリティ保護する機能をユーザに提供してよい。ソフトウェア開発キット584を使用してラップされたアプリケーションは、次に、アプリケーションコントローラ574を使用してアプリケーションストア578にそれをポピュレートすることにより、モバイルデバイス502で利用できるようにされてよい。
エンタプライズモビリティ技術アーキテクチャ500は、管理及び分析機能を含んでよい。管理及び分析機能は、リソースがどのように使用されるか、及びリソースがどの程度使用されるか等に関連する情報を提供してよい。リソースは、デバイス、アプリケーション、及びデータ等を含んでよい。リソースの使用方法は、どのデバイスがどのアプリケーションをダウンロードするか、及びどのアプリケーションがどのデータにアクセスするか等を含んでよい。リソースがどの程度使用されるかは、アプリケーションがどの程度ダウンロードされたか、及びアプリケーションが特定のデータセットに難解アクセスしたか等を含んでよい。
図6は、別の例示的なエンタプライズモビリティ管理システム600である。図5を参照して上記説明されたモビリティ管理システム500のコンポーネントの一部は、簡単にするために省略されている。図6に示されるシステム600のアーキテクチャは、図5を参照して上記説明されたシステム500のアーキテクチャと多くの点で類似しており、上述していない追加の機能を含んでよい。
この場合、左側は、クライアントエージェント604を有する登録済みモバイルデバイス602を表し、クライアントエージェント604は、ゲートウェイサーバ606(アクセスゲートウェイ及びアプリケーションコントローラ機能を含む)と対話して、上記右側に示すように、Exchange、Sharepoint、公開鍵基盤(PKI)リソース、Kerberosリソース、認証証明書発行サービス等の様々なエンタプライズリソース608及びサービス609にアクセスする。具体的には示されていないが、モバイルデバイス602は、アプリケーションの選択及びダウンロードのために、エンタプライズアプリケーションストア(ストアフロント)と対話してもよい。
クライアントエージェント604は、高解像度ユーザ体験(HDX)/ICAディスプレイリモートプロトコルを使用してアクセスされる、エンタプライズデータセンタにおいてホストされるWindows(登録商標)アプリケーション/デスクトップについてのUI(ユーザインタフェース)手段としての役割を果たす。クライアントエージェント604はまた、ネイティブのiOSまたはAndroid(登録商標)アプリケーション等、モバイルデバイス602上のネイティブアプリケーションのインストール及び管理をサポートする。例えば、上記図に示された管理対象アプリケーション610(メール、ブラウザ、ラップされたアプリケーション)は全て、モバイルデバイス上でローカルに実行するネイティブアプリケーションである。このアーキテクチャのクライアントエージェント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アクセスゲートウェイとしても知られている)のゲートウェイサービス部分にログインする。クライアントエージェント604はまた、以下でより完全に説明されるように、ローカルデータボルト616についての暗号化キーを導出するための入力マテリアルを生成することができ、またはPKI保護リソースへの直接認証を有効にすることができるクライアント認証情報を提供することができる、ゲートウェイサーバ606の上のサポートサービスを呼び出してよい。
より詳細には、アプリケーション管理フレームワーク614は、各管理対象アプリケーション610を「ラップ」する。これは、明示的なビルドステップまたは、またはポストビルド処理ステップを介して組み込まれてよい。アプリケーション管理フレームワーク614は、アプリケーション610の最初の起動時にクライアントエージェント604と「ペア」になって、安全なIPCチャネルを初期化し、そのアプリケーションについてのポリシーを取得してよい。アプリケーション管理フレームワーク614は、クライアントエージェントのログイン依存関係、及びローカルOSサービスをどのように使用することができるか、またはそれらがアプリケーション610とどのように対話することができるかを制限する抑制ポリシーの一部等、ローカルに適用するポリシーの関連する部分を実施してよい。
アプリケーション管理フレームワーク614は、認証及び内部ネットワークアクセスを容易にするために、安全なIPCチャネル612を介してクライアントエージェント604によって提供されるサービスを使用してよい。プライベート及び共有データボルト616(コンテナ)のキー管理は、管理対象アプリケーション610とクライアントエージェント604の間の適切な対話によって管理されてもよい。ボルト616は、オンライン認証後にのみ利用可能であってよく、またはポリシーによって許可される場合はオフライン認証後に利用可能にされてよい。ボルト616の最初の使用は、オンライン認証を必要とすることがあり、オフラインアクセスは、最大でも、オンライン認証が再度必要とされる前のポリシーリフレッシュ期間に制限されてよい。
内部リソースへのネットワークアクセスは、アクセスゲートウェイ606を介して、個々の管理対象アプリケーション610から直接発生する場合がある。アプリケーション管理フレームワーク614は、各アプリケーション610の代わりにネットワークアクセスを調整することを担当してよい。クライアントエージェント604は、オンライン認証に続いて得られる適切な時間制限のある二次的な認証情報を提供することにより、これらのネットワーク接続を促進してよい。リバースウェブプロキシ接続やエンドツーエンドVPNスタイルのトンネル618等、ネットワーク接続の複数のモードを使用してよい。
メール及びブラウザ管理対象アプリケーション610には特別なステータスがあり、任意のラップされたアプリケーションでは一般に利用できない機能を使用してよい。例えば、メールアプリケーションは、完全なAGログオンを必要とすることなく、拡張した期間にわたってExchangeにアクセスすることを可能にする特別なバックグラウンドネットワークアクセスメカニズムを使用してよい。ブラウザアプリケーションは、異なる種類のデータを分離するために、複数のプライベートデータボルトを使用してよい。
このアーキテクチャは、様々な他のセキュリティ機能の組み込みをサポートする。例えば、ゲートウェイサーバ606(そのゲートウェイサービスを含む)は、場合によっては、アクティブディレクトリ(AD)パスワードを検証する必要がないことがある。ADパスワードが一部の状況で一部のユーザについての認証因子として使用されるか否かは、企業の裁量に任せることができる。ユーザがオンラインまたはオフラインである(つまり、ネットワークに接続されている、または、接続されていない)場合、異なる認証方法を使用してよい。
ステップアップ認証は、ゲートウェイサーバ606が、強力な認証を使用してより機密性の高いデータへのアクセスを有することを許可された管理対象ネイティブアプリケーション610を識別することができ、前のより弱いレベルのログインの後にユーザからの再認証が必要とされることを意味する場合でさえ、それらのアプリケーションへのアクセスが適切な認証を実行した後にのみ許可されることを保証することができる機能である。
この解決法の別のセキュリティ機能は、モバイルデバイス602上のデータボルト616(コンテナ)の暗号化である。ボルト616は、ファイル、データベース、及び構成を含む全てのオンデバイスデータが保護されるように暗号化されてよい。オンラインボルトの場合、キーはサーバ(ゲートウェイサーバ606)に記憶されてよく、オフラインボルトの場合、キーのローカルコピーがユーザパスワードまたは生体認証によって保護されてよい。モバイルデバイス602上の安全なコンテナ616にデータがローカルに記憶されるとき、最小のAES256暗号化アルゴリズムが利用されることが好ましい。
他の安全なコンテナ機能も実装されてよい。例えば、ロギング機能が含まれてもよく、アプリケーション610の内部で発生する全てのセキュリティイベントがロギングされ、バックエンドに報告される。アプリケーション610が改ざんを検出した場合等、データワイピングがサポートされてよく、関連する暗号化キーがランダムなデータにより上書きされてよく、ユーザデータが破壊されたというヒントがファイルシステムに残らないようにする。スクリーンショット保護は別の機能であり、アプリケーションは、スクリーンショットにデータが記憶されるのを防止することができる。例えば、キーウインドウの非表示プロパティがYESに設定されてよい。これにより、画面に現在表示されているあらゆるコンテンツが隠され、通常はコンテンツが存在しているスクリーンショットが空白にされる。
アプリケーションコンテナの外部にローカルにデータが転送されるのを防止することによって、例えば、データをコピーし、またはデータを外部アプリケーションに送信することによって等、ローカルデータ転送を防止することができる。キーボードキャッシュ機能が動作して、機密性の高いテキストフィールドの自動修正機能を無効にしてよい。SSL認証情報の検証が機能し得るので、アプリケーションは、サーバのSSL認証情報をキーチェーンに記憶せずに、詳細に検証する。デバイス上でデータの暗号化するために使用されるキーが、ユーザによって供給されるパスフレーズまたは生体データを使用して生成されるように(オフラインアクセスが要求される場合)、暗号化キー生成機能が使用されてよい。オフラインアクセスが要求されない場合、サーバ側でランダムに生成され、記憶された別のキーで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(登録商標)サーバパスワードの複雑性要件によって記述されているように、パスワードの最小長、文字クラス構成、及び経過時間に関してパスワード標準を制御及び施行するポリシーを提供してもよいが、これらの要件は修正されてよい。
別の機能は、二次的な認証情報として特定のアプリケーション610に対するクライアント側認証情報の有効化に関連してよい(アプリケーション管理フレームワークのマイクロVPN機能を介してPKI保護ウェブリソースにアクセスすることを目的に)。例えば、アプリケーションは、そのような認証情報を利用してよい。この場合、ActiveSyncプロトコルを使用した認証情報ベースの認証がサポートされてよく、クライアントエージェント604からの認証情報がゲートウェイサーバ606によって読み出され、キーチェーンで使用されてよい。各管理対象アプリケーションは、ゲートウェイサーバ606において定義されたラベルによって識別される、1つの関連するクライアント認証情報を有してよい。
ゲートウェイサーバ606は、企業の特殊目的ウェブサービスと対話して、クライアント認証情報の発行をサポートし、関連する管理対象アプリケーションが内部PKI保護リソースを認証することを可能にしてよい。
クライアントエージェント604及びアプリケーション管理フレームワーク614は、内部PKI保護ネットワークリソースに対する認証のためのクライアント認証情報の取得及び使用をサポートするように強化されてよい。様々なレベルのセキュリティ及び/または分離要件に一致させる等のために、1つよりも多い認証情報がサポートされてよい。認証情報は、メール及びブラウザ管理対象アプリケーションによって使用されてよく、最終的には任意のラップされたアプリケーションによって使用されてよい(これらのアプリケーションが、アプリケーション管理フレームワークがHTTPS要求を仲介することが妥当なウェブサービススタイルの通信パターンを使用することを条件として)。
iOS上でのアプリケーション管理クライアント認証情報のサポートは、公開鍵暗号標準(PKCS)12BLOB(バイナリラージオブジェクト)を、使用期間ごとに各管理対象アプリケーションにおける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は、アプリケーションのクライアント認証情報及び秘密鍵を使用して、特定の公開キー操作を実行することを許可されてよい。したがって、アプリケーションがブラウザのように振る舞い、認証情報アクセスが使用されないとき、アプリケーションが「who am I」についての認証情報を読み出すとき、アプリケーションが安全なセッショントークンを構築するために認証情報を使用するとき、アプリケーションが重要なデータ(例えば、トランザクションログ)のデジタル署名または一時的なデータ暗号化のための秘密鍵を使用するとき等、様々なユースケースが識別及び処理されてよい。
ヘルパ(複数可)を介してクライアントデバイス(複数可)を匿名セッション(複数可)に接続する例示的な実施例
図7は、本明細書で説明される1つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する例示的なシステム及び方法を示す。システムは、コンピューティングデバイス717(及び、他のコンピューティングデバイス)を含んでよい。コンピューティングデバイス717は、例えば、仮想マシン上でのセッションの作成及び割り当てを促進するためのコントローラとしての役割を果たしてよい。コンピューティングデバイス717は、セッションマネージャ720を含んでよい。以下で更に詳細に説明されるように、セッションマネージャ720は、例えば、匿名セッション(複数可)を生成するかどうか、及び/または匿名セッション(複数可)をどこで生成するか(例えば、どの仮想マシン)を判定してよい。コンピューティングデバイス717は、コンピューティングデバイス717上で実行するマイクロサービスを含むことができる、管理アーキテクチャサービス719を含んでよい。例えば、管理アーキテクチャサービス719は、ブローカサービスを含んでよい。以下で更に詳細に説明されるように、管理アーキテクチャサービス719は、使用中のセッションを識別及び/または管理してよい。データベース(図示せず)は、ターゲットマシン上で1つ以上のセッションの状態を維持してよく、コンピューティングデバイス717は(例えば、セッションマネージャ720を介して)、例えば、使用中または利用可能であるセッションの数を判定するようデータベースを調べてよい。データベースは、他のコンピューティングデバイス(図示せず)によって共有されてよく、他のコンピューティングデバイスは同様に、使用中または利用可能であるセッションの数を判定するようデータベースを調べてよい。
システムは、1つ以上のクライアントデバイス701を含んでよく、各クライアントデバイスは、関連するクライアントエージェント705を実行してよい。クライアントエージェント705は、クライアントデバイスを匿名セッション等のセッションに接続することを促進することができ、その結果、クライアントデバイスは、1つ以上のリソース(例えば、仮想アプリケーション及び/またはデスクトップ)にアクセスすることができる。システムは、アプリケーションストア710を含んでよい。以下で更に詳細に説明されるように、アプリケーションストア710は、1つ以上の匿名セッションを生成し、及び/またはそれらの匿名セッションについての構成情報を提供するために使用されてよい。アプリケーションストア710はまた、クライアントデバイスを特定のセッションに接続することを促進することができる。
システムは、ターゲットマシン740(及び、他のマシン)を含んでよい。ターゲットマシンは、1つ以上のセッションを実行するために使用されてよく、1つ以上のセッションの一部は、匿名セッションであってよく、1つ以上のセッションの一部は、ユーザ固有セッションであってよい。例えば、図7は、匿名セッションを含むことができる、セッション730を示す。セッション730は、セッション内でヘルパプロセス735を含んでよい。ヘルパ735は、クライアントデバイスがセッション730にいまだ接続されていないときにセッション730をアライブに維持するために使用されてよい。ヘルパ735はまた、以下の更なる詳細で説明されるように、匿名セッションからユーザ固有セッションへのセッション730の変換を促進することができる。ターゲットマシン740は、ターゲットマシン740及びコンピューティングデバイス717、クライアントデバイス、並びに/または他のデバイスの間の通信を促進するために使用される通信エージェント715(例えば、ブローカリングエージェント)を含んでよい。ターゲットマシン740は、ターゲットマシン740上でのセッションの作成及び管理を促進することができる、サーバエージェント725を含んでよい。
図8は、本明細書で説明される1つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する例示的なシステム及び方法を示す。ステップ806では、コンピューティングデバイス717は、セッションマネージャ720を介して等、匿名セッション等のセッションを生成するかどうかを判定してよい。セッションマネージャ720は、管理サービス719に、セッションのプール内のセッションの数及び/またはタイプを判定するクエリを送信してよい。セッションのプールは、ターゲットマシン740等の1つ以上の仮想マシン上で実行してよい。管理サービス719は、どのセッションが使用されているか、及びどのユーザがそれらのセッションを使用しているかを知ることができる。管理サービス719はまた、セッションのプール内のどのセッションがクライアントデバイスによる使用のために利用可能な匿名セッションであるかを知ることができる。例えば、管理サービス719は、どのセッションがされているか、どのユーザがそれらのセッションを使用しているか、及び/またはセッションのプール内のどのセッションがクライアントデバイスによる使用のために利用可能な匿名セッションであるかを判定するよう、データベースにアクセスしてよい。セッションマネージャ720は、管理サービス719から、クライアントデバイスによる使用のために利用可能な匿名セッションの数及び/またはタイプを示す情報を受信してよい。セッションマネージャ720は、例えば、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいて、匿名セッションを生成するかどうかを判定してよい。例えば、セッションマネージャ720は、プール内で特定の数のセッションを維持することを試みてよい。セッションマネージャ720が匿名セッションを生成しないと判定する場合、セッションマネージャ720は、匿名セッションを生成するかどうかを再度判定するよう、待機して、後の時点において管理サービス719をクエリしてよい。一方、セッションマネージャ720が匿名セッションを生成すると判定する場合、セッションマネージャ720は、ステップ810に進んでよい。
ステップ810では、セッションマネージャ720は、アプリケーションストア710に、セッションを生成する要求を送信してよい。要求は、セッションが匿名セッションになることを示してよい。このインジケーションに基づいて、要求を処理する後続のコンポーネント(例えば、通信エージェント715、サーバエージェント725等)は、セッションが匿名セッションになることを知ることができる。
ステップ814では、アプリケーションストア710は、管理サービス719に、匿名セッションを起動する要求を送信してよい。管理サービス719は(例えば、ブローカサービスを介して)、セッションを生成するターゲットマシン740(または、他の位置)を判定してよい。判定は、例えば、負荷分散、要求に応答する準備性等に基づいてよい。ステップ818では、管理サービス719は、ターゲットマシン740の通信エージェント715に、匿名セッションを生成するために作成するメッセージを送信してよい。作成メッセージは、起動セッション要求(例えば、ステップ814)に応答して送信されてよい。ステップ822では、管理サービス719は、アプリケーションストア710に、匿名セッションを起動する要求を確認応答してよい。
ステップ826では、アプリケーションストア710は、セッションマネージャ720に、匿名セッションを生成するための構成情報を送信してよい。セッションマネージャ720は、その要求(例えば、ステップ810において送信された)に基づいて構成情報を受信してよい。一部の実施例では、アプリケーションストア710は、構成情報を生成してよい。構成情報は、匿名セッションを生成するターゲットマシン740のアドレス(または、他の識別子)等の情報を含んでよい。構成情報は、セッション(例えば、仮想デスクトップまたは仮想アプリケーション)のタイプを示すことができる。構成情報は、例えば、セッションマネージャ720に送信されるICAファイルに含まれてよい。
ステップ830では、セッションマネージャ720は、対応するターゲットマシン740に、匿名セッション730等の匿名セッションを生成する(例えば、起動する)要求を送信してよい。例えば、セッションマネージャ720は、アプリケーションストア710から構成情報を受信してよく、構成情報に基づいて、セッションマネージャ720は、ターゲットマシン740上での匿名セッションの生成を開始する要求を送信してよい。匿名セッション730を生成する要求は、匿名セッション730と関連付けられた匿名ヘルパ735を開始する要求を含んでよい。匿名ヘルパ735は、匿名セッション730内で実行するプロセスであってよい。一部の態様では、各匿名セッションは、対応するヘルパを有してよい。
セッションマネージャ720はまた、ターゲットマシン740上の匿名セッション730に接続してよい。接続は、HDX/ICA接続等、ターゲットマシン740への表示リモーティングプロトコル接続を含んでよい。匿名セッション730に接続することによって、セッションマネージャ720は、セッション730を効果的に始動することができる。
ステップ834では、セッションマネージャ720は、特定の時間の後等、匿名セッション730から切断してよい。匿名セッション730から切断することによって、匿名セッション730は、他のクライアントデバイスによる使用に対して利用可能にされてよい。例えば、匿名セッション730は、待機期間に入ってよく、休眠してよく、セッション730に接続するようクライアントデバイスに対して待機する。
ステップ838では、ヘルパ735は、匿名セッション730を維持してよい。ターゲットマシン740上での匿名セッション730の生成を開始した後、匿名ヘルパは、或る期間の間、ターゲットマシン740上で匿名セッション730をアライブに維持してよい。例えば、ターゲットマシン740のオペレーティングシステムは、サーバエージェント725に、ヘルパ735が実行しており、その結果、匿名セッション730が維持されることを報告してよい。したがって、セッション730は、実行していることを維持されてよく、その結果、クライアントデバイスは、セッション730に即時に接続することができる。匿名ヘルパ735は、閾値時間量の間、匿名セッション730をアライブに維持してよい。一部の態様では、クライアントデバイスが閾値時間量内に匿名セッション730に接続されていない場合、匿名セッション730は、ターゲットマシン740から除去されてよい。加えてまたは代わりに、サーバエージェント725は、それらを実行している最後のアプリケーションプロセスが終結するとき等、セッションを自動で終結させてよい。ヘルパ735が匿名セッション730をアライブに維持する間、クライアントデバイスは、セッションに接続することを望むことがある。
ステップ840では、クライアントデバイスは、クライアントエージェント705を介して等、アプリケーションストア710に、セッションを起動する要求を送信してよい。例えば、アプリケーションストア710は、クライアントデバイスから、アプリケーションまたデスクトップセッションを始動する要求を受信してよい。以下で更に詳細に説明されるように、アプリケーションまたはデスクトップセッションを要求するクライアントデバイスは、既存の匿名セッションの1つを要求することがある。ステップ844では、アプリケーションストアは、管理サービス719に要求を送信してよい。
ステップ848では、管理サービス719は、ターゲットマシン740の通信エージェント715に、作成メッセージ(例えば、作成呼び出しとして)を送信してよい。メッセージは、通信エージェント715に、クライアントデバイスのクライアントエージェント705に接続されるよう作成することを示すことができる。管理サービス719は、クライアントエージェント705から受信された情報に基づいて等、クライアントデバイスに対するセッションを判定してよい。クライアントエージェント705から受信された情報は、例えば、ユーザ識別、ユーザ位置、要求が外部ネットワークから生じているか(例えば、ゲートウェイを介して)またはローカルネットワーク(例えば、LAN)から生じているかどうか、クライアントデバイスがアンチウイルスソフトウェアをインストールしているかどうか、クライアントデバイスがいずれかのアプリケーション制約を有しているかどうか、等を含んでよい。クライアントエージェント705から受信された情報に基づいて、管理サービス719は、クライアントデバイスに対して適切な匿名セッションが存在するかどうかを判定してよい。匿名セッションが適切であるかどうかは、ポリシー決定または他の因子に基づいてよい。
匿名セッションの複数のプールが存在してよく、各プールは、異なる特性を有してよい。管理サービス719は、例えば、ユーザ識別(例えば、ユーザが特定のリソースへのアクセスを有するかどうか)、ユーザ位置、要求が外部ネットワークから生じているか(例えば、ゲートウェイを介して)もしくはローカルネットワーク(例えば、LAN)から生じているかどうか、クライアントデバイスがアンチウイルスソフトウェアをインストールしているかどうか、クライアントデバイスがいずれかのアプリケーション制約を有しているかどうか、またはユーザと関連付けられた他の情報に基づいて、クライアントエージェントを仮想マシン740及び/または匿名セッションのプールに方向付けてよい。別の実施例として、匿名セッションのプールは、匿名セッションの別のプールとは異なるタイプのマシン上で実行してよく(例えば、4GBマシン対8GBマシン)、ポリシー決定は、クライアントデバイスを4GBマシンまたは8GBマシンに接続するかどうかを判定するために使用されてよい。匿名セッションの異なるプールは、異なるタイプのアプリケーションをサポートすることができ、管理サービス719は、クライアントデバイスによって要求されるアプリケーションに基づいて、クライアントデバイスを経路指定する匿名セッションのプールを判定してよい。例えば、クライアントデバイスを接続するターゲットマシン上の匿名セッションを選択することは、クライアントデバイスの位置、クライアントデバイスが接続されるネットワークのインジケーション、ターゲットマシンのプロセッサ特性、またはターゲットマシンのメモリ特性のうちの1つ以上に基づいてよい。ステップ852では、管理サービス719は、セッションを起動するクライアントエージェント705からの要求を確認応答してよい。
ステップ856では、アプリケーションストア710は、クライアントデバイスのクライアントエージェント705に、匿名セッションについての構成情報を送信してよい。クライアントエージェント705は、その起動要求(例えば、ステップ840において送信された)に基づいて、構成情報を受信してよい。構成情報は、匿名セッションが存在するターゲットマシン740のアドレス(または、他の識別子)等の情報を含んでよい。構成情報は、加えてまたは代わりに、匿名セッションの1つ以上の識別子を含んでよい。構成情報は、例えば、クライアントエージェント705に送信されるICAファイルに含まれてよい。
ステップ860では、クライアントエージェント705は、匿名セッション730に接続する要求を送信してよい。接続は、アプリケーションストア710及び/または管理サービス719から受信された構成情報を使用してよい。前に説明されたように、接続は、HDX/ICA接続等、ターゲットマシン740への表示リモーティングプロトコル接続を含んでよい。接続は、例えば、マウス、キーボード、及び/またはグラフィック接続(複数可)を含んでよい。接続は、セッションマネージャ720が生成され、接続され、及び匿名セッションから切断された後に、クライアントデバイスが匿名セッション730に接続することができることを理由に、再接続として機能してよい。
ステップ864では、ヘルパ735は、通信エージェント715に、クライアントデバイスのユーザと関連付けられた認証情報及び/またはアプリケーションの詳細を取り出す要求を送信してよい。ヘルパ735は、クライアントデバイスを認証するために使用されてよい。例えば、ヘルパ735は、通信エージェント715から、クライアントデバイスのユーザと関連付けられた認証情報を取り出してよい。ユーザ認証情報の例は、実際のエンドユーザ認証情報(例えば、ユーザ名及び/もしくはパスワード、生物測定、または他の一意な識別子)、セキュリティトークン、単一のサインオン認証情報、及びパス認証情報等を含む。認証情報は、選択されたセッション730を実行する仮想マシン740に送信されてよく(例えば、ヘルパ735を介して)、ヘルパ735は、認証情報に基づいてユーザを認証してよい。その上、ユーザ認証情報は、認証情報をローカルに記憶させることができる、接続またはセッションアンロック時間において供給されてよい。ユーザは、チャレンジ/レスポンス認証プロトコル及び/またはKerberos等、ドメインベースのネットワーク認証を使用して認証されてよい。加えてまたは代わりに、システムは、匿名セッションにリンク付けされたユーザ認証情報を提供してよく、よって、それは、認証情報プロバイダによって読み出し可能となることができる。適切な認証情報タイトルは、ユーザ認証情報とのロックされたセッションをアンロックするよう表示されてよい。
ヘルパ735はまた、匿名セッション730を、クライアントデバイスに対してカスタマイズされたセッションに変換するために使用されてよい。ヘルパ735は、ユーザと関連付けられたプロファイルから取り出された情報に基づいて、ユーザ構成パラメータをターゲットマシン上のアプリケーションと関連付けてよい。プロファイルは、クライアントデバイスによってアクセスされるアプリケーション(複数可)及び/またはデスクトップ(複数可)についての個人設定(例えば、ショートカット、アプリケーションプロファイル、クッキー等)を含んでよい。ヘルパ735は、クライアントデバイスに対するセッション730をカスタマイズするために、ユーザのプロファイルからの情報を使用してよい。セッション730は、エンドユーザ識別によって保有されるとしてタグ付けされてよい。クライアントデバイスに対するセッション730をカスタマイズすることは、適切なユーザポリシーをセッション730に適用すること、及び/またはセッション730と関連付けられることになるユーザ固有ローミングプロファイルを開始することを含んでよい。ユーザは、適切な柔軟なアプリケーション層ディスクへのアクセスを許可されてよい。ログオンスクリプトまたはレジストリ実行アクションは、再実行されてよい。
ステップ868では、ヘルパ735は、アプリケーション745を始動してよい。ヘルパ735は、ユーザの認証情報及び/またはプロファイル情報に基づいて、ユーザになりすましてよい。ヘルパ735は、ユーザとしてターゲットマシン740上でアプリケーションを始動するために、ユーザと関連付けられた認証情報を使用してよい。ユーザとしてターゲットマシン740上でアプリケーションを始動することは、ユーザと関連付けられたプロファイルから取り出された情報に基づいて、ターゲットマシン740上のアプリケーションについてのユーザ構成パラメータを関連付けることを含んでよい。ヘルパ735は、アプリケーション745を始動するためのアクションとしてWINDOWS(登録商標)の実行を使用してよい。例えば、セッション内のWINDOWS(登録商標)シェルプロセスは、ユーザ認証情報及び/またはトークンを取り込み、ユーザトークンを取得するためにそれらを使用するようにされてよく、ユーザトークンによりアクションとしての実行は、所望のエンドユーザとしてターゲットアプリケーション745を始動するために使用されてよい。クライアントデバイスは、クライアントエージェント705を介して、セッション730及びアプリケーション745に接続されてよい。一部の態様では、エンドユーザは、匿名セッションがセッション730及びアプリケーション745に接続するために使用されていたことを知らないことがあり、よって、プロセスは、エンドユーザに対して透過的であってよい。
ステップ872では、セッション730と関連付けられたヘルパプロセス735は、ユーザとしてターゲットマシン740上でアプリケーション745を始動した後に終了してよい。ヘルパプロセスを終了した後、セッション730は、匿名セッションとして処理されないことがある。むしろ、セッション730は、エンドユーザに対してカスタマイズされたセッションとして処理されてよい。同一または同様のステップは、クライアントデバイスを仮想デスクトップに接続するために使用されてよい。クライアントデバイスは次いで、アプリケーション745及び/または仮想デスクトップと関連付けられた1つ以上のリソースにアクセスしてよい。いくつかのポイントにおいて、クライアントデバイスは、セッション730から切断してよい。
ステップ880では、クライアントデバイスは、セッション730から切断されてよい。例えば、クライアントエージェント705は、ユーザとしてターゲットマシン740上でアプリケーション745を始動した後、セッション730から切断する要求を送信してよい。セッション730は、クライアントデバイスから切断要求を受信してよい。
ステップ884では、セッション730は、切断する要求を受信したことに応答して等、ターゲットマシン740から切断及び/または除去されてよい。セッション730は、エンドユーザがセッション730から切断するとき、終了及び/または消去されてよい。したがって、セッションが特定のユーザと関連付けられると(例えば、特定のユーザによって使用される)、セッションは、匿名セッションのプールから離れてよく、他のユーザは、セッションを使用することが可能でないことがある。ユーザのデータ、構成、または他の情報は、それがユーザに対してカスタマイズされると、他のユーザがセッション730を使用することを防止することによって、安全に維持されてよい。前に説明されたように、他の匿名セッションは、仮想アプリケーション及び/またはデスクトップへの即時アクセスを促進するよう作成されてよい。
主題が構造的特徴及び/または方法論的動作に固有の言語において説明されてきたが、添付の特許請求の範囲において定義される主題は、上記説明された特定の特徴または動作に必ずしも限定されないことが理解されよう。むしろ、上記説明された特定の特徴及び動作は、以下の特許請求の範囲の実施例の実装態様として説明される。
関連出願の相互参照
本出願は、2018年5月11日に出願された米国非仮特許出願第15/976,980号の優先権を主張し、その内容は、参照によりその全体が本明細書に明示的に組み込まれる。