(57)【要約】【課題】ヘルパ(735)を介してクライアントデバイス(701)を匿名セッション(730)に接続する方法及びシステムを提供する。【解決手段】１つ以上の匿名セッション(730)は、１つ以上のターゲットマシン(740)で生成される。匿名セッション(730)を生成するための構成情報は、ターゲットマシン(740)での匿名セッション(730)の生成を開始するために使用される。ヘルパプロセスは作成され、匿名セッション(730)と関連付けられる。仮想アプリケーションまたはデスクトップを始動する要求は、クライアントデバイス(701)から受信され、クライアントデバイス(701)は、ターゲットマシン(740)の匿名セッション(730)に接続される。匿名セッション(730)と関連付けられたヘルパ(735)は、クライアントデバイス(701)のユーザと関連付けられた認証情報を取り出し、及び／またはユーザとしてターゲットマシン(740)で仮想アプリケーションもしくはデスクトップを始動するために、ユーザと関連付けられた認証情報を使用する。【選択図】図７
2021521574.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって、匿名セッションを生成すると判定することと、
前記コンピューティングデバイスによって、前記匿名セッションを生成する要求を送信することと、
前記要求に基づいて、前記コンピューティングデバイスによって、前記匿名セッションを生成するための構成情報を受信することと、
前記構成情報に基づいて、前記コンピューティングデバイスによって、ターゲットマシンでの前記匿名セッションの生成を開始する要求を送信することであって、前記匿名セッションの生成を開始する前記要求は、前記匿名セッションと関連付けられた匿名ヘルパを開始する要求を含む、前記送信することと、
クライアントデバイスから、アプリケーションを始動する要求を受信することと、
前記アプリケーションを始動する前記要求を受信したことに基づいて、前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することと、
前記匿名セッションと関連付けられた前記匿名ヘルパによって、前記クライアントデバイスのユーザと関連付けられた認証情報を取り出すことと、
前記匿名ヘルパによって、前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動するために、前記ユーザと関連付けられた前記認証情報を使用することと、
を含む、方法。
【請求項２】
前記匿名セッションを生成すると判定することは、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいている、請求項１に記載の方法。
【請求項３】
前記ターゲットマシンでの前記匿名セッションの生成を開始する前記要求は、
前記コンピューティングデバイスによって、前記ターゲットマシンの前記匿名セッションに接続することと、
或る時間量の後、前記ターゲットマシンの前記匿名セッションから前記コンピューティングデバイスを切断することと、を含み、
前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することは、前記匿名セッションから前記コンピューティングデバイスを切断した後に実行される、
請求項１に記載の方法。
【請求項４】
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動した後、前記匿名セッションと関連付けられた前記匿名ヘルパを終了すること、
を更に含む、請求項１に記載の方法。
【請求項５】
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動した後、前記クライアントデバイスから、前記匿名セッションから切断する要求を受信することと、
切断する前記要求を受信したことに応答して、前記匿名セッションから前記クライアントデバイスを切断し、前記ターゲットマシンから前記匿名セッションを除去することと、
を更に含む、請求項１に記載の方法。
【請求項６】
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動することは、取り出されたユーザプロファイルに基づいて、ユーザ構成パラメータを前記ターゲットマシンの前記アプリケーションと関連付けることを含む、請求項１に記載の方法。
【請求項７】
前記匿名セッションを含む複数の匿名セッションは、前記ターゲットマシンにあり、
前記複数の匿名セッションの各々は、匿名ヘルパと関連付けられ、
前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することは、前記クライアントデバイスの位置、前記クライアントデバイスが接続されるネットワークのインジケーション、前記ターゲットマシンのプロセッサ特性、または前記ターゲットマシンのメモリ特性のうちの１つ以上に基づいている、
請求項１に記載の方法。
【請求項８】
前記ターゲットマシンで前記匿名セッションの生成を開始した後、前記匿名ヘルパによって、或る期間の間に前記ターゲットマシンで前記匿名セッションをアライブに維持すること、
を更に含む、請求項１に記載の方法。
【請求項９】
装置であって、
プロセッサと、
コンピュータ実行可能命令を記憶したメモリと、を備え、
前記コンピュータ実行可能命令は、前記プロセッサによって実行されるとき、前記装置に、
匿名セッションを生成すると判定することと、
前記匿名セッションを生成する要求を送信することと、
前記要求に基づいて、前記匿名セッションを生成するための構成情報を受信することと、
前記構成情報に基づいて、ターゲットマシンでの前記匿名セッションの生成を開始する要求を送信することであって、前記匿名セッションの生成を開始する前記要求は、前記匿名セッションと関連付けられた匿名ヘルパを開始する要求を含む、前記送信することと、
クライアントデバイスから、アプリケーションを始動する要求を受信することと、
前記アプリケーションを始動する前記要求を受信したことに基づいて、前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することと、
前記匿名セッションと関連付けられた前記匿名ヘルパを介して、前記クライアントデバイスのユーザと関連付けられた認証情報を取り出すことと、
前記匿名ヘルパを介して、前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動するために、前記ユーザと関連付けられた前記認証情報を使用することと、
を実行させる、前記装置。
【請求項１０】
前記匿名セッションを生成すると判定することは、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいている、請求項９に記載の装置。
【請求項１１】
前記ターゲットマシンでの前記匿名セッションの生成を開始する前記要求は、
前記ターゲットマシンの前記匿名セッションに接続することと、
或る時間量の後、前記ターゲットマシンの前記匿名セッションから前記装置を切断することと、を含み、
前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することは、前記匿名セッションから前記装置を切断した後に実行される、
請求項９に記載の装置。
【請求項１２】
前記メモリは、前記プロセッサによって実行されるとき、前記装置に、
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動した後、前記匿名セッションと関連付けられた前記匿名ヘルパを終了させる、
コンピュータ実行可能命令を記憶している、請求項９に記載の装置。
【請求項１３】
前記メモリは、前記プロセッサによって実行されるとき、前記装置に、
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動した後、前記クライアントデバイスから、前記匿名セッションから切断する要求を受信させ、
切断する前記要求を受信したことに応答して、前記匿名セッションから前記クライアントデバイスを切断させ、前記ターゲットマシンから前記匿名セッションを除去させる、
コンピュータ実行可能命令を記憶している、請求項９に記載の装置。
【請求項１４】
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動することは、取り出されたユーザプロファイルに基づいて、ユーザ構成パラメータを前記ターゲットマシンの前記アプリケーションと関連付けることを含む、請求項９に記載の装置。
【請求項１５】
前記匿名セッションを含む複数の匿名セッションは、前記ターゲットマシンにあり、
前記複数の匿名セッションの各々は、匿名ヘルパと関連付けられ、
前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することは、前記クライアントデバイスの位置、前記クライアントデバイスが接続されるネットワークのインジケーション、前記ターゲットマシンのプロセッサ特性、または前記ターゲットマシンのメモリ特性のうちの１つ以上に基づいている、
請求項９に記載の装置。
【請求項１６】
前記メモリは、前記プロセッサによって実行されるとき、前記装置に、
前記ターゲットマシンで前記匿名セッションの生成を開始した後、前記匿名ヘルパを介して、或る期間の間に前記ターゲットマシンで前記匿名セッションをアライブに維持させる、
コンピュータ実行可能命令を記憶している、請求項９に記載の装置。
【請求項１７】
コンピュータ可読命令を記憶した非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令は、コンピューティングデバイスによって実行されるとき、前記コンピューティングデバイスに、
匿名セッションを生成すると判定することと、
前記匿名セッションを生成する要求を送信することと、
前記要求に基づいて、前記匿名セッションを生成するための構成情報を受信することと、
前記構成情報に基づいて、ターゲットマシンでの前記匿名セッションの生成を開始する要求を送信することであって、前記匿名セッションの生成を開始する前記要求は、前記匿名セッションと関連付けられた匿名ヘルパを開始する要求を含む、前記送信することと、
クライアントデバイスから、アプリケーションを始動する要求を受信することと、
前記アプリケーションを始動する前記要求を受信したことに基づいて、前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することと、
前記匿名セッションと関連付けられた前記匿名ヘルパを介して、前記クライアントデバイスのユーザと関連付けられた認証情報を取り出すことと、
前記匿名ヘルパを介して、前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動するために、前記ユーザと関連付けられた前記認証情報を使用することと、
を実行させる、前記非一時的コンピュータ可読媒体。
【請求項１８】
前記匿名セッションを生成すると判定することは、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいている、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記ターゲットマシンでの前記匿名セッションの生成を開始する前記要求は、
前記ターゲットマシンの前記匿名セッションに接続することと、
或る時間量の後、前記ターゲットマシンの前記匿名セッションから前記コンピューティングデバイスを切断することと、を含み、
前記クライアントデバイスを前記ターゲットマシンの前記匿名セッションに接続することは、前記匿名セッションから前記コンピューティングデバイスを切断した後に実行される、
請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記コンピューティングデバイスによって実行されるとき、前記コンピューティングデバイスに、
前記ユーザとして前記ターゲットマシンで前記アプリケーションを始動した後、前記匿名セッションと関連付けられた前記匿名ヘルパを終了させる、
コンピュータ可読命令を記憶している、請求項１７に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で説明される発明の態様は概して、コンピュータネットワーキング及びデータセキュリティに関する。より具体的には、本明細書で説明される発明の態様は、ネットワークリソースにアクセスするためにクライアントデバイスによって使用することができる匿名セッションを生成することに関する。
【背景技術】
【０００２】
エンドユーザは、仮想マシン上で実行することができる仮想デスクトップ及び／または仮想アプリケーションへの迅速なアクセスを希望することがある。しかしながら、セッションを生成し、ユーザをセッションに接続するために必要な時間を理由として、ユーザが仮想デスクトップ及び／または仮想アプリケーションへのアクセスを要求するときと、ユーザが実際に仮想デスクトップ及び／または仮想アプリケーションにアクセスすることが可能であるときとの間に遅延が存在することがある。特にセッションが最初から生成される場合、セッションを生成することは、時間を要することがある。ユーザ固有セッションは、ユーザがセッションを要求する前に起動されることがある。しかしながら、特定のユーザが仮想デスクトップ及び／もしくはアプリケーションにアクセスしないことを決定した場合、またはアクセスを要求する前に長時間にわたり待機した場合、ユーザ固有事前起動は、コンピューティングリソースを浪費することがある。その上、事前起動イベントが或る時間量だけユーザの起動要求に先行しない場合、望ましくない遅延が存在することがある。
【発明の概要】
【０００３】
以下は、本明細書で説明される様々な発明の態様の簡略化された概要を提示する。この概要は、広範囲な概説ではなく、主要な要素もしくは重要な要素を識別すること、または特許請求の範囲を記述することを意図していない。以下の概要は、以下で提供される更なる詳細な説明への導入的な前置きとして簡略化された形式において一部の概念を提示するにすぎない。
【０００４】
ヘルパ（複数可）を介してクライアントデバイス（複数可）を匿名セッション（複数可）に接続する方法及びシステムが本明細書で説明される。コンピューティングデバイスは、匿名セッションを生成すると判定してよく、コンピューティングデバイスは、匿名セッションを生成する要求を送信してよい。要求に基づいて、コンピューティングデバイスは、匿名セッションを生成するための構成情報を受信してよい。構成情報に基づいて、コンピューティングデバイスは、ターゲットマシン上での匿名セッションの生成を開始する要求を送信してよい。匿名セッションの生成を開始する要求は、匿名セッションと関連付けられた匿名ヘルパを開始する要求を含んでよい。
【０００５】
アプリケーションを始動する要求は、クライアントデバイスから受信されてよい。アプリケーションを始動する要求を受信したことに基づいて、クライアントデバイスは、ターゲットマシン上の匿名セッションに接続されてよい。匿名セッションと関連付けられた匿名ヘルパは、クライアントデバイスのユーザと関連付けられた認証情報を取り出してよい。匿名ヘルパは、ユーザとしてターゲットマシン上でアプリケーションを始動するために、ユーザと関連付けられた認証情報を使用してよい。
【０００６】
一部の実施態様では、匿名セッションを生成すると判定することは、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいてよい。ターゲットマシン上での匿名セッションの生成を開始する要求は、コンピューティングデバイスによって、ターゲットマシン上の匿名セッションに接続することを含んでよい。或る時間量の後、コンピューティングデバイスは、ターゲットマシン上の匿名セッションから切断されてよい。クライアントデバイスをターゲットマシン上の匿名セッションに接続することは、匿名セッションからコンピューティングデバイスを切断した後に実行されてよい。
【０００７】
一部の実施態様では、ユーザとしてターゲットマシン上でアプリケーションを始動した後、本明細書で説明される方法は、匿名セッションと関連付けられた匿名ヘルパを終了することを含んでよい。加えてまたは代わりに、方法は、クライアントデバイスから、匿名セッションから切断する要求を受信することを含んでよい（例えば、ユーザとしてターゲットマシン上でアプリケーションを始動した後）。切断する要求を受信したことに応答して、クライアントデバイスは、匿名セッションから切断されてよい。匿名セッションはまた、ターゲットマシンから除去されてよい。
【０００８】
一部の実施態様では、ユーザとしてターゲットマシン上でアプリケーションを始動することは、取り出されたユーザプロファイルに基づいて、ユーザ構成パラメータをターゲットマシン上のアプリケーションと関連付けることを含んでよい。一部の実施例では、複数の匿名セッションは、ターゲットマシン上にあってよく、複数の匿名セッションの各々は、匿名ヘルパと関連付けられてよい。クライアントデバイスをターゲットマシン上の匿名セッションに接続することは、クライアントデバイスの位置、クライアントデバイスが接続されるネットワークのインジケーション、ターゲットマシンのプロセッサ特性、及び／またはターゲットマシンのメモリ特性のうちの１つ以上に基づいてよい。一部の実施例では、ターゲットマシン上で匿名セッションの生成を開始した後、匿名セッションは、匿名ヘルパによって等、或る期間の間にターゲットマシン上でアライブに維持されてよい。
【０００９】
それらの態様及び追加の態様は、以下の更なる詳細において議論される開示された発明の利点と共に認識されよう。
【００１０】
添付図面を考慮して以下の説明を参照することによって、本明細書で説明される態様及びそれらの利点のより完全な理解を得ることができ、添付図面では、同様の参照番号は、同様の特徴を示す。
【図面の簡単な説明】
【００１１】
【図１】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的なコンピュータシステムアーキテクチャを示す。
【図２】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的なリモートアクセスシステムアーキテクチャを示す。
【図３】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的な仮想化（ハイパーバイザ）システムアーキテクチャを示す。
【図４】本明細書で説明される１つ以上の複数の例示的な態様に従って使用することができる例示的なクラウドベースのシステムアーキテクチャを示す。
【図５】例示的なエンタプライズモビリティ管理システムを示す。
【図６】別の例示的なエンタプライズモビリティ管理システムを示す。
【図７】本明細書で説明される１つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する例示的なシステム及び方法を示す。
【図８】本明細書で説明される１つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する別の例示的なシステム及び方法を示す。
【発明を実施するための形態】
【００１２】
様々な実施形態の以下の説明では、上記で特定され、本明細書の一部を形成する添付図面が参照され、添付図面では、本明細書で説明される態様を実施することができる様々な実施形態を例として示している。本明細書で説明される範囲を逸脱することなく、他の実施形態が利用されてよく、構造的及び機能的な修正が行われてよいことを理解されたい。様々な態様は、他の実施形態を行うことができ、様々な異なる方法で実践または実行が可能である。
【００１３】
本明細書で使用されている表現及び用語は、説明を目的としており、限定的なものと見なすべきでないことも理解されたい。むしろ、本明細書で使用される語句及び用語は、それらの最も広い解釈及び意味を与えられるべきである。「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｍｐｒｉｓｉｎｇ（含む）」、及びこれらの変形の使用は、その後に列挙される項目及びそれらの等価物、並びに、追加の項目及びそれらの等価物を包含することを意味する。「取り付けられた」、「接続された」、「結合された」、「配置された」、「係合された」という用語及び同様の用語の使用は、直接的な及び間接的な取り付け、接続、結合、配置,及び係合の両方を含むことを意味する。
【００１４】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン、ネットワーク化、リモートアクセス（リモートデスクトップとしても知られる）、仮想化、及び／またはクラウドベースの環境等を含む、様々な異なるシステム環境において利用されてよい。図１は、本明細書で説明される１つ以上の例示的な態様をスタンドアロン及び／またはネットワーク環境において実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一例を示す。様々なネットワークノード１０３、１０５、１０７、及び１０９は、インターネット等の広域ネットワーク（ＷＡＮ）１０１を介して相互接続されてよい。加えてまたは代わりに、プライベートイントラネット、企業ネットワーク、ＬＡＮ、メトロポリタンエリアネットワーク（ＭＡＮ）、無線ネットワーク、及びパーソナルネットワーク（ＰＡＮ）等を含む他のネットワークが使用されてよい。ネットワーク１０１は、例示を目的としたものであり、より少ないまたは追加のコンピュータネットワークで置き換えられてもよい。ローカルエリアネットワーク（ＬＡＮ）は、任意の既知のＬＡＮトポロジのうちの１つ以上を有してよく、イーサネット等の様々な異なるプロトコルのうちの１つ以上を使用してよい。デバイス１０３、１０５、１０７、及び１０９、並びに他のデバイス（図示せず）は、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークのうちの１つ以上に接続されてよい。
【００１５】
本明細書で使用され、図面に示される用語「ネットワーク」は、リモートストレージデバイスが１つ以上の通信パスを介して共に結合されるシステムだけでなく、記憶機能を有するそのようなシステムに随時結合することができるスタンドアロンデバイスも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する（単一のエンティティに起因する）データから構成される「コンテンツネットワーク」も含む。
【００１６】
コンポーネントは、データサーバ１０３、ウェブサーバ１０５、及びクライアントコンピュータ１０７、１０９を含み得る。データサーバ１０３は、本明細書で説明される１つ以上の例示的な態様を実行するためのデータベース及び制御ソフトウェアの全体的なアクセス、制御、及び管理を提供する。データサーバ１０３は、ウェブサーバ１０５に接続されてよく、ウェブサーバ１０５を通じて、ユーザは要求に応じてデータと対話し、データを取得する。あるいは、データサーバ１０３は、それ自体がウェブサーバとして機能し、インターネットに直接接続されてもよい。データサーバ１０３は、直接もしくは間接接続を介して、またはいくつかの他のネットワークを介して、ネットワーク１０１（例えば、インターネット）を通してウェブサーバ１０５に接続されてよい。ユーザは、リモートコンピュータ１０７、１０９を使用して、例えば、ウェブサーバ１０５によってホストされる１つ以上の外部に公開されたウェブサイトを介してデータサーバ１０３に接続するウェブブラウザを使用して、データサーバ１０３と対話してよい。クライアントコンピュータ１０７、１０９は、データサーバ１０３に記憶されたデータにアクセスするためにデータサーバ１０３と協力して使用されてよい、または、他の目的のために使用されてよい。例えば、クライアント装置１０７から、ユーザは、当技術分野で知られているように、インターネットブラウザを使用して、または、（インターネット等の）コンピュータネットワークを介してウェブサーバ１０５及び／またはデータサーバ１０３と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ１０５にアクセスしてよい。
【００１７】
サーバ及びアプリケーションは、同一の物理マシン上で組み合わされてよく、別個の仮想アドレスもしくは論理アドレスを保持してよい、または別個の物理マシン上に常駐してよい。図１は、使用することができるネットワークアーキテクチャの一例を示しているにすぎず、当業者は、本明細書で更に説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは変わってよく、それらが提供する機能に依存することを理解されよう。例えば、ウェブサーバ１０５及びデータサーバ１０３によって提供されるサービスは、単一のサーバ上で組み合わされてよい。
【００１８】
各コンポーネント１０３、１０５、１０７、１０９は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってよい。データサーバ１０３は、例えば、データサーバ１０３の全体的な動作を制御するプロセッサ１１１を含んでよい。データサーバ１０３は更に、ランダムアクセスメモリ（ＲＡＭ）１１３、リードオンリメモリ（ＲＯＭ）１１５、ネットワークインタフェース１１７、入力／出力インタフェース１１９（例えば、キーボード、マウス、ディスプレイ、プリンタ等）、及びメモリ１２１を含んでよい。入力／出力（Ｉ／Ｏ）１１９は、データまたはファイルの読み出し、書き込み、表示、及び／または印刷のための様々なインタフェースユニット及びドライブを含んでよい。メモリ１２１は、データ処理デバイス１０３の全体的な動作を制御するオペレーティングシステムソフトウェア１２３、データサーバ１０３に本明細書で説明される態様を実行するように命令する制御ロジック１２５、並びに二次的な機能性、サポート機能性、及び／または本明細書で説明される態様と併せて使用されてよく、もしくは使用されなくてよい他の機能性を提供する他のアプリケーションソフトウェア１２７を更に記憶してよい。制御ロジックは、本明細書ではデータサーバソフトウェア１２５と呼ばれることもある。データサーバソフトウェアの機能性は、制御ロジックにコード化されたルールに基づいて自動的に行われた操作もしくは決定、システムに入力を提供するユーザによって手動で行われた操作もしくは決定、及び／またはユーザ入力に基づく自動処理の組み合わせ（クエリ、データ更新等）を指してよい。
【００１９】
メモリ１２１はまた、第１のデータベース１２９及び第２のデータベース１３１を含む、本明細書で説明される１つ以上の態様の実行において使用されるデータを記憶してよい。一部の実施形態では、第１のデータベースは、（例えば、別個のテーブル、レポート等として）第２のデータベースを含んでよい。つまり、情報は、システム設計に応じて、単一のデータベースに記憶できる、または、異なる論理データベース、仮想データベース、もしくは物理データベースに分離できる。デバイス１０５、１０７、及び１０９は、デバイス１０３に関して説明されたのと同様または異なるアーキテクチャを有してよい。当業者は、本明細書で説明されるデータ処理デバイス１０３（または、デバイス１０５、１０７、もしくは１０９）の機能性が、例えば、複数のコンピュータにわたって処理負荷を分散して、地理的位置、ユーザアクセスレベル、サービス品質（ＱｏＳ）等に基づいてトランザクションを分離するよう、複数のデータ処理デバイスにわたって展開されてもよいことを認識するであろう。
【００２０】
１つ以上の態様は、本明細書で説明される１つ以上のコンピュータまたは他のデバイスによって実行される、１つ以上のプログラムモジュール等、コンピュータ使用可能もしくは可読データ、及び／またはコンピュータ実行可能命令において具体化されてよい。一般に、プログラムモジュールは、コンピュータまたは他のデバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。モジュールは、実行のために後にコンパイルされるソースコードプログラミング言語において記述されてよく、またはハイパーテキストマークアップ言語（ＨＴＭＬ）もしくは拡張マークアップ言語（ＸＭＬ）（それらに限定されない）等のスクリプト言語において記述されてよい。コンピュータ実行可能命令は、不揮発性記憶装置等のコンピュータ可読媒体に記憶されてよい。ハードディスク、ＣＤ−ＲＯＭ、光学記憶装置、磁気記憶装置、及び／またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてよい。加えて、本明細書で説明されるデータまたはイベントを表す様々な伝送（非記憶）媒体は、金属線、光ファイバ、並びに／または無線伝送媒体（例えば、空気及び／または空間）等、信号伝播媒体を通じて移動する電磁波の形式において、送信元と宛先の間で伝達されてよい。本明細書で説明される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてよい。したがって、様々な機能性は、ソフトウェア、ファームウェア、及び／またはハードウェア、もしくは集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のハードウェア等価物において全体的または部分的に具体化されてよい。本明細書で説明される１つ以上の態様をより効果的に実装するために特定のデータ構造が使用されてよく、そのようなデータ構造は、本明細書で説明されるコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
【００２１】
更に図２を参照して、本明細書で説明される１つ以上の態様は、リモートアクセス環境において実装されてよい。図２は、本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的なコンピューティング環境２００内の汎用コンピューティングデバイス２０１を含む例示的なシステムアーキテクチャを示す。汎用コンピューティングデバイス２０１は、クライアントアクセスデバイスに対して仮想マシンを提供するように構成された単一サーバまたはマルチサーバのデスクトップ仮想化システム（例えば、リモートアクセスまたはクラウドシステム）内のサーバ２０６ａとして使用されてよい。汎用コンピューティングデバイス２０１は、ＲＡＭ２０５、ＲＯＭ２０７、入力／出力（Ｉ／Ｏ）モジュール２０９、及びメモリ２１５を含む、サーバ及びその関連するコンポーネントの全体的な動作を制御するためのプロセッサ２０３を有してよい。
【００２２】
Ｉ／Ｏモジュール２０９は、それを通じて汎用コンピューティングデバイス２０１のユーザが入力を提供することができるマウス、キーパッド、タッチスクリーン、スキャナ、光学式リーダ、及び／またはスタイラス（または、他の入力デバイス（複数可））を含んでよく、また、音声出力を提供するためのスピーカ、並びにテキスト、オーディオビジュアル、及び／またはグラフィカル出力を提供するためのビデオディスプレイデバイスのうちの１つ以上を含んでよい。本明細書で説明される様々な機能を実行するために、汎用コンピューティングデバイス２０１を特殊目的コンピューティングデバイスに構成する命令をプロセッサ２０３に提供するソフトウェアがメモリ２１５及び／または他のストレージ内に記憶されてよい。例えば、メモリ２１５は、オペレーティングシステム２１７、アプリケーションプログラム２１９、及び関連するデータベース２２１等、コンピューティングデバイス２０１によって使用されるソフトウェアを記憶してよい。
【００２３】
コンピューティングデバイス２０１は、端末２４０（クライアントデバイスとも呼ばれる）等の１つ以上のリモートコンピュータへの接続をサポートするネットワーク環境において動作してよい。端末２４０は、汎用コンピューティングデバイス１０３または２０１に関して上記説明された要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってよい。図２に示すネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）２２５及び広域ネットワーク（ＷＡＮ）２２９を含むが、他のネットワークも含んでよい。ＬＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、ネットワークインタフェースまたはアダプタ２２３を介してＬＡＮ２２５に接続されてよい。ＷＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、コンピュータネットワーク２３０（例えば、インターネット）等のＷＡＮ２２９を介して通信を確立するためのモデム２２７または他の広域ネットワークインタフェースを含んでよい。示されているネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してよいことは理解されよう。コンピューティングデバイス２０１及び／または端末２４０は、バッテリ、スピーカ、及びアンテナ（図示せず）等の他の様々なコンポーネントを含むモバイル端末（例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ノートブック等）であってもよい。
【００２４】
本明細書で説明される態様は、他の多くの汎用または特殊目的コンピューティングシステム環境または構成により動作してもよい。本明細書で説明される態様による使用に適切であることができる他のコンピューティングシステム、環境、及び／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電、ネットワークパーソナルコンピュータ（ＰＣ）、ミニコンピュータ、メインフレームコンピュータ、上記のシステムもしくはデバイスの任意のものを含む分散コンピューティング環境等が含まれるが、これらに限定されない。
【００２５】
図２に示すように、１つ以上のクライアントデバイス２４０は、１つ以上のサーバ２０６ａ〜２０６ｎ（本明細書では一般に「サーバ（複数可）２０６」と呼ばれる）と通信してよい。一実施形態では、コンピューティング環境２００は、サーバ（複数可）２０６とクライアントマシン（複数可）２４０の間にインストールされたネットワークアプライアンスを含んでよい。ネットワークアプライアンスは、クライアント／サーバ接続を管理してよく、場合によっては、複数のバックエンドサーバ２０６間でクライアント接続の負荷を分散できる。
【００２６】
クライアントマシン（複数可）２４０は、一部の実施形態では、単一のクライアントマシン２４０またはクライアントマシン２４０の単一グループと呼ばれる場合があり、一方、サーバ（複数可）２０６は、単一のサーバ２０６またはサーバグループ２０６の単一のグループと呼ばれる場合がある。一実施形態では、単一のクライアントマシン２４０は複数のサーバ２０６と通信し、別の実施形態では、単一のサーバ２０６は複数のクライアントマシン２４０と通信する。更に別の実施形態では、単一のクライアントマシン２４０は、単一のサーバ２０６と通信する。
【００２７】
クライアントマシン２４０は、一部の実施形態では、クライアントマシン（複数可）、クライアント（複数可）、クライアントコンピュータ（複数可）、クライアントデバイス（複数可）、クライアントコンピューティングデバイス（複数可）、ローカルマシン、リモートマシン、クライアントノード（複数可）、エンドポイント（複数可）、またはエンドポイントノード（複数可）のいずれかによって言及できるが、これらの用語が全てではない。サーバ２０６は、一部の実施形態では、サーバ（複数可）、ローカルマシン、リモートマシン、サーバファーム（複数可）、またはホストコンピューティングデバイス（複数可）のいずれかによって言及されてよいが、これらの用語が全てではない。
【００２８】
一実施形態では、クライアントマシン２４０は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってよく、一部の実施形態では、仮想マシンは、タイプ１またはタイプ２のハイパーバイザ、例えば、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ、ＩＢＭ、Ｖｍｗａｒｅによって開発されたハイパーバイザ、または任意の他のハイパーバイザによって管理される任意の仮想マシンであってよい。一部の態様では、仮想マシンは、ハイパーバイザによって管理されてよく、他の態様では、仮想マシンは、サーバ２０６上で実行するハイパーバイザまたはクライアント２４０上で実行するハイパーバイザによって管理されてよい。
【００２９】
一部の実施形態は、サーバ２０６または他のリモートに配置されたマシン上でリモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス２４０を含む。これらの実施形態では、クライアントデバイス２４０は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウインドウ、ブラウザ、または他の出力ウインドウに出力を表示してよい。一例では、アプリケーションはデスクトップであるが、他の例では、アプリケーションはデスクトップを生成または提示するアプリケーションである。デスクトップは、ローカル及び／またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでよい。アプリケーションは、本明細書では、オペレーティングシステムのインスタンス（及びオプションでデスクトップも）がロードされた後に実行されるプログラムである。
【００３０】
サーバ２０６は、一部の実施形態では、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモートディスプレイアプリケーションにデータを送信して、サーバ２０６上で実行されるアプリケーションによって生成される表示出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、以下のプロトコルのいずれかであってよいが、これらが全てではない。すなわち、フロリダ州フォートローダーデールのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ社が開発した独立コンピューティングアーキテクチャ（ＩＣＡ）プロトコル、または、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたリモートデスクトッププロトコル（ＲＤＰ）である。
【００３１】
リモートコンピューティング環境は、例えば、クラウドコンピューティング環境において、サーバ２０６ａ〜２０６ｎがサーバファーム２０６に論理的に共にグループ化されるように、２つ以上のサーバ２０６ａ〜２０６ｎを含み得る。サーバファーム２０６は、論理的に共にグループ化されながら地理的に分散しているサーバ２０６、または論理的に共にグループ化され、互いに近接して配置されたサーバ２０６を含んでよい。サーバファーム２０６内の地理的に分散したサーバ２０６ａ〜２０６ｎは、一部の実施形態では、ＷＡＮ（広域）、ＭＡＮ（メトロポリタン）、またはＬＡＮ（ローカル）を使用して通信でき、異なる地理的領域は、異なる大陸、ある大陸の異なる地域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。一部の実施形態では、サーバファーム２０６は単一のエンティティとして管理されてよいが、他の実施形態では、サーバファーム２０６は複数のサーバファームを含むことができる。
【００３２】
一部の実施形態では、サーバファームは、実質的に類似のタイプのオペレーティングシステムプラットフォーム（例えば、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、ｉＯＳ、ＡＮＤＲＯＩＤ（登録商標）、ＳＹＭＢＩＡＮ等）を実行するサーバ２０６を含んでよい。他の実施形態では、サーバファーム２０６は、第１のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第１のグループと、第２のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第２のグループとを含んでよい。
【００３３】
サーバ２０６は、必要に応じて、任意のタイプのサーバとして構成されてよく、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケット層（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、または、マスタアプリケーションサーバとしてのサーバ、アクティブディレクトリを実行するサーバ、または、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成されてよい。他の種類のサーバも使用されてよい。
【００３４】
一部の実施形態は、クライアントマシン２４０から要求を受信し、要求を第２のサーバ２０６ｂに転送し、クライアントマシン２４０によって生成された要求に対して第２のサーバ２０６ｂからの応答により応答する第１のサーバ２０６ａを含む。第１のサーバ２０６ａは、クライアントマシン２４０に対して利用可能なアプリケーションの列挙、並びにアプリケーションの列挙内で識別されたアプリケーションをホストするアプリケーションサーバ２０６と関連付けられたアドレス情報を取得することができる。次いで、第１のサーバ２０６ａは、ウェブインタフェースを使用してクライアントの要求に対する応答を提示し、クライアント２４０と直接通信して、識別されたアプリケーションへのアクセスをクライアント２４０に提供することができる。１つ以上のクライアント２４０及び／または１つ以上のサーバ２０６は、ネットワーク２３０、例えばネットワーク１０１を介してデータを送信してよい。
【００３５】
図２は、例示的なデスクトップ仮想化システムの高レベルのアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、仮想デスクトップ及び／または仮想アプリケーションを１つ以上のクライアントアクセスデバイス２４０に提供するように構成された少なくとも１つの仮想化サーバ２０６を含む、単一サーバシステム、マルチサーバシステム、またはクラウドシステムであってよい。本明細書で使用されるとき、デスクトップは、１つ以上のアプリケーションをホストすることができ、及び／または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカル及び／またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでよい。アプリケーションは、オペレーティングシステム（及びオプションでデスクトップ）のインスタンスがロードされた後に実行されるプログラムを含んでよい。オペレーティングシステムの各インスタンスは、物理的（例えば、デバイスごとに１つのオペレーティングシステム）または仮想的（例えば、単一のデバイスで実行されているＯＳの多くのインスタンス）であってよい。各アプリケーションは、ローカルデバイスで実行されてよい、または、リモートに配置されたデバイスで実行されて（リモートであって）よい。
【００３６】
図３を参照して、コンピュータデバイス３０１は、仮想化環境における仮想化サーバ、例えば、単一サーバ、マルチサーバ、またはクラウドコンピューティング環境として構成されてよい。図３に示される仮想化サーバ３０１は、図２に示されるサーバ２０６の１つ以上の実施形態によって、または他の既知のコンピューティングデバイスとして展開されてよく、及び／またはそれらによって実装されてよい。仮想化サーバ３０１に含まれるハードウェア層は、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含むことができる。一部の実施形態では、ファームウェア３１２は、物理メモリ３１６のメモリ要素内に記憶することができ、物理プロセッサ３０８の１つ以上によって実行することができる。仮想化サーバ３０１は、オペレーティングシステム３１４を更に含んでよく、オペレーティングシステム３１４は、物理メモリ３１６内のメモリ要素に記憶されてよく、物理プロセッサ３０８の１つ以上によって実行されてよい。更に、ハイパーバイザ３０２は、物理メモリ３１６内のメモリ要素に記憶されてよく、物理プロセッサ３０８のうちの１つ以上によって実行されてもよい。
【００３７】
物理プロセッサ３０８のうちの１つ以上で実行するのは、１つ以上の仮想マシン３３２Ａ〜Ｃ（全体的に３３２）であってもよい。各仮想マシン３３２は、仮想ディスク３２６Ａ〜３２６Ｃ及び仮想プロセッサ３２８Ａ〜３２８Ｃを有してよい。一部の実施形態では、第１の仮想マシン３３２Ａは、仮想プロセッサ３２８Ａを使用して、ツールスタック３２４を含む制御プログラム３２０を実行してよい。制御プログラム３２０は、制御仮想マシン、Ｄｏｍ０、ドメイン０、またはシステム管理及び／または制御に使用される他の仮想マシンを指してよい。一部の実施形態では、１つ以上の仮想マシン３３２Ｂ〜３３２Ｃは、仮想プロセッサ３２８Ｂ〜３２８Ｃを使用して、ゲストオペレーティングシステム３３０Ａ〜３３０Ｂを実行することができる。
【００３８】
仮想化サーバ３０１は、仮想化サーバ３０１と通信するハードウェアのうちの１つ以上の部分を有するハードウェア層３１０を含んでよい。一部の実施形態では、ハードウェア層３１０は、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含むことができる。物理コンポーネント３０４、３０６、３０８、及び３１６は、例えば、上記説明されたコンポーネントのいずれかを含んでよい。物理デバイス３０６は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、ストレージデバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素（例えば、ルータ、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、動的ホスト構成プロトコル（ＤＨＣＰ）ルータ等）、または、仮想化サーバ３０１に接続または通信する任意のデバイスを含んでよい。ハードウェア層３１０内の物理メモリ３１６は、任意のタイプのメモリを含んでよい。物理メモリ３１６は、データを記憶してよく、一部の実施形態では、１つ以上のプログラム、または実行可能命令のセットを記憶してよい。図３は、ファームウェア３１２が仮想化サーバ３０１の物理メモリ３１６内に記憶される実施形態を示す。物理メモリ３１６に記憶されたプログラムまたは実行可能命令は、仮想化サーバ３０１の１つ以上のプロセッサ３０８によって実行されてもよい。
【００３９】
仮想化サーバ３０１は、ハイパーバイザ３０２も含んでよい。一部の実施形態では、ハイパーバイザ３０２は、任意の数の仮想マシン３３２を作成及び管理するために仮想化サーバ３０１上のプロセッサ３０８によって実行されるプログラムであってよい。ハイパーバイザ３０２は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと呼ばれる場合がある。一部の実施形態では、ハイパーバイザ３０２は、実行可能命令と、コンピューティングマシン上で実行されている仮想マシンを監視するハードウェアとの任意の組み合わせであってよい。ハイパーバイザ３０２は、タイプ２ハイパーバイザであってよく、ハイパーバイザは、仮想化サーバ３０１上で実行するオペレーティングシステム３１４内で実行する。次いで、仮想マシンは、ハイパーバイザより上のレベルにおいて実行する。一部の実施形態では、タイプ２ハイパーバイザは、タイプ２ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行する。他の実施形態では、仮想化環境内の１つ以上の仮想化サーバ３０１は代わりに、タイプ１ハイパーバイザ（図示せず）を含んでよい。タイプ１ハイパーバイザは、ハードウェア層３１０内のハードウェア及びリソースに直接アクセスすることにより、仮想化サーバ３０１上で実行されてよい。すなわち、図に示すように、タイプ２ハイパーバイザ３０２は、ホストオペレーティングシステム３１４を介してシステムリソースにアクセスするが、タイプ１ハイパーバイザは、ホストオペレーティングシステム３１４無しで全てのシステムリソースに直接アクセスしてよい。タイプ１ハイパーバイザは、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８で直接実行されてよく、物理メモリ３１６に記憶されたプログラムデータを含んでよい。
【００４０】
ハイパーバイザ３０２は、一部の実施形態では、システムリソースに直接アクセスするオペレーティングシステム３３０または制御プログラム３２０をシミュレーションする任意の方法で、仮想マシン３３２上で実行されるオペレーティングシステム３３０または制御プログラム３２０に仮想リソースを提供できる。システムリソースは、物理デバイス３０６、物理ディスク３０４、物理プロセッサ３０８、物理メモリ３１６、及び仮想化サーバ３０１のハードウェア層３１０に含まれる任意の他のコンポーネントを含むことができるが、これらに限定されない。ハイパーバイザ３０２を使用して、仮想ハードウェアのエミュレート、物理ハードウェアの分割、物理ハードウェアの仮想化、及び／またはコンピューティング環境へのアクセスを提供する仮想マシンの実行を行ってよい。更なる他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１上で実行する仮想マシン３３２に対するプロセッサスケジューリング及びメモリ分割を制御する。ハイパーバイザ３０２は、カリフォルニア州パロアルトのＶＭＷａｒｅ社によって製造されるハイパーバイザ、その開発がオープンソースのＸｅｎ．ｏｒｇコミュニティによって開発が監督されているオープンソース製品であるＸＥＮハイパーバイザ、Ｍｉｃｒｏｓｏｆｔ社によって提供されるＨｙｐｅｒＶ、ＶｉｒｔｕａｌＳｅｒｖｅｒ、または仮想ＰＣハイパーバイザ等を含んでよい。一部の実施形態では、仮想化サーバ３０１は、ゲストオペレーティングシステムが実行することができる仮想マシンプラットフォームを作成するハイパーバイザ３０２を実行する。これらの実施形態では、仮想化サーバ３０１は、ホストサーバと称されてよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ社によって提供されるＸＥＮ  ＳＥＲＶＥＲである。
【００４１】
ハイパーバイザ３０２は、ゲストオペレーティングシステム３３０が実行される１つ以上の仮想マシン３３２Ｂ〜３３２Ｃ（全体的に３３２）を作成してよい。一部の実施形態では、ハイパーバイザ３０２は、仮想マシンイメージをロードして、仮想マシン３３２を作成してよい。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２内でゲストオペレーティングシステム３３０を実行する。更なる他の実施形態では、仮想マシン３３２は、ゲストオペレーティングシステム３３０を実行してよい。
【００４２】
仮想マシン３３２を作成することに加えて、ハイパーバイザ３０２は、少なくとも１つの仮想マシン３３２の実行を制御してよい。他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１によって提供される少なくとも１つのハードウェアリソース（例えば、ハードウェア層３１０内で利用可能な任意のハードウェアリソース）の抽象化を少なくとも１つの仮想マシン３３２に提示してよい。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２が仮想化サーバ３０１において利用可能な物理プロセッサ３０８にアクセスする方式を制御してよい。物理プロセッサ３０８へのアクセスの制御は、仮想マシン３３２がプロセッサ３０８にアクセスを有すべきか否か、及び物理プロセッサ機能が仮想マシン３３２にどのように提示されるかを決定することを含んでよい。
【００４３】
図３に示すように、仮想化サーバ３０１は、１つ以上の仮想マシン３３２をホストまたは実行してよい。仮想マシン３３２は、実行可能命令のセットであり、実行可能命令のセットは、プロセッサ３０８によって実行されるとき、仮想マシン３３２が物理コンピューティングデバイスのようにプログラム及びプロセスを実行できることができるように、物理コンピュータの動作を模倣する。図３は、仮想化サーバ３０１が３つの仮想マシン３３２をホストする実施形態を示し、他の実施形態では、仮想化サーバ３０１は、任意の数の仮想マシン３３２をホストすることができる。ハイパーバイザ３０２は、一部の実施形態では、各仮想マシン３３２に、その仮想マシン３３２に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供する。一部の実施形態では、一意の仮想ビューは、仮想マシンのパーミッション、１つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシンで実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準のうちの１つ以上に基づくことができる。例えば、ハイパーバイザ３０２は、１つ以上の安全でない仮想マシン３３２及び１つ以上の安全な仮想マシン３３２を作成してよい。安全な仮想マシン３３２がアクセスすることを許可され得るリソース、ハードウェア、メモリ位置、及びプログラムに安全でない仮想マシン３３２がアクセスすることを防止してよい。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの実質的に同様の仮想ビューを各仮想マシン３３２に提供してよい。
【００４４】
各仮想マシン３３２は、仮想ディスク３２６Ａ〜３２６Ｃ（全体的に３２６）及び仮想プロセッサ３２８Ａ〜３２８Ｃ（全体的に３２８）を含んでよい。仮想ディスク３２６は、一部の実施形態では、仮想化サーバ３０１の１つ以上の物理ディスク３０４の仮想化ビュー、または仮想化サーバ３０１の１つ以上の物理ディスク３０４の一部の仮想化ビューである。物理ディスク３０４の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理されてもよい。一部の実施形態では、ハイパーバイザ３０２は、各仮想マシン３３２に物理ディスク３０４の一意のビューを提供する。したがって、これらの実施形態では、各仮想マシン３３２に含まれる特定の仮想ディスク３２６は、他の仮想ディスク３２６と比較されるときに一意であってよい。
【００４５】
仮想プロセッサ３２８は、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８の仮想化ビューであってよい。一部の実施形態では、物理プロセッサ３０８の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理されてもよい。一部の実施形態では、仮想プロセッサ３２８は、少なくとも１つの物理プロセッサ３０８の同一の特性の実質的に全てを有する。他の実施形態では、仮想プロセッサ３０８は、仮想プロセッサ３２８の特性の少なくとも一部が対応する物理プロセッサ３０８の特性とは異なるように、物理プロセッサ３０８の修正されたビューを提供する。
【００４６】
図４を更に参照して、本明細書で説明される一部の態様は、クラウドベース環境において実装されてよい。図４は、クラウドコンピューティング環境（またはクラウドシステム）４００の例を示す。図４において見られるように、クライアントコンピュータ４１１〜４１４は、クラウド管理サーバ４１０と通信して、クラウドシステムのコンピューティングリソース（例えば、ホストサーバ４０３、ストレージリソース４０４、及びネットワークリソース４０５）にアクセスしてもよい。
【００４７】
管理サーバ４１０は、１つ以上の物理サーバ上に実装されてよい。管理サーバ４１０は、とりわけ、例えば、ＣＬＯＵＤＳＴＡＣＫまたはＯＰＥＮＳＴＡＣＫを実行してよい。管理サーバ４１０は、クラウドのハードウェア及びソフトウェアリソース、例えば、ホストコンピュータ４０３、データストレージデバイス４０４、及びネットワーキングデバイス４０５を含む、様々なコンピューティングリソースを管理してよい。クラウドのハードウェア及びソフトウェアリソースはプライベート及び／またはパブリックコンポーネントを含んでよい。例えば、クラウドは、１つ以上の特定の顧客もしくはクライアントコンピュータ４１１〜４１４によって、及び／またはプライベートネットワークを介して使用されることになるプライベートクラウドとして構成されてよい。他の実施形態では、パブリッククラウドまたはハイブリッドパブリックプライベートクラウドは、オープンまたはハイブリッドネットワークを介して他の顧客によって使用されてよい。
【００４８】
管理サーバ４１０は、それを通じてクラウドオペレータ及びクラウド顧客がクラウドシステム４００と対話することができるユーザインタフェースを提供するように構成されてよい。例えば、管理サーバ４１０は、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、他のクラウド管理タスクを実行することを可能にする、ユーザインタフェースとのアプリケーションプログラミングインタフェース（ＡＰＩ）のセット及び／または１つ以上のクラウドオペレータコンソールアプリケーション（例えば、ウェブベースのスタンドアロンアプリケーション）を提供してもよい。管理サーバ４１０はまた、クライアントコンピュータ４１１〜４１４を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内で仮想マシンを作成、修正、または破壊する要求を受信するように構成されたユーザインタフェースを有するＡＰＩのセット及び／または１つ以上の顧客コンソールアプリケーションを含んでもよい。クライアントコンピュータ４１１〜４１４は、インターネットまたは他の通信ネットワークを介して管理サーバ４１０に接続してよく、管理サーバ４１０によって管理されるコンピューティングリソースのうちの１つ以上へのアクセスを要求してよい。クライアント要求に応答して、管理サーバ４１０は、クライアント要求に基づいてクラウドシステムのハードウェア層の物理リソースを選択及びプロビジョニングするように構成されたリソースマネージャを含んでよい。例えば、管理サーバ４１０及びクラウドシステムの追加のコンポーネントは、ネットワーク（例えば、インターネット）を通じてクライアントコンピュータ４１１〜４１４における顧客に対して、仮想マシン及びそれらの動作環境（例えば、ハイパーバイザ、ストレージリソース、ネットワーク要素によって供給されるサービス等）をプロビジョニング、作成、及び管理するように構成されてもよく、計算リソース、データストレージサービス、ネットワーク機能、並びにコンピュータプラットフォーム及びアプリケーションサポートを顧客に提供する。クラウドシステムはまた、セキュリティシステム、開発環境、ユーザインタフェース等を含む、様々な具体的なサービスを提供するように構成されてよい。
【００４９】
特定のクライアント４１１〜４１４は、関連していてよく、例えば、同一のエンドユーザ、または同一の会社もしくは組織に所属する異なるユーザの代わりに、仮想マシンを作成する異なるクライアントコンピュータであってよい。他の例では、あるクライアント４１１〜４１４は、異なる企業または組織に所属するユーザ等、無関係であってよい。関連のないクライアントの場合、ある任意のユーザの仮想マシンまたはストレージに関する情報は、他のユーザから隠される場合がある。
【００５０】
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、アベイラビリティゾーン４０１〜４０２（またはゾーン）は、配列された物理コンピューティングリソースのセットを指す場合がある。ゾーンは、コンピューティングリソースのクラウド全体で他のゾーンから地理的に離れている場合がある。例えば、ゾーン４０１は、カリフォルニアに位置する第１のクラウドデータセンタであってよく、ゾーン４０２は、フロリダに位置する第２のクラウドデータセンタであってよい。管理サーバ４１０は、アベイラビリティゾーンの１つに、または別個の位置に位置してよい。各ゾーンは、ゲートウェイを介して、管理サーバ４１０等のゾーン外にあるデバイスとインタフェースする内部ネットワークを含み得る。クラウドのエンドユーザ（例えば、クライアント４１１〜４１４）は、ゾーン間の違いを認識している場合と認識していない場合がある。例えば、エンドユーザは、指定された量のメモリ、処理能力、及びネットワーク機能を備えた仮想マシンの作成を要求してよい。管理サーバ４１０は、ユーザの要求に応答してよく、仮想マシンがゾーン４０１またはゾーン４０２からのリソースを使用して作成されたか否かをユーザが知ることなく、仮想マシンを作成するためのリソースを割り当ててよい。他の例では、クラウドシステムは、仮想マシン（または他のクラウドリソース）が特定のゾーンまたはゾーン内の特定のリソース４０３〜４０５に割り当てられることをエンドユーザが要求するのを可能にしてよい。
【００５１】
この例では、各ゾーン４０１〜４０２は、様々な物理ハードウェアコンポーネント（またはコンピューティングリソース）４０３〜４０５の配置、例えば、物理ホスティングリソース（または処理リソース）、物理ネットワークリソース、物理ストレージリソース、スイッチ、及びクラウドコンピューティングサービスを顧客に提供するために使用し得る追加のハードウェアリソースの配置を含んでよい。クラウドゾーン４０１〜４０２内の物理ホスティングリソースは、仮想マシンインスタンスを作成及びホストするように構成することができる、上記説明された仮想化サーバ３０１等の１つ以上のコンピュータサーバ４０３を含んでよい。クラウドゾーン４０１または４０２内の物理ネットワークリソースは、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、及び動的ホスト構成プロトコル（ＤＨＣＰ）ルータ等、クラウド顧客にネットワークサービスを提供するように構成されたハードウェア及び／またはソフトウェアを含む１つ以上のネットワーク要素４０５（例えば、ネットワークサービスプロバイダ）を含んでよい。クラウドゾーン４０１〜４０２内のストレージリソースは、ストレージディスク（例えば、ソリッドステートドライブ（ＳＳＤ）、磁気ハードディスク等）及び他のストレージデバイスを含んでよい。
【００５２】
図４に示される実施例のクラウドコンピューティング環境はまた、仮想マシンを作成及び管理し、クラウド内の物理リソースを使用して顧客に他のサービスを提供するように構成された追加のハードウェア及び／またはソフトウェアリソースを有する仮想化層を含んでよい（例えば、図１〜３に示されるような）。仮想化層は、図３において上記説明されたように、ネットワーク仮想化、ストレージ仮想化等を提供する他のコンポーネントと共に、ハイパーバイザを含んでよい。仮想化層は、物理リソース層とは別個の層として存在してよく、または同一のハードウェア及び／もしくはソフトウェアリソースの一部もしくは全てを物理リソース層と共有してよい。例えば、仮想化層は、物理コンピューティングリソースを有する仮想化サーバ４０３の各々にインストールされたハイパーバイザを含んでよい。例えば、ＷＩＮＤＯＷＳ（登録商標）  ＡＺＵＲＥ（ワシントン州レドモンドＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）、ＡＭＡＺＯＮ  ＥＣ２（ワシントン州シアトルＡｍａｚｏｎ．ｃｏｍ  Ｉｎｃ．）、ＩＢＭ  ＢＬＵＥ  ＣＬＯＵＤ（ニューヨーク州アーモンクＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ）等、既知のクラウドシステムを代わりに使用してよい。
【００５３】
エンタプライズモビリティ管理アーキテクチャ
図５は、ＢＹＯＤ環境における使用のためのエンタプライズモビリティ技術アーキテクチャ５００を表す。アーキテクチャは、モバイルデバイス５０２のユーザが、モバイルデバイス５０２からエンタプライズリソースまたは個人リソースにアクセスすること、及び個人使用のためにモバイルデバイス５０２を使用することの両方を可能にする。ユーザは、ユーザによって購入されるモバイルデバイス５０２、または企業によってユーザに提供されるモバイルデバイス５０２を使用して、そのようなエンタプライズリソース５０４またはエンタプライズサービス５０８にアクセスしてよい。ユーザは、モバイルデバイス５０２をビジネス用途のみに、またはビジネス及び個人用途に利用してよい。モバイルデバイスは、ｉＯＳオペレーティングシステム及びＡｎｄｒｏｉｄ（登録商標）オペレーティングシステム等を実行してよい。企業は、モバイルデバイス５０４を管理するためのポリシーを実装することを選択してよい。ポリシーは、モバイルデバイスを識別、保護、またはセキュリティ検証することができ、エンタプライズリソースへの選択的または完全アクセスを提供することができるように、ファイアウォールまたはゲートウェイを通じて組み込まれてもよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、及びデータ管理ポリシーのいくつかの組み合わせであってもよい。モバイルデバイス管理ポリシーの適用を通じて管理されるモバイルデバイス５０４は、登録済みデバイスと呼ばれてよい。
【００５４】
一部の実施形態では、モバイルデバイスのオペレーティングシステムは、管理対象パーティション５１０及び非管理対象パーティション５１２に分離されてよい。管理対象パーティション５１０は、管理対象パーティション上で実行するアプリケーション及び管理対象パーティションに記憶されたデータを保護するために、それに適用されたポリシーを有してよい。管理対象パーティション上で実行するアプリケーションは、安全なアプリケーションであってよい。他の実施形態では、全てのアプリケーションは、アプリケーションとは別個に受信され、１つ以上のセキュリティパラメータ、機能、リソース制限、及び／またはそのアプリケーションがデバイス上で実行しているときにモバイルデバイス管理システムによって実施される他のアクセス制御を定義する、１つ以上のポリシーファイルのセットに従って実行してよい。それぞれのポリシーファイル（複数可）に従って動作することによって、各アプリケーションは、１つ以上の他のアプリケーション及び／またはリソースとの通信を許可または制限されてもよく、それによって、仮想パーティションを作成する。よって、本明細書で使用されるように、パーティションは、メモリの物理的に分割された部分（物理パーティション）、メモリの論理的に分割された部分（論理パーティション）、並びに／または本明細書で説明されるような複数のアプリケーションにわたる１つ以上のポリシー及び／もしくはポリシーファイルの実施の結果として作成された仮想パーティション（仮想パーティション）を指してよい。言い換えると、管理対象アプリケーション上でポリシーを実施することによって、それらのアプリケーションは、他の管理対象アプリケーション及び信頼できるエンタプライズリソースとのみ通信することが可能であるように制限されてもよく、それによって、非管理対象アプリケーション及びデバイスによってアクセス可能でない仮想パーティションを作成する。
【００５５】
安全なアプリケーションは、電子メールアプリケーション、ウェブ閲覧アプリケーション、サービスとしてのソフトウェア（ＳａａＳ）アクセスアプリケーション、Ｗｉｎｄｏｗｓ（登録商標）アプリケーションアクセスアプリケーション等であってよい。安全なアプリケーションは、安全なネイティブアプリケーション５１４、安全なアプリケーションランチャ５１８によって実行される安全なリモートアプリケーション５２２、安全なアプリケーションランチャ５１８によって実行される仮想化アプリケーション５２６等であってよい。安全なネイティブアプリケーション５１４は、安全なアプリケーションラッパ５２０によってラップされてよい。安全なアプリケーションラッパ５２０は、安全なネイティブアプリケーション５１４がデバイス上で実行されるときにモバイルデバイス５０２上で実行される統合ポリシーを含んでよい。安全なアプリケーションラッパ５２０は、安全なネイティブアプリケーション５１４の実行時に安全なネイティブアプリケーション５１４が要求されたタスクを完了するために必要とすることがある企業にホストされるリソースに、モバイルデバイス５０２上で実行する安全なネイティブアプリケーション５１４を示すメタデータを含んでよい。安全なアプリケーションランチャ５１８によって実行される安全なリモートアプリケーション５２２は、安全なアプリケーションランチャアプリケーション５１８内で実行されてよい。安全なアプリケーションランチャ５１８によって実行される仮想化アプリケーション５２６は、モバイルデバイス５０２上で、及びエンタプライズリソース５０４において等でリソースを利用してよい。安全なアプリケーションランチャ５１８によって実行される仮想化アプリケーション５２６によってモバイルデバイス５０２上で使用されるリソースは、ユーザ対話リソース及び処理リソース等を含んでよい。ユーザ対話リソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、及びジェスチャ入力等を収集及び送信するために使用されてよい。処理リソースは、ユーザインタフェースを提示し、エンタプライズリソース５０４から受信されたデータを処理する等のために使用されてよい。安全なアプリケーションランチャ５１８によって実行される仮想化アプリケーション５２６によってエンタプライズリソース５０４において使用されるリソースは、ユーザインタフェース生成リソース及び処理リソース等を含んでよい。ユーザインタフェース生成リソースは、ユーザインタフェースのアセンブル、ユーザインタフェースの修正、ユーザインタフェースのリフレッシュ等に使用されてよい。処理リソースは、情報の作成、情報の読み出し、情報の更新、情報の削除等に使用されてよい。例えば、仮想化アプリケーション５２６は、グラフィカルユーザインタフェース（ＧＵＩ）と関連付けられたユーザ対話を記録してもよく、それらをサーバアプリケーションに通信してもよく、サーバアプリケーションは、ユーザ対話データをサーバ上で動作するアプリケーションへの入力として使用してもよい。この配置では、企業は、サーバ側のアプリケーションと共に、アプリケーションと関連付けられたデータ、ファイル等とを維持することを選択することがある。企業は、モバイルデバイス上での展開のためにアプリケーションを保護することによって、本明細書における原理に従って一部のアプリケーションを「モバイル化する」ことを選択することがあり、この配置は、特定のアプリケーションに対して選択されることがある。例えば、一部のアプリケーションはモバイルデバイス上での使用のために保護されてもよく、他のアプリケーションは、モバイルデバイス上での展開のために準備されないことがあり、または適切でないことがあり、よって、企業は、仮想化技術を通じて作成されていないアプリケーションへのモバイルユーザアクセスを提供することを選択することがある。更なる別の例として、企業は、大規模且つ複合的なデータセットを有する大規模複合アプリケーション（例えば、資材リソース計画アプリケーション）を有していることがあり、モバイルデバイスに対してアプリケーションをカスタマイズすることは、非常に難しく、またはそうでなければ望ましくなく、よって、企業は、仮想化技術を通じてアプリケーションへのアクセスを提供することを選択することがある。更なる別の例として、企業は、保護されたモバイル環境に対してさえ非常に機密であると企業によって見なされることがある高度に保護されたデータ（例えば、人事データ、顧客データ、エンジニアリングデータ）を維持するアプリケーションを有することがあり、よって、企業は、そのようなアプリケーション及びデータへのモバイルアクセスを許可するために、仮想化技術を使用することを選択することがある。企業は、モバイルデバイス上で完全に保護され、完全に機能的なアプリケーションと共に、サーバ側でより適切に動作すると見なされるアプリケーションへのアクセスを可能にする仮想化アプリケーションの両方を提供することを選択することがある。実施形態では、仮想化アプリケーションは、一部のデータ、ファイル等をモバイル電話上の安全な記憶位置の１つに記憶してよい。企業は、例えば、他の情報を許可せずに、特定の情報を電話に記憶されることを可能にすることを選択することがある。
【００５６】
本明細書で説明されるように、仮想化アプリケーションに関連して、モバイルデバイスは、ＧＵＩを提示し、次いでＧＵＩとのユーザ対話を記録するように設計された仮想化アプリケーションを有してよい。アプリケーションは、アプリケーションとのユーザ対話としてサーバ側アプリケーションによって使用されることになるユーザ対話をサーバ側に通信してよい。これに応答して、サーバ側上のアプリケーションは、新たなＧＵＩをモバイルデバイスに再度返信してよい。例えば、新たなＧＵＩは、静的ページ、動的ページ、及びアニメーション等であってよく、それによって、リモートに位置するリソースへのアクセスを提供する。
【００５７】
安全なアプリケーションは、モバイルデバイスの管理対象パーティション５１０内の安全なデータコンテナ５２８に記憶されたデータにアクセスしてよい。安全なデータコンテナにおいて保護されたデータは、安全なラップされたアプリケーション５１４、安全なアプリケーションランチャ５２２によって実行されるアプリケーション、及び安全なアプリケーションランチャ５２２によって実行される仮想化アプリケーション５２６等によってアクセスされてよい。安全なデータコンテナ５２８に記憶されたデータは、ファイル及びデータベース等を含んでよい。安全なデータコンテナ５２８に記憶されたデータは、特定の安全なアプリケーション５３０に制限されたデータ、及び安全なアプリケーション５３２の間で共有されたデータ等を含んでよい。安全なアプリケーションに制限されたデータには、安全な一般データ５３４及び高度に安全なデータ５３８を含んでよい。安全な一般データは、高度暗号化標準（ＡＥＳ）１２８ビット暗号化等の強力な暗号化形式を使用してよく、高度に安全なデータ５３８は、ＡＥＳ２５６ビット暗号化等の非常に強力な暗号化形式を使用してよい。安全なデータコンテナ５２８に記憶されたデータは、デバイスマネージャ５２４からコマンドを受信すると、デバイスから削除されてよい。安全なアプリケーションは、デュアルモードオプション５４０を有してよい。デュアルモードオプション５４０は、セキュリティ保護されたアプリケーションを非保護モードまたは非管理モードで操作するオプションをユーザに提示してよい。非保護または非管理モードでは、安全なアプリケーションは、モバイルデバイス５０２の非管理対象パーティション５１２上の非保護データコンテナ５４２に記憶されているデータにアクセスしてよい。非保護データコンテナに記憶されたデータは、個人データ５４４であってよい。非保護データコンテナ５４２に記憶されたデータは、モバイルデバイス５０２の非管理対象パーティション５１２上で実行している非保護アプリケーション５４８によってもアクセスされてよい。非保護データコンテナ５４２に記憶されたデータは、安全なデータコンテナ５２８に記憶されたデータがモバイルデバイス５０２から削除されたとき、モバイルデバイス５０２上に残ってよい。企業は、ユーザによって所有、ライセンス、または管理される個人データ、ファイル、及び／またはアプリケーション（個人データ）を残し、またはそうでなければ保存しながら、企業によって所有、ライセンス、または制御される、選択されまたは全てのデータ、ファイル、及び／またはアプリケーション（企業データ）をモバイルデバイスから削除することを望むことがある。この操作は、選択的ワイプと呼ばれてよい。本明細書で説明される態様に従って配置された企業及び個人データにより、企業は選択的ワイプを実行してよい。
【００５８】
モバイルデバイス５０２は、企業におけるエンタプライズリソース５０４及びエンタプライズサービス５０８をパブリックインターネット５４８等に接続してよい。モバイルデバイスは、仮想プライベートネットワーク接続を通じてエンタプライズリソース５０４及びエンタプライズサービス５０８に接続してよい。マイクロＶＰＮまたはアプリケーション固有ＶＰＮとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション（マイクロＶＰＮ５５０によって示されるような）、特定のデバイス、およびモバイルデバイス上の特定の保護された領域（Ｏ／Ｓ  ＶＰＮ５５２によって示されるような）等に固有であってよい。例えば、電話の保護された領域内のラップされたアプリケーションの各々は、アプリケーション固有ＶＰＮを通じてエンタプライズリソースにアクセスしてもよく、その結果、場合によっては、ユーザまたはデバイス属性情報と共に、アプリケーションと関連付けられた属性に基づいてＶＰＮへのアクセスを許可することができる。仮想プライベートネットワーク接続は、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅトラフィック、Ｍｉｃｒｏｓｏｆｔ  Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙトラフィック、ハイパーテキスト転送プロトコル（ＨＴＴＰ）トラフィック、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）トラフィック、及びアプリケーション管理トラフィック等を搬送してよい。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス５５４をサポート及び有効化してよい。シングルサインオンプロセスは、ユーザが認証証明書の単一のセットを提供することを可能にしてよく、次に、認証証明書は、認証サービス５５８によって検証される。次に、認証サービス５５８は、個々のエンタプライズリソース５０４の各々に認証証明書を提供することをユーザに要求することなく、複数のエンタプライズリソース５０４へのユーザアクセスを許可してよい。
【００５９】
仮想プライベートネットワーク接続は、アクセスゲートウェイ５６０によって確立及び管理されてよい。アクセスゲートウェイ５６０は、モバイルデバイス５０２へのエンタプライズリソース５０４の配信を管理、加速、及び改善するパフォーマンス強化機能を含んでよい。アクセスゲートウェイはまた、モバイルデバイス５０２からパブリックインターネット５４８にトラフィックを再ルーティングしてもよく、モバイルデバイス５０２がパブリックインターネット５４８上で実行する公に利用可能な非保護アプリケーションにアクセスすることを可能にする。モバイルデバイスは、トランスポートネットワーク５６２を介してアクセスゲートウェイに接続してよい。トランスポートネットワーク５６２は、１つ以上のトランスポートプロトコルを使用してよく、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、パブリックネットワーク、及びプライベートネットワーク等であってよい。
【００６０】
エンタプライズリソース５０４は、電子メールサーバ、ファイル共有サーバ、ＳａａＳアプリケーション、ウェブアプリケーションサーバ、及びＷｉｎｄｏｗｓ（登録商標）アプリケーションサーバ等を含んでよい。電子メールサーバは、Ｅｘｃｈａｎｇｅサーバ、及びＬｏｔｕｓ  Ｎｏｔｅｓサーバ等を含んでよい。ファイル共有サーバは、ＳｈａｒｅＦｉｌｅサーバ等を含んでよい。ＳａａＳアプリケーションは、Ｓａｌｅｓｆｏｒｃｅ等を含んでよい。Ｗｉｎｄｏｗｓ（登録商標）アプリケーションサーバは、ローカルのＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム等で実行することを目的としたアプリケーションを提供するために構築された任意のアプリケーションサーバを含んでよい。エンタプライズリソース５０４は、プレミスベースのリソース、及びクラウドベースのリソース等であってよい。エンタプライズリソース５０４は、モバイルデバイス５０２によって直接またはアクセスゲートウェイ５６０を通じてアクセスされてよい。エンタプライズリソース５０４は、トランスポートネットワーク５６２を介してモバイルデバイス５０２によってアクセスされてよい。トランスポートネットワーク５６２は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、パブリックネットワーク、及びプライベートネットワーク等であってよい。
【００６１】
エンタプライズサービス５０８は、認証サービス５５８、脅威検出サービス５６４、デバイスマネージャサービス５２４、ファイル共有サービス５６８、ポリシーマネージャサービス５７０、ソーシャル統合サービス５７２、及びアプリケーションコントローラサービス５７４等を含んでよい。認証サービス５５８は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、及びデータ認証サービス等を含んでよい。認証サービス５５８は、認証情報を使用してよい。認証情報は、モバイルデバイス５０２に、及びエンタプライズリソース５０４によって等で記憶されてよい。モバイルデバイス５０２に記憶された認証情報は、モバイルデバイス上の暗号化された位置に記憶されてよく、認証情報は、認証の時の使用のためにモバイルデバイス５０２によって一時的に記憶されてよい、等である。脅威検出サービス５６４は、侵入検出サービス及び不正アクセス試行検出サービス等を含んでよい。不正アクセス試行検出サービスは、デバイス、アプリケーション、データ等への不正アクセス試行を含んでよい。デバイス管理サービス５２４は、構成、プロビジョニング、セキュリティ、サポート、監視、報告、及び廃止措置サービスを含んでよい。ファイル共有サービス５６８は、ファイル管理サービス、ファイルストレージサービス、ファイルコラボレーションサービス等を含んでよい。ポリシーマネージャサービス５７０は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、及びデータポリシーマネージャサービス等を含んでよい。ソーシャル統合サービス５７２は、連絡先統合サービス、コラボレーションサービス、Ｆａｃｅｂｏｏｋ、Ｔｗｉｔｔｅｒ、ＬｉｎｋｅｄＩｎ等のソーシャルネットワークとの統合を含んでよい。アプリケーションコントローラサービス５７４は、管理サービス、プロビジョニングサービス、デプロイメントサービス、割り当てサービス、失効サービス、ラッピングサービス等を含んでよい。
【００６２】
エンタプライズモビリティ技術アーキテクチャ５００は、アプリケーションストア５７８を含んでよい。アプリケーションストア５７８は、ラップされていないアプリケーション５８０、事前にラップされたアプリケーション５８２等を含んでよい。アプリケーションは、アプリケーションコントローラ５７４からアプリケーションストア５７８にポピュレートされてよい。アプリケーションストア５７８は、アクセスゲートウェイ５６０を介して、パブリックインターネット５４８等を介して、モバイルデバイス５０２によってアクセスされてよい。アプリケーションストアは、ユーザに対して直感的且つ使用することが容易なユーザインタフェースを備えてよい。
【００６３】
ソフトウェア開発キット５８４は、この説明で前述したようにアプリケーションをラップすることにより、ユーザが選択したアプリケーションをセキュリティ保護する機能をユーザに提供してよい。ソフトウェア開発キット５８４を使用してラップされたアプリケーションは、次に、アプリケーションコントローラ５７４を使用してアプリケーションストア５７８にそれをポピュレートすることにより、モバイルデバイス５０２で利用できるようにされてよい。
【００６４】
エンタプライズモビリティ技術アーキテクチャ５００は、管理及び分析機能を含んでよい。管理及び分析機能は、リソースがどのように使用されるか、及びリソースがどの程度使用されるか等に関連する情報を提供してよい。リソースは、デバイス、アプリケーション、及びデータ等を含んでよい。リソースの使用方法は、どのデバイスがどのアプリケーションをダウンロードするか、及びどのアプリケーションがどのデータにアクセスするか等を含んでよい。リソースがどの程度使用されるかは、アプリケーションがどの程度ダウンロードされたか、及びアプリケーションが特定のデータセットに難解アクセスしたか等を含んでよい。
【００６５】
図６は、別の例示的なエンタプライズモビリティ管理システム６００である。図５を参照して上記説明されたモビリティ管理システム５００のコンポーネントの一部は、簡単にするために省略されている。図６に示されるシステム６００のアーキテクチャは、図５を参照して上記説明されたシステム５００のアーキテクチャと多くの点で類似しており、上述していない追加の機能を含んでよい。
【００６６】
この場合、左側は、クライアントエージェント６０４を有する登録済みモバイルデバイス６０２を表し、クライアントエージェント６０４は、ゲートウェイサーバ６０６（アクセスゲートウェイ及びアプリケーションコントローラ機能を含む）と対話して、上記右側に示すように、Ｅｘｃｈａｎｇｅ、Ｓｈａｒｅｐｏｉｎｔ、公開鍵基盤（ＰＫＩ）リソース、Ｋｅｒｂｅｒｏｓリソース、認証証明書発行サービス等の様々なエンタプライズリソース６０８及びサービス６０９にアクセスする。具体的には示されていないが、モバイルデバイス６０２は、アプリケーションの選択及びダウンロードのために、エンタプライズアプリケーションストア（ストアフロント）と対話してもよい。
【００６７】
クライアントエージェント６０４は、高解像度ユーザ体験（ＨＤＸ）／ＩＣＡディスプレイリモートプロトコルを使用してアクセスされる、エンタプライズデータセンタにおいてホストされるＷｉｎｄｏｗｓ（登録商標）アプリケーション／デスクトップについてのＵＩ（ユーザインタフェース）手段としての役割を果たす。クライアントエージェント６０４はまた、ネイティブのｉＯＳまたはＡｎｄｒｏｉｄ（登録商標）アプリケーション等、モバイルデバイス６０２上のネイティブアプリケーションのインストール及び管理をサポートする。例えば、上記図に示された管理対象アプリケーション６１０（メール、ブラウザ、ラップされたアプリケーション）は全て、モバイルデバイス上でローカルに実行するネイティブアプリケーションである。このアーキテクチャのクライアントエージェント６０４及びアプリケーション管理フレームワークは、エンタプライズリソース／サービス６０８に接続性及びＳＳＯ（シングルサインオン）等のポリシー駆動型管理能力及び機能を提供する役割を果たす。クライアントエージェント６０４は、企業への、通常は他のゲートウェイサーバコンポーネントへのＳＳＯによるアクセスゲートウェイ（ＡＧ）６０６へのプライマリユーザ認証を処理する。クライアントエージェント６０４は、モバイルデバイス６０２上の管理対象アプリケーション６１０の挙動を制御するポリシーをゲートウェイサーバ６０６から取得する。
【００６８】
ネイティブアプリケーション６１０とクライアントエージェント６０４との間の安全なプロセス間通信（ＩＰＣ）リンク６１２は、管理チャネルを表し、管理チャネルは、クライアントエージェントが、各アプリケーションを「ラップ」するアプリケーション管理フレームワーク６１４によって施行されることになるポリシーを提供することを可能にする。ＩＰＣチャネル６１２はまた、クライアントエージェント６０４が、エンタプライズリソース６０８への接続性及びＳＳＯを有効にする認証情報及び確認情報を供給することを可能にする。最後に、ＩＰＣチャネル６１２は、アプリケーション管理フレームワーク６１４が、オンライン及びオフライン認証等、クライアントエージェント６０４によって実装されるユーザインタフェース機能を呼び出すことを可能にする。
【００６９】
クライアントエージェント６０４とゲートウェイサーバ６０６との間の通信は、本質的に、各ネイティブ管理アプリケーション６１０をラップするアプリケーション管理フレームワーク６１４からの管理チャネルの拡張である。アプリケーション管理フレームワーク６１４は、クライアントエージェント６０４からポリシー情報を要求し、クライアントエージェント６０４は次いで、ゲートウェイサーバ６０６からポリシー情報を要求する。アプリケーション管理フレームワーク６１４は、認証を要求し、クライアントエージェント６０４は、ゲートウェイサーバ６０６（ＮｅｔＳｃａｌｅｒアクセスゲートウェイとしても知られている）のゲートウェイサービス部分にログインする。クライアントエージェント６０４はまた、以下でより完全に説明されるように、ローカルデータボルト６１６についての暗号化キーを導出するための入力マテリアルを生成することができ、またはＰＫＩ保護リソースへの直接認証を有効にすることができるクライアント認証情報を提供することができる、ゲートウェイサーバ６０６の上のサポートサービスを呼び出してよい。
【００７０】
より詳細には、アプリケーション管理フレームワーク６１４は、各管理対象アプリケーション６１０を「ラップ」する。これは、明示的なビルドステップまたは、またはポストビルド処理ステップを介して組み込まれてよい。アプリケーション管理フレームワーク６１４は、アプリケーション６１０の最初の起動時にクライアントエージェント６０４と「ペア」になって、安全なＩＰＣチャネルを初期化し、そのアプリケーションについてのポリシーを取得してよい。アプリケーション管理フレームワーク６１４は、クライアントエージェントのログイン依存関係、及びローカルＯＳサービスをどのように使用することができるか、またはそれらがアプリケーション６１０とどのように対話することができるかを制限する抑制ポリシーの一部等、ローカルに適用するポリシーの関連する部分を実施してよい。
【００７１】
アプリケーション管理フレームワーク６１４は、認証及び内部ネットワークアクセスを容易にするために、安全なＩＰＣチャネル６１２を介してクライアントエージェント６０４によって提供されるサービスを使用してよい。プライベート及び共有データボルト６１６（コンテナ）のキー管理は、管理対象アプリケーション６１０とクライアントエージェント６０４の間の適切な対話によって管理されてもよい。ボルト６１６は、オンライン認証後にのみ利用可能であってよく、またはポリシーによって許可される場合はオフライン認証後に利用可能にされてよい。ボルト６１６の最初の使用は、オンライン認証を必要とすることがあり、オフラインアクセスは、最大でも、オンライン認証が再度必要とされる前のポリシーリフレッシュ期間に制限されてよい。
【００７２】
内部リソースへのネットワークアクセスは、アクセスゲートウェイ６０６を介して、個々の管理対象アプリケーション６１０から直接発生する場合がある。アプリケーション管理フレームワーク６１４は、各アプリケーション６１０の代わりにネットワークアクセスを調整することを担当してよい。クライアントエージェント６０４は、オンライン認証に続いて得られる適切な時間制限のある二次的な認証情報を提供することにより、これらのネットワーク接続を促進してよい。リバースウェブプロキシ接続やエンドツーエンドＶＰＮスタイルのトンネル６１８等、ネットワーク接続の複数のモードを使用してよい。
【００７３】
メール及びブラウザ管理対象アプリケーション６１０には特別なステータスがあり、任意のラップされたアプリケーションでは一般に利用できない機能を使用してよい。例えば、メールアプリケーションは、完全なＡＧログオンを必要とすることなく、拡張した期間にわたってＥｘｃｈａｎｇｅにアクセスすることを可能にする特別なバックグラウンドネットワークアクセスメカニズムを使用してよい。ブラウザアプリケーションは、異なる種類のデータを分離するために、複数のプライベートデータボルトを使用してよい。
【００７４】
このアーキテクチャは、様々な他のセキュリティ機能の組み込みをサポートする。例えば、ゲートウェイサーバ６０６（そのゲートウェイサービスを含む）は、場合によっては、アクティブディレクトリ（ＡＤ）パスワードを検証する必要がないことがある。ＡＤパスワードが一部の状況で一部のユーザについての認証因子として使用されるか否かは、企業の裁量に任せることができる。ユーザがオンラインまたはオフラインである（つまり、ネットワークに接続されている、または、接続されていない）場合、異なる認証方法を使用してよい。
【００７５】
ステップアップ認証は、ゲートウェイサーバ６０６が、強力な認証を使用してより機密性の高いデータへのアクセスを有することを許可された管理対象ネイティブアプリケーション６１０を識別することができ、前のより弱いレベルのログインの後にユーザからの再認証が必要とされることを意味する場合でさえ、それらのアプリケーションへのアクセスが適切な認証を実行した後にのみ許可されることを保証することができる機能である。
【００７６】
この解決法の別のセキュリティ機能は、モバイルデバイス６０２上のデータボルト６１６（コンテナ）の暗号化である。ボルト６１６は、ファイル、データベース、及び構成を含む全てのオンデバイスデータが保護されるように暗号化されてよい。オンラインボルトの場合、キーはサーバ（ゲートウェイサーバ６０６）に記憶されてよく、オフラインボルトの場合、キーのローカルコピーがユーザパスワードまたは生体認証によって保護されてよい。モバイルデバイス６０２上の安全なコンテナ６１６にデータがローカルに記憶されるとき、最小のＡＥＳ２５６暗号化アルゴリズムが利用されることが好ましい。
【００７７】
他の安全なコンテナ機能も実装されてよい。例えば、ロギング機能が含まれてもよく、アプリケーション６１０の内部で発生する全てのセキュリティイベントがロギングされ、バックエンドに報告される。アプリケーション６１０が改ざんを検出した場合等、データワイピングがサポートされてよく、関連する暗号化キーがランダムなデータにより上書きされてよく、ユーザデータが破壊されたというヒントがファイルシステムに残らないようにする。スクリーンショット保護は別の機能であり、アプリケーションは、スクリーンショットにデータが記憶されるのを防止することができる。例えば、キーウインドウの非表示プロパティがＹＥＳに設定されてよい。これにより、画面に現在表示されているあらゆるコンテンツが隠され、通常はコンテンツが存在しているスクリーンショットが空白にされる。
【００７８】
アプリケーションコンテナの外部にローカルにデータが転送されるのを防止することによって、例えば、データをコピーし、またはデータを外部アプリケーションに送信することによって等、ローカルデータ転送を防止することができる。キーボードキャッシュ機能が動作して、機密性の高いテキストフィールドの自動修正機能を無効にしてよい。ＳＳＬ認証情報の検証が機能し得るので、アプリケーションは、サーバのＳＳＬ認証情報をキーチェーンに記憶せずに、詳細に検証する。デバイス上でデータの暗号化するために使用されるキーが、ユーザによって供給されるパスフレーズまたは生体データを使用して生成されるように（オフラインアクセスが要求される場合）、暗号化キー生成機能が使用されてよい。オフラインアクセスが要求されない場合、サーバ側でランダムに生成され、記憶された別のキーでＸＯＲされてよい。キー導出関数は、ユーザパスワードから生成されたキーが、キーの暗号学的ハッシュを作成するのではなく、ＫＤＦ（キー導出関数、特にパスワードベースのキー導出関数２（ＰＢＫＤＦ２））を使用するように動作してよい。キーの暗号学的ハッシュ作成では、キーは、ブルートフォース攻撃や辞書攻撃の影響を受けやすくなる。
【００７９】
更に、１つ以上の初期化ベクトルが、暗号化方法において使用されてよい。初期化ベクトルにより、同一の暗号化データの複数のコピーが異なる暗号文出力を生成し、再生及び暗号解読攻撃の両方を防止する。これはまた、暗号化キーが盗まれた場合でも、攻撃者がいずれのデータも解読することを防止することができる。更に、認証、次に、解読が使用されてよく、アプリケーションデータは、ユーザがアプリケーション内で認証した後にのみ解読される。別の機能は、メモリ内の機密データに関連してよく、機密データは、必要な時にのみ（ディスクではなく）メモリに保存されてよい。例えば、ログイン認証情報は、ログイン後にメモリからワイプされてよく、Ｏｂｊｅｃｔｉｖｅ−Ｃインスタンス変数内の暗号化キーや他のデータは、簡単に参照され得るので、記憶されない。代わりに、これらに手動でメモリを割り当ててよい。
【００８０】
非活動タイムアウトが実装されてよく、ポリシー定義された非活動期間の後、ユーザセッションが終結される。
【００８１】
アプリケーション管理フレームワーク６１４からのデータ漏洩は、他の方法で防ぎ得る。例えば、アプリケーション６１０がバックグラウンドに置かれるとき、メモリは、所定の（構成可能な）期間の後に消去されてよい。バックグラウンド化されるとき、フォアグラウンディングプロセスを高速化するために、アプリケーションの最後に表示された画面のスナップショットが取得されてよい。スクリーンショットは、機密データを含むことがあり、よって消去されるべきである。
【００８２】
別のセキュリティ機能は、１つ以上のアプリケーションにアクセスするためのＡＤ（アクティブディレクトリ）６２２のパスワードを使用することなく、ＯＴＰ（ワンタイムパスワード）６２０を使用することに関連する。場合によっては、一部のユーザは、それらのＡＤパスワードを知らず（または知ることを許可されない）、よって、これらのユーザは、ＳｅｃｕｒＩＤのようなハードウェアＯＴＰシステムを使用することによって等、ＯＴＰ６２０を使用して認証してよい（ＯＴＰは、ＥｎｔｒｕｓｔまたはＧｅｍａｌｔｏ等、異なるベンダによって提供されてよい）。場合によっては、ユーザがユーザＩＤにより認証した後、ＯＴＰ６２０を有するユーザにテキストが送信されてよい。場合によっては、これはオンラインでの使用にのみ実装されてよく、プロンプトは単一のフィールドである。
【００８３】
オフラインでの使用がエンタプライズポリシーを介して許可されているそれらのアプリケーション６１０に対するオフライン認証に対して、オフラインパスワードが実装されてよい。例えば、企業はこの方法でストアフロントにアクセスしたい場合がある。この場合、クライアントエージェント６０４は、ユーザにカスタムオフラインパスワードを設定するように要求してよく、ＡＤパスワードは使用されない。ゲートウェイサーバ６０６は、標準のＷｉｎｄｏｗｓ（登録商標）サーバパスワードの複雑性要件によって記述されているように、パスワードの最小長、文字クラス構成、及び経過時間に関してパスワード標準を制御及び施行するポリシーを提供してもよいが、これらの要件は修正されてよい。
【００８４】
別の機能は、二次的な認証情報として特定のアプリケーション６１０に対するクライアント側認証情報の有効化に関連してよい（アプリケーション管理フレームワークのマイクロＶＰＮ機能を介してＰＫＩ保護ウェブリソースにアクセスすることを目的に）。例えば、アプリケーションは、そのような認証情報を利用してよい。この場合、ＡｃｔｉｖｅＳｙｎｃプロトコルを使用した認証情報ベースの認証がサポートされてよく、クライアントエージェント６０４からの認証情報がゲートウェイサーバ６０６によって読み出され、キーチェーンで使用されてよい。各管理対象アプリケーションは、ゲートウェイサーバ６０６において定義されたラベルによって識別される、１つの関連するクライアント認証情報を有してよい。
【００８５】
ゲートウェイサーバ６０６は、企業の特殊目的ウェブサービスと対話して、クライアント認証情報の発行をサポートし、関連する管理対象アプリケーションが内部ＰＫＩ保護リソースを認証することを可能にしてよい。
【００８６】
クライアントエージェント６０４及びアプリケーション管理フレームワーク６１４は、内部ＰＫＩ保護ネットワークリソースに対する認証のためのクライアント認証情報の取得及び使用をサポートするように強化されてよい。様々なレベルのセキュリティ及び／または分離要件に一致させる等のために、１つよりも多い認証情報がサポートされてよい。認証情報は、メール及びブラウザ管理対象アプリケーションによって使用されてよく、最終的には任意のラップされたアプリケーションによって使用されてよい（これらのアプリケーションが、アプリケーション管理フレームワークがＨＴＴＰＳ要求を仲介することが妥当なウェブサービススタイルの通信パターンを使用することを条件として）。
【００８７】
ｉＯＳ上でのアプリケーション管理クライアント認証情報のサポートは、公開鍵暗号標準（ＰＫＣＳ）１２ＢＬＯＢ（バイナリラージオブジェクト）を、使用期間ごとに各管理対象アプリケーションにおけるｉＯＳキーチェーンにインポートすることに依存してよい。アプリケーション管理フレームワークのクライアント認証情報のサポートでは、プライベートインメモリキーストレージを備えたＨＴＴＰＳ実装を使用してよい。クライアント認証情報は、ｉＯＳキーチェーンに存在しないことがあり、強力に保護された「オンライン専用」データ値に潜在的にある場合を除いて保持されないことがある。
【００８８】
相互ＳＳＬまたはＴＬＳを実装して、モバイルデバイス６０２が企業に対して認証されること、または、その逆を要求することにより、追加のセキュリティを提供してもよい。ゲートウェイサーバ６０６に対する認証のための仮想スマートカードも実装されてよい。
【００８９】
制限付き及び完全なケルベロスサポートの両方が追加機能であってよい。完全サポート機能は、ＡＤパスワードまたは信頼されるクライアント認証情報を使用してアクティブディレクトリ（ＡＤ）６２２への完全なケルベロスログインを実行し、ＨＴＴＰネゴシエート認証チャレンジに応答するためのケルベロスサービスチケットを取得する能力に関連する。制限付きサポート機能はＣｉｔｒｉｘのＡＧＥＥ（Ａｃｃｅｓｓ  Ｇａｔｅｗａｙ  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ）の制約付き委任に関連し、ＡＧＥＥはケルベロスプロトコル遷移の呼び出しをサポートしているため、ＨＴＴＰネゴシエート認証チャレンジに応答してケルベロスサービスチケット（制約付き委任の対象）を取得して使用できる。このメカニズムは、リバースウェブプロキシ（別名、企業仮想プライベートネットワーク（ＣＶＰＮ））モードにおいて、及びＨＴＴＰ（ＨＴＴＰＳではない）接続がＶＰＮ及びマイクロＶＰＮモードにおいてプロキシされるときに機能する。
【００９０】
別の機能は、ジェイルブレイクまたはルート検出時に自動的に発生することがあり、管理コンソールからの押下されたコマンドとして発生することがある、アプリケーションコンテナのロック及びワイプに関連し、アプリケーション６１０が実行していないときでさえ、リモートワイプ機能を含んでよい。
【００９１】
障害の場合に幾つかの異なる位置の１つからユーザがサービス提供されることを可能にする、エンタプライズアプリケーションストア及びアプリケーションコントローラのマルチサイトアーキテクチャまたは構成がサポートされてよい。
【００９２】
場合によっては、管理対象アプリケーション６１０は、ＡＰＩ（例えば、オープンＳＳＬ）を介して認証情報及び秘密鍵にアクセスすることを許可されてよい。企業の信頼できる管理対象アプリケーション６１０は、アプリケーションのクライアント認証情報及び秘密鍵を使用して、特定の公開キー操作を実行することを許可されてよい。したがって、アプリケーションがブラウザのように振る舞い、認証情報アクセスが使用されないとき、アプリケーションが「ｗｈｏ  ａｍ  Ｉ」についての認証情報を読み出すとき、アプリケーションが安全なセッショントークンを構築するために認証情報を使用するとき、アプリケーションが重要なデータ（例えば、トランザクションログ）のデジタル署名または一時的なデータ暗号化のための秘密鍵を使用するとき等、様々なユースケースが識別及び処理されてよい。
【００９３】
ヘルパ（複数可）を介してクライアントデバイス（複数可）を匿名セッション（複数可）に接続する例示的な実施例
図７は、本明細書で説明される１つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する例示的なシステム及び方法を示す。システムは、コンピューティングデバイス７１７（及び、他のコンピューティングデバイス）を含んでよい。コンピューティングデバイス７１７は、例えば、仮想マシン上でのセッションの作成及び割り当てを促進するためのコントローラとしての役割を果たしてよい。コンピューティングデバイス７１７は、セッションマネージャ７２０を含んでよい。以下で更に詳細に説明されるように、セッションマネージャ７２０は、例えば、匿名セッション（複数可）を生成するかどうか、及び／または匿名セッション（複数可）をどこで生成するか（例えば、どの仮想マシン）を判定してよい。コンピューティングデバイス７１７は、コンピューティングデバイス７１７上で実行するマイクロサービスを含むことができる、管理アーキテクチャサービス７１９を含んでよい。例えば、管理アーキテクチャサービス７１９は、ブローカサービスを含んでよい。以下で更に詳細に説明されるように、管理アーキテクチャサービス７１９は、使用中のセッションを識別及び／または管理してよい。データベース（図示せず）は、ターゲットマシン上で１つ以上のセッションの状態を維持してよく、コンピューティングデバイス７１７は（例えば、セッションマネージャ７２０を介して）、例えば、使用中または利用可能であるセッションの数を判定するようデータベースを調べてよい。データベースは、他のコンピューティングデバイス（図示せず）によって共有されてよく、他のコンピューティングデバイスは同様に、使用中または利用可能であるセッションの数を判定するようデータベースを調べてよい。
【００９４】
システムは、１つ以上のクライアントデバイス７０１を含んでよく、各クライアントデバイスは、関連するクライアントエージェント７０５を実行してよい。クライアントエージェント７０５は、クライアントデバイスを匿名セッション等のセッションに接続することを促進することができ、その結果、クライアントデバイスは、１つ以上のリソース（例えば、仮想アプリケーション及び／またはデスクトップ）にアクセスすることができる。システムは、アプリケーションストア７１０を含んでよい。以下で更に詳細に説明されるように、アプリケーションストア７１０は、１つ以上の匿名セッションを生成し、及び／またはそれらの匿名セッションについての構成情報を提供するために使用されてよい。アプリケーションストア７１０はまた、クライアントデバイスを特定のセッションに接続することを促進することができる。
【００９５】
システムは、ターゲットマシン７４０（及び、他のマシン）を含んでよい。ターゲットマシンは、１つ以上のセッションを実行するために使用されてよく、１つ以上のセッションの一部は、匿名セッションであってよく、１つ以上のセッションの一部は、ユーザ固有セッションであってよい。例えば、図７は、匿名セッションを含むことができる、セッション７３０を示す。セッション７３０は、セッション内でヘルパプロセス７３５を含んでよい。ヘルパ７３５は、クライアントデバイスがセッション７３０にいまだ接続されていないときにセッション７３０をアライブに維持するために使用されてよい。ヘルパ７３５はまた、以下の更なる詳細で説明されるように、匿名セッションからユーザ固有セッションへのセッション７３０の変換を促進することができる。ターゲットマシン７４０は、ターゲットマシン７４０及びコンピューティングデバイス７１７、クライアントデバイス、並びに／または他のデバイスの間の通信を促進するために使用される通信エージェント７１５（例えば、ブローカリングエージェント）を含んでよい。ターゲットマシン７４０は、ターゲットマシン７４０上でのセッションの作成及び管理を促進することができる、サーバエージェント７２５を含んでよい。
【００９６】
図８は、本明細書で説明される１つ以上の例示的な態様に従ってヘルパを介してクライアントデバイスを匿名セッションに接続する例示的なシステム及び方法を示す。ステップ８０６では、コンピューティングデバイス７１７は、セッションマネージャ７２０を介して等、匿名セッション等のセッションを生成するかどうかを判定してよい。セッションマネージャ７２０は、管理サービス７１９に、セッションのプール内のセッションの数及び／またはタイプを判定するクエリを送信してよい。セッションのプールは、ターゲットマシン７４０等の１つ以上の仮想マシン上で実行してよい。管理サービス７１９は、どのセッションが使用されているか、及びどのユーザがそれらのセッションを使用しているかを知ることができる。管理サービス７１９はまた、セッションのプール内のどのセッションがクライアントデバイスによる使用のために利用可能な匿名セッションであるかを知ることができる。例えば、管理サービス７１９は、どのセッションがされているか、どのユーザがそれらのセッションを使用しているか、及び／またはセッションのプール内のどのセッションがクライアントデバイスによる使用のために利用可能な匿名セッションであるかを判定するよう、データベースにアクセスしてよい。セッションマネージャ７２０は、管理サービス７１９から、クライアントデバイスによる使用のために利用可能な匿名セッションの数及び／またはタイプを示す情報を受信してよい。セッションマネージャ７２０は、例えば、匿名セッションのプール内の匿名セッションの数が匿名セッションの閾値数を下回るとの判定に基づいて、匿名セッションを生成するかどうかを判定してよい。例えば、セッションマネージャ７２０は、プール内で特定の数のセッションを維持することを試みてよい。セッションマネージャ７２０が匿名セッションを生成しないと判定する場合、セッションマネージャ７２０は、匿名セッションを生成するかどうかを再度判定するよう、待機して、後の時点において管理サービス７１９をクエリしてよい。一方、セッションマネージャ７２０が匿名セッションを生成すると判定する場合、セッションマネージャ７２０は、ステップ８１０に進んでよい。
【００９７】
ステップ８１０では、セッションマネージャ７２０は、アプリケーションストア７１０に、セッションを生成する要求を送信してよい。要求は、セッションが匿名セッションになることを示してよい。このインジケーションに基づいて、要求を処理する後続のコンポーネント（例えば、通信エージェント７１５、サーバエージェント７２５等）は、セッションが匿名セッションになることを知ることができる。
【００９８】
ステップ８１４では、アプリケーションストア７１０は、管理サービス７１９に、匿名セッションを起動する要求を送信してよい。管理サービス７１９は（例えば、ブローカサービスを介して）、セッションを生成するターゲットマシン７４０（または、他の位置）を判定してよい。判定は、例えば、負荷分散、要求に応答する準備性等に基づいてよい。ステップ８１８では、管理サービス７１９は、ターゲットマシン７４０の通信エージェント７１５に、匿名セッションを生成するために作成するメッセージを送信してよい。作成メッセージは、起動セッション要求（例えば、ステップ８１４）に応答して送信されてよい。ステップ８２２では、管理サービス７１９は、アプリケーションストア７１０に、匿名セッションを起動する要求を確認応答してよい。
【００９９】
ステップ８２６では、アプリケーションストア７１０は、セッションマネージャ７２０に、匿名セッションを生成するための構成情報を送信してよい。セッションマネージャ７２０は、その要求（例えば、ステップ８１０において送信された）に基づいて構成情報を受信してよい。一部の実施例では、アプリケーションストア７１０は、構成情報を生成してよい。構成情報は、匿名セッションを生成するターゲットマシン７４０のアドレス（または、他の識別子）等の情報を含んでよい。構成情報は、セッション（例えば、仮想デスクトップまたは仮想アプリケーション）のタイプを示すことができる。構成情報は、例えば、セッションマネージャ７２０に送信されるＩＣＡファイルに含まれてよい。
【０１００】
ステップ８３０では、セッションマネージャ７２０は、対応するターゲットマシン７４０に、匿名セッション７３０等の匿名セッションを生成する（例えば、起動する）要求を送信してよい。例えば、セッションマネージャ７２０は、アプリケーションストア７１０から構成情報を受信してよく、構成情報に基づいて、セッションマネージャ７２０は、ターゲットマシン７４０上での匿名セッションの生成を開始する要求を送信してよい。匿名セッション７３０を生成する要求は、匿名セッション７３０と関連付けられた匿名ヘルパ７３５を開始する要求を含んでよい。匿名ヘルパ７３５は、匿名セッション７３０内で実行するプロセスであってよい。一部の態様では、各匿名セッションは、対応するヘルパを有してよい。
【０１０１】
セッションマネージャ７２０はまた、ターゲットマシン７４０上の匿名セッション７３０に接続してよい。接続は、ＨＤＸ／ＩＣＡ接続等、ターゲットマシン７４０への表示リモーティングプロトコル接続を含んでよい。匿名セッション７３０に接続することによって、セッションマネージャ７２０は、セッション７３０を効果的に始動することができる。
【０１０２】
ステップ８３４では、セッションマネージャ７２０は、特定の時間の後等、匿名セッション７３０から切断してよい。匿名セッション７３０から切断することによって、匿名セッション７３０は、他のクライアントデバイスによる使用に対して利用可能にされてよい。例えば、匿名セッション７３０は、待機期間に入ってよく、休眠してよく、セッション７３０に接続するようクライアントデバイスに対して待機する。
【０１０３】
ステップ８３８では、ヘルパ７３５は、匿名セッション７３０を維持してよい。ターゲットマシン７４０上での匿名セッション７３０の生成を開始した後、匿名ヘルパは、或る期間の間、ターゲットマシン７４０上で匿名セッション７３０をアライブに維持してよい。例えば、ターゲットマシン７４０のオペレーティングシステムは、サーバエージェント７２５に、ヘルパ７３５が実行しており、その結果、匿名セッション７３０が維持されることを報告してよい。したがって、セッション７３０は、実行していることを維持されてよく、その結果、クライアントデバイスは、セッション７３０に即時に接続することができる。匿名ヘルパ７３５は、閾値時間量の間、匿名セッション７３０をアライブに維持してよい。一部の態様では、クライアントデバイスが閾値時間量内に匿名セッション７３０に接続されていない場合、匿名セッション７３０は、ターゲットマシン７４０から除去されてよい。加えてまたは代わりに、サーバエージェント７２５は、それらを実行している最後のアプリケーションプロセスが終結するとき等、セッションを自動で終結させてよい。ヘルパ７３５が匿名セッション７３０をアライブに維持する間、クライアントデバイスは、セッションに接続することを望むことがある。
【０１０４】
ステップ８４０では、クライアントデバイスは、クライアントエージェント７０５を介して等、アプリケーションストア７１０に、セッションを起動する要求を送信してよい。例えば、アプリケーションストア７１０は、クライアントデバイスから、アプリケーションまたデスクトップセッションを始動する要求を受信してよい。以下で更に詳細に説明されるように、アプリケーションまたはデスクトップセッションを要求するクライアントデバイスは、既存の匿名セッションの１つを要求することがある。ステップ８４４では、アプリケーションストアは、管理サービス７１９に要求を送信してよい。
【０１０５】
ステップ８４８では、管理サービス７１９は、ターゲットマシン７４０の通信エージェント７１５に、作成メッセージ（例えば、作成呼び出しとして）を送信してよい。メッセージは、通信エージェント７１５に、クライアントデバイスのクライアントエージェント７０５に接続されるよう作成することを示すことができる。管理サービス７１９は、クライアントエージェント７０５から受信された情報に基づいて等、クライアントデバイスに対するセッションを判定してよい。クライアントエージェント７０５から受信された情報は、例えば、ユーザ識別、ユーザ位置、要求が外部ネットワークから生じているか（例えば、ゲートウェイを介して）またはローカルネットワーク（例えば、ＬＡＮ）から生じているかどうか、クライアントデバイスがアンチウイルスソフトウェアをインストールしているかどうか、クライアントデバイスがいずれかのアプリケーション制約を有しているかどうか、等を含んでよい。クライアントエージェント７０５から受信された情報に基づいて、管理サービス７１９は、クライアントデバイスに対して適切な匿名セッションが存在するかどうかを判定してよい。匿名セッションが適切であるかどうかは、ポリシー決定または他の因子に基づいてよい。
【０１０６】
匿名セッションの複数のプールが存在してよく、各プールは、異なる特性を有してよい。管理サービス７１９は、例えば、ユーザ識別（例えば、ユーザが特定のリソースへのアクセスを有するかどうか）、ユーザ位置、要求が外部ネットワークから生じているか（例えば、ゲートウェイを介して）もしくはローカルネットワーク（例えば、ＬＡＮ）から生じているかどうか、クライアントデバイスがアンチウイルスソフトウェアをインストールしているかどうか、クライアントデバイスがいずれかのアプリケーション制約を有しているかどうか、またはユーザと関連付けられた他の情報に基づいて、クライアントエージェントを仮想マシン７４０及び／または匿名セッションのプールに方向付けてよい。別の実施例として、匿名セッションのプールは、匿名セッションの別のプールとは異なるタイプのマシン上で実行してよく（例えば、４ＧＢマシン対８ＧＢマシン）、ポリシー決定は、クライアントデバイスを４ＧＢマシンまたは８ＧＢマシンに接続するかどうかを判定するために使用されてよい。匿名セッションの異なるプールは、異なるタイプのアプリケーションをサポートすることができ、管理サービス７１９は、クライアントデバイスによって要求されるアプリケーションに基づいて、クライアントデバイスを経路指定する匿名セッションのプールを判定してよい。例えば、クライアントデバイスを接続するターゲットマシン上の匿名セッションを選択することは、クライアントデバイスの位置、クライアントデバイスが接続されるネットワークのインジケーション、ターゲットマシンのプロセッサ特性、またはターゲットマシンのメモリ特性のうちの１つ以上に基づいてよい。ステップ８５２では、管理サービス７１９は、セッションを起動するクライアントエージェント７０５からの要求を確認応答してよい。
【０１０７】
ステップ８５６では、アプリケーションストア７１０は、クライアントデバイスのクライアントエージェント７０５に、匿名セッションについての構成情報を送信してよい。クライアントエージェント７０５は、その起動要求（例えば、ステップ８４０において送信された）に基づいて、構成情報を受信してよい。構成情報は、匿名セッションが存在するターゲットマシン７４０のアドレス（または、他の識別子）等の情報を含んでよい。構成情報は、加えてまたは代わりに、匿名セッションの１つ以上の識別子を含んでよい。構成情報は、例えば、クライアントエージェント７０５に送信されるＩＣＡファイルに含まれてよい。
【０１０８】
ステップ８６０では、クライアントエージェント７０５は、匿名セッション７３０に接続する要求を送信してよい。接続は、アプリケーションストア７１０及び／または管理サービス７１９から受信された構成情報を使用してよい。前に説明されたように、接続は、ＨＤＸ／ＩＣＡ接続等、ターゲットマシン７４０への表示リモーティングプロトコル接続を含んでよい。接続は、例えば、マウス、キーボード、及び／またはグラフィック接続（複数可）を含んでよい。接続は、セッションマネージャ７２０が生成され、接続され、及び匿名セッションから切断された後に、クライアントデバイスが匿名セッション７３０に接続することができることを理由に、再接続として機能してよい。
【０１０９】
ステップ８６４では、ヘルパ７３５は、通信エージェント７１５に、クライアントデバイスのユーザと関連付けられた認証情報及び／またはアプリケーションの詳細を取り出す要求を送信してよい。ヘルパ７３５は、クライアントデバイスを認証するために使用されてよい。例えば、ヘルパ７３５は、通信エージェント７１５から、クライアントデバイスのユーザと関連付けられた認証情報を取り出してよい。ユーザ認証情報の例は、実際のエンドユーザ認証情報（例えば、ユーザ名及び／もしくはパスワード、生物測定、または他の一意な識別子）、セキュリティトークン、単一のサインオン認証情報、及びパス認証情報等を含む。認証情報は、選択されたセッション７３０を実行する仮想マシン７４０に送信されてよく（例えば、ヘルパ７３５を介して）、ヘルパ７３５は、認証情報に基づいてユーザを認証してよい。その上、ユーザ認証情報は、認証情報をローカルに記憶させることができる、接続またはセッションアンロック時間において供給されてよい。ユーザは、チャレンジ／レスポンス認証プロトコル及び／またはＫｅｒｂｅｒｏｓ等、ドメインベースのネットワーク認証を使用して認証されてよい。加えてまたは代わりに、システムは、匿名セッションにリンク付けされたユーザ認証情報を提供してよく、よって、それは、認証情報プロバイダによって読み出し可能となることができる。適切な認証情報タイトルは、ユーザ認証情報とのロックされたセッションをアンロックするよう表示されてよい。
【０１１０】
ヘルパ７３５はまた、匿名セッション７３０を、クライアントデバイスに対してカスタマイズされたセッションに変換するために使用されてよい。ヘルパ７３５は、ユーザと関連付けられたプロファイルから取り出された情報に基づいて、ユーザ構成パラメータをターゲットマシン上のアプリケーションと関連付けてよい。プロファイルは、クライアントデバイスによってアクセスされるアプリケーション（複数可）及び／またはデスクトップ（複数可）についての個人設定（例えば、ショートカット、アプリケーションプロファイル、クッキー等）を含んでよい。ヘルパ７３５は、クライアントデバイスに対するセッション７３０をカスタマイズするために、ユーザのプロファイルからの情報を使用してよい。セッション７３０は、エンドユーザ識別によって保有されるとしてタグ付けされてよい。クライアントデバイスに対するセッション７３０をカスタマイズすることは、適切なユーザポリシーをセッション７３０に適用すること、及び／またはセッション７３０と関連付けられることになるユーザ固有ローミングプロファイルを開始することを含んでよい。ユーザは、適切な柔軟なアプリケーション層ディスクへのアクセスを許可されてよい。ログオンスクリプトまたはレジストリ実行アクションは、再実行されてよい。
【０１１１】
ステップ８６８では、ヘルパ７３５は、アプリケーション７４５を始動してよい。ヘルパ７３５は、ユーザの認証情報及び／またはプロファイル情報に基づいて、ユーザになりすましてよい。ヘルパ７３５は、ユーザとしてターゲットマシン７４０上でアプリケーションを始動するために、ユーザと関連付けられた認証情報を使用してよい。ユーザとしてターゲットマシン７４０上でアプリケーションを始動することは、ユーザと関連付けられたプロファイルから取り出された情報に基づいて、ターゲットマシン７４０上のアプリケーションについてのユーザ構成パラメータを関連付けることを含んでよい。ヘルパ７３５は、アプリケーション７４５を始動するためのアクションとしてＷＩＮＤＯＷＳ（登録商標）の実行を使用してよい。例えば、セッション内のＷＩＮＤＯＷＳ（登録商標）シェルプロセスは、ユーザ認証情報及び／またはトークンを取り込み、ユーザトークンを取得するためにそれらを使用するようにされてよく、ユーザトークンによりアクションとしての実行は、所望のエンドユーザとしてターゲットアプリケーション７４５を始動するために使用されてよい。クライアントデバイスは、クライアントエージェント７０５を介して、セッション７３０及びアプリケーション７４５に接続されてよい。一部の態様では、エンドユーザは、匿名セッションがセッション７３０及びアプリケーション７４５に接続するために使用されていたことを知らないことがあり、よって、プロセスは、エンドユーザに対して透過的であってよい。
【０１１２】
ステップ８７２では、セッション７３０と関連付けられたヘルパプロセス７３５は、ユーザとしてターゲットマシン７４０上でアプリケーション７４５を始動した後に終了してよい。ヘルパプロセスを終了した後、セッション７３０は、匿名セッションとして処理されないことがある。むしろ、セッション７３０は、エンドユーザに対してカスタマイズされたセッションとして処理されてよい。同一または同様のステップは、クライアントデバイスを仮想デスクトップに接続するために使用されてよい。クライアントデバイスは次いで、アプリケーション７４５及び／または仮想デスクトップと関連付けられた１つ以上のリソースにアクセスしてよい。いくつかのポイントにおいて、クライアントデバイスは、セッション７３０から切断してよい。
【０１１３】
ステップ８８０では、クライアントデバイスは、セッション７３０から切断されてよい。例えば、クライアントエージェント７０５は、ユーザとしてターゲットマシン７４０上でアプリケーション７４５を始動した後、セッション７３０から切断する要求を送信してよい。セッション７３０は、クライアントデバイスから切断要求を受信してよい。
【０１１４】
ステップ８８４では、セッション７３０は、切断する要求を受信したことに応答して等、ターゲットマシン７４０から切断及び／または除去されてよい。セッション７３０は、エンドユーザがセッション７３０から切断するとき、終了及び／または消去されてよい。したがって、セッションが特定のユーザと関連付けられると（例えば、特定のユーザによって使用される）、セッションは、匿名セッションのプールから離れてよく、他のユーザは、セッションを使用することが可能でないことがある。ユーザのデータ、構成、または他の情報は、それがユーザに対してカスタマイズされると、他のユーザがセッション７３０を使用することを防止することによって、安全に維持されてよい。前に説明されたように、他の匿名セッションは、仮想アプリケーション及び／またはデスクトップへの即時アクセスを促進するよう作成されてよい。
【０１１５】
主題が構造的特徴及び／または方法論的動作に固有の言語において説明されてきたが、添付の特許請求の範囲において定義される主題は、上記説明された特定の特徴または動作に必ずしも限定されないことが理解されよう。むしろ、上記説明された特定の特徴及び動作は、以下の特許請求の範囲の実施例の実装態様として説明される。
【０１１６】
関連出願の相互参照
本出願は、２０１８年５月１１日に出願された米国非仮特許出願第１５／９７６，９８０号の優先権を主張し、その内容は、参照によりその全体が本明細書に明示的に組み込まれる。
【図１】
2021521574.tif 000003
【図２】
2021521574.tif 000004
【図３】
2021521574.tif 000005
【図４】
2021521574.tif 000006
【図５】
2021521574.tif 000007
【図６】
2021521574.tif 000008
【図７】
2021521574.tif 000009
【図８】
2021521574.tif 000010
【国際調査報告】
2021521574.tif 000011
2021521574.tif 000012
2021521574.tif 000013