(58)【調査した分野】(Int.Cl.,DB名)
請求項1記載の方法であって、更に、前記コンテナにおいて実行している前記アプリケーションの前記バージョンが、1つ以上の追加の信頼できないネットワーク・リソースにアクセスするのを許可するステップと、前記コンテナにおいて実行している前記アプリケーションの前記バージョンが、信頼できるネットワーク・リソースにアクセスするのを禁止するステップと、
を含む、方法。
請求項1〜6のいずれか1項記載の方法であって、更に、ユーザ資格証明書を求めるウェブ・プロキシ・プロンプトに対する応答を傍受するステップと、前記1つ以上のユーザ資格証明書を前記コンテナに通信することなく、前記ウェブ・プロキシ・プロンプトに対する応答に、1つ以上のユーザ資格証明書を挿入するステップと、
を含む、方法。
請求項1〜7のいずれか1項記載の方法であって、更に、前記コンテナにおいてアクセスされた1つ以上の信頼できないネットワーク・リソースをスキャンするステップと、前記ホスト・オペレーティング・システムにおいてウィルス対策ソフトウェアを使用して、1つ以上のリスク・レベルを前記1つ以上の信頼できないネットワーク・リソースに割り当て、前記信頼できないネットワーク・リソースが悪意のあるものであることを前記割り当てられたリスク・レベルが示す場合、前記1つ以上の信頼できないネットワーク・リソースの内1つを隔離、消去、または削除するステップと、を含む、方法。
請求項1〜9のいずれか1項記載の方法において、前記アプリケーションがウェブ・アプリケーションであり、前記信頼できないネットワーク・リソースがウェブ・ページである、方法。
請求項1〜12の何れか1項記載の方法であって、更に、前記ホスト・オペレーティング・システムに対する更新を検出するステップと、前記ホスト・オペレーティング・システムに対する更新を検出したことに応答して、前記コンテナを削除し、前記ホスト・オペレーティング・システムの1つ以上の更新された境界を反映する新たなコンテナを作成するステップを含む、方法。
請求項1〜13の何れか1項記載の方法において、前記ネットワーク・リソースが信頼できるネットワーク・リソースであるかについて判定するステップが、前記ネットワーク・リソースのファイル形式、前記ネットワーク・リソースに関連するネットワーク位置、前記ネットワーク・リソースにアクセスするのを試行しているアプリケーションの種類、前記ネットワーク・リソースのウィルス対策スキャンの内1つ以上に基づいて、または、悪意のあるネットワーク・リソースのリストを維持するクラウド・ベース・サービスを調べることに基づいて実行される、方法。
請求項1〜15の何れか1項記載の方法であって、更に、前記コンテナにおいて実行している前記アプリケーションの前記バージョンからの、ユーザ資格証明書を求める要求を受け、前記コンテナにおいて実行している前記アプリケーションの前記バージョンに対して疑似認証を行うステップを含み、前記疑似認証が、前記ユーザ資格証明書をコンテナに提供することなく、前記ユーザ資格証明書の所有を証明する情報を含む、方法。
請求項1〜17の何れか1項記載の方法であって、更に、ローカル・ネットワークを識別し、前記コンテナに対してネットワーク・アドレス変換器(NAT)の背後で前記ローカル・ネットワークをエミュレートするステップを含む、方法。
請求項1〜18の何れか1項記載の方法であって、更に、ドメイン・ネーム・システム(DNS)およびハイパーテキスト転送プロトコル(HTTP)情報を、前記ホスト・オペレーティング・システムと前記コンテナとの間で共有するステップを含む、方法。
請求項1〜19の何れか1項記載の方法であって、更に、前記コンテナにおいて実行している前記アプリケーションの前記バージョンによって行われる1つ以上の構成変更を追跡するステップを含む、方法。
請求項1〜20の何れか1項記載の方法であって、更に、前記コンテナから遠隔測定データを取得し、前記取得した遠隔測定データに基づいてコンテナのアクティビティを分析するステップを含む、方法。
請求項1〜21の何れか1項記載の方法であって、更に、ポリシ・エンジンを実装するステップを含み、前記ポリシ・エンジンが、前記コンテナ内で監視されたアクティビティに基づいて、前記コンテナに対するポリシを計算するように構成され、前記ポリシが、1つ以上のポリシ・テンプレートまたはポリシ・シグネチャーからのパターンに基づいて、前記監視されたアクティビティと照合することで計算される、方法。
【発明を実施するための形態】
【0008】
[0014] 本明細書では、ハードウェア・ベースの仮想化セキュリティ分離について論ずる。コンピューティング・デバイス上で実行するオペレーティング・システムは、ここでは、ホスト・デバイス上で実行するホスト・オペレーティング・システムとも呼び、ハードウェア・リソースの区分(partitioning)のためにコンテナを使用する。多くの仮想機械ベースの手法またはサンドボックス(sandbox)手法とは対照的に、本明細書において論ずるハードウェア・ベースの仮想化セキュリティ分離技法と併せてコンテナを使用することによって、ウェブ・ブラウザー、関係するアプリケーション、カーネルのようなオペレーティング・システム・コンポーネント、ファイル・システム、およびネットワークを、信頼できないネットワーク・リソースから分離することによって、コンピューティング・デバイスを攻撃から保護する。信頼できないネットワーク・リソースの分離は、1つ以上のオペレーティング・システム・フィルタおよびポリシ・マネージャによって施行(enforce)および監視される。このように、ホスト・デバイスが信頼できないネットワーク・リソースへのアクセスを要求するとき、ホスト・デバイスは、信頼できないネットワーク・リソースを、ホスト・オペレーティング・システムからの完全なカーネルの分離に対応する(provide)1つ以上のコンテナ内に収容する。本明細書において論ずる場合、ネットワーク・リソースとは、ホスト・デバイスがネットワークを通じてアクセスすることができる場所(例えば、デバイスの場所またはデータが存在する場所)、更にはこれらの場所の内1つ以上によって提供されるデータ、実行可能ファイル、またはネットワーク接続の内1つ以上を指す。例えば、ネットワーク・リソースは、ファイル、アプリケーション、電子メール、文書、ユニフォーム・リソース・ロケーター(URL)、インターネット・プロトコル(IP)アドレス、送信制御プロトコル(TCP)ポート、ドメイン・ネーム・システム(DNS)名称、データ・ストア、ハードウェア・デバイス、またはこれらの組み合わせとすることができる。信頼できるネットワーク・リソースとは、マルウェアを有していないこと、または悪意のあるユーザによって使用されていないことが信頼され、ホスト・デバイスに対する1つ以上のポリシによって識別されたネットワーク・リソースを指す。信頼できないネットワーク・リソースとは、信頼されないネットワーク・リソースを指す(例えば、マルウェアを有する、または悪意のユーザによって使用されるおそれがある)。
【0009】
[0015] ホスト・デバイスを悪意のある攻撃から保護するために、ポリシを使用して、信頼できるネットワーク・リソースを列挙したリストを定める。企業の複数のユーザが接続され、共通の企業データおよび/またはネットワークを共有する企業環境では、このポリシは、個々のユーザならびに企業の共有データおよびネットワークが保護され続けることを確保するために、企業の管理者(administrator)によって定めることができる。ホスト・デバイスのユーザがネットワーク・リソースへのアクセスを要求するとき、要求されたネットワーク・リソースをポリシと比較し、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定する。要求されたネットワーク・リソースが信頼できるネットワーク・リソースであることをポリシが示す場合、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムによって、この信頼できるネットワーク・リソースにアクセスすることを許可する。更に、このポリシを利用すると、ホスト・デバイスの1つ以上のネットワーク通信へのアクセスを信頼できないネットワーク・リソースに対して制限することによって、コンピューティング・デバイスのネットワーク・インターフェースを分離し、本明細書において説明する仮想化セキュリティ分離技法を実施することができる。例えば、ホスト・デバイスがワイヤレス・ローカル・エリア・ネットワーク(WLAN)通信、移動広帯域通信、ダイアルアップ接続、仮想プライベート・ネットワーク(VPN)接続、およびシリアル・ケーブリング、直接ケーブリング、または赤外線リンクのような直接接続をサポートする場合、信頼できないネットワーク・リソースに関連するネットワーク通信を、WLAN通信に制限することができる。
【0010】
[0016] 要求されたネットワーク・リソースが、ポリシによって、信頼できるネットワーク・リソースとして定められていないとき、要求されたネットワーク・リソースは信頼できないと判定される。ネットワーク・リソースが信頼できないと判定したことに応答して、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムから分離されたコンテナを有効化する。次いで、信頼できないネットワーク・リソースに関連するあらゆる危険なアクティビティを分離するように、信頼できないネットワーク・リソースにはコンテナからアクセスする。この分離のために、信頼できないネットワーク・リソースに起因するあらゆる悪意のコンテンツや攻撃は、コンテナを破ってホスト・オペレーティング・システムに感染することはできない。本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、更に、コンテナが信頼できるネットワーク・リソースへのアクセスを全く獲得しないことを確保するために、コンテナ内におけるアクティビティを監視するように構成されている。
【0011】
[0017] したがって、コンテナを有効化して、信頼できないネットワーク・リソースにアクセスすることによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、オペレーティング・システムまたは抑制ランタイム環境(contained runtime environment)の2つ以上の別個のインスタンスを作成する。各インスタンスはネットワーク接続(connectivity)を有する。これらの抑制ランタイム環境内においてデータや実行される動作を監視することによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムがいずれの信頼できないネットワーク・リソースにもアクセスするのを防止するように構成されている。加えて、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・システムが、安全なホスト・オペレーティング・システムからのDNSおよびハイパーテキスト転送プロトコル(HTTP)情報をスキャンおよび共有し、分離されたコンテナの内1つ以上において、ウェブ・ブラウジング性能またはその他のネットワーク・アクティビティを改善することを可能にする。
【0012】
[0018] 加えて、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・オペレーティング・システムのカーネルとは別個の1つ以上のコンテナにおいてというように、ホスト・オペレーティング・システムがファイルを別々にダウンロードしこれらにアクセスすることを可能にする。これによって、ホスト・オペレーティング・システムは、ファイル、アプリケーション、ウェブ・サイト等というような個々のネットワーク・リソースをスキャンして、スキャンしたネットワーク・リソースの個々のものに関連するリスク・レベルを判定することが可能になる。
【0013】
[0019] また、本明細書において論ずるハードウェア・ベースの仮想化セキュリティ分離技法は、ホスト・デバイスのシステム・リソースを保存するように構成されている。例えば、コンテナ内において1つ以上の信頼できないネットワーク・リソースが不動作状態(inactive)であるときであっても、コンテナはなおもシステム・リソース(例えば、メモリ)に圧力をかけ、ホスト・デバイス上で実行しておりこれらのリソースを得るために争っている他のあらゆるコンテナまたはプロセスの挙動(performance)に影響を及ぼすことができる。したがって、個々のコンテナ内におけるアクティビティを監視することによって、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、コンテナ内において信頼できないネットワーク・リソースが不動作状態にあるときには、個々のコンテナを保留またはリセットして、コンテナがホスト・デバイス・リソースに対してかける圧力を下げるように構成されている。保留されているコンテナ内における任意の1つ以上のネットワーク・リソースの状態を保存することができるので、ユーザは、保留されているコンテナに素早く戻り、内部にある1つ以上の信頼できないネットワーク・リソースと相互作用することができる。
【0014】
[0020] ホスト・デバイスのユーザがログオフするときというような、トリガ・イベント(triggered event)に応答して、本明細書において説明するハードウェア・ベースの仮想化セキュリティ分離技法は、コンテナおよびそれに関連する全てのデータを破棄する。このように、ホスト・デバイスのオペレーティング・システムに対して否定的な波紋を全く生ずることなく、1つ以上の信頼できないネットワーク・リソースによってコンテナを畳む(corrupt)ことができる。
【0015】
ハードウェア・ベースの仮想化セキュリティ分離システム
[0021]
図1は、1つ以上の実施形態によるハードウェア・ベースの仮想化セキュリティ分離を実施するシステム例100を示す。システム100は、少なくとも部分的に、ホスト・デバイスによって実装される。システム100を実現するためには、サーバ・コンピュータ、デスクトップ・コンピュータ、ラップトップまたはネットブック・コンピュータ、移動体デバイス(例えば、タブレットまたはファブレット(phablet)デバイス、セルラまたは他のワイヤレスフォン(例えば、スマートフォン)、ノートパッド・コンピュータ、移動局)、ウェアラブル・デバイス(例えば、めがね、頭部装着ディスプレイ、腕時計、ブレスレット、仮想現実めがねまたはヘッドセット、拡張現実ヘッドセットまたはめがね)、娯楽用デバイス(例えば、娯楽用アプライアンス、ディスプレイ・デバイスに通信可能に結合されたセットトップ・ボックス、ゲーム・コンソール)、もののインターネット(IoT)デバイス(例えば、他のデバイスとの通信を可能にするソフトウェア、ファームウェア、および/またはハードウェアを有する物体またはもの)、テレビジョンまたはその他のディスプレイ・デバイス、自動車用コンピュータ等というような、種々の異なる種類のコンピューティング・デバイスの内任意のものを使用することができる。このように、システム100を実現するコンピューティング・デバイスは、かなりのメモリおよびプロセッサ・リソースを有する完全リソース・デバイス(full resource device)(例えば、パーソナル・コンピュータ、ゲーム・コンソール)から、メモリおよび/または処理リソースが限られた低リソース・デバイス(例えば、従前からのセットトップ・ボックス、手持ち式ゲーム・コンソール)までの範囲に及ぶことができる。
【0016】
[0022] システム100は、ホスト・オペレーティング・システム102、管理および監視サービス104、ならびにウェブ・プロキシ106を含む。管理および監視サービス104は、本明細書において論ずるように、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスに対して、1つ以上の管理ポリシを規定する(provide)サービスを表す。ウェブ・プロキシ106は、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスから離れてアクセスされる1つ以上のネットワーク・リソース122(1)、...、122(m)へのアクセスを制御する機能を表す。例えば、1つ以上の実施形態では、ウェブ・プロキシ106は、以下で更に詳しく論ずるように、ホスト・オペレーティング・システム102に認証を要求することによって、ネットワーク108からアクセスされる1つ以上のリソースへのアクセスを制御する。あるいは、1つ以上の実施形態では、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスは、ウェブ・プロキシとは独立して、ネットワーク108を通じてネットワーク・リソースにアクセスする。ネットワーク108は、インターネット、ローカル・エリア・ネットワーク(LAN)、公衆電話網、イントラネット、その他の公衆および/または企業ネットワーク、その組み合わせ等というような、データ・ネットワークの機能を表す。したがって、ネットワーク108を通じてアクセスされるネットワーク・リソース122(1)、...、122(m)は、ウェブ・サイト、ウェブ・アプリケーション、電子メール、文書等を含んでもよい。
【0017】
[0023] 1つ以上の実施形態では、ホスト・オペレーティング・システム102、管理および監視サービス104、ならびにウェブ・プロキシ106は、同じコンピューティング・デバイスの一部として実装される。あるいは、管理および監視サービス104、および/またはウェブ・プロキシ106の少なくとも一部は、ホスト・オペレーティング・システム102を実装するデバイスとは別個で離れているデバイス上に実装することができる。例えば、1つ以上の実施形態では、管理および監視サービス104は、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスから離れて位置する移動デバイス管理(MDM)サービスとして実装される。代わりにまたは加えて、管理および監視サービス104は、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスから離れて位置する軽量ディレクトリ・アクセス・プロトコル(LDAP)サーバとして実装されてもよい。同様に、ウェブ・プロキシ106は、ホスト・オペレーティング・システム102を実装するデバイスから離れて実装されてもよい。
【0018】
[0024] 管理および監視サービス104は、ホスト・オペレーティング・システム102にポリシを規定する(例えば、プッシュする)ように構成されている。1つ以上の実施形態では、管理および監視サービス104は、システムの起動時に、毎日等というように、規則的な間隔で、ホスト・オペレーティング・システム102にポリシをプッシュするように構成されている。あるいは、管理および監視サービス104は、ホスト・オペレーティング・システムに対するポリシに更新があるときはいつでも、ホスト・オペレーティング・システム102にポリシをプッシュするように構成することもできる。ここでは、ホスト・オペレーティング・システム102にプッシュされるポリシを引用するが、管理および監視サービス104は、任意の相応しいデータ送信方法(例えば、ストリーミング)によって、ホスト・オペレーティング・システムにポリシを規定するように構成されている。あるいは、1つ以上の実施形態では、ホスト・オペレーティング・システム102が、管理および監視サービス104からポリシを取得する(例えば、プルする)ように構成されている。管理および監視サービス104は2つの役割を有する。第1に、管理および監視サービス104は、ホスト・オペレーティング・システム102のユーザには通常アクセス可能な個々のネットワーク・リソース122(1)、...、122(m)に対する管理構成を受け取る。1つ以上の実施形態では、これらのネットワーク・リソースには、個々の信頼レベルが関連付けられる。例えば、経営者が、この経営者のウェブ・サイトに関連付けられたあらゆるネットワーク・リソースを、高い信頼レベルを有すると定めてもよい。したがって、ホスト・オペレーティング・システム102に対するポリシは、経営者のウェブ・サイトに関連付けられたネットワーク・リソースはいずれも信頼できるネットワーク・リソースであることを示す。管理および監視サービス104の2番目の役割は、個々のネットワーク・リソースに関連するアクティビティの監視に関して、ホスト・オペレーティング・システム102からフィードバックを受け取り、この監視情報(monitored information)を、管理者に対する報告に編集することである。この編集された報告は、管理者によって、ホスト・オペレーティング・システム102に対する、信頼できるネットワーク・リソースに関するポリシを更新するために使用することができる。
【0019】
[0025] 管理および監視サービス104は、ホスト・オペレーティング・システム102を実装するデバイスの管理者から、ポリシ構成データを受け取るように構成することもできる。本明細書において論ずる場合、ポリシは、信頼できるウェブ・サイト、信頼できるネットワーク位置、信頼できるネットワーク等のような、信頼できるネットワーク・リソースに関する情報を記述する。管理および監視サービス104が管理者からポリシを受け取ると、管理および監視サービス104は、ポリシ更新を、目標とする1組のコンピューティング・デバイスに送るように構成されている。管理および監視サービス104がポリシ更新を送る先である、目標の1組のコンピューティング・デバイスは、1つ以上の実施形態にしたがって、管理者によって定められる。例えば、先に論じた企業環境では、管理および監視サービス104は、この企業に関連付けられた各コンピューティング・デバイスに、ポリシ更新を送るように構成されている。ポリシ更新を受け取った各コンピューティング・デバイスは、ネットワーク・リソースにアクセスしようとするときに使用するために、このポリシをローカルに格納するように構成されている。
【0020】
[0026] 以下で更に詳しく論ずるように、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスは、アクセスされたネットワーク・リソース122(1)、...、122(m)に関連するアクティビティを動的に監視するように構成されている。ネットワーク・リソースに関連するアクティビティは、監視され、ホスト・オペレーティング・システム102においてローカルに更新され、管理および監視サービス104に逆に伝達される。このように、ホスト・オペレーティング・システム102のユーザに、信頼できるネットワーク・リソースの正確なリストを供給するために、管理および監視サービス104を連続的に更新することができる。
【0021】
[0027] また、ホスト・オペレーティング・システム102は、ハードウェア・ベースの仮想化セキュリティ分離(HVSI)サブシステム110、ポリシ・マネージャ112、1つ以上のアプリケーション114、ネットワーク・フィルタ116、コンテナ・マネージャ118、およびセキュリティ・サブシステム120を含む。また、ホスト・オペレーティング・システム102は、複数(n)のコンテナ130(1)、...、130(n)として図示されている1つ以上のコンテナを管理する。
【0022】
[0028] HVSIサブシステム110は、要求されたネットワーク・リソースが信頼できるか否か判定するために、ネットワーク分離クエリー・アプリケーション・プログラミング・インターフェース(API)をコールする機能を表す。これらのネットワーク分離クエリーAPIは、例えば、ポリシ・マネージャ112によって露出される。HVSIサブシステム110が、要求されたネットワーク・リソースが信頼できると判定した場合、HVSIサブシステム110は、要求されたネットワーク・リソースにホスト・オペレーティング・システム102がアクセスすることを許可する。逆に、HVSIサブシステム110が、要求されたネットワーク・リソースが信頼できないと判定した場合、HVSIサブシステム110は、ホスト・オペレーティング・システム102にコンテナ130(1)、...、130(n)の内1つ以上を有効化させ、1つ以上の有効化したコンテナに、信頼できないネットワーク・リソースにアクセスすることを許可する。HVSIサブシステム110の機能については、以下で更に詳しく論ずる。1つ以上の実施形態によれば、HVSIサブシステム110は、ポリシ・マネージャ112と通信することによって、要求されたネットワーク・リソースが信頼できるか否か判定する。
【0023】
[0029] ポリシ・マネージャ112は、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスに対する1つ以上のポリシを取得して格納する機能を表す。例えば、1つ以上の実施形態では、ポリシ・マネージャ112は、ホスト・オペレーティング・システム102に対して1つ以上の信頼できるネットワーク・リソースを定める、1つ以上の管理ポリシを得て格納する。1つ以上の実施態様によれば、ポリシ・マネージャ112は、管理および監視サービス104から管理ポリシを取得して格納する。代わりにまたは加えて、ポリシ・マネージャ112は、ネットワーク108からというように、離れたソースから1つ以上の管理ポリシを取得して格納する。加えてまたは代わりに、ポリシ・マネージャ112は、ホスト・オペレーティング・システム102を実装するデバイスのユーザから、1つ以上の管理ポリシを受け取って格納する。
【0024】
[0030] アプリケーション114は、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスの1つ以上のプロセッサによって実行可能な1つ以上のアプリケーションを含む。例えば、アプリケーション114はウェブ・ブラウザー・アプリケーションを含んでもよい。代わりにまたは加えて、アプリケーション114は、電子メール・アプリケーション、ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、視覚プレゼンテーション・アプリケーション等のようなアプリケーションを含んでもよい。
【0025】
[0031] ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102を実装するデバイスを、ネットワーク108のようなネットワークに接続する機能を表す。ネットワーク・フィルタ116は、少なくとも1つの物理ネットワーク・インターフェース・カードと、少なくとも1つのホスト仮想ネットワーク・インターフェース・カードとを含む。加えて、ネットワーク・フィルタ116は、フィルタ・ドライバーも含み、フィルタ・ドライバーは、要求されたネットワーク・リソースがネットワーク108からホスト・オペレーティング・システム102に送信されるときに、これらを傍受するように構成されている。これらの傍受されたネットワーク・リソースは、次に、HVSIサブシステム110によって、ポリシ・マネージャ112に格納されている1つ以上のポリシと比較される。このようにして、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102が、いずれの信頼できないネットワーク・リソースにアクセスするのも防止することを確保する。同様に、ネットワーク・フィルタ116は、コンテナ130(1)、...、130(n)の1つ以上がいずれの信頼できるネットワーク・リソースにもアクセスできないことを確保する。例えば、1つ以上の実施形態では、ネットワーク・フィルタ116は、信頼できるネットワーク・リソースの個々のパケットに関連するデータを変更して、信頼できるネットワーク・リソースがホスト・オペレーティング・システム102によってのみアクセスされ、コンテナ130(1)、...、130(n)の内1つ以上のいずれによってアクセスされるのも禁止されることを確保するように構成されている。
【0026】
[0032] 加えて、ホスト・オペレーティング・システム102はコンテナ・マネージャ118を含む。コンテナ・マネージャ118は、システム100におけるコンテナ130(1)、...、130(n)のスケジューリングを管理し、いつの時点にどのコンテナ130(1)、...、130(n)をホスト・オペレーティング・システム102上で実行するか決定する。また、コンテナ・マネージャ118は、システム100の個々のユーザに1つ以上のコンテナ130(1)、...、130(n)を有効化し、システム100の他のユーザは、個々のユーザに作成された1つ以上のコンテナ130(1)、...、130(n)にアクセスできないことを確保する役割も担う。また、コンテナ・マネージャ118は、遠隔測定データ(telemetry)およびセキュリティ指標のために、いずれの1つ以上の作成したコンテナ130(1)、...、130(n)からもログおよびトレースを収集するように構成されている。例えば、1つ以上の実施形態では、コンテナ・マネージャ118は、ホスト・オペレーティング・システム102上にインストールされているウィルス対策アプリケーションを調べて、収集した情報を解釈し、監視済みのデータをHVSIサブシステム110に供給する。ホスト・オペレーティング・システム102を実行するコンピューティング・デバイスにおける物理プロセッサおよび/またはプロセッサ・コアの数に応じて、一度に1つのコンテナ130(1)、...、130(n)を実行することができ(例えば、1つのコアを有する1つのプロセッサの場合)、または代わりに、複数のコンテナ130(1)、...、130(n)を同時に実行することができる(例えば、複数のプロセッサおよび/または複数のプロセッサ・コアの場合)。加えて、1つ以上の実施形態では、コンテナ・マネージャ118は、コンテナ130(1)、...、130(n)の内1つ以上の中で行われるユーザ構成変更を監視するように構成されている。例えば、コンテナ・マネージャ118はコンテナ130(1)、...、130(n)の1つにおいてアクセスされたウェブ・サイトに関連するユーザの好みに対する変更を検出するように構成されている。ホスト・オペレーティング・システム102は、コンテナにおいてこれらの検出された変更を使用し、ホスト・オペレーティング・システムにおいてアクセスされた1つ以上の関連ウェブ・サイトにこれらを適用するように構成されている。
【0027】
[0033] セキュリティ・サブシステム120は、セキュリティ・ポリシをホスト・オペレーティング・システム102に対して施行する機能を表す。セキュリティ・サブシステム120は、ホスト・オペレーティング・システム102を実装するデバイスにログオンしたユーザを確認し、ログオンしたユーザに対するパスワード変更を処理し(handle)、ログオンしたユーザに対してアクセス・トークンを作成する等を行うように構成されている。
【0028】
[0034] 各コンテナ130(1)、...、130(n)を異なる方法で実装することができる。コンテナの1つの型式では、コンテナ130を、プロセス・コンテナと呼ばれるものとして実装することができる。プロセス・コンテナでは、このコンテナ内におけるアプリケーション・プロセスは、これらがあたかもそれら自体の個々のシステム(例えば、コンピューティング・デバイス)上で動作しているかのように実行する。これは、名前空間分離を使用して遂行される。ホスト・オペレーティング・システム102は、ネームプレース分離を実施する。名前空間分離によって、ホスト・オペレーティング・システム102の共有部分と、ファイル・システム、コンフィギュレーション、ネットワーク等のような、各コンテナに特定的なオペレーティング・システムの分離部とから成る複合ビュー(composed view)を、コンテナ内のプロセスに提供する。
【0029】
[0035] コンテナの他の型式では、コンテナ130を仮想化コンテナ(virtualized container)と呼ばれるものとして実装することができる。仮想化コンテナでは、この仮想化コンテナは軽量仮想機械(lightweight virtual machine)において実行される。軽量仮想機械は、仮想機械に割り当てられた特定のホスト物理メモリを有するのではなく、仮想アドレス・バックアップ・メモリ・ページ(virtual address backed memory pages)を有する。このため、仮想機械に割り当てられるメモリ・ページをページ・ファイルに交換することができる。軽量仮想機械の使用により、コンテナ内において実行するプロセス間に、セキュリティおよび分離の強化が得られる。つまり、プロセス・コンテナはプロセス分離またはサイロに基づくプロセス分離(silo-based process isolation)を使用して、それらの封じ込め(containment)を達成するのに対して、仮想化コンテナは、仮想機械に基づく保護を使用して、通常のプロセス境界が対応できるものを超えた、更に高いレベルの分離を達成する。また、物理メモリを使用して、仮想機械においてコンテナを実行することもできる。
【0030】
[0036] 1つ以上の実施形態では、各コンテナ130(1)、...、130(n)は1つ以上の仮想アプリケーション132(1)、...、132(n)を含む。1つ以上の仮想アプリケーション132(1)、...、132(n)の個々の1つ1つは、ホスト・オペレーティング・システム102上のアプリケーション114の個々の1つ1つのインスタンスに対応する。つまり、仮想アプリケーション132(1)、...、132(n)は、アプリケーション114の1つがホスト・オペレーティング・システム102上で信頼できるネットワーク・リソースにアクセスするのと同じ方法で、コンテナ130(1)、...、130(n)の1つ以上において、信頼できないネットワーク・リソースにアクセスするために使用することができる。
【0031】
[0037] 以上、ハードウェア・ベースの仮想化セキュリティ分離を実施するシステム例について検討したので、これより、1つ以上の実施形態にしたがってハードウェア・ベースの仮想化セキュリティ分離を実施するシステムのアーキテクチャ例について検討する。
【0032】
システム・アーキテクチャ
[0038]
図2は、1つ以上の実施形態による、ハードウェア・ベースの仮想化セキュリティ分離のためのシステム・アーキテクチャ例200を示す。ここではハードウェア・ベースの仮想化セキュリティ分離として論ずるが、本明細書において論ずる技法は、仮想化ベースの分離(VBI:virtualization based isolation)と呼んでもよいことは認められてしかるべきであり、理解されよう。システム・アーキテクチャ200は、少なくとも部分的に、コンピューティング・デバイスによって実現される。
図1のシステム100を実現するために使用することができるものの型式に関する先の論述と同様、種々の異なる型式のコンピュータ・デバイスの内任意のものを、システム・アーキテクチャ200を実現するために使用することができる。
【0033】
[0039] 図示する例では、システム・アーキテクチャ200を実装するコンピューティング・デバイスは、2つの別々に分離された部分、即ち、ホスト・オペレーティング・システム102およびコンテナ130を含む。ホスト・オペレーティング・システム102は、
図2の破線によって示されるように、信頼できないネットワーク・リソースに起因し得る攻撃または感染からホスト・オペレーティング・システムを保護するために、1つ以上のコンテナ130のいずれからも分離されている。
【0034】
[0040] ホスト・オペレーティング・システム102は、HVSIサブシステム110、ポリシ・マネージャ112、ネットワーク・フィルタ116、コンテナ・マネージャ118、およびセキュリティ・サブシステム120を含むものとして示されている。加えて、ホスト・オペレーティング・システム102はアプリケーション202を含み、これは
図1に示したアプリケーション114の1つであってもよい。アプリケーション202は、HVSIライブラリ204を含む。その機能については以下で更に詳しく論ずる。
【0035】
[0041] コンテナ130は、仮想アプリケーション206を含む。仮想アプリケーション206は、ホスト・オペレーティング・システム102に含まれるアプリケーション202のインスタンスを表す。加えて、コンテナ130は、仮想セキュリティ・サブシステム210も含み、その機能についても以下で更に詳しく論ずる。加えて、コンテナ130は、ロギング・システム214も含み、これは、システム・アーキテクチャ200を実装するデバイスによって有効化された1つ以上のコンテナ130内部におけるネットワーク・リソースのアクティビティを管理および監視するコンテンツ・マネージャ(content manager)118の機能を表す。
【0036】
[0042] ホスト・オペレーティング・システム102およびコンテナ130は、互いに分離されているが、仮想機械バス216を通じて通信可能に接続されている。仮想機械バス216は、ホストおよびコンテナの部分が互いに通信することを可能にする通信チャネルである。加えてまたは代わりに、ホスト・オペレーティング・システム102およびコンテナ130は、物理ネットワーク、仮想ネットワーク、簡単メッセージ・ブロック(SMB:simple message block)プロトコル、またはリモート・プロシージャ・コール(RPC)相互接続というような他の手段によって、通信可能に接続される。
【0037】
[0043] 以上、ハードウェア・ベースの仮想化セキュリティ分離を実現するシステムのシステム・アーキテクチャについて検討したので、これより、システム・アーキテクチャ200のホスト部分およびコンテナ部分に示される個々のコンポーネントの機能について検討する。
【0038】
HVSIサブシステム
[0044] HVSIサブシステム110は、システム・アーキテクチャ200を実装するコンピューティング・デバイスにおいて、ハードウェア・ベースの仮想化セキュリティ分離を実施する機能を表す。ハードウェア・ベースの仮想化セキュリティ分離を実施するために、HVSIサブシステム110は、ポリシ・マネージャ112、ネットワーク・フィルタ116、コンテナ・マネージャ118、セキュリティ・サブシステム120、アプリケーション202、および任意の1つ以上のコンテナ130と通信するように構成されている。1つ以上の実施形態では、HVSIサブシステム110は、システム・アーキテクチャ200を実装するコンピューティング・デバイスの起動時に、自動的に開始される(launch) 。あるいは、HVSIサブシステム110は、アプリケーション202がホスト・オペレーティング・システムによって開始されたときにアプリケーション202のHVSIライブラリ204によってというように、他の時点において開始される。
【0039】
[0045] HVSIサブシステム110が開始されると、ユーザのコンテナが未だ存在しない場合、コンテナ・マネージャ118をコールして、システム・アーキテクチャ200を実装するコンピューティング・デバイスにログオンしたユーザにコンテナを作成する。コンテナ・マネージャ118は、コンテナに接続する際に使用するために、ランダムなまたは擬似ランダムな一意のローカル・アカウント資格証明書を作成する。このローカル・アカウント資格証明書は、ホスト・オペレーティング・システム102だけに知らされており、ホスト・オペレーティング・システム102をコンテナに接続するために使用される。ホスト・オペレーティング・システム102とコンテナとの間におけるローカル・アカウント資格証明書のトランザクションは、ホスト・オペレーティング・システム102のユーザには透過的であり、悪意の攻撃または感染が、ホスト・オペレーティング・システム102の物理ネットワーク・インターネット接続を介してコンテナに接続するのを防止する。ホスト・オペレーティング・システム102が複数のユーザを有する実施形態では、コンテナ・マネージャ118は、個々のユーザに別々のコンテナを作成するように構成されている。別々の各コンテナは、ホスト・オペレーティング・システム102が、ログオンしたユーザに作成されたのではない任意のコンテナにアクセスするのを制限されるように、異なるランダムなまたは擬似ランダムな一意のローカル・アカウント資格証明書を有する。コンテナ・マネージャ118は、1つ以上のコンテナへのアクセスを許可する前に、関連するユーザ資格証明書を認証することによって、このコンテナ分離を確実に行う。
【0040】
[0046] 次いで、HVSIサブシステム110は、システム・アーキテクチャ200を実装するコンピューティング・デバイス上で実行するアプリケーションが1つ以上の信頼できないネットワーク・リソースにアクセスしようとしていることをHVSIサブシステム110が検出するまで、コンテナを保留するようにコンテナ・マネージャ118に命令する。HVSIサブシステム110は、ネットワーク・フィルタ116によってHVSIサブシステム110に提供される情報に基づいて、ホスト・オペレーティング・システムと1つ以上の離れたリソース位置との間における通信を監視するように構成されている。
【0041】
[0047] ホスト・オペレーティング・システム102がネットワーク・リソースにアクセスしようとすると、HVSIサブシステム110はポリシ・マネージャ112と通信して、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定する。要求されたネットワーク・リソースが信頼できるネットワーク・リソースであるとHVSIサブシステム110が判定した場合、HVSIサブシステム110は、アプリケーション202のような、ホスト・オペレーティング・システム102におけるアプリケーションによって、信頼できるネットワーク・リソースがアクセスされることを許可する。ネットワーク・リソースが信頼できるか否か判定するためにHVSIサブシステム110が使用することができる、ネットワーク・リソースに関連する情報には、ファイル形式、アプリケーションの種類、ネットワーク・リソースのウィルス保護スキャンの結果、ウィルス・シグネチャー(virus signature)、電子メール・ソース情報、文書メタデータ、URL、IPアドレス、TCPポート、DNSネーム、ハードウェア・デバイス識別子、またはこれらの組み合わせが含まれる。例えば、HVSIサブシステム110が、アプリケーション202が特定のウェブ・ページまでナビゲートすることを要求していることを確認した場合、HVSIサブシステム110は、この特定のウェブ・ページに関連する情報を、ポリシ・マネージャ112からの1つ以上のポリシと比較して、この特定のウェブ・ページが信頼できると判定したことに応答して、アプリケーション202がこの特定のウェブ・ページにアクセスすることを許可する。HVSIサブシステム110は、例えば、特定のウェブ・ページの完全に認定されたドメイン・ネーム(FQDN:fully qualified domain name)、ドメイン・ネーム・サーバ(DNS)を利用するルート・サイト・ドメイン・ネーム(root site domain name)、インターネット・プロトコル(IP)アドレス、または同様のユニフォーム・リソース・ロケーター(URL)アドレシング方法の内1つ以上に基づいて、特定のウェブ・ページが信頼できることを判定する。1つ以上の実施形態によれば、HVSIサブシステム110は、加えて、コンピューティング・デバイス102から離れて実施され、悪意のあるネットワーク・リソースのリストを維持するクラウド・ベースのサービスから情報を受けることによって、ネットワーク・リソースが信頼できるか否か判定するように構成されている。例えば、HVSIサブシステム110が、アプリケーション202が特定のウェブ・ページにナビゲートすることを要求していることを確認した場合、HVSIサブシステム110は、ネットワーク108を通じてクラウド・ベースのサービスを参照して、この特定のウェブ・ページを、クラウド・ベースのサービスにおいて格納されている潜在的に悪意のあるネットワーク・リソースのリストと比較する。クラウド・ベースのサービスが、潜在的に悪意のあるネットワーク・リソースのリストにこの特定のウェブ・ページが含まれていることを示す場合、この特定のウェブ・ページは信頼できないと判定される。
【0042】
[0048] あるいは、HVSIサブシステム110が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースではないと判定した場合、HVSIサブシステム110は、コンテナ・マネージャ118に、コンテナ130を有効化して、信頼できないネットワーク・リソースを処理(handle)させる。ホスト・システムにおいて信頼できないネットワーク・リソースを要求しているアプリケーションの種類に基づいて、HVSIサブシステム110は、コンテナ130内においてそのアプリケーションの仮想バージョンを開始するように、コンテナ・マネージャ118に命令する。例えば、HVSIサブシステム110が、アプリケーション202が信頼できないネットワーク・リソースへのアクセスを要求していると判定した場合、HVSIサブシステム110は、コンテナ130内部に仮想アプリケーション206を作成するように、コンテナ・マネージャ118に命令する。このように、コンテナ130は、丁度ホスト・オペレーティング・システム102が1つ以上の信頼できるネットワーク・リソースと相互作用するように、1つ以上の信頼できないネットワーク・リソースと相互作用するように構成されている。1つ以上の実施形態では、コンテナ130は、ホスト・オペレーティング・システム102を実装するデバイスによって有効化され、このデバイス上に実装される。あるいは、コンテナ130は、ホスト・オペレーティング・システム102を実装するデバイスとは異なるデバイスによって有効化され、このデバイス上に実装される。あるいは、コンテナ130は、オペレーティング・システム102を実装するデバイスとは異なるデバイスによって実装されるが、オペレーティング・システム102を実装するデバイスによって有効化される。
【0043】
[0049] ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスのユーザが、コンテナ130内部の仮想アプリケーションによってアクセスされた任意の1つ以上の信頼できないネットワーク・リソースを見るため、およびそうでなければ対話処理するために、HVSIサブシステム110は、コンテナ130と通信して、仮想アプリケーション206のためのインターフェースを表示させるように構成されている。例えば、1つ以上の実施形態では、HVSIサブシステム110は、仮想機械バス216を使用して、リモート・デスクトップ・プロトコル(RDP)のリモート・アプリケーション統合ローカリー(RAIL:remote applications integrated locally)モードを使用する。このように、ホスト・オペレーティング・システム102は、ホスト・オペレーティング・システム102を実装するデバイスのディスプレイ・デバイスにおいて、仮想アプリケーション206のインターフェースを表示することができる。1つ以上の実施形態では、このインターフェースは、ホスト・オペレーティング・システム102のユーザが、このインターフェースをホスト・オペレーティング・システム自体の一部であると認識するように構成されている。あるいは、HVSIサブシステム110は、仮想アプリケーション206に対応するインターフェースを、表示されるインターフェースが1つ以上の信頼できないネットワーク・リソースに対応することの視覚的指示と共に表示するように構成されている。他の実施形態では、HVSIサブシステム110は、Xウィンドウ・システムまたは代わりのリモート・デスクトップ実装(remote desktop implementation)を使用して、仮想アプリケーション206に対応するインターフェースを表示する。
【0044】
[0050] コンテナ・マネージャ118によってコンテナ130が有効化された後、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102およびコンテナ130からの全てのネットワーク・リソース・コールをフィルタリングする。例えば、HVSIサブシステム110は、ホスト・オペレーティング・システム102からの信頼できないネットワーク・リソースに対するコールを全て阻止し、ホスト・オペレーティング・システム102からの信頼できるネットワーク・リソースに対するコールだけを許可するように命令する。同様に、HVSIサブシステム110は、コンテナ130からの信頼できないネットワーク・リソースに対するコールを全て許可し、コンテナ130からの信頼できるネットワーク・リソースに対するコールを全て阻止するように、ネットワーク・フィルタ116に命令する。同様に、HVSIサブシステム110は、コンテナ130からの信頼できないネットワーク・リソースに対するコールを全て許可し、コンテナ130からの信頼できるネットワーク・リソースに対するコールを全て阻止するように、ネットワーク・フィルタ116に命令する。
【0045】
[0051] HVSIサブシステム110は、コンテナ130によってアクセスされた信頼できないネットワーク・リソースに関連する全てのアクティビティを監視するように、コンテナ・マネージャ118に命令するように構成されている。HVSIサブシステム110が、コンテナ130において実行している仮想アプリケーション206の全てのインスタンスが終了したことの指示をコンテナ・マネージャ118から受けると、HVSIサブシステム110は、ホスト・オペレーティング・システム102と、ホスト・オペレーティング・システム102によってアクセスされているあらゆるコンテナ130との間におけるあらゆる接続を終了する。次いで、HVSIサブシステム110は、1つ以上のコンテナ130を保留するか、または終了する。例えば、1つ以上の実施形態では、HVSIサブシステム110が、仮想アプリケーション206の処理が終了したことを確認すると、HVSIサブシステム110はコンテナ130との接続を終了し、コンテナを保留して、信頼できないネットワーク・リソースを求める別の要求を待つ。あるいは、HVSIサブシステム110が、システム・アーキテクチャ200を実装するデバイスからユーザがログオフしたと判定した場合、HVSIサブシステム110は、ホスト・オペレーティング・システム102によって有効化されたあらゆる1つ以上のコンテナ130を終了する。
【0046】
[0052] ポリシ・マネージャ112、ネットワーク・フィルタ116、コンテナ・マネージャ118、およびセキュリティ・サブシステム120というような、ホスト・オペレーティング・システム102のコンポーネントと通信することにより、HVSIサブシステム110は、要求されたネットワーク・リソースが信頼できるか否か判定し、信頼できないネットワーク・リソースの分離コンテナへの開放を制限し、分離コンテナ内で実行する1つ以上のプロセスを管理するように構成されている。これによって、HVSIサブシステム110は、ホスト・オペレーティング・システム102を実装するデバイスを、信頼できないネットワーク・リソースが原因となるおそれがあるカーネル・レベルの攻撃や感染から保護するために、ハードウェア・ベースの仮想化セキュリティ分離技法を実行することが可能になる。
【0047】
[0053] ハードウェア・ベースの仮想化セキュリティ分離を実行するホスト・オペレーティング・システムのシステム・アーキテクチャ例について検討したので、これより、1つ以上の実施形態によるホスト・オペレーティング・システムの個々のコンポーネントについて検討する。
【0048】
ポリシ・マネージャ
[0054] ポリシ・マネージャ112は、ホスト・オペレーティング・システムを実装するコンピューティング・デバイスに対する1つ以上のポリシを取得および格納するためのホスト・オペレーティング・システム102の機能を表す。例えば、ポリシ・マネージャ112は、
図1に示す管理および監視サービス104から1つ以上のポリシを取得し格納するように構成されている。1つ以上のポリシの各々は、ホスト・オペレーティング・システム102がアクセスすることを許可された1つ以上の信頼できるネットワーク・リソースを指定する。加えて、ポリシは、1つ以上のポリシ・オブジェクト、およびポリシ・オブジェクトについての対応する1つ以上のセキュリティ・パラメータも指定することができる。これらのポリシ・オブジェクトおよび対応するセキュリティ・パラメータは、ホスト・オペレーティング・システムがどのように1つ以上の信頼できないネットワーク・リソースと相互作用すればよいかについて定める制約を規定する(provide)。
【0049】
[0055] 例えば、ポリシ・オブジェクトは、ホスト・オペレーティング・システム102が、コンテナ130のような分離コンテナにおいて仮想アプリケーションを実装することを許可されているか否か識別することができる。このポリシ・オブジェクトについての対応するセキュリティ・パラメータが、ホスト・オペレーティング・システム102が仮想アプリケーションおよび分離コンテナを実行することを許可されていることを示す場合、ホスト・オペレーティング・システムは分離コンテナ130の仮想アプリケーション206において1つ以上の信頼できないネットワーク・リソースを開くことができる。代わりにまたは加えて、ポリシ・オブジェクトは、分離コンテナにおいて開くことを許可された特定の仮想アプリケーションを示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナにおいて仮想的に開くことを許可された1つ以上の特定の(specific)アプリケーションを識別することができる。代わりにまたは加えて、ポリシ・オブジェクトは、ホスト・オペレーティング・システム102が分離コンテナ130とホスト・オペレーティング・システム102自体との間でコピーしてもよいものを示す。対応するセキュリティ・パラメータは、分離コンテナ130とホスト・オペレーティング・システム102との間でコピーしてもよい1つ以上のファイル形式を指定する。代わりにまたは加えて、ポリシ・オブジェクトは、分離コンテナ130内で開かれた仮想アプリケーションについての印刷設定値を示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナ130において実行する仮想アプリケーション206が印刷してもよいか否か、そして印刷してもよい場合、1つ以上のプリンタ、アプリケーション、または仮想アプリケーション206が印刷することを許可されたファイル形式を示す。代わりにまたは加えて、ポリシ・オブジェクトは、仮想アプリケーション206に対するネットワーク・トラフィックを許可するか否か示す。このポリシ・オブジェクトについての対応するセキュリティ・パラメータは、分離コンテナ内においてネットワーク・トラフィックが許可される1つ以上の仮想アプリケーションを指定することができる。代わりにまたは加えて、ポリシ・オブジェクトは、仮想アプリケーション206のために背景タスクが許可されるか否か示す。対応するセキュリティ・パラメータは、分離コンテナ130内において背景タスクが許可される1つ以上の仮想アプリケーションを指定する。代わりにまたは加えて、ポリシ・オブジェクトは、コンテナにおいて実行する仮想アプリケーション206が、グラフィクス加速のためのコンピューティング・デバイスのGPUのような、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスの1つ以上のハードウェア・リソースを利用することを許可されるか否か示す。
【0050】
[0056] 以下の表は、以上で論じたような、1組のポリシ・オブジェクトおよび対応するセキュリティ・パラメータの例を示す。標準的なセキュリティ手順にしたがって、このポリシ例は、デフォルトの否定規則(deny rule)が暗に含まれるが、示されていない。しかしながら、先に論じたポリシ・オブジェクトおよび対応するセキュリティ・パラメータは一例であり、全てを余すことなく示す(exhaustive in scope)のではないことは認められ理解されよう。
【0052】
[0057] ホスト・オペレーティング・システム102が起動すると、HVSIサブシステム110はポリシ・マネージャ112に接触して、ホスト・オペレーティング・システムのために、信頼できるネットワーク・リソースのリストを、任意のポリシ・オブジェクトおよび対応するセキュリティ・パラメータと共に取得する。HVSIサブシステム110は、これらの信頼できるネットワーク・リソース、ポリシ・オブジェクト、および対応するセキュリティ・パラメータを集計し、この集計ポリシをホスト・オペレーティング・システム102に適用する。1つ以上の実施形態では、ホスト・オペレーティング・システム102がネットワーク・リソースにアクセスするためのアクションを実行することを要求する度に、またはアクセスしようとする度に、この集計ポリシを問い合わせる。例えば、ホスト・オペレーティング・システム102がポリシ・オブジェクト「コンテナ分離用仮想アプリケーション」に対応するセキュリティ・パラメータに含まれるアプリケーション202を開くことを要求したとき、HVSIサブシステム110は、ホスト・オペレーティング・システム102に、分離コンテナ130内においてそのアプリケーション206の仮想バージョンを開かせる。
【0053】
[0058] 加えて、HVSIサブシステム110は、分離コンテナ(1つまたは複数)130の内1つ以上におけるアクティビティを監視して、これらのコンテナ(1つまたは複数)がいずれの信頼できるネットワーク・リソースへのアクセスも得られないことを確保する。例えば、ウェブ・ブラウザーの仮想バージョンが分離コンテナ130において実行しており、この仮想ウェブ・ブラウザーが、ポリシ・マネージャ112によって信頼できるネットワーク・リソースであると示されているネットワーク・リソースにアクセスしようとしていることをHVSIサブシステム110が検出した場合、HVSIサブシステム110は、仮想ウェブ・ブラウザーがこの信頼できるネットワーク・リソースを開くこと、またそうでなければこれにアクセスすることを禁止し、代わりに、ホスト・オペレーティング・システム102上において対応するウェブ・ブラウザー内で、信頼できるネットワーク・リソースを開かせることができる。信頼できるネットワーク・リソースのアクセスおよび展開(opening)をホスト・オペレーティング・システム102に制限し、信頼できないネットワーク・リソースのアクセスおよび展開を1つ以上の分離コンテナ130に制限することによって、HVSIサブシステム110は、信頼できるネットワーク・リソースがいずれの信頼できないネットワーク・リソースによっても変転されないことを確保する。
【0054】
[0059] 信頼できるネットワーク・リソースのリスト、ポリシ・オブジェクト、および対応するセキュリティ・パラメータをポリシ・マネージャ112から受け取ることに加えて、ホスト・オペレーティング・システム102は、ホスト・オペレーティング・システムに対するポリシに影響を及ぼす可能性がある1つ以上のローカル・イベントを観察するように構成されている。例えば、仮想ウェブ・ブラウザーが分離コンテナ130内部で実行しているというシナリオについて検討する。HVSIサブシステム110は、分離コンテナ130内部において仮想ウェブ・ブラウザーによってアクセスされる各ネットワーク・リソースの挙動を監視する。仮想ウェブ・アプリケーションが信頼できないネットワーク・リソースにナビゲートしたとき、信頼できないネットワーク・リソースのダウンロードが、コンテナ130のレジストリーに、予期しないやり方で書き込ませる可能性がある。以下で更に詳しく論ずるコンテナ・マネージャ118を使用して、HVSIサブシステム110は、コンテナ130からデータを取得し、信頼できないネットワーク・リソースに対するローカル・ポリシの更新(updated local policy)を計算する。例えば、1つ以上の実施形態では、HVSIサブシステム110は、信頼できないネットワーク・リソースに関連付けられた印刷およびコピー設定を不能化する(disable)ことによって、信頼できないネットワーク・リソースに対するローカル・ポリシを更新する。HVSIサブシステム110は、次いで、この取得したデータを集計し、
図1に示す管理および監視サービス104のような、リモート・サービスに取得したデータを報告するように構成されている。1つ以上の実施形態によれば、HVSIサブシステム110は、このローカル・ポリシを更新する際の追加情報を求めて、ウィルス対策アプリケーションのような、ローカルにインストールされているホスト・オペレーティング・システム102のアプリケーションを参照する。例えば、HVSIサブシステム110は、1つ以上のウィルス対策アプリケーションを使用して、コンテナ130において信頼できないネットワーク・リソースをスキャンし、セキュリティ・レベルを信頼できないネットワーク・リソースに指定する。このように、HVSIサブシステム110は、ポリシを継続的に更新し、更に、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスを、信頼できないネットワーク・リソースに対して保護するように構成されている。
【0055】
[0060] 1つ以上の実施形態では、HVSIサブシステム110は、ホスト・オペレーティング・システム102およびコンテナ130内におけるローカル・アクティビティに応答する、独立したホスト・ベースのポリシ・エンジンを実装する。この独立したホスト・ベースのポリシ・エンジンは、管理および監視サービス104への往復(round trip)を減らし、管理および監視サービスが多くのクライアントを管理することを可能にする。1つ以上の実施形態では、ポリシ・マネージャ112がテンプレートまたはシグネチャーを管理および監視サービス104から取得する。ポリシ・マネージャ112は、このテンプレートまたはシグネチャーをHVSIサブシステム110に供給する。コンテナ130が有効化されるとき、HVSIサブシステム110は、ポリシ・テンプレートまたはシグネチャーからのパターンに基づいて、要求ポリシを計算し、コンテナ130において観察されたアクティビティと照合する。例えば、仮想ウェブ・アプリケーションがコンテナ130において実行しており、仮想ウェブ・アプリケーションがURLとしてアクセスしようとしているネットワーク・リソースが、ポリシ・テンプレートにおけるパターンと一致した場合、HVSIサブシステム110はリスク・レベルを計算し、ポリシを更新する。これにより、許可アクション、阻止アクション、またはリダイレクト・アクションというような、特定のアクションが、コンテナ130内における仮想アプリケーションに動的に適用される結果となる。この実施形態では、ポリシは動的であり、ローカル評価およびポリシを管理および監視サービス104からHVSIサブシステム110に肩代わりさせる。
【0056】
[0061] 代替例として、ユーザが新たなアプリケーションを信頼できないウェブ・サイトからダウンロードし、コンテナ130内部にインストールするというシナリオについて検討する。この例では、HVSIサブシステム110は、ダウンロードされたアプリケーションを既存のポリシと突き合わせて評価し、分離コンテナ130において、ダウンロードされたアプリケーションに適用するポリシを計算する。1つ以上の実施形態では、この計算されたポリシは、同様のアプリケーションの1つ以上のポリシ・オブジェクトおよび対応するセキュリティ・パラメータに基づく。例えば、ダウンロードされたアプリケーションが電子メール・アプリケーションである場合、HVSIサブシステム110は、他の電子メール・アプリケーションに関連する1つ以上のポリシ・オブジェクトおよび対応するセキュリティ・パラメータを識別し、ダウンロードされた電子メール・アプリケーションに対して同様のポリシ設定を適用する。HVSIサブシステム110は、コンテナ130内部において、ダウンロードされたアプリケーションに関連するアクティビティを監視するように構成され、更にこの観察したアクティビティに基づいてローカル・ポリシを再計算するように構成されている。加えてまたは代わりに、コンテナ130内部において観察された任意の1つ以上のダウンロードされたアプリケーションまたはアクセスされたネットワーク・リソースのアクティビティを記述する情報が集計され、
図1に示す管理および監視サービス104のようなリモート・サービスに伝達される。ある実施形態では、ホスト・オペレーティング・システム102は、コンテナ130内部で観察されたアクティビティを記述する情報に対してローカル分析を実行し、追加のセキュリティ・ポリシを計算する。例えば、ダウンロードされたアプリケーションが異常な挙動を呈している場合、ダウンロードされたアプリケーションを終了させ、コンテナを、このアプリケーションをダウンロードする以前における、その直前の動作状態にリセットすることができる。本明細書において論ずる場合、コンテナにおける異常挙動とは、例えば、コンテナ130のカーネルまたはオペレーティング・システムを改竄する試みであるとしてHVSIサブシステム110によって解釈されたインディケータを指す。
【0057】
[0062] ホスト・オペレーティング・システム102に対してポリシを施行するために、HVSIサブシステム110は、ネットワーク・フィルタ116のような、1つ以上のネットワーク・フィルタを採用する。
【0058】
ネットワーク・フィルタ
[0063] ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102に対する着信および発信ネットワーク・トラフィックを傍受し検査する機能を表す。ネットワーク・フィルタ116は、能力の中でもとりわけ、ネットワーク・トラフィックを転送する、阻止する、および/または修正することを含む、ネットワーク・トラフィックのための施行機能を有する。例えば、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102と任意の1つ以上の分離コンテナ130との間における全てのネットワーク・トラフィックおよびデータ伝達を傍受し検査するように構成されている。同様に、ネットワーク・フィルタ116は、
図1に示すネットワーク108のようなネットワークを通じてアクセスされる、ホスト・オペレーティング・システム102と任意の離れたリソース位置との間における全てのネットワーク・トラフィックおよびデータ伝達を傍受し検査するように構成されている。1つ以上の実施形態では、ホスト・オペレーティング・システム102を任意の1つ以上の分離コンテナ130とインターフェースするために、ネットワーク・フィルタ116は、仮想スイッチ、ホスト・オペレーティング・システムのための少なくとも1つのネットワーク・インターフェース・カード、および1つ以上の分離コンテナのための1つ以上の仮想ネットワーク・インターフェース・カードを含む。
【0059】
[0064] ポリシ・マネージャ112から受け取ったポリシを使用して、HVSIサブシステム110は、コンテナ130が信頼できるネットワーク・リソースにアクセスできないことを確保するために、ネットワーク・フィルタ116とインターフェースする。同様に、HVSIサブシステム110は、ホスト・オペレーティング・システム102がいずれの1つ以上の信頼できないネットワーク・リソースにもアクセスできないこと、またはそうでなければ開けないことを確保するために、ネットワーク・フィルタ116とインターフェースする。1つ以上の実施形態では、ネットワーク・フィルタ116は、信頼できるデータがホスト・オペレーティング・システム102に留まり、コンテナ130に流出しないことを確保するために、信頼できるネットワーク・リソースに関連する個々のパケットのデータを変更するように構成されている。以下で更に詳しく論ずるように、プロキシ認証のシナリオでは、ネットワーク・フィルタ116は、プロキシのトラバーサル(traversal)を確保し、資格証明書がコンテナに漏れること、またそうでなければコンテナによってアクセスされることを防止するために、資格証明書情報をネットワーク・トラフィックに注入する。ある実施形態では、ネットワーク・フィルタ116は、ネットワーク・トラフィックが、DNS参照の間に問い合わせされたネットワーク・リソースにおいて発信するまたは終端することを検証する(validate)。これを遂行するために、許可されたネットワーク・リソースに基づく識別子を、コンテナの内部に封印し(plumbed)、1つ以上のネットワーク・リソース名と関連付ける。コンテナ内にあるネットワーク・スタックは、ネットワーク・トラフィック内にあるこれらの識別子を含む。ネットワーク・フィルタ116は、識別子がネットワーク・リソース名と一致するか否か検証する。検証が成功であれば、トラフィックを転送し、失敗であれば、トラフィックを欠落させる。ある実施形態では、ネットワーク・フィルタ116は、転送されたネットワーク・トラフィックから識別子を剥ぎ取る。
【0060】
[0065] 1つ以上の実施形態によれば、ネットワーク・フィルタ116は仮想スイッチ拡張部(virtual switch extension)として実装される。あるいは、ネットワーク・フィルタ116は、ネットワーク・トラフィックを傍受する、検査する、転送する、修正する、および阻止することを含む、複数の能力を有する任意のモジュールとして実装される。他の実施形態では、ネットワーク・フィルタは、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスのファイアウォールまたはその他のセキュリティ・ソフトウェア内に組み込まれる。1つ以上の実施形態によれば、ポリシがホスト・オペレーティング・システムにおいて受け取られるときに、ネットワーク・フィルタ116はホスト・オペレーティング・システム102上にインストールされる。例えば、ネットワーク・フィルタ116は、ポリシ・マネージャ112が、
図1に示す管理および監視サービス104からポリシを受け取るときにインストールされてもよい。しかしながら、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102を実装するデバイスのリソース(例えば、メモリ)を必要とするので、1つ以上の実施形態では、ホスト・オペレーティング・システム上にポリシが存在しないときには、ネットワーク・フィルタ116はインストールされない。このように、信頼できないネットワーク・リソースを、コンテナ130のような、分離コンテナに逸らせるポリシがないとき、リソースのオーバーヘッドを低減するために、ネットワーク・フィルタ116をインストールしない。
【0061】
[0066] ある実施形態では、ネットワーク・フィルタ116は、リソースに接続するために使用するネットワーク・インターフェースを強制する(enforce)。例えば、ホスト・オペレーティング・システム102が企業内にある場合、セキュリティは確保される。企業内では、ホスト・オペレーティング・システム102上で実行するアプリケーション202は、単に任意の利用可能な物理インターフェース(例えば、イーサネット(登録商標)、Wi−Fi等)を使用すればよい。しかしながら、ホスト・オペレーティング・システム102が公衆ネットワーク上(例えば、企業外部の喫茶店の公衆Wi−Fi)にあるとき、ネットワーク・フィルタ116は、アプリケーション202およびホスト・オペレーティング・システム102上で実行するその他のアプリケーションが、VPNインターフェースのような、ネットワーク・セキュリティを高める特定のネットワーク・インターフェースを使用することだけを許可するのでもよい。ある構成では、ネットワーク・フィルタ116は、コンテナ130内で実行する1つ以上のアプリケーションが、VPNを使用せずに、公衆ネットワークにアクセスすることを許可する。1つのネットワーク・インターフェースがホスト・オペレーティング・システム102の通信のために分離され、異なるネットワーク・インターフェースがコンテナ130の通信のために分離されている実施形態では、ネットワーク・フィルタ116は、コンテナに対するネットワーク通信が、異なるネットワーク・インターフェースに分離されていることの指示を、コンテナ130のネットワーク・スタックに与えるように構成されている。
【0062】
[0067] HVSIサブシステム110は、ネットワーク・フィルタ116をコールし、ネットワーク・フィルタ116に、それ自体を、ホスト・オペレーティング・システム102を実装するデバイスのネットワーク・ポートに取り付けさせる(attach)。一旦ネットワーク・フィルタ116がネットワーク・ポートに取り付けられたなら、ネットワーク・トラフィックを監視、フィルタリング、および/または阻止することができる。1つ以上の実施形態では、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102に対して更にポリシを施行するために、ローカルDNSサーバを含む。例えば、1つ以上の実施形態では、ネットワーク・フィルタ116のDNSサーバは、個々のネットワーク・リソースの出所を検証するために、ネットワーク・リソースを対応するIPアドレスにマッピングする。1つ以上の実施態様では、ネットワーク・フィルタ116は、1つ以上の入力/出力制御システム(IOCTL)を含む。入力/出力制御システムは、ホスト・オペレーティング・システム102および任意の1つ以上のコンテナ130の双方に対して、ネットワーク・トラフィックを許可または阻止するように構成されている。他の実施態様では、この構成は、API、ファイル、またはコマンド・シェルを通じて実行される。
【0063】
[0068] ネットワーク・フィルタ116は、ネットワーク・トラフィック(例えば、HTTPトラフィック)を監視して、ホスト・オペレーティング・システム102およびコンテナ130が、ホスト・オペレーティング・システムまたはコンテナそれぞれに許可されていないネットワーク・リソースにアクセスしていないことを確認するように構成されている。HTTPトラフィックを監視するために、ネットワーク・フィルタ116は、ホスト・オペレーティング・システム102および/または任意の1つ以上の分離コンテナ130との間におけるネットワーク・トラフィックを容易にする、
図1に示すウェブ・プロキシ106のような、1つ以上のウェブ・プロキシを用いて、HTTPヘッダ検査を実行する。あるいは、1つ以上の実施形態によれば、ネットワーク・フィルタ116はそれ自体のHTTPプロキシを実装するように構成されている。
【0064】
[0069] 代理環境(proxied environment)において、そしてネットワーク変更を跨いでネットワーク通信機能をサポートするために、ネットワーク・フィルタ116はネットワーク・アドレス変換器(NAT:network address translator)を含む。NATは、コンテナ130に、ホスト・オペレーティング・システム102の外部のネットワークに到達するために、プライベート・ネットワークおよびゲートウェイを提供する。1つ以上の実施形態によれば、NATは外部ネットワーク・プロキシ構成(outside network proxy configuration)を転送し、外部ネットワーク変更通知をホスト・オペレーティング・システム102に転送するように構成されている。例えば、1つ以上の実施形態では、ネットワーク・フィルタ116は、Wi−Fi(IEEE802.11)ネットワーク・アダプターがWi−Fiネットワークの範囲から離れるまたは入るときというような、ネットワーク接続ステータスが変化したときに、NATを使用してネットワーク変更通知をホスト・オペレーティング・システム102に転送する。加えて、ネットワーク・フィルタ116のNATは、コンテナ130が異なるネットワークを正しく識別できることを確保するために、外部ネットワーク同定(identity)をエミュレートするように構成されている。例えば、NATは、ホストの外部ネットワーク・ゲートウェイのメディア・アクセス制御(MAC)アドレスを取り込み、それを、NATによって与えられるプライベート・ネットワーク・ゲートウェイMACアドレスとして再利用することができる。これによって、コンテナ130のHTTPソフトウェアが、HTTPキャッシュを適切に整列する(align)ことを確保し、同じネットワークに再接続するときにプロキシ発見が重複しないことを確保する。外部ネットワーク同定をエミュレートすることによって、ネットワーク・フィルタ116のNATは、ネットワーク再接続性能を著しく向上させ、ホスト・オペレーティング・システム102のユーザのために、ユーザ体験を改善する。加えて、ネットワーク・フィルタ116のNATは、コンテナ130のような1つ以上の分離コンテナにおいて実行している1つ以上の仮想アプリケーション206のために、「低電力接続スタンバイ」(low-power connected standby)設定をホスト・オペレーティング・システム102に転送するように構成されている。これによって、ホスト・オペレーティング・システム102は、1つ以上のアクティブな分離コンテナ130において実行しているいずれの仮想アプリケーション206も維持する(keep alive)することが可能になる。1つ以上の実施形態では、NATの機能がホスト・オペレーティング・システム102の異なるコンポーネントに肩代わりされる。例えば、ネットワーク・フィルタ116、HVSIサブシステム110、またはコンテナ・マネージャ118の内の1つまたは組み合わせによって、ホスト・オペレーティング・システム102の外部のネットワークに到達するためにプライベート・ネットワークおよびゲートウェイをプロビジョニングする、ネットワーク変更通知を転送する、外部ネットワーク同定をエミュレートする、および低電力接続スタンバイ設定を転送する機能を実行することができる。
【0065】
[0070] HVSIサブシステム110は、ネットワーク・フィルタ116と相互作用して、1つ以上の実施形態にしたがってウェブ・プロキシ認証を実行するように構成されている。例えば、多くの企業システムは、この企業の個々のユーザに対するインターネット・アクセスを制御するために、1つ以上のウェブ・プロキシを使用する。これらのウェブ・プロキシは、ユーザ名および関連付けられたパスワードのようなユーザ資格証明書を催促することによって、個々のユーザまたはアプリケーションが、ウェブ・サイトのような、ネットワーク・リソースにアクセスすることを許可する前に、認証を要求する。したがって、ネットワーク・フィルタ116は、
図1に示すウェブ・プロキシ106のような、ウェブ・サイトへのアクセスを容易にするために必要とされるウェブ・プロキシを識別するように構成されている。しかしながら、分離コンテナにおいて実行している仮想アプリケーションがウェブ・プロキシ認証を要求するというシナリオでは、セキュリティ上の懸念が発生する。例えば、1つ以上の信頼できないネットワーク・リソースが開いており分離コンテナ130において実行している場合、ユーザ資格証明書への無許可アクセスを獲得し、関連するユーザ・アカウントのセキュリティを危険に晒すおそれがある。
【0066】
[0071] コンテナ130において実行する仮想アプリケーション206が、ウェブ・プロキシ認証を要求する際に、継ぎ目のないユーザ体験を提供するために、HVSIサブシステム110は、ユーザ資格証明書をコンテナ130に提供するのではなく、ホスト・オペレーティング・システム102からウェブ・プロキシにユーザ資格証明書を提供するように構成されている。HVSIサブシステム110は、分離コンテナ内に仮想セキュリティ・サブシステム210を実装することによって、コンテナ130において実行する仮想アプリケーション206のために、ユーザ資格証明書をウェブ・プロキシに提供するように構成されている。仮想セキュリティ・サブシステム210は、ホスト・オペレーティング・システム102のセキュリティ・サブシステム120とインターフェースするように構成されている。例えば、1つ以上の実施形態では、HVSIサブシステム110は、仮想ウェブ・アプリケーション206が、ウェブ・プロキシ認証を要求するネットワーク・リソースをコールしていることを検出する。HVSIサブシステム110は、仮想セキュリティ・サブシステム210がホスト・オペレーティング・システム102のセキュリティ・サブシステム120とインターフェースできるように、分離コンテナ内に仮想セキュリティ・サブシステム210を実装するように構成されている。仮想セキュリティ・サブシステム210とセキュリティ・サブシステム120との間の通信は、仮想機械バス216を通じてというように、HVSIサブシステム110によって確立された接続を通して実行することができる。
【0067】
[0072] コンテナ130内における仮想ウェブ・アプリケーション206がウェブ・プロキシを介してネットワーク・リソースにアクセスしようとすると、ウェブ・プロキシは、ユーザ資格証明書を求めるチャレンジを返送する。このシナリオでは、仮想セキュリティ・サブシステム210は、ウェブ・プロキシに認証を与えるために、ホスト・オペレーティング・システム102のセキュリティ・サブシステム210をコールするように構成されている。このコールを受け取ったことに応答して、セキュリティ・サブシステム210は、ダミー資格証明書ブロブを生成するように構成されている。ダミー資格証明書ブロブは、ユーザ資格証明書を実際に資格証明書ブロブ内に収容するのではなく、ユーザ資格証明書の所有(ownership)を示す。本明細書において論ずる場合、ダミー・ブロブがユーザ資格証明書の擬似認証を指すこともある。セキュリティ・サブシステム120は、生成したダミー資格証明書ブロブを仮想セキュリティ・サブシステム210に戻す。次いで、仮想セキュリティ・サブシステム210は、仮想ウェブ・アプリケーションがダミー資格証明書ブロブを、ウェブ・プロキシへのHTTP応答の中に埋め込むことができるように、このダミー資格証明書ブロブを仮想ウェブ・アプリケーション206に提供する。このように、コンテナ130は、実際のユーザ資格証明書をホスト・オペレーティング・システム102から受け取ることなく、ユーザ資格証明書の所有を証明するように構成されている。1つ以上の実施形態によれば、ダミー・ブロブ内における資格証明書所有の証明は、ハッシュ・セキュリティ関数を実際の資格証明書に適用し、ハッシングした資格証明書をダミー・ブロブ内に含ませることによって実行される。これによって、コンテナ130において実行しているかもしれないいずれの信頼できないネットワーク・リソースによっても、ユーザ資格証明書が漏洩されないことを確保する。
【0068】
[0073] あるいは、仮想セキュリティ・サブシステム210が、ユーザ資格証明書を求めるウェブ・プロキシ要求をホスト・オペレーティング・システム102のセキュリティ・サブシステム120に転送する場合、セキュリティ・サブシステム120は2つの資格証明書ブロブを生成するように構成されている。セキュリティ・サブシステム120によって生成される第1の資格証明書ブロブは、前述のようなダミー資格証明書ブロブである。セキュリティ・サブシステム120によって生成される第2の資格証明書ブロブは、ウェブ・プロキシによって要求された実際のユーザ資格証明書を含む。このシナリオでは、ダミー資格証明書ブロブは、コンテナ130内にある仮想セキュリティ・サブシステム210に提供され、実際のユーザ資格証明書を含むブロブは、ホスト・オペレーティング・システム102内にあるネットワーク・フィルタ116に提供される。先に論じたように、仮想ウェブ・アプリケーション206は、ダミー資格証明書ブロブを仮想セキュリティ・サブシステム210から受け取り、このダミー資格証明書ブロブを、ウェブ・プロキシへのHTTP応答の中に埋め込むように構成されている。ホスト・オペレーティング・システム102およびコンテナ130双方からのネットワーク・トラフィックの全ては、ネットワーク・フィルタ116を通してフィルタリングされるので、ネットワーク・フィルタ116は、HTTP応答をコンテナから傍受し、HTTP応答をウェブ・プロキシに送信する前に、ダミー・ブロブを実際のユーザ資格証明書ブロブと交換するように構成されている。1つ以上の実施形態によれば、ホスト・オペレーティング・システム102がネスト状コンピューティング環境において機能している場合、この資格証明書ブロブの交換は、ネスト状環境の各レイヤーにおいて、複数回実行されることがある。あるいは、1つ以上の実施形態では、ネットワーク・フィルタ116が、許可されたネットワーク・リソースの識別子をコンテナ130内に封印し、先に論じたように、DNS参照中に問い合わせされたネットワーク・リソースにおいて、ネットワーク・トラフィックが発信しそして終端することを検証する。
【0069】
[0074] 本明細書において論ずるように、ホスト・オペレーティング・システム102が、ポリシ・マネージャ112、ネットワーク・フィルタ116、およびセキュリティ・サブシステム110を使用して、信頼できないネットワーク・リソースにアクセスしようとしていると、HVSIサブシステム110が判定すると、HVSIサブシステム110は、コンテナ・マネージャ118と通信し、1つ以上のコンテナ130を管理し、信頼できないネットワーク・リソースにアクセスしないか監視する。
【0070】
コンテナ・マネージャ
[0075] コンテナ・マネージャ118は、信頼できないネットワーク・リソースにアクセスするために、ホスト・オペレーティング・システム102から分離された1つ以上のコンテナ130を有効化する役割を果たす。本明細書において論ずる場合、コンテナ130のようなコンテナを有効化するには、1つ以上の新たなコンテナを作成すること、または1つ以上の保留中のコンテナの実行を再開することが含まれる。加えて、コンテナ・マネージャ118は、ホスト・オペレーティング・システム102にログインした個々のユーザのために1つ以上のコンテナを有効化し、ホスト・オペレーティング・システムのいずれの他のユーザも、個々のユーザのために有効化された1つ以上のコンテナにアクセスするのを制限されることを確保するように構成されている。コンテナ・マネージャ118は、ホスト・オペレーティング・システム102にログインしたユーザとコンテナ130とのマッピングを確認する(ensure)。ホスト・オペレーティング・システム102に複数のユーザがあり、複数のコンテナがある実施形態では、コンテナ・マネージャ118は、ログオンしたユーザの識別情報(identity)を見て、直接それを1つ以上の対応するコンテナに関連付けるように構成されている。この制限によって、他のユーザがコンテナを見ること、またはそうでなければ対話処理することを防止する。
【0071】
[0076] コンテナ・マネージャ118は、更に、コンテナ130内部におけるアクティビティを記述するログおよびトレースを収集するように構成されている。コンテナ・マネージャ118は、これらのログおよびトレースを使用して、コンテナ使用状況を監視して、遠隔測定データおよびセキュリティ指標を求めるように構成されている。1つ以上の実施形態によれば、コンテナ・マネージャ118は、コンテナ130において監視したアクティビティに関連するあらゆるセキュリティ問題を解釈するために、ウィルス対策アプリケーションのような、ホスト・オペレーティング・システム102上にインストールされているローカル・アプリケーションを調べる。コンテナ・マネージャ118は、この監視情報を集計し、この監視情報をHVSIサブシステム110に提供するように構成されている。代わりにまたは加えて、コンテナ・マネージャ118は、この監視情報を、
図1に示す管理および監視サービス104のような、1つ以上の離れたソースに提供するように構成されている。
【0072】
[0077] ホスト・オペレーティング・システム102が起動するとき、HVSIサブシステム110は、ポリシが存在するか否か判定する。1つ以上の実施形態では、HVSIサブシステム110は、本明細書において論ずるように、ポリシ・マネージャ112と通信することによって、ポリシが存在するか否か判定する。HVSIサブシステム110が、ホスト・オペレーティング・システム102上にポリシが存在すると判定した場合、コンテナ・マネージャ118は、ホスト・オペレーティング・システムによって要求された任意の信頼できないネットワーク・リソースを処理する(handle)ために、コンテナ130を有効化するように構成されている。コンテナ・マネージャ118は、ホスト・オペレーティング・システム102と通信して、コンテナ・ベース・イメージが存在するか否か判定することによって、コンテナ130を有効化するように構成されている。コンテナ・マネージャ118が、コンテナ・ベース・イメージが存在しないと判定した場合、コンテナ・マネージャ118は、コンテナ・ベース・イメージを作成するように構成されている。コンテナ・マネージャ118が、コンテナ・ベース・イメージが存在すると判定した場合、またはコンテナ・マネージャ118がコンテナ・ベース・イメージを作成した後、コンテナ・マネージャ118は、ユーザがホスト・オペレーティング・システム102にログオンするのを待つ。
【0073】
[0078] コンテナ・ベース・イメージは、コンテナ130のような、それ自体のオペレーティング・システムを含む分離コンテナを作成および有効化するために必要な情報を収容する。例えば、1つ以上の実施形態では、コンテナ・ベース・イメージは、ホスト・オペレーティング・システム102がどのようにレジストリー設定をコンテナに対して設定するか記述する情報を収容する。レジストリー設定に関する情報が要求されるのは、コンテナ130内部で開かれている一部の仮想アプリケーションが、このアプリケーションのホスト・オペレーティング・システム102上で開かれるバージョンとは異なる挙動を示すからである。加えてまたは代わりに、コンテナ・ベース・イメージは、コンテナ130において実行される仮想アプリケーション内においてどのようにユーザ・アカウントを作成するかについて記述する情報を含む。加えてまたは代わりに、コンテナ・ベース・イメージは、アクティブなときにコンテナ130によって要求される可能性がある、メモリ、プロセッサ、ディスク、またはネットワークというような、割り当てリソースの量に関する情報を含む。
【0074】
[0079] ユーザがホスト・オペレーティング・システム102にログオンすると、コンテナ・マネージャ118は、コンテナ・ベース・イメージに対応するコンテナが存在するか否か判定する。コンテナ・マネージャ118が、コンテナ・ベース・イメージに対するコンテナが存在しないと判定した場合、コンテナ・マネージャ118は、コンテナ130のような、コンテナを作成することができる。コンテナ・ベース・イメージが正確にホスト・オペレーティング・システム102を表すことを確保するために、コンテナ・マネージャ118は、既存のあらゆるコンテナ・ベース・イメージを無効化し、オペレーティング・システムの更新後に、1つ以上の新たなコンテナ・ベース・イメージを作成するように構成されている。このように、コンテナ・マネージャ118は、コンテナ・ベース・イメージがあらゆる更新後のホスト・オペレーティング・システムの境界を含み、これによって、コンテナ・ベース・イメージから作成されるコンテナが、ホスト・オペレーティング・システム102と共に最新であり続けることを確保する。ホスト・オペレーティング・システム102の更新の場合、コンテナ・マネージャ118は、開いているあらゆるコンテナを強制的に閉じるか、またはコンテナにおけるユーザ・アクティビティが中止するまで待ち、コンテナ・ベース・イメージを削除して新たなコンテナ・ベース・イメージを作成するように構成されている。コンテナを作成した後、コンテナ・マネージャ118は、このコンテナを保留モードに入れる。コンテナが保留モードにあるとき、このコンテナが消費するホスト・オペレーティング・システム102を実装するデバイスのリソースが減少し、これによってリソースのオーバーヘッドを低減する。コンテナ・マネージャ118は、ホスト・オペレーティング・システム102が1つ以上の信頼できないネットワーク・リソースへのアクセスを要求するまで、1つ以上の分離コンテナ130を保留モードに維持するように構成されている。
【0075】
[0080] HVSIサブシステム110が、ホスト・オペレーティング・システム102が1つ以上の信頼できないネットワーク・リソースへのアクセスを要求していることを検出したとき、HVSIサブシステム110は、1つ以上の信頼できないネットワーク・リソースを処理する(handle)ために、1つ以上の保留されているコンテナを有効化するように、コンテナ・マネージャ118に命令する。1つ以上の実施形態では、1つ以上のコンテナは、ホスト・オペレーティング・システム102を実装しているコンピューティング・デバイス上にホストされている。あるいは、1つ以上のコンテナの内少なくとも1つが、ホスト・オペレーティング・システム102を実装するコンピューティング・デバイスから離れたコンピューティング・デバイス上にホストされてもよい。コンテナが異なるコンピューティング・デバイス上にホストされているシナリオでは、コンテナ・マネージャ118は、異なるコンピューティング・デバイスと通信して、リモート・コンテナを管理および監視するように構成されている。コンテナ・マネージャ118は、コンテナを作成するよりも、保留されているコンテナを有効化する方が速く行うことができるので、1つ以上の保留コンテナを維持することによって、ホスト・オペレーティング・システム102は、信頼できないネットワーク・リソースを求める要求に素早く応えることが可能になる。
【0076】
[0081] ホスト・オペレーティング・システム102が1つ以上の信頼できないネットワーク・リソースへのアクセスを要求していると判定したことに応答して、コンテナ・マネージャ118は、信頼できないネットワーク・リソースを要求している、ホスト・オペレーティング・システム上のアプリケーションを特定するように構成されている。コンテナ・マネージャ118は、信頼できないネットワーク・リソースを処理する(handle)ために、コンテナ130内においてアプリケーションの仮想バージョンを開始するように構成されている。コンテナ・マネージャ118がコンテナ130内部でアプリケーションの仮想バージョンを有効化した後、HVSIサブシステム110は、ホスト・オペレーティング・システム102を実装するデバイスのディスプレイにおいて、仮想アプリケーションのインターフェースを表示するように構成されている。
【0077】
[0082] コンテナ・マネージャ118は、HVSIサブシステム110と通信して、ホスト・オペレーティング・システム102上に、そしてコンテナがリモート・コンピューティング・デバイス上にホストされている場合はコンテナ130内に、しかるべきハードウェア仮想化技術が存在することを確保するように構成されている。コンテナ・マネージャ118が適正に機能するためには、コンテナ・マネージャ118は、分離コンテナのライフサイクルおよび関連するネットワーク・スタックを管理するために、ホスト・オペレーティング・システム102のアプリケーション・プログラミング・インターフェース(API)が利用可能であることを確認するように構成されている。
【0078】
[0083] コンテナ・マネージャ118は、ロギング・システム214を使用して、コンテナ130内部のアクティビティを監視するように構成されている。このように、コンテナ・マネージャ118は、ネットワークのあらゆる疑わしい挙動、またはコンテナ130内部においてアクセスされたネットワーク・リソースのあらゆる疑わしい挙動、コンテナ130がディスク空間を余りに多く占めすぎているか否か等を検出するように構成されている。ロギング・システム214から得られた情報に基づいて、コンテナ・マネージャ118は、1つ以上のコンテナ130をどのように管理するか、HVSIサブシステム110に通知することができる。例えば、1つ以上の実施形態では、コンテナ・マネージャ118は、コンテナ130内部における1つ以上の信頼できないネットワーク・リソースへのアクセスが完了したことを確認し、この情報をHVSIサブシステム110に伝達する。この情報を受け取ったことに応答して、HVSIサブシステム110は、追加の信頼できないネットワーク・リソースを処理する(handle)ためにコンテナ130が後に必要とされるまで、コンテナ130を保留モードに入れる。
【0079】
[0084] また、コンテナ・マネージャ118は、ホスト・オペレーティング・システム102のユーザを監視し、いつログオフしたか判定するように構成されている。ホスト・オペレーティング・システム102のユーザがログオフしたと判定したことに応答して、コンテナ・マネージャ118はこの情報をHVSIサブシステム110に提供する。HVSIサブシステム110は、ユーザがログオフしたことに応答して、1つ以上のコンテナ130を削除するように構成されている。本明細書において論ずるように、コンテナを削除することによって、そのコンテナ内に含まれるあらゆる情報も消去される。
【0080】
[0085] また、コンテナ・マネージャ118は、ホスト・オペレーティング・システム102からのDNSおよびハイパーテキスト・トランスファ・プロトコル(HTTP)情報を共有して、ウェブ・ブラウジング性能、および分離コンテナの1つ以上におけるその他のネットワーク・アクティビティを改善するように構成されている。1つ以上の実施形態では、コンテナ・マネージャ118は、コンテナ130がネットワーク・リソースにアクセスした際における以前のインスタンスから作られたDNSクエリーのキャッシュ、およびインターネット・データ・ファイルまたはウェブ・サイト・クッキーのようなHTTPデータを維持し、信頼できないウェブ/サイトにアクセスする要求が今後コンテナにおいて行われるときに、以前のユーザの好み、構成、または設定の内1つ以上を呼び出す(remember)ことを可能にする。
【0081】
[0086] コンテナ130内において監視されているアクティビティに関する情報をコンテナ・マネージャ118から受け取ることに加えて、HVSIサブシステム110は、1つ以上のHVSIライブラリ208からコンテナ・アクティビティに関する情報を受け取るようにも構成されている。
【0082】
HVSIライブラリ
[0087] 本明細書において論ずる場合、HVSIライブラリとは、小型、軽量、非同期ライブラリであり、アプリケーション内部で静的または動的にリンクされるように構成されている。例えば、
図2に示すシステム・アーキテクチャ200では、アプリケーション202はHVSIライブラリ204を含み、仮想アプリケーション206は仮想HVSIライブラリ208を含む。各HVSIライブラリは、そのそれぞれのアプリケーション内部で実行するように構成され、アプリケーションからHVSIサブシステム110へのネットワーク・リソース・コールを傍受し転送する役割を果たす。
【0083】
[0088] ホスト・オペレーティング・システム102のユーザがアプリケーション202を介してネットワーク・リソースを開こうとすると、HVSIライブラリ204は、要求されたネットワーク・リソースに関する情報をHVSIサブシステム110に伝達する。HVSIサブシステム110は、この情報を、ポリシ・マネージャ112から入手した1つ以上のポリシと比較し、要求されたネットワーク・リソースが信頼できるネットワーク・リソースか否か判定する。HVSIサブシステム110が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースであると判定した場合、HVSIサブシステム110は、アプリケーション202がこの要求されたネットワーク・リソースにアクセスすることを許可する。逆に、HVSIサブシステム110が、要求されたネットワーク・リソースが信頼できるネットワーク・リソースでないと判定した場合、HVSIサブシステム110は、信頼できないネットワーク・リソースをコンテナ130内における仮想アプリケーション206に転送する。
【0084】
[0089] コンテナ130内における仮想HVSIライブラリ208は、仮想アプリケーション206からのネットワーク・リソース要求を傍受して、要求されたネットワーク・リソースに関する情報をHVSIサブシステム110に伝達するように構成されている。HVSIサブシステム110は、同様に、この情報を、ホスト・オペレーティング・システム102に対する任意のポリシと比較し、信頼できるネットワーク・リソースがコンテナ130に供給されないことを確保するように構成されている。1つ以上の実施形態では、仮想アプリケーションは、両立性を確保するために、仮想HVSIライブラリ208にリンクしない。これらの実施形態では、ロギング・システム214およびネットワーク・フィルタ116が、仮想アプリケーションからのネットワーク・リソース要求を傍受して、要求されたネットワーク・リソースに関する情報をHVSIサブシステム110に伝達するように動作する。
【0085】
[0090] 以上、信頼できないネットワーク・リソースに関連する攻撃または感染からコンピューティング・デバイスを保護するために、ハードウェア・ベースの仮想化セキュリティ分離を実施するシステムのシステム・アーキテクチャについて検討したので、これより、1つ以上の実施形態による手順例について検討する。
【0086】
手順例
[0091]
図3は、1つ以上の実施形態にしたがって、ハードウェア・ベースのセキュリティ分離を実施するプロセス例300を示すフローチャートである。プロセス300は、
図1のシステム100のようなシステムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス300は、1組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス300は、ハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離の実施についての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【0087】
[0092] プロセス300において、ネットワーク・リソースへのアクセス試行を検出する(アクト302)。アクセス試行が検出されるのは、ユーザ、管理者、プログラム、アプリケーション、またはシステムのその他のエンティティが、このシステムから離れて位置する1つ以上の場所に、1つ以上のネットワーク・リソースを要求したときである。例えば、ネットワーク・リソースへのアクセス試行は、システムのユーザが、ウェブ・アプリケーションを使用して、ウェブ・ページにナビゲートしようとしたときに検出される。
【0088】
[0093] ネットワーク・リソースへのアクセス試行を検出したことに応答して、プロセス300は先に進んで、ネットワーク・リソースが信頼できるか否か判定する(アクト304)。ネットワーク・リソースが信頼できるか否かの判定は、ネットワーク・リソースを、ホスト・オペレーティング・システム上に格納されているポリシまたはホスト・オペレーティング・システムによって離れてアクセスされるポリシのいずれかと比較することによって行われる。例えば、1つ以上の実施形態では、ホスト・オペレーティング・システムは、
図1のポリシ・マネージャ112にというように、ローカルにポリシを格納する。このポリシは、信頼できるネットワーク・リソースのリストを列挙する。代わりにまたは加えて、
図1の管理および監視サービス104からというように、ホスト・オペレーティング・システムから離れている管理および監視サービスからポリシを受け取る。加えてまたは代わりに、ホスト・オペレーティング・システムが、このホスト・オペレーティング・システムおよび関連するコンテナにおけるネットワーク・リソース・アクティビティに関連するアクティビティを監視し、これに基づいてポリシをローカルに更新する。本明細書において論ずる場合、信頼できるネットワーク・リソースの最新リストを維持するために、ポリシを継続的に更新することができる。
【0089】
[0094] ネットワーク・リソースが信頼できるネットワーク・リソースであると判定したことに応答して、プロセス300は、ホスト・オペレーティング・システム上のアプリケーションがこのネットワーク・リソースにアクセスすることを許可する(アクト312)。例えば、プロセス300が
図1のシステム100によって実行され、ネットワーク・リソースが信頼できるネットワーク・リソースであると判定した場合、プロセス300は、ホスト・オペレーティング・システム102上のアプリケーション114の内1つが、信頼できるネットワーク・リソースにアクセスすることを許可する。
【0090】
[0095] ネットワーク・リソースが信頼できるネットワーク・リソースでないと判定したことに応答して、プロセス300は、ホスト・オペレーティング・システム上においてハードウェア・ベースの仮想化セキュリティ分離がイネーブルされているか否か判定する(アクト306)。ハードウェア・ベースの仮想化セキュリティ分離がイネーブルされていないとプロセスが判定した場合、本プロセスは、ホスト・オペレーティング・システム上のアプリケーションに、信頼できないネットワーク・リソースにアクセスすることを許可する(アクト312)。したがって、本明細書において論ずるようなハードウェア・ベースの仮想化セキュリティ分離をイネーブルしていないホスト・オペレーティング・システムは、このホスト・オペレーティング・システム上のアプリケーションが、信頼できないネットワーク・リソースにアクセスすることを許可し、これによって、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースからの悪意の攻撃または感染に露出させる。
【0091】
[0096] 逆に、プロセス300が、ハードウェア・ベースの仮想化セキュリティ分離がイネーブルされていると判定した場合、本プロセスは先に進みコンテナを有効化する(アクト308)。本明細書において論ずる場合、コンテナを有効化するアクトは、1つ以上の実施形態にしたがってコンテナを作成するアクトを含む。代わりにまたは加えて、コンテナを有効化するアクトは、保留中のコンテナを識別し、この保留中のコンテナの処理を再開するアクトを含む。本明細書において論ずる場合、コンテナは、ホスト・オペレーティング・システム102のような、ホスト・オペレーティング・システムから離れた分離ランタイム環境を表す。コンテナは、ホスト・オペレーティング・システムのカーネルとは別のそれ自体のカーネルを含み、したがって、ホスト・オペレーティング・システムに導かれる可能性がある信頼できないネットワーク・リソースに関連するカーネル・レベルの攻撃から保護する。したがって、コンテナが感染した(compromised)としても、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースに関連するあらゆる感染や攻撃から分離され保護される。
【0092】
[0097] コンテナを有効化したことに応答して、ホスト・オペレーティング・システムはコンテナがネットワーク・リソースにアクセスすることを許可する(アクト310)。ホスト・オペレーティング・システムは、信頼できるネットワーク・リソースがコンテナによってアクセスされないことを確保するために、コンテナによってコールされたネットワーク・リソースおよび1つ以上の追加のネットワーク・リソースに関連する、コンテナにおけるアクティビティを監視し続ける。同様に、本システムは、信頼できないネットワーク・リソースがホスト・オペレーティング・システムによってアクセスされないことも確保する。
【0093】
[0098] 以上、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースに関連する攻撃または感染から保護するために、ホスト・オペレーティング・システムにおいてハードウェア・ベースの仮想化セキュリティ分離を実施する手順例について検討したので、これより、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するために利用することができる手順例について検討する。
【0094】
[0099]
図4は、1つ以上の実施形態にしたがって、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するプロセス例400を示すフローチャートである。
【0095】
[00100] プロセス400は、
図1のホスト・オペレーティング・システム102のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス400は、1組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス400は、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【0096】
[00101] プロセス400において、ホスト・オペレーティング・システムが起動する(アクト402)。ホスト・オペレーティング・システムが起動した後、ホスト・オペレーティング・システムは先に進んで、コンテナ・ベース・イメージが存在するか否か判定する(アクト404)。
【0097】
[00102] ホスト・オペレーティング・システムが、コンテナ・ベース・イメージが存在しないと判定した場合、ホスト・オペレーティング・システムは先に進んで、コンテナ・ベース・イメージを作成する(アクト406)。ホスト・オペレーティング・システムが、コンテナ・ベース・イメージが存在すると判定した場合、またはコンテナ・ベース・イメージを作成したことに応答して、ホスト・オペレーティング・システムはユーザのログオンまで待つ(アクト408)。ユーザは、ユーザ名、パスワード等のような、ユーザに一意に関連付けられた1つ以上の資格証明書を入力することによって、ホスト・オペレーティング・システムにログオンすることができる。
【0098】
[00103] ユーザがログオンした後、ホスト・オペレーティング・システムは、ログオンしたユーザのコンテナが存在するか否か判定する(アクト410)。本明細書において論ずる場合、コンテナは個々のユーザに一意であり、ホスト・オペレーティング・システムから離れた分離ランタイム環境において、ユーザが信頼できないネットワーク・リソースと相互作用することを可能にする。
【0099】
[00104] ホスト・オペレーティング・システムが、ログオンしたユーザにはコンテナが存在しないと判定した場合、ホスト・オペレーティング・システムは先に進んで、ログオンしたユーザにコンテナを作成する(アクト412)。ホスト・オペレーティング・システムは、本明細書において論ずる技法の内任意の1つ以上にしたがって、ログオンしたユーザにコンテナを作成するように構成されている。
【0100】
[00105] ホスト・オペレーティング・システムが、ログオンしたユーザにコンテナが存在すると判定した場合、またはホスト・オペレーティング・システムがログオンしたユーザにコンテナを作成した後、ホスト・オペレーティング・システムは先に進んで、ログオンしたユーザのコンテナを有効化する(アクト414)。このように、ホスト・オペレーティング・システムは、ユーザがホスト・オペレーティング・システムにログオンしたときホスト・オペレーティング・システムによって要求された任意の信頼できないネットワーク・リソースを処理するために準備されているコンテナを有効化する。
【0101】
[00106] 以上、ホスト・オペレーティング・システムを信頼できないネットワーク・リソースから保護するために、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを有効化する手順例について検討したので、これより、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理する手順例について検討する。
【0102】
[00107]
図5は、1つ以上の実施形態にしたがってハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理するプロセス例500を示すフローチャートである。
【0103】
[00108] プロセス500は、
図1のホスト・オペレーティング・システム102のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス500は、1組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス500は、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【0104】
[00109] プロセス500において、ユーザがホスト・オペレーティング・システムにログオンし、ログオンしたユーザのコンテナが有効化された後、ホスト・オペレーティング・システムはこのコンテナを保留する(アクト502)。コンテナを保留することによって、ホスト・オペレーティング・システムは、このホスト・オペレーティング・システムを実装するデバイスが、アクティブなコンテナを維持するために必要とするシステム・リソースの量を減らす。コンテナを作成するよりも、保留中のコンテナを再開する方が一層迅速に行うことができるので、プロセス500を実装するホスト・オペレーティング・システムは、信頼できないネットワーク・リソースにアクセスする要求に対して、素早く応答するように構成されている。
【0105】
[00110] プロセス500を実装するホスト・オペレーティング・システムは、信頼できないネットワーク・リソースへのアクセス試行を検出するまで、ネットワーク・リソースを求める要求を監視し続ける(アクト504)。信頼できないネットワーク・リソースへのアクセス試行を検出するアクトは、要求されたネットワーク・リソースを記述する情報を、本明細書において論ずるように、プロセス500を実装するホスト・オペレーティング・システムに対するポリシと比較することによって実行される。例えば、1つ以上の実施形態では、プロセス500を実装するホスト・オペレーティング・システムのユーザが、ポリシによって信頼できるウェブ・サイトとして定められていないウェブ・サイトにアクセスしようとする。
【0106】
[00111] 信頼できないネットワーク・リソースへのアクセスを検出したことに応答して、プロセス500を実装するホスト・オペレーティング・システムは、保留中のコンテナを有効化する(アクト506)。一旦保留中のコンテナを有効化したなら、ホスト・オペレーティング・システムは、コンテナにおいて実行しているアプリケーションの仮想インスタンスが信頼できないネットワーク・リソースにアクセスすることを許可する。ホスト・オペレーティング・システムは、仮想機械バスを通じてコンテナと通信し、アプリケーションの仮想インスタンスをインストールおよび有効化し、更にアプリケーションの仮想インスタンスのインターフェースを表示させるように構成することができる。このように、コンテナは、ホスト・オペレーティング・システムから分離された制約ランタイム環境(contained runtime environment)において1つ以上の信頼できないネットワーク・リソースを動作させつつ、プロセス500を実装するホスト・オペレーティング・システムのユーザが、1つ以上の信頼できないネットワーク・リソースとインターフェースすることを許可する。
【0107】
[00112] プロセス500を実装するホスト・オペレーティング・システムは、トリガ・イベントが検出されるまで(アクト508)、またはホスト・オペレーティング・システムが、任意の1つ以上の信頼できないネットワーク・リソースへのアクセスが終了したと判定するまで(アクト510)、コンテナをアクティブ状態に維持するように構成されている。例えば、プロセス500を実装するホスト・オペレーティング・システムが、ウェブ・アプリケーションにおいて開かれている1つ以上のウェブ・サイトを、信頼できないネットワーク・リソースであるとして識別した場合、本システムは、ユーザがウェブ・アプリケーションを閉じたことに応答して、1つ以上の信頼できないネットワーク・リソースへのアクセスが終了したことを確認する(identify)ことができる。ホスト・オペレーティング・システムが、1つ以上の信頼できないネットワーク・リソースへのアクセスが終了したと判定した場合、ホスト・オペレーティング・システムは、コンテナを保留する(アクト502)。コンテナがいずれの信頼できないネットワーク・リソースにもアクセスしていないときにコンテナを保留することによって、ホスト・オペレーティング・システムは、アクティブなコンテナを維持するために必要とされるシステム・リソースの量を減らす。同様に、コンテナを削除するのではなく、コンテナを保留することによって、ホスト・オペレーティング・システムは、1つ以上の追加の信頼できないネットワーク・リソースへのアクセス試行を検出したときに、保留中のコンテナを容易に有効化することができる。
【0108】
[00113] トリガ・イベントを検出したことに応答して、ホスト・オペレーティング・システムは、コンテナを削除するように構成されている(アクト512)。本明細書において論ずる場合、トリガ・イベントとは、プロセス500を実装するホスト・オペレーティング・システムのユーザがログオフしたことを検出することを指すとしてもよい。加えてまたは代わりに、トリガ・イベントは、異常な挙動がコンテナにおいて検出されたときに検出される。
【0109】
[00114] 以上、ホスト・オペレーティング・システムを実装するデバイスを、信頼できないネットワーク・リソースに関連する攻撃および感染から保護するために、ハードウェア・ベースの仮想化セキュリティ分離のためにコンテナを管理する手順例について検討したので、これより、ホスト・オペレーティング・システム上でハードウェア・ベースの仮想化セキュリティ分離を実施するために利用することができる手順例について検討する。
【0110】
[00115]
図6は、1つ以上の実施形態にしたがって、ホスト・オペレーティング・システム上においてハードウェア・ベースの仮想化セキュリティ分離を実施するプロセス600を示すフローチャートである。
【0111】
[00116] プロセス600は、
図1のホスト・オペレーティング・システム102のようなホスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせで実装することができる。プロセス600は、1組のアクトとして示されているが、種々のアクトの動作を実行するために示す順序には限定されない。プロセス600は、ハードウェア・ベースの仮想化セキュリティ分離のために1つ以上のコンテナを使用するプロセス例であり、ハードウェア・ベースの仮想化セキュリティ分離のために1つ以上のコンテナを使用することについての付加的な論述も、異なる図を参照して、本明細書に含まれている。
【0112】
[00117] プロセス600において、ホスト・オペレーティング・システムはアプリケーションを実行する(アクト602)。このアプリケーションは、ウェブ・アプリケーション、ワード・プロセッシング・アプリケーション、電子メール・アプリケーション等のような、任意の種類のアプリケーションとしてもよい。
【0113】
[00118] ホスト・オペレーティング・システムは、アプリケーションがネットワーク・リソースにアクセスしようとしていることを検出する(アクト604)。ホスト・オペレーティング・システムは、本明細書において論ずるような、ネットワーク・フィルタを使用してネットワーク通信を監視することによって、アプリケーションがネットワーク・リソースへのアクセスを要求していることを検出するように構成されている。
【0114】
[00119] ホスト・オペレーティング・システムにおいて実行しているアプリケーションがネットワーク・リソースへのアクセスを要求していることを検出したことに応答して、ホスト・オペレーティング・システムは、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定する(アクト606)。ホスト・オペレーティング・システムは、ネットワーク・リソースを、本明細書において論ずるような、ホスト・オペレーティング・システムに対する1つ以上のポリシと比較することによって、ネットワーク・リソースが信頼できないと判定するように構成されている。
【0115】
[00120] ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムから分離されたコンテナを有効化するように構成されている(アクト608)。本明細書において論ずる場合、ホスト・オペレーティング・システムから分離されたコンテナは、ホスト・オペレーティング・システムのカーネルとは別個でありこれから分離されたそれ自体のカーネルを含み、これによって、ホスト・オペレーティング・システムをカーネル攻撃から保護する。
【0116】
[00121] ホスト・オペレーティング・システムが分離コンテナ(isolated container)を有効化した後、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースを要求したアプリケーションの仮想バージョンを、分離コンテナ内で開始する(launch)(アクト610)。分離コンテナ内で開始されたアプリケーションの仮想バージョンは、ホスト・オペレーティング・システム上で実行するアプリケーションが、要求したネットワーク・リソースを処理する(handle)のと同様に、要求したネットワーク・リソースを処理する(handle)ように構成されている。
【0117】
[00122] 分離コンテナにおいてアプリケーションの仮想バージョンを開始したことに応答して、ホスト・オペレーティング・システムは、信頼できないネットワーク・リソースを分離コンテナに渡し、分離コンテナにおいて実行しているアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する(アクト612)。分離コンテナにおいてアプリケーションのこのバージョンを開始したことに応答して、ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムを実装するデバイスのディスプレイにおいて、分離コンテナ内で動作しているアプリケーションのバージョンのために、インターフェースを表示するようにも構成されている(アクト614)。このように、ホスト・オペレーティング・システムは、分離コンテナによってアクセスされた1つ以上の信頼できないネットワーク・リソースにホスト・オペレーティング・システムを露出することなく、ユーザが、分離コンテナ内で開始されたアプリケーションの仮想バージョンとインターフェースすることを可能にする。
【0118】
[00123] 分離コンテナ内でアプリケーションの仮想バージョンが実行している間、ホスト・オペレーティング・システムは、分離コンテナにおけるアプリケーションの仮想バージョンが1つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可する(アクト618)ように構成されている。ホスト・オペレーティング・システムは、分離コンテナと1つ以上のネットワーク・リソース位置との間におけるネットワーク通信を監視することによって、分離コンテナ内で実行しているアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可するように構成されている。
【0119】
[00124] 同様に、分離コンテナ内においてアプリケーションの仮想バージョンが実行している間、ホスト・オペレーティング・システムは、分離コンテナにおけるアプリケーションの仮想バージョンが、1つ以上の信頼できるネットワーク・リソースにアクセスするのを禁止する(アクト620)ように構成されている。このように、ホスト・オペレーティング・システムは、信頼できるネットワーク・リソースだけがホスト・オペレーティング・システムによってアクセスされること、そして信頼できないネットワーク・リソースはいずれも1つ以上の分離コンテナによってのみアクセスされることを確保するように構成されている。
【0120】
[00125] 分離コンテナ内で実行しているアプリケーションの仮想バージョンがもはや1つ以上の信頼できないネットワーク・リソースにアクセスしていないと判定したことに応答して、またはホスト・オペレーティング・システムのユーザがログオフしたと判定したことに応答して、ホスト・オペレーティング・システムは、1つ以上の分離コンテナを保留または削除する(アクト622)ように構成されている。例えば、コンテナ内のアプリケーションのバージョンがもはや1つ以上の信頼できないネットワーク・リソースにアクセスしていないと判定したことに応答して、ホスト・オペレーティング・システムは、1つ以上の追加の信頼できないネットワーク・リソースを処理する(handle)ためにコンテナが必要とされるまで、コンテナを保留する。ユーザがログオフしたことをホスト・オペレーティング・システムが検出した場合、ホスト・オペレーティング・システムは、アクティブであれ保留中であれ、1つ以上のコンテナを削除する。
【0121】
システム例
[00126] 本明細書では、特定のモジュールを参照しながら特定の機能について論じたが、本明細書において論じた個々のモジュールの機能を複数のモジュールに分離することができ、および/または複数のモジュールの内少なくともいくつかの機能を1つのモジュールに組み合わせることができることは注記してしかるべきである。加えて、本明細書において、アクションを実行するものとして論じられた特定のモジュールは、そのアクションを実行する特定のモジュール自体を含み、または代わりに、そのアクションを実行する他のコンポーネントまたはモジュール(または、その特定のモジュールと共にそのアクションを実行する)を呼び出す、あるいはそうでなければアクセスする、その特定のモジュールを含む。つまり、アクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、および/またはそのアクションを実行するその特定のモジュールによって呼び出されるまたはそうでなければアクセスされる他のモジュールを含む。
【0122】
[00127]
図7は、本明細書において説明した種々の技法を実現することができる1つ以上のシステムおよび/またはデバイスを表すコンピューティング・デバイス例702を含むシステム例を、全体的に700で示す。コンピューティング・デバイス702は、例えば、サービス・プロバイダーのサーバ、クライアントに関連付けられたデバイス(例えば、クライアント・デバイス)、オンチップ・システム、および/または任意のその他の適したコンピューティング・デバイスもしくはコンピューティング・システムであってもよい。
【0123】
[00128] 図示するコンピューティング・デバイス例702は、処理システム704、1つ以上のコンピュータ読み取り可能媒体706、および互いを通信可能に結合する1つ以上のI/Oインターフェース708を含む。図示しないが、コンピューティング・デバイス702は、更に、種々のコンポーネントを互いに結合するシステム・バス、またはその他のデータおよびコマンド転送システムも含むことができる。システム・バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、ユニバーサル・シリアル・バス、および/または種々のバス・アーキテクチャの内任意のものを利用するプロセッサまたはローカル・バスというような異なるバス構造の内任意の1つ、あるいはその組み合わせを含むことができる。制御およびデータ線というような、種々のその他の例も考えられる。
【0124】
[00129] 処理システム704は、ハードウェアを使用して1つ以上の動作を実行する機能を表す。したがって、処理システム704は、プロセッサ、機能ブロック等として構成されてもよいハードウェア・エレメント710を含むものとして示されている。これは、特定用途集積回路、または1つ以上の半導体を使用して形成されるその他のロジック・デバイスのような、ハードウェアでの実現を含むことができる。ハードウェア・エレメント710は、これらが形成される材料にも、内部で採用される処理メカニズムにも限定されない。例えば、プロセッサは、半導体(1つまたは複数)および/またはトランジスタ(例えば、電子集積回路(IC))で構成されてもよい。このようなコンテキストでは、プロセッサ実行可能命令は電子的実行可能命令としてもよい。
【0125】
[00130] コンピュータ読み取り可能媒体706は、メモリ/ストレージ712を含むものとして示されている。メモリ/ストレージ712は、1つ以上のコンピュータ読み取り可能媒体に関連するメモリ/記憶容量を表す。メモリ/ストレージ712は、揮発性媒体(ランダム・アクセス・メモリー(RAM)のような)、および/または不揮発性媒体(リード・オンリー・メモリー(ROM)、抵抗性RAM(ReRAM)、フラッシュ・メモリ、光ディスク、磁気ディスク等)を含むことができる。メモリ/ストレージ712は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ等)、および着脱可能媒体(例えば、フラッシュ・メモリ、リムーバブル・ハード・ドライブ、光ディスク等)を含むこともできる。コンピュータ読み取り可能媒体706は、以下で更に説明するように、種々の他の方法で構成することもできる。
【0126】
[00131] 1つ以上の入力/出力インターフェース(1つまたは複数)708は、ユーザがコマンドおよび情報をコンピューティング・デバイス702に入力することを可能にする機能、および種々の入力/出力デバイスを使用してユーザおよび/またはその他のコンポーネントもしくはデバイスに情報を提示することを可能にする機能も表す。入力デバイスの例には、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン(例えば、音声入力用)、スキャナー、タッチ機能(例えば、物理的接触を検出するように構成された容量性またはその他のセンサー)、カメラ(例えば、ジェスチャのような、タッチを伴わない動きを検出するために、可視波長または赤外線周波数のような不可視波長を採用してもよい)、センサー(例えば、周囲光センサーまたは運動センサー)な等が含まれる。出力デバイスの例には、ディスプレイ・デバイス(例えば、モニタまたはプロジェクタ)、スピーカ、プリンタ、ネットワーク・カード、触覚応答デバイス等が含まれる。つまり、コンピューティング・デバイス702は、ユーザの対話処理をサポートするために、以下で更に説明するように、種々の方法で構成することができる。
【0127】
[00132] また、コンピューティング・デバイス702は、ホスト・オペレーティング・システム714も含む。ホスト・オペレーティング・システム714は、以上で論じたように、ハードウェア・ベースの仮想化セキュリティ分離の種々の管理を行う。ホスト・オペレーティング・システム714は、例えば、
図1のホスト・オペレーティング・システム102を実現することができる。
【0128】
[00133] 本明細書では、種々の技法をソフトウェア、ハードウェア・エレメント、またはプログラム・モジュールという一般的なコンテキストで説明することができる。一般に、このようなモジュールは、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象データ型を実装する。「モジュール」(module)、「機能」(functionality)、および「コンポーネント」(component)という用語は、本明細書において使用する場合、一般に、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。本明細書において説明した技法の特徴は、プラットフォーム独立ということであり、これが意味するのは、種々のプロセッサを有する種々のコンピューティング・プラットフォーム上に本技法を実現できるということである。
【0129】
[00134] 説明したモジュールおよび技法の実現例(implementation)は、コンピュータ読み取り可能媒体の何らかの形態で格納すること、または何らかの形態を通じて(across)送信することができる。コンピュータ読み取り可能媒体は、コンピューティング・デバイス702によってアクセスすることができる種々の媒体を含むことができる。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、「コンピュータ読み取り可能記憶媒体」および「コンピュータ読み取り可能信号媒体」を含むことができる。
【0130】
[00135] 「コンピュータ読み取り可能記憶媒体」とは、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的格納、および/または実体的な格納(storage that is tangible)を可能にする媒体および/またはデバイスを指す。つまり、コンピュータ読み取り可能記憶媒体とは、非信号支持媒体(non-signal bearing media)を意味する。コンピュータ読み取り可能記憶媒体は、揮発性、不揮発性、着脱可能および着脱不能媒体、および/またはコンピュータ読み取り可能命令、データ構造、プログラム・モジュール、ロジック・エレメント/回路、あるいはその他のデータというような情報の格納に適した方法または技術で実現される記憶デバイスというようなハードウェアを含む。コンピュータ読み取り可能記憶媒体の例には、RAM、ROM、EEPROM、フラッシュ・メモリまたはその他のメモリ技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)またはその他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいはその他の記憶デバイス、有形媒体、あるいは所望の情報を格納するのに適しており、コンピュータによってアクセスすることができる製品を含むことができるが、これらに限定されるのではない。
【0131】
[00136] 「コンピュータ読み取り可能信号媒体」とは、ネットワークを通じてというようにして命令をコンピューティング・デバイス702のハードウェアに送信するように構成された信号支持媒体を指す。信号媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波のような変調データ信号、データ信号、またはその他の移送メカニズムに具体化することができる。また、信号媒体は任意の情報配信媒体も含む。「変調データ信号」(modulated data signal)という用語は、情報を信号内にエンコードするような方法で、その特徴の1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続(direct-wired connection)のような有線媒体、ならびに音響、RF、赤外線、およびその他のワイヤレス媒体のようなワイヤレス媒体を含む。
【0132】
[00137] 既に説明したように、ハードウェア・エレメント710およびコンピュータ読み取り可能媒体706は、本明細書において説明した技法の内少なくともいくつかの態様を実現するために一部の実施形態において採用することができるハードウェア形態で実現される、命令、モジュール、プログラマブル・デバイス・ロジック、および/または固定デバイス・ロジックを表す。ハードウェア・エレメントは、集積回路またはオンチップ・システムのコンポーネント、特定用途集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、複合プログラマブル・ロジック・デバイス(CPLD:complex programmable logic device)、およびシリコンまたはその他のハードウェア・デバイスにおけるその他の実施態様を含むことができる。このコンテキストでは、ハードウェア・エレメントは、実行のために命令を格納するために利用されるハードウェア・エレメントおよびハードウェア・デバイス、例えば、先に説明したコンピュータ読み取り可能記憶媒体によって具体化される命令、モジュール、および/またはロジックによって定められるプログラム・タスクを実行する処理デバイスとして動作することができる。
【0133】
[00138] 以上で述べたものの組み合わせも、本明細書において説明した種々の技法およびモジュールを実現するために採用することができる。したがって、ソフトウェア、ハードウェア、またはプログラム・モジュール、およびその他のプログラム・モジュールは、何らかの形態のコンピュータ読み取り可能記憶媒体上に具体化された1つ以上の命令および/またはロジックとして、および/または1つ以上のハードウェア・エレメント710によって実現することができる。コンピューティング・デバイス702は、ソフトウェアおよび/またはハードウェア・モジュールに対応する特定の命令および/または機能を実装するように構成することができる。したがって、コンピューティング・デバイス702によってソフトウェアとして実行可能なモジュールとしてのモジュールの実装は、少なくとも部分的にハードウェアで、例えば、コンピュータ読み取り可能記憶媒体および/または処理システムのハードウェア・エレメント710の使用によって達成することができる。命令および/または機能は、本明細書において説明した技法、モジュール、および例を実現するために、1つ以上の製品(例えば、1つ以上のコンピューティング・デバイス702および/または処理システム704)によって実行可能/動作可能であってもよい。
【0134】
[00139] 更に
図7に示すように、システム例700は、パーソナル・コンピュータ(PC)、テレビジョン・デバイス、および/または移動体デバイス上でアプリケーションを実行するときに、継ぎ目のないユーザ体験が得られる、ユビキタス環境を可能にする。アプリケーションを利用しながら、ビデオ・ゲームをプレーしながら、ビデオを見ながら等で1つのデバイスから次のデバイスに移るとき、サービスおよびアプリケーションは共通のユーザ体験のために3つの環境全てにおいて実質的に同様に実行する。
【0135】
[00140] システム例700では、複数のデバイスが中央コンピューティング・デバイスを介して相互接続されている。中央コンピューティング・デバイスは、複数のデバイスに対してローカルでもよく、または複数のデバイスから離れて配置されてもよい。1つ以上の実施形態では、中央コンピューティング・デバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続された1つ以上のサーバ・コンピュータを擁するクラウドであってもよい。
【0136】
[00141] 1つ以上の実施形態では、この相互接続アーキテクチャは、共通の継ぎ目のない体験を複数のデバイスのユーザに提供するために、複数のデバイスにまたがって機能を配信する(deliver)ことを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有しても良く、中央コンピューティング・デバイスは、デバイスへの体験の配信を可能にするプラットフォームを使用する。この体験は、そのデバイスに合わせて特別に作られる(tailored)が、しかも全てのデバイスに共通でもある。1つ以上の実施形態では、ターゲット・デバイスのクラスが作成され、体験は包括的なデバイスのクラスに合わせて特別に作られる。デバイスのクラスは、物理的特徴、使用の形式、または他の共通するデバイスの特性によって定められてもよい。
【0137】
[00142] 種々の実施態様において、コンピューティング・デバイス702は、コンピュータ716、移動体718、およびテレビジョン720の使用に合わせてというように、種々の異なる構成を取ることができる。これらの構成の各々は、全体的に異なる構造および能力を有する可能性があるデバイスを含み、したがって、コンピューティング・デバイス702は、異なるデバイス・クラスの1つ以上にしたがって構成することができる。例えば、コンピューティング・デバイス702は、パーソナル・コンピュータ、デスクトップ・コンピュータ、マルチスクリーン・コンピュータ、ラップトップ・コンピュータ、ネットブック等を含む、コンピュータ716クラスのデバイスとして実現することもできる。
【0138】
[00143] また、コンピューティング・デバイス702は、移動体電話機、携帯用音楽プレーヤ、携帯用ゲーミング・デバイス、タブレット・コンピュータ、マルチスクリーン・コンピュータ等のような、移動体デバイスを含む移動体718クラスのデバイスとして実現することもできる。また、コンピューティング・デバイス702は、日常的な視聴環境において通常もっと大きな画面を有するデバイスまたはこれに接続されたデバイスを含むテレビジョン720クラスのデバイスとして実現することもできる。これらのデバイスは、テレビジョン、セットトップ・ボックス、ゲーミング・コンソール等を含む。
【0139】
[00144] 本明細書において説明した技法は、コンピューティング・デバイス702のこれら種々の構成によってサポートすることができ、本明細書において説明した技法の具体的な例に限定されるのではない。また、この機能は、全体的にまたは部分的に、以下で説明するように、プラットフォーム724を介して「クラウド」722上においてというように、分散型システムの使用によって実現することもできる。
【0140】
[00145] クラウド722は、リソース726のためのプラットフォーム724を含む、および/または表す。プラットフォーム724は、クラウド722のハードウェア(例えば、サーバ)およびソフトウェア・リソースの基礎機能を抽象化する。リソース726は、コンピューティング・デバイス702から離れたサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーションおよび/またはデータを含むことができる。また、リソース726は、インターネットを通じて、および/またはセルラまたはWi−Fiネットワークのような加入者ネットワークを通じて提供されるサービスも含むことができる。
【0141】
[00146] プラットフォーム724は、コンピューティング・デバイス702を他のコンピューティング・デバイスと接続するためのリソースおよび機能を抽象化することができる。 また、プラットフォーム724は、プラットフォーム724を通して実装されるリソース726に対して出される要求(demand)に合わせて、対応する尺度(level of scale)を規定するために、リソースの調整(scaling)を抽象化する役割を果たすこともできる。 したがって、相互接続されたデバイスの実施形態では、本明細書において説明した機能の実装は、システム700全域にわたって分散することができる。例えば、機能は、部分的にコンピューティング・デバイス702上に実装され、更にクラウド722の機能を抽象化するプラットフォーム724を介して実装されてもよい。尚、クラウド722は無数の構成(configuration)で構築する(arrange)ことができることは注記してしかるべきである。例えば、クラウド722は、1つのクラウドとして、全てが1つのクラウドとして振る舞う、クラウド722の複数のインスタンスとして実現することができ、またはプラットフォーム724の1つ以上のインスタンスがクラウド722の背後に実装され、プラットフォーム724の1つ以上のインスタンスがあたかもクラウド内に実装されたかのように振る舞う。
【0142】
[00147] 本明細書における論述では、種々の異なる実施形態について説明した。尚、本明細書において説明した各実施形態は、それ自体で、または本明細書において説明した1つ以上の他の実施形態と併せて使用できることは認められそして理解されよう。本明細書において論じた技法の更に他の形態は、以下の実施形態の内1つ以上に関係する。
【0143】
[00148] 方法は、ホスト・オペレーティング・システムにおいてアプリケーションを実行するステップと、このアプリケーションによるネットワーク・リソースへのアクセスを検出するステップと、ネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップと、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムによって、このホスト・オペレーティング・システムから分離されアプリケーションの一バージョンを実行するように構成されたコンテナを有効化するステップと、ホスト・オペレーティング・システムによって、コンテナにおいて実行するアプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可するステップとを含む。
【0144】
[00149] 以上に記載した方法のいずれかの代わりにまたはそれに加えて、以下の内任意の1つまたは組み合わせも含む。前述の方法は、更に、コンテナにおいて実行するアプリケーションのバージョンが、1つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可し、コンテナにおいて実行するアプリケーションが、信頼できるネットワーク・リソースにアクセスするのを禁止するステップを含む。この方法は、更に、ホスト・オペレーティング・システムによるファイルまたはアプリケーションへのアクセスを検出し、ファイルまたはアプリケーションが信頼できないネットワーク・リソースであると判定したことに応答して、ファイルまたはアプリケーションをコンテナ内で開くことを許可するステップを含む。コンテナは、ホスト・オペレーティング・システムのインスタンスと、ホスト・オペレーティング・システムのカーネルとは別個で分離されたカーネルとを含む。この方法は、更に、信頼できるネットワーク・リソースを列挙したリストを少なくとも含む少なくとも1つのポリシを受け取るステップを含み、ネットワーク・リソースが信頼できるネットワーク・リソースかまたは信頼できないネットワーク・リソースか判定するステップが、ネットワーク・リソースを、信頼できるネットワーク・リソースを列挙したリストと比較するステップを含み、信頼できるネットワーク・リソースを列挙したリストが、ネットワーク・リソースのファイル形式、ネットワーク・リソースに関連するネットワーク位置、またはネットワーク・リソースにアクセスしようとしているアプリケーションの種類の内1つ以上に基づいて識別される。コンテナは、ホスト・オペレーティング・システムにログオンしたユーザに対して有効化され、この方法は、更に、異なるユーザがホスト・オペレーティング・システムにログオンしたと判定し、異なるユーザに対して、ホスト・オペレーティング・システムおよびコンテナから分離された異なるコンテナを有効化するステップを含む。この方法は、更に、ネットワーク・リソースへのアクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定し、ネットワーク・リソースへのアクセスが、信頼できないネットワーク・インターフェースを介して要求されたと判定したことに応答して、ホスト・オペレーティング・システムにおけるアプリケーションに対するネットワーク通信を、仮想プライベート・ネットワーク(VPN)インターフェースに制限するステップと、コンテナにおいて実行するアプリケーションのバージョンが、信頼できないネットワーク・インターフェースを介してネットワーク通信を行うことを許可するステップと、コンテナのネットワーク・スタックに、当該コンテナに対するネットワーク通信が、信頼できないネットワーク・インターフェースに分離されることを示すステップとを含む。この方法は、更に、ホスト・オペレーティング・システムによって、ユーザ資格証明書を求めるウェブ・プロキシ・プロンプトに対する応答を傍受し、1つ以上のユーザ資格証明書をコンテナに伝えることなく、ウェブ・プロキシ・プロンプトに対する応答に、1つ以上のユーザ資格証明書を挿入するステップを含む。この方法は、更に、コンテナにおいてアクセスされた1つ以上の信頼できないネットワーク・リソースをスキャンし、ホスト・オペレーティング・システムにおいてウィルス対策ソフトウェアを使用して、1つ以上のリスク・レベルを1つ以上の信頼できないネットワーク・リソースに割り当て、割り当てられたリスク・レベルが、信頼できないネットワーク・リソースが悪意のあるものであることを示す場合、1つ以上の信頼できないネットワーク・リソースの内1つを隔離、消去、または削除するステップを含む。この方法は、更に、コンテナにおける信頼できないネットワーク・リソースに関連するアクティビティを監視して、監視したアクティビティに基づいて、ホスト・オペレーティング・システムにおいてローカル・ポリシを更新するステップを含む。アプリケーションは、ウェブ・アプリケーションであり、信頼できないネットワーク・リソースは、ウェブ・ページである。コンテナは、第1ネットワーク通信インターフェースを介してネットワーク・リソース通信のために有効化され、この方法は、更に、第2ネットワーク通信インターフェースを介したネットワーク・リソース通信のために第2コンテナを有効化するステップを含む。この方法は、更に、コンテナにおいて実行するアプリケーションのバージョンが処理を停止したことを検出したことに応答して、コンテナにおいて実行するアプリケーションのバージョンが処理を停止したことを検出するステップと、コンテナによって使用されるシステム・リソースの量を低減するために、ホスト・オペレーティング・システムによってコンテナを保留するステップと、アプリケーションによる追加のネットワーク・リソースへの追加アクセスを検出するステップと、追加のネットワーク・リソースが信頼できないリソースであると判定したことに応答して、保留中のコンテナを有効化するステップと、コンテナにおいて実行するアプリケーションのバージョンが、追加の信頼できないネットワーク・リソースにアクセスすることを許可するステップと、ホスト・オペレーティング・システムのユーザがログオフしたことを検出するステップと、ユーザがログオフしたことを検出したことに応答して、コンテナを削除するステップとを含む。この方法は、更に、ホスト・オペレーティング・システムに対する更新を検出するステップと、ホスト・オペレーティング・システムに対する更新を検出したことに応答して、コンテナを削除し、ホスト・オペレーティング・システムの1つ以上の更新された境界を反映する新たなコンテナを作成するステップとを含む。ホスト・オペレーティング・システムは、ホスト・オペレーティング・システムが、ネットワーク・リソースのファイル形式、ネットワーク・リソースに関連するネットワーク位置、ネットワーク・リソースにアクセスしてしようとしているアプリケーションの種類、ネットワーク・リソースのウィルス対策スキャン(anti-virus scanning)の内1つ以上に基づいて、または悪意のあるネットワーク・リソースのリストを維持するクラウド・ベース・サービスを調べることに基づいて、ネットワーク・リソースが信頼できるネットワーク・リソースであるか否か判定するように構成されている。コンテナは、ホスト・オペレーティング・システムにログオンしたユーザに対して有効化される。この方法は、更に、ユーザのために1つ以上の追加のコンテナを有効化し、ホスト・オペレーティング・システムの他のユーザが、前述のコンテナおよび1つ以上の追加のコンテナにアクセスするのを防止するステップも含む。この方法は、更に、コンテナにおいて実行するアプリケーションのバージョンからの、ユーザ資格証明書を求める要求を受け、コンテナにおいて実行するアプリケーションのバージョンに対して疑似認証を行うステップを含む。疑似認証は、ユーザ資格証明書をコンテナに提供することなく、ユーザ資格証明書の所有を証明する情報を含む。この方法は、更に、ホスト・オペレーティング・システムによって、ローカル・ネットワークを識別し、コンテナに対してローカル・ネットワークをエミュレートするステップを含む。この方法は、更に、ローカル・ネットワークを識別し、コンテナに対してネットワーク・アドレス変換器(NAT)の背後でローカル・ネットワークをエミュレートするステップを含む。この方法は、更に、ドメイン・ネーム・システム(DNS)およびハイパーテキスト転送プロトコル(HTTP)情報を、ホスト・オペレーティング・システムとコンテナとの間で共有するステップを含む。この方法は、更に、ホスト・オペレーティング・システムによって、コンテナにおいて実行するアプリケーションのバージョンによって行われる1つ以上の構成変更を追跡するステップを含む。この方法は、更に、ホスト・オペレーティングによって、コンテナから遠隔測定データを取得するし、取得した遠隔測定データに基づいてコンテナのアクティビティを分析するステップを含む。この方法は、更に、ホスト・オペレーティング・システムにおいてポリシ・エンジンを実装するステップを含み、ポリシ・エンジンは、コンテナ内で監視されたアクティビティに基づいて、コンテナに対するポリシを計算するように構成され、ポリシの計算が、1つ以上のポリシ・テンプレートまたはポリシ・シグネチャーに基づく。」
【0145】
[00150] 方法は、ホスト・オペレーティング・システムの起動を検出するステップと、ホスト・オペレーティング・システムの起動を検出したことに応答して、ホスト・オペレーティング・システム内にコンテナ・ベース・イメージが存在するか否か判定するステップと、コンテナ・ベース・イメージがホスト・オペレーティング・システム内に存在しないと判定したことに応答して、ホスト・オペレーティング・システムからコンテナ・ベース・イメージを作成するステップと、ホスト・オペレーティング・システムへのユーザ・ログインを検出するステップと、ホスト・オペレーティング・システムへのユーザ・ログインを検出したことに応答して、コンテナ・ベース・イメージに対応するコンテナを有効化し、この有効化したコンテナを保留するステップと、信頼できないネットワーク・リソースへのアクセスを検出したことに応答して、保留中のコンテナを再開するステップと、再開したコンテナが、信頼できないネットワーク・リソースにアクセスすることを許可するステップとを含む。
【0146】
[00151] 以上に記載した方法のいずれかの代わりにまたはそれに加えて、以下の内任意の1つまたは組み合わせも含む。コンテナ・ベース・イメージは、ホスト・オペレーティング・システム、ホスト・オペレーティング・システムとは異なるオペレーティング・システム、またはホスト・オペレーティング・システムと、ホスト・オペレーティング・システムとは異なるオペレーティング・システムとの組み合わせの内1つから作成される。
【0147】
[00152] デバイスは、1つ以上のプロセッサと、以下を含む動作を実行するために1つ以上のプロセッサによって実行可能なコンピュータ読み取り可能命令を格納する1つ以上のコンピュータ読み取り可能記憶媒体とを含む。前述の動作は、デバイスのホスト・オペレーティング・システムにおいてウェブ・アプリケーションを実行する動作と、ウェブ・アプリケーションによるネットワーク・リソースへのアクセスを検出する動作と、ネットワーク・リソースを、デバイスから離れて位置する管理および監視サービスから受け取ったポリシと比較することによって、ネットワーク・リソースが信頼できないリソースであると判定する動作と、ネットワーク・リソースが信頼できないネットワーク・リソースであると判定したことに応答して、ホスト・オペレーティング・システムによって、ホスト・オペレーティング・システムから分離されウェブ・アプリケーションの一バージョンを実行するように構成されたコンテナを有効化する動作と、ホスト・オペレーティング・システムによって、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、信頼できないネットワーク・リソースにアクセスすることを許可する動作と、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、1つ以上の追加の信頼できないネットワーク・リソースにアクセスすることを許可する動作と、コンテナにおいて実行するウェブ・アプリケーションのバージョンが、信頼できるネットワーク・リソースにアクセスするのを防止する動作とを含む。
【0148】
[00153] 以上、構造的特徴および/または方法論的アクトに特定的な文言で本主題について説明したが、添付する特許請求の範囲において定められる主題は、以上で説明した特定的な特徴やアクトには必ずしも限定されないことは理解されてしかるべきである。逆に、以上で説明した特定的な特徴やアクトは、特許請求の範囲を実施する形態例として開示したまでである。