以下の説明では、上で特定された、本明細書の一部をなす添付図面に対する言及がなされる。該図面では、本発明が実施される様々な実施形態が例として示されている。しかし他の実施形態が利用されてもよく、かつ本明細書に記載されている範囲から逸脱することなく、構造的で機能的な変形例が示されてもよい。発明は、他の実施形態を可能とし、様々な異なる方法で実施または遂行可能である。
さらに、本明細書に使用される語法および専門用語は説明のためのものであり、限定するものとして解釈されるべきではない。むしろ、本明細書で使用されるフレーズおよび用語には、最も広い解釈および意味が付与されるべきである。例えば「含む」および「備える」ならびにその派生語が使用されると、この後に列記される項目およびその均等物ならびに追加の項目およびその均等物が包括される。
上述のように、クライアントデバイス上に提供されたネイティブデスクトップから離れた他のデスクトップからマイニングされた(たとえば、抽出、分析、および/または選択的に格納された)データを含むクラウド同期型データを使って、ネイティブデスクトップを、たとえばモバイルデバイスなどのクライアントデバイス上に離れた他のデスクトップから提供することに関するある実施形態が本明細書で論じられる。これらのコンセプトをより詳細に論じる前に、本発明の様々な態様を実施および/または他の形で提供するために使用されるコンピューティングアーキテクチャおよび企業モビリティ管理アーキテクチャのいくつかの実施例を図1〜図6を参照してまず論じる。
コンピュータソフトウェア、ハードウェア、およびネットワークは、とりわけ、スタンドアロン型、ネットワーク型、リモートアクセス(別名、リモートデスクトップ)型、仮想化型、および/またはクラウドベースの各環境を含む、様々な異なるシステム環境において利用される。
図1は、スタンドアロン型および/またはネットワーク型環境における、本明細書で説明される1つまたは複数の態様を実施するために使用されるシステムのアーキテクチャおよびデータ処理装置の一実施例を示す図である。様々なネットワークノード103、105、107、および109が、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続されている。プライベートイントラネット、コーポレートネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイヤレスネットワーク、パーソナルネットワーク(PAN)などを含む、他のネットワークもまた、あるいは代わりに、使用されてもよい。ネットワーク101は、例示を目的とするものであり、より少ないまたは追加のコンピュータネットワークで代替されてもよい。LANは、1つまたは複数の任意の既知のLANトポロジーを有してもよく、イーサネット(登録商標)などの、1つまたは複数の様々な異なるプロトコルを使用してもよい。デバイス103、105、107、109、および(図示されない)他のデバイスは、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介して、1つもしくは複数のネットワークに接続されていてもよい。
本明細書に使用され、かつ図面に示される際、用語「ネットワーク」は、遠隔記憶装置が1つまたは複数の通信パスを介して連結されているシステムだけを意味するのではなく、記憶能力を有するシステムなどとしばしば結合されてもよいスタンドアロン型デバイスをも意味する。したがって、用語「ネットワーク」は、「物理的なネットワーク」だけではなく、物理的なネットワーク全体に存在する(単一のエンティティに帰属可能な)データから構成される「コンテントネットワーク」をも意味する。
コンポーネントは、データサーバ103と、ウェブサーバ105と、クライアントコンピュータ107、109と、を含んでいてもよい。データサーバ103は、本発明の1つまたは複数の実施形態を行うためのデータベースおよび制御ソフトウェアの全体のアクセス、制御、および管理(administration)を提供する。データサーバ103は、ユーザがデータと相互にやりとり(interact)し、要求に応じてデータを取得するためのウェブサーバ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は、RAM113と、ROM115と、ネットワークインターフェース117と、入出力インターフェース119(たとえば、キーボード、マウス、ディスプレイ、プリンタなど)と、メモリ121と、をさらに含んでいてもよい。
I/O119は、データまたはファイルを読み込み、書き込み、表示し、および/または印刷するための様々なインターフェースユニットおよびドライブを含んでいてもよい。メモリ121は、データ処理装置103の全体的な動作を制御するためのオペレーティングシステムソフトウェア123と、本明細書で説明される態様を行うデータサーバ103を指示するための制御ロジック125と、本明細書で説明される態様とともに使用されてもよく、または使用されなくてもよい二次的、支援および/または他の機能を提供する他のアプリケーションソフトウェア127と、をさらに含んでいてもよい。
制御ロジックは、本明細書においてデータサーバソフトウェア125として言及されるものでもよい。データサーバソフトウェアの機能は、制御ロジックにコーディングされたルールに基づいて自動的になされる動作または決定、システムへ入力するユーザにより手動でなされる動作または決定、および/またはユーザ入力(たとえば、クエリ、データアップデートなど)に基づく自動処理の組み合わせによりなされる、動作または決定を指す。
メモリ121はまた、本明細書で説明される1つまたは複数の態様を行う際に使用されるデータを、第1のデータベース129および第2のデータベース131を含むデータベースに格納していてもよい。いくつかの実施形態では、第1のデータベースは、第2のデータベースを(たとえば、セパレートテーブル、レポートなどとして)含んでいてもよい。つまり、情報を、単一のデータベースに格納することができ、または、システム設計により、異なるロジカルデータベース、仮想データベース、もしくは物理的データベースに分離することもできる。デバイス105、107、109は、デバイス103に関して説明されるように、同様のまたは異なるアーキテクチャを有してもよい。当業者であれば、データ処理装置103(またはデバイス105、107、109)の本明細書で説明される機能は、たとえば、複数のコンピュータに亘って処理負荷を分配したり、地理的位置、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分けたりするために、複数のデータ処理装置に亘って分散されてもよいことが理解されよう。
本発明の1つまたは複数の態様は、1つまたは複数のコンピュータまたは本明細書で説明される他のデバイスにより実行される、1つまたは複数のプログラムモジュールにおいてなど、コンピュータ使用可能もしくは読み取り可能なデータおよび/またはコンピュータで実行可能な指示において具現化されてもよい。一般に、プログラムモジュールは、コンピュータまたは他のデバイス内のプロセッサにより実行された場合、特定のタスクを実行し、または特定のアブストラクトデータタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のためにその後コンパイルされるソースコードプログラミング言語で記述されてもよく、(限定はされないが)Java(登録商標)scriptまたはActionScriptなどのスクリプト言語で記述されてもよい。
コンピュータ実行可能な指示は、非揮発性記憶装置などのコンピュータ読み取り可能媒体に格納されてもよい。ハードディスク、CD−ROM、光学記憶装置、磁気記憶装置、および/または任意のそれらの組み合わせを含む、任意の適切なコンピュータ読み取り可能記憶媒体が利用されてもよい。さらに、本明細書で説明されるデータまたはイベントを表す様々な送信(非記憶)媒体は、金属線、光ファイバ、および/または無線送信媒体(たとえば、空気および/または空間)などの信号伝導媒体を通って移動する電磁波の形態で送信元と送信先との間を伝送されてもよい。
本明細書で説明される様々な態様は、方法、データ処理システム、またはコンピュータプログラムプロダクトとして具現化されてもよい。したがって、ソフトウェア、ファームウェアおよび/またはハードウェア、または集積回路などのハードウェア均等物、フィールドプログラマブルゲートアレイ(FPGA)などの全体または一部において様々な機能が具現化されてもよい。特定のデータ構造を使って、本明細書で説明される1つまたは複数の態様をさらに効率的に実施してもよく、そのようなデータ構造は、本明細書で説明されるコンピュータで実行可能な指示およびコンピュータで使用可能なデータの範囲内であると想到される。
図2をさらに参照して、本明細書で説明される1つまたは複数の態様は、リモートアクセス環境において実施されてもよい。図2は、本発明に説明される1つまたは複数の実施形態に従って利用されるコンピューティング環境200における汎用コンピューティングデバイス201を含むシステムのアーキテクチャを示す。汎用コンピューティングデバイス201は、クライアントアクセスデバイスに対して仮想マシンを提供するように構成された単一のサーバまたはマルチサーバデスクトップ仮想化システム(たとえば、リモートアクセスまたはクラウドシステム)内のサーバ206aとして使用される。汎用コンピューティングデバイス201は、サーバと、ランダムアクセスメモリ(RAM)205、読出し専用メモリ(ROM)207、入出力(I/O)モジュール209、およびメモリ215を含む、その関連するコンポーネントと、の全体の動作を制御するためのプロセッサ203を有している。
I/Oモジュール209としては、汎用コンピューティングデバイス201のユーザが入力するためのマウス、キーパッド、タッチスクリーン、スキャナ、光学リーダ、および/またはスタイラス(または(複数の)他の入力デバイス)が挙げられ、また、音声出力を提供するための1つまたは複数のスピーカ、ならびにテキスト出力、視聴覚出力、および/またはグラフィック出力を提供するための映像ディスプレイデバイスも挙げられる。ソフトウェアは、メモリ215および/または他のストレージ内に格納され、プロセッサ203に対して指示を与えて、汎用コンピューティングデバイス201を、本明細書で説明される様々な機能を行うために専用のコンピューティングデバイスになるように構成する。たとえば、メモリ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」と称される)と通信する。1つの実施形態では、コンピューティング環境200は、(複数の)サーバ206と(複数の)クライアントマシン240との間に設置されるネットワークアプライアンスを備えている。ネットワークアプライアンスは、クライアント/サーバ接続を管理してもよく、場合によっては、複数のバックエンドサーバ206間のクライアント接続の負荷を分散してもよい。
(複数の)クライアントマシン240は、いくつかの実施形態では、単一のクライアントマシン240または単一グループのクライアントマシン240と称され、一方、(複数の)サーバ206は、単一のサーバ206または単一グループのサーバ206と称される。1つの実施形態では、単一のクライアントマシン240は、2つ以上のサーバ206と通信を行い、一方、他の実施形態では、単一のサーバ206は、2つ以上のクライアントマシン240と通信を行う。さらに他の実施形態では、単一のクライアントマシン240は、単一のサーバ206と通信を行う。
クライアントマシン240は、いくつかの実施形態では、完全に網羅しているわけではないが、以下の用語のいずれか1つにより言及されてもよい:(複数の)クライアントマシン、(複数の)クライアント、(複数の)クライアントコンピュータ、(複数の)クライアントデバイス、(複数の)クライアントコンピューティングデバイス、ローカルマシン、リモートマシン、(複数の)クライアントノード、(複数の)エンドポイント、または(複数の)エンドポイントノード。サーバ206は、いくつかの実施形態では、完全に網羅しているわけではないが、以下の用語のいずれか1つにより言及されてもよい:(複数の)サーバ、ローカルマシン、リモートマシン、(複数の)サーバファーム、または(複数の)ホストコンピューティングデバイス。
1つの実施形態では、クライアントマシン240は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってもよいが、一方、いくつかの実施形態では、仮想マシンは、たとえば、Citrix Systems、IBM、VMwareにより開発されたハイパーバイザなどのタイプ1もしくはタイプ2のハイパーバイザ、または任意の他のハイパーバイザにより管理される任意の仮想マシンであってもよい。いくつかの態様では、仮想マシンは、ハイパーバイザにより管理されてもよいが、一方、態様では、仮想マシンは、サーバ206上で実行するハイパーバイザまたはクライアント240上で実行するハイパーバイザにより管理されてもよい。
いくつかの実施形態には、サーバ206または他の遠隔に位置するマシン上で遠隔で実行するアプリケーションにより生成されるアプリケーション出力を表示するクライアントデバイス240が含まれる。これらの実施形態では、クライアントデバイス240は、仮想マシンクライアントエージェントプログラムまたはアプリケーションを実行して、アプリケーションウインドウ、ブラウザ、または他の出力ウインドウに出力を表示する。1つの実施例では、アプリケーションは、デスクトップであり、その一方、他の実施例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルおよび/またはリモートアプリケーションが統合可能なオペレーティングシステムのインスタンスに対してユーザインターフェースを提供するグラフィカルシェルを含んでいてもよい。本明細書で使用される際、アプリケーションは、オペレーティングシステム(および任意選択的にデスクトップ)のインスタンスがロードされた後で実行するプログラムである。
サーバ206は、いくつかの実施形態では、リモートプレゼンテーションプロトコルまたは他のプログラムを使って、データをクライアント上で実行するシンクライアントまたはリモートディスプレイアプリケーションに対して送信し、サーバ206上で実行するアプリケーションにより生成されるディスプレイ出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、完全に網羅しているわけではないが、以下のプロトコルの一覧のいずれか1つであってもよい。フロリダ州フォート・ローダーデールのCitrix Systems,Inc.により開発されたIndependent Computing Architecture(ICA)プロトコル、またはワシントン州レドモンドのMicrosoft Corporationにより製造されたRemote Desktop Protocol(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に転送し、第2のサーバ206bからの応答でクライアントマシン240により生成された要求に対して応答する、第1のサーバ206aを備えている。第1のサーバ206aは、クライアントマシン240が利用可能なアプリケーションのイニュミレーション(inumeration)、およびアプリケーションのイニュミレーション内で特定されたアプリケーションをホスティングするアプリケーションサーバ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つまたは複数の実施形態もしくは他の既知のコンピューティングデバイスとしてデプロイ(deploy)されることができ、および/または複数の実施形態もしくは他の既知のコンピューティングデバイスによって実装されることができる。
仮想化サーバ301において、1つまたは複数の物理的ディスク304と、1つまたは複数の物理的デバイス306と、1つまたは複数の物理的プロセッサ308と、1つまたは複数の物理的メモリ316と、を含むことができる、ハードウェアレイヤが含まれる。いくつかの実施形態では、ファームウェア312は、物理的メモリ316内のメモリ要素内に格納することができ、1つまたは複数の物理的プロセッサ308により実行することができる。仮想化サーバ301は、物理的メモリ316内のメモリ要素に格納されてもよく、1つまたは複数の物理的プロセッサ308により実行されてもよい、オペレーティングシステム314をさらに含んでいてもよい。さらにまた、ハイパーバイザ302は、物理的メモリ316内のメモリ要素に格納されてもよく、1つまたは複数の物理的プロセッサ308により実行されてもよい。
1つまたは複数の物理的プロセッサ308上で実行することは、1つまたは複数の仮想マシン332A〜332C(まとめて332と称す)であってもよい。各仮想マシン332は、仮想ディスク326A〜326Cと、仮想プロセッサ328A〜328Cと、を有してもよい。いくつかの実施形態では、第1の仮想マシン332Aは、仮想プロセッサ328Aを使って、ツールスタック324を含む制御プログラム320を実行してもよい。制御プログラム320は、システムアドミニストレーションおよび/または制御のために使用される制御仮想マシン、Dom0、Domain 0、または他の仮想マシンと称されてもよい。いくつかの実施形態では、1つまたは複数の仮想マシン332B〜332Cは、仮想プロセッサ328B〜328Cを使って、ゲストオペレーティングシステム330A〜Bを実行できる。
仮想化サーバ301は、仮想化サーバ301と通信する1つまたは複数のハードウェアを有するハードウェアレイヤ310を含んでいてもよい。いくつかの実施形態では、ハードウェアレイヤ310は、1つまたは複数の物理的ディスク304と、1つまたは複数の物理的デバイス306と、1つまたは複数の物理的プロセッサ308と、1つまたは複数のメモリ216と、を含むことができる。物理的なコンポーネント304、306、308および316は、たとえば、上述のコンポーネントのうちいずれかを含んでいてもよい。
物理的デバイス306としては、たとえば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバスコネクション、プリンタ、スキャナ、ネットワーク要素(たとえば、ルータ、ファイアウォール、ネットワークアドレス変換器、負荷分散器、仮想プライベートネットワーク(VPN)ゲートウェイ、ダイナミックホストコンフィギュレーションプロトコル(DHCP)ルータなど)、または仮想化サーバ301と接続もしくは通信する任意のデバイスが挙げられる。ハードウェアレイヤ310における物理的メモリ316は、任意のタイプのメモリを含んでいてもよい。物理的メモリ316は、データを格納してもよく、いくつかの実施形態では、1つまたは複数のプログラム、または実行可能な指示のセットを格納してもよい。図3は、ファームウェア312が仮想化サーバ301の物理的メモリ316内に格納される実施形態を示す。物理的メモリ316内に格納されるプログラムまたは実行可能な指示は、仮想化サーバ301の1つまたは複数のプロセッサ308により実行できる。
仮想化サーバ301は、また、ハイパーバイザ302を含んでいてもよい。いくつかの実施形態では、ハイパーバイザ302は、仮想化サーバ301上のプロセッサ308により実行されるプログラムであり、任意の数の仮想マシン332を作成および管理してもよい。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと称されてもよい。いくつかの実施形態では、ハイパーバイザ302は、実行可能な指示および計算機上で実行する仮想マシンをモニタするハードウェアの任意の組み合わせであってもよい。ハイパーバイザ302は、タイプ2のハイパーバイザであってもよく、オペレーティングシステム314内で実行するハイパーバイザは、仮想化サーバ301上で実行する。仮想マシンは、その後、ハイパーバイザの上のレベルで実行する。いくつかの実施形態では、タイプ2のハイパーバイザは、タイプ2のハイパーバイザがユーザのオペレーティングシステムとやりとりするようにユーザのオペレーティングシステムのコンテキスト内で実行する。
他の実施形態では、仮想化環境内の1つまたは複数の仮想化サーバ201は、その代わりに、タイプ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,Incにより製造されたハイパーバイザ、オープンソースXen.orgコミュニティにより開発が監督されているオープンソースの製品であるXENハイパーバイザ、Microsoftにより提供されているHyperV、VirtualServerまたは仮想PCハイパーバイザなどが挙げられる。
いくつかの実施形態では、仮想化サーバ301は、その上でゲストオペレーティングシステムが実行してもよい仮想マシンプラットフォームを作成するハイパーバイザ302を実行する。これらの実施形態では、仮想化サーバ301は、ホストサーバと称されてもよい。そのような仮想化サーバの一例は、フロリダ州フォート・ローダーデールのCitrix Systems,Incにより提供されるXEN SERVERである。
ハイパーバイザ302は、その中でゲストオペレーティングシステム330が実行する1つまたは複数の仮想マシン332B〜332C(まとめて332と称す)を作成してもよい。いくつかの実施形態では、ハイパーバイザ302は、仮想マシン画像をロードして、仮想マシン332を作成してもよい。他の実施形態では、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行してもよい。さらに他の実施形態では、仮想マシン332は、ゲストオペレーティングシステム330を実行してもよい。
仮想マシン332を生成することに加えて、ハイパーバイザ302は、少なくとも1つの仮想マシン332の実行を制御してもよい。他の実施形態では、ハイパーバイザ302は、少なくとも1つの仮想マシン332に対して、仮想化サーバ301(たとえば、ハードウェアレイヤ310内で利用可能な任意のハードウェアリソース)により提供される少なくとも1つのハードウェアリソースのアブストラクションを提示してもよい。他の実施形態では、ハイパーバイザ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の固有の(unique)ビューを提供する。よって、これらの実施形態では、各仮想マシン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は、たとえば、とりわけ、フロリダ州フォート・ローダーデールのCitrix Systems,Inc.のCLOUDSTACK、またはOPENSTACKを稼動させてもよい。管理サーバ410は、たとえば、ホストコンピュータ403、データ記憶装置404、およびネットワーキングデバイス405であるクラウドハードウェアおよびソフトウェアリソースを含む、様々なコンピューティングリソースを管理してもよい。クラウドハードウェアおよびソフトウェアリソースは、プライベートおよび/またはパブリックコンポーネントを含んでいてもよい。たとえば、クラウドは、1つもしくは複数の特定の顧客もしくはクライアントコンピュータ411〜414によって、および/またはプライベートネットワークを介して、使用されるプライベートクラウドとして構成されてもよい。他の実施形態では、パブリッククラウドまたはハイブリッド型のパブリック・プライベートクラウドは、オープン型またはハイブリッド型のネットワーク上で他の顧客により使用されてもよい。
管理サーバ410は、クラウドオペレータおよびクラウド顧客がクラウドシステムとやりとりするためのユーザインターフェースを提供するように構成されてもよい。たとえば、管理サーバ410は、APIおよび/または1つもしくは複数のクラウドオペレータコンソールアプリケーション(たとえば、ウェブベースのまたはスタンドアロン型のアプリケーション)のセットに対して、ユーザインターフェースを提供し、クラウドオペレータに対して、クラウドリソースを管理させ、仮想化レイヤを構成させ、顧客アカウントを管理させ、他のクラウドアドミニストレーション業務を行わせてもよい。管理サーバ410はまた、クライアントコンピュータ411〜414を介してエンドユーザからクラウドコンピューティング要求、たとえば、クラウド内にて仮想マシンを作成、変更、または破壊するための要求を受信するように構成されたユーザインターフェースを有するAPIおよび/または1つもしくは複数の顧客コンソールアプリケーションのセットを含んでいてもよい。
クライアントコンピュータ411〜414は、インターネットまたは他の通信ネットワークを介して、管理サーバ410に接続してもよく、管理サーバ410により管理される1つまたは複数のコンピューティングリソースへのアクセスを要求してもよい。クライアントの要求に応答して、管理サーバ410は、クライアントの要求に基づいて、クラウドシステムのハードウェアレイヤ内の物理的リソースを、選択およびプロビジョニングするように構成されたリソースマネージャを含んでいてもよい。たとえば、クラウドシステムの管理サーバ410および追加的なコンポーネントは、仮想マシンおよびそれらのオペレーティング環境(たとえば、ハイパーバイザ、ストレージリソース、ネットワーク要素により提供されるサービスなど)を、クライアントコンピュータ411〜414における顧客のために、ネットワーク(たとえば、インターネット)上で、プロビジョニング、作成、および管理するように構成されてもよく、顧客に対して、計算リソース、データストレージサービス、ネットワーキング能力、ならびにコンピュータプラットフォームおよびアプリケーション支援を提供する。クラウドシステムはまた、セキュリティシステム、開発環境、ユーザインターフェースなどを含む様々な特定のサービスを提供するように構成されてもよい。
あるクライアント411〜414は、たとえば、同じエンドユーザまたは同じ会社もしくは組織の系列下にある異なるユーザのために、仮想マシンを作成する、関係がある異なるクライアントコンピュータであってもよい。他の実施例では、あるクライアント411〜414は、異なる会社または組織の系列下にあるユーザなど無関係でもよい。無関係のクライアントのために、いずれか1人のユーザの仮想マシンまたはストレージに関する情報が、他のユーザから隠されてもよい。
ここで、クラウドコンピューティング環境の物理的なハードウェアレイヤを参照して、利用可能ゾーン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つもしくは複数のポリシーおよび/またはポリシーファイルが複数のアプリケーションに亘って執行された結果、作成された仮想パーティション(仮想パーティション)を意味してもよい。別の言い方をすれば、ポリシーを被管理アプリケーションに執行すると、これらのアプリケーションは、制限され、他の被管理アプリケーションおよび信用できる企業リソースとのみ通信ができるようになり、それによって、非管理アプリケーションおよびデバイスからは侵入できない仮想パーティションが作成される。
被管理パーティション上で稼動するアプリケーションは、セキュリティ保護されているアプリケーションであってもよい。セキュリティ保護されているアプリケーションは、eメールアプリケーション、ウェブブラウジングアプリケーション、サービスとしてのソフトフェア(SaaS)アクセスアプリケーション、Windows(登録商標) Applicationアクセスアプリケーションなどであってもよい。セキュリティ保護されているアプリケーションは、セキュリティ保護されているネイティブアプリケーション514、セキュリティ保護されているアプリケーションランチャ518により実行されるセキュリティ保護されているリモートアプリケーション522、セキュリティ保護されているアプリケーションランチャ518により実行される仮想化アプリケーション526などであってもよい。
セキュリティ保護されているネイティブアプリケーション514は、セキュリティ保護されているアプリケーションラッパー520によりラップされてもよい。セキュリティ保護されているアプリケーションラッパー520は、セキュリティ保護されているネイティブアプリケーションがデバイス上で実行された場合、モバイルデバイス502上で実行される統合型ポリシーを含んでいてもよい。セキュリティ保護されているアプリケーションラッパー520は、モバイルデバイス502上で稼動するセキュリティ保護されているネイティブアプリケーション514を、セキュリティ保護されているネイティブアプリケーション514の実行時に要求されるタスクを完了するようにセキュリティ保護されているネイティブアプリケーション514要求してもよい、企業でホスティングされるリソースに向けるメタデータを含んでいてもよい。セキュリティ保護されているアプリケーションランチャ518により実行されるセキュリティ保護されているリモートアプリケーション522は、セキュリティ保護されているアプリケーションランチャアプリケーション518内で実行されてもよい。
セキュリティ保護されているアプリケーションランチャ518により実行される仮想化アプリケーション526は、企業リソース504などにおいて、モバイルデバイス502上のリソースを利用してもよい。セキュリティ保護されているアプリケーションランチャ518により実行される仮想化アプリケーション526によりモバイルデバイス502上で使用されるリソースは、ユーザインタラクション用リソース、処理用リソースなどを含んでいてもよい。ユーザインタラクション用リソースを使って、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集および送信してもよい。
処理用リソースを使って、ユーザインターフェースを提示し、企業リソース504から受信したデータを処理するなどしてもよい。セキュリティ保護されているアプリケーションランチャ518により実行される仮想化アプリケーション526により企業リソース504において使用されるリソースは、ユーザインターフェース生成用リソース、処理用リソースなどを含んでいてもよい。ユーザインターフェース生成用リソースを使って、ユーザインターフェースを組み立て、ユーザインターフェースを変更し、ユーザインターフェースを新しくするなどしてもよい。処理用リソースを使って、情報を作成し、情報を読み込み、情報を更新し、情報を削除するなどしてもよい。たとえば、仮想化アプリケーションは、GUIと関連付けられたユーザのインタラクションを記録し、それをサーバアプリケーションに通信してもよいが、サーバアプリケーションは、該ユーザのインタラクションのデータを、サーバ上で動作しているアプリケーションに対する入力として使用することとなる。この配置では、企業は、サーバ側に、アプリケーション、およびアプリケーションと関連付けられたデータ、ファイルなどを維持することを選んでもよい。
企業は、アプリケーションをモバイルデバイスに確実にデプロイすることにより、本明細書の原理に従っていくつかのアプリケーションを「起動」させるよう選択する一方、この配置はまた、あるアプリケーション用に選択されてもよい。たとえば、いくつかのアプリケーションは、モバイルデバイス上での使用のためにセキュリティ保護性が確保されている一方、他のものは、モバイルデバイス上でのデプロイに準備が整っていない場合、または適切ではない場合があるので、企業は、モバイルユーザアクセスを、準備が整っていないアプリケーションに対して、仮想化技術によって提供してもよい。他の実施例として、企業は、巨大で複雑なデータのセット(たとえば、資材所要量計画アプリケーション)を有する巨大で複雑なアプリケーションを有する場合があり、その場合、アプリケーションをモバイルデバイス用にカスタマイズすることが困難で、それ以外の場合は、望ましくない場合があるため、企業は、仮想化技術によってアプリケーションへのアクセスを提供することを選んでもよい。
さらに他の実施例として、企業は、セキュリティ保護性が確保されたモバイル環境にとってさえあまりにも機密性が高いものとして企業から見なされる非常にセキュリティ保護されているデータ(たとえば、人材に関するデータ、顧客データ、技術資料)を維持するアプリケーションを有してもよく、企業は、仮想化技術を使用することを選んで、そのようなアプリケーションおよびデータにモバイルアクセスすることを許可してもよい。
企業は、モバイルデバイス上の完全なセキュリティ保護性を有した、完全に機能的なアプリケーションおよび仮想化アプリケーションの両方を提供することを選び、サーバ側のより適切に動作されると考えられるアプリケーションへのアクセスを許可してもよい。実施形態では、仮想化アプリケーションは、携帯電話上のセキュリティ保護されているストレージの場所のうちの1つに、いくつかのデータ、ファイルなどを格納してもよい。企業は、たとえば、ある情報が電話に格納されることを選んでもよい一方、他の情報は許可しなくてもよい。
仮想化アプリケーションに関連して、本明細書で説明されるように、モバイルデバイスは、GUIを提示し、その後、GUIとのユーザのインタラクションを記録するように設計されている仮想化アプリケーションを有してもよい。アプリケーションは、ユーザのインタラクションを、サーバ側に伝え、アプリケーションとのユーザのインタラクションとして、サーバ側アプリケーションに使用されてもよい。対して、サーバ側のアプリケーションは、新たなGUIをモバイルデバイスに対して返送してもよい。たとえば、新たなGUIは、静止ページ、動的ページ、アニメーションなどであってもよい。
セキュリティ保護されているアプリケーションは、モバイルデバイスの被管理パーティション510内のセキュリティ保護されているデータコンテナ528に格納されたデータにアクセスしてもよい。セキュリティ保護されているデータコンテナに安全に守られているデータは、セキュリティ保護されているラップ化アプリケーション514、セキュリティ保護されているアプリケーションランチャ518により実行されたアプリケーション、セキュリティ保護されているアプリケーションランチャ518により実行された仮想化アプリケーション526などによりアクセスされてもよい。セキュリティ保護されているデータコンテナ528に格納されたデータは、ファイル、データベースなどを含んでいてもよい。セキュリティ保護されているデータコンテナ528に格納されたデータは、特定のセキュリティ保護されているアプリケーション530に制限されるデータ、セキュリティ保護されているアプリケーション532間に共有されるデータなどを含んでいてもよい。セキュリティ保護されているアプリケーションに制限されるデータは、セキュリティ保護されている一般データ534および非常にセキュリティ保護されているデータ538を含んでいてもよい。セキュリティ保護されている一般データは、AES128ビット暗号化技術など高い暗号化技術の形態を使用するが、一方、非常にセキュリティ保護されているデータ538は、AES256ビット暗号化技術など非常に高い暗号化技術の形態を使用してもよい。
セキュリティ保護されているデータコンテナ528に格納されたデータは、デバイスマネージャ524からコマンドを受けとると、デバイスから削除されてもよい。セキュリティ保護されているアプリケーションは、デュアルモードオプション540を有してもよい。デュアルモードオプション540は、セキュリティ保護されていないモードでセキュリティ保護されているアプリケーションを動作させるオプションを、ユーザに対して、提示してもよい。セキュリティ保護されていないモードでは、セキュリティ保護されているアプリケーションは、モバイルデバイス502の非管理パーティション512上のセキュリティ保護されていないデータコンテナ542に格納されたデータにアクセスしてもよい。セキュリティ保護されていないデータコンテナに格納されたデータは、個人データ544であってもよい。セキュリティ保護されていないデータコンテナ542に格納されたデータはまた、モバイルデバイス502の非管理パーティション512上で稼動するセキュリティ保護されていないアプリケーション548によりアクセスされてもよい。セキュリティ保護されていないデータコンテナ542に格納されたデータは、セキュリティ保護されているデータコンテナ528に格納されたデータがモバイルデバイス502から削除された場合、モバイルデバイス502上に残っていてもよい。
企業は、企業により所有、認可、制御されている、選択された、またはすべてのデータ、ファイル、および/またはアプリケーション(企業データ)をモバイルデバイスから削除したい一方、ユーザにより所有、認可、制御されている個人データ、ファイル、および/またはアプリケーション(個人データ)を放置、または他の形で保存する。この動作は、選択的消去と称されてもよい。本明細書で説明される態様に従って配置される企業および個人データを使って、企業は、選択的消去を行ってもよい。
モバイルデバイスは、企業での企業リソース504および企業サービス508に、また、公衆インターネット548などに接続してもよい。モバイルデバイスは、仮想プライベートネットワークの接続によって、企業リソース504および企業サービス508に接続してもよい。仮想プライベートネットワークの接続(また、マイクロVPNまたはアプリケーション固有のVPNと称されてもよい)は、特定のアプリケーション550、特定のデバイス、モバイルデバイス上の特定のセキュリティ保護されている領域など(たとえば、552)に固有のものである。たとえば、電話のセキュリティ保護されている領域内のラップ化アプリケーションの各々は、可能であればユーザまたはデバイス属性情報とともに、アプリケーションに関連付けられた属性に基づいて、VPNに対するアクセスが承諾されるように、アプリケーション固有のVPNを介して企業リソースにアクセスしてもよい。
仮想プライベートネットワークの接続は、Microsoft Exchangeトラフィック、Microsoft Active Directoryトラフィック、HTTPトラフィック、HTTPSトラフィック、アプリケーション管理トラフィックなどを伝送してもよい。仮想プライベートネットワークの接続は、シングルサインオン認証プロセス554を支援および可能にしてもよい。シングルサインオンプロセスにより、ユーザは、その後、認証サービス558により認証される、単一セットの認証証明を提供することができる。その後、認証サービス558は、認証証明を各個別の企業リソース504へ提供するようユーザに要求することなく、複数の企業リソース504へのユーザのアクセスを承諾してもよい。
仮想プライベートネットワークの接続は、アクセスゲートウェイ560により、確立および管理されてもよい。アクセスゲートウェイ560は、企業リソース504のモバイルデバイス502への送達を管理、加速、および改善する性能向上機構を含んでいてもよい。アクセスゲートウェイはまた、モバイルデバイス502から公衆インターネット548へのトラフィックを再ルーティングしてもよく、モバイルデバイス502は、公的に利用可能であるが、セキュリティ保護されていない、公衆インターネット548上で稼動するアプリケーションにアクセスできる。モバイルデバイスは、トランスポートネットワーク562を介して、アクセスゲートウェイに接続してもよい。トランスポートネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどであってもよい。
企業リソース504は、eメールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、Windows(登録商標)アプリケーションサーバなどを含んでいてもよい。eメールサーバとして、Exchangeサーバ、Lotus Notesサーバなどが挙げられる。ファイル共有サーバとして、ShareFileサーバなどが挙げられる。SaaSアプリケーションとしては、Salesforceなどが挙げられる。
Windows(登録商標)アプリケーションサーバは、ローカルなWindows(登録商標)オペレーティングシステム上などで稼動することを意図されているアプリケーションを提供するように構築されている任意のアプリケーションサーバを含んでいてもよい。企業リソース504は、プレミスベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース504は、直接またはアクセスゲートウェイ560を介して、モバイルデバイス502によりアクセスされてもよい。企業リソース504は、トランスポートネットワーク562を介して、モバイルデバイス502によりアクセスされてもよい。トランスポートネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどであってもよい。
企業サービス508は、認証サービス558、脅威検出サービス564、デバイスマネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャルインテグレーションサービス572、アプリケーションコントローラサービス574などを含んでいてもよい。認証サービス558は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービスなどを含んでいてもよい。認証サービス558は、証明書を使用してもよい。証明書は、企業リソース504などにより、モバイルデバイス502上に格納されてもよい。モバイルデバイス502上に格納された証明書は、モバイルデバイス上の暗号化された場所において格納されてもよく、証明書は、認証の際などにおける使用のために、モバイルデバイス502上に一時的に格納されてもよい。脅威検出サービス564は、侵入検出サービス、不正アクセス試行検出サービスなどを含んでいてもよい。不正アクセス試行検出サービスは、デバイス、アプリケーション、データなどへアクセスするための不正な試行を含んでいてもよい。
デバイス管理サービス524は、コンフィギュレーション、プロビジョニング、セキュリティ、サポート、モニタリング、レポーティング、およびデコミッショニングサービスを含んでいてもよい。ファイル共有サービス568は、ファイル管理サービス、ファイルストレージサービス、ファイルコラボレーションサービスなどを含んでいてもよい。ポリシーマネージャサービス570は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含んでいてもよい。ソーシャルインテグレーションサービス572は、コンタクトインテグレーションサービス、コラボレーションサービス、Facebook、Twitter、LinkedInなどのソーシャルネットワークとのインテグレーションなどを含んでいてもよい。アプリケーションコントローラサービス574は、管理サービス、プロビジョニングサービス、デプロイメントサービス、アサインメントサービス、リボケーションサービス、ラッピングサービスなどを含んでいてもよい。
企業モビリティ技術アーキテクチャ500は、アプリケーションストア578を含んでいてもよい。アプリケーションストア578は、アンラップ化アプリケーション580、プリラップ化アプリケーション582などを含んでいてもよい。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578内にポピュレートされてもよい。アプリケーションストア578は、アクセスゲートウェイ560または公衆インターネット548などを介してモバイルデバイス502によりアクセスされてもよい。
アプリケーションストアは、感覚的で使用が簡単なユーザインターフェースを備えていてもよい。アプリケーションストア578は、ソフトウェア開発キット584へのアクセスを提供してもよい。ソフトウェア開発キット584は、本説明において前述したように、アプリケーションをラップすることにより、ユーザが選択したアプリケーションをセキュリティ保護された状態にする機能をユーザに提供してもよい。ソフトウェア開発キット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は、企業データセンタにホスティングされている、限定されるわけではない、ICAプロトコルなどのディスプレイリモーティングプロトコルを使ってアクセスされる、Windows(登録商標)アプリケーション/デスクトップのためのUI(ユーザインターフェース)手段としての機能を果たす。クライアントエージェント604はまた、モバイルデバイス602上のネイティブiOSまたはAndroid(登録商標)アプリケーションなどのネイティブアプリケーションのインストールおよび管理を支援する。たとえば、上述の図に示す被管理型アプリケーション610(メール、ブラウザ、ラップ化アプリケーション)はすべて、デバイス上でローカルに実行するネイティブアプリケーションである。本アーキテクチャのクライアントエージェント604およびアプリケーション管理フレームワーク(AMF)は、企業リソース/サービス608に対するコネクティビティおよびSSO(シングルサインオン)など、ポリシー駆動型管理能力および機構を提供する役割を果たす。
クライアントエージェント604は、企業に対する、通常は、他のゲートウェイサーバコンポーネントに対するSSOを有するアクセスゲートウェイ(AG)に対するプライマリユーザ認証を取り扱う。クライアントエージェント604は、ゲートウェイサーバ606からポリシーを取得し、モバイルデバイス602上のAMF被管理型アプリケーション610の挙動を制御する。いくつかの代替実施形態では、(たとえば、被管理型アプリケーション610に含まれてもよい)1つまたは複数のネイティブアプリケーションは、コマンドをクライアントエージェント604から受信し、および/または他の形でクライアントエージェント604とやりとりして、インストールおよび/または管理の機能を提供してもよい。
いくつかの実施形態では、クライアントエージェント604は、モバイルデバイス上のポリシーエージェントとしてだけ機能してもよく、別個のクライアントエージェントは、レシーバおよび/または仮想化機能を(たとえば、上述のディスプレイリモーティングプロトコルを使って)提供してもよい。そのような分割された機能を実施する際、クライアントエージェント604は、たとえば、ネイティブアプリケーションのインストールおよび/または管理を支援してもよいが、モバイルデバイス上で稼動している異なるクライアントエージェントによりその代わりに実行および/または提供されてもよいレシーバおよび/または仮想化機能を提供しなくてもよい。
ネイティブアプリケーション610とクライアントエージェント604との間のセキュリティ保護されているIPCリンク612は、管理チャンネルを表すが、同チャンネルにより、クライアントエージェントは、各アプリケーションを「ラップ」するアプリケーション管理フレームワーク614により執行されるポリシーを供給することを許可される。また、IPCチャンネル612により、クライアントエージェント604は、コネクティビティおよびSSOを企業リソース608に対して有効にする証明および認証情報を供給することを許可される。最後に、IPCチャンネル612により、アプリケーション管理フレームワーク614は、オンラインおよびオフラインの認証など、クライアントエージェント604により実施されるユーザインターフェース機能を呼び出すことを許可される。
クライアントエージェント604とゲートウェイサーバ606との間の通信は、本質的に、各ネイティブ被管理型アプリケーション610をラップするアプリケーション管理フレームワーク614からの管理チャンネルの延長である。アプリケーション管理フレームワーク614は、クライアントエージェント604からのポリシー情報を要求し、今度は、ゲートウェイサーバ606から同情報を要求する。アプリケーション管理フレームワーク614は、認証を要求し、クライアントエージェント604は、ゲートウェイサーバ606のゲートウェイサービス部に対してログインを行う。クライアントエージェント604はまた、ローカルなデータボルト616用の暗号化キーを引き出すための入力マテリアルを生成してもよいか、または以下により十分に説明する、PKIにより保護されたリソースに対する直接認証を有効にしてもよいクライアント証明書を提供してもよい、ゲートウェイサーバ606に対する支援サービスを呼び出してもよい。
より詳しくは、アプリケーション管理フレームワーク614は、各被管理型アプリケーション610を「ラップ」する。これは、明示的な構築ステップを介して、または構築後の処理ステップを介して組み込まれてもよい。アプリケーション管理フレームワーク614は、アプリケーション610の最初の開始において、クライアントエージェント604と「ペアを形成」し、セキュリティ保護されているIPCチャンネルを起動し、そのアプリケーションに対するポリシーを取得してもよい。アプリケーション管理フレームワーク614は、クライアントエージェントのログイン・ディペンデンシーおよびどのようにローカルなOSサービスが使用されてもよいか、またはそれらがどのようにアプリケーション610とやりとりしてもよいかを制限するコンテインメントポリシーのうちのいくつかなど、ローカルに適用するポリシーの関係する部分を執行してもよい。
アプリケーション管理フレームワーク614は、セキュリティ保護されているIPCチャンネル612上で、クライアントエージェント604により提供されたサービスを使って、認証および内部ネットワークのアクセスを容易にしてもよい。プライベートおよび共有データボルト616(コンテナ)のキーの管理はまた、被管理型アプリケーション610とクライアントエージェント604との間の適切なインタラクションによって管理されてもよい。ボルト616は、オンライン認証後はじめて利用可能になってよく、または、ポリシーにより許可される場合、オフライン認証後、利用可能になってもよい。ボルト616を最初に使用する場合は、オンライン認証を要求してもよく、オフラインのアクセスは、オンライン認証が再度要求される前に、最長でもポリシー更新期間に限定されてもよい。
内部リソースへのネットワークアクセスは、個別の被管理型アプリケーション610からゲートウェイサーバ606を介して直接的に発生してもよい。アプリケーション管理フレームワーク614は、各アプリケーション610に代わって、ネットワークアクセスを取りまとめる責任がある。クライアントエージェント604は、オンライン認証の後に取得される適切な時間制限された二次的証明を提供することにより、これらのネットワーク接続を容易にしてもよい。リバースウェブプロキシ接続、端末同士のVPN様式のトンネル618など、ネットワーク接続の複数のモードが使用されてもよい。
メールおよびブラウザ被管理型アプリケーション610は、特別のステータスを有し、任意のラップ化アプリケーションに大略的に利用可能でないと思われるファシリティを使用してもよい。たとえば、メールアプリケーションは、完全なADログオンを必要とすることなく、延長時間に亘ってメールアプリケーションに対するExchangeへのアクセスを許可する特別なバックグラウンドネットワークアクセス機構を使用してもよい。ブラウザアプリケーションは、複数のプライベートデータボルトを使って、様々な種類のデータを区別してもよい。
このアーキテクチャは、様々な他のセキュリティ機構の組み込みを支援する。たとえば、(自身のゲートウェイサービスを含む)ゲートウェイサーバ606は、場合によっては、ADパスワードの妥当性確認をする必要がないこととなる。ADパスワードをある状況下であるユーザのための認証要素として使用するかどうかは、企業の判断次第とすることができる。様々な認証方法が、ユーザがオンラインか、またはオフライン(つまり、ネットワークに接続しているか接続していないか)かによって、使われてもよい。
ステップアップ認証は、ゲートウェイサーバ606が、強力な認証が必要な非常に機密性が高いデータに対するアクセス権を有することを許可されている被管理型ネイティブアプリケーション610を特定し、より弱い以前のレベルのログインの後、ユーザにより再認証が必要であっても、これらのアプリケーションへのアクセスは、適切な認証を行った後でのみ許可されることを確実にするという機構である。
この解決策の他のセキュリティ機構は、モバイルデバイス602上のデータボルト(data vaults)616(コンテナ)の暗号化である。ボルト616は、ファイル、データベース、および構成を含むデバイス上のデータのすべてが保護されるように暗号化されてもよい。オンラインのボルトに対して、キーは、サーバ(ゲートウェイサーバ606)に格納されてもよく、オフラインのボルトに対して、キーのローカルコピーが、ユーザパスワードにより保護されてもよい。データが、セキュリティ保護されているコンテナ616内のデバイス602上にローカルに格納される場合、最小限のAES256ビット暗号化アルゴリズムが利用されることが好ましい。
他のセキュリティ保護されているコンテナ機構もまた実装されてもよい。たとえば、アプリケーション610内部で発生するすべてのセキュリティイベントがログされ、バックエンドに報告される、ロギング機構が備えられてもよい。アプリケーション610が改ざんを検出した場合、関連付けられた暗号化キーがランダムデータで上書きされ、ユーザデータが破壊されたファイルシステム上にヒントを残さないといったデータ消去が支援されてもよい。スクリーンショット保護は、アプリケーションがどのデータもスクリーンショットに格納されないようにしてもよい他の機構である。たとえば、キーウインドウの隠されたプロパティがYESに設定されてもよい。これにより、画面に現在表示されているすべてのコンテンツが隠れ、その結果、空白のスクリーンショットとなるが、通常は、そこにコンテンツが存在するだろう。
たとえば、データをコピーするか、または外部アプリケーションへ送信することによって、任意のデータがアプリケーションコンテナ外にローカルに転送されることを防止することにより、ローカルなデータ転送が防止されてもよい。キーボードキャッシュ機構を動作させて、機密テキストフィールドのために、オートコレクト機能を無効にしてもよい。SSL証明書妥当性検証を動作可能にして、サーバSSL証明書をキーチェーンに格納する代わりに、アプリケーションがサーバSSL証明書を具体的に妥当性検証してもよい。(オフラインでのアクセスが要求される場合、)デバイス上のデータを暗号化するために使用するキーがユーザにより供給されるパスフレーズを使って生成されるように、暗号化キー生成機構を使ってもよい。オフラインアクセスが要求されない場合、ランダムに生成され、サーバ側に格納される他のキーとのXORがとられる。ユーザパスワードから生成されたキーが、その暗号学的ハッシュを生成するよりもKDF(キー導出機能、特に、PBKDF2)を使用するようにキー導出機能を動作させてもよい。暗号学的ハッシュは、ブルートフォースまたは辞書攻撃に対してキーが脆弱である。
さらに、1つまたは複数の初期化ベクトルが暗号化の方法において使用されてもよい。初期化ベクトルにより、同一の暗号化されたデータの複数のコピーが作成され、異なる暗号文の出力が生じ、その結果、反射攻撃および暗号解読攻撃の両方を防ぐことができる。これによりまた、データを暗号化するために使用された特定の初期化ベクトルが不明な場合、盗まれた暗号化キーを使っても、攻撃者による任意のデータの解読を防ぐことができることとなる。さらに、ユーザがアプリケーション内で認証をした後になってはじめてアプリケーションデータが解読される、認証後の解読を使用してもよい。他の機構は、必要なときにのみ(ディスクではなく)メモリ内に保持されてもよいメモリ内の機密データに関するものであってもよい。たとえば、ログイン証明は、ログインの後、メモリから消去され、暗号化キーおよびオブジェクティブCインスタンス変数内部の他のデータは簡単に参照されてしまうので格納されない。その代わりに、メモリは、これらのために手動で割り当てられてもよい。
ポリシーが定義した非活動期間の後、ユーザセッションが終了する、非活動時間が実装されてもよい。
アプリケーション管理フレームワーク614からのデータ漏洩は、他の方法で防止されてもよい。たとえば、アプリケーション610をバックグラウンドに置いた場合、メモリは、所定の(構成可能な)時間の後、取り除かれる。バックグラウンドされた場合、アプリケーションの最後に表示された画面のスナップショットが取られ、フォアグランド処理を早めてもよい。スクリーンショットは、守秘データを含んでいる場合があるため、消去されるべきである。
他のセキュリティ機構は、1つまたは複数のアプリケーションにアクセスするためのAD(アクティブディレクトリ)622のパスワードを使用しない、OTP(ワンタイムパスワード)620の使用に関する。場合によって、ユーザによっては、自身のADパスワードを知らない(または知ることを許可されていない)ので、これらのユーザは、SecurIDのようなハードウェアOTP(OTPは、EntrustまたはGemaltoなど様々なベンダーによって提供されてもよい)システムを使用することによってなど、OTP620を使用して認証してもよい。場合によっては、ユーザがユーザIDを使って認証した後、テキストがOTP620を有するユーザへ送信される。場合によっては、これは、単一のフィールドであるプロンプトで、オンラインでの使用のためだけに実施されてもよい。
オフラインのパスワードは、オフラインでの使用が企業ポリシーにより許可される、アプリケーション610に対するオフラインの認証のために実装されてもよい。たとえば、企業は、このような様式で、企業アプリケーションストアがアクセスされることを望む可能性がある。この場合、クライアントエージェント604は、ユーザに対して、カスタムなオフラインのパスワードを設定するように要求してもよく、ADパスワードは使用されない。ゲートウェイサーバ606は、これらの要件は変更される場合もあるが、標準的なWindows(登録商標) Serverパスワードの複雑度の要件により記載されるように、最小長さ、文字種の組合せ、パスワードの使用期間に関して、ポリシーを提供して、パスワードの基準を管理および執行してもよい。
他の機構は、(マイクロVPN機構を介して、PKIにより保護されているウェブリソースにアクセスする目的のために、)二次証明としての、あるアプリケーション610のためのクライアント側の証明書の有効化に関する。たとえば、eメールアプリケーションは、そのような証明書を利用してもよい。この場合、クライアントエージェント604からの証明書がゲートウェイサーバ606により回収され、キーチェーンにおいて使用される、ActiveSyncプロトコルを使った証明書型認証が支援されてもよい。各被管理型アプリケーションは、ゲートウェイサーバ606において定義されたラベルによって特定される、1つの関連付けられたクライアント証明書を有してもよい。
ゲートウェイサーバ606は、企業専用ウェブサービスとやりとりし、クライアント証明書の発行を支援して、関係する被管理型アプリケーションが内部PKIにより保護されたリソースから認証されるようにしてもよい。
クライアントエージェント604およびアプリケーション管理フレームワーク614を向上させ、内部PKIにより保護されたネットワークリソースから認証を受けるためのクライアント証明書の取得および使用を支援してもよい。様々なレベルのセキュリティおよび/または分離要件に適合するように、2つ以上の証明書が支援されてもよい。証明書は、メールおよびブラウザ被管理型アプリケーションにより、かつ最終的には、任意のラップ化アプリケーションにより使用されてもよい(ただし、これらのアプリケーションは、アプリケーション管理フレームワークがHTTPS要求に介在することが合理的であるウェブサービススタイル通信パターンを使用していることが条件である)。
iOS上でのクライアント証明書支援は、PKCS 12 BLOB(Binary Large Object)を各被管理型アプリケーションのiOSキーチェーン内へ、各使用期間、インポートすることに依ってもよい。クライアント証明書支援は、プライベートメモリ内のキーストレージでのHTTPSの実施を使用してもよい。クライアント証明書は、iOSキーチェーン内に決して存在することはなく、潜在的に、強力に保護されている「オンラインのみ」のデータ値以外には留まることはない。
相互SSLもまた、実装され、モバイルデバイス602が企業から認証され、その逆も認証されることを要求することによって、追加のセキュリティを提供してもよい。ゲートウェイサーバ606から認証されるための仮想スマートカードもまた、実装されてもよい。
制限付きで、かつ完全なKerberos支援が、追加の機構であってもよい。完全な支援機構は、ADパスワードまたは信用できるクライアント証明書を使って、完全なKerberosログインをAD622に対して行い、HTTPネゴシエート認証課題に対して応答するためのKerberosサービスチケットを取得する能力に関する。制限付き支援機構は、HTTPネゴシエート認証課題に応答して、(制約付き委任の対象である)Kerberosサービスチケットを取得および使用できるようにAFEEがKerberosプロトコルの遷移を引き出すことを支援する、AGEEにおける制約付き委任に関する。この機構は、リバースウェブプロキシ(別名、CVPN)モードで稼動し、かつ(HTTPSではなく)HTTP接続がVPNおよびマイクロVPNモードでプロキシされた場合、稼動する。
他の機構は、アプリケーション610が稼動していなくても、ジェイルブレイクまたはルーティングを検知したときに自動的に発生し、アドミニストレーションコンソールからプッシュ型のコマンドとして発生してもよく、リモート消去機能を含んでいてもよい、アプリケーションコンテナのロッキングおよび削除に関する。
企業アプリケーションストアおよびアプリケーションコントローラのマルチサイトアーキテクチャまたはコンフィギュレーションが支援されていてもよく、これにより、故障の場合、ユーザがいくつかの異なる場所のうち1つからサービスを受けることができる。
場合によっては、被管理型アプリケーション610は、API(例示的OpenSSL)を介して、証明書およびプライベートキーにアクセスすることが許可されてもよい。企業の信頼できる被管理型アプリケーション610は、アプリケーションのクライアント証明書およびプライベートキーを使って、特定のパブリックキー動作を行うことが許可されてもよい。アプリケーションがブラウザのような挙動をし、証明書へのアクセスが求められない場合、「私は誰」に対する証明書をアプリケーションが読み込んだ場合、アプリケーションが証明書を使って、セキュリティ保護されているセッショントークンを構築した場合、アプリケーションが重要データ(たとえば、トランザクションログ)のデジタル署名のため、または一時的なデータ暗号化のためにプライベートキー使う場合など、様々なユースケースが特定され、適切に扱われてもよい。
本発明の様々な態様を提供および/または実施するために使用される、コンピューティングアーキテクチャおよび企業モビリティ管理アーキテクチャのいくつかの実施例を説明してきたが、ここでは、複数の実施形態がより詳細に記載される。特に、上に紹介したように、本発明のいくつかの態様は、マイニング(たとえば、抽出、分析、および/または選択的に格納)されたデータを含んでいてもよいクラウド同期型データを使って、モバイルデバイス上に提供されたネイティブデスクトップから離間した他のデスクトップから、ネイティブデスクトップを(たとえば、モバイルデバイスなどのクライアントデバイス上に)提供することに大略的に関係する。
以下の説明では、1つまたは複数の実施形態に従う、どのようにデータがリモートデスクトップからマイニングされ、クラウドベースのデータストレージプラットフォームと同期され、モバイルデバイス上にネイティブデスクトップを提供する際に使用されるかを示す様々な実施例が提供される。これらの、および/または他の特徴を実装することにより、ユーザが最も必要とするであろう、および/またはユーザにより最も重要だと考えられる情報が、同期の結果、キャッシュされ、および/または他の形でユーザのモバイルデバイス上にローカルに格納され、これにより、次に、モバイルデバイスがネットワーク接続を利用できない状況下でも、この情報が、ユーザのためにカスタマイズされた方法、および/または身近な方法で提示されることが可能になってもよい。たとえば、(リモートデスクトップ上に作成されていてもよいが、同期中、モバイルデバイスにより取得されてもよい)ローカルにキャッシュされた情報は、モバイルデバイスがネットワーク接続を利用できるかどうかに拘らず、ネイティブビューイングアプリケーションを使って、モバイルデバイス上にネイティブデスクトップに提示されてもよい。
図7は、本発明の1つまたは複数の実施形態に従う、クラウド同期型データを使って、ネイティブデスクトップを提供する方法を示すフローチャートを示す。1つまたは複数の実施形態では、図7に示す方法、および/または該方法の1つまたは複数のステップは、コンピューティングデバイス(たとえば、汎用コンピューティングデバイス201)により実行されてもよい。たとえば、図7に示す方法は、1つまたは複数の仮想化サーバなどの1つまたは複数のコンピューティングデバイス上で実行および/または他の形でかかるデバイスにより提供されるデスクトップ管理サービスにより行われてもよい。そのようなデスクトップ管理サービスの実施例は、以下にさらに詳細に記載される。他の例では、図7に示す方法は、仮想マシン、ハイパーバイザ、および/またはその他により行われてもよい。さらに他の例では、図7に示す方法および/または該方法の1つまたは複数のステップは、場合によっては、(汎用コンピューティングデバイス201などの、コンピューティングデバイスの1つまたは複数の態様を実施してもよい)モバイルデバイスにより行われてもよい。他の実施形態では、図7に示す方法および/または該方法の1つまたは複数のステップは、非一時的コンピュータ読み取り可能メモリなど、コンピュータ読み取り可能媒体に格納されるコンピュータで実行可能な指示において具現化されてもよい。
ステップ705では、データは、リモートデスクトップからマイニングされる。たとえば、リモートデスクトップは、特定のオペレーティングシステムおよび/またはオペレーティングシステムの特定のインスタンスを介して提供され、および/または他の形でそれらと関連付けられてもよい、アプリケーション、ドキュメント、個人設定の集まりでもよい。そのようなリモートデスクトップからデータをマイニングする場合、この情報のいずれかおよび/またはすべては、デスクトップから特定、収集、および/または他の形で抽出され、抽出されたデータの様々な部分は、(たとえば、同期の目的のために)格納されるべきかどうかを判断するために分析され、かつ(たとえば、この分析に基づいて)格納するために選択された抽出されたデータの1つまたは複数の部分のために、(たとえば、以下により詳細に説明する同期を容易にするために)他のシステムまたはサーバ上に格納されてもよい。
場合によっては、データは、様々な情報を、デスクトップ(以下に説明するように、アプリケーションショートカット、ドキュメント、設定、および/または他のタイプの情報)から抽出、分析、および選択的に格納し、かつこの情報を(この点も以下に説明するように)クラウドベースのデータプラットフォームと同期するように構成されたソースデスクトップ上で稼動しているエージェントまたは他のアプリケーション(たとえば、プラグイン、スクリプトなど)により、(場合によっては、「ソース」デスクトップと称されてもよい)リモートデスクトップから抽出、分析、および/または選択的に格納されてもよい。他の例では、データは、サーバ上で実行されている仮想マシンおよび/またはハイパーバイザを含む、(たとえば、ソースデスクトップを提供してもよい)1つまたは複数の仮想化サーバ、および/または1つまたは複数の他のマシン上で実行される、サービス(たとえば、デスクトップ管理サービス)または他のアプリケーションにより、ソースデスクトップから抽出、分析、および/または選択的に格納されてもよい。たとえば、データは、そのようなマシン上で実行されているプロファイル管理ソフトウェアにより、ソースデスクトップから抽出、分析、および/または選択的に格納されてもよく、プロファイル管理ソフトウェアは、ユーザのネットワークプロファイルと関連付けられた情報を含んでいてもよいネットワークシェアから、ユーザ情報を引き出すように構成されてもよい。そのようなプロファイル管理ソフトウェアは、場合によっては、デスクトップ管理サービスの一部であってもよく、一方、他の場合では、プロファイル管理ソフトウェアは、以下により詳細に説明するデスクトップ管理サービスなどのデスクトップ管理サービスを提供してもよい。
場合によっては、抽出、分析、および/もしくは選択的に格納されたデータは、1つもしくは複数のアプリケーションショートカット、1つもしくは複数のドキュメント、1つもしくは複数のレジストリキー、1つもしくは複数の個人設定、または1つもしくは複数のレイアウト設定を含んでいてもよい。アプリケーションショートカットおよびドキュメントは、たとえば、最近アクセスされ、および/または使用されたアプリケーションおよびドキュメント、ならびに様々なメニューおよび/またはデスクトップに含まれる他の要素上に存在および/またはそれらを介してアクセス可能な他のアプリケーションおよびドキュメントを含んでいてもよい。さらに、レジストリキー、個人設定、およびレイアウト設定は、デスクトップの複数の異なる態様を制御し、および/またはそれらに影響を及ぼす、様々なプリファレンスおよび/または他の設定を定義してもよい。たとえば、個人設定は、デスクトップに含まれる1つまたは複数のアプリケーション(たとえば、ワードプロセッシングアプリケーション、eメールアプリケーション、インスタントメッセージアプリケーションなど)により使用されるカスタムスペルチェック用辞書を含んでいてもよい。他の実施例として、個人設定は、ユーザの好みのウェブサイトおよび/またはネットワークフォルダのためのブックマークを含んでいてもよい。
場合によっては、リモートデスクトップは、第1のオペレーティングシステムと関連付けられてもよく、(たとえば、下に説明するように、クライアントデバイス上に提示されてもよい)ネイティブデスクトップは、第1のオペレーティングシステムとは異なる第2のオペレーティングシステムと関連付けられてもよい。たとえば、リモートデスクトップは、(たとえば、仕事用コンピュータ上のユーザにより頻繁にアクセスされてもよい)WINDOWS(登録商標)デスクトップであってもよく、ネイティブデスクトップは、(たとえば、以下に説明するように、ユーザのモバイルデバイス上に提示されてもよい)iOSまたはANDROID(登録商標)デスクトップであってもよい。
ステップ710では、データは、クラウドベースのデータストレージプラットフォームと同期される。たとえば、ステップ710では、(たとえば、ステップ705で抽出、分析、および/または選択的に格納された)データは、Citrix SystemsによるSHAREFILEなどのクラウドベースのデータストレージプラットフォームに対してアップロードされ、および/または他の形で同プラットフォームとの間で送受信されてもよい。エージェント、アプリケーション、またはサービス(たとえば、デスクトップ管理サービス)は、たとえば、抽出、分析、および/または選択的に格納されたデータをクラウドベースのストレージプラットフォームと同期させ、および/または(たとえば、データをクラウドベースのストレージプラットフォームとの間で送受信し、および/またはそのようなデータをクラウドベースのストレージプラットフォームとの間で送受信させることにより)そのような同期を発生させてもよい。以下に示すように、この同期は、(たとえば、クラウドベースのデータストレージプラットフォームに接続、および/またはそこからデータをダウンロードすることにより)他のデバイスおよび/またはシステムがデータを取得できるようにしてもよい。
いくつかの実施形態では、クラウドベースのデータストレージプラットフォームを使って、抽出、分析、および/または選択的に格納されたデータをモバイルデバイスと同期することに加えて、および/またはそれに代えて、(たとえば、以下に説明するように)、追加のおよび/または代替の同期技術および/またはサービスを利用してもよい。たとえば、場合によっては、リモートデスクトップからマイニングされたデータは、ICAチャンネル上で、モバイルデバイスと同期され、その後、(たとえば、以下に説明するように)ネイティブデスクトップに提示する際に使用するためにモバイルデバイス上にキャッシュされてもよい。データがモバイルデバイス上で同期および/またはかかるデバイス上でキャッシュされる追加および代替の方法が以下により詳細に記載される。
ステップ715では、ネイティブデスクトップが、同期されたデータを使って、(たとえば、モバイルデバイスであってもよい)クライアントデバイス上に提示される。そのようなネイティブデスクトップは、たとえば、モバイルデバイス上で実行するレシーバソフトウェアにより管理されるネイティブにレンダリングされたデスクトップを備えてもよく、同期されたデータは、モバイルデバイス上にローカルにキャッシュされ、かつネイティブデスクトップをレンダリングする際、ならびに/またはリモートデスクトップから抽出、分析、および/もしくは選択的に格納されたアプリケーション、ドキュメント、および/もしくは他の情報へアクセスする際に使用されてもよい。たとえば、リモートデスクトップが複数のドキュメント、アプリケーションショートカット、およびあるデスクトップバックグラウンド画像を含んでいた場合、(たとえば、クラウドベースのデータストレージプラットフォームから取得した同期されたデータを使用した結果、)ネイティブデスクトップも同じドキュメント、アプリケーションショートカット、およびデスクトップバックグラウンド画像を含んでいてもよい。
さらに、以下により詳細に記載するように、モバイルデバイスのユーザは、(たとえば、ネイティブドキュメントビューイングアプリケーション、ネイティブワードプロセッシングアプリケーションなど)(もし、たとえば、そのようなアプリケーションが利用可能であれば)モバイルデバイス上でネイティブビューイングアプリケーションを使って、および/または(もし、たとえば、ネイティブビューイングアプリケーションが利用不可であれば)仮想化型、遠隔型アプリケーションを使って、これらのドキュメントおよび/または他のファイルとやりとりできてもよい。
図7に示す方法が(たとえば、リモート/ソースデスクトップを提供する1つまたは複数の仮想化サーバ上で実行されてもよい)デスクトップ管理サービスにより行われる場合は、そのようなデスクトップ管理サービスにより、たとえば、モバイルデバイスがクラウドベースのストレージプラットフォームにアクセスするように構成することにより、ネイティブデスクトップが、モバイルデバイス上に提示され、同期されたデータをモバイルデバイス上にダウンロード、格納、および/または維持してもよい。さらに、ネイティブデスクトップをモバイルデバイス上に提示させる際、デスクトップ管理サービスは、(たとえば、ネイティブデスクトップを閲覧および/または同デスクトップとやりとりするための要求を受信したことに対応して)デスクトップをユーザに提示する際に、同期されたデータを使用するようにモバイルデバイスをさらに構成してもよい。
このようにモバイルデバイスを構成する際、デスクトップ管理サービスは、たとえば、モバイルデバイスの1つまたは複数の設定および/またはモバイルデバイス上で実行されてもよい1つまたは複数のソフトウェアアプリケーションを、確立および/または変更してもよい。たとえば、モバイルデバイスを構成する際、デスクトップ管理サービスは、モバイルデバイス上にインストールされ、および/または他の形でかかるデバイス上で稼動するよう構成されたレシーバアプリケーションの1つまたは複数の設定を確立および/または変更してもよく、これらの設定は、(たとえば、スケジュールに沿って周期的になど、ユーザがデスクトップを閲覧することを要求した場合、オンデマンドで)レシーバアプリケーションが、クラウドベースのストレージプラットフォームにアクセスし、クラウドベースのストレージプラットフォームにより維持された同期されたデータを取得および/またはローカルにキャッシュできるようになり、および/またはそのようにさせられてもよい。
特に、マイニングされたデータがリモートデスクトップとクラウドストレージプラットフォームとの間で同期されることに加えて、データはまた、クラウドストレージプラットフォームとリモートデスクトップの特定のユーザに連結された1つまたは複数のモバイルデバイスとの間で同期されてもよい。そのようなデータは、たとえば、モバイルデバイスにより、オンデマンドで(たとえば、ユーザがモバイルデバイス上のレシーバアプリケーションを開くか、または同アプリケーションに切り替えたとき)ダウンロードされてもよく、および/または周期的に(たとえば、毎時、毎日などスケジュールに沿って)モバイルデバイスに提供されてもよい。場合によっては、1つのデバイスまたはデスクトップ上で同期されたデータに対して変更を加えられた場合、すべての同期されたデバイスが、本開示の様々な態様に従って、ネイティブデスクトップの同期されたデータの最新版を提示できるようにクラウドストレージプラットフォームおよび/またはデスクトップ管理サービスは、(たとえば、接続が利用可能、および/または確立できる際に、)変更を他のデバイスに対してプッシュしてもよい。
1つまたは複数の実施形態では、(たとえば、ステップ715において)モバイルデバイス上に提示されるネイティブデスクトップは、ユーザおよび/またはデバイス上で実行するオペレーティングシステムにより使用されているデバイスのタイプに依存してもよい。
たとえば、モバイルデバイスがiOSオペレーティングシステムを稼動している場合、モバイルデバイス上に提示されるネイティブデスクトップは、ネイティブデスクトップの見た目および雰囲気がiOSオペレーティングシステムおよび/またはデバイス上で実行されている他のアプリケーションと一貫性があり、および/またはシームレスであるように、ある特徴を有してもよい。同様に、モバイルデバイスがANDROID(登録商標)オペレーティングシステムを稼動している場合、モバイルデバイス上に提示されるネイティブデスクトップは、ネイティブデスクトップの見た目および雰囲気がANDROID(登録商標)オペレーティングシステムおよび/またはデバイス上で実行されている他のアプリケーションと一貫性があり、および/またはシームレスであるように、ある特徴を有してもよい。他の場合では、ネイティブデスクトップは、デバイスで使用されている(たとえば、iOSおよびANDROID(登録商標)以外の)異なるオペレーティングシステムに基づいて、モバイルデバイス上に提示されてもよい。さらに、配置によっては、ネイティブデスクトップが提示されるデバイスは、モバイルデバイスでなくてもよく、むしろデバイスは、テザー型デバイス、有線コンピュータデバイス、および/またはその他であってもよい。
たとえば、場合によっては、ネイティブデスクトップをモバイルデバイス上に提示させることは、ネイティブデスクトップの少なくとも1つのネイティブアプリケーションを使って、同期されたデータのうち少なくとも一部を表示させることを含んでいてもよい。たとえば、同期されたデータがMICROSOFT WORDドキュメントを含み、かつモバイルデバイス上に提示されるネイティブデスクトップがAPPLE iOSデスクトップである場合、同期されたデータを提示させることは、APPLE PAGESまたはモバイルデバイス上にネイティブに実行および/またはレンダリングされる他のワードプロセッシングアプリケーションにドキュメントを提示することを含んでいてもよい。
他の場合では、ネイティブデスクトップをモバイルデバイス上に提示させることは、同期されたデータのうち少なくとも一部用のネイティブビューイングアプリケーションが利用不可能な場合、遠隔型アプリケーションをモバイルデバイス上に提示させることを含んでいてもよい。たとえば、同期されたデータは上の実施例のようにMICROSOFT WORDドキュメントを含むが、ネイティブデスクトップおよび/またはモバイルデバイスはドキュメントを表示および/または編集できるアプリケーションを含まない場合、遠隔で実行されるアプリケーションが、(たとえば、モバイルデバイスがネットワーク接続を利用可能な場合、)モバイルデバイスに切り替えられ、および/または他の形でかかるデバイス上に提示され、ドキュメントにアクセス可能になり、および/または編集できるようになってもよい。よって、この実施例では、MICROSOFT WORDのリモートセッションが、モバイルデバイス上に表示および/または他の形で提示されてもよい。
リモートセッションは、たとえば、上述の1つまたは複数の態様の仮想化技術を使って、(たとえば、ネイティブに実行および/またはレンダリングされたアプリケーションではない)リモートサーバにより提供されたMICROSOFT WORDアプリケーションの仮想化であってもよい。このように、(たとえば、Windows(登録商標)デスクトップから)遠隔で実行されるアプリケーションをネイティブデスクトップ上に呼び出すことが可能であり、その結果、ユーザは、ネイティブアプリケーションと遠隔型アプリケーションとの間を、シームレスに、かつ透過的に切り替えられるようになり、向上したシームレスなユーザエクスペリエンスを提供できる。
いくつかの実施形態では、ネイティブデスクトップは、モバイルデバイス上にインストールされ、および/またはかかるデバイスにより実行されるレシーバアプリケーションを使って、モバイルデバイス上に提示されてもよい。他の場合では、アプリケーションストアからユーザによりダウンロードおよび/またはインストールされる1つまたは複数のアプリケーションを含む、任意の望ましい(複数の)ソフトウェアアプリケーションを、ネイティブデスクトップを提示する際に使用してもよい。
ステップ720では、バックグラウンド接続がモバイルデバイスと、リモートデスクトップを提供するように構成された第2のデバイス(仮想マシンまたはハイパーバイザなど)との間に確立される。たとえば、リモートデスクトップがリモートのWindows(登録商標)デスクトップであり、ネイティブデスクトップがモバイルデバイス上に提示されるiOSまたはANDROID(登録商標)デスクトップの場合、モバイルデバイス(および/またはかかるデバイス上で実行されているレシーバソフトウェア)は、ネイティブデスクトップが、最初、モバイルデバイスにレンダリング、表示、および/または他の形で提示された後、リモートのWindows(登録商標)デスクトップへの接続を確立してもよい。これにより、たとえば、モバイルデバイスのユーザが自身のドキュメントおよびアプリケーションにアクセスおよび/またはこれらを閲覧するために待たなければならない時間量が(たとえば、ネイティブデスクトップが利用不可能な場合にユーザが待たなければならない時間量、およびリモートデスクトップがロードおよび表示されるまでユーザが待たなければならない時間量に対して)削減されてもよい。換言すれば、ネイティブデスクトップが最初に提示された後、バックグラウンドでリモートデスクトップに対する接続を確立することにより、ユーザは、自身のドキュメント、アプリケーション、および他のデータに対して即時アクセスが可能であると認識してもよい。
ステップ725では、クライアントデバイス上で同期されたデータに対してなされた変更は、クラウドベースのデータストレージプラットフォームと同期される。たとえば、同期されたデータの少なくとも一部が(たとえば、ネイティブビューイングアプリケーションおよび/またはネイティブデスクトップにおいて、データの少なくとも一部をユーザの編集および/または他の形で変更した結果として)モバイルデバイス上で変更される場合、これらの変更がリモートデスクトップ(たとえば、リモートのWindows(登録商標)デスクトップ)上に反映するように、変更のうちいずれかおよび/またはすべてがクラウドベースのデータストレージプラットフォームと同期されてもよい。たとえば、ユーザがモバイルデバイス上のネイティブワードプロセッシングアプリケーションを利用して、ネイティブデスクトップに含まれるドキュメントを編集する場合、ユーザが後でリモートデスクトップ上のドキュメントにアクセスした場合、ユーザが保存したドキュメントに対する変更は、モバイルデバイス上のドキュメントになされた変更が反映されるようにクラウドベースのデータストレージプラットフォームと同期されてもよい。
いくつかの実施形態では、(たとえば、クラウドベースのデータストレージプラットフォームにより維持された)マイニングおよび同期されたデータおよび/または(たとえば、モバイルデバイス上に維持された)このデータのローカルにキャッシュされたコピーは、複数の異なるセキュリティ手段で安全が確保され、ネットワークアドミニストレータおよび/または他のユーザがデータに対するアクセスおよび/または編集の制御を行うことができる。たとえば、場合によっては、ロケーションベースのセキュリティ手段は、ネットワークアドミニストレータにより構成および/または実施され、1つまたは複数の特定の場所(たとえば、特定のオフィスビル内など、仕事の現場)では、モバイルデバイスのユーザがローカルにキャッシュされデータに対して、アクセス、オープン、閲覧、および/または編集することができ、他の場所(たとえば、モバイルデバイスのユーザの自宅)では、そのようなデータに対して、アクセス、オープン、閲覧、および/または編集することが制限されてもよい。同様の制限は、たとえば、どのアプリケーションがネイティブデスクトップにおいて実行され、および/またはネイティブデスクトップを介して提供されるかを制御および/または制限するよう構成および/または実施されてもよい。さらに/あるいは、他の設定が、ネイティブデスクトップにおけるアプリケーションの実行および/または含有を、(たとえば、アプリケーションストアからモバイルデバイス上にインストールされてもよい任意のアプリケーションではない)1つまたは複数の、特定のセキュリティ保護されているモバイルアプリケーションに制御および/または制限するように構成および/または実施されてもよい。
(たとえば、クラウドベースのデータストレージプラットフォームにより維持される)マイニングおよび同期されたデータおよび/または(たとえば、クライアントデバイス上に維持される)このデータのローカルにキャッシュされたコピーがセキュリティ保護されている場合には、1つまたは複数のポリシーが定義、適用、執行、および/または他の形で使用され、どのようにデータがアクセスおよび/または使用されるかが制御されてもよい。
そのようなポリシーは、たとえば、クライアントデバイスに関連付けられた状態情報(state information)という点で評価されてもよいクライアントデバイスの現在のコンテキストにより、許可および/または禁止されたデータの使用を定義してもよい。そのような状態情報は、たとえば、どのアプリケーションおよび/またはファイルがクライアントデバイス上にインストールおよび/または使用されているか、どこにクライアントデバイスが位置しているか、および/またはどの(複数の)ネットワークにクライアントデバイスが接続されているかに関する情報を含んでいてもよい。この状態情報は、たとえば、クライアントデバイス上で稼動する管理エージェントによりモニタされ、この状態情報をモニタすることに加え、管理エージェントは、また、(たとえば、1つまたは複数のクライアントデバイスの機能を選択的に有効化および/または無効化し、クライアントデバイス上のローディングされたアプリケーションの1つまたは複数の機能を選択的に有効化および/または無効化し、クライアントデバイス上の1つまたは複数の特定の情報リソースへのアクセスを選択的に有効化および/または無効化することなどにより)ポリシー遵守を執行してもよい。
いくつかの実施形態では、1つまたは複数のポリシーは、ネイティブデスクトップの挙動を制御するように構成されてもよい。特に、1つまたは複数のポリシーは、たとえば、クライアントデバイスと関連付けられた状態情報に基づいて、クライアントデバイス上に提示されるネイティブデスクトップの挙動に対して、制御し、セキュリティ保護性を確保し、および/または他の形で影響を与えるように構成されてもよい。たとえば、クライアントデバイス上で適用、執行、および/または他の形で使用されてもよい1つまたは複数のポリシーのうち少なくとも1つのポリシーは、クライアントデバイスと関連付けられた状態情報によって、マイニングおよび同期されたデータをローカルにキャッシュおよび/または他の形で格納するクライアントデバイスの能力を選択的に無効化および/または有効化するように構成されてもよい。
他の実施例として、クライアントデバイス上で適用、執行、および/または他の形で使用されてもよい1つまたは複数のポリシーのうち少なくとも1つのポリシーは、クライアントデバイスと関連付けられた状態情報によって、クライアントデバイス上の1つまたは複数のキャッシュされたファイルにアクセスするために認証が必要かどうかを制御するように構成されてもよい。他の実施例として、クライアントデバイス上で適用、執行、および/または他の形で使用されてもよい1つまたは複数のポリシーのうち少なくとも1つのポリシーは、マイニングおよび同期されたデータを閲覧および/または編集する際に、クライアントデバイスと関連付けられた状態情報によって、ネイティブデスクトップが1つまたは複数のネイティブエディタおよび/または他のネイティブアプリケーションを使用することが許可されているかどうかを制御するように構成されてもよい。他の実施例として、クライアントデバイス上で適用、執行、および/または他の形で使用されてもよい1つまたは複数のポリシーのうち少なくとも1つのポリシーは、マイニングおよび同期されたデータを閲覧および/または編集する際に、クライアントデバイスと関連付けられた状態情報によって、ネイティブデスクトップが1つまたは複数の遠隔型アプリケーションを使用することが許可されているかどうかを制御するように構成されてもよい。他の実施例として、クライアントデバイス上で適用、執行、および/または他の形で使用されてもよい1つまたは複数のポリシーのうち少なくとも1つのポリシーは、クライアントデバイスと関連付けられた状態情報によって、クライアントデバイス上の1つまたは複数の特定のアプリケーションが、マイニングおよび同期されたデータに対して、閲覧、編集、および/または他の形でアクセスすることを選択的に許可および/または禁止するように構成されてもよい。
どのようにモバイルデバイス上のネイティブデスクトップがいくつかの実施形態でセキュリティ保護されるか、ならびにいくつかの実施形態で使用されてもよい追加のコンピューティングシステムのアーキテクチャおよびコンピューティング環境は、2013年3月29日に出願され、参照により本明細書にあらゆる目的でその全体が組み込まれる、「SYSTEMS AND METHODS FOR ENTERPRISE MOBILITY MANAGEMENT」と題された米国特許出願第61/806,577号にさらに詳細に説明されている。
図8〜図12は、本発明の1つまたは複数の実施形態に従うクラウド同期型データを使って、ネイティブデスクトップを提供する際に、モバイルデバイス上に表示されてもよいユーザインターフェースを描いている。
図8は、モバイルデバイス(たとえば、スマートフォン、タブレット型コンピュータ、任意の他のタイプのモバイル型コンピューティングデバイスなど)にネイティブにレンダリングおよび表示されてもよいネイティブデスクトップ800を含むユーザインターフェースの実施例を示す。図8から分かるように、ネイティブデスクトップ800は、プログラム、ドキュメント、ならびにアクセスおよび/または表示されてもよい他のファイルのメニューをユーザが閲覧することを可能にするユーザ選択型ボタンであってもよい、スタートボタン805を含んでいる。1つまたは複数の実施形態では、上述した実施例のように、メニューのコンテンツは、抽出、分析、および/または選択的に格納され、その後、同期されたリモートデスクトップ(たとえば、リモートのWindows(登録商標)デスクトップ)内に含まれるスタートメニューのコンテンツを反映してもよい。さらに、ネイティブデスクトップ800は、1つまたは複数のドキュメント810、815、820および825を含み、(たとえば、上述で実行された同期の結果として)リモートデスクトップ内に含まれるドキュメントを同様に反映してもよい。
1つまたは複数の実施形態において、ネイティブデスクトップ800はまた、(ネイティブデスクトップが同期されるリモートデスクトップをユーザが閲覧することを可能にするユーザ選択型ボタンであってもよい)リモートデスクトップボタン830と、(リモートデスクトップに対するバックグラウンド接続が確立されたかどうかを示してもよい)接続ステータスインジケータ835と、(他のウインドウが表示されている場合、ユーザがデスクトップを閲覧することを可能にするユーザ選択型ボタンであってもよい)閲覧デスクトップボタン840と、(ユーザが様々なアプリケーション間で、および/または様々なファイル間で、ディスプレイを切り替えることを可能にするユーザ選択型ボタンであってもよい)アプリケーション切替ボタン845と、を含む、複数の他のボタンおよびインジケータを含んでいる。
図9は、ネイティブデスクトップ900の他の実施例を示す。図9から分かるように、選択されているスタートボタン905に基づいて、様々なアプリケーション、ドキュメント、および/または他のファイルを含むメニュー910が表示されている。1つまたは複数の実施形態では、メニュー910のコンテンツは、ネイティブデスクトップ900が同期されたリモートデスクトップに含まれる同様のメニューのコンテンツと対応してもよい。たとえば、上述のデータマイニングおよび同期技術を使って、(たとえば、リモートのWindows(登録商標)デスクトップであってもよい)リモートデスクトップ内のユーザのスタートメニューのコンテンツは、ネイティブデスクトップ900において提示され、ユーザは、モバイルデバイス上の身近な方法で、スタートメニューに含まれるアプリケーション、ドキュメント、および/または他のファイルに対して、アクセスおよび/または閲覧ができるようになってもよい。
図10は、ネイティブビューイングアプリケーションが表示されるユーザインターフェース1000を示す。図10から分かるように、ユーザインターフェース1000は、(たとえば、上述のデータマイニングおよび同期技術を使って)モバイルデバイス上のネイティブデスクトップと同期されているドキュメントのコンテンツを含んでいる。さらに、ユーザインターフェース1000は、選択された場合、メニュー1010を表示させるメニューボタン1005を含んでいてもよい。そして、メニュー1010は、モバイルデバイスのユーザがドキュメントに関する様々なアクションを行えるようにする複数のオプション1015、1020、1025を含んでいてもよい。たとえば、メニュー1010は、選択された場合、モバイルデバイスに、ネイティブビューイングアプリケーションにドキュメントを表示することから遠隔型アプリケーションにドキュメントを提示するように切り替えさせてもよいオープンアプリケーションオプション1015を含んでいてもよい。さらに、メニュー1010は、ユーザに1人または複数の受信者に対してドキュメントを送信することを許可してもよいファイル送信オプション1020、およびユーザに1人または複数の受信者とドキュメントへのリンクを共有することを許可してもよいコピーリンクオプション1025を含んでいてもよい。
図11は、ドキュメントが遠隔型アプリケーションに提示されているユーザインターフェース1100を示す。特に、ユーザインターフェース1100は、ユーザが前の実施例のメニュー1010のオープンアプリケーションオプション1015を選択することに応答して、表示される。この選択に基づいて、モバイルデバイスは、図11から分かるように、ドキュメントに対して遠隔型アプリケーションを提示してもよい。
図12は、ネイティブデスクトップ1200の他の実施例を示す。図12から分かるように、モバイルデバイスのユーザがアプリケーション切替ボタン1205を選択することに基づいて、アプリケーション切替メニュー1210が表示されている。さらに、アプリケーション切替メニュー1210は、複数のアイコン1215および1220を含み、これらのアイコンの各々は、ネイティブデスクトップ1200を介してアクセスできる様々なドキュメントに対応してもよい。場合によっては、ドキュメントおよび/またはアプリケーション切替メニュー1210に含まれてもよいアプリケーションショートカットのすべては、ローカルで実行および/またはネイティブにモバイルデバイス上にレンダリングされるドキュメントおよび/またはアプリケーションに対応してもよい。他の場合では、ドキュメントおよび/またはアプリケーション切替メニュー1210に含まれてもよいアプリケーションショートカットの一部またはすべては、遠隔で実行およびモバイルデバイス上に単に表示されるドキュメントおよび/またはアプリケーションに対応してもよい。
図13は、本発明に説明される1つまたは複数の実施形態に従った、クラウド同期型データを使ってネイティブデスクトップを提供するシステム1300の一実施例を描写している。図13から分かるように、システム1300は、仮想化サーバ1305と、1つまたは複数のクラウドサーバ1335と、クライアントデバイス1345と、を含んでいる。いくつかの実施形態では、システム1300は、ここで説明するものに代えて、および/またはそれに加えて、他の要素を含んでいてもよい。たとえば、システム1300は、複数の仮想化サーバおよび/または複数のクライアントデバイスを含んでいてもよい。
1つまたは複数の配置において、仮想化サーバ1305は、汎用コンピューティングデバイス201の1つまたは複数の態様を実施してもよい。たとえば、仮想化サーバ1305は、たとえば、仮想化サーバ1305に、様々な指示を受信、格納、および/または実行させることを可能にしてもよい1つもしくは複数のプロセッサ、メモリ、および/または他のコンポーネントを含んでいてもよい。さらに/あるいは、仮想化サーバ1305は、仮想化サーバ301の1つまたは複数の態様を実施してもよい。
いくつかの実施形態では、仮想化サーバ1305は、たとえば、本開示の1つまたは複数の態様に従って、モバイルデバイスのユーザによりアクセスおよび/または使用されてもよいリモートデスクトップ1310を含む、1つまたは複数の仮想デスクトップのための情報に対する、アクセスおよび/または格納を提供してもよい。仮想化サーバ1305はまた、(たとえば、仮想化サーバ1305にデスクトップ管理サービス1315を提供させるコンピュータ読み取り可能指示を格納および/または実行することにより、仮想化サーバ1305により提供されてもよい)デスクトップ管理サービス1315を提供してもよい。
いくつかの実施形態では、デスクトップ管理サービス1315は、あるタスクを実行、および/または本開示の様々な態様を簡易にしてもよい他の機能を提供してもよい、様々なエージェントを含んでいてもよい。たとえば、デスクトップ管理サービス1315は、データマイニングエージェント1320と、同期エージェント1325と、管理エージェント1330と、を含んでいてもよい。他の実施形態では、ここで説明したものに代えて、および/またはそれに加えて、デスクトップ管理サービス1315は、他のエージェントおよび/または他の要素を含んでいてもよい。
配置によっては、データマイニングエージェント1320は、リモートデスクトップ1310を含む1つまたは複数の仮想デスクトップから情報を特定、収集、および/または抽出してもよい。さらに、データマイニングエージェント1320は、特定、収集、および/または抽出された情報を分析して、そのような情報を、同期を目的として格納するべきかどうかを判別してもよい。データマイニングエージェント1320は、また、分析に基づいて格納するように選択された情報の部分を格納してもよい。たとえば、データマイニングエージェント1320は、仮想化サーバ1305により維持され、および/または同サーバにアクセス可能である1つもしくは複数のデータベース内のこの情報のいずれかおよび/またはすべてをローカルに格納してもよい。さらに、上述したように、リモートデスクトップ1310などの仮想デスクトップからデータマイニングエージェント1320により収集および/または抽出されてもよい情報のタイプは、アプリケーションショートカット、ドキュメント、レジストリキー、個人設定、レイアウト設定、および他のタイプの情報を含んでいてもよい。
配置によっては、同期エージェント1325は、データマイニングエージェント1320により格納された情報をクラウドベースのストレージプラットフォーム1340などのクラウドベースのストレージプラットフォームに対して、アップロードしてもよい。このアップロードにより、本開示の様々な態様に従って、たとえば、他のデバイスおよび/または他のシステムは、ネイティブデスクトップを提示する際、使用するための、データマイニングエージェント1320により格納される情報を取得できてもよい。さらに、同期エージェント1325は、クラウドベースのストレージプラットフォーム1340を使って、情報を受信および/または他の形で情報を送受信し、データマイニングエージェント1320により格納された情報が最新であることを確実にする。特に、他のデバイス上のこの情報に変更が加えられたとき、かつそのような変更がクラウドベースのストレージプラットフォーム1340にそのとき格納された情報に反映されたとき、他のシステム上になされた任意の変更が仮想化サーバ1305により提供される仮想デスクトップ1310において反映されるように、変更および/または更新された情報が同期エージェント1325によりダウンロードされてもよい。
配置によっては、管理エージェント1330は、ネイティブデスクトップをクライアントデバイス1345などの、1つまたは複数のクライアントデバイス上に提示させてもよい。ネイティブデスクトップをクライアントデバイス上に提示させる際、管理エージェント1330は、たとえば、クライアントデバイス(および/またはクライアントデバイス上でロードおよび/または実行される1つまたは複数のソフトウェアアプリケーション)を構成して、その結果、デバイス(および/またはデバイス上のアプリケーション)が、データマイニングエージェント1320により格納および/または同期エージェント1325によりクラウドベースのストレージプラットフォーム1340と同期されてもよい情報を使って、ネイティブデスクトップを提示できるようになってもよい。
1つまたは複数の配置において、1つまたは複数のクラウドサーバ1335は、汎用コンピューティングデバイス201の1つまたは複数の態様を実施してもよい。たとえば、1つまたは複数のクラウドサーバ1335の各々は、たとえば、各サーバに、様々な指示を受信、格納、および/または実行させることを可能にしてもよい1つまたは複数のプロセッサ、メモリ、および/または他のコンポーネントを含んでいてもよい。
いくつかの実施形態では、1つまたは複数のクラウドサーバ1335は、クラウドベースのストレージプラットフォーム1340を提供してもよい。たとえば、1つまたは複数のクラウドサーバ1335は、クラウドベースのストレージプラットフォーム1340と関連付けられたデータを格納し、クラウドベースのストレージプラットフォーム1340と関連付けられた認証、暗号化、および他の機能などの、他の機能を提供してもよい。
いくつかの実施形態では、クラウドベースのストレージプラットフォーム1340は、1つもしくは複数の特定の組織または他のエンティティと関連付けられてもよい様々な企業ユーザを含む、様々なユーザに対して、データストレージ、ファイル共有、および他の機能を提供してもよい。場合によっては、クラウドベースのストレージプラットフォーム1340は、企業リソース504と同様の企業リソースであってもよく、モバイルコンピューティングサービスを(たとえば、従業員、契約企業、メンバー、アフィリエイト、認証ユーザ、および/または他のエンティティへ)提供する際、組織または他のエンティティによりデプロイされた企業モビリティアーキテクチャの一部であってもよい。
1つまたは複数の配置において、クライアントデバイス1345は、汎用コンピューティングデバイス201の1つまたは複数の態様を実装してもよい。たとえば、クライアントデバイス1345は、たとえば、クライアントデバイス1345に、様々な指示を受信、格納、および/または実行させることを可能にしてもよい1つまたは複数のプロセッサ、メモリ、および/または他のコンポーネントを含んでいてもよい。場合によっては、クライアントデバイス1345は、スマートフォン、タブレット型コンピュータ、または他のタイプのモバイル型コンピューティングデバイスなどのモバイルデバイスであってもよい。
いくつかの実施形態では、クライアントデバイス1345は、(たとえば、コンピュータ読み取り可能指示を格納および/または実行することによって、)同期エージェント1350と、キャッシュ1335と、レシーバアプリケーション1360と、を含んでもよく、および/または提供してもよい。配置によっては、同期エージェント1350は、1つまたは複数のクラウドサーバ1355に接続してもよく、クラウドベースのストレージプラットフォーム1340に対して、情報をダウンロード、情報をアップロード、および/または情報を送受信してもよい。したがって、1つまたは複数のクラウドサーバ1335から同期エージェント1350により取得された情報は、リモート仮想デスクトップ1310からマイニングされた情報および/または他の情報を含んでいてもよい。さらに、同期エージェント1350は、クライアントデバイス1345上のローカルキャッシュ1355においてクラウドベースのストレージプラットフォーム1340から取得された情報を格納してもよい。
配置によっては、レシーバアプリケーション1360は、クライアントデバイス1345上でロードおよび/またはクライアントデバイス1345により実行されるソフトウェアアプリケーションであってもよい。レシーバアプリケーション1360は、たとえば、ネイティブデスクトップ1365を提供してもよく、場合によっては、同期エージェント1350によりキャッシュ1355に格納および/または他の形でリモートデスクトップ1310から取得された情報を使って、ネイティブデスクトップ1365は、レシーバアプリケーション1360により提示されてもよい。キャッシュ1355に格納された情報を使って、ネイティブデスクトップ1365を提示することにより、クライアントデバイス1345と、仮想化サーバ1305および/または1つもしくは複数のクラウドサーバ1335との間でネットワーク接続を確立できない場合であっても、レシーバアプリケーション1360は、クライアントデバイス1345のユーザがネイティブデスクトップ1365に対して、閲覧および/またはやりとりできるようにしてもよい。そのようなネットワーク接続が確立可能なときに、レシーバアプリケーション1360はまた、ネイティブデスクトップ1365をクライアントデバイス1345のユーザに提供する際に、リモート仮想デスクトップ1310とデータを直接送受信してもよい。
図13では、同期エージェント1350がレシーバアプリケーション1360とは別要素として示される一方、同期エージェント1350は、他の配置では、レシーバアプリケーション1360に組み込まれていてもよく、レシーバアプリケーション1360自身がクラウドベースのストレージプラットフォーム1340に対して、接続および/またはデータを送受信して、ネイティブデスクトップ1365を提示する際、レシーバアプリケーション1360により使用されてもよい情報を含む情報を同期してもよい。
図14〜図16は、本発明の1つまたは複数の実施形態に従う、コンピューティングデバイスにネイティブデスクトップを提示する様々な方法を示すフローチャートである。特に、図14〜図16に示すフローチャートは、異なる配置においてネイティブデスクトップを提供する際に、モバイルデバイスにより実行されてもよいステップを示している。例示の目的のため、これらのフローチャートにおいて示される方法は、図13に示すシステムのアーキテクチャと関連して説明される。しかしながら、他の実施形態では、これらのフローチャートに示される方法は、追加のおよび/または代替のシステムのアーキテクチャと関連して行われてもよいことを理解されたい。
図14に示す方法において、モバイルデバイスは、リモートデスクトップの他の態様をキャッシュすることなく、リモートデスクトップの再現をローカルにキャッシュし、その後、ネイティブデスクトップを提示する際、ローカルにキャッシュされたデータを使用してもよい。さらに、図14に示す方法において、モバイルデバイスは、クラウドベースのストレージプラットフォームの関与なしにリモートデスクトップの再現をローカルにキャッシュしてもよい。
特に、方法は、レシーバアプリケーションが起動されるステップ1405で開始される。たとえば、ステップ1405では、クライアントデバイス1345は、レシーバアプリケーション1360を、開始し、開き、および/または他の形で実行を開始してもよい。場合によっては、レシーバアプリケーション1360は、クライアントデバイス1345上の同期エージェント1350により開始されてもよく、レシーバアプリケーション1360に(たとえば、キャッシュ1355内に格納されたデータと同期するために)リモートデスクトップ1310に接続および/またはデータの送受信をさせてもよい。レシーバアプリケーション1360は、たとえば、クライアントデバイス1345と仮想化サーバ1305との間のネットワーク接続が利用可能になるときはいつでも自動的に、および/または1つもしくは複数の他の基準に基づいて、スケジュール通り、周期的に開始されてもよい。
ステップ1410では、クライアントデバイス1345は、仮想化サーバ1305への接続を確立する。特に、クライアントデバイス1345は、仮想化サーバ1305に接続して、リモートデスクトップ1310からデータを抽出および格納してもよい。
ステップ1415では、クライアントデバイス1345は、リモートデスクトップ1310の再現をキャッシュする。(たとえば、ステップ1415でキャッシュされてもよい)リモートデスクトップの再現は、リモートデスクトップおよび/もしくはデスクトップからアクセス可能な1つもしくは複数のメニューに含まれたファイルおよび/もしくはフォルダの1つもしくは複数の名前、これらのファイルおよび/もしくはフォルダのための1つもしくは複数のアイコン、アイコンおよび/もしくはメニューの配置および/もしくはレイアウトを定義する情報、1つもしくは複数のデスクトップのバックグラウンド、ならびに/またはリモートデスクトップと関連付けられた他のメタデータを含んでいてもよい。この情報のいずれかおよび/またはすべては、ステップ1415で、クライアントデバイス1345により、レシーバアプリケーション1360とリモートデスクトップ1310との間で確立された接続(たとえば、ICAチャンネルであってもよい)上でダウンロードされてもよい。さらに、クライアントデバイス1345は、レシーバアプリケーション1360がクローズされた後、および/またはクライアントデバイス1345と仮想化サーバ1305との間の接続が切断された後でも、キャッシュ1355内にリモートデスクトップ1310の再現を格納してもよい。
ステップ1420では、クライアントデバイス1345は、ステップ1415でキャッシュされたリモートデスクトップ1310の再現に基づいてネイティブデスクトップを提示する。たとえば、ステップ1420では、レシーバアプリケーション1360は、クライアントデバイス1345に、ネイティブデスクトップ1365を含むユーザインターフェースを表示させてもよい。ネイティブデスクトップ1365が提示および/または表示されてもよいユーザインターフェースを生成する際、レシーバアプリケーション1360および/またはクライアントデバイス1345は、リモートデスクトップ1310のキャッシュされた再現を含む、キャッシュ1355に格納された情報にアクセスおよび/またはかかる情報を使用してもよく、ネイティブデスクトップ1365の外観は、リモートデスクトップ1310の外観を反映する。
ステップ1425では、クライアントデバイス1345は、ファイルにアクセスするための要求が受信されたかどうかを判別する。たとえば、ステップ1425では、クライアントデバイス1345は、ネイティブデスクトップ1365に含まれるファイルにアクセスするための要求に対応するユーザ入力が受信されたかどうかを判別してもよい。そのような要求が受信されていれば、ステップ1430では、クライアントデバイス1345は、要求されたファイルに対して、ネイティブエディタがクライアントデバイス1345上で利用可能かどうかを判別してもよい。そのようなネイティブエディタは、たとえば、(たとえば、クライアントデバイス1345のユーザがアクセスを要求した)ファイルを閲覧および/または編集できるようにするクライアントデバイス1345上でロードされ、および/またはそれにより実行可能なソフトウェアアプリケーションであってもよい。
(たとえば、ステップ1430において)ネイティブエディタが利用可能な場合は、ステップ1435で、クライアントデバイス1345は、要求されたファイルと関連付けられたファイルデータをダウンロードし、その後、ネイティブエディタ内のファイルを開いてもよい。ファイルデータは、たとえば、仮想化サーバ1305およびリモートデスクトップ1310に対する(たとえば、ICAチャンネルであってもよい)事前に確立された接続を介して、クライアントデバイス1345によりダウンロードされてもよい。この接続が切断された場合、クライアントデバイス1345は、仮想化サーバ1305およびリモートデスクトップ1310に対する接続を再度確立するよう試みてもよい。接続が確立できない場合、クライアントデバイス1345および/またはレシーバアプリケーション1360は、エラーメッセージを表示してもよい。ほかにも、いったん接続が確立され、ファイルデータがダウンロードされれば、クライアントデバイス1345は、ネイティブエディタを開始し、および/またはネイティブエディタにファイルデータを開かせて、要求されたファイルをクライアントデバイス1345のユーザが閲覧および/または編集できるようにしてもよい。
(たとえば、ステップ1430において)ネイティブエディタが利用不可能な場合、ステップ1440で、クライアントデバイス1345は、遠隔型アプリケーションを開始および提示してもよい。遠隔型アプリケーションは、ネイティブエディタがクライアントデバイス1345上で利用可能でなくても、たとえば、要求されたファイルをクライアントデバイス1345のユーザに対して閲覧および/または編集を可能にすることができる。そのような遠隔型アプリケーションは、たとえば、仮想化サーバ1305により(たとえば、クライアントデバイス1345と仮想化サーバ1305との間の事前に確立した接続を介して)提供されてもよく、レシーバアプリケーション1360を介して、クライアントデバイス1345上に提示されてもよい。クライアントデバイス1345と仮想化サーバ1305との間の事前に確立した接続が切断されている場合、クライアントデバイス1345は、仮想化サーバ1305およびリモートデスクトップ1310に対する接続を再度確立するよう試みてもよい。接続が確立できない場合、クライアントデバイス1345および/またはレシーバアプリケーション1360は、エラーメッセージを表示してもよい。ほかにも、いったん接続が確立されていた場合、クライアントデバイス1345および/またはレシーバアプリケーション1360は、仮想化サーバ1305により提供された遠隔型アプリケーションを提示し、要求されたファイルをクライアントデバイス1345のユーザが閲覧および/または編集できるようにしてもよい。
(たとえば、ステップ1425において)ファイルにアクセスするための要求が受信されていない場合、ステップ1445で、クライアントデバイス1345は、アプリケーションを開くための要求が受信されているか否かを判別してもよい。たとえば、ステップ1445では、クライアントデバイス1345は、ネイティブデスクトップ1365に含まれるアプリケーションを開くための要求に対応するユーザ入力が受信されたかどうかを判別してもよい。そのような要求が受信されていれば、その後、ステップ1450で、クライアントデバイスは、遠隔型アプリケーションを開始および提示してもよい。遠隔型アプリケーションは、たとえば、開くように要求されたアプリケーションに対応してもよく、上述の実施例では、遠隔型アプリケーションは、仮想化サーバ1305により提供されてもよく、レシーバアプリケーション1360を介して、クライアントデバイス1345上に提示されてもよい。クライアントデバイス1345と仮想化サーバ1305との間の事前に確立した接続が切断されている場合、クライアントデバイス1345は、仮想化サーバ1305およびリモートデスクトップ1310に対する接続を再度確立するよう試みてもよい。接続が確立できない場合、クライアントデバイス1345および/またはレシーバアプリケーション1360は、エラーメッセージを表示してもよい。ほかにも、いったん接続が確立されていた場合、クライアントデバイス1345および/またはレシーバアプリケーション1360は、仮想化サーバ1305により提供される遠隔型アプリケーションを提示し、クライアントデバイス1345のユーザが、要求されたアプリケーションとやりとりできるようにしてもよい。
その後、本方法は終了してもよい。さらに/あるいは、1つまたは複数のステップは、周期的に繰り返されて(たとえば、ループで)、リモートデスクトップのキャッシュされた再現の連続する同期および/または様々な要求、ユーザ入力、および/または他の入力の連続処理を可能にしてもよい。
図15に示す方法では、モバイルデバイスは、リモートデスクトップの再現、およびリモートデスクトップに含まれる1つまたは複数のファイルのための実体データの少なくとも一部をローカルにキャッシュし、モバイルデバイスは、ネイティブデスクトップを提示する際に、このローカルにキャッシュされたデータをその後使用してもよく、ある例では、キャッシュしたファイルに対するアクセスを提供してもよい。さらに、図15に示す方法では、モバイルデバイスは、クラウドベースのストレージプラットフォームの関与なしにリモートデスクトップおよび/またはファイルデータの再現をローカルにキャッシュしてもよい。
特に、方法は、レシーバアプリケーションが起動されるステップ1505において開始される。たとえば、ステップ1505では、上述のようにレシーバアプリケーションがステップ1405で開始される方法と同様に、クライアントデバイス1345は、レシーバアプリケーション1360に対して、開始し、開き、および/または他の形で実行を開始する。ステップ1510では、クライアントデバイス1345は、上述のように、そのような接続がステップ1410で確立されてもよい方法と同様に、仮想化サーバ1305に対する接続を確立する。ステップ1515では、クライアントデバイス1345は、上述のように、そのようなリモートデスクトップの再現がステップ1415でキャッシュされる方法と同様に、リモートデスクトップ1310の再現をキャッシュする。
ステップ1520では、クライアントデバイス1345は、リモートデスクトップ1310と関連付けられたファイルデータをキャッシュする。そのようなファイルデータは、たとえば、リモートデスクトップ1310に格納および/または他の形で含まれる1つもしくは複数のファイルに含まれ、および/またはそれらを構成する実体データを含んでいてもよい。
上述した実施例のように、レシーバアプリケーション1360が閉じられた後、および/またはクライアントデバイス1345と仮想化サーバ1305との間の接続が切断された後でも、クライアントデバイス1345は、キャッシュされたファイルデータを(たとえば、キャッシュ1355に)格納および/または他の形で維持してもよい。キャッシュされたファイルデータをこのように格納および/または維持することにより、たとえば、クライアントデバイス1345のユーザがレシーバアプリケーション1360に戻り、リモートデスクトップ1310と関連付けられたキャッシュされたファイルとのインタラクションを望んだ場合、クライアントデバイス1345は、キャッシュされたファイルデータに対するオフラインのアクセスを可能にしてもよい。場合によっては、リモートデスクトップ1310と関連付けられたファイルデータをキャッシュする際、クライアントデバイス1345は、ユーザのリモートデスクトップ1310に含まれてもよいすべてのファイルに対するデータをダウンロードおよび/またはキャッシュしてもよく、一方、他の場合では、クライアントデバイス1345は、選択されたファイルに対してのみ、データをダウンロードおよび/またはキャッシュしてもよい。たとえば、特定のファイルは、ユーザのプリファレンス、スペースおよび/もしくは帯域制限、1つもしくは複数のアルゴリズム、ならびに/または他の要因に基づいてキャッシュされてもよい。
ステップ1525では、クライアントデバイス1345は、上述したようにステップ1420でそのようなネイティブデスクトップが提示される方法と同様に、ステップ1515でキャッシュされたリモートデスクトップ1310の再現に基づいて、ネイティブデスクトップを提示する。ステップ1530では、クライアントデバイス1345は、キャッシュされたファイルにアクセスするための要求が受信されたかどうかを判別する。たとえば、ステップ1530では、クライアントデバイス1345は、ネイティブデスクトップ1365に含まれるキャッシュされたファイルにアクセスするための要求に対応するユーザ入力が受信されたかどうかを判別してもよい。そのような要求が受信されていれば、ステップ1535では、クライアントデバイス1345は、キャッシュされたファイルに対するネイティブエディタがクライアントデバイス1345上で利用可能かどうかを判別してもよい。上述した実施例のように、そのようなネイティブエディタは、たとえば、(たとえば、クライアントデバイス1345のユーザがアクセスを要求した)ファイルを閲覧および/または編集できるようにするクライアントデバイス1345上にロードされ、および/またはクライアントデバイス1345により実行可能である、ソフトウェアアプリケーションであってもよい。
(たとえば、ステップ1535において)ネイティブエディタが利用可能な場合、ステップ1540で、クライアントデバイス1345は、ネイティブエディタ内のキャッシュされたファイルを開く。たとえば、クライアントデバイス1345は、ネイティブエディタを開始し、および/またはキャッシュされたファイルデータをネイティブエディタに開かせて、要求されたファイルをクライアントデバイス1345のユーザが閲覧および/または編集できるようにしてもよい。ファイルデータはキャッシュされ、ネイティブエディタが利用可能なため、クライアントデバイス1345と仮想化サーバ1305との間のネットワーク接続は、クライアントデバイス1345のユーザがファイルを閲覧および/または編集できるようにするために必要とされなくてもよい。ネイティブエディタを使って、ファイルデータに対して任意の変更がなされた場合、クライアントデバイス1345は、キャッシュ1355に格納および/または他の形で維持されたキャッシュされたファイルデータを更新し、変更を反映し、変更は、ネイティブエディタが閉じられ、レシーバアプリケーション1360が閉じられ、および/またはクライアントデバイス1345と仮想化サーバ1305との間のネットワーク接続が確立可能な場合、後で、たとえば、レシーバアプリケーション1360により、リモートデスクトップ1310と同期されてもよい。
(たとえば、ステップ1535において)ネイティブエディタが利用不可能な場合、ステップ1545では、上述したように、ステップ1440において、そのような遠隔型アプリケーションが開始および提示されてもよい方法と同様に、クライアントデバイス1345は、遠隔型アプリケーションを開始および提示する。そのような遠隔型アプリケーションは、たとえば、ネイティブエディタがクライアントデバイス1345上で利用不可能な例の場合、ファイル自体は、クライアントデバイス1345上にキャッシュされてもよいが、クライアントデバイス1345のユーザによるファイルの閲覧および/または編集を可能にしてもよい。
(たとえば、ステップ1530において)キャッシュされたファイルにアクセスするための要求が受信されない場合、ステップ1550で、クライアントデバイス1345は、アプリケーションを開くか、またはキャッシュされていないファイルにアクセスするための要求が受信されているか否かを判別する。そのような要求が受信されていれば、その後、ステップ1555で、上述の実施例において、そのような遠隔型アプリケーションが開始および提示されてもよい方法と同様に、クライアントデバイス1345は、遠隔型アプリケーションを開始および提示してもよい。その後、および/またはそのような要求が受信されていない場合、本方法は終了してもよい。さらに/あるいは、1つまたは複数のステップが周期的に(たとえば、ループで)繰り返され、リモートデスクトップのキャッシュされた再現の連続する同期、キャッシュされたファイルデータの連続する同期、および/または様々な要求、ユーザ入力、および/または他の入力の連続処理を可能にしてもよい。
図16は、本発明の1つまたは複数の実施形態に従うコンピューティングデバイスにおいてネイティブデスクトップを提示する他の方法を示す。上述のように、図16に示すステップは、1つまたは複数の実施形態において、クライアントデバイス1345などのモバイルデバイスにより実行されてもよい。さらに、図16に示す方法では、データを1つまたは複数の仮想化サーバと同期させてもよいクラウドベースのストレージプラットフォームと同期することにより、モバイルデバイスは、リモートデスクトップの再現と、リモートデスクトップと関連付けられた1つまたは複数のファイルとの両方をローカルにキャッシュしてもよい。
図16で分かるように、方法は、クライアントデバイス1345が同期タイマが満了したかどうかを判別するステップ1605で開始される。たとえば、クライアントデバイス1345は、既定時間量(たとえば、60秒、5分、1時間など)を定義するカウントダウンタイマを維持してもよく、かかる時間の後、クライアントデバイス1345は、キャッシュされたデータを同期するよう試みるべきである。
(たとえば、ステップ1605において)同期タイマが満了した場合、ステップ1610で、クライアントデバイス1345は、クラウドベースのストレージプラットフォームに対する接続が利用可能かどうかを判別する。たとえば、ステップ1610において、クライアントデバイス1345は、クライアントデバイス1345から1つまたは複数のクラウドサーバ1335および/またはクラウドベースのストレージプラットフォーム1340に対する接続が利用可能かどうかを判別してもよい。(たとえば、ステップ1610において)そのような接続が利用可能な場合、ステップ1615において、クライアントデバイス1345は、クラウドベースのストレージプラットフォーム1340に対して接続してもよい。次に、ステップ1620では、クライアントデバイス1345は、クラウドベースのストレージプラットフォーム1340と同期するデータが存在するかどうかを判別してもよい。同期するデータが存在するかどうかを判別する際、クライアントデバイス1345は、クラウドベースのストレージプラットフォーム1340に対して、ダウンロードおよび/またはアップロードする新しい、および/または更新された情報が存在するかどうかを判別してもよい。
(たとえば、ステップ1620において)同期するデータが存在する場合、ステップ1625で、クライアントデバイス1345は、クラウドベースのストレージプラットフォーム1340とデータを同期する。このように、クラウドベースのストレージプラットフォーム1340に対する接続が利用可能であると判別したことに応答して、クライアントデバイス1345は、ローカルのキャッシュデータをクラウドベースのストレージプラットフォーム1340と同期させてもよく、上述した実施例のように、このローカルのキャッシュデータは、リモートデスクトップ(たとえば、リモート仮想デスクトップ1310)上に維持された1つまたは複数のファイルを含んでいてもよい。
いくつかの例では、ローカルのキャッシュデータをクラウドベースのストレージプラットフォームと同期させることは、リモートデスクトップ上の少なくとも1つのファイルになされた1つまたは複数の変更に基づいて、ローカルのキャッシュデータを更新することを含んでいてもよい。たとえば、データをクラウドベースのストレージプラットフォーム1340と同期する際、クライアントデバイス1345は、1つまたは複数の同期されたファイルに対するリモートデスクトップ1310になされた1つまたは複数の変更に基づいて、ローカルキャッシュ1355に格納されたデータを更新してもよい。さらに/あるいは、ローカルのキャッシュデータを同期させることは、コンピューティングデバイス上の少なくとも1つのファイルになされた変更に基づいて、クラウドベースのストレージプラットフォームに格納された情報を更新することを含んでいてもよい。たとえば、データをクラウドベースのストレージプラットフォーム1340と同期する際、クライアントデバイス1345は、クラウドベースのストレージプラットフォーム1340に格納されたデータを更新し、ネイティブデスクトップ1365を介してなされ、および/または他の形で1つまたは複数の同期されたファイルに対してクライアントデバイス1345になされた変更を反映してもよい。
(たとえば、ステップ1625において)データをクラウドベースのストレージプラットフォーム1340と同期した後、または(たとえば、ステップ1620において)同期するデータがないと判断した後、または(たとえば、ステップ1610において)クラウドベースのストレージプラットフォーム1340に対する接続が利用不可能であると判断した後、クライアントデバイス1345は、ステップ1630で、同期タイマをリセットする。たとえば、ステップ1630では、クライアントデバイス1345は、クライアントデバイス1345がデータをクラウドベースのストレージプラットフォーム1340と同期することを再度試みるべきときまで、同期タイマが再度カウントダウンを始めるように同期タイマを元の完全な値にリセットしてもよい。
ステップ1635では、クライアントデバイス1345は、ローカルのキャッシュデータに基づいてネイティブデスクトップを提示および/または更新する。たとえば、ステップ1635では、クライアントデバイス1345は、ローカルキャッシュ1355に格納および/またはクライアントデバイス1345により他の形でキャッシュされてもよいデータを使って、ネイティブデスクトップを提示してもよい。場合によっては、ネイティブデスクトップを提示することは、リモートデスクトップを表す1つまたは複数の要素の配置を提示することを含んでいてもよい。たとえば、ネイティブデスクトップを提示する際、クライアントデバイス1345は、リモート仮想デスクトップ1310に含まれる要素の対応する配置に適合および/または他の形で反映する要素の配置を提示してもよい。これは、たとえば、ネイティブデスクトップの外見がリモートデスクトップの外見を反映または実質的に反映するようにリモートデスクトップと一致するバックグラウンド、メニューの一致するレイアウトおよび/もしくはアイコンの配置、ならびに/または他の一致する特徴を有するネイティブデスクトップを提示することを含んでいてもよい。さらに、1つまたは複数の配置では、コンピューティングデバイスからクラウドベースのストレージプラットフォームへの接続が利用不可能な場合、ネイティブデスクトップを提示してもよい。たとえば、ステップ1635では、クライアントデバイス1345からクラウドベースのストレージプラットフォーム1340に対する接続が利用不可能および/または確立することができなくても、クライアントデバイス1345は、ネイティブデスクトップ1365を提示してもよい。
ステップ1640では、クライアントデバイス1345は、キャッシュされたファイルにアクセスするための要求が受信されたかどうかを判別する。たとえば、ステップ1640では、クライアントデバイス1345は、ネイティブデスクトップ1365に含まれるキャッシュされたファイルにアクセスするための要求に対応するユーザ入力が受信されたかどうかを判別してもよい。そのような要求が受信されていれば、ステップ1645では、クライアントデバイス1345は、キャッシュされたファイルに対して、ネイティブエディタがクライアントデバイス1345上で利用可能かどうかを判別してもよい。上述した実施例のように、そのようなネイティブエディタは、キャッシュされたファイルをクライアントデバイス1345上で閲覧および/または編集できるようにするクライアントデバイス1345上でロードし、および/またはクライアントデバイス1345により実行可能なソフトウェアアプリケーションであってもよい。
(たとえば、ステップ1645において)ネイティブエディタが利用可能な場合、ステップ1650で、クライアントデバイス1345は、ネイティブエディタ内のキャッシュされたファイルを開く。たとえば、クライアントデバイス1345は、ネイティブエディタを開始し、および/またはキャッシュされたファイルデータをネイティブエディタに開かせて、クライアントデバイス1345のユーザが、キャッシュされたファイルを閲覧および/または編集できるようにしてもよい。
(たとえば、ステップ1645において)ネイティブエディタが利用不可能な場合、ステップ1655では、上述の実施例において、そのような遠隔型アプリケーションが開始および提示されてもよい方法と同様に、クライアントデバイス1345は、遠隔型アプリケーションを開始および提示する。特に、そのような遠隔型アプリケーションは、たとえば、ネイティブエディタがクライアントデバイス1345上で利用不可能な例の場合、クライアントデバイス1345のユーザによるファイルの閲覧および/または編集を可能にしてもよい。さらに、上述の実施例のように、ネイティブエディタを開始および提示する際、クライアントデバイス1345は、仮想化サーバ1305に対して接続するか、または接続を試みてもよい。次に、および/または(たとえば、ステップ1640において)キャッシュされたファイルに対してアクセスするための要求が受信されない場合、本方法は終了してもよい。さらに/あるいは、1つまたは複数のステップは、周期的に(たとえば、ループで)繰り返され、キャッシュされたデータの連続同期および/または様々な要求、ユーザ入力、および/または他の入力の継続処理を可能にしてもよい。
前述したように、本開示の様々な態様は、リモートデスクトップからマイニングされたクラウド同期型データを使って、(たとえば、モバイルデバイス上に)ネイティブデスクトップを提供するためのコンピュータハードウェアおよびソフトウェアに関係する。各主題が構造の特徴および/または方法論的行為に固有の言語で記載されているが、添付の特許請求の範囲に定義される本発明の主題は、上述の特定の特徴または行為に必ずしも限定されるわけではないことを理解されたい。むしろ、上述の特定の特徴および行為は、以下の特許請求の範囲を実施するいくつかの実施例として説明される。
関連出願の相互参照
本出願は、「PROVIDING A NATIVE DESKTOP USING CLOUD-SYNCHRONIZED DATA」と題された、2013年4月9日に出願された米国特許仮出願第61/810,048号の利益を主張するものであり、該仮出願は、参照によりその全体が本明細書に組み込まれている。