(57)【要約】コンピューティング・デバイス上で実行するホスト・オペレーティング・システムは、コンピューティング・デバイスのネットワーク通信を監視して、このコンピューティング・デバイスによって要求されたネットワーク・リソースを識別する。ホスト・オペレーティング・システムは、要求されたネットワーク・リソースをセキュリティ・ポリシと比較し、要求されたネットワーク・リソースが信頼できるか否か判定する。信頼できないネットワーク・リソースが識別されたとき、ホスト・オペレーティング・システムは、本明細書において論ずる技法を使用して、ホスト・オペレーティング・システム・カーネルから分離されたコンテナ内において、信頼できないネットワーク・リソースにアクセスする。信頼できないネットワーク・リソースを、分離されたコンテナに制限することによって、信頼できないネットワーク・リソースに起因する可能性がある、カーネル・レベルの攻撃や感染であっても、ホスト・オペレーティング・システムはこれらから保護される。【選択図】図１
2019517694.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
ホスト・オペレーティング・システムにおいてアプリケーションを実行するステップと、
前記アプリケーションによるネットワーク・リソースへのアクセスを検出するステップと、
前記ネットワーク・リソースが、信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップと、
前記ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、
前記ホスト・オペレーティング・システムによって、前記ホスト・オペレーティング・システムから分離され前記アプリケーションの一バージョンを実行するように構成されたコンテナを有効化するステップと、
前記ホスト・オペレーティング・システムによって、前記コンテナにおいて実行する前記アプリケーションの前記バージョンが、前記信頼できないネットワーク・リソースにアクセスすることを許可するステップと、
を含む、方法。
【請求項２】
請求項１記載の方法であって、更に、前記コンテナにおいて実行する前記アプリケーションの前記バージョンが、１つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可し、前記コンテナにおいて実行する前記アプリケーションが、信頼できるネットワーク・リソースにアクセスするのを禁止するステップを含む、方法。
【請求項３】
請求項１または請求項２記載の方法であって、更に、前記ホスト・オペレーティング・システムによるファイルまたはアプリケーションへのアクセスを検出し、前記ファイルまたは前記アプリケーションが信頼できないネットワーク・リソースであると判定したことに応答して、前記ファイルまたは前記アプリケーションを前記コンテナ内で開くことを許可するステップを含む、方法。
【請求項４】
請求項１〜３のいずれか１項記載の方法において、前記コンテナが、前記ホスト・オペレーティング・システムのインスタンスと、前記ホスト・オペレーティング・システムのカーネルとは別個で分離されたカーネルとを含む、方法。
【請求項５】
請求項１〜４のいずれか１項記載の方法であって、更に、信頼できるネットワーク・リソースを列挙したリストを少なくとも含む少なくとも１つのポリシを受け取るステップを含み、前記ネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップが、前記ネットワーク・リソースを、前記信頼できるネットワーク・リソースを列挙したリストと比較するステップを含み、前記信頼できるネットワーク・リソースを列挙したリストが、前記ネットワーク・リソースのファイル形式、前記ネットワーク・リソースに関連するネットワーク位置、または前記ネットワーク・リソースにアクセスしようとしているアプリケーションの種類の内１つ以上に基づいて識別される、方法。
【請求項６】
請求項１〜５のいずれか１項記載の方法において、前記コンテナが、前記ホスト・オペレーティング・システムにログオンしたユーザに対して有効化され、前記方法が、更に、異なるユーザが前記ホスト・オペレーティング・システムにログオンしたと判定し、前記異なるユーザに対して、前記ホスト・オペレーティング・システムおよび前記コンテナから分離された異なるコンテナを有効化するステップを含む、方法。
【請求項７】
請求項１〜６のいずれか１項記載の方法であって、更に、前記ネットワーク・リソースへの前記アクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定し、前記ネットワーク・リソースへの前記アクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定したことに応答して、前記ホスト・オペレーティング・システムにおけるアプリケーションに対するネットワーク通信を、仮想プライベート・ネットワーク（ＶＰＮ）インターフェースに制限するステップと、
前記コンテナにおいて実行する前記アプリケーションの前記一バージョンが、前記信頼できないネットワーク・インターフェースを介してネットワーク通信を行うことを許可するステップと、
前記コンテナのネットワーク・スタックに、当該コンテナに対するネットワーク通信が、前記信頼できないネットワーク・インターフェースに分離されることを示すステップと、
を含む、方法。
【請求項８】
請求項１〜７のいずれか１項記載の方法であって、更に、前記ホスト・オペレーティング・システムによって、ユーザ資格証明書を求めるウェブ・プロキシ・プロンプトに対する応答を傍受し、前記１つ以上のユーザ資格証明書を前記コンテナに伝えることなく、前記ウェブ・プロキシ・プロンプトに対する応答に、１つ以上のユーザ資格証明書を挿入するステップを含む、方法。
【請求項９】
請求項１〜８のいずれか１項記載の方法であって、更に、前記コンテナにおいてアクセスされた１つ以上の信頼できないネットワーク・リソースをスキャンし、前記ホスト・オペレーティング・システムにおいてウィルス対策ソフトウェアを使用して、１つ以上のリスク・レベルを前記１つ以上の信頼できないネットワーク・リソースに割り当て、前記割り当てられたリスク・レベルが、前記信頼できないネットワーク・リソースが悪意のあるものであることを示す場合、前記１つ以上の信頼できないネットワーク・リソースの内１つを隔離、消去、または削除するステップを含む、方法。
【請求項１０】
請求項１〜９のいずれか１項記載の方法であって、更に、前記コンテナにおける前記信頼できないネットワーク・リソースに関連するアクティビティを監視して、前記監視したアクティビティに基づいて、前記ホスト・オペレーティング・システムにおいてローカル・ポリシを更新するステップを含む、方法。
【請求項１１】
請求項１〜１０のいずれか１項記載の方法において、前記アプリケーションがウェブ・アプリケーションであり、前記信頼できないネットワーク・リソースがウェブ・ページである、方法。
【請求項１２】
請求項１〜１１のいずれか１項記載の方法において、前記コンテナが、第１ネットワーク通信インターフェースを介してネットワーク・リソース通信のために有効化され、前記方法が、更に、第２ネットワーク通信インターフェースを介したネットワーク・リソース通信のために第２コンテナを有効化するステップを含む、方法。
【請求項１３】
デバイスであって、
１つ以上のプロセッサと、
以下を含む動作を実行するために前記１つ以上のプロセッサによって実行可能なコンピュータ読み取り可能命令を格納する１つ以上のコンピュータ読み取り可能記憶媒体と、
を含み、
前記動作が、
前記デバイスのホスト・オペレーティング・システムにおいてウェブ・アプリケーションを実行する動作と、
前記ウェブ・アプリケーションによるネットワーク・リソースへのアクセスを検出する動作と、
前記ネットワーク・リソースを、前記デバイスから離れて位置する管理および監視サービスから受け取ったポリシと比較することによって、前記ネットワーク・リソースが信頼できないリソースであると判定する動作と、
前記ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、
前記ホスト・オペレーティング・システムによって、前記ホスト・オペレーティング・システムから分離され前記ウェブ・アプリケーションの一バージョンを実行するように構成されたコンテナを有効化する動作と、
前記ホスト・オペレーティング・システムによって、前記コンテナにおいて実行する前記ウェブ・アプリケーションの前記バージョンが、前記信頼できないネットワーク・リソースにアクセスすることを許可する動作と、
前記コンテナにおいて実行する前記ウェブ・アプリケーションの前記バージョンが、１つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可する動作と、
前記コンテナにおいて実行する前記ウェブ・アプリケーションの前記バージョンが、信頼できるネットワーク・リソースにアクセスするのを防止する動作と、
を実行する、デバイス。
【請求項１４】
請求項１３記載のデバイスにおいて、前記動作が、更に、
前記ホスト・オペレーティング・システムに対する更新を検出し、前記ホスト・オペレーティング・システムに対する更新を検出したことに応答して、前記コンテナを削除し、前記ホスト・オペレーティング・システムの１つ以上の更新された境界を反映する新たなコンテナを作成する動作を含む、デバイス。
【請求項１５】
請求項１３または請求項１４記載のデバイスにおいて、前記ホスト・オペレーティング・システムが、前記ネットワーク・リソースのファイル形式、前記ネットワーク・リソースに関連するネットワーク位置、前記ネットワーク・リソースにアクセスしてしようとしているアプリケーションの種類、前記ネットワーク・リソースのウィルス対策スキャンの内１つ以上に基づいて、更に悪意のあるネットワーク・リソースのリストを維持するクラウド・ベース・サービスを調べることに基づいて、前記ネットワーク・リソースおよび前記１つ以上の追加の信頼できないネットワーク・リソースが信頼できないと判定するように構成される、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  コンピューティング・デバイスの感染は、ユーザがインターネットをブラウズして信頼できないウェブ・サイトにアクセスしたとき、あるいはユーザが、アプリケーションおよび文書のような、信頼できないネットワーク・リソースをダウンロードしたときまたは開いたときに起こることが多い。これらの感染は、攻撃者がユーザの資格証明書(credentials)を盗むこと、またはコンピューティング・デバイスの支配権を握り攻撃者自身の手段として再利用することさえも可能にする。これらのカーネル・レベルの攻撃と戦うための１つの解決策は、コンピューティング・デバイスへのネットワーク・アクセスを遮断することであるが、これは多くの最新のコンピューティング・デバイスの機能を著しく制限する。加えて、作業場環境では、ネットワーク・アクセスを不能にすると、従業員の生産性や仕事の満足度に悪影響が出る(hamper)。妥協案として、多くの経営者は、従業員が信頼できないネットワーク・リソースにアクセスするのを禁止することによって、ネットワーク・アクセスの制限を可能にする。しかしながら、ネットワーク・アクセスが制限された結果、経営者にとって管理運営コストが上昇することになる。何故なら、経営者は、どのネットワーク・リソースが信頼できないか定めるポリシを常時更新しなければならないからである。このため、ユーザおよび経営者双方によるコンピューティング・デバイスの使用に伴う不満が生ずる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
【０００３】
[0003]  １つ以上の態様によれば、ホスト・オペレーティング・システムにおいてアプリケーションを実行する。このアプリケーションがネットワーク・リソースにアクセスしようとしていることを検出したことに応答して、ホスト・オペレーティング・システムは、このネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定する。このネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムは、このホスト・オペレーティング・システムから分離されたコンテナ(container)を有効化する。このコンテナは、アプリケーションの一バージョンをこのコンテナ内で実行するように構成されている。次いで、ホスト・オペレーティング・システムは、コンテナ内において実行しているこのアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する。
【０００４】
[0004]  １つ以上の態様によれば、ホスト・オペレーティング・システムの起動(startup)を検出する。ホスト・オペレーティング・システムの起動を検出したことに応答して、ホスト・オペレーティング・システムがコンテナ・ベース・イメージを含むか否か判定する。本明細書において論ずるように、コンテナ・ベース・イメージとは、ホスト・オペレーティング・システムのバージョン、パッチ・レベル(patch level)、および構成の最も近いコピー(proximate copy)を指す。ホスト・オペレーティング・システムがコンテナ・ベース・イメージを含まないと判定したことに応答して、コンテナ・ベース・イメージを作成する。コンテナ・ベース・イメージを作成した後、ホスト・オペレーティング・システムへのユーザ・ログインを検出する。ホスト・オペレーティング・システムへのユーザ・ログインを検出したことに応答して、コンテナ・ベース・イメージに対応するコンテナを有効化し、有効化したコンテナを保留する(suspend)。信頼できないネットワーク・リソースへのアクセスを検出したことに応答して、保留中のコンテナを再開し、再開したコンテナが、信頼できないネットワーク・リソースにアクセスにアクセスすることを許可する。
【０００５】
[0005]  １つ以上の態様によれば、デバイスのホスト・オペレーティング・システム上でウェブ・アプリケーションを実行する。本明細書において論ずるように、ウェブ・アプリケーションは、ホスト・オペレーティング・システムを実行するデバイスから離れて格納されている１つ以上のネットワーク・リソースにアクセスするように構成されている。ウェブ・アプリケーションがネットワーク・リソースにアクセスしたことを検出したことに応答して、ネットワーク・リソースを、デバイスから離れて位置する管理および監視サービスから受信したポリシと比較することによって、ネットワーク・リソースが信頼できないリソースであると判定する。ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムは、ウェブ・アプリケーションの一バージョンを実行するように構成され、ホスト・オペレーティング・システムから分離されたコンテナを有効化する。コンテナを有効化した後、ホスト・オペレーティング・システムは、コンテナにおいて実行しているウェブ・アプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する。ホスト・オペレーティング・システムは、コンテナにおいて実行しているウェブ・アプリケーションのバージョンが、追加の信頼できないネットワーク・リソースにアクセスすることを許可し、コンテナにおいて実行しているウェブ・アプリケーションのバージョンが、信頼できるネットワーク・リソースにアクセスすることを禁止する。
【０００６】
[0006]  添付図面を参照しながら、詳細な説明を行う(described)。図面では、参照番号の左端の数字（１つまたは複数）が、その参照番号が最初に現れる図を識別する。説明および図において、同じ参照番号が異なる実例に使用される場合、同様のまたは同一の項目(item)を示すことができる。図において表されるエンティティは、１つ以上のエンティティを示すことができ、したがって、論述においてエンティティの単数形または複数形を相互交換可能に引用することができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離を実施するシステム例を示す。
【図２】図２は、１つ以上の実施形態による、ハードウェア・ベースの仮想化セキュリティ分離のためのシステム・アーキテクチャ例を示す。
【図３】図３は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス例を示すフローチャートである。
【図４】図４は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するプロセス例を示すフローチャートである。
【図５】図５は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理するプロセス例を示すフローチャートである。
【図６】図６は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス例を示すフローチャートである。
【図７】図７は、本明細書において説明する種々の技法を実現することができる１つ以上のシステムおよび／またはデバイスを表す、コンピューティング・デバイスの一例を含むシステム例を示す。
【発明を実施するための形態】
【０００８】
[0014]  本明細書では、ハードウェア・ベースの仮想化セキュリティ分離について論ずる。コンピューティング・デバイス上で実行するオペレーティング・システムは、ここでは、ホスト・デバイス上で実行するホスト・オペレーティング・システムとも呼び、ハードウェア・リソースの区分(partitioning)のためにコンテナを使用する。多くの仮想機械ベースの手法またはサンドボックス(sandbox)手法とは対照的に、本明細書において論ずるハードウェア・ベースの仮想化セキュリティ分離技法と併せてコンテナを使用することによって、ウェブ・ブラウザー、関係するアプリケーション、カーネルのようなオペレーティング・システム・コンポーネント、ファイル・システム、およびネットワークを、信頼できないネットワーク・リソースから分離することによって、コンピューティング・デバイスを攻撃から保護する。信頼できないネットワーク・リソースの分離は、１つ以上のオペレーティング・システム・フィルタおよびポリシ・マネージャによって施行(enforce)および監視される。このように、ホスト・デバイスが信頼できないネットワーク・リソースへのアクセスを要求するとき、ホスト・デバイスは、信頼できないネットワーク・リソースを、ホスト・オペレーティング・システムからの完全なカーネルの分離に対応する(provide)１つ以上のコンテナ内に収容する。本明細書において論ずる場合、ネットワーク・リソースとは、ホスト・デバイスがネットワークを通じてアクセスすることができる場所（例えば、デバイスの場所またはデータが存在する場所）、更にはこれらの場所の内１つ以上によって提供されるデータ、実行可能ファイル、またはネットワーク接続の内１つ以上を指す。例えば、ネットワーク・リソースは、ファイル、アプリケーション、電子メール、文書、ユニフォーム・リソース・ロケーター（ＵＲＬ）、インターネット・プロトコル（ＩＰ）アドレス、送信制御プロトコル（ＴＣＰ）ポート、ドメイン・ネーム・システム（ＤＮＳ）名称、データ・ストア、ハードウェア・デバイス、またはこれらの組み合わせとすることができる。信頼できるネットワーク・リソースとは、マルウェアを有していないこと、または悪意のあるユーザによって使用されていないことが信頼され、ホスト・デバイスに対する１つ以上のポリシによって識別されたネットワーク・リソースを指す。信頼できないネットワーク・リソースとは、信頼されないネットワーク・リソースを指す（例えば、マルウェアを有する、または悪意のユーザによって使用されるおそれがある）。
【０００９】
[0015]  ホスト・デバイスを悪意のある攻撃から保護するために、ポリシを使用して、信頼できるネットワーク・リソースを列挙したリストを定める。企業の複数のユーザが接続され、共通の企業データおよび／またはネットワークを共有する企業環境では、このポリシは、個々のユーザならびに企業の共有データおよびネットワークが保護され続けることを確保するために、企業の管理者(administrator)によって定めることができる。ホスト・デバイスのユーザがネットワーク・リソースへのアクセスを要求するとき、要求されたネットワーク・リソースをポリシと比較し、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定する。要求されたネットワーク・リソースが信頼できるネットワーク・リソースであることをポリシが示す場合、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムによって、この信頼できるネットワーク・リソースにアクセスすることを許可する。更に、このポリシを利用すると、ホスト・デバイスの１つ以上のネットワーク通信へのアクセスを信頼できないネットワーク・リソースに対して制限することによって、コンピューティング・デバイスのネットワーク・インターフェースを分離し、本明細書において説明する仮想化セキュリティ分離技法を実施することができる。例えば、ホスト・デバイスがワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）通信、移動広帯域通信、ダイアルアップ接続、仮想プライベート・ネットワーク（ＶＰＮ）接続、およびシリアル・ケーブリング、直接ケーブリング、または赤外線リンクのような直接接続をサポートする場合、信頼できないネットワーク・リソースに関連するネットワーク通信を、ＷＬＡＮ通信に制限することができる。
【００１０】
[0016]  要求されたネットワーク・リソースが、ポリシによって、信頼できるネットワーク・リソースとして定められていないとき、要求されたネットワーク・リソースは信頼できないと判定される。ネットワーク・リソースが信頼できないと判定したことに応答して、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムから分離されたコンテナを有効化する。次いで、信頼できないネットワーク・リソースに関連するあらゆる危険なアクティビティを分離するように、信頼できないネットワーク・リソースにはコンテナからアクセスする。この分離のために、信頼できないネットワーク・リソースに起因するあらゆる悪意のコンテンツや攻撃は、コンテナを破ってホスト・オペレーティング・システムに感染することはできない。本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、更に、コンテナが信頼できるネットワーク・リソースへのアクセスを全く獲得しないことを確保するために、コンテナ内におけるアクティビティを監視するように構成されている。
【００１１】
[0017]  したがって、コンテナを有効化して、信頼できないネットワーク・リソースにアクセスすることによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、オペレーティング・システムまたは抑制ランタイム環境(contained runtime environment)の２つ以上の別個のインスタンスを作成する。各インスタンスはネットワーク接続(connectivity)を有する。これらの抑制ランタイム環境内においてデータや実行される動作を監視することによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムがいずれの信頼できないネットワーク・リソースにもアクセスするのを防止するように構成されている。加えて、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・システムが、安全なホスト・オペレーティング・システムからのＤＮＳおよびハイパーテキスト転送プロトコル（ＨＴＴＰ）情報をスキャンおよび共有し、分離されたコンテナの内１つ以上において、ウェブ・ブラウジング性能またはその他のネットワーク・アクティビティを改善することを可能にする。
【００１２】
[0018]  加えて、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムのカーネルとは別個の１つ以上のコンテナにおいてというように、ホスト・オペレーティング・システムがファイルを別々にダウンロードしこれらにアクセスすることを可能にする。これによって、ホスト・オペレーティング・システムは、ファイル、アプリケーション、ウェブ・サイト等というような個々のネットワーク・リソースをスキャンして、スキャンしたネットワーク・リソースの個々のものに関連するリスク・レベルを判定することが可能になる。
【００１３】
[0019]  また、本明細書において論ずるハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・デバイスのシステム・リソースを保存するように構成されている。例えば、コンテナ内において１つ以上の信頼できないネットワーク・リソースが不動作状態(inactive)であるときであっても、コンテナはなおもシステム・リソース（例えば、メモリ）に圧力をかけ、ホスト・デバイス上で実行しておりこれらのリソースを得るために争っている他のあらゆるコンテナまたはプロセスの挙動(performance)に影響を及ぼすことができる。したがって、個々のコンテナ内におけるアクティビティを監視することによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、コンテナ内において信頼できないネットワーク・リソースが不動作状態にあるときには、個々のコンテナを保留またはリセットして、コンテナがホスト・デバイス・リソースに対してかける圧力を下げるように構成されている。保留されているコンテナ内における任意の１つ以上のネットワーク・リソースの状態を保存することができるので、ユーザは、保留されているコンテナに素早く戻り、内部にある１つ以上の信頼できないネットワーク・リソースと相互作用することができる。
【００１４】
[0020]  ホスト・デバイスのユーザがログオフするときというような、トリガ・イベント(triggered event)に応答して、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、コンテナおよびそれに関連する全てのデータを破棄する。このように、ホスト・デバイスのオペレーティング・システムに対して否定的な波紋を全く生ずることなく、１つ以上の信頼できないネットワーク・リソースによってコンテナを畳む(corrupt)ことができる。
【００１５】
ハードウェア・ベースの仮想化セキュリティ分離システム
[0021]  図１は、１つ以上の実施形態によるハードウェア・ベースの仮想化セキュリティ分離を実施するシステム例１００を示す。システム１００は、少なくとも部分的に、ホスト・デバイスによって実装される。システム１００を実現するためには、サーバ・コンピュータ、デスクトップ・コンピュータ、ラップトップまたはネットブック・コンピュータ、移動体デバイス（例えば、タブレットまたはファブレット(phablet)デバイス、セルラまたは他のワイヤレスフォン（例えば、スマートフォン）、ノートパッド・コンピュータ、移動局）、ウェアラブル・デバイス（例えば、めがね、頭部装着ディスプレイ、腕時計、ブレスレット、仮想現実めがねまたはヘッドセット、拡張現実ヘッドセットまたはめがね）、娯楽用デバイス（例えば、娯楽用アプライアンス、ディスプレイ・デバイスに通信可能に結合されたセットトップ・ボックス、ゲーム・コンソール）、もののインターネット（ＩｏＴ）デバイス（例えば、他のデバイスとの通信を可能にするソフトウェア、ファームウェア、および／またはハードウェアを有する物体またはもの）、テレビジョンまたはその他のディスプレイ・デバイス、自動車用コンピュータ等というような、種々の異なる種類のコンピューティング・デバイスの内任意のものを使用することができる。このように、システム１００を実現するコンピューティング・デバイスは、かなりのメモリおよびプロセッサ・リソースを有する完全リソース・デバイス(full resource device)（例えば、パーソナル・コンピュータ、ゲーム・コンソール）から、メモリおよび／または処理リソースが限られた低リソース・デバイス（例えば、従前からのセットトップ・ボックス、手持ち式ゲーム・コンソール）までの範囲に及ぶことができる。
【００１６】
[0022]  システム１００は、ホスト・オペレーティング・システム１０２、管理および監視サービス１０４、ならびにウェブ・プロキシ１０６を含む。管理および監視サービス１０４は、本明細書において論ずるように、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスに対して、１つ以上の管理ポリシを規定する(provide)サービスを表す。ウェブ・プロキシ１０６は、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスから離れてアクセスされる１つ以上のネットワーク・リソース１２２（１）、...、１２２（ｍ）へのアクセスを制御する機能を表す。例えば、１つ以上の実施形態では、ウェブ・プロキシ１０６は、以下で更に詳しく論ずるように、ホスト・オペレーティング・システム１０２に認証を要求することによって、ネットワーク１０８からアクセスされる１つ以上のリソースへのアクセスを制御する。あるいは、１つ以上の実施形態では、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスは、ウェブ・プロキシとは独立して、ネットワーク１０８を通じてネットワーク・リソースにアクセスする。ネットワーク１０８は、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、公衆電話網、イントラネット、その他の公衆および／または企業ネットワーク、その組み合わせ等というような、データ・ネットワークの機能を表す。したがって、ネットワーク１０８を通じてアクセスされるネットワーク・リソース１２２（１）、．．．、１２２（ｍ）は、ウェブ・サイト、ウェブ・アプリケーション、電子メール、文書等を含んでもよい。
【００１７】
[0023]  １つ以上の実施形態では、ホスト・オペレーティング・システム１０２、管理および監視サービス１０４、ならびにウェブ・プロキシ１０６は、同じコンピューティング・デバイスの一部として実装される。あるいは、管理および監視サービス１０４、および／またはウェブ・プロキシ１０６の少なくとも一部は、ホスト・オペレーティング・システム１０２を実装するデバイスとは別個で離れているデバイス上に実装することができる。例えば、１つ以上の実施形態では、管理および監視サービス１０４は、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスから離れて位置する移動デバイス管理（ＭＤＭ）サービスとして実装される。代わりにまたは加えて、管理および監視サービス１０４は、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスから離れて位置する軽量ディレクトリ・アクセス・プロトコル（ＬＤＡＰ）サーバとして実装されてもよい。同様に、ウェブ・プロキシ１０６は、ホスト・オペレーティング・システム１０２を実装するデバイスから離れて実装されてもよい。
【００１８】
[0024]  管理および監視サービス１０４は、ホスト・オペレーティング・システム１０２にポリシを規定する（例えば、プッシュする）ように構成されている。１つ以上の実施形態では、管理および監視サービス１０４は、システムの起動時に、毎日等というように、規則的な間隔で、ホスト・オペレーティング・システム１０２にポリシをプッシュするように構成されている。あるいは、管理および監視サービス１０４は、ホスト・オペレーティング・システムに対するポリシに更新があるときはいつでも、ホスト・オペレーティング・システム１０２にポリシをプッシュするように構成することもできる。ここでは、ホスト・オペレーティング・システム１０２にプッシュされるポリシを引用するが、管理および監視サービス１０４は、任意の相応しいデータ送信方法（例えば、ストリーミング）によって、ホスト・オペレーティング・システムにポリシを規定するように構成されている。あるいは、１つ以上の実施形態では、ホスト・オペレーティング・システム１０２が、管理および監視サービス１０４からポリシを取得する（例えば、プルする）ように構成されている。管理および監視サービス１０４は２つの役割を有する。第１に、管理および監視サービス１０４は、ホスト・オペレーティング・システム１０２のユーザには通常アクセス可能な個々のネットワーク・リソース１２２（１）、．．．、１２２（ｍ）に対する管理構成を受け取る。１つ以上の実施形態では、これらのネットワーク・リソースには、個々の信頼レベルが関連付けられる。例えば、経営者が、この経営者のウェブ・サイトに関連付けられたあらゆるネットワーク・リソースを、高い信頼レベルを有すると定めてもよい。したがって、ホスト・オペレーティング・システム１０２に対するポリシは、経営者のウェブ・サイトに関連付けられたネットワーク・リソースはいずれも信頼できるネットワーク・リソースであることを示す。管理および監視サービス１０４の２番目の役割は、個々のネットワーク・リソースに関連するアクティビティの監視に関して、ホスト・オペレーティング・システム１０２からフィードバックを受け取り、この監視情報(monitored information)を、管理者に対する報告に編集することである。この編集された報告は、管理者によって、ホスト・オペレーティング・システム１０２に対する、信頼できるネットワーク・リソースに関するポリシを更新するために使用することができる。
【００１９】
[0025]  管理および監視サービス１０４は、ホスト・オペレーティング・システム１０２を実装するデバイスの管理者から、ポリシ構成データを受け取るように構成することもできる。本明細書において論ずる場合、ポリシは、信頼できるウェブ・サイト、信頼できるネットワーク位置、信頼できるネットワーク等のような、信頼できるネットワーク・リソースに関する情報を記述する。管理および監視サービス１０４が管理者からポリシを受け取ると、管理および監視サービス１０４は、ポリシ更新を、目標とする１組のコンピューティング・デバイスに送るように構成されている。管理および監視サービス１０４がポリシ更新を送る先である、目標の１組のコンピューティング・デバイスは、１つ以上の実施形態にしたがって、管理者によって定められる。例えば、先に論じた企業環境では、管理および監視サービス１０４は、この企業に関連付けられた各コンピューティング・デバイスに、ポリシ更新を送るように構成されている。ポリシ更新を受け取った各コンピューティング・デバイスは、ネットワーク・リソースにアクセスしようとするときに使用するために、このポリシをローカルに格納するように構成されている。
【００２０】
[0026]  以下で更に詳しく論ずるように、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスは、アクセスされたネットワーク・リソース１２２（１）、．．．、１２２（ｍ）に関連するアクティビティを動的に監視するように構成されている。ネットワーク・リソースに関連するアクティビティは、監視され、ホスト・オペレーティング・システム１０２においてローカルに更新され、管理および監視サービス１０４に逆に伝達される。このように、ホスト・オペレーティング・システム１０２のユーザに、信頼できるネットワーク・リソースの正確なリストを供給するために、管理および監視サービス１０４を連続的に更新することができる。
【００２１】
[0027]  また、ホスト・オペレーティング・システム１０２は、ハードウェア・ベースの仮想化セキュリティ分離（ＨＶＳＩ）サブシステム１１０、ポリシ・マネージャ１１２、１つ以上のアプリケーション１１４、ネットワーク・フィルタ１１６、コンテナ・マネージャ１１８、およびセキュリティ・サブシステム１２０を含む。また、ホスト・オペレーティング・システム１０２は、複数（ｎ）のコンテナ１３０（１）、．．．、１３０（ｎ）として図示されている１つ以上のコンテナを管理する。
【００２２】
[0028]  ＨＶＳＩサブシステム１１０は、要求されたネットワーク・リソースが信頼できるか否か判定するために、ネットワーク分離クエリー・アプリケーション・プログラミング・インターフェース（ＡＰＩ）をコールする機能を表す。これらのネットワーク分離クエリーＡＰＩは、例えば、ポリシ・マネージャ１１２によって露出される。ＨＶＳＩサブシステム１１０が、要求されたネットワーク・リソースが信頼できると判定した場合、ＨＶＳＩサブシステム１１０は、要求されたネットワーク・リソースにホスト・オペレーティング・システム１０２がアクセスすることを許可する。逆に、ＨＶＳＩサブシステム１１０が、要求されたネットワーク・リソースが信頼できないと判定した場合、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２にコンテナ１３０（１）、．．．、１３０（ｎ）の内１つ以上を有効化させ、１つ以上の有効化したコンテナに、信頼できないネットワーク・リソースにアクセスすることを許可する。ＨＶＳＩサブシステム１１０の機能については、以下で更に詳しく論ずる。１つ以上の実施形態によれば、ＨＶＳＩサブシステム１１０は、ポリシ・マネージャ１１２と通信することによって、要求されたネットワーク・リソースが信頼できるか否か判定する。
【００２３】
[0029]  ポリシ・マネージャ１１２は、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスに対する１つ以上のポリシを取得して格納する機能を表す。例えば、１つ以上の実施形態では、ポリシ・マネージャ１１２は、ホスト・オペレーティング・システム１０２に対して１つ以上の信頼できるネットワーク・リソースを定める、１つ以上の管理ポリシを得て格納する。１つ以上の実施態様によれば、ポリシ・マネージャ１１２は、管理および監視サービス１０４から管理ポリシを取得して格納する。代わりにまたは加えて、ポリシ・マネージャ１１２は、ネットワーク１０８からというように、離れたソースから１つ以上の管理ポリシを取得して格納する。加えてまたは代わりに、ポリシ・マネージャ１１２は、ホスト・オペレーティング・システム１０２を実装するデバイスのユーザから、１つ以上の管理ポリシを受け取って格納する。
【００２４】
[0030]  アプリケーション１１４は、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスの１つ以上のプロセッサによって実行可能な１つ以上のアプリケーションを含む。例えば、アプリケーション１１４はウェブ・ブラウザー・アプリケーションを含んでもよい。代わりにまたは加えて、アプリケーション１１４は、電子メール・アプリケーション、ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、視覚プレゼンテーション・アプリケーション等のようなアプリケーションを含んでもよい。
【００２５】
[0031]  ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２を実装するデバイスを、ネットワーク１０８のようなネットワークに接続する機能を表す。ネットワーク・フィルタ１１６は、少なくとも１つの物理ネットワーク・インターフェース・カードと、少なくとも１つのホスト仮想ネットワーク・インターフェース・カードとを含む。加えて、ネットワーク・フィルタ１１６は、フィルタ・ドライバーも含み、フィルタ・ドライバーは、要求されたネットワーク・リソースがネットワーク１０８からホスト・オペレーティング・システム１０２に送信されるときに、これらを傍受するように構成されている。これらの傍受されたネットワーク・リソースは、次に、ＨＶＳＩサブシステム１１０によって、ポリシ・マネージャ１１２に格納されている１つ以上のポリシと比較される。このようにして、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２が、いずれの信頼できないネットワーク・リソースにアクセスするのも防止することを確保する。同様に、ネットワーク・フィルタ１１６は、コンテナ１３０（１）、．．．、１３０（ｎ）の１つ以上がいずれの信頼できるネットワーク・リソースにもアクセスできないことを確保する。例えば、１つ以上の実施形態では、ネットワーク・フィルタ１１６は、信頼できるネットワーク・リソースの個々のパケットに関連するデータを変更して、信頼できるネットワーク・リソースがホスト・オペレーティング・システム１０２によってのみアクセスされ、コンテナ１３０（１）、．．．、１３０（ｎ）の内１つ以上のいずれによってアクセスされるのも禁止されることを確保するように構成されている。
【００２６】
[0032]  加えて、ホスト・オペレーティング・システム１０２はコンテナ・マネージャ１１８を含む。コンテナ・マネージャ１１８は、システム１００におけるコンテナ１３０（１）、．．．、１３０（ｎ）のスケジューリングを管理し、いつの時点にどのコンテナ１３０（１）、．．．、１３０（ｎ）をホスト・オペレーティング・システム１０２上で実行するか決定する。また、コンテナ・マネージャ１１８は、システム１００の個々のユーザに１つ以上のコンテナ１３０（１）、．．．、１３０（ｎ）を有効化し、システム１００の他のユーザは、個々のユーザに作成された１つ以上のコンテナ１３０（１）、．．．、１３０（ｎ）にアクセスできないことを確保する役割も担う。また、コンテナ・マネージャ１１８は、遠隔測定データ(telemetry)およびセキュリティ指標のために、いずれの１つ以上の作成したコンテナ１３０（１）、．．．、１３０（ｎ）からもログおよびトレースを収集するように構成されている。例えば、１つ以上の実施形態では、コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２上にインストールされているウィルス対策アプリケーションを調べて、収集した情報を解釈し、監視済みのデータをＨＶＳＩサブシステム１１０に供給する。ホスト・オペレーティング・システム１０２を実行するコンピューティング・デバイスにおける物理プロセッサおよび／またはプロセッサ・コアの数に応じて、一度に１つのコンテナ１３０（１）、．．．、１３０（ｎ）を実行することができ（例えば、１つのコアを有する１つのプロセッサの場合）、または代わりに、複数のコンテナ１３０（１）、．．．、１３０（ｎ）を同時に実行することができる（例えば、複数のプロセッサおよび／または複数のプロセッサ・コアの場合）。加えて、１つ以上の実施形態では、コンテナ・マネージャ１１８は、コンテナ１３０（１）、．．．、１３０（ｎ）の内１つ以上の中で行われるユーザ構成変更を監視するように構成されている。例えば、コンテナ・マネージャ１１８はコンテナ１３０（１）、．．．、１３０（ｎ）の１つにおいてアクセスされたウェブ・サイトに関連するユーザの好みに対する変更を検出するように構成されている。ホスト・オペレーティング・システム１０２は、コンテナにおいてこれらの検出された変更を使用し、ホスト・オペレーティング・システムにおいてアクセスされた１つ以上の関連ウェブ・サイトにこれらを適用するように構成されている。
【００２７】
[0033]  セキュリティ・サブシステム１２０は、セキュリティ・ポリシをホスト・オペレーティング・システム１０２に対して施行する機能を表す。セキュリティ・サブシステム１２０は、ホスト・オペレーティング・システム１０２を実装するデバイスにログオンしたユーザを確認し、ログオンしたユーザに対するパスワード変更を処理し(handle)、ログオンしたユーザに対してアクセス・トークンを作成する等を行うように構成されている。
【００２８】
[0034]  各コンテナ１３０（１）、．．．、１３０（ｎ）を異なる方法で実装することができる。コンテナの１つの型式では、コンテナ１３０を、プロセス・コンテナと呼ばれるものとして実装することができる。プロセス・コンテナでは、このコンテナ内におけるアプリケーション・プロセスは、これらがあたかもそれら自体の個々のシステム（例えば、コンピューティング・デバイス）上で動作しているかのように実行する。これは、名前空間分離を使用して遂行される。ホスト・オペレーティング・システム１０２は、ネームプレース分離を実施する。名前空間分離によって、ホスト・オペレーティング・システム１０２の共有部分と、ファイル・システム、コンフィギュレーション、ネットワーク等のような、各コンテナに特定的なオペレーティング・システムの分離部とから成る複合ビュー(composed view)を、コンテナ内のプロセスに提供する。
【００２９】
[0035]  コンテナの他の型式では、コンテナ１３０を仮想化コンテナ(virtualized container)と呼ばれるものとして実装することができる。仮想化コンテナでは、この仮想化コンテナは軽量仮想機械(lightweight virtual machine)において実行される。軽量仮想機械は、仮想機械に割り当てられた特定のホスト物理メモリを有するのではなく、仮想アドレス・バックアップ・メモリ・ページ(virtual address backed memory pages)を有する。このため、仮想機械に割り当てられるメモリ・ページをページ・ファイルに交換することができる。軽量仮想機械の使用により、コンテナ内において実行するプロセス間に、セキュリティおよび分離の強化が得られる。つまり、プロセス・コンテナはプロセス分離またはサイロに基づくプロセス分離(silo-based process isolation)を使用して、それらの封じ込め(containment)を達成するのに対して、仮想化コンテナは、仮想機械に基づく保護を使用して、通常のプロセス境界が対応できるものを超えた、更に高いレベルの分離を達成する。また、物理メモリを使用して、仮想機械においてコンテナを実行することもできる。
【００３０】
[0036]  １つ以上の実施形態では、各コンテナ１３０（１）、．．．、１３０（ｎ）は１つ以上の仮想アプリケーション１３２（１）、．．．、１３２（ｎ）を含む。１つ以上の仮想アプリケーション１３２（１）、．．．、１３２（ｎ）の個々の１つ１つは、ホスト・オペレーティング・システム１０２上のアプリケーション１１４の個々の１つ１つのインスタンスに対応する。つまり、仮想アプリケーション１３２（１）、．．．、１３２（ｎ）は、アプリケーション１１４の１つがホスト・オペレーティング・システム１０２上で信頼できるネットワーク・リソースにアクセスするのと同じ方法で、コンテナ１３０（１）、．．．、１３０（ｎ）の１つ以上において、信頼できないネットワーク・リソースにアクセスするために使用することができる。
【００３１】
[0037]  以上、ハードウェア・ベースの仮想化セキュリティ分離を実施するシステム例について検討したので、これより、１つ以上の実施形態にしたがってハードウェア・ベースの仮想化セキュリティ分離を実施するシステムのアーキテクチャ例について検討する。
【００３２】
システム・アーキテクチャ
[0038]  図２は、１つ以上の実施形態による、ハードウェア・ベースの仮想化セキュリティ分離のためのシステム・アーキテクチャ例２００を示す。ここではハードウェア・ベースの仮想化セキュリティ分離として論ずるが、本明細書において論ずる技法は、仮想化ベースの分離（ＶＢＩ：virtualization based isolation）と呼んでもよいことは認められてしかるべきであり、理解されよう。システム・アーキテクチャ２００は、少なくとも部分的に、コンピューティング・デバイスによって実現される。図１のシステム１００を実現するために使用することができるものの型式に関する先の論述と同様、種々の異なる型式のコンピュータ・デバイスの内任意のものを、システム・アーキテクチャ２００を実現するために使用することができる。
【００３３】
[0039]  図示する例では、システム・アーキテクチャ２００を実装するコンピューティング・デバイスは、２つの別々に分離された部分、即ち、ホスト・オペレーティング・システム１０２およびコンテナ１３０を含む。ホスト・オペレーティング・システム１０２は、図２の破線によって示されるように、信頼できないネットワーク・リソースに起因し得る攻撃または感染からホスト・オペレーティング・システムを保護するために、１つ以上のコンテナ１３０のいずれからも分離されている。
【００３４】
[0040]  ホスト・オペレーティング・システム１０２は、ＨＶＳＩサブシステム１１０、ポリシ・マネージャ１１２、ネットワーク・フィルタ１１６、コンテナ・マネージャ１１８、およびセキュリティ・サブシステム１２０を含むものとして示されている。加えて、ホスト・オペレーティング・システム１０２はアプリケーション２０２を含み、これは図１に示したアプリケーション１１４の１つであってもよい。アプリケーション２０２は、ＨＶＳＩライブラリ２０４を含む。その機能については以下で更に詳しく論ずる。
【００３５】
[0041]  コンテナ１３０は、仮想アプリケーション２０６を含む。仮想アプリケーション２０６は、ホスト・オペレーティング・システム１０２に含まれるアプリケーション２０２のインスタンスを表す。加えて、コンテナ１３０は、仮想セキュリティ・サブシステム２１０も含み、その機能についても以下で更に詳しく論ずる。加えて、コンテナ１３０は、ロギング・システム２１４も含み、これは、システム・アーキテクチャ２００を実装するデバイスによって有効化された１つ以上のコンテナ１３０内部におけるネットワーク・リソースのアクティビティを管理および監視するコンテンツ・マネージャ(content manager)１１８の機能を表す。
【００３６】
[0042]  ホスト・オペレーティング・システム１０２およびコンテナ１３０は、互いに分離されているが、仮想機械バス２１６を通じて通信可能に接続されている。仮想機械バス２１６は、ホストおよびコンテナの部分が互いに通信することを可能にする通信チャネルである。加えてまたは代わりに、ホスト・オペレーティング・システム１０２およびコンテナ１３０は、物理ネットワーク、仮想ネットワーク、簡単メッセージ・ブロック（ＳＭＢ：simple message block）プロトコル、またはリモート・プロシージャ・コール（ＲＰＣ）相互接続というような他の手段によって、通信可能に接続される。
【００３７】
[0043]  以上、ハードウェア・ベースの仮想化セキュリティ分離を実現するシステムのシステム・アーキテクチャについて検討したので、これより、システム・アーキテクチャ２００のホスト部分およびコンテナ部分に示される個々のコンポーネントの機能について検討する。
【００３８】
ＨＶＳＩサブシステム
[0044]  ＨＶＳＩサブシステム１１０は、システム・アーキテクチャ２００を実装するコンピューティング・デバイスにおいて、ハードウェア・ベースの仮想化セキュリティ分離を実施する機能を表す。ハードウェア・ベースの仮想化セキュリティ分離を実施するために、ＨＶＳＩサブシステム１１０は、ポリシ・マネージャ１１２、ネットワーク・フィルタ１１６、コンテナ・マネージャ１１８、セキュリティ・サブシステム１２０、アプリケーション２０２、および任意の１つ以上のコンテナ１３０と通信するように構成されている。１つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、システム・アーキテクチャ２００を実装するコンピューティング・デバイスの起動時に、自動的に開始される(launch) 。あるいは、ＨＶＳＩサブシステム１１０は、アプリケーション２０２がホスト・オペレーティング・システムによって開始されたときにアプリケーション２０２のＨＶＳＩライブラリ２０４によってというように、他の時点において開始される。
【００３９】
[0045]  ＨＶＳＩサブシステム１１０が開始されると、ユーザのコンテナが未だ存在しない場合、コンテナ・マネージャ１１８をコールして、システム・アーキテクチャ２００を実装するコンピューティング・デバイスにログオンしたユーザにコンテナを作成する。コンテナ・マネージャ１１８は、コンテナに接続する際に使用するために、ランダムなまたは擬似ランダムな一意のローカル・アカウント資格証明書を作成する。このローカル・アカウント資格証明書は、ホスト・オペレーティング・システム１０２だけに知らされており、ホスト・オペレーティング・システム１０２をコンテナに接続するために使用される。ホスト・オペレーティング・システム１０２とコンテナとの間におけるローカル・アカウント資格証明書のトランザクションは、ホスト・オペレーティング・システム１０２のユーザには透過的であり、悪意の攻撃または感染が、ホスト・オペレーティング・システム１０２の物理ネットワーク・インターネット接続を介してコンテナに接続するのを防止する。ホスト・オペレーティング・システム１０２が複数のユーザを有する実施形態では、コンテナ・マネージャ１１８は、個々のユーザに別々のコンテナを作成するように構成されている。別々の各コンテナは、ホスト・オペレーティング・システム１０２が、ログオンしたユーザに作成されたのではない任意のコンテナにアクセスするのを制限されるように、異なるランダムなまたは擬似ランダムな一意のローカル・アカウント資格証明書を有する。コンテナ・マネージャ１１８は、１つ以上のコンテナへのアクセスを許可する前に、関連するユーザ資格証明書を認証することによって、このコンテナ分離を確実に行う。
【００４０】
[0046]  次いで、ＨＶＳＩサブシステム１１０は、システム・アーキテクチャ２００を実装するコンピューティング・デバイス上で実行するアプリケーションが１つ以上の信頼できないネットワーク・リソースにアクセスしようとしていることをＨＶＳＩサブシステム１１０が検出するまで、コンテナを保留するようにコンテナ・マネージャ１１８に命令する。ＨＶＳＩサブシステム１１０は、ネットワーク・フィルタ１１６によってＨＶＳＩサブシステム１１０に提供される情報に基づいて、ホスト・オペレーティング・システムと１つ以上の離れたリソース位置との間における通信を監視するように構成されている。
【００４１】
[0047]  ホスト・オペレーティング・システム１０２がネットワーク・リソースにアクセスしようとすると、ＨＶＳＩサブシステム１１０はポリシ・マネージャ１１２と通信して、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定する。要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるとＨＶＳＩサブシステム１１０が判定した場合、ＨＶＳＩサブシステム１１０は、アプリケーション２０２のような、ホスト・オペレーティング・システム１０２におけるアプリケーションによって、信頼できるネットワーク・リソースがアクセスされることを許可する。ネットワーク・リソースが信頼できるか否か判定するためにＨＶＳＩサブシステム１１０が使用することができる、ネットワーク・リソースに関連する情報には、ファイル形式、アプリケーションの種類、ネットワーク・リソースのウィルス保護スキャンの結果、ウィルス・シグネチャー(virus signature)、電子メール・ソース情報、文書メタデータ、ＵＲＬ、ＩＰアドレス、ＴＣＰポート、ＤＮＳネーム、ハードウェア・デバイス識別子、またはこれらの組み合わせが含まれる。例えば、ＨＶＳＩサブシステム１１０が、アプリケーション２０２が特定のウェブ・ページまでナビゲートすることを要求していることを確認した場合、ＨＶＳＩサブシステム１１０は、この特定のウェブ・ページに関連する情報を、ポリシ・マネージャ１１２からの１つ以上のポリシと比較して、この特定のウェブ・ページが信頼できると判定したことに応答して、アプリケーション２０２がこの特定のウェブ・ページにアクセスすることを許可する。ＨＶＳＩサブシステム１１０は、例えば、特定のウェブ・ページの完全に認定されたドメイン・ネーム（ＦＱＤＮ：fully qualified domain name）、ドメイン・ネーム・サーバ（ＤＮＳ）を利用するルート・サイト・ドメイン・ネーム(root site domain name)、インターネット・プロトコル（ＩＰ）アドレス、または同様のユニフォーム・リソース・ロケーター（ＵＲＬ）アドレシング方法の内１つ以上に基づいて、特定のウェブ・ページが信頼できることを判定する。１つ以上の実施形態によれば、ＨＶＳＩサブシステム１１０は、加えて、コンピューティング・デバイス１０２から離れて実施され、悪意のあるネットワーク・リソースのリストを維持するクラウド・ベースのサービスから情報を受けることによって、ネットワーク・リソースが信頼できるか否か判定するように構成されている。例えば、ＨＶＳＩサブシステム１１０が、アプリケーション２０２が特定のウェブ・ページにナビゲートすることを要求していることを確認した場合、ＨＶＳＩサブシステム１１０は、ネットワーク１０８を通じてクラウド・ベースのサービスを参照して、この特定のウェブ・ページを、クラウド・ベースのサービスにおいて格納されている潜在的に悪意のあるネットワーク・リソースのリストと比較する。クラウド・ベースのサービスが、潜在的に悪意のあるネットワーク・リソースのリストにこの特定のウェブ・ページが含まれていることを示す場合、この特定のウェブ・ページは信頼できないと判定される。
【００４２】
[0048]  あるいは、ＨＶＳＩサブシステム１１０が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースではないと判定した場合、ＨＶＳＩサブシステム１１０は、コンテナ・マネージャ１１８に、コンテナ１３０を有効化して、信頼できないネットワーク・リソースを処理(handle)させる。ホスト・システムにおいて信頼できないネットワーク・リソースを要求しているアプリケーションの種類に基づいて、ＨＶＳＩサブシステム１１０は、コンテナ１３０内においてそのアプリケーションの仮想バージョンを開始するように、コンテナ・マネージャ１１８に命令する。例えば、ＨＶＳＩサブシステム１１０が、アプリケーション２０２が信頼できないネットワーク・リソースへのアクセスを要求していると判定した場合、ＨＶＳＩサブシステム１１０は、コンテナ１３０内部に仮想アプリケーション２０６を作成するように、コンテナ・マネージャ１１８に命令する。このように、コンテナ１３０は、丁度ホスト・オペレーティング・システム１０２が１つ以上の信頼できるネットワーク・リソースと相互作用するように、１つ以上の信頼できないネットワーク・リソースと相互作用するように構成されている。１つ以上の実施形態では、コンテナ１３０は、ホスト・オペレーティング・システム１０２を実装するデバイスによって有効化され、このデバイス上に実装される。あるいは、コンテナ１３０は、ホスト・オペレーティング・システム１０２を実装するデバイスとは異なるデバイスによって有効化され、このデバイス上に実装される。あるいは、コンテナ１３０は、オペレーティング・システム１０２を実装するデバイスとは異なるデバイスによって実装されるが、オペレーティング・システム１０２を実装するデバイスによって有効化される。
【００４３】
[0049]  ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスのユーザが、コンテナ１３０内部の仮想アプリケーションによってアクセスされた任意の１つ以上の信頼できないネットワーク・リソースを見るため、およびそうでなければ対話処理するために、ＨＶＳＩサブシステム１１０は、コンテナ１３０と通信して、仮想アプリケーション２０６のためのインターフェースを表示させるように構成されている。例えば、１つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、仮想機械バス２１６を使用して、リモート・デスクトップ・プロトコル（ＲＤＰ）のリモート・アプリケーション統合ローカリー（ＲＡＩＬ：remote applications integrated locally）モードを使用する。このように、ホスト・オペレーティング・システム１０２は、ホスト・オペレーティング・システム１０２を実装するデバイスのディスプレイ・デバイスにおいて、仮想アプリケーション２０６のインターフェースを表示することができる。１つ以上の実施形態では、このインターフェースは、ホスト・オペレーティング・システム１０２のユーザが、このインターフェースをホスト・オペレーティング・システム自体の一部であると認識するように構成されている。あるいは、ＨＶＳＩサブシステム１１０は、仮想アプリケーション２０６に対応するインターフェースを、表示されるインターフェースが１つ以上の信頼できないネットワーク・リソースに対応することの視覚的指示と共に表示するように構成されている。他の実施形態では、ＨＶＳＩサブシステム１１０は、Ｘウィンドウ・システムまたは代わりのリモート・デスクトップ実装(remote desktop implementation)を使用して、仮想アプリケーション２０６に対応するインターフェースを表示する。
【００４４】
[0050]  コンテナ・マネージャ１１８によってコンテナ１３０が有効化された後、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２およびコンテナ１３０からの全てのネットワーク・リソース・コールをフィルタリングする。例えば、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２からの信頼できないネットワーク・リソースに対するコールを全て阻止し、ホスト・オペレーティング・システム１０２からの信頼できるネットワーク・リソースに対するコールだけを許可するように命令する。同様に、ＨＶＳＩサブシステム１１０は、コンテナ１３０からの信頼できないネットワーク・リソースに対するコールを全て許可し、コンテナ１３０からの信頼できるネットワーク・リソースに対するコールを全て阻止するように、ネットワーク・フィルタ１１６に命令する。同様に、ＨＶＳＩサブシステム１１０は、コンテナ１３０からの信頼できないネットワーク・リソースに対するコールを全て許可し、コンテナ１３０からの信頼できるネットワーク・リソースに対するコールを全て阻止するように、ネットワーク・フィルタ１１６に命令する。
【００４５】
[0051]  ＨＶＳＩサブシステム１１０は、コンテナ１３０によってアクセスされた信頼できないネットワーク・リソースに関連する全てのアクティビティを監視するように、コンテナ・マネージャ１１８に命令するように構成されている。ＨＶＳＩサブシステム１１０が、コンテナ１３０において実行している仮想アプリケーション２０６の全てのインスタンスが終了したことの指示をコンテナ・マネージャ１１８から受けると、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２と、ホスト・オペレーティング・システム１０２によってアクセスされているあらゆるコンテナ１３０との間におけるあらゆる接続を終了する。次いで、ＨＶＳＩサブシステム１１０は、１つ以上のコンテナ１３０を保留するか、または終了する。例えば、１つ以上の実施形態では、ＨＶＳＩサブシステム１１０が、仮想アプリケーション２０６の処理が終了したことを確認すると、ＨＶＳＩサブシステム１１０はコンテナ１３０との接続を終了し、コンテナを保留して、信頼できないネットワーク・リソースを求める別の要求を待つ。あるいは、ＨＶＳＩサブシステム１１０が、システム・アーキテクチャ２００を実装するデバイスからユーザがログオフしたと判定した場合、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２によって有効化されたあらゆる１つ以上のコンテナ１３０を終了する。
【００４６】
[0052]  ポリシ・マネージャ１１２、ネットワーク・フィルタ１１６、コンテナ・マネージャ１１８、およびセキュリティ・サブシステム１２０というような、ホスト・オペレーティング・システム１０２のコンポーネントと通信することにより、ＨＶＳＩサブシステム１１０は、要求されたネットワーク・リソースが信頼できるか否か判定し、信頼できないネットワーク・リソースの分離コンテナへの開放を制限し、分離コンテナ内で実行する１つ以上のプロセスを管理するように構成されている。これによって、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２を実装するデバイスを、信頼できないネットワーク・リソースが原因となるおそれがあるカーネル・レベルの攻撃や感染から保護するために、ハードウェア・ベースの仮想化セキュリティ分離技法を実行することが可能になる。
【００４７】
[0053]  ハードウェア・ベースの仮想化セキュリティ分離を実行するホスト・オペレーティング・システムのシステム・アーキテクチャ例について検討したので、これより、１つ以上の実施形態によるホスト・オペレーティング・システムの個々のコンポーネントについて検討する。
【００４８】
ポリシ・マネージャ
[0054]  ポリシ・マネージャ１１２は、ホスト・オペレーティング・システムを実装するコンピューティング・デバイスに対する１つ以上のポリシを取得および格納するためのホスト・オペレーティング・システム１０２の機能を表す。例えば、ポリシ・マネージャ１１２は、図１に示す管理および監視サービス１０４から１つ以上のポリシを取得し格納するように構成されている。１つ以上のポリシの各々は、ホスト・オペレーティング・システム１０２がアクセスすることを許可された１つ以上の信頼できるネットワーク・リソースを指定する。加えて、ポリシは、１つ以上のポリシ・オブジェクト、およびポリシ・オブジェクトについての対応する１つ以上のセキュリティ・パラメータも指定することができる。これらのポリシ・オブジェクトおよび対応するセキュリティ・パラメータは、ホスト・オペレーティング・システムがどのように１つ以上の信頼できないネットワーク・リソースと相互作用すればよいかについて定める制約を規定する(provide)。
【００４９】
[0055]  例えば、ポリシ・オブジェクトは、ホスト・オペレーティング・システム１０２が、コンテナ１３０のような分離コンテナにおいて仮想アプリケーションを実装することを許可されているか否か識別することができる。このポリシ・オブジェクトについての対応するセキュリティ・パラメータが、ホスト・オペレーティング・システム１０２が仮想アプリケーションおよび分離コンテナを実行することを許可されていることを示す場合、ホスト・オペレーティング・システムは分離コンテナ１３０の仮想アプリケーション２０６において１つ以上の信頼できないネットワーク・リソースを開くことができる。代わりにまたは加えて、ポリシ・オブジェクトは、分離コンテナにおいて開くことを許可された特定の仮想アプリケーションを示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナにおいて仮想的に開くことを許可された１つ以上の特定の(specific)アプリケーションを識別することができる。代わりにまたは加えて、ポリシ・オブジェクトは、ホスト・オペレーティング・システム１０２が分離コンテナ１３０とホスト・オペレーティング・システム１０２自体との間でコピーしてもよいものを示す。対応するセキュリティ・パラメータは、分離コンテナ１３０とホスト・オペレーティング・システム１０２との間でコピーしてもよい１つ以上のファイル形式を指定する。代わりにまたは加えて、ポリシ・オブジェクトは、分離コンテナ１３０内で開かれた仮想アプリケーションについての印刷設定値を示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナ１３０において実行する仮想アプリケーション２０６が印刷してもよいか否か、そして印刷してもよい場合、１つ以上のプリンタ、アプリケーション、または仮想アプリケーション２０６が印刷することを許可されたファイル形式を示す。代わりにまたは加えて、ポリシ・オブジェクトは、仮想アプリケーション２０６に対するネットワーク・トラフィックを許可するか否か示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナ内においてネットワーク・トラフィックが許可される１つ以上の仮想アプリケーションを指定することができる。代わりにまたは加えて、ポリシ・オブジェクトは、仮想アプリケーション２０６のために背景タスクが許可されるか否か示す。対応するセキュリティ・パラメータは、分離コンテナ１３０内において背景タスクが許可される１つ以上の仮想アプリケーションを指定する。代わりにまたは加えて、ポリシ・オブジェクトは、コンテナにおいて実行する仮想アプリケーション２０６が、グラフィクス加速のためのコンピューティング・デバイスのＧＰＵのような、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスの１つ以上のハードウェア・リソースを利用することを許可されるか否か示す。
【００５０】
[0056]  以下の表は、以上で論じたような、１組のポリシ・オブジェクトおよび対応するセキュリティ・パラメータの例を示す。標準的なセキュリティ手順にしたがって、このポリシ例は、デフォルトの否定規則(deny rule)が暗に含まれるが、示されていない。しかしながら、先に論じたポリシ・オブジェクトおよび対応するセキュリティ・パラメータは一例であり、全てを余すことなく示す(exhaustive in scope)のではないことは認められ理解されよう。
【００５１】
【表１】
2019517694.tif 000003
【００５２】
[0057]  ホスト・オペレーティング・システム１０２が起動すると、ＨＶＳＩサブシステム１１０はポリシ・マネージャ１１２に接触して、ホスト・オペレーティング・システムのために、信頼できるネットワーク・リソースのリストを、任意のポリシ・オブジェクトおよび対応するセキュリティ・パラメータと共に取得する。ＨＶＳＩサブシステム１１０は、これらの信頼できるネットワーク・リソース、ポリシ・オブジェクト、および対応するセキュリティ・パラメータを集計し、この集計ポリシをホスト・オペレーティング・システム１０２に適用する。１つ以上の実施形態では、ホスト・オペレーティング・システム１０２がネットワーク・リソースにアクセスするためのアクションを実行することを要求する度に、またはアクセスしようとする度に、この集計ポリシを問い合わせる。例えば、ホスト・オペレーティング・システム１０２がポリシ・オブジェクト「コンテナ分離用仮想アプリケーション」に対応するセキュリティ・パラメータに含まれるアプリケーション２０２を開くことを要求したとき、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２に、分離コンテナ１３０内においてそのアプリケーション２０６の仮想バージョンを開かせる。
【００５３】
[0058]  加えて、ＨＶＳＩサブシステム１１０は、分離コンテナ（１つまたは複数）１３０の内１つ以上におけるアクティビティを監視して、これらのコンテナ（１つまたは複数）がいずれの信頼できるネットワーク・リソースへのアクセスも得られないことを確保する。例えば、ウェブ・ブラウザーの仮想バージョンが分離コンテナ１３０において実行しており、この仮想ウェブ・ブラウザーが、ポリシ・マネージャ１１２によって信頼できるネットワーク・リソースであると示されているネットワーク・リソースにアクセスしようとしていることをＨＶＳＩサブシステム１１０が検出した場合、ＨＶＳＩサブシステム１１０は、仮想ウェブ・ブラウザーがこの信頼できるネットワーク・リソースを開くこと、またそうでなければこれにアクセスすることを禁止し、代わりに、ホスト・オペレーティング・システム１０２上において対応するウェブ・ブラウザー内で、信頼できるネットワーク・リソースを開かせることができる。信頼できるネットワーク・リソースのアクセスおよび展開(opening)をホスト・オペレーティング・システム１０２に制限し、信頼できないネットワーク・リソースのアクセスおよび展開を１つ以上の分離コンテナ１３０に制限することによって、ＨＶＳＩサブシステム１１０は、信頼できるネットワーク・リソースがいずれの信頼できないネットワーク・リソースによっても変転されないことを確保する。
【００５４】
[0059]  信頼できるネットワーク・リソースのリスト、ポリシ・オブジェクト、および対応するセキュリティ・パラメータをポリシ・マネージャ１１２から受け取ることに加えて、ホスト・オペレーティング・システム１０２は、ホスト・オペレーティング・システムに対するポリシに影響を及ぼす可能性がある１つ以上のローカル・イベントを観察するように構成されている。例えば、仮想ウェブ・ブラウザーが分離コンテナ１３０内部で実行しているというシナリオについて検討する。ＨＶＳＩサブシステム１１０は、分離コンテナ１３０内部において仮想ウェブ・ブラウザーによってアクセスされる各ネットワーク・リソースの挙動を監視する。仮想ウェブ・アプリケーションが信頼できないネットワーク・リソースにナビゲートしたとき、信頼できないネットワーク・リソースのダウンロードが、コンテナ１３０のレジストリーに、予期しないやり方で書き込ませる可能性がある。以下で更に詳しく論ずるコンテナ・マネージャ１１８を使用して、ＨＶＳＩサブシステム１１０は、コンテナ１３０からデータを取得し、信頼できないネットワーク・リソースに対するローカル・ポリシの更新(updated local policy)を計算する。例えば、１つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、信頼できないネットワーク・リソースに関連付けられた印刷およびコピー設定を不能化する(disable)ことによって、信頼できないネットワーク・リソースに対するローカル・ポリシを更新する。ＨＶＳＩサブシステム１１０は、次いで、この取得したデータを集計し、図１に示す管理および監視サービス１０４のような、リモート・サービスに取得したデータを報告するように構成されている。１つ以上の実施形態によれば、ＨＶＳＩサブシステム１１０は、このローカル・ポリシを更新する際の追加情報を求めて、ウィルス対策アプリケーションのような、ローカルにインストールされているホスト・オペレーティング・システム１０２のアプリケーションを参照する。例えば、ＨＶＳＩサブシステム１１０は、１つ以上のウィルス対策アプリケーションを使用して、コンテナ１３０において信頼できないネットワーク・リソースをスキャンし、セキュリティ・レベルを信頼できないネットワーク・リソースに指定する。このように、ＨＶＳＩサブシステム１１０は、ポリシを継続的に更新し、更に、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスを、信頼できないネットワーク・リソースに対して保護するように構成されている。
【００５５】
[0060]  １つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２およびコンテナ１３０内におけるローカル・アクティビティに応答する、独立したホスト・ベースのポリシ・エンジンを実装する。この独立したホスト・ベースのポリシ・エンジンは、管理および監視サービス１０４への往復(round trip)を減らし、管理および監視サービスが多くのクライアントを管理することを可能にする。１つ以上の実施形態では、ポリシ・マネージャ１１２がテンプレートまたはシグネチャーを管理および監視サービス１０４から取得する。ポリシ・マネージャ１１２は、このテンプレートまたはシグネチャーをＨＶＳＩサブシステム１１０に供給する。コンテナ１３０が有効化されるとき、ＨＶＳＩサブシステム１１０は、ポリシ・テンプレートまたはシグネチャーからのパターンに基づいて、要求ポリシを計算し、コンテナ１３０において観察されたアクティビティと照合する。例えば、仮想ウェブ・アプリケーションがコンテナ１３０において実行しており、仮想ウェブ・アプリケーションがＵＲＬとしてアクセスしようとしているネットワーク・リソースが、ポリシ・テンプレートにおけるパターンと一致した場合、ＨＶＳＩサブシステム１１０はリスク・レベルを計算し、ポリシを更新する。これにより、許可アクション、阻止アクション、またはリダイレクト・アクションというような、特定のアクションが、コンテナ１３０内における仮想アプリケーションに動的に適用される結果となる。この実施形態では、ポリシは動的であり、ローカル評価およびポリシを管理および監視サービス１０４からＨＶＳＩサブシステム１１０に肩代わりさせる。
【００５６】
[0061]  代替例として、ユーザが新たなアプリケーションを信頼できないウェブ・サイトからダウンロードし、コンテナ１３０内部にインストールするというシナリオについて検討する。この例では、ＨＶＳＩサブシステム１１０は、ダウンロードされたアプリケーションを既存のポリシと突き合わせて評価し、分離コンテナ１３０において、ダウンロードされたアプリケーションに適用するポリシを計算する。１つ以上の実施形態では、この計算されたポリシは、同様のアプリケーションの１つ以上のポリシ・オブジェクトおよび対応するセキュリティ・パラメータに基づく。例えば、ダウンロードされたアプリケーションが電子メール・アプリケーションである場合、ＨＶＳＩサブシステム１１０は、他の電子メール・アプリケーションに関連する１つ以上のポリシ・オブジェクトおよび対応するセキュリティ・パラメータを識別し、ダウンロードされた電子メール・アプリケーションに対して同様のポリシ設定を適用する。ＨＶＳＩサブシステム１１０は、コンテナ１３０内部において、ダウンロードされたアプリケーションに関連するアクティビティを監視するように構成され、更にこの観察したアクティビティに基づいてローカル・ポリシを再計算するように構成されている。加えてまたは代わりに、コンテナ１３０内部において観察された任意の１つ以上のダウンロードされたアプリケーションまたはアクセスされたネットワーク・リソースのアクティビティを記述する情報が集計され、図１に示す管理および監視サービス１０４のようなリモート・サービスに伝達される。ある実施形態では、ホスト・オペレーティング・システム１０２は、コンテナ１３０内部で観察されたアクティビティを記述する情報に対してローカル分析を実行し、追加のセキュリティ・ポリシを計算する。例えば、ダウンロードされたアプリケーションが異常な挙動を呈している場合、ダウンロードされたアプリケーションを終了させ、コンテナを、このアプリケーションをダウンロードする以前における、その直前の動作状態にリセットすることができる。本明細書において論ずる場合、コンテナにおける異常挙動とは、例えば、コンテナ１３０のカーネルまたはオペレーティング・システムを改竄する試みであるとしてＨＶＳＩサブシステム１１０によって解釈されたインディケータを指す。
【００５７】
[0062]  ホスト・オペレーティング・システム１０２に対してポリシを施行するために、ＨＶＳＩサブシステム１１０は、ネットワーク・フィルタ１１６のような、１つ以上のネットワーク・フィルタを採用する。
【００５８】
ネットワーク・フィルタ
[0063]  ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２に対する着信および発信ネットワーク・トラフィックを傍受し検査する機能を表す。ネットワーク・フィルタ１１６は、能力の中でもとりわけ、ネットワーク・トラフィックを転送する、阻止する、および／または修正することを含む、ネットワーク・トラフィックのための施行機能を有する。例えば、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２と任意の１つ以上の分離コンテナ１３０との間における全てのネットワーク・トラフィックおよびデータ伝達を傍受し検査するように構成されている。同様に、ネットワーク・フィルタ１１６は、図１に示すネットワーク１０８のようなネットワークを通じてアクセスされる、ホスト・オペレーティング・システム１０２と任意の離れたリソース位置との間における全てのネットワーク・トラフィックおよびデータ伝達を傍受し検査するように構成されている。１つ以上の実施形態では、ホスト・オペレーティング・システム１０２を任意の１つ以上の分離コンテナ１３０とインターフェースするために、ネットワーク・フィルタ１１６は、仮想スイッチ、ホスト・オペレーティング・システムのための少なくとも１つのネットワーク・インターフェース・カード、および１つ以上の分離コンテナのための１つ以上の仮想ネットワーク・インターフェース・カードを含む。
【００５９】
[0064]  ポリシ・マネージャ１１２から受け取ったポリシを使用して、ＨＶＳＩサブシステム１１０は、コンテナ１３０が信頼できるネットワーク・リソースにアクセスできないことを確保するために、ネットワーク・フィルタ１１６とインターフェースする。同様に、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２がいずれの１つ以上の信頼できないネットワーク・リソースにもアクセスできないこと、またはそうでなければ開けないことを確保するために、ネットワーク・フィルタ１１６とインターフェースする。１つ以上の実施形態では、ネットワーク・フィルタ１１６は、信頼できるデータがホスト・オペレーティング・システム１０２に留まり、コンテナ１３０に流出しないことを確保するために、信頼できるネットワーク・リソースに関連する個々のパケットのデータを変更するように構成されている。以下で更に詳しく論ずるように、プロキシ認証のシナリオでは、ネットワーク・フィルタ１１６は、プロキシのトラバーサル(traversal)を確保し、資格証明書がコンテナに漏れること、またそうでなければコンテナによってアクセスされることを防止するために、資格証明書情報をネットワーク・トラフィックに注入する。ある実施形態では、ネットワーク・フィルタ１１６は、ネットワーク・トラフィックが、ＤＮＳ参照の間に問い合わせされたネットワーク・リソースにおいて発信するまたは終端することを検証する(validate)。これを遂行するために、許可されたネットワーク・リソースに基づく識別子を、コンテナの内部に封印し(plumbed)、１つ以上のネットワーク・リソース名と関連付ける。コンテナ内にあるネットワーク・スタックは、ネットワーク・トラフィック内にあるこれらの識別子を含む。ネットワーク・フィルタ１１６は、識別子がネットワーク・リソース名と一致するか否か検証する。検証が成功であれば、トラフィックを転送し、失敗であれば、トラフィックを欠落させる。ある実施形態では、ネットワーク・フィルタ１１６は、転送されたネットワーク・トラフィックから識別子を剥ぎ取る。
【００６０】
[0065]  １つ以上の実施形態によれば、ネットワーク・フィルタ１１６は仮想スイッチ拡張部(virtual switch extension)として実装される。あるいは、ネットワーク・フィルタ１１６は、ネットワーク・トラフィックを傍受する、検査する、転送する、修正する、および阻止することを含む、複数の能力を有する任意のモジュールとして実装される。他の実施形態では、ネットワーク・フィルタは、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスのファイアウォールまたはその他のセキュリティ・ソフトウェア内に組み込まれる。１つ以上の実施形態によれば、ポリシがホスト・オペレーティング・システムにおいて受け取られるときに、ネットワーク・フィルタ１１６はホスト・オペレーティング・システム１０２上にインストールされる。例えば、ネットワーク・フィルタ１１６は、ポリシ・マネージャ１１２が、図１に示す管理および監視サービス１０４からポリシを受け取るときにインストールされてもよい。しかしながら、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２を実装するデバイスのリソース（例えば、メモリ）を必要とするので、１つ以上の実施形態では、ホスト・オペレーティング・システム上にポリシが存在しないときには、ネットワーク・フィルタ１１６はインストールされない。このように、信頼できないネットワーク・リソースを、コンテナ１３０のような、分離コンテナに逸らせるポリシがないとき、リソースのオーバーヘッドを低減するために、ネットワーク・フィルタ１１６をインストールしない。
【００６１】
[0066]  ある実施形態では、ネットワーク・フィルタ１１６は、リソースに接続するために使用するネットワーク・インターフェースを強制する(enforce)。例えば、ホスト・オペレーティング・システム１０２が企業内にある場合、セキュリティは確保される。企業内では、ホスト・オペレーティング・システム１０２上で実行するアプリケーション２０２は、単に任意の利用可能な物理インターフェース（例えば、イーサネット（登録商標）、Ｗｉ−Ｆｉ等）を使用すればよい。しかしながら、ホスト・オペレーティング・システム１０２が公衆ネットワーク上（例えば、企業外部の喫茶店の公衆Ｗｉ−Ｆｉ）にあるとき、ネットワーク・フィルタ１１６は、アプリケーション２０２およびホスト・オペレーティング・システム１０２上で実行するその他のアプリケーションが、ＶＰＮインターフェースのような、ネットワーク・セキュリティを高める特定のネットワーク・インターフェースを使用することだけを許可するのでもよい。ある構成では、ネットワーク・フィルタ１１６は、コンテナ１３０内で実行する１つ以上のアプリケーションが、ＶＰＮを使用せずに、公衆ネットワークにアクセスすることを許可する。１つのネットワーク・インターフェースがホスト・オペレーティング・システム１０２の通信のために分離され、異なるネットワーク・インターフェースがコンテナ１３０の通信のために分離されている実施形態では、ネットワーク・フィルタ１１６は、コンテナに対するネットワーク通信が、異なるネットワーク・インターフェースに分離されていることの指示を、コンテナ１３０のネットワーク・スタックに与えるように構成されている。
【００６２】
[0067]  ＨＶＳＩサブシステム１１０は、ネットワーク・フィルタ１１６をコールし、ネットワーク・フィルタ１１６に、それ自体を、ホスト・オペレーティング・システム１０２を実装するデバイスのネットワーク・ポートに取り付けさせる(attach)。一旦ネットワーク・フィルタ１１６がネットワーク・ポートに取り付けられたなら、ネットワーク・トラフィックを監視、フィルタリング、および／または阻止することができる。１つ以上の実施形態では、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２に対して更にポリシを施行するために、ローカルＤＮＳサーバを含む。例えば、１つ以上の実施形態では、ネットワーク・フィルタ１１６のＤＮＳサーバは、個々のネットワーク・リソースの出所を検証するために、ネットワーク・リソースを対応するＩＰアドレスにマッピングする。１つ以上の実施態様では、ネットワーク・フィルタ１１６は、１つ以上の入力／出力制御システム（ＩＯＣＴＬ）を含む。入力／出力制御システムは、ホスト・オペレーティング・システム１０２および任意の１つ以上のコンテナ１３０の双方に対して、ネットワーク・トラフィックを許可または阻止するように構成されている。他の実施態様では、この構成は、ＡＰＩ、ファイル、またはコマンド・シェルを通じて実行される。
【００６３】
[0068]  ネットワーク・フィルタ１１６は、ネットワーク・トラフィック（例えば、ＨＴＴＰトラフィック）を監視して、ホスト・オペレーティング・システム１０２およびコンテナ１３０が、ホスト・オペレーティング・システムまたはコンテナそれぞれに許可されていないネットワーク・リソースにアクセスしていないことを確認するように構成されている。ＨＴＴＰトラフィックを監視するために、ネットワーク・フィルタ１１６は、ホスト・オペレーティング・システム１０２および／または任意の１つ以上の分離コンテナ１３０との間におけるネットワーク・トラフィックを容易にする、図１に示すウェブ・プロキシ１０６のような、１つ以上のウェブ・プロキシを用いて、ＨＴＴＰヘッダ検査を実行する。あるいは、１つ以上の実施形態によれば、ネットワーク・フィルタ１１６はそれ自体のＨＴＴＰプロキシを実装するように構成されている。
【００６４】
[0069]  代理環境(proxied environment)において、そしてネットワーク変更を跨いでネットワーク通信機能をサポートするために、ネットワーク・フィルタ１１６はネットワーク・アドレス変換器（ＮＡＴ：network address translator)を含む。ＮＡＴは、コンテナ１３０に、ホスト・オペレーティング・システム１０２の外部のネットワークに到達するために、プライベート・ネットワークおよびゲートウェイを提供する。１つ以上の実施形態によれば、ＮＡＴは外部ネットワーク・プロキシ構成(outside network proxy configuration)を転送し、外部ネットワーク変更通知をホスト・オペレーティング・システム１０２に転送するように構成されている。例えば、１つ以上の実施形態では、ネットワーク・フィルタ１１６は、Ｗｉ−Ｆｉ（ＩＥＥＥ８０２．１１）ネットワーク・アダプターがＷｉ−Ｆｉネットワークの範囲から離れるまたは入るときというような、ネットワーク接続ステータスが変化したときに、ＮＡＴを使用してネットワーク変更通知をホスト・オペレーティング・システム１０２に転送する。加えて、ネットワーク・フィルタ１１６のＮＡＴは、コンテナ１３０が異なるネットワークを正しく識別できることを確保するために、外部ネットワーク同定(identity)をエミュレートするように構成されている。例えば、ＮＡＴは、ホストの外部ネットワーク・ゲートウェイのメディア・アクセス制御（ＭＡＣ）アドレスを取り込み、それを、ＮＡＴによって与えられるプライベート・ネットワーク・ゲートウェイＭＡＣアドレスとして再利用することができる。これによって、コンテナ１３０のＨＴＴＰソフトウェアが、ＨＴＴＰキャッシュを適切に整列する(align)ことを確保し、同じネットワークに再接続するときにプロキシ発見が重複しないことを確保する。外部ネットワーク同定をエミュレートすることによって、ネットワーク・フィルタ１１６のＮＡＴは、ネットワーク再接続性能を著しく向上させ、ホスト・オペレーティング・システム１０２のユーザのために、ユーザ体験を改善する。加えて、ネットワーク・フィルタ１１６のＮＡＴは、コンテナ１３０のような１つ以上の分離コンテナにおいて実行している１つ以上の仮想アプリケーション２０６のために、「低電力接続スタンバイ」(low-power connected standby)設定をホスト・オペレーティング・システム１０２に転送するように構成されている。これによって、ホスト・オペレーティング・システム１０２は、１つ以上のアクティブな分離コンテナ１３０において実行しているいずれの仮想アプリケーション２０６も維持する(keep alive)することが可能になる。１つ以上の実施形態では、ＮＡＴの機能がホスト・オペレーティング・システム１０２の異なるコンポーネントに肩代わりされる。例えば、ネットワーク・フィルタ１１６、ＨＶＳＩサブシステム１１０、またはコンテナ・マネージャ１１８の内の１つまたは組み合わせによって、ホスト・オペレーティング・システム１０２の外部のネットワークに到達するためにプライベート・ネットワークおよびゲートウェイをプロビジョニングする、ネットワーク変更通知を転送する、外部ネットワーク同定をエミュレートする、および低電力接続スタンバイ設定を転送する機能を実行することができる。
【００６５】
[0070]  ＨＶＳＩサブシステム１１０は、ネットワーク・フィルタ１１６と相互作用して、１つ以上の実施形態にしたがってウェブ・プロキシ認証を実行するように構成されている。例えば、多くの企業システムは、この企業の個々のユーザに対するインターネット・アクセスを制御するために、１つ以上のウェブ・プロキシを使用する。これらのウェブ・プロキシは、ユーザ名および関連付けられたパスワードのようなユーザ資格証明書を催促することによって、個々のユーザまたはアプリケーションが、ウェブ・サイトのような、ネットワーク・リソースにアクセスすることを許可する前に、認証を要求する。したがって、ネットワーク・フィルタ１１６は、図１に示すウェブ・プロキシ１０６のような、ウェブ・サイトへのアクセスを容易にするために必要とされるウェブ・プロキシを識別するように構成されている。しかしながら、分離コンテナにおいて実行している仮想アプリケーションがウェブ・プロキシ認証を要求するというシナリオでは、セキュリティ上の懸念が発生する。例えば、１つ以上の信頼できないネットワーク・リソースが開いており分離コンテナ１３０において実行している場合、ユーザ資格証明書への無許可アクセスを獲得し、関連するユーザ・アカウントのセキュリティを危険に晒すおそれがある。
【００６６】
[0071]  コンテナ１３０において実行する仮想アプリケーション２０６が、ウェブ・プロキシ認証を要求する際に、継ぎ目のないユーザ体験を提供するために、ＨＶＳＩサブシステム１１０は、ユーザ資格証明書をコンテナ１３０に提供するのではなく、ホスト・オペレーティング・システム１０２からウェブ・プロキシにユーザ資格証明書を提供するように構成されている。ＨＶＳＩサブシステム１１０は、分離コンテナ内に仮想セキュリティ・サブシステム２１０を実装することによって、コンテナ１３０において実行する仮想アプリケーション２０６のために、ユーザ資格証明書をウェブ・プロキシに提供するように構成されている。仮想セキュリティ・サブシステム２１０は、ホスト・オペレーティング・システム１０２のセキュリティ・サブシステム１２０とインターフェースするように構成されている。例えば、１つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、仮想ウェブ・アプリケーション２０６が、ウェブ・プロキシ認証を要求するネットワーク・リソースをコールしていることを検出する。ＨＶＳＩサブシステム１１０は、仮想セキュリティ・サブシステム２１０がホスト・オペレーティング・システム１０２のセキュリティ・サブシステム１２０とインターフェースできるように、分離コンテナ内に仮想セキュリティ・サブシステム２１０を実装するように構成されている。仮想セキュリティ・サブシステム２１０とセキュリティ・サブシステム１２０との間の通信は、仮想機械バス２１６を通じてというように、ＨＶＳＩサブシステム１１０によって確立された接続を通して実行することができる。
【００６７】
[0072]  コンテナ１３０内における仮想ウェブ・アプリケーション２０６がウェブ・プロキシを介してネットワーク・リソースにアクセスしようとすると、ウェブ・プロキシは、ユーザ資格証明書を求めるチャレンジを返送する。このシナリオでは、仮想セキュリティ・サブシステム２１０は、ウェブ・プロキシに認証を与えるために、ホスト・オペレーティング・システム１０２のセキュリティ・サブシステム２１０をコールするように構成されている。このコールを受け取ったことに応答して、セキュリティ・サブシステム２１０は、ダミー資格証明書ブロブを生成するように構成されている。ダミー資格証明書ブロブは、ユーザ資格証明書を実際に資格証明書ブロブ内に収容するのではなく、ユーザ資格証明書の所有(ownership)を示す。本明細書において論ずる場合、ダミー・ブロブがユーザ資格証明書の擬似認証を指すこともある。セキュリティ・サブシステム１２０は、生成したダミー資格証明書ブロブを仮想セキュリティ・サブシステム２１０に戻す。次いで、仮想セキュリティ・サブシステム２１０は、仮想ウェブ・アプリケーションがダミー資格証明書ブロブを、ウェブ・プロキシへのＨＴＴＰ応答の中に埋め込むことができるように、このダミー資格証明書ブロブを仮想ウェブ・アプリケーション２０６に提供する。このように、コンテナ１３０は、実際のユーザ資格証明書をホスト・オペレーティング・システム１０２から受け取ることなく、ユーザ資格証明書の所有を証明するように構成されている。１つ以上の実施形態によれば、ダミー・ブロブ内における資格証明書所有の証明は、ハッシュ・セキュリティ関数を実際の資格証明書に適用し、ハッシングした資格証明書をダミー・ブロブ内に含ませることによって実行される。これによって、コンテナ１３０において実行しているかもしれないいずれの信頼できないネットワーク・リソースによっても、ユーザ資格証明書が漏洩されないことを確保する。
【００６８】
[0073]  あるいは、仮想セキュリティ・サブシステム２１０が、ユーザ資格証明書を求めるウェブ・プロキシ要求をホスト・オペレーティング・システム１０２のセキュリティ・サブシステム１２０に転送する場合、セキュリティ・サブシステム１２０は２つの資格証明書ブロブを生成するように構成されている。セキュリティ・サブシステム１２０によって生成される第１の資格証明書ブロブは、前述のようなダミー資格証明書ブロブである。セキュリティ・サブシステム１２０によって生成される第２の資格証明書ブロブは、ウェブ・プロキシによって要求された実際のユーザ資格証明書を含む。このシナリオでは、ダミー資格証明書ブロブは、コンテナ１３０内にある仮想セキュリティ・サブシステム２１０に提供され、実際のユーザ資格証明書を含むブロブは、ホスト・オペレーティング・システム１０２内にあるネットワーク・フィルタ１１６に提供される。先に論じたように、仮想ウェブ・アプリケーション２０６は、ダミー資格証明書ブロブを仮想セキュリティ・サブシステム２１０から受け取り、このダミー資格証明書ブロブを、ウェブ・プロキシへのＨＴＴＰ応答の中に埋め込むように構成されている。ホスト・オペレーティング・システム１０２およびコンテナ１３０双方からのネットワーク・トラフィックの全ては、ネットワーク・フィルタ１１６を通してフィルタリングされるので、ネットワーク・フィルタ１１６は、ＨＴＴＰ応答をコンテナから傍受し、ＨＴＴＰ応答をウェブ・プロキシに送信する前に、ダミー・ブロブを実際のユーザ資格証明書ブロブと交換するように構成されている。１つ以上の実施形態によれば、ホスト・オペレーティング・システム１０２がネスト状コンピューティング環境において機能している場合、この資格証明書ブロブの交換は、ネスト状環境の各レイヤーにおいて、複数回実行されることがある。あるいは、１つ以上の実施形態では、ネットワーク・フィルタ１１６が、許可されたネットワーク・リソースの識別子をコンテナ１３０内に封印し、先に論じたように、ＤＮＳ参照中に問い合わせされたネットワーク・リソースにおいて、ネットワーク・トラフィックが発信しそして終端することを検証する。
【００６９】
[0074]  本明細書において論ずるように、ホスト・オペレーティング・システム１０２が、ポリシ・マネージャ１１２、ネットワーク・フィルタ１１６、およびセキュリティ・サブシステム１１０を使用して、信頼できないネットワーク・リソースにアクセスしようとしていると、ＨＶＳＩサブシステム１１０が判定すると、ＨＶＳＩサブシステム１１０は、コンテナ・マネージャ１１８と通信し、１つ以上のコンテナ１３０を管理し、信頼できないネットワーク・リソースにアクセスしないか監視する。
【００７０】
コンテナ・マネージャ
[0075]  コンテナ・マネージャ１１８は、信頼できないネットワーク・リソースにアクセスするために、ホスト・オペレーティング・システム１０２から分離された１つ以上のコンテナ１３０を有効化する役割を果たす。本明細書において論ずる場合、コンテナ１３０のようなコンテナを有効化するには、１つ以上の新たなコンテナを作成すること、または１つ以上の保留中のコンテナの実行を再開することが含まれる。加えて、コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２にログインした個々のユーザのために１つ以上のコンテナを有効化し、ホスト・オペレーティング・システムのいずれの他のユーザも、個々のユーザのために有効化された１つ以上のコンテナにアクセスするのを制限されることを確保するように構成されている。コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２にログインしたユーザとコンテナ１３０とのマッピングを確認する(ensure)。ホスト・オペレーティング・システム１０２に複数のユーザがあり、複数のコンテナがある実施形態では、コンテナ・マネージャ１１８は、ログオンしたユーザの識別情報(identity)を見て、直接それを１つ以上の対応するコンテナに関連付けるように構成されている。この制限によって、他のユーザがコンテナを見ること、またはそうでなければ対話処理することを防止する。
【００７１】
[0076]  コンテナ・マネージャ１１８は、更に、コンテナ１３０内部におけるアクティビティを記述するログおよびトレースを収集するように構成されている。コンテナ・マネージャ１１８は、これらのログおよびトレースを使用して、コンテナ使用状況を監視して、遠隔測定データおよびセキュリティ指標を求めるように構成されている。１つ以上の実施形態によれば、コンテナ・マネージャ１１８は、コンテナ１３０において監視したアクティビティに関連するあらゆるセキュリティ問題を解釈するために、ウィルス対策アプリケーションのような、ホスト・オペレーティング・システム１０２上にインストールされているローカル・アプリケーションを調べる。コンテナ・マネージャ１１８は、この監視情報を集計し、この監視情報をＨＶＳＩサブシステム１１０に提供するように構成されている。代わりにまたは加えて、コンテナ・マネージャ１１８は、この監視情報を、図１に示す管理および監視サービス１０４のような、１つ以上の離れたソースに提供するように構成されている。
【００７２】
[0077]  ホスト・オペレーティング・システム１０２が起動するとき、ＨＶＳＩサブシステム１１０は、ポリシが存在するか否か判定する。１つ以上の実施形態では、ＨＶＳＩサブシステム１１０は、本明細書において論ずるように、ポリシ・マネージャ１１２と通信することによって、ポリシが存在するか否か判定する。ＨＶＳＩサブシステム１１０が、ホスト・オペレーティング・システム１０２上にポリシが存在すると判定した場合、コンテナ・マネージャ１１８は、ホスト・オペレーティング・システムによって要求された任意の信頼できないネットワーク・リソースを処理する(handle)ために、コンテナ１３０を有効化するように構成されている。コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２と通信して、コンテナ・ベース・イメージが存在するか否か判定することによって、コンテナ１３０を有効化するように構成されている。コンテナ・マネージャ１１８が、コンテナ・ベース・イメージが存在しないと判定した場合、コンテナ・マネージャ１１８は、コンテナ・ベース・イメージを作成するように構成されている。コンテナ・マネージャ１１８が、コンテナ・ベース・イメージが存在すると判定した場合、またはコンテナ・マネージャ１１８がコンテナ・ベース・イメージを作成した後、コンテナ・マネージャ１１８は、ユーザがホスト・オペレーティング・システム１０２にログオンするのを待つ。
【００７３】
[0078]  コンテナ・ベース・イメージは、コンテナ１３０のような、それ自体のオペレーティング・システムを含む分離コンテナを作成および有効化するために必要な情報を収容する。例えば、１つ以上の実施形態では、コンテナ・ベース・イメージは、ホスト・オペレーティング・システム１０２がどのようにレジストリー設定をコンテナに対して設定するか記述する情報を収容する。レジストリー設定に関する情報が要求されるのは、コンテナ１３０内部で開かれている一部の仮想アプリケーションが、このアプリケーションのホスト・オペレーティング・システム１０２上で開かれるバージョンとは異なる挙動を示すからである。加えてまたは代わりに、コンテナ・ベース・イメージは、コンテナ１３０において実行される仮想アプリケーション内においてどのようにユーザ・アカウントを作成するかについて記述する情報を含む。加えてまたは代わりに、コンテナ・ベース・イメージは、アクティブなときにコンテナ１３０によって要求される可能性がある、メモリ、プロセッサ、ディスク、またはネットワークというような、割り当てリソースの量に関する情報を含む。
【００７４】
[0079]  ユーザがホスト・オペレーティング・システム１０２にログオンすると、コンテナ・マネージャ１１８は、コンテナ・ベース・イメージに対応するコンテナが存在するか否か判定する。コンテナ・マネージャ１１８が、コンテナ・ベース・イメージに対するコンテナが存在しないと判定した場合、コンテナ・マネージャ１１８は、コンテナ１３０のような、コンテナを作成することができる。コンテナ・ベース・イメージが正確にホスト・オペレーティング・システム１０２を表すことを確保するために、コンテナ・マネージャ１１８は、既存のあらゆるコンテナ・ベース・イメージを無効化し、オペレーティング・システムの更新後に、１つ以上の新たなコンテナ・ベース・イメージを作成するように構成されている。このように、コンテナ・マネージャ１１８は、コンテナ・ベース・イメージがあらゆる更新後のホスト・オペレーティング・システムの境界を含み、これによって、コンテナ・ベース・イメージから作成されるコンテナが、ホスト・オペレーティング・システム１０２と共に最新であり続けることを確保する。ホスト・オペレーティング・システム１０２の更新の場合、コンテナ・マネージャ１１８は、開いているあらゆるコンテナを強制的に閉じるか、またはコンテナにおけるユーザ・アクティビティが中止するまで待ち、コンテナ・ベース・イメージを削除して新たなコンテナ・ベース・イメージを作成するように構成されている。コンテナを作成した後、コンテナ・マネージャ１１８は、このコンテナを保留モードに入れる。コンテナが保留モードにあるとき、このコンテナが消費するホスト・オペレーティング・システム１０２を実装するデバイスのリソースが減少し、これによってリソースのオーバーヘッドを低減する。コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２が１つ以上の信頼できないネットワーク・リソースへのアクセスを要求するまで、１つ以上の分離コンテナ１３０を保留モードに維持するように構成されている。
【００７５】
[0080]  ＨＶＳＩサブシステム１１０が、ホスト・オペレーティング・システム１０２が１つ以上の信頼できないネットワーク・リソースへのアクセスを要求していることを検出したとき、ＨＶＳＩサブシステム１１０は、１つ以上の信頼できないネットワーク・リソースを処理する(handle)ために、１つ以上の保留されているコンテナを有効化するように、コンテナ・マネージャ１１８に命令する。１つ以上の実施形態では、１つ以上のコンテナは、ホスト・オペレーティング・システム１０２を実装しているコンピューティング・デバイス上にホストされている。あるいは、１つ以上のコンテナの内少なくとも１つが、ホスト・オペレーティング・システム１０２を実装するコンピューティング・デバイスから離れたコンピューティング・デバイス上にホストされてもよい。コンテナが異なるコンピューティング・デバイス上にホストされているシナリオでは、コンテナ・マネージャ１１８は、異なるコンピューティング・デバイスと通信して、リモート・コンテナを管理および監視するように構成されている。コンテナ・マネージャ１１８は、コンテナを作成するよりも、保留されているコンテナを有効化する方が速く行うことができるので、１つ以上の保留コンテナを維持することによって、ホスト・オペレーティング・システム１０２は、信頼できないネットワーク・リソースを求める要求に素早く応えることが可能になる。
【００７６】
[0081]  ホスト・オペレーティング・システム１０２が１つ以上の信頼できないネットワーク・リソースへのアクセスを要求していると判定したことに応答して、コンテナ・マネージャ１１８は、信頼できないネットワーク・リソースを要求している、ホスト・オペレーティング・システム上のアプリケーションを特定するように構成されている。コンテナ・マネージャ１１８は、信頼できないネットワーク・リソースを処理する(handle)ために、コンテナ１３０内においてアプリケーションの仮想バージョンを開始するように構成されている。コンテナ・マネージャ１１８がコンテナ１３０内部でアプリケーションの仮想バージョンを有効化した後、ＨＶＳＩサブシステム１１０は、ホスト・オペレーティング・システム１０２を実装するデバイスのディスプレイにおいて、仮想アプリケーションのインターフェースを表示するように構成されている。
【００７７】
[0082]  コンテナ・マネージャ１１８は、ＨＶＳＩサブシステム１１０と通信して、ホスト・オペレーティング・システム１０２上に、そしてコンテナがリモート・コンピューティング・デバイス上にホストされている場合はコンテナ１３０内に、しかるべきハードウェア仮想化技術が存在することを確保するように構成されている。コンテナ・マネージャ１１８が適正に機能するためには、コンテナ・マネージャ１１８は、分離コンテナのライフサイクルおよび関連するネットワーク・スタックを管理するために、ホスト・オペレーティング・システム１０２のアプリケーション・プログラミング・インターフェース（ＡＰＩ）が利用可能であることを確認するように構成されている。
【００７８】
[0083]  コンテナ・マネージャ１１８は、ロギング・システム２１４を使用して、コンテナ１３０内部のアクティビティを監視するように構成されている。このように、コンテナ・マネージャ１１８は、ネットワークのあらゆる疑わしい挙動、またはコンテナ１３０内部においてアクセスされたネットワーク・リソースのあらゆる疑わしい挙動、コンテナ１３０がディスク空間を余りに多く占めすぎているか否か等を検出するように構成されている。ロギング・システム２１４から得られた情報に基づいて、コンテナ・マネージャ１１８は、１つ以上のコンテナ１３０をどのように管理するか、ＨＶＳＩサブシステム１１０に通知することができる。例えば、１つ以上の実施形態では、コンテナ・マネージャ１１８は、コンテナ１３０内部における１つ以上の信頼できないネットワーク・リソースへのアクセスが完了したことを確認し、この情報をＨＶＳＩサブシステム１１０に伝達する。この情報を受け取ったことに応答して、ＨＶＳＩサブシステム１１０は、追加の信頼できないネットワーク・リソースを処理する(handle)ためにコンテナ１３０が後に必要とされるまで、コンテナ１３０を保留モードに入れる。
【００７９】
[0084]  また、コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２のユーザを監視し、いつログオフしたか判定するように構成されている。ホスト・オペレーティング・システム１０２のユーザがログオフしたと判定したことに応答して、コンテナ・マネージャ１１８はこの情報をＨＶＳＩサブシステム１１０に提供する。ＨＶＳＩサブシステム１１０は、ユーザがログオフしたことに応答して、１つ以上のコンテナ１３０を削除するように構成されている。本明細書において論ずるように、コンテナを削除することによって、そのコンテナ内に含まれるあらゆる情報も消去される。
【００８０】
[0085]  また、コンテナ・マネージャ１１８は、ホスト・オペレーティング・システム１０２からのＤＮＳおよびハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）情報を共有して、ウェブ・ブラウジング性能、および分離コンテナの１つ以上におけるその他のネットワーク・アクティビティを改善するように構成されている。１つ以上の実施形態では、コンテナ・マネージャ１１８は、コンテナ１３０がネットワーク・リソースにアクセスした際における以前のインスタンスから作られたＤＮＳクエリーのキャッシュ、およびインターネット・データ・ファイルまたはウェブ・サイト・クッキーのようなＨＴＴＰデータを維持し、信頼できないウェブ／サイトにアクセスする要求が今後コンテナにおいて行われるときに、以前のユーザの好み、構成、または設定の内１つ以上を呼び出す(remember)ことを可能にする。
【００８１】
[0086]  コンテナ１３０内において監視されているアクティビティに関する情報をコンテナ・マネージャ１１８から受け取ることに加えて、ＨＶＳＩサブシステム１１０は、１つ以上のＨＶＳＩライブラリ２０８からコンテナ・アクティビティに関する情報を受け取るようにも構成されている。
【００８２】
ＨＶＳＩライブラリ
[0087]  本明細書において論ずる場合、ＨＶＳＩライブラリとは、小型、軽量、非同期ライブラリであり、アプリケーション内部で静的または動的にリンクされるように構成されている。例えば、図２に示すシステム・アーキテクチャ２００では、アプリケーション２０２はＨＶＳＩライブラリ２０４を含み、仮想アプリケーション２０６は仮想ＨＶＳＩライブラリ２０８を含む。各ＨＶＳＩライブラリは、そのそれぞれのアプリケーション内部で実行するように構成され、アプリケーションからＨＶＳＩサブシステム１１０へのネットワーク・リソース・コールを傍受し転送する役割を果たす。
【００８３】
[0088]  ホスト・オペレーティング・システム１０２のユーザがアプリケーション２０２を介してネットワーク・リソースを開こうとすると、ＨＶＳＩライブラリ２０４は、要求されたネットワーク・リソースに関する情報をＨＶＳＩサブシステム１１０に伝達する。ＨＶＳＩサブシステム１１０は、この情報を、ポリシ・マネージャ１１２から入手した１つ以上のポリシと比較し、要求されたネットワーク・リソースが信頼できるネットワーク・リソースか否か判定する。ＨＶＳＩサブシステム１１０が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであると判定した場合、ＨＶＳＩサブシステム１１０は、アプリケーション２０２がこの要求されたネットワーク・リソースにアクセスすることを許可する。逆に、ＨＶＳＩサブシステム１１０が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースでないと判定した場合、ＨＶＳＩサブシステム１１０は、信頼できないネットワーク・リソースをコンテナ１３０内における仮想アプリケーション２０６に転送する。
【００８４】
[0089]  コンテナ１３０内における仮想ＨＶＳＩライブラリ２０８は、仮想アプリケーション２０６からのネットワーク・リソース要求を傍受して、要求されたネットワーク・リソースに関する情報をＨＶＳＩサブシステム１１０に伝達するように構成されている。ＨＶＳＩサブシステム１１０は、同様に、この情報を、ホスト・オペレーティング・システム１０２に対する任意のポリシと比較し、信頼できるネットワーク・リソースがコンテナ１３０に供給されないことを確保するように構成されている。１つ以上の実施形態では、仮想アプリケーションは、両立性を確保するために、仮想ＨＶＳＩライブラリ２０８にリンクしない。これらの実施形態では、ロギング・システム２１４およびネットワーク・フィルタ１１６が、仮想アプリケーションからのネットワーク・リソース要求を傍受して、要求されたネットワーク・リソースに関する情報をＨＶＳＩサブシステム１１０に伝達するように動作する。
【００８５】
[0090]  以上、信頼できないネットワーク・リソースに関連する攻撃または感染からコンピューティング・デバイスを保護するために、ハードウェア・ベースの仮想化セキュリティ分離を実施するシステムのシステム・アーキテクチャについて検討したので、これより、１つ以上の実施形態による手順例について検討する。
【００８６】
手順例
[0091]  図３は、１つ以上の実施形態にしたがって、ハードウェア・ベースのセキュリティ分離を実施するプロセス例３００を示すフローチャートである。プロセス３００は、図１のシステム１００のようなシステムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス３００は、１組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス３００は、ハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離の実施についての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【００８７】
[0092]  プロセス３００において、ネットワーク・リソースへのアクセス試行を検出する（アクト３０２）。アクセス試行が検出されるのは、ユーザ、管理者、プログラム、アプリケーション、またはシステムのその他のエンティティが、このシステムから離れて位置する１つ以上の場所に、１つ以上のネットワーク・リソースを要求したときである。例えば、ネットワーク・リソースへのアクセス試行は、システムのユーザが、ウェブ・アプリケーションを使用して、ウェブ・ページにナビゲートしようとしたときに検出される。
【００８８】
[0093]  ネットワーク・リソースへのアクセス試行を検出したことに応答して、プロセス３００は先に進んで、ネットワーク・リソースが信頼できるか否か判定する（アクト３０４）。ネットワーク・リソースが信頼できるか否かの判定は、ネットワーク・リソースを、ホスト・オペレーティング・システム上に格納されているポリシまたはホスト・オペレーティング・システムによって離れてアクセスされるポリシのいずれかと比較することによって行われる。例えば、１つ以上の実施形態では、ホスト・オペレーティング・システムは、図１のポリシ・マネージャ１１２にというように、ローカルにポリシを格納する。このポリシは、信頼できるネットワーク・リソースのリストを列挙する。代わりにまたは加えて、図１の管理および監視サービス１０４からというように、ホスト・オペレーティング・システムから離れている管理および監視サービスからポリシを受け取る。加えてまたは代わりに、ホスト・オペレーティング・システムが、このホスト・オペレーティング・システムおよび関連するコンテナにおけるネットワーク・リソース・アクティビティに関連するアクティビティを監視し、これに基づいてポリシをローカルに更新する。本明細書において論ずる場合、信頼できるネットワーク・リソースの最新リストを維持するために、ポリシを継続的に更新することができる。
【００８９】
[0094]  ネットワーク・リソースが信頼できるネットワーク・リソースであると判定したことに応答して、プロセス３００は、ホスト・オペレーティング・システム上のアプリケーションがこのネットワーク・リソースにアクセスすることを許可する（アクト３１２）。例えば、プロセス３００が図１のシステム１００によって実行され、ネットワーク・リソースが信頼できるネットワーク・リソースであると判定した場合、プロセス３００は、ホスト・オペレーティング・システム１０２上のアプリケーション１１４の内１つが、信頼できるネットワーク・リソースにアクセスすることを許可する。
【００９０】
[0095]  ネットワーク・リソースが信頼できるネットワーク・リソースでないと判定したことに応答して、プロセス３００は、ホスト・オペレーティング・システム上においてハードウェア・ベースの仮想化セキュリティ分離がイネーブルされているか否か判定する（アクト３０６）。ハードウェア・ベースの仮想化セキュリティ分離がイネーブルされていないとプロセスが判定した場合、本プロセスは、ホスト・オペレーティング・システム上のアプリケーションに、信頼できないネットワーク・リソースにアクセスすることを許可する（アクト３１２）。したがって、本明細書において論ずるようなハードウェア・ベースの仮想化セキュリティ分離をイネーブルしていないホスト・オペレーティング・システムは、このホスト・オペレーティング・システム上のアプリケーションが、信頼できないネットワーク・リソースにアクセスすることを許可し、これによって、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースからの悪意の攻撃または感染に露出させる。
【００９１】
[0096]  逆に、プロセス３００が、ハードウェア・ベースの仮想化セキュリティ分離がイネーブルされていると判定した場合、本プロセスは先に進みコンテナを有効化する（アクト３０８）。本明細書において論ずる場合、コンテナを有効化するアクトは、１つ以上の実施形態にしたがってコンテナを作成するアクトを含む。代わりにまたは加えて、コンテナを有効化するアクトは、保留中のコンテナを識別し、この保留中のコンテナの処理を再開するアクトを含む。本明細書において論ずる場合、コンテナは、ホスト・オペレーティング・システム１０２のような、ホスト・オペレーティング・システムから離れた分離ランタイム環境を表す。コンテナは、ホスト・オペレーティング・システムのカーネルとは別のそれ自体のカーネルを含み、したがって、ホスト・オペレーティング・システムに導かれる可能性がある信頼できないネットワーク・リソースに関連するカーネル・レベルの攻撃から保護する。したがって、コンテナが感染した(compromised)としても、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースに関連するあらゆる感染や攻撃から分離され保護される。
【００９２】
[0097]  コンテナを有効化したことに応答して、ホスト・オペレーティング・システムはコンテナがネットワーク・リソースにアクセスすることを許可する（アクト３１０）。ホスト・オペレーティング・システムは、信頼できるネットワーク・リソースがコンテナによってアクセスされないことを確保するために、コンテナによってコールされたネットワーク・リソースおよび１つ以上の追加のネットワーク・リソースに関連する、コンテナにおけるアクティビティを監視し続ける。同様に、本システムは、信頼できないネットワーク・リソースがホスト・オペレーティング・システムによってアクセスされないことも確保する。
【００９３】
[0098]  以上、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースに関連する攻撃または感染から保護するために、ホスト・オペレーティング・システムにおいてハードウェア・ベースの仮想化セキュリティ分離を実施する手順例について検討したので、これより、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するために利用することができる手順例について検討する。
【００９４】
[0099]  図４は、１つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するプロセス例４００を示すフローチャートである。
【００９５】
[00100]  プロセス４００は、図１のホスト・オペレーティング・システム１０２のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス４００は、１組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス４００は、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【００９６】
[00101]  プロセス４００において、ホスト・オペレーティング・システムが起動する（アクト４０２）。ホスト・オペレーティング・システムが起動した後、ホスト・オペレーティング・システムは先に進んで、コンテナ・ベース・イメージが存在するか否か判定する（アクト４０４）。
【００９７】
[00102]  ホスト・オペレーティング・システムが、コンテナ・ベース・イメージが存在しないと判定した場合、ホスト・オペレーティング・システムは先に進んで、コンテナ・ベース・イメージを作成する（アクト４０６）。ホスト・オペレーティング・システムが、コンテナ・ベース・イメージが存在すると判定した場合、またはコンテナ・ベース・イメージを作成したことに応答して、ホスト・オペレーティング・システムはユーザのログオンまで待つ（アクト４０８）。ユーザは、ユーザ名、パスワード等のような、ユーザに一意に関連付けられた１つ以上の資格証明書を入力することによって、ホスト・オペレーティング・システムにログオンすることができる。
【００９８】
[00103]  ユーザがログオンした後、ホスト・オペレーティング・システムは、ログオンしたユーザのコンテナが存在するか否か判定する（アクト４１０）。本明細書において論ずる場合、コンテナは個々のユーザに一意であり、ホスト・オペレーティング・システムから離れた分離ランタイム環境において、ユーザが信頼できないネットワーク・リソースと相互作用することを可能にする。
【００９９】
[00104]  ホスト・オペレーティング・システムが、ログオンしたユーザにはコンテナが存在しないと判定した場合、ホスト・オペレーティング・システムは先に進んで、ログオンしたユーザにコンテナを作成する（アクト４１２）。ホスト・オペレーティング・システムは、本明細書において論ずる技法の内任意の１つ以上にしたがって、ログオンしたユーザにコンテナを作成するように構成されている。
【０１００】
[00105]  ホスト・オペレーティング・システムが、ログオンしたユーザにコンテナが存在すると判定した場合、またはホスト・オペレーティング・システムがログオンしたユーザにコンテナを作成した後、ホスト・オペレーティング・システムは先に進んで、ログオンしたユーザのコンテナを有効化する（アクト４１４）。このように、ホスト・オペレーティング・システムは、ユーザがホスト・オペレーティング・システムにログオンしたときホスト・オペレーティング・システムによって要求された任意の信頼できないネットワーク・リソースを処理するために準備されているコンテナを有効化する。
【０１０１】
[00106]  以上、ホスト・オペレーティング・システムを信頼できないネットワーク・リソースから保護するために、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化する手順例について検討したので、これより、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理する手順例について検討する。
【０１０２】
[00107]  図５は、１つ以上の実施形態にしたがってハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理するプロセス例５００を示すフローチャートである。
【０１０３】
[00108]  プロセス５００は、図１のホスト・オペレーティング・システム１０２のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス５００は、１組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス５００は、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【０１０４】
[00109]  プロセス５００において、ユーザがホスト・オペレーティング・システムにログオンし、ログオンしたユーザのコンテナが有効化された後、ホスト・オペレーティング・システムはこのコンテナを保留する（アクト５０２）。コンテナを保留することによって、ホスト・オペレーティング・システムは、このホスト・オペレーティング・システムを実装するデバイスが、アクティブなコンテナを維持するために必要とするシステム・リソースの量を減らす。コンテナを作成するよりも、保留中のコンテナを再開する方が一層迅速に行うことができるので、プロセス５００を実装するホスト・オペレーティング・システムは、信頼できないネットワーク・リソースにアクセスする要求に対して、素早く応答するように構成されている。
【０１０５】
[00110]  プロセス５００を実装するホスト・オペレーティング・システムは、信頼できないネットワーク・リソースへのアクセス試行を検出するまで、ネットワーク・リソースを求める要求を監視し続ける（アクト５０４）。信頼できないネットワーク・リソースへのアクセス試行を検出するアクトは、要求されたネットワーク・リソースを記述する情報を、本明細書において論ずるように、プロセス５００を実装するホスト・オペレーティング・システムに対するポリシと比較することによって実行される。例えば、１つ以上の実施形態では、プロセス５００を実装するホスト・オペレーティング・システムのユーザが、ポリシによって信頼できるウェブ・サイトとして定められていないウェブ・サイトにアクセスしようとする。
【０１０６】
[00111]  信頼できないネットワーク・リソースへのアクセスを検出したことに応答して、プロセス５００を実装するホスト・オペレーティング・システムは、保留中のコンテナを有効化する（アクト５０６）。一旦保留中のコンテナを有効化したなら、ホスト・オペレーティング・システムは、コンテナにおいて実行しているアプリケーションの仮想インスタンスが信頼できないネットワーク・リソースにアクセスすることを許可する。ホスト・オペレーティング・システムは、仮想機械バスを通じてコンテナと通信し、アプリケーションの仮想インスタンスをインストールおよび有効化し、更にアプリケーションの仮想インスタンスのインターフェースを表示させるように構成することができる。このように、コンテナは、ホスト・オペレーティング・システムから分離された制約ランタイム環境(contained runtime environment)において１つ以上の信頼できないネットワーク・リソースを動作させつつ、プロセス５００を実装するホスト・オペレーティング・システムのユーザが、１つ以上の信頼できないネットワーク・リソースとインターフェースすることを許可する。
【０１０７】
[00112]  プロセス５００を実装するホスト・オペレーティング・システムは、トリガ・イベントが検出されるまで（アクト５０８）、またはホスト・オペレーティング・システムが、任意の１つ以上の信頼できないネットワーク・リソースへのアクセスが終了したと判定するまで（アクト５１０）、コンテナをアクティブ状態に維持するように構成されている。例えば、プロセス５００を実装するホスト・オペレーティング・システムが、ウェブ・アプリケーションにおいて開かれている１つ以上のウェブ・サイトを、信頼できないネットワーク・リソースであるとして識別した場合、本システムは、ユーザがウェブ・アプリケーションを閉じたことに応答して、１つ以上の信頼できないネットワーク・リソースへのアクセスが終了したことを確認する(identify)ことができる。ホスト・オペレーティング・システムが、１つ以上の信頼できないネットワーク・リソースへのアクセスが終了したと判定した場合、ホスト・オペレーティング・システムは、コンテナを保留する（アクト５０２）。コンテナがいずれの信頼できないネットワーク・リソースにもアクセスしていないときにコンテナを保留することによって、ホスト・オペレーティング・システムは、アクティブなコンテナを維持するために必要とされるシステム・リソースの量を減らす。同様に、コンテナを削除するのではなく、コンテナを保留することによって、ホスト・オペレーティング・システムは、１つ以上の追加の信頼できないネットワーク・リソースへのアクセス試行を検出したときに、保留中のコンテナを容易に有効化することができる。
【０１０８】
[00113]  トリガ・イベントを検出したことに応答して、ホスト・オペレーティング・システムは、コンテナを削除するように構成されている（アクト５１２）。本明細書において論ずる場合、トリガ・イベントとは、プロセス５００を実装するホスト・オペレーティング・システムのユーザがログオフしたことを検出することを指すとしてもよい。加えてまたは代わりに、トリガ・イベントは、異常な挙動がコンテナにおいて検出されたときに検出される。
【０１０９】
[00114]  以上、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースに関連する攻撃および感染から保護するために、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理する手順例について検討したので、これより、ホスト・オペレーティング・システム上でハードウェア・ベースの仮想化セキュリティ分離を実施するために利用することができる手順例について検討する。
【０１１０】
[00115]  図６は、１つ以上の実施形態にしたがって、ホスト・オペレーティング・システム上においてハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス６００を示すフローチャートである。
【０１１１】
[00116]  プロセス６００は、図１のホスト・オペレーティング・システム１０２のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス６００は、１組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス６００は、ハードウェア・ベースの仮想化セキュリティ分離のために１つ以上のコンテナを使用するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のために１つ以上のコンテナを使用することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【０１１２】
[00117]  プロセス６００において、ホスト・オペレーティング・システムはアプリケーションを実行する（アクト６０２）。このアプリケーションは、ウェブ・アプリケーション、ワード・プロセッシング・アプリケーション、電子メール・アプリケーション等のような、任意の種類のアプリケーションとしてもよい。
【０１１３】
[00118]  ホスト・オペレーティング・システムは、アプリケーションがネットワーク・リソースにアクセスしようとしていることを検出する（アクト６０４）。ホスト・オペレーティング・システムは、本明細書において論ずるような、ネットワーク・フィルタを使用してネットワーク通信を監視することによって、アプリケーションがネットワーク・リソースへのアクセスを要求していることを検出するように構成されている。
【０１１４】
[00119]  ホスト・オペレーティング・システムにおいて実行しているアプリケーションがネットワーク・リソースへのアクセスを要求していることを検出したことに応答して、ホスト・オペレーティング・システムは、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定する（アクト６０６）。ホスト・オペレーティング・システムは、ネットワーク・リソースを、本明細書において論ずるような、ホスト・オペレーティング・システムに対する１つ以上のポリシと比較することによって、ネットワーク・リソースが信頼できないと判定するように構成されている。
【０１１５】
[00120]  ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムから分離されたコンテナを有効化するように構成されている（アクト６０８）。本明細書において論ずる場合、ホスト・オペレーティング・システムから分離されたコンテナは、ホスト・オペレーティング・システムのカーネルとは別個でありこれから分離されたそれ自体のカーネルを含み、これによって、ホスト・オペレーティング・システムをカーネル攻撃から保護する。
【０１１６】
[00121]  ホスト・オペレーティング・システムが分離コンテナ(isolated container)を有効化した後、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースを要求したアプリケーションの仮想バージョンを、分離コンテナ内で開始する(launch)（アクト６１０）。分離コンテナ内で開始されたアプリケーションの仮想バージョンは、ホスト・オペレーティング・システム上で実行するアプリケーションが、要求したネットワーク・リソースを処理する(handle)のと同様に、要求したネットワーク・リソースを処理する(handle)ように構成されている。
【０１１７】
[00122]  分離コンテナにおいてアプリケーションの仮想バージョンを開始したことに応答して、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースを分離コンテナに渡し、分離コンテナにおいて実行しているアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する（アクト６１２）。分離コンテナにおいてアプリケーションのこのバージョンを開始したことに応答して、ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムを実装するデバイスのディスプレイにおいて、分離コンテナ内で動作しているアプリケーションのバージョンのために、インターフェースを表示するようにも構成されている（アクト６１４）。このように、ホスト・オペレーティング・システムは、分離コンテナによってアクセスされた１つ以上の信頼できないネットワーク・リソースにホスト・オペレーティング・システムを露出することなく、ユーザが、分離コンテナ内で開始されたアプリケーションの仮想バージョンとインターフェースすることを可能にする。
【０１１８】
[00123]  分離コンテナ内でアプリケーションの仮想バージョンが実行している間、ホスト・オペレーティング・システムは、分離コンテナにおけるアプリケーションの仮想バージョンが１つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可する（アクト６１８）ように構成されている。ホスト・オペレーティング・システムは、分離コンテナと１つ以上のネットワーク・リソース位置との間におけるネットワーク通信を監視することによって、分離コンテナ内で実行しているアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可するように構成されている。
【０１１９】
[00124]  同様に、分離コンテナ内においてアプリケーションの仮想バージョンが実行している間、ホスト・オペレーティング・システムは、分離コンテナにおけるアプリケーションの仮想バージョンが、１つ以上の信頼できるネットワーク・リソースにアクセスするのを禁止する（アクト６２０）ように構成されている。このように、ホスト・オペレーティング・システムは、信頼できるネットワーク・リソースだけがホスト・オペレーティング・システムによってアクセスされること、そして信頼できないネットワーク・リソースはいずれも１つ以上の分離コンテナによってのみアクセスされることを確保するように構成されている。
【０１２０】
[00125]  分離コンテナ内で実行しているアプリケーションの仮想バージョンがもはや１つ以上の信頼できないネットワーク・リソースにアクセスしていないと判定したことに応答して、またはホスト・オペレーティング・システムのユーザがログオフしたと判定したことに応答して、ホスト・オペレーティング・システムは、１つ以上の分離コンテナを保留または削除する（アクト６２２）ように構成されている。例えば、コンテナ内のアプリケーションのバージョンがもはや１つ以上の信頼できないネットワーク・リソースにアクセスしていないと判定したことに応答して、ホスト・オペレーティング・システムは、１つ以上の追加の信頼できないネットワーク・リソースを処理する(handle)ためにコンテナが必要とされるまで、コンテナを保留する。ユーザがログオフしたことをホスト・オペレーティング・システムが検出した場合、ホスト・オペレーティング・システムは、アクティブであれ保留中であれ、１つ以上のコンテナを削除する。
【０１２１】
システム例
[00126]  本明細書では、特定のモジュールを参照しながら特定の機能について論じたが、本明細書において論じた個々のモジュールの機能を複数のモジュールに分離することができ、および／または複数のモジュールの内少なくともいくつかの機能を１つのモジュールに組み合わせることができることは注記してしかるべきである。加えて、本明細書において、アクションを実行するものとして論じられた特定のモジュールは、そのアクションを実行する特定のモジュール自体を含み、または代わりに、そのアクションを実行する他のコンポーネントまたはモジュール（または、その特定のモジュールと共にそのアクションを実行する）を呼び出す、あるいはそうでなければアクセスする、その特定のモジュールを含む。つまり、アクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、および／またはそのアクションを実行するその特定のモジュールによって呼び出されるまたはそうでなければアクセスされる他のモジュールを含む。
【０１２２】
[00127]  図７は、本明細書において説明した種々の技法を実現することができる１つ以上のシステムおよび／またはデバイスを表すコンピューティング・デバイス例７０２を含むシステム例を、全体的に７００で示す。コンピューティング・デバイス７０２は、例えば、サービス・プロバイダーのサーバ、クライアントに関連付けられたデバイス（例えば、クライアント・デバイス）、オンチップ・システム、および／または任意のその他の適したコンピューティング・デバイスもしくはコンピューティング・システムであってもよい。
【０１２３】
[00128]  図示するコンピューティング・デバイス例７０２は、処理システム７０４、１つ以上のコンピュータ読み取り可能媒体７０６、および互いを通信可能に結合する１つ以上のＩ／Ｏインターフェース７０８を含む。図示しないが、コンピューティング・デバイス７０２は、更に、種々のコンポーネントを互いに結合するシステム・バス、またはその他のデータおよびコマンド転送システムも含むことができる。システム・バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、ユニバーサル・シリアル・バス、および／または種々のバス・アーキテクチャの内任意のものを利用するプロセッサまたはローカル・バスというような異なるバス構造の内任意の１つ、あるいはその組み合わせを含むことができる。制御およびデータ線というような、種々のその他の例も考えられる。
【０１２４】
[00129]  処理システム７０４は、ハードウェアを使用して１つ以上の動作を実行する機能を表す。したがって、処理システム７０４は、プロセッサ、機能ブロック等として構成されてもよいハードウェア・エレメント７１０を含むものとして示されている。これは、特定用途集積回路、または１つ以上の半導体を使用して形成されるその他のロジック・デバイスのような、ハードウェアでの実現を含むことができる。ハードウェア・エレメント７１０は、これらが形成される材料にも、内部で採用される処理メカニズムにも限定されない。例えば、プロセッサは、半導体（１つまたは複数）および／またはトランジスタ（例えば、電子集積回路（ＩＣ））で構成されてもよい。このようなコンテキストでは、プロセッサ実行可能命令は電子的実行可能命令としてもよい。
【０１２５】
[00130]  コンピュータ読み取り可能媒体７０６は、メモリ／ストレージ７１２を含むものとして示されている。メモリ／ストレージ７１２は、１つ以上のコンピュータ読み取り可能媒体に関連するメモリ／記憶容量を表す。メモリ／ストレージ７１２は、揮発性媒体（ランダム・アクセス・メモリー（ＲＡＭ）のような）、および／または不揮発性媒体（リード・オンリー・メモリー（ＲＯＭ）、抵抗性ＲＡＭ（ＲｅＲＡＭ）、フラッシュ・メモリ、光ディスク、磁気ディスク等）を含むことができる。メモリ／ストレージ７１２は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハード・ドライブ等）、および着脱可能媒体（例えば、フラッシュ・メモリ、リムーバブル・ハード・ドライブ、光ディスク等）を含むこともできる。コンピュータ読み取り可能媒体７０６は、以下で更に説明するように、種々の他の方法で構成することもできる。
【０１２６】
[00131]  １つ以上の入力／出力インターフェース（１つまたは複数）７０８は、ユーザがコマンドおよび情報をコンピューティング・デバイス７０２に入力することを可能にする機能、および種々の入力／出力デバイスを使用してユーザおよび／またはその他のコンポーネントもしくはデバイスに情報を提示することを可能にする機能も表す。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロフォン（例えば、音声入力用）、スキャナー、タッチ機能（例えば、物理的接触を検出するように構成された容量性またはその他のセンサー）、カメラ（例えば、ジェスチャのような、タッチを伴わない動きを検出するために、可視波長または赤外線周波数のような不可視波長を採用してもよい）、センサー（例えば、周囲光センサーまたは運動センサー）な等が含まれる。出力デバイスの例には、ディスプレイ・デバイス（例えば、モニタまたはプロジェクタ）、スピーカ、プリンタ、ネットワーク・カード、触覚応答デバイス等が含まれる。つまり、コンピューティング・デバイス７０２は、ユーザの対話処理をサポートするために、以下で更に説明するように、種々の方法で構成することができる。
【０１２７】
[00132]  また、コンピューティング・デバイス７０２は、ホスト・オペレーティング・システム７１４も含む。ホスト・オペレーティング・システム７１４は、以上で論じたように、ハードウェア・ベースの仮想化セキュリティ分離の種々の管理を行う。ホスト・オペレーティング・システム７１４は、例えば、図１のホスト・オペレーティング・システム１０２を実現することができる。
【０１２８】
[00133]  本明細書では、種々の技法をソフトウェア、ハードウェア・エレメント、またはプログラム・モジュールという一般的なコンテキストで説明することができる。一般に、このようなモジュールは、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象データ型を実装する。「モジュール」(module)、「機能」(functionality)、および「コンポーネント」(component)という用語は、本明細書において使用する場合、一般に、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。本明細書において説明した技法の特徴は、プラットフォーム独立ということであり、これが意味するのは、種々のプロセッサを有する種々のコンピューティング・プラットフォーム上に本技法を実現できるということである。
【０１２９】
[00134]  説明したモジュールおよび技法の実現例(implementation)は、コンピュータ読み取り可能媒体の何らかの形態で格納すること、または何らかの形態を通じて(across)送信することができる。コンピュータ読み取り可能媒体は、コンピューティング・デバイス７０２によってアクセスすることができる種々の媒体を含むことができる。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、「コンピュータ読み取り可能記憶媒体」および「コンピュータ読み取り可能信号媒体」を含むことができる。
【０１３０】
[00135]  「コンピュータ読み取り可能記憶媒体」とは、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的格納、および／または実体的な格納(storage that is tangible)を可能にする媒体および／またはデバイスを指す。つまり、コンピュータ読み取り可能記憶媒体とは、非信号支持媒体(non-signal bearing media)を意味する。コンピュータ読み取り可能記憶媒体は、揮発性、不揮発性、着脱可能および着脱不能媒体、および／またはコンピュータ読み取り可能命令、データ構造、プログラム・モジュール、ロジック・エレメント／回路、あるいはその他のデータというような情報の格納に適した方法または技術で実現される記憶デバイスというようなハードウェアを含む。コンピュータ読み取り可能記憶媒体の例には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいはその他の記憶デバイス、有形媒体、あるいは所望の情報を格納するのに適しており、コンピュータによってアクセスすることができる製品を含むことができるが、これらに限定されるのではない。
【０１３１】
[00136]  「コンピュータ読み取り可能信号媒体」とは、ネットワークを通じてというようにして命令をコンピューティング・デバイス７０２のハードウェアに送信するように構成された信号支持媒体を指す。信号媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波のような変調データ信号、データ信号、またはその他の移送メカニズムに具体化することができる。また、信号媒体は任意の情報配信媒体も含む。「変調データ信号」(modulated data signal)という用語は、情報を信号内にエンコードするような方法で、その特徴の１つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続(direct-wired connection)のような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス媒体のようなワイヤレス媒体を含む。
【０１３２】
[00137]  既に説明したように、ハードウェア・エレメント７１０およびコンピュータ読み取り可能媒体７０６は、本明細書において説明した技法の内少なくともいくつかの態様を実現するために一部の実施形態において採用することができるハードウェア形態で実現される、命令、モジュール、プログラマブル・デバイス・ロジック、および／または固定デバイス・ロジックを表す。ハードウェア・エレメントは、集積回路またはオンチップ・システムのコンポーネント、特定用途集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ：complex programmable logic device）、およびシリコンまたはその他のハードウェア・デバイスにおけるその他の実施態様を含むことができる。このコンテキストでは、ハードウェア・エレメントは、実行のために命令を格納するために利用されるハードウェア・エレメントおよびハードウェア・デバイス、例えば、先に説明したコンピュータ読み取り可能記憶媒体によって具体化される命令、モジュール、および／またはロジックによって定められるプログラム・タスクを実行する処理デバイスとして動作することができる。
【０１３３】
[00138]  以上で述べたものの組み合わせも、本明細書において説明した種々の技法およびモジュールを実現するために採用することができる。したがって、ソフトウェア、ハードウェア、またはプログラム・モジュール、およびその他のプログラム・モジュールは、何らかの形態のコンピュータ読み取り可能記憶媒体上に具体化された１つ以上の命令および／またはロジックとして、および／または１つ以上のハードウェア・エレメント７１０によって実現することができる。コンピューティング・デバイス７０２は、ソフトウェアおよび／またはハードウェア・モジュールに対応する特定の命令および／または機能を実装するように構成することができる。したがって、コンピューティング・デバイス７０２によってソフトウェアとして実行可能なモジュールとしてのモジュールの実装は、少なくとも部分的にハードウェアで、例えば、コンピュータ読み取り可能記憶媒体および／または処理システムのハードウェア・エレメント７１０の使用によって達成することができる。命令および／または機能は、本明細書において説明した技法、モジュール、および例を実現するために、１つ以上の製品（例えば、１つ以上のコンピューティング・デバイス７０２および／または処理システム７０４）によって実行可能／動作可能であってもよい。
【０１３４】
[00139]  更に図７に示すように、システム例７００は、パーソナル・コンピュータ（ＰＣ）、テレビジョン・デバイス、および／または移動体デバイス上でアプリケーションを実行するときに、継ぎ目のないユーザ体験が得られる、ユビキタス環境を可能にする。アプリケーションを利用しながら、ビデオ・ゲームをプレーしながら、ビデオを見ながら等で１つのデバイスから次のデバイスに移るとき、サービスおよびアプリケーションは共通のユーザ体験のために３つの環境全てにおいて実質的に同様に実行する。
【０１３５】
[00140]  システム例７００では、複数のデバイスが中央コンピューティング・デバイスを介して相互接続されている。中央コンピューティング・デバイスは、複数のデバイスに対してローカルでもよく、または複数のデバイスから離れて配置されてもよい。１つ以上の実施形態では、中央コンピューティング・デバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続された１つ以上のサーバ・コンピュータを擁するクラウドであってもよい。
【０１３６】
[00141]  １つ以上の実施形態では、この相互接続アーキテクチャは、共通の継ぎ目のない体験を複数のデバイスのユーザに提供するために、複数のデバイスにまたがって機能を配信する(deliver)ことを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有しても良く、中央コンピューティング・デバイスは、デバイスへの体験の配信を可能にするプラットフォームを使用する。この体験は、そのデバイスに合わせて特別に作られる(tailored)が、しかも全てのデバイスに共通でもある。１つ以上の実施形態では、ターゲット・デバイスのクラスが作成され、体験は包括的なデバイスのクラスに合わせて特別に作られる。デバイスのクラスは、物理的特徴、使用の形式、または他の共通するデバイスの特性によって定められてもよい。
【０１３７】
[00142]  種々の実施態様において、コンピューティング・デバイス７０２は、コンピュータ７１６、移動体７１８、およびテレビジョン７２０の使用に合わせてというように、種々の異なる構成を取ることができる。これらの構成の各々は、全体的に異なる構造および能力を有する可能性があるデバイスを含み、したがって、コンピューティング・デバイス７０２は、異なるデバイス・クラスの１つ以上にしたがって構成することができる。例えば、コンピューティング・デバイス７０２は、パーソナル・コンピュータ、デスクトップ・コンピュータ、マルチスクリーン・コンピュータ、ラップトップ・コンピュータ、ネットブック等を含む、コンピュータ７１６クラスのデバイスとして実現することもできる。
【０１３８】
[00143]  また、コンピューティング・デバイス７０２は、移動体電話機、携帯用音楽プレーヤ、携帯用ゲーミング・デバイス、タブレット・コンピュータ、マルチスクリーン・コンピュータ等のような、移動体デバイスを含む移動体７１８クラスのデバイスとして実現することもできる。また、コンピューティング・デバイス７０２は、日常的な視聴環境において通常もっと大きな画面を有するデバイスまたはこれに接続されたデバイスを含むテレビジョン７２０クラスのデバイスとして実現することもできる。これらのデバイスは、テレビジョン、セットトップ・ボックス、ゲーミング・コンソール等を含む。
【０１３９】
[00144]  本明細書において説明した技法は、コンピューティング・デバイス７０２のこれら種々の構成によってサポートすることができ、本明細書において説明した技法の具体的な例に限定されるのではない。また、この機能は、全体的にまたは部分的に、以下で説明するように、プラットフォーム７２４を介して「クラウド」７２２上においてというように、分散型システムの使用によって実現することもできる。
【０１４０】
[00145]  クラウド７２２は、リソース７２６のためのプラットフォーム７２４を含む、および／または表す。プラットフォーム７２４は、クラウド７２２のハードウェア（例えば、サーバ）およびソフトウェア・リソースの基礎機能を抽象化する。リソース７２６は、コンピューティング・デバイス７０２から離れたサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーションおよび／またはデータを含むことができる。また、リソース７２６は、インターネットを通じて、および／またはセルラまたはＷｉ−Ｆｉネットワークのような加入者ネットワークを通じて提供されるサービスも含むことができる。
【０１４１】
[00146]  プラットフォーム７２４は、コンピューティング・デバイス７０２を他のコンピューティング・デバイスと接続するためのリソースおよび機能を抽象化することができる。 また、プラットフォーム７２４は、プラットフォーム７２４を通して実装されるリソース７２６に対して出される要求(demand)に合わせて、対応する尺度(level of scale)を規定するために、リソースの調整(scaling)を抽象化する役割を果たすこともできる。 したがって、相互接続されたデバイスの実施形態では、本明細書において説明した機能の実装は、システム７００全域にわたって分散することができる。例えば、機能は、部分的にコンピューティング・デバイス７０２上に実装され、更にクラウド７２２の機能を抽象化するプラットフォーム７２４を介して実装されてもよい。尚、クラウド７２２は無数の構成(configuration)で構築する(arrange)ことができることは注記してしかるべきである。例えば、クラウド７２２は、１つのクラウドとして、全てが１つのクラウドとして振る舞う、クラウド７２２の複数のインスタンスとして実現することができ、またはプラットフォーム７２４の１つ以上のインスタンスがクラウド７２２の背後に実装され、プラットフォーム７２４の１つ以上のインスタンスがあたかもクラウド内に実装されたかのように振る舞う。
【０１４２】
[00147]  本明細書における論述では、種々の異なる実施形態について説明した。尚、本明細書において説明した各実施形態は、それ自体で、または本明細書において説明した１つ以上の他の実施形態と併せて使用できることは認められそして理解されよう。本明細書において論じた技法の更に他の形態は、以下の実施形態の内１つ以上に関係する。
【０１４３】
[00148]  方法は、ホスト・オペレーティング・システムにおいてアプリケーションを実行するステップと、このアプリケーションによるネットワーク・リソースへのアクセスを検出するステップと、ネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップと、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムによって、このホスト・オペレーティング・システムから分離されアプリケーションの一バージョンを実行するように構成されたコンテナを有効化するステップと、ホスト・オペレーティング・システムによって、コンテナにおいて実行するアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可するステップとを含む。
【０１４４】
[00149]  以上に記載した方法のいずれかの代わりにまたはそれに加えて、以下の内任意の１つまたは組み合わせも含む。前述の方法は、更に、コンテナにおいて実行するアプリケーションのバージョンが、１つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可し、コンテナにおいて実行するアプリケーションが、信頼できるネットワーク・リソースにアクセスするのを禁止するステップを含む。この方法は、更に、ホスト・オペレーティング・システムによるファイルまたはアプリケーションへのアクセスを検出し、ファイルまたはアプリケーションが信頼できないネットワーク・リソースであると判定したことに応答して、ファイルまたはアプリケーションをコンテナ内で開くことを許可するステップを含む。コンテナは、ホスト・オペレーティング・システムのインスタンスと、ホスト・オペレーティング・システムのカーネルとは別個で分離されたカーネルとを含む。この方法は、更に、信頼できるネットワーク・リソースを列挙したリストを少なくとも含む少なくとも１つのポリシを受け取るステップを含み、ネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップが、ネットワーク・リソースを、信頼できるネットワーク・リソースを列挙したリストと比較するステップを含み、信頼できるネットワーク・リソースを列挙したリストが、ネットワーク・リソースのファイル形式、ネットワーク・リソースに関連するネットワーク位置、またはネットワーク・リソースにアクセスしようとしているアプリケーションの種類の内１つ以上に基づいて識別される。コンテナは、ホスト・オペレーティング・システムにログオンしたユーザに対して有効化され、この方法は、更に、異なるユーザがホスト・オペレーティング・システムにログオンしたと判定し、異なるユーザに対して、ホスト・オペレーティング・システムおよびコンテナから分離された異なるコンテナを有効化するステップを含む。この方法は、更に、ネットワーク・リソースへのアクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定し、ネットワーク・リソースへのアクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定したことに応答して、ホスト・オペレーティング・システムにおけるアプリケーションに対するネットワーク通信を、仮想プライベート・ネットワーク（ＶＰＮ）インターフェースに制限するステップと、コンテナにおいて実行するアプリケーションのバージョンが、信頼できないネットワーク・インターフェースを介してネットワーク通信を行うことを許可するステップと、コンテナのネットワーク・スタックに、当該コンテナに対するネットワーク通信が、信頼できないネットワーク・インターフェースに分離されることを示すステップとを含む。この方法は、更に、ホスト・オペレーティング・システムによって、ユーザ資格証明書を求めるウェブ・プロキシ・プロンプトに対する応答を傍受し、１つ以上のユーザ資格証明書をコンテナに伝えることなく、ウェブ・プロキシ・プロンプトに対する応答に、１つ以上のユーザ資格証明書を挿入するステップを含む。この方法は、更に、コンテナにおいてアクセスされた１つ以上の信頼できないネットワーク・リソースをスキャンし、ホスト・オペレーティング・システムにおいてウィルス対策ソフトウェアを使用して、１つ以上のリスク・レベルを１つ以上の信頼できないネットワーク・リソースに割り当て、割り当てられたリスク・レベルが、信頼できないネットワーク・リソースが悪意のあるものであることを示す場合、１つ以上の信頼できないネットワーク・リソースの内１つを隔離、消去、または削除するステップを含む。この方法は、更に、コンテナにおける信頼できないネットワーク・リソースに関連するアクティビティを監視して、監視したアクティビティに基づいて、ホスト・オペレーティング・システムにおいてローカル・ポリシを更新するステップを含む。アプリケーションは、ウェブ・アプリケーションであり、信頼できないネットワーク・リソースは、ウェブ・ページである。コンテナは、第１ネットワーク通信インターフェースを介してネットワーク・リソース通信のために有効化され、この方法は、更に、第２ネットワーク通信インターフェースを介したネットワーク・リソース通信のために第２コンテナを有効化するステップを含む。この方法は、更に、コンテナにおいて実行するアプリケーションのバージョンが処理を停止したことを検出したことに応答して、コンテナにおいて実行するアプリケーションのバージョンが処理を停止したことを検出するステップと、コンテナによって使用されるシステム・リソースの量を低減するために、ホスト・オペレーティング・システムによってコンテナを保留するステップと、アプリケーションによる追加のネットワーク・リソースへの追加アクセスを検出するステップと、追加のネットワーク・リソースが信頼できないリソースであると判定したことに応答して、保留中のコンテナを有効化するステップと、コンテナにおいて実行するアプリケーションのバージョンが、追加の信頼できないネットワーク・リソースにアクセスすることを許可するステップと、ホスト・オペレーティング・システムのユーザがログオフしたことを検出するステップと、ユーザがログオフしたことを検出したことに応答して、コンテナを削除するステップとを含む。この方法は、更に、ホスト・オペレーティング・システムに対する更新を検出するステップと、ホスト・オペレーティング・システムに対する更新を検出したことに応答して、コンテナを削除し、ホスト・オペレーティング・システムの１つ以上の更新された境界を反映する新たなコンテナを作成するステップとを含む。ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムが、ネットワーク・リソースのファイル形式、ネットワーク・リソースに関連するネットワーク位置、ネットワーク・リソースにアクセスしてしようとしているアプリケーションの種類、ネットワーク・リソースのウィルス対策スキャン(anti-virus scanning)の内１つ以上に基づいて、または悪意のあるネットワーク・リソースのリストを維持するクラウド・ベース・サービスを調べることに基づいて、ネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定するように構成されている。コンテナは、ホスト・オペレーティング・システムにログオンしたユーザに対して有効化される。この方法は、更に、ユーザのために１つ以上の追加のコンテナを有効化し、ホスト・オペレーティング・システムの他のユーザが、前述のコンテナおよび１つ以上の追加のコンテナにアクセスするのを防止するステップも含む。この方法は、更に、コンテナにおいて実行するアプリケーションのバージョンからの、ユーザ資格証明書を求める要求を受け、コンテナにおいて実行するアプリケーションのバージョンに対して疑似認証を行うステップを含む。疑似認証は、ユーザ資格証明書をコンテナに提供することなく、ユーザ資格証明書の所有を証明する情報を含む。この方法は、更に、ホスト・オペレーティング・システムによって、ローカル・ネットワークを識別し、コンテナに対してローカル・ネットワークをエミュレートするステップを含む。この方法は、更に、ローカル・ネットワークを識別し、コンテナに対してネットワーク・アドレス変換器（ＮＡＴ）の背後でローカル・ネットワークをエミュレートするステップを含む。この方法は、更に、ドメイン・ネーム・システム（ＤＮＳ）およびハイパーテキスト転送プロトコル（ＨＴＴＰ）情報を、ホスト・オペレーティング・システムとコンテナとの間で共有するステップを含む。この方法は、更に、ホスト・オペレーティング・システムによって、コンテナにおいて実行するアプリケーションのバージョンによって行われる１つ以上の構成変更を追跡するステップを含む。この方法は、更に、ホスト・オペレーティングによって、コンテナから遠隔測定データを取得するし、取得した遠隔測定データに基づいてコンテナのアクティビティを分析するステップを含む。この方法は、更に、ホスト・オペレーティング・システムにおいてポリシ・エンジンを実装するステップを含み、ポリシ・エンジンは、コンテナ内で監視されたアクティビティに基づいて、コンテナに対するポリシを計算するように構成され、ポリシの計算が、１つ以上のポリシ・テンプレートまたはポリシ・シグネチャーに基づく。」
【０１４５】
[00150]  方法は、ホスト・オペレーティング・システムの起動を検出するステップと、ホスト・オペレーティング・システムの起動を検出したことに応答して、ホスト・オペレーティング・システム内にコンテナ・ベース・イメージが存在するか否か判定するステップと、コンテナ・ベース・イメージがホスト・オペレーティング・システム内に存在しないと判定したことに応答して、ホスト・オペレーティング・システムからコンテナ・ベース・イメージを作成するステップと、ホスト・オペレーティング・システムへのユーザ・ログインを検出するステップと、ホスト・オペレーティング・システムへのユーザ・ログインを検出したことに応答して、コンテナ・ベース・イメージに対応するコンテナを有効化し、この有効化したコンテナを保留するステップと、信頼できないネットワーク・リソースへのアクセスを検出したことに応答して、保留中のコンテナを再開するステップと、再開したコンテナが、信頼できないネットワーク・リソースにアクセスすることを許可するステップとを含む。
【０１４６】
[00151]  以上に記載した方法のいずれかの代わりにまたはそれに加えて、以下の内任意の１つまたは組み合わせも含む。コンテナ・ベース・イメージは、ホスト・オペレーティング・システム、ホスト・オペレーティング・システムとは異なるオペレーティング・システム、またはホスト・オペレーティング・システムと、ホスト・オペレーティング・システムとは異なるオペレーティング・システムとの組み合わせの内１つから作成される。
【０１４７】
[00152]  デバイスは、１つ以上のプロセッサと、以下を含む動作を実行するために１つ以上のプロセッサによって実行可能なコンピュータ読み取り可能命令を格納する１つ以上のコンピュータ読み取り可能記憶媒体とを含む。前述の動作は、デバイスのホスト・オペレーティング・システムにおいてウェブ・アプリケーションを実行する動作と、ウェブ・アプリケーションによるネットワーク・リソースへのアクセスを検出する動作と、ネットワーク・リソースを、デバイスから離れて位置する管理および監視サービスから受け取ったポリシと比較することによって、ネットワーク・リソースが信頼できないリソースであると判定する動作と、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムによって、ホスト・オペレーティング・システムから分離されウェブ・アプリケーションの一バージョンを実行するように構成されたコンテナを有効化する動作と、ホスト・オペレーティング・システムによって、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する動作と、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、１つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可する動作と、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、信頼できるネットワーク・リソースにアクセスするのを防止する動作とを含む。
【０１４８】
[00153]  以上、構造的特徴および／または方法論的アクトに特定的な文言で本主題について説明したが、添付する特許請求の範囲において定められる主題は、以上で説明した特定的な特徴やアクトには必ずしも限定されないことは理解されてしかるべきである。逆に、以上で説明した特定的な特徴やアクトは、特許請求の範囲を実施する形態例として開示したまでである。
【図１】
2019517694.tif 000004
【図２】
2019517694.tif 000005
【図３】
2019517694.tif 000006
【図４】
2019517694.tif 000007
【図５】
2019517694.tif 000008
【図６】
2019517694.tif 000009
【図７】
2019517694.tif 000010
【国際調査報告】
2019517694.tif 000011
2019517694.tif 000012