(57)【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
仮想化されたアプリケーションをデバイス上で実行する要求を受け取るステップと、
前記要求を受け取ったことに応答して、前記仮想化されたアプリケーションが前記デバイス上で実行され得るかどうかを判定するため、前記仮想化されたアプリケーションについて実行ポリシーを評価するよう試みるステップと、
前記実行ポリシーを評価することができるかどうかを判定するステップと、
前記実行ポリシーを評価することができないと判定したことに応答して、前記仮想化されたアプリケーションを前記デバイスから取り除くことによって、前記仮想化されたアプリケーションを非公開にするステップと、
前記実行ポリシーを評価することができ、前記仮想化されたアプリケーションが実行され得ると判定したことに応答して、前記仮想化されたアプリケーションを公開するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記実行ポリシーは、前記仮想化されたアプリケーションが、前記仮想化されたアプリケーションを実行する前記デバイスが或る指定された地理的位置に位置している場合に限って実行され得ると指定する、請求項１に記載の方法。
【請求項３】
前記実行ポリシーは、前記仮想化されたアプリケーションが、指定された期間中に限って実行され得ると指定する、請求項１に記載の方法。
【請求項４】
前記実行ポリシーは、前記仮想化されたアプリケーションが、或る指定された持続時間に限って実行され得ると指定する、請求項１に記載の方法。
【請求項５】
前記実行ポリシーは、前記仮想化されたアプリケーションが、前記仮想化されたアプリケーションを実行する前記デバイスによって利用されるコンピューティングリソースが制限されていない場合に限って実行され得ると指定する、請求項１に記載の方法。
【請求項６】
前記仮想化されたアプリケーションを公開するステップは、
前記仮想化されたアプリケーションが前記デバイスにインストールされているかどうかを判定することと、
前記仮想化されたアプリケーションが前記デバイスにインストールされている場合、前記仮想化されたアプリケーションを実行され得るようにすることと、
前記仮想化されたアプリケーションが前記デバイスにインストールされていない場合、前記仮想化されたアプリケーションを前記デバイスにストリーミングすることと
を含む、請求項１に記載の方法。
【請求項７】
前記実行ポリシーを評価するのにアプリケーション仮想化サーバ構成要素が利用可能であるかどうかを判定するステップと、
前記アプリケーション仮想化サーバ構成要素が利用可能であると判定したことに応答して、前記アプリケーション仮想化サーバ構成要素において前記実行ポリシーを評価するステップと、
前記実行ポリシーを評価するのに前記アプリケーション仮想化サーバ構成要素が利用可能でない場合、前記仮想化されたアプリケーションを実行している前記デバイスにおいて前記実行ポリシーを評価するステップと
を更に含む、請求項１に記載の方法。
【請求項８】
コンピュータによって実行されると、該コンピュータに、
仮想化されたアプリケーションをデバイス上で実行する要求を受け取るステップと、
前記要求を受け取ったことに応答して、前記仮想化されたアプリケーションが前記デバイス上で実行され得るかどうかを判定するため、前記仮想化されたアプリケーションについて実行ポリシーを評価するよう試みるステップと、
前記実行ポリシーを評価することができるかどうかを判定するステップと、
前記実行ポリシーを評価することができないと判定したことに応答して、前記仮想化されたアプリケーションを前記デバイスから取り除くことによって、前記仮想化されたアプリケーションを非公開にするステップと、
前記実行ポリシーを評価することができ、前記仮想化されたアプリケーションが実行され得ると判定したことに応答して、前記仮想化されたアプリケーションを公開するステップと
を実行させる、プログラム。
【請求項９】
前記コンピュータによって実行されると、前記コンピュータに、
前記仮想化されたアプリケーションの実行中に前記実行ポリシーを評価して、前記仮想化されたアプリケーションが引き続き実行され得るかどうかを判定させるステップと、
前記仮想化されたアプリケーションが引き続き実行され得ないと判定したことに応答して、前記仮想化されたアプリケーションを非公開にするステップと
を更に実行させる、請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化されたアプリケーションに対するポリシーベースのアクセスに関する。
【背景技術】
【０００２】
企業、行政機関、およびその他のタイプのエンティティは、一般に、いくつかのタイプの機密情報または繊細な情報へのアクセスを制限する。物理的な文書など物理的情報へのアクセスを制限することは、標準のアクセス制限を使用して容易に達成することができる。また、サーバコンピュータ上に格納された文書などデジタル情報へのアクセスを制限することも、アクセス制御リストなど標準のセキュリティ対策を使用して比較的容易に達成することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，２２５，２６４号明細書
【特許文献２】米国特許第７，２００，６３２号明細書
【特許文献３】米国特許第７，４５１，４５１号明細書
【特許文献４】米国特許第７，７９７，３７２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータアプリケーションプログラム（「アプリケーション」）の使用を制限することは、特に、別の状況ではそのアプリケーションを使用することが許可されているユーザを、何らかの様態で制限しなければならない場合、物理的アイテムへのアクセスを制限することと比べて、より困難な場合がある。このことは、ラップトップコンピュータ、タブレットコンピュータ、およびスマートフォンなどのポータブルコンピューティングデバイスを従業員に支給する組織に特に当てはまる。従業員は、支給されたコンピューティングデバイスに絶えずアクセスするため、それらのコンピューティングデバイス上にインストールされたアプリケーションの使用を制限することは困難な場合がある。
【０００５】
本明細書でなされる開示は、以上、およびその他の考慮に関連して提示される。
【課題を解決するための手段】
【０００６】
仮想化されたアプリケーションに対するポリシーベースのアクセスのための技術が、本明細書で説明される。本明細書で提示される概念および技術の実施を介して、実行ポリシーに従って仮想化されたアプリケーションの実行を制限することができるアプリケーション仮想化環境が提供され得る。この実行ポリシーは、管理者によって設定されることが可能であり、仮想化されたアプリケーションが実行され得る条件、または実行され得ない条件を定義する。このようにして、アプリケーションの実行は、アプリケーションが実行されるデバイスの地理的位置、アプリケーションの使用の時間帯もしくは持続時間、デバイスにいくつかのコンピューティングリソースが利用可能であるかどうか、またはその他の条件などの、様々な条件に基づいて制限され得る。
【０００７】
本明細書で開示される実施形態は、アプリケーション仮想化環境に関連して実施される。特に、アプリケーション仮想化クライアント構成要素が、仮想化されたアプリケーションの実行のための環境を提供するように構成される。また、アプリケーション仮想化クライアント構成要素は、基礎をなすオペレーティングシステム、他のアプリケーションプログラム、およびシステムリソースから仮想化されたアプリケーションをカプセル化するための機能も提供する。また、アプリケーション仮想化クライアント構成要素は、アプリケーション仮想化サーバ構成要素から仮想化されたアプリケーションの必要とされる部分をストリーミングすることによって、仮想化されたアプリケーションのいくつかの部分をロードするための機能を提供することも可能である。
【０００８】
別の態様によれば、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションに対するポリシーベースのアクセスをもたらすように構成される。特に、仮想化されたアプリケーションを実行する要求が受け取られると、アプリケーション仮想化クライアント構成要素は、実行ポリシーを評価して、そのアプリケーションが実行され得るかどうかを判定する。上記で簡単に説明したとおり、実行ポリシーは、管理者によって設定されることが可能であり、仮想化されたアプリケーションが実行され得る条件、または実行され得ない条件を定義する。例えば、実行ポリシーは、仮想化されたアプリケーションが、このアプリケーションを実行するデバイスが或る指定された地理的区域内にある場合に限って実行され得る、このアプリケーションが、或る指定された時間帯中（例えば、午前９時から午後５時まで）に限って、１日当り或る指定された持続時間（例えば、１日当り１時間）に限って実行され得る、またはこのアプリケーションが、いくつかのコンピューティングリソースが制限されていない場合に限って実行され得る、と指定することが可能である。
【０００９】
アプリケーション仮想化クライアント構成要素が、実行ポリシーに基づいて、仮想化されたアプリケーションが実行され得ると判定した場合、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションを公開する。本明細書で使用される「公開する」という用語は、仮想化されたアプリケーションを実行され得るようにすることを意味する。例えば、一実施形態において、アプリケーション仮想化クライアントアプリケーションは、仮想化されたアプリケーションがインストールされているかどうかを判定し、さらに、インストールされている場合、仮想化されたアプリケーションを実行され得るようにすることによって、仮想化されたアプリケーションを公開する。仮想化されたアプリケーションがインストールされていない場合、アプリケーション仮想化クライアント構成要素は、その仮想化されたアプリケーションが、実行のためにデバイスにストリーミングされるようにすることが可能である。
【００１０】
別の態様によれば、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションの実行中、実行ポリシーを定期的に、または絶えず評価する。アプリケーション仮想化クライアント構成要素が、実行ポリシーがもはや満たされないと判定した場合、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションを「非公開にする」。例えば、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションの実行を停止し、さらにそのアプリケーションを実行され得ないようにすることが可能である。また、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションを、そのアプリケーションが実行されているクライアントデバイスから取り除くことも可能である。
【００１１】
別の態様によれば、アプリケーション仮想化クライアント構成要素は、実行ポリシーが評価され得ない場合に、仮想化されたアプリケーションを非公開にすることもする。例えば、仮想化されたアプリケーションは、そのアプリケーションが或る特定の地理的区域内に限って実行されることを実行ポリシーが要求し、さらにそのアプリケーションを実行しているデバイスが入っている地理的区域が特定され得ない場合、非公開にされ得る。また、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションに対する許可されなかったアクセスに関する監査データ、アプリケーションが非公開にされた条件、およびアプリケーション仮想化環境の管理者に潜在的に役立つ他の情報を格納することも可能である。
【００１２】
この概要は、特許請求の範囲に記載される主題の重要な特徴または不可欠な特徴を特定することは意図しておらず、この概要が特許請求の範囲に記載される主題の範囲を制限するように使用されることも意図していない。さらに、特許請求の範囲に記載される主題は、本開示のいずれの部分に記載されるいずれかの欠点を解決する実施形態にも、そのようなすべての欠点を解決する実施形態にも限定されない。
【図面の簡単な説明】
【００１３】
【図１】本明細書で開示される実施形態に関する１つの例示的な動作環境を示すソフトウェア−ネットワークアーキテクチャ図である。
【図２Ａ】本明細書で提示される一実施形態による、仮想化されたアプリケーションに対するポリシーベースのアクセスのための本明細書で開示される１つの例示的なプロセスの態様を示す流れ図である。
【図２Ｂ】本明細書で提示される一実施形態による、仮想化されたアプリケーションに対するポリシーベースのアクセスのための本明細書で開示される１つの例示的なプロセスの態様を示す流れ図である。
【図３】本明細書で提示される様々な実施形態を実施することができるコンピューティングシステムに関する例示的なコンピュータハードウェア−ソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。
【発明を実施するための形態】
【００１４】
以下の詳細な説明は、仮想化されたアプリケーションに対するポリシーベースのアクセスのための技術を対象とする。上記で簡単に説明したとおり、実行ポリシーに基づいて仮想化されたアプリケーションの実行に対して制限を執行するように構成されたアプリケーション仮想化環境が提供される。特に、仮想化されたアプリケーションを実行する要求が受け取られると、アプリケーション仮想化クライアント構成要素が、実行ポリシーを評価して、そのアプリケーションが公開され、実行され得るかどうかを判定する。アプリケーション仮想化クライアント構成要素が、実行ポリシーに基づいて、その仮想化されたアプリケーションが実行され得ると判定した場合、アプリケーション仮想化クライアント構成要素は、その仮想化されたアプリケーションを公開し、実行する。
【００１５】
アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションがインストールされている場合、そのアプリケーションを実行され得るようにすることによって、そのアプリケーションがインストールされていない場合は、その仮想化されたアプリケーションをインストールすることによって、そのアプリケーションを公開する。また、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションの実行中、実行ポリシーを評価することもする。アプリケーション仮想化クライアント構成要素が、実行ポリシーがもはや満たされないと判定した場合、アプリケーション仮想化クライアント構成要素は、仮想化されたアプリケーションを非公開にして、その仮想化されたアプリケーションの実行を防止する。これら、およびその他の特徴に関するさらなる詳細が、後段で提示される。
【００１６】
本明細書で説明される主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行に関連して実行されるプログラムモジュールの一般的なコンテキストで提示されるが、他のタイプのプログラムモジュールとの組み合わせで他の実施形態が実行されてもよいことが当業者には認識されよう。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、構成要素、データ構造、および他のタイプの構造が含まれる。さらに、本明細書で説明される主題は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電子機器またはプログラマブル家庭用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成で実施されてもよいことが当業者には理解されよう。
【００１７】
以下の詳細な説明において、本明細書の一部分を形成するとともに、例示的な特定の実施形態または実施例として示される添付の図面が参照される。次に、同様の参照符号が、いくつかの図にわたって同様の要素を表す図面を参照して、仮想化されたアプリケーションに対するポリシーベースのアクセスのためのコンピューティングシステムおよび方法の態様を説明する。
【００１８】
図１は、本明細書で開示される実施形態に関する１つの例示的な動作環境１００を示すソフトウェア−ネットワークアーキテクチャ図である。図１に示される例示的な動作環境１００は、ネットワーク１０６によってサーバ１０４と通信するように構成されたクライアントデバイス１０２を含む。クライアントデバイス１０２は、オペレーティングシステム１０８Ａおよびアプリケーション仮想化クライアント構成要素１１０を実行するように構成されたコンピューティングデバイスである。クライアントデバイス１０２は、標準のデスクトップコンピュータもしくはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、または仮想化されたアプリケーションに対するポリシーベースのアクセスのための本明細書で提示される動作を実行することができる他の任意のタイプのコンピューティングデバイスであり得る。また、クライアントデバイス１０２は、本明細書で開示される機能を提供するように構成されたサーバコンピュータであってもよい。
【００１９】
サーバ１０４は、オペレーティングシステム１０８Ｂおよびアプリケーション仮想化サーバ構成要素１１６を実行するように構成されたコンピューティングシステムである。サーバ１０４は、アプリケーション仮想化サーバ構成要素１１０を実行するように構成されたサーバコンピュータであることが可能であり、またはサーバ１０４によって実行されるものと本明細書で説明される機能を実行するように構成された別のタイプのコンピュータシステムを備えることが可能であることを理解されたい。
【００２０】
図１に示されるネットワーク１０６は、ワイドエリアネットワークまたはローカルエリアネットワークを備え得る。例えば、ネットワーク１０６は、企業ローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、または複数のワイドエリアネットワークとローカルエリアネットワークの組み合わせであり得る。図１には単一のネットワーク１０６が例示されているが、他の多くのネットワークが利用され得ることを理解されたい。また、図１には単一のクライアントデバイス１０２および単一のサーバ１０４が例示されているが、多数のそのようなデバイスが、本明細書で開示される実施形態によって利用され得ることも理解されたい。
【００２１】
上記で簡単に説明したとおり、クライアントデバイス１０２は、アプリケーション仮想化クライアント構成要素１１０を実行するように構成される。アプリケーション仮想化クライアント構成要素１１０は、アプリケーション仮想化環境をもたらすように構成されたソフトウェア構成要素である。これに関して、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を実行するように構成される。アプリケーション仮想化クライアント構成要素１１０は、オペレーティングシステム１０８Ａから仮想化されたアプリケーション１１２の実行をカプセル化するための機能を提供する。また、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２の他のアプリケーションプログラムおよびシステムリソースから仮想化されたアプリケーション１１２の実行をカプセル化するための機能をもたらすことも可能である。例えば、アプリケーション仮想化クライアント構成要素１１０は、オペレーティングシステム１０８Ａまたはクライアントデバイス１０２のリソースを仮想化することが可能である。仮想化されたアプリケーション１１２が、それらの物理的リソースにアクセスしようと試みると、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション１１２に仮想化されたリソースを提示する。このようにして、仮想化されたアプリケーション１１２は、オペレーティングシステム１０８Ａまたはクライアントデバイス１０２によって公開（ｅｘｐｏｓｅ）される実際のリソースに影響を与えない様態で実行され得る。
【００２２】
他の態様によれば、アプリケーション仮想化クライアント構成要素１１０はまた、仮想化されたアプリケーション１１２のいくつかの部分をオンデマンドでロードするための機能ももたらす。特に、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション仮想化サーバ構成要素１１６と連携して動作して、サーバ１０４からクライアントデバイス１０２に仮想化されたアプリケーション１１２の必要とされる部分をストリーミングすることが可能である。このようにして、仮想化されたアプリケーション１１２は、クライアントデバイス１０２においてオンデマンドでアクセスされ得る。さらに、仮想化されたアプリケーション１１２の必要とされる部分だけが、サーバ１０４からクライアントデバイス１０２にストリーミングされ得るため、仮想化されたアプリケーション１１２へのアクセスが、サーバ１０４からクライアントデバイス１０２にアプリケーション１１２全体をストリーミングすることなしにもたらされ得る。
【００２３】
仮想化されたアプリケーション１１２の実行をカプセル化するため、およびサーバ１０４からクライアントデバイス１１２に仮想化されたアプリケーション１１２をストリーミングするためにアプリケーション仮想化クライアント構成要素１１０によってもたらされる機能に関するさらなる詳細は、それぞれ参照によりそれらの全体が本明細書に組み込まれている、「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｄｅｌｉｖｅｒｉｎｇ  Ｃｏｎｔｅｎｔ  ｏｖｅｒ  ａ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋ」という名称の、２００７年５月２９日に出願した特許文献１、「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｓｅｒｖｉｎｇ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｔｏ  Ｃｌｉｅｎｔ  Ｃｏｍｐｕｔｅｒｓ」という名称の、２００７年４月３日に出願した特許文献２、「Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ａｂｓｔｒａｃｔｉｏｎ  ａｎｄ  Ｐｒｏｔｅｃｔｉｏｎ  Ｌａｙｅｒ」という名称の、２００８年１１月１１日に出願した特許文献３、および「Ｓｅｒｖｉｎｇ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｆｒｏｍ  Ｓｅｒｖｅｒｓ  ｆｏｒ  Ｃｌｉｅｎｔ  Ｃｏｍｐｕｔｅｒｓ」という名称の、２０１０年９月１４日に出願した特許文献４において見ることができる。
【００２４】
また、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２に対するポリシーベースのアクセスをもたらすようにも構成される。これに関して、サーバ１０４およびクライアントデバイス１０２が、実行ポリシー１１４を格納することが可能である。実行ポリシー１１４は、仮想化されたアプリケーション１１２が実行され得る条件、または実行され得ない条件を定義する。例えば、実行ポリシー１１４は、仮想化されたアプリケーション１１２が、クライアントデバイス１０２が或る特定の地理的区域内にある場合に限って実行され得ると指定することが可能である。代替として、または組み合わせで、実行ポリシー１１４は、仮想化されたアプリケーション１１２が、或る指定された時間帯中に限って、または１日当り或る指定された持続時間に限って実行され得ると指定することも可能である。
【００２５】
別の例として、実行ポリシー１１４は、仮想化されたアプリケーション１１２が、クライアントデバイス１０２のいくつかのコンピューティングリソースが制限されていない場合に限って実行され得ると指定することが可能である。例えば、中央処理装置またはネットワーク帯域幅の或る量をクライアントデバイス１０２が利用できない場合、実行ポリシー１１４は、仮想化されたアプリケーション１１２が実行され得ないと指定することが可能である。実行ポリシー１１４は、物理的位置、時間、または他の要因に基づいて他の制限を指定することもできることを理解されたい。また、クライアントデバイス１０２またはサーバ１０４の管理者が実行ポリシー１１４を設定することができることも理解されたい。
【００２６】
仮想化されたアプリケーション１１２を実行する要求がクライアントデバイス１０２において受け取られると、アプリケーション仮想化クライアント構成要素１１０は、実行ポリシー１１４を評価して、アプリケーション１１２が実行され得るかどうかを判定するように構成される。実行ポリシー１１４を評価するため、アプリケーション仮想化クライアント構成要素１１０は、実行ポリシー１１４を評価するのに必要なデータを獲得するために他の構成要素と協働し得る。例えば、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２の物理的位置を特定することができるソフトウェア構成要素またはハードウェア構成要素と連携して動作し得る。
【００２７】
クライアントデバイス１０２の位置を識別するための例示的な技術には、セルラ三角測量技術、全地球測位システム（「ＧＰＳ」）位置特定、Ａ−ＧＰＳ位置特定、ワイヤレス信号強度ベースの位置特定、有線信号強度ベースの位置特定、インターネットプロトコルアドレスベースの位置特定、およびその他が含まれる。また、アプリケーション仮想化クライアント構成要素１１０は、実行ポリシー１１４を評価するのに必要なデータを獲得するために他のタイプの構成要素と連携して動作することも可能である。後段でさらに詳細に説明されるとおり、アプリケーション仮想化クライアント構成要素１１０が、実行ポリシー１１４を評価するのに必要なデータを獲得することができない場合、仮想化されたアプリケーション１１２の実行は、禁止され得る。
【００２８】
いくつかの実施形態によれば、実行ポリシー１１４の評価は、クライアントデバイス１０２において、サーバ１０４において、またはクライアントデバイス１０２とサーバ１０４との組み合わせにおいて行われ得ることを理解されたい。例えば、一実施形態において、アプリケーション仮想化クライアント構成要素１１０が、アプリケーション仮想化サーバ構成要素１１６による実行ポリシー１１４の評価を要求するように構成される。アプリケーション仮想化サーバ構成要素１１６が利用できない場合、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２において実行ポリシー１１４を評価することが可能である。代替として、アプリケーション仮想化サーバ構成要素１１６が実行ポリシー１１４を評価するのに利用できない場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２の実行を禁止し得る。代替として、アプリケーション仮想化クライアント構成要素１１０は、全くサーバ１０４の支援なしにクライアントデバイス１０２において実行ポリシー１１４を評価するように構成され得る。
【００２９】
アプリケーション仮想化クライアント構成要素１１０が、実行ポリシー１１４に基づいて、仮想化されたアプリケーション１１２が実行され得ると判定した場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を使用のために公開する。上記で簡単に説明したとおり、「公開する」という用語は、仮想化されたアプリケーション１１２をクライアントデバイス１０２上で実行され得るようにすることを意味する。例えば、一実施形態において、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２がクライアントデバイス１０２にインストールされているかどうかを判定することによって、仮想化されたアプリケーション１１２を公開する。仮想化されたアプリケーション１１２がクライアントデバイス１０２にインストールされている場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を実行され得るようにする。仮想化されたアプリケーション１１２がクライアントデバイス１０２にインストールされていない場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２が、実行のためにサーバ１０４からクライアントデバイス１０２にストリーミングされるようにすることが可能である。
【００３０】
また、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２の実行中に実行ポリシー１１４を評価するようにも構成される。例えば、アプリケーション仮想化クライアント構成要素１１０は、実行ポリシー１１４を定期的に、または絶えず評価して、実行ポリシー１１４が満たされていることを確実にすることが可能である。アプリケーション仮想化クライアント構成要素１１０が、実行ポリシー１１４がもはや満たされていないと判定した場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２を非公開にする。例えば、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２の実行を停止し、さらにアプリケーション１１２を実行され得ないようにすることが可能である。また、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２をクライアントデバイス１０２から取り除くことも可能である。実行ポリシー１１４が後に再び満たされた場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２をサーバ１０４からクライアントデバイス１０２にストリーミングすることによって、仮想化されたアプリケーション１１２を再公開することが可能である。
【００３１】
上記で簡単に説明したとおり、アプリケーション仮想化クライアント構成要素１１０はまた、実行ポリシー１１４が評価され得ない場合、仮想化されたアプリケーション１１２を非公開にすることもする。例えば、仮想化されたアプリケーション１１２は、アプリケーション１１２が、或る特定の地理的区域内に限って実行されることを実行ポリシー１１４が要求し、さらに地理的区域が、アプリケーション仮想化クライアント構成要素１１０によって特定され得ない場合、非公開にされ得る。クライアントデバイス１０２が、アプリケーション１１２の実行が許される地理的区域に後に戻された場合、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション１１２を実行のために再公開することが可能である。
【００３２】
他の態様によれば、アプリケーション仮想化クライアント構成要素１１０は、サーバ１０４およびクライアントデバイス１０２の管理者によって使用されるように監査データを格納するように構成される。例えば、監査データには、仮想化されたアプリケーション１１２に対する許可されなかったアクセスを識別するデータ、アプリケーション仮想化クライアント構成要素１１０がアプリケーション１１２を非公開にした条件、ならびに構成要素１１０および１１６によって供給された、アプリケーション仮想化環境の管理者に潜在的に役立つ他の情報が含まれ得る。アプリケーション仮想化クライアント構成要素１１０、クライアントデバイス１０２、およびサーバ１０４の動作に関するさらなる詳細が、図２Ａ〜図２Ｂに関連して後段で与えられる。
【００３３】
図２Ａ〜図２Ｂは、仮想化されたアプリケーションに対するポリシーベースのアクセスのための本明細書で開示される１つの例示的なプロセスの態様を例示するルーチン２００を示す流れ図である。図２Ａ〜図２Ｂ、およびその他の図に関連して本明細書で説明される論理的動作は、（１）コンピューティングシステム上で実行される一連のコンピュータによって実施される動作、もしくはプログラムモジュールとして、さらに／または（２）コンピューティングシステム内の互いに接続されたマシン論理回路もしくは回路モジュールとして実施されることを理解されたい。実施形態は、コンピューティングシステムのパフォーマンスおよび他の要件に依存する選択の問題である。したがって、本明細書で説明される論理動作は、動作、構造的デバイス、作用、またはモジュールと様々な呼ばれ方をする。これらの動作、構造的デバイス、作用、およびモジュールは、ソフトウェアで、ファームウェアで、専用のデジタルロジックで、さらに以上の任意の組み合わせで実施され得る。また、図に示され、本明細書で説明されるより多い、または少ない動作が実行されてもよいことも理解されたい。また、これらの動作は、本明細書で説明される順序とは異なる順序で実行されることも可能である。
【００３４】
ルーチン２００は、動作２０２で始まり、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２を実行する要求が受け取られているかどうかを判定する。例えば、クライアントデバイス１０２のユーザが、アプリケーション１１２を実行する要求を行い得る。そのような要求が受け取られていない場合、ルーチン２００は、動作２０２に戻り、別のそのような判定が行われる。アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２を実行する要求が受け取られていると判定した場合、ルーチン２００は、動作２０２から動作２０４に進む。
【００３５】
動作２０４で、アプリケーション仮想化クライアント構成要素１１０が、実行ポリシー１１４を評価しようと試みる。前述したとおり、アプリケーション仮想化クライアント構成要素１１０は、他の構成要素によってもたらされる機能を利用して、実行ポリシー１１４を評価するのに必要なデータを獲得することが可能である。例えば、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２の地理的位置を識別するデータ、時刻、または実行ポリシー１１４を評価するのに必要な他の情報を獲得することが可能である。動作２０４から、ルーチン２００は、動作２０６に進む。
【００３６】
動作２０６で、アプリケーション仮想化クライアント構成要素１１０が、アプリケーション仮想化クライアント構成要素１１０が実行ポリシー１１４を評価することができたかどうかを判定する。例えば、アプリケーション仮想化クライアント構成要素１１０は、クライアントデバイス１０２の地理的位置などのデータが利用できない場合、実行ポリシー１１４を評価することができない可能性がある。また、アプリケーション仮想化クライアント構成要素１１０は、他の実施形態において、サーバ１０４に対するネットワーク接続が行われ得ない場合、実行ポリシー１１４を評価することができないこともあり得る。また、他のタイプの要因が、アプリケーション仮想化クライアント構成要素１１０が実行ポリシー１１４を評価することを防止することもあり得る。
【００３７】
実行ポリシー１１４が評価され得ない場合、ルーチン２００は、動作２０６から動作２０８に進む。動作２０８で、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２を実行する要求を拒否する。さらに、前述したとおり、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２に対する許可されなかったアクセスに関する監査データを、アプリケーション仮想化環境の管理者に潜在的に役立つ他の情報と一緒に格納することが可能である。動作２０８から、ルーチン２００は、前述した動作２０２に進み、アプリケーション１１２を実行する別の要求が処理され得る。
【００３８】
実行ポリシー１１４がアプリケーション仮想化クライアント構成要素１１０によって評価された場合、ルーチン２００は、動作２０６から動作２１０に進む。動作２１０で、実行ポリシー１１４が満たされていたかどうかの判定が行われる。実行ポリシー１１４が満たされていなかった場合、ルーチン２００は、動作２１０から動作２０８に進み、仮想化されたアプリケーション１１２を実行する要求が拒否される。さらに、前述したとおり、監査データが格納されることも可能である。
【００３９】
実行ポリシー１１４が満たされていた場合、ルーチン２００は、動作２１２に進み、アプリケーション仮想化クライアント構成要素１１０が仮想化されたアプリケーション１１２を公開する。前述したとおり、アプリケーション１１２を公開するために、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション１１２がクライアントデバイス１０２にインストールされているかどうかを判定することが可能である。アプリケーション１１２がインストールされている場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーションを、クライアントデバイス１０２上の実行のために実行され得るようにすることが可能である。仮想化されたアプリケーション１１２がクライアントデバイス１０２にインストールされていない場合、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２が、実行のためにサーバ１０４からクライアントデバイス１０２にストリーミングされるようにすることが可能である。アプリケーション１１２が公開されると、ルーチン２００は、動作２１２から動作２１４に進む。
【００４０】
一実施形態によれば、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２が非公開にされるたびにアプリケーション１１２の状態を格納するように構成され得る。例えば、アプリケーション仮想化クライアント構成要素１１０は、アプリケーション１１２が非公開にされるたびにクライアントデバイス１０２のリソースの状態を記述するメモリ、レジスタ、およびデータの内容を格納することが可能である。この実装において、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２が再公開されるたびにアプリケーション１１２の以前に保存された状態を復元するように構成され得る。例えば、ルーチン２００の動作２１４で、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２の以前に保存された状態を復元する。このようにして、再公開が行われると、クライアントデバイス１０２のユーザに、仮想化されたアプリケーション１１２が非公開にされた時点と同一の状態にあるアプリケーション１１２が提示され得る。
【００４１】
動作２１４から、ルーチン２００は、動作２１６に進み、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２が実行されるようにする。前述したとおり、アプリケーション仮想化クライアント構成要素１１０は、オペレーティングシステム１０８、他のアプリケーションプログラム、およびシステムリソースから仮想化されたアプリケーション１１２の実行をカプセル化するための機能をもたらす。動作２１６から、ルーチン２００は、動作２１８に進む。
【００４２】
動作２１８で、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２の実行中に実行ポリシー１１４を評価しようと試みる。このようにして、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２が実行されている間でさえ、実行ポリシー１１４によって課せられる制限を執行することができる。
【００４３】
動作２１８から、ルーチン２００は、動作２２０に進み、アプリケーション仮想化クライアント構成要素１１０が、アプリケーション仮想化クライアント構成要素１１０が実行ポリシー１１４を評価することができたかどうかを判定する。例えば、前述したとおり、アプリケーション仮想化クライアント構成要素１１０は、必要とされるデータが利用できない場合、またはサーバ１０４に対する接続が確立され得ない場合、実行ポリシー１１４を評価することができない可能性がある。
【００４４】
実行ポリシー１１４が評価されることが可能であった場合、ルーチン２００は、動作２２０から動作２２２に進む。動作２２２で、アプリケーション仮想化クライアント構成要素１１０が、実行ポリシー１１４が満たされるかどうかを判定する。満たされる場合、ルーチン２００は、動作２２２から、前述した動作２１６に進み、仮想化されたアプリケーション１１２の実行が続けられる。実行ポリシー１１４が満たされない場合、ルーチン２００は、動作２２２から動作２２４に進む。さらに、ルーチン２００は、アプリケーション仮想化クライアント構成要素１１０が実行ポリシー１１４を評価することができない場合、動作２２０から動作２２４に進む。
【００４５】
動作２２４で、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２の状態を格納する。前述したとおり、アプリケーション仮想化クライアント構成要素１１０は、再公開の後、仮想化されたアプリケーション１１２を現在の状態に戻すのに必要なメモリ、レジスタ内容、およびその他の情報を格納することが可能である。仮想化されたアプリケーション１１２の状態が格納されると、ルーチン２００は、動作２２６に進む。
【００４６】
動作２２６で、アプリケーション仮想化クライアント構成要素１１０が、仮想化されたアプリケーション１１２を非公開にする。上記で簡単に説明したとおり、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２をクライアントデバイス１０２によって実行され得ないようにすることによって、アプリケーション１１２を非公開にすることが可能である。また、アプリケーション仮想化クライアント構成要素１１０は、仮想化されたアプリケーション１１２、および仮想化されたアプリケーション１１２の状態をクライアントデバイス１０２から取り除くことも可能である。仮想化されたアプリケーション１１２は、次回に仮想化されたアプリケーション１１２が実行される際、サーバ１０４からクライアントデバイス１０２にストリーミングされ得る。
【００４７】
また、アプリケーション仮想化クライアント構成要素１１０は、動作２２６で、アプリケーション１１２に対する許可されなかったアクセスに関する監査データ、アプリケーション１１２が非公開にされた条件、ならびにクライアントデバイス１０２およびサーバ１０４の管理者に潜在的に役立つ他の情報を格納することも可能である。動作２２６から、ルーチン２００は、前述した動作２０２に進み、アプリケーション１１２に対するさらなる要求が、前述した様態で処理される。
【００４８】
図３は、本明細書で提示される様々な実施形態を実施することができるコンピューティングシステムに関する例示的なコンピュータハードウェア−ソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図３に示されるコンピュータアーキテクチャは、従来のデスクトップコンピュータ、ラップトップコンピュータ、またはサーバコンピュータを示し、さらに本明細書で説明される様々なソフトウェア構成要素を実行するのに利用され得る。
【００４９】
図３に示されるコンピュータアーキテクチャは、中央処理装置３０２（「ＣＰＵ」）と、ランダムアクセスメモリ３１４（「ＲＡＭ」）および読み取り専用メモリ（「ＲＯＭ」）３１６を含むシステムメモリ３０８と、このメモリをＣＰＵ３０２に結合するシステムバス３０４とを含む。起動中などに、コンピュータ３００内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（「ＢＩＯＳ」）が、ＲＯＭ３１６の中に格納される。コンピュータ３００は、後段でさらに詳細に説明される、オペレーティングシステム３１８、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量ストレージデバイス３１０をさらに含む。
【００５０】
大容量ストレージデバイス３１０は、バス３０４に接続された大容量ストレージコントローラ（図示せず）を介してＣＰＵ３０２に接続される。大容量ストレージデバイス３１０、および関連するコンピュータ読み取り可能な記憶媒体は、コンピュータ３００に不揮発性ストレージをもたらす。本明細書に含まれるコンピュータ読み取り可能な媒体の説明は、ハードディスクドライブまたはＣＤ−ＲＯＭドライブなどの大容量ストレージデバイスについて述べるが、コンピュータ読み取り可能な記憶媒体は、コンピュータ３００によってアクセスされ得る任意の利用可能なコンピュータ記憶媒体であり得ることが当業者には理解されよう。
【００５１】
例として、限定としてではなく、コンピュータ読み取り可能な記憶媒体には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために任意の方法または技術で実施される揮発性媒体および不揮発性媒体、リムーバブルメディアおよびリムーバブルでないメディアが含まれ得る。例えば、コンピュータ読み取り可能な記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ（登録商標）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望される情報を格納するのに使用され得るとともに、コンピュータ３００によってアクセスされ得る他の任意の一時的でない媒体が含まれるが、以上には限定されない。
【００５２】
また、本明細書で開示されるコンピュータ読み取り可能な媒体は、通信媒体も包含することを理解されたい。通信媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータを搬送波などの変調されたデータ信号で、または他のトランスポート機構で実現し、さらに任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するように特性の１つまたは複数が設定されている、または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他のワイヤレス媒体などのワイヤレス媒体が含まれる。また、前述した媒体のうちの任意の媒体の組み合わせも、コンピュータ読み取り可能な媒体の範囲内に含められなければならない。コンピュータ読み取り可能な記憶媒体は、通信媒体を包含しない。
【００５３】
様々な実施形態によれば、コンピュータ３００は、ネットワーク３２０のようなネットワークを介する遠隔コンピュータに対する論理接続を使用するネットワーク化された環境において動作することが可能である。コンピュータ３００は、バス３０４に接続されたネットワークインターフェイスユニット３０６を介してネットワーク３２０に接続され得る。ネットワークインターフェイスユニット３０６は、他のタイプのネットワークおよび遠隔コンピュータシステムを接続するのにも利用され得ることを理解されたい。また、コンピュータ３００は、キーボード、マウス、または電子スタイラス（図３には示されない）を含む、いくつかの他のデバイスからの入力を受け取るため、および処理するための入出力コントローラ３１２を含むことも可能である。同様に、入出力コントローラが、ディスプレイ画面、プリンタ、または他のタイプの出力デバイス（やはり、図３には示されない）に出力を供給することも可能である。
【００５４】
上記で簡単に説明したとおり、ネットワーク化されたデスクトップコンピュータ、ラップトップコンピュータ、またはサーバコンピュータの動作を制御するのに適したオペレーティングシステム３１８を含む、いくつかのプログラムモジュールおよびデータファイルが、コンピュータ３００の大容量ストレージデバイス３１０およびＲＡＭ３１４の中に格納され得る。また、大容量ストレージデバイス３１０およびＲＡＭ３１４は、１つまたは複数のプログラムモジュールを格納することも可能である。特に、大容量ストレージデバイス３１０およびＲＡＭ３１４は、仮想化されたアプリケーション１１２、アプリケーション仮想化クライアント構成要素１１０、および／または前述した他のソフトウェア構成要素を格納することが可能である。また、大容量ストレージデバイス３１０およびＲＡＭ３１４は、他のプログラムモジュール、および実行ポリシー１１４などのデータを格納することも可能である。
【００５５】
一般に、ソフトウェアアプリケーションまたはモジュールは、ＣＰＵ３０２にロードされ、実行されると、ＣＰＵ３０２および全体的なコンピュータ３００を汎用コンピューティングシステムから、本明細書で提示される機能を実行するようにカスタマイズされた専用コンピューティングシステムに変換する。ＣＰＵ３０２は、個々に、または共同で任意の数の状態をとり得る任意の数のトランジスタまたは他の別個の回路要素から構築され得る。より具体的には、ＣＰＵ３０２は、ソフトウェア内、またはモジュール内に含まれる実行可能命令に応答して、１つまたは複数の有限状態マシンとして動作することが可能である。これらのコンピュータ実行可能命令は、ＣＰＵ３０２が状態の間をどのように遷移するかを指定して、ＣＰＵ３０２を構成するトランジスタまたは他の別個のハードウェア要素を物理的に変換することによって、ＣＰＵ３０２を変換することが可能である。
【００５６】
また、ソフトウェアまたはモジュールを大容量ストレージデバイス上に符号化することが、大容量ストレージデバイスまたは関連するコンピュータ読み取り可能な記憶媒体の物理的構造を変換することも可能である。物理的構造の特定の変換は、この説明の様々な実施形態において、様々な要因に依存し得る。そのような要因の例には、コンピュータ読み取り可能な記憶媒体が一次ストレージとして特徴付けられるか、二次ストレージとして特徴付けられるかにかかわらず、コンピュータ読み取り可能な記憶媒体を実施するのに使用される技術などが含まれ得るが、そのような技術には限定されない。例えば、コンピュータ読み取り可能な記憶媒体が半導体ベースのメモリとして実施される場合、ソフトウェアまたはモジュールは、ソフトウェアが半導体メモリの中に符号化されると、半導体メモリの物理的状態を変換することが可能である。例えば、ソフトウェアは、半導体メモリを構成するトランジスタ、キャパシタ、または他の別個の回路要素の状態を変換することが可能である。
【００５７】
別の例として、コンピュータ読み取り可能な記憶媒体は、磁気技術または光技術を使用して実施され得る。そのような実施形態において、ソフトウェアまたはモジュールは、ソフトウェアが磁気媒体または光媒体の中に符号化されると、磁気媒体または光媒体の物理的状態を変換することが可能である。これらの変換には、所与の磁気媒体内の特定の位置の磁気特性を変えることが含まれ得る。また、これらの変換には、所与の光媒体内の特定の位置の物理的特徴または物理的特性を変えて、それらの位置の光学特性を変化させるようにすることも含まれ得る。本明細書の説明の範囲および趣旨を逸脱することなく、物理媒体の他の変換も可能であり、前述の例は、この説明を容易にするように与えられているに過ぎない。
【００５８】
以上に基づいて、仮想化されたアプリケーションに対するポリシーベースのアクセスのための技術が本明細書で提示されたことが理解されよう。本明細書で提示される主題は、コンピュータ構造上の特徴、方法上の動作、およびコンピュータ読み取り可能な媒体に特有の用語で説明されてきたが、添付の特許請求の範囲において規定される本発明は、本明細書で説明される特定の特徴、動作、および媒体に必ずしも限定されないものと理解されたい。むしろ、特定の特徴、動作、および媒体は、特許請求の範囲を実施する例示的な形態として開示される。
【００５９】
前述の主題は、単に例として与えられ、限定するものと解釈されるべきではない。図示され、説明される例示的な実施形態および応用例に従うことなしに、添付の特許請求の範囲に記載される本発明の真の趣旨および範囲を逸脱することなく、本明細書で説明される主題に様々な変形および変更が行われ得る。
【図１】
0005960164.tif 000002
【図２Ａ】
0005960164.tif 000003
【図２Ｂ】
0005960164.tif 000004
【図３】
0005960164.tif 000005