特許第6151256号(P6151256)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許6151256コンピューティングデバイス、作動方法及びコンピュータプログラム
<>
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000002
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000003
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000004
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000005
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000006
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000007
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000008
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000009
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000010
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000011
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000012
  • 特許6151256-コンピューティングデバイス、作動方法及びコンピュータプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6151256
(24)【登録日】2017年6月2日
(45)【発行日】2017年6月21日
(54)【発明の名称】コンピューティングデバイス、作動方法及びコンピュータプログラム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20170612BHJP
   G06F 12/00 20060101ALI20170612BHJP
   G06F 9/445 20060101ALI20170612BHJP
【FI】
   G06F21/62 390
   G06F12/00 537A
   G06F9/06 610L
【請求項の数】10
【全頁数】25
(21)【出願番号】特願2014-529794(P2014-529794)
(86)(22)【出願日】2012年9月4日
(65)【公表番号】特表2014-530399(P2014-530399A)
(43)【公表日】2014年11月17日
(86)【国際出願番号】US2012053623
(87)【国際公開番号】WO2013036472
(87)【国際公開日】20130314
【審査請求日】2015年8月7日
(31)【優先権主張番号】13/229,367
(32)【優先日】2011年9月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】グレアム,スコット
(72)【発明者】
【氏名】ラダクリシュナン,カヴィタ
(72)【発明者】
【氏名】イスキン,サーメット
(72)【発明者】
【氏名】ブランチ,カタリーナ エム.
(72)【発明者】
【氏名】ボール,スティーヴン
(72)【発明者】
【氏名】ヘイゼン,ジョン
(72)【発明者】
【氏名】ビーム,タイラー キーン
(72)【発明者】
【氏名】キム,アレン
(72)【発明者】
【氏名】クインテロ,ギレルモ エンリーク ルエダ
【審査官】 平井 誠
(56)【参考文献】
【文献】 特開2005−129066(JP,A)
【文献】 特開2004−192601(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60−62
(57)【特許請求の範囲】
【請求項1】
コンピューティングデバイスにおける方法であって、
前記コンピューティングデバイスにアプリケーションをインストールするステップと、
前記アプリケーションに関連づけられたアプリケーションマニフェストを受け取るステップであって、前記アプリケーションマニフェストは、前記アプリケーションがアクセスを許可される1つ以上のファイルタイプを示す、ステップと、
前記コンピューティングデバイスにおいて動作するブローカーサービスによってアクセス可能な前記コンピューティングデバイス内の場所に前記1つ以上のファイルタイプを記録する記録ステップであって、前記ブローカーサービスは、
前記アプリケーションによるアクセスを、記録された1つ以上のファイルタイプのファイルに限定することであって、前記記録することは、1つ以上のフィルタイプを前記アプリケーションマニフェストから読み込み、前記アプリケーションのアプリケーションプロセスによってはアクセス可能でないセキュアな場所に、前記1つ以上のファイルタイプのインジケーションを保存することを含む、こと、
登録された1つ以上のファイルタイプのうちのファイルを、前記コンピューティングデバイスのファイルストレージから取得すること、及び
前記の登録された1つ以上のファイルタイプのうちのファイルを前記アプリケーションに提供すること、
を行うように構成されている、録ステップと
を含む、方法。
【請求項2】
前記アプリケーションをアプリケーションプロセスとして起動するステップと、
前記アプリケーションプロセスをアプリケーションコンテナへロードするステップであって、前記アプリケーションコンテナは、前記アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを拒否する、ステップと、
前記ファイルシステムデータのうちの第1のデータに関連するアクセス要求を、前記アプリケーションプロセスから前記ブローカーサービスで受け取るステップと、
前記ブローカーサービスが、前記第1のデータのファイルタイプは前記記録された1つ以上のファイルタイプに含まれると判断した場合、前記アプリケーションプロセスによる前記第1のデータへのアクセスを可能にするステップと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記1つ以上のファイルタイプは、1つ以上のファイル拡張子、ファイルの種類、または、他のファイル属性またはメタデータを含み、前記記録ステップは、
前記ブローカーサービスによってはアクセス可能であるが前記アプリケーションプロセスによってはアクセス可能でないセキュアな場所に、前記アプリケーションのための前記アプリケーションマニフェストにおいて示された、前記1つ以上のファイル拡張子、ファイルの種類、または、他のファイル属性またはメタデータのインジケーションを記憶するステップ
を含む、請求項2に記載の方法。
【請求項4】
前記アプリケーションプロセスをアプリケーションコンテナへロードするステップは、
前記アプリケーションコンテナのための識別子を含む前記アプリケーションプロセスのためのトークンを生成するステップであって、前記トークンは、前記アプリケーションプロセスによって変更不可能である、生成するステップ
を含む、請求項3に記載の方法。
【請求項5】
記アクセス要求を受け取ることは、前記トークンと前記アクセス要求において要求された前記第1のデータのインジケーションとを前記ブローカーサービスで受け取ることを含む、請求項4に記載の方法。
【請求項6】
前記アプリケーションプロセスによる前記第1のデータへのアクセスを可能にするステップは、
前記ブローカーサービスによって、前記アクセス要求において要求された前記第1のデータの前記インジケーションに基づいて前記第1のデータのファイルタイプを決定するステップと、
前記ブローカーサービスによって、前記セキュアな場所における前記アプリケーションのための前記記録された1つ以上のファイルタイプにアクセスするステップと、
前記ブローカーサービスによって、前記第1のデータのファイルタイプが前記記録された1つ以上のファイルタイプに含まれるかどうかを判断するステップと、
前記ブローカーサービスによって、前記第1のデータのファイルタイプが前記記録された1つ以上のファイルタイプに含まれると判断された場合に前記アプリケーションプロセスが前記第1のデータにアクセスできるようにするステップと
を含む、請求項5に記載の方法。
【請求項7】
前記アプリケーションプロセスによる前記第1のデータへのアクセスを可能にするステップは、
前記ブローカーサービス、前記第1のデータのファイルタイプが前記記録された1つ以上のファイルタイプに含まれないと判断された場合に前記アプリケーションプロセスによる前記第1のデータへのアクセスを拒否するステップ
を含む、請求項6に記載の方法。
【請求項8】
前記拒否するステップは、
前記第1のデータのファイルを読み取ること、前記第1のデータのフォルダのコンテンツを読み取ること、前記第1のデータのファイルまたはフォルダのうちの少なくとも1つに書き込むこと、前記第1のデータのファイルまたはフォルダの名前を変更すること、前記第1のデータのファイルまたはフォルダを移動すること、或いは前記第1のデータのファイルまたはフォルダを上書きコピーすることのための前記アプリケーションプロセスによるアクセスを拒否するステップ
を含む、請求項7に記載の方法。
【請求項9】
プロセッサと、
コンピュータプログラムを保存する記憶媒体と、
を有するコンピューティングデバイスであって、前記コンピュータプログラムは、請求項1乃至8のいずれか一項に記載の方法を前記プロセッサに実行させる、記憶媒体。
【請求項10】
請求項1乃至8のいずれか一項に記載の方法をコンピューティングデバイスのプロセッサに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示される実施の形態はファイルにアクセスするための方法及びコンピューティングデバイス等に関連する。
【背景技術】
【0002】
アプリケーションは、コンピュータシステムにおいて実行され、1つ以上のタスクを実行するために実現される、実行可能なプログラムコードを含む。アプリケーションのためのプログラムコードを形成するために使用され得る、多種多様なタイプのプログラミング言語が存在する。オフィススイートアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、ウェブアプリケーション等を含む、さまざまな機能を実行するためのさまざまなタイプのアプリケーションが存在する。いくつかのアプリケーションは、それらの機能を実行する際に使用される、それらのホストコンピュータまたは他のコンピュータのファイルシステムに記憶されたデータにアクセスし得る。たとえば、ワードプロセッシングアプリケーションは、編集のために、テキストファイルまたはドキュメントファイルにアクセスし得る。メディアプレイヤアプリケーションは、再生のために、オーディオファイルおよび/またはビデオファイルにアクセスし得る。データベースアプリケーションは、さまざまな用途のために、データベースのデータベースファイルにおけるデータにアクセスし得る。
【0003】
しかしながら、アプリケーションは典型的に、そのアプリケーションに関連のないファイルシステムデータを含むファイルシステムデータへのアクセス権を有するので、悪意あるプログラムコードを含むアプリケーションが多種多様なファイルシステムデータに害を与えてしまうことが懸念される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2010-0153671号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
一観点による課題は、アプリケーションによる適切なファイルアクセスを可能にする方法及び装置等を提供することである。
【課題を解決するための手段】
【0006】
一観点による方法は、
コンピューティングデバイスにおける方法であって、
前記コンピューティングデバイスにアプリケーションをインストールするステップと、
前記アプリケーションに関連づけられたアプリケーションマニフェストを受け取るステップであって、前記アプリケーションマニフェストは、前記アプリケーションがアクセスを許可される1つ以上のファイルタイプを示す、ステップと、
ブローカーサービスによってアクセス可能な場所に前記1つ以上のファイルタイプを記録するステップであって、前記ブローカーサービスは、前記アプリケーションによるアクセスを、前記記録された1つ以上のファイルタイプのファイルに限定するように形成されている、記録するステップと
を含む、方法である。
【図面の簡単な説明】
【0007】
図1】例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するように構成されたコンピューティングデバイスのブロック図である。
【0008】
図2】例示的な実施形態に係る、ブローカーサービスがオペレーティングシステムに含まれる、コンピューティングデバイスのブロック図である。
【0009】
図3】例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するための処理を提供するフローチャートである。
【0010】
図4】例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスのためにアプリケーションをインストールし、構成するための処理を提供するフローチャートである。
【0011】
図5】例示的な実施形態に係る、アプリケーションがファイルシステムデータへの制御されたアクセスのためにインストールされ、構成される、コンピューティングデバイスのブロック図である。
【0012】
図6】例示的な実施形態に係る、アプリケーションマニフェストのブロック図である。
【0013】
図7】例示的な実施形態に係る、アプリケーションコンテナにおいてアプリケーションを起動するための処理を提供するフローチャートである。
【0014】
図8】例示的な実施形態に係る、アプリケーションがアプリケーションコンテナにおいて起動される、コンピューティングデバイスのブロック図である。
【0015】
図9】例示的な実施形態に係る、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャートである。
【0016】
図10】例示的な実施形態に係る、ブローカーサービスがアプリケーションプロセスによるファイルシステムデータへのアクセスを制御する、コンピューティングデバイスのブロック図である。
【0017】
図11】例示的な実施形態に係る、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャートである。
【0018】
図12】本発明の実施形態を実現するために使用され得る例示的なコンピュータのブロック図である。
【発明を実施するための形態】
【0019】
<実施の形態の概要>
この概要は、詳細な説明において以下にさらに説明される概念の選択を単純化した形態で紹介するために提供されるものである。この概要は、本発明の主題のキーとなる特徴または不可欠な特徴を特定することを意図したものでなく、本発明の主題の範囲を限定するために使用されることを意図したものでもない。
【0020】
アプリケーションによる選択的ファイルシステムアクセスを可能にするための方法、システム、およびコンピュータプログラム製品が提供される。アプリケーションによるファイルシステムデータのアクセスは、ブローカーサービスによって取り扱われる。ブローカーサービスはブローカーサービス部等と言及されてもよい。そうでなければアプリケーションは、(それ自身のファイルおよびそれ自身の他のリソース以外の)ファイルシステムデータにアクセスできないように阻止される。ブローカーサービスはアプリケーションから、ファイルシステムデータにアクセスするための要求を受け取り、アクセスを要求されたデータが、アプリケーションがアクセスを許可されるファイルタイプのものである場合、ブローカーサービスはアプリケーションに、データへのアクセスを可能にさせる。そうでなければ、アプリケーションは、データへのアクセスを拒否または阻止される。
【0021】
1つの方法の実現によると、アプリケーションがコンピューティングデバイスにインストールされる。アプリケーションに関連づけられたアプリケーションマニフェストが受け取られる。アプリケーションマニフェストは、アプリケーションがアクセスを許可される1つ以上のファイルタイプを示す。示されたファイルタイプは、ブローカーサービスによってアクセス可能な場所に記録される。
【0022】
さらに、アプリケーションは、アプリケーションプロセスとして起動され得る。アプリケーションプロセスは、アプリケーションコンテナにおいて隔離され、それは、ユーザアカウントと同様である(ユーザアカウントを有するユーザは、他のユーザのファイルにアクセスできない)。アプリケーションコンテナは、アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを阻止する。ファイルシステムデータのうちの第1のデータに関連するアクセス要求が、アプリケーションプロセスからブローカーサービスで受け取られる。ブローカーサービスが、第1のデータのファイルタイプが、記録されたファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第1のデータへのアクセスが可能にされる。
【0023】
システムの実現によると、コンピューティングデバイスが提供される。コンピューティングデバイスは、ストレージおよび処理ロジックを含む。ストレージは、コンピューティングデバイスにインストールされたアプリケーション、およびアプリケーションに関連づけられたアプリケーションマニフェストを記憶する。アプリケーションマニフェストは、アプリケーションがアクセスを許可される1つ以上のファイルタイプを示す。処理ロジックは、ブローカーサービスを含み、ブローカーサービスによってアクセス可能な(そして、アプリケーションによってはそうでない)場所に、ファイルタイプを記録する。ブローカーサービスは、アプリケーションによるアクセスを、記録されたファイルタイプのファイルに限定するように構成される。
【0024】
処理ロジックは、アプリケーションが起動されるとアプリケーションプロセスを開始することができ、アプリケーションプロセスをアプリケーションコンテナに含めることができる。アプリケーションコンテナは、アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを阻止する。ブローカーサービスはアプリケーションプロセスから、ファイルシステムデータのうちの第1のデータについてのアクセス要求を受け取る。処理ロジックは、ブローカーサービスが、第1のデータのファイルタイプが、記録されたファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第1のデータへのアクセスを可能にする。
加えて、アプリケーションによるファイルシステムデータへの選択的アクセスを可能にすることを含むさまざまな実施形態、およびさらなる実施形態を可能にするための、プログラムコード/ロジックを記憶する、コンピュータ可読記憶媒体が本明細書に説明される。
本発明のさらなる特徴および利点、ならびに本発明のさまざまな実施形態の構造および動作が、添付の図面に関連して、以下において詳細に説明される。本発明は、本明細書に説明される特定の実施形態に限定されるものではない、ということに注意すべきである。そのような実施形態は、単に例示目的で本明細書に提示される。追加の実施形態が、本明細書に含まれる教示に基づいて当業者に理解されるだろう。
本明細書に組み込まれ、明細書の一部を形成する添付の図面は、本発明を例示するものであり、発明の詳細な説明と共にさらに、本発明の原理を説明し、本発明を製造および使用することを当業者に可能にさせる役割を果たすものである。
<実施の形態の詳細な説明>
【0025】
本発明の特徴および利点は、以下に述べる詳細な説明を図面と共に考慮することによってより明らかとなり、図中の同様の参照番号は、全図面を通して対応する要素を特定する。図面において、同様の参照番号は一般的に、同一の、機能的に同様のおよび/または構造的に同様の要素を示す。要素が最初に登場した図面は、対応する参照番号の左端の数字によって示される。
【0026】
I.イントロダクション
本明細書は、本発明の特徴を組み込む1つ以上の実施形態を開示する。開示される実施形態は単に本発明を例示するにすぎない。本発明の範囲は、開示される実施形態に限定されるものではない。本発明は、本明細書に添付の特許請求の範囲によって定義される。
【0027】
本明細書における、「一実施形態」、「実施形態」、「例示的な実施形態」等の呼称は、説明される実施形態は、特定の特徴、構造、または特性を含み得るが、すべての実施形態が必ずしもその特定の特徴、構造、または特性を含み得るわけではない、ということを示す。さらに、そのようなフレーズは、必ずしも同一の実施形態に言及しているわけではない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明される場合、明示的に説明されていてもいなくても、他の実施形態に関連してそのような特徴、構造、または特性がもたらされることは、当業者の知識の範囲内である、ということが理解される。
【0028】
本発明の多数の例示的な実施形態が、以下に説明される。本明細書で提供される任意のセクション/サブセクションの見出しは、限定を意図するものではない、ということに注意すべきである。実施形態は、本明細書全体を通して説明され、いずれのタイプの実施形態も、任意のセクション/サブセクションの下に含まれ得る。
【0029】
II.例示的な実施形態
実施形態は、アプリケーションによるファイルシステムデータへのアクセスを規制/制限/制御するための技法に関する。アプリケーションは、それらの機能を実行するために、それらのホストコンピュータシステム(および/または他のコンピュータシステム)のファイルシステムに記憶されたデータにアクセスし得る。たとえば、ワードプロセッシングアプリケーションは、編集のために、テキストファイルまたはドキュメントファイルにアクセスし得る。メディアプレイヤアプリケーションは、再生のために、オーディオファイルおよび/またはビデオファイルにアクセスし得る。データベースアプリケーションは、さまざまな用途のために、データベースに記憶されたデータにアクセスし得る。しかしながら、アプリケーションは、そのアプリケーションに関連のないファイルシステムデータを含み得るファイルシステムデータにアクセスできるので、悪意あるプログラムコードを含むアプリケーションが、ファイルシステムデータの盗用を犯し、多種多様なファイルシステムデータに害を与え、または他の望ましくない行為を犯す可能性が存在する。
【0030】
実施形態は、アプリケーションによるファイルシステムデータへのアクセスを、アプリケーションがインタラクトするように構成されたファイルシステムデータのタイプに制限することの利点を提供する。たとえば、開発者または他の人間は、アプリケーションがアクセス/インタラクトすること(たとえば、読み取り、書き込み、変更、名前の変更、コピー、移動等)ができる1つ以上のファイルタイプのインジケーション(インジケータ又は指標)を提供し得る。アプリケーションがコンピュータシステムにインストールされると、ファイルタイプ(たとえば、MP3ファイル、Microsoft(登録商標)ワードファイル等)が、記録され得る。記録は登録と言及されてもよい。アプリケーションが実行され、コンピュータシステムのファイルシステムデータへのアクセスを試みる際、そのファイルシステムデータが、記録されたファイルタイプのファイルタイプを有するのであれば、アプリケーションは、ファイルシステムデータへのアクセスを可能にされ得る。アクセスされているファイルシステムデータが、記録されたファイルタイプのものでない場合、ファイルシステムデータのアクセスは、拒否または阻止され得る。アプリケーションは、それ自身のファイルおよびそれ自身の他のリソース、アプリケーションのための一時的な作業ディクショナリ、およびアプリケーションのための設定ディクショナリといった、不可欠なアプリケーション情報へのアクセスは可能にされ得るが、そうでなければ、本明細書で説明されるように、センシティブなファイルシステムデータへのアクセスは拒否され得る。
【0031】
実施形態は、さまざまな環境において実現されることができる。たとえば、図1は、例示的な実施形態に係る、コンピューティングデバイス102のブロック図を示す。図1に示すように、コンピューティングデバイス102は、アプリケーションプロセス104、ブローカーサービス106、ストレージ108、およびアプリケーション120を含む。アプリケーションプロセス104は、アプリケーションプロセス部104、アプリケーション処理部104等と言及されてもよい。ブローカーサービス106はブローカーサービス部106等と言及されてもよい。さらに、ストレージ108は、複数のフォルダ110a〜110nを含む。フォルダ110a〜110nの各々は、1つ以上のファイルを含み得る。たとえば、フォルダ110aがファイル112a〜112nを含むことが示されている。フォルダ110a〜110nおよびファイル112a〜112nは、コンピューティングデバイス102のファイルシステムのファイルシステムデータ118に含まれる。コンピューティングデバイス102は以下にさらに説明される。
【0032】
コンピューティングデバイス102は、デスクトップコンピュータ(たとえば、パーソナルコンピュータ等)、モバイルコンピュータまたはモバイルコンピューティングデバイス(たとえば、Palm(登録商標)デバイス、RIM社のBlackberry(登録商標)デバイス、携帯情報端末(PDA)、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ(たとえば、Apple社のiPad(登録商標))、ネットブック等)、携帯電話(たとえば、セルラー式電話、スマートフォン、たとえば、Apple社のiPhone、Google社のAndroid(登録商標)フォン、Microsoft社のWindows(登録商標)フォン等)、または他のタイプのモバイルデバイスを含む、任意のタイプの固定またはモバイルコンピューティングデバイスであることができる。
【0033】
上述したように、コンピューティングデバイス102は、ストレージ108を含む。ストレージ108は、磁気ディスク(たとえば、ハードディスクドライブ内)、光学ディスク(たとえば、光学ディスクドライブ内)、磁気テープ(たとえば、テープドライブ内)、RAMデバイス、ROMデバイス等といったメモリデバイス、および/または、任意の他の適切なタイプの記憶媒体を含む、フォルダおよびファイルを記憶するための任意のタイプの記憶メカニズムのうちの1つ以上を含み得る。ストレージ108は、図1に示すように完全にローカルなストレージであることもできるし、またはオプションで、「クラウド」ストレージおよびメディアサーバで利用可能なストレージといった、ネットワークを介してアクセス可能なストレージを含む、コンピューティングデバイス102とリモートのストレージを含むこともできる。さらに、ストレージ108は、取り外し可能なストレージデバイスを含むことができる。図1に示すように、ファイルシステムデータ118は、ストレージ108に記憶される。フォルダ110a〜110nは、当業者に周知であるように、ファイルシステムデータ118に含まれる仮想フォルダである。フォルダ110a〜110nは、階層構造および/または任意の他の方式で編成され得る。数十個、数百個、数千個、および、それよりさらに大きい数のフォルダを含む、任意の数のフォルダ110が存在することができ、各フォルダ110は、任意の数のファイルを含むことができる。ファイル112a〜112nは、当業者に周知であるように、データを含むコンピュータファイルである。数十個、数百個、数千個、および、それよりさらに大きい数のファイルを含む、任意の数のファイル112が存在することができる。
【0034】
ブローカーサービス106は、コンピューティングデバイス102において(たとえば、1つ以上のプロセッサによって)実行され得る、1つ以上のプロセス(たとえば、「ブローカープロセス」)を含む。ブローカーサービス106は、アプリケーションによるアクセスを、アプリケーションがアクセスを許可されるファイルシステムデータ118のデータに制限するように構成される。ブローカーサービス106のプログラムコードは、スタンドアロンのプログラムコードであることもできるし、または、コンピュータデバイス102の他のプログラムコードに含まれることもできる。たとえば、図2は、例示的な実施形態に係る、コンピューティングデバイス102のブロック図を示す。図2に示すように、ブローカーサービス106は、コンピューティングデバイス102のオペレーティングシステム202に含まれ得る。オプションで、ブローカーサービス106は、アプリケーションによるコンピューティングデバイス102のハードウェアおよび/または他のリソースへのアクセスを制限することを含む、コンピューティングデバイス102のためのさらなるサービスを提供し得る。
【0035】
アプリケーション120は、コンピューティングデバイス102において実行され/動作し、コンピューティングデバイス102のストレージ(たとえば、ストレージ108)に記憶され得る、ソフトウェアアプリケーションである。たとえば、アプリケーション120は、オフィススイートアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、ウェブアプリケーション等であることができる。オフィススイートアプリケーションは、さまざまなタイプの生産性向上アプリケーション、たとえば、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、プレゼンテーションアプリケーション等を含む。デスクトップアプリケーションは、いくつかのオフィススイートアプリケーション、デスクトップウィジェットまたはガジェット(典型的には、ニュースのストリーミング、現在の天気の提供、現在の株価の表示等といった専用サービスを提供する、インタラクティブツール)、ウェブブラウザ等を含む、コンピュータ(たとえば、デスクトップコンピュータ)のデスクトップで動作するように構成された、さまざまなタイプのアプリケーションを含む。モバイルアプリケーションは、スマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤ、携帯情報端末(PDA)等といった、モバイルのハンドヘルドデバイスで動作する、さまざまなタイプのアプリケーション(たとえば、「App」)を含む。(「web app」または「webapp」としても知られている)ウェブアプリケーションは、インターネットまたはイントラネットといったネットワークを介してアクセス可能なアプリケーションであり、アプリケーションを提供するウェブブラウザにおいてホストされ得る。例示的なアプリケーションは、ソーシャルネットワーキングアプリケーション、ナビゲーション支援アプリケーション(たとえば、地図アプリケーション、レストラン検索アプリケーション、交通アプリケーション等)、ゲームアプリケーション、資産運用アプリケーション等を含む。
【0036】
アプリケーション120は、アプリケーションプロセス104のような、1つ以上のアプリケーションインスタンスまたは「プロセス」を生成するために実行され得る。アプリケーションプロセス104は、アプリケーション120のプログラムコード(命令)およびその現在のアクティビティを含む。アプリケーションプロセス104は、コンピューティングデバイス102の1つ以上のプロセッサにおいて実行される。アプリケーションプロセス104は、1つ以上の実行スレッドを含み得る。複数の実行スレッドが存在する場合、スレッドは、プログラムコードを同時に実行し得る。
【0037】
アプリケーションプロセス104の実行中、アプリケーションプロセス104は、ファイル112aのようなファイルシステムデータ118のデータに対するアクセスを試みるかもしれない。従来のシステムでは、アプリケーションプロセス104は、ほとんど制限なしにファイル112aへのアクセスを実行できるであろう。しかしながら、アプリケーションプロセス104は、悪意あるプログラムコード(たとえば、アプリケーション120の当初の設計によるもの、アプリケーション120に挿入されているウィルスコードによるもの等)を含むかもしれないし、或いは、アプリケーション120のユーザが予期せぬ仕方でアクセスファイル112aにアクセスできてしまうかもしれない。いずれにせよ、アプリケーションプロセス104は、ファイル112aにアクセス可能にされていることにより、害をもたらすおそれがある。
【0038】
実施形態は、ファイルシステムデータへのアクセスを制限することにより、悪意あるアプリケーションコードによってもたらされる害を減じるのに役立つ。実施形態によると、アプリケーションプロセス104は、アクセスされることが望まれているファイルシステムデータ118のデータ(現在の例ではファイル112a)を示すデータアクセス114を生成する。図1に示すように、データアクセス114は、ブローカーサービス106によって受け取られる。ブローカーサービス106は、ファイル112aが、アプリケーション120がアクセスを許可されるファイルタイプのものであるかどうか、を決定又は判断するように構成される。ファイル112aが、アプリケーション120がアクセスを許可されるファイルタイプのものである場合、ブローカーサービス106は、アプリケーションプロセス104がファイル112aにアクセスできるようにする。そのようなケースでは、図1に示すように、データアクセス114において要求されたデータが、ストレージ108からアプリケーションプロセス104に、ブローカーサービス106により応答データ116として提供されてもよいし、または、応答データ116はアプリケーションプロセス104がデータにアクセスする仕方を示してもよい。たとえば、アプリケーション104にファイルまたはフォルダへのアクセスを可能にさせるために、ファイルまたはフォルダへのハンドルが応答データ116においてアプリケーションプロセス104に渡され得る。そうではなく、ファイル112aが、アプリケーション120にアクセスが許可されていないファイルタイプを有する場合、ブローカーサービス106は、ファイル112aへのアクセスを拒否してよい。ブローカーサービス106は、アプリケーションプロセス104によるファイルおよびフォルダとのさまざまなインタラクションを、アクセスが許可されない場合に拒否し得、それは、ファイルを読み取り、フォルダのコンテンツを読み取り、ファイルまたはフォルダに書き込み、ファイルまたはフォルダの名前を変更し、ファイルまたはフォルダを移動し、または、第1のデータのファイルまたはフォルダを上書きコピーするための、アプリケーションプロセス104によるアクセスを拒否することを含む。
【0039】
コンピューティングデバイス102は、その機能を実行するためにさまざまな手法で動作し得る。たとえば、図3は、例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するための処理を提供するフローチャート300を示す。フローチャート300が図1に関連して以下に説明される。さらなる構造上および動作上の実施形態が、フローチャート300に関する以下の説明に基づいて当業者に理解されるだろう。
【0040】
フローチャート300は、ステップ302から始まる。ステップ302において、アプリケーションにとってアクセス可能なファイルタイプが記録される。たとえば、実施形態では、アプリケーション120のアプリケーションプロセスがアクセスを許可される1つ以上のファイルタイプが、コンピューティングデバイス102のデータ構造(たとえば、レジストリ)に記録される。データ構造は、ストレージ108、またはコンピューティングデバイス102に関連づけられた他のストレージに記憶され得る。
【0041】
ステップ304において、アプリケーションのプロセスによるアクセスは、記録されたアクセス可能なファイルタイプに制限される。たとえば、実施形態において、ブローカーサービス106は、記録された、アプリケーション120にとってアクセス可能なファイルタイプを含むデータ構造へのアクセスを有し得る。ブローカーサービス106が、アプリケーションプロセス104のようなアプリケーション120のアプリケーションプロセスからデータの要求を受け取ると、ブローカーサービス106は、要求されたデータが、アプリケーションプロセスがアクセスを許可されるファイルタイプのものであるかどうか、を決定するために、データ構造にアクセスし得る。ブローカーサービス106は、データが許可可能なファイルタイプである場合、アプリケーションプロセスにデータへのアクセスを可能にさせることができ、または、データが許可可能なファイルタイプのものでない場合、要求に対しアクセスを拒否し得る。アプリケーション120から形成された任意の数のアプリケーションプロセスは、それらのファイルシステムデータアクセスを、このように、それどころか同時に、制限し得る。
【0042】
ブローカーサービス106を含むコンピューティングデバイス102は、実施形態において、さまざまな手法でその機能を実行し得る。コンピューティングデバイス102、ブローカーサービス106、およびフローチャート300のための多数の例示的な実施形態が、以下のサブセクションにおいて説明される。たとえば、次のサブセクションは、ファイルシステムデータへの制御されたアクセスのために構成されたアプリケーションをインストールするための例示的な実施形態を説明する。後続するサブセクションは、制御されたファイルシステムデータアクセスを有するアプリケーションを起動するための例示的な実施形態を説明し、起動されたアプリケーションにファイルシステムデータへの制限されたアクセスを提供するための例示的な実施形態を説明するセクションが、その後に続く。
【0043】
A.制御されたファイルシステムデータアクセスのためのアプリケーションをインストールするための例示的な実施形態
例示的な実施形態によると、アプリケーションは、ファイルシステムデータへの制御されたアクセスを有するようにコンピューティングデバイスにインストールされ得る。実施形態において、インストールの一部として、開発者または他のユーザは、それらのアプリケーションにとってアクセス可能なファイルタイプを1つ以上のセキュアな場所に記録することが可能である。セキュアな場所は後に、アプリケーションによるファイルシステムデータへのアクセスを可能にするために、ブローカーサービスによってアクセスされ得る。しかしながら、セキュアな場所は、アプリケーションによってアクセスされることはできない。このように、アプリケーションにとってアクセス可能なファイルタイプは、ファイルシステムに害をもたらすことをアプリケーションに可能にさせるよう改ざんすることはできない。
【0044】
たとえば、図4は、例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスのためにアプリケーションをインストールし、構成するための処理を提供するフローチャート400を示す。フローチャート400は、図3におけるフローチャート300のステップ302の例示的な実現を提供する。フローチャート400は、実施形態において、図1のコンピューティングデバイス102によって実行され得る。フローチャート400が図5に関連して以下に説明される。図5は、例示的な実施形態に係る、アプリケーションがファイルシステムデータへの制御されたアクセスのためにインストールされ、構成される、コンピューティングデバイス102のブロック図を示す。図5に示すように、コンピューティングデバイス102は、処理ロジック502およびストレージ108を含む。処理ロジック502は処理ロジック部502又は処理論理部502等と言及されてもよい。処理ロジック502は、アプリケーションインストーラ506、ファイルシステム記録モジュール508、および識別子生成部520を含む。さらなる構造上および動作上の実施形態が、フローチャート400および図5のコンピューティングデバイス102に関する以下の説明に基づいて、当業者に理解されるだろう。
【0045】
フローチャート400は、ステップ402から始まる。ステップ402において、アプリケーションがコンピューティングデバイスにインストールされる。たとえば、図1に示すように、アプリケーション情報512が、コンピューティングデバイス102で受け取られる。アプリケーション情報512は、図1のアプリケーション120のようなアプリケーションを定義するファイルおよび/またはデータのすべてを含む。アプリケーション情報512は、コンピューティングデバイス102に関連づけられた(たとえば、ディスクドライブに挿入された、コネクタにプラグで接続された等の)コンピュータ可読記憶媒体(たとえば、コンパクトディスク読み出し専用メモリ(CDROM)デバイス、フロッピー(登録商標)ディスク、メモリスティック(たとえば、ユニバーサルシリアルバス(USB)ストレージデバイス)等)から、LAN(ローカルエリアネットワーク)、WAN(広域ネットワーク)、または、インターネットのようなネットワークの組み合わせ、といったネットワークを介したリモートサービス(たとえば、「クラウド」に基づいたサービス)から、および/または他のソースから、を含む、さまざまなソースから受け取られ得る。
【0046】
図5に示すように、アプリケーションインストーラ506が、アプリケーション情報512を受け取る。アプリケーションインストーラ506は、コンピューティングデバイス102のストレージ108にアプリケーション情報512をインストールして、アプリケーションをインストールするように構成される。アプリケーションインストーラ506は、当業者にとって周知の、本明細書に説明されるごとくアプリケーションをインストールするように構成された、アプリケーションインストールプログラムであるものを含む、所有権や財産権によって保護されている、または、商業的に利用可能な、アプリケーションインストールプログラムであり得る。
【0047】
図5に示すように、アプリケーションインストーラ506は、アプリケーション情報512を処理して、アプリケーションをアプリケーションパッケージ510としてストレージ108にインストールする。アプリケーションパッケージ510は、アプリケーションプログラムコード514を含む。アプリケーションプログラムコード514は、インストールされたアプリケーションの機能を定義する、(1つ以上のプロセッサによって)実行可能なコードである。アプリケーションプログラムコード514は、1つ以上のファイルの形態および/または他の形態を有し得る。アプリケーションインストーラ506は、コンピューティングデバイス102にアプリケーションプログラムコード514をインストールするように構成される。
【0048】
図4を再び参照すると、ステップ404において、アプリケーションに関連づけられたアプリケーションマニフェストが受け取られ、アプリケーションマニフェストは、アプリケーションがアクセスを許可される1つ以上のファイルタイプを示す。たとえば、図5に示すように、アプリケーションパッケージ510はさらに、アプリケーションマニフェスト516を含む。アプリケーションマニフェスト516は、オブジェクト(たとえば、1つ以上のファイル)である。アプリケーションインストーラ506は、コンピューティングデバイス102のストレージ108にアプリケーションマニフェスト516を記憶するように構成される。
【0049】
アプリケーションマニフェスト516は、アプリケーションがアクセスを許可される1つ以上のファイルタイプのインジケーションを含む。さらに、アプリケーションマニフェスト516はオプションで、アプリケーションに関連づけられたさらなる情報を含み得る。たとえば、図6は、例示的な実施形態に係る、アプリケーションマニフェスト516のブロック図を示す。図6に示すように、アプリケーションマニフェスト516は、アクセス可能なファイルタイプ情報602、識別情報604、および能力情報606を含む。他の実施形態において、アプリケーションマニフェスト516は、図6に示すもの以外に追加のおよび/または代替の情報を含み得る。
【0050】
アクセス可能なファイルタイプ情報602は、関連づけられたアプリケーションがアクセスを許可される1つ以上のファイルタイプのインジケーションを含む。「ファイルタイプ」は、たとえば、ファイル拡張子、ファイルの種類、および/または、他のファイル属性またはメタデータによって、ファイルのクラスを定義し、区別する。したがって、ファイルタイプ情報602は、アプリケーションによってアクセスされ得るデータ(たとえば、ファイル、フォルダ等)を定義するために使用され得る(ファイル拡張子、ファイルの種類、および/または、他のファイル属性またはメタデータによる)1つ以上のファイルタイプを示し得る。ファイルタイプは、アクセス可能なファイルタイプ情報602においてさまざまな手法で示され得る。たとえば、ファイルタイプは、アクセス可能なファイルタイプ情報602において、個々のファイルタイプとして、および/または、ファイルタイプファミリおよび/またはファイルタイプクラスのようなファイルタイプのグループで示され得る。ファイルタイプは、アクセス可能なファイルタイプ情報602において、典型的にはファイル名における最後のピリオドの後に続くいくつかの英数字文字である、ファイル拡張子によって示され得る。たとえば、個々のファイルタイプに関し、テキストファイルのファイルタイプ拡張子は、「.txt」であることができ、MPEG(ムービング・ピクチャ・エキスパーツ・グループ)ビデオファイルのファイルタイプ拡張子は、「.mpg」であることができ、ウェーブフォームオーディオファイルフォーマットのオーディオファイルのファイルタイプ拡張子は、「.wav」であることができる、といった具合である。ファイルタイプファミリは、ファミリに関連する(たとえば、対応するファイル拡張子による)複数のファイルタイプ、たとえば、共通の製品のためのファイルタイプ(たとえば、製品の異なるバージョンに関連づけられた異なるファイルタイプ)のグループを含む。たとえば、Microsoft(登録商標)ワード(ワードプロセッシングアプリケーション)のファイルタイプファミリは、Microsoft(登録商標)ワード2007より前のバージョン、およびMicrosoft(登録商標)ワード2007とそれ以降のバージョンにそれぞれ関連するファイルタイプ拡張子、「.doc」および「.docx」を含み得る。ファイルタイプクラスは、オーディオクラス、ビデオクラス、ワードプロセッシングクラス、データベースクラス等といった製品クラスによって関連する複数のファイルタイプを含む。たとえば、音楽またはオーディオクラスのファイルタイプは、「.wav」、「.mp3」、「.aiff」等といった、音楽および/またはオーディオに関連づけられた複数のファイル拡張子を含み得る。
【0051】
識別情報604は、アプリケーションのための識別情報を含む。たとえば、識別情報604は、アプリケーションおよび/またはアプリケーションパッケージの名前、アプリケーションの版元、アプリケーションのアーキテクチャ、リソースタイプ(たとえば、en−usのような言語タイプ等)、アプリケーションのバージョン、および/または他の識別情報、のうちの1つ以上を含み得る。
【0052】
能力情報606は、アプリケーションプログラムコード514の実行によって形成されるアプリケーションプロセスが、アクセスを許可されるおよび/またはアクセスを許可されないコンピューティングデバイス102の能力を示す。そのように示される能力の例は、コンピューティングデバイス102のストレージデバイス(たとえば、内部および/または外部ストレージデバイス)がアクセス可能であるかどうかを示すこと、クレデンシャル(又は認証情報)がアクセスされてよいかどうかを示すこと、ソフトウェアおよび/またはハードウェアの証明書(又は認可証)がアクセスされてよいかどうかを示すこと、入力/出力デバイス(たとえば、マイクロフォン、ウェブカメラ等)がアクセス可能であるかどうかを示すこと、コンピューティングデバイス102から離れた装置との通信が実行されてよいかどうかを示すこと等を含む。能力情報606は、オプションで存在し、アプリケーションがデータにアクセスできる例示的な手法である。たとえば、示される能力は、ブローカーサービス106がアクセスを可能にし得る特定の場所(たとえば、ピクチャライブラリ)のすべてのファイルタイプを表してもよい。
【0053】
図4を再び参照すると、ステップ406において、アプリケーションマニフェストによって示された1つ以上のファイルタイプが、ブローカーサービスによってアクセス可能な場所に記録される。たとえば、実施形態において、図5に示すように、ファイルタイプ記録モジュール508は、アプリケーションマニフェスト516を読み取って、(たとえば、アクセス可能なファイルタイプ情報602において示されるごとくの)アプリケーションがアクセスを許可される1つ以上のファイルタイプを決定することができる。ファイルタイプ記録モジュール508は、1つ以上のファイルタイプのインジケーションをファイルタイプ518としてセキュアな記憶場所504に記憶することにより、1つ以上のファイルタイプを記録するように構成される。図5に示すように、セキュアな記憶場所504は、ストレージ108の記憶場所(たとえば、記憶領域)であることができ、またはあるいは、別個のストレージに存在することができる。セキュアな記憶場所504は、アプリケーションのアプリケーションプロセスがそこに記憶されたデータにアクセスできないので、セキュアである(たとえば、特権化されている)とみなされる。したがって、悪意あるアプリケーションは、ファイルタイプ518を変更して、ファイルタイプ518において定義されたもの以外のファイルタイプへのアクセスを可能にされるようにすることはできず、悪意あるアプリケーションがファイルシステムデータに害をもたらす可能性が減じられる。
【0054】
さらに、図6に示すように、識別子生成部520は、アプリケーションマニフェスト516からの情報を受け取り、セキュリティ識別子522を生成することができる。セキュリティ識別子522は、コンピューティングデバイス102において、アプリケーションのために実行されるアプリケーションプロセスを含むアプリケーションパッケージ510に関連づけられたアプリケーションを識別するために使用され得る、一意の識別子である。セキュリティ識別子522は、第1のユーザアカウントを有する第1のユーザによるアクセスを、第2のユーザのファイルにアクセスしないように限定する、ユーザアカウントのためのユーザ識別子と同様である。セキュリティ識別子522は、アプリケーションがデフォルトでファイルシステムのデータへのアクセスを有しないことを保証し、ファイルタイプおよび/または能力のセットをアプリケーションパッケージに関連づけるために、使用されることができる。たとえば、セキュリティ識別子522は、アクセス制御リスト(ACL)を含むコンピューティングデバイス102におけるセキュリティ動作に関し、アプリケーションプロセスを識別するために使用され得る。セキュリティ識別子522を含むコンピューティングデバイス102のACLは、関連づけられたアプリケーションがアクセスし得るコンピューティングデバイス102のリソースを識別し得る。セキュリティ識別子522がACLに含まれない場合、アプリケーションは、セキュリティがACLによって取り扱われるいずれのリソースへのアクセスも有しない。
【0055】
セキュリティ識別子(SID)522は、所有権や財産権によって保護された技法および/または商業的に利用可能な技法によることを含む、任意の手法で、アプリケーションのために生成され得る。たとえば、セキュリティ識別子522は、アプリケーションパッケージ510のパッケージ識別子(パッケージ識別子SID)に基づいて生成されることができる。パッケージ識別子に基づいてセキュリティ識別子522を生成することは、アプリケーションパッケージ510のパッケージ識別子のすべての要素に基づいて、または、要素のサブセット(たとえば、パッケージ識別子からの名前および版元といったパッケージのファミリ識別子)のみに基づいて、セキュリティ識別子を生成することを含み得る。別の実施形態において、セキュリティ識別子522は、識別情報604からの情報のハッシュとして生成されることができる。たとえば、セキュリティ識別子522は、アプリケーションおよび/またはアプリケーションパッケージ510の名前、アプリケーションの版元、アプリケーションのアーキテクチャ、アプリケーションのバージョン等のうちの1つ以上のハッシュとして生成されることができる。
【0056】
B.制御されたファイルシステムデータアクセスを有するアプリケーションを起動するための例示的な実施形態
例示的な実施形態によると、アプリケーションプロセスは、コンピューティングデバイス102で定義され記録された、許可可能なファイルタイプを有するアプリケーションのために起動されることができる。実施形態において、アプリケーションプロセスは、アプリケーションによるファイルシステムデータへのアクセスを阻止するアプリケーションコンテナに含まれ得る。
【0057】
たとえば、図7は、例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスを有するアプリケーションを起動するための処理を提供するフローチャート700を示す。フローチャート700は、実施形態において、図1のコンピューティングデバイス102によって実行され得る。フローチャート700が図8に関連して以下に説明される。図8は、例示的な実施形態に係る、インストールされたアプリケーションが起動され、結果として生じるアプリケーションプロセスが、ファイルシステムデータへの制御されたアクセスを有する、コンピューティングデバイス102のブロック図を示す。図8に示すように、コンピューティングデバイス102は、処理ロジック502、ストレージ108、およびメモリ810を含む。処理ロジック502は、アプリケーション起動部802を含み、アプリケーション起動部802は、トークン生成部804を含む。さらなる構造上および動作上の実施形態が、フローチャート700および図8のコンピューティングデバイス102に関する以下の説明に基づいて、当業者に理解されるだろう。
【0058】
フローチャート700は、ステップ702から始まる。ステップ702において、アプリケーションがアプリケーションプロセスとして起動される。たとえば、図8に示すように、アプリケーション起動部802は、図1のアプリケーション120のようなアプリケーションを起動して、アプリケーションプロセス104を形成するように構成され得る。アプリケーション起動部802は、所有権や財産権で保護されている技法によるもの、または、当業者に周知の従来の技法によるもの、を含むさまざまな手法で、アプリケーション120を起動してアプリケーションプロセス104を形成するように構成され得る。図8に示すように、アプリケーションプロセス104は、メモリ810へロードされ得る。このように、アプリケーションプロセス104のプログラムコードは、アプリケーションプロセス104を実行するコンピューティングデバイス102の1つ以上のプロセッサによって容易にアクセスされ得る。
【0059】
ステップ704において、アプリケーションプロセスは、アプリケーションコンテナへ含められる。たとえば、図8に示すように、アプリケーションプロセス104は、アプリケーションコンテナ806に含まれる。アプリケーションコンテナ806は、アプリケーションプロセス104によるファイルシステムデータへの直接的なアクセスを阻止する、アプリケーションプロセス104のための仮想コンテナである。アプリケーションのためのアプリケーションコンテナ806は、ユーザのためのユーザアカウントと同様であり、ユーザアカウントは、ユーザによる他のユーザの情報へのアクセスを制限するために使用されるものである。同様に、アプリケーションコンテナ806は、アプリケーションによる他の情報へのアクセスを制限する。アプリケーションプロセス104は、アプリケーションプロセス104によるファイルシステムのセンシティブな部分へのアクセスをデフォルトで制限する、アプリケーションプロセス104のためのトークンに適用される、アプリケーションコンテナ806に関連づけられたセキュリティ識別子を有することによるような、さまざまな手法で、アプリケーションコンテナ806に「含められ」得る。そのようなセンシティブなファイルシステム部分は、アプリケーションパッケージ510のリソース、作業ディクショナリ、および設定ディクショナリといった、アプリケーションプロセス104自身にとって不可欠なファイル/フォルダを含まない。ACLは、アプリケーションプロセス104がこれらの不可欠な項目にアクセスできるように、適切に設定されることができる。
【0060】
たとえば、実施形態において、(たとえば、上述のごとく)アプリケーション120のために生成されたセキュリティ識別子522は、アプリケーションコンテナ806に関連づけられることができ、アプリケーションコンテナ806のためのアクセス制限を定義するために使用されることができる。(たとえば、1つ以上のACLにおける)セキュリティ識別子522に関し定義されたアクセス可能なリソースは、アプリケーションコンテナ806に、したがって、アプリケーションコンテナ806内のアプリケーションプロセス104に、適用可能である。たとえば、実施形態において、セキュリティ識別子522は、ファイルシステムデータに関連づけられたいずれのACLにも含まれ得ない。すると、アプリケーションコンテナ806、したがって、アプリケーションプロセス104は、ファイルシステムデータへの直接的なアクセスを有することを不可能にされ得る。このように、アプリケーションコンテナ806は、ファイルシステムデータからアプリケーションプロセス104を隔離する。代わりに、アプリケーションプロセス104は、本明細書に説明される実施形態によると、ブローカーサービス106によって、ファイルシステムデータにアクセスすることを制限される。本明細書の他の箇所にさらに詳細に説明されるように、ブローカーサービス106は、アプリケーションプロセス104がどのタイプのファイルシステムデータにアクセスできるかを制御する。
【0061】
図8に示すように、トークン生成部804は、アプリケーションコンテナ806に関連づけられたセキュリティ識別子522を受け取ることができ、アプリケーションプロセス104のためのプロセストークン812を生成し得る。プロセストークン812は、コンピューティングデバイス102においてアプリケーションプロセス104を一意に識別するために使用され得る。たとえば、プロセストークン812は、アプリケーションプロセス104を、他のタイプのアプリケーションプロセスからだけでなく、同一のアプリケーション120のために生成されたアプリケーションプロセス104の追加のインスタンスからも、区別可能であり得る。
【0062】
トークン生成部804は、アプリケーションコンテナ806を識別し、アプリケーションマニフェスト516に関連づけられたさらなる情報を含み得る、セキュリティ識別子522を含むように、プロセストークン812を生成するように構成されることができる。たとえば、プロセストークン812はオプションで、能力情報606等に基づいて生成された1つ以上のセキュリティ識別子を含む、アプリケーション120のためのアプリケーションマニフェスト516の情報から生成されたさらなるセキュリティ識別子を含み得る。
【0063】
実施形態において、プロセストークン812は、アプリケーションプロセス104によって変更不可能である、ということに注意すべきである。たとえば、プロセストークン812は、メモリ810におけるセキュアな場所、セキュアな記憶場所504、または他のセキュアな記憶場所に記憶されることができる。このように、アプリケーションプロセス104は、プロセストークン812のセキュリティ識別子を変更して、そうでなければアクセス不可能なファイルシステムデータへのアクセスを可能にされるようにはできず、それによって、ファイルシステムに害をもたらすことを可能にされることを阻止される。メモリ810は、ランダムアクセスメモリ(RAM)デバイスのような任意の数のメモリデバイスに含まれることができ、かつ、ストレージ108に含まれるか、または、ストレージ108とは別個であることができる。
【0064】
C.起動されたアプリケーションにファイルシステムデータへのアクセスを提供するための例示的な実施形態
例示的な実施形態によると、アプリケーションプロセスは、ファイルシステムデータへのアクセスを提供され得る。実施形態において、アプリケーションプロセスは、アプリケーションコンテナに含まれるがゆえに、ファイルシステムデータに直接的にアクセスできず、それは、それに関連づけられたセキュリティ識別子ゆえに、制限されたファイルシステムアクセスを有する。代わりに、アプリケーションプロセスは、中間物、すなわち、ブローカーサービスによって、ファイルシステムデータにアクセスすることにより、間接的にファイルシステムデータにアクセスすることを可能にされる。
【0065】
たとえば、図9は、例示的な実施形態に係る、アプリケーションプロセスにファイルシステムデータへの制御されたアクセスを提供するための処理を提供するフローチャート900を示す。フローチャート900は、実施形態において、図1のコンピューティングデバイス102によって実行され得る。フローチャート900が図10に関連して以下に説明される。図10は、例示的な実施形態に係る、インストールされたアプリケーションが以前に起動され、結果として生じたアプリケーションプロセスが、ファイルシステムデータへの制御されたアクセスを提供される、コンピューティングデバイス102のブロック図を示す。図10に示すように、コンピューティングデバイス102は、処理ロジック502およびストレージ108を含む。処理ロジック502は、ブローカーサービス106を含み、ブローカーサービス106は、条件マッチングロジック1002を含む。条件マッチングロジック1002は、条件マッチング論理部1002、条件照合部1002等と言及されてもよい。さらなる構造上および動作上の実施形態が、フローチャート900および図10のコンピューティングデバイス102に関する以下の説明に基づいて、当業者に理解されるだろう。
【0066】
フローチャート900は、ステップ902から始まる。ステップ902において、ファイルシステムデータの第1のデータについてのアクセス要求が、アプリケーションプロセスからブローカーサービスで受け取られる。たとえば、図10に示すように、アプリケーションプロセス104は、アクセスされることが所望されるファイルシステムデータ118のデータを示す、データアクセス114を生成する。実施形態において、データアクセス114は、データが読み取られ、書き込まれ、または変更されることを示し得る。たとえば、現在の例において、データアクセス114は、ファイル112aが読み取られることを示し得る。データアクセス114はまた、アプリケーションプロセス104によって生成されたものとしてデータアクセス114を識別するためのプロセストークン812を含み得る。図10に示すように、データアクセス114は、ブローカーサービス106によって受け取られる。
【0067】
ステップ904において、ブローカーサービスが、第1のデータのファイルタイプが、記録された1つ以上のファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第1のデータへのアクセスが可能にされる。ブローカーサービス106は、ファイル112aが、アプリケーションプロセス104がアクセスを許可されるファイルタイプのものであるかどうか、を決定するように構成される。たとえば、ファイル112aが、アプリケーションプロセス104がアクセスを許可されるファイルタイプを有する場合、ブローカーサービス106は、アプリケーションプロセス104にファイル112aへのアクセスを可能にさせ得る。そうでなく、ファイル112aが、アプリケーションプロセス104がアクセスを許可されないファイルタイプを有する場合、ブローカーサービス106は、アプリケーションプロセス104によるファイル112aへのアクセスを拒否し得る。
【0068】
実施形態において、ブローカーサービス106は、図11に係るフローチャート900を実行し得る。図11は、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャート1100を示す。さらなる構造上および動作上の実施形態が、フローチャート1100に関する以下の説明に基づいて当業者に理解されるだろう。
【0069】
フローチャート1100は、ステップ1102から始まる。ステップ1102において、トークンとアクセス要求において要求された第1のデータのインジケーションとが受け取られる。たとえば、上述したように、ブローカーサービス106は、アクセスされることが所望されるファイルシステムデータ118のデータを示し、アプリケーションプロセス104を識別するためのプロセストークン812を含む、データアクセス114を受け取り得る。動作は、ステップ1102からステップ1104へと進む。
【0070】
ステップ1104において、第1のデータのファイルタイプが決定される。たとえば、データアクセス114において示されたデータ要求に基づいて、ブローカーサービス106は、要求されたデータのファイルタイプを決定し得る。ブローカーサービス106は、データアクセス114に含まれる要求されたデータのファイル拡張子(たとえば、.txt、.wav、.mpeg等といった拡張子)により、ストレージ108における要求されたデータにアクセスして要求されたデータのファイル拡張子を決定することにより、および/または、他の技法により、要求されたデータのファイルタイプを決定し得る。動作は、ステップ1104からステップ1106へと進む。
【0071】
ステップ1106において、アプリケーションのための記録されたファイルタイプが、セキュアな場所においてアクセスされる。たとえば、実施形態において、ブローカーサービス106は、データアクセス114に含まれたアプリケーションプロセス104のセキュリティ識別子522を決定し得る。ブローカーサービス106は、セキュアな記憶場所504に記憶されたアプリケーションプロセス104のためのファイルタイプ518を、決定されたセキュリティ識別子522とのそれらの関連づけによって識別し得る。ブローカーサービス106は、セキュアな記憶場所504から、識別されたファイルタイプ518を検索し得る。動作は、ステップ1106からステップ1108へと進む。
【0072】
ステップ1108において、第1のデータのファイルタイプが、記録されたファイルタイプに含まれるかどうか、が決定される。たとえば、実施形態において、ブローカーサービス106の条件マッチングロジック1002は、(ステップ1104において決定された)要求されたデータの決定されたファイルタイプが、(ステップ1006においてアクセスされた)ファイルタイプ518に関する条件と一致するかどうか、を決定するように構成される。たとえば、条件マッチングロジック1002は、要求されたデータの決定されたファイルタイプが、ファイルタイプ518に含まれるファイルタイプと等しいかどうか、を決定し得る。要求されたデータのファイルタイプが、記録されたファイルタイプに含まれない場合、動作は、ステップ1108からステップ1110へと進む。要求されたデータのファイルタイプが、記録されたファイルタイプに含まれる場合、動作は、ステップ1108からステップ1112へと進む。
【0073】
ステップ1110において、アプリケーションプロセスによる第1のデータへのアクセスが拒否される。要求されたデータのファイルタイプがファイルタイプ518のうちの1つと等しくないと決定された場合、アプリケーションプロセス104による要求されたデータへのアクセスは、ブローカーサービス106によって拒否され得る。たとえば、アプリケーションプロセス104が特定のデータ(たとえば、特定のファイル等)を要求している場合、アプリケーションプロセス104は、特定のデータへのアクセスを阻止され得、データアクセス114の拒否が、ブローカーサービス106によってアプリケーションプロセス104に示され得る。別の例において、アプリケーションプロセス104が、特定のフォルダのコンテンツのインジケーションを要求している場合、アクセス不可能なファイルタイプを有するフォルダのファイルは、ブローカーサービス106によってアプリケーションプロセス104に見えないようにされ得る。フローチャート1100の動作は、ステップ1110が実行された後に完了する。
【0074】
ステップ1112において、アプリケーションは、第1のデータへのアクセスを可能にされる。要求されたデータのファイルタイプがファイルタイプ518のうちの1つに等しいと決定された場合、アプリケーションプロセス104による要求されたデータへのアクセスは、ブローカーサービス106によって許可されることができ、要求されたデータは、応答データ116においてブローカーサービス106により、アプリケーションプロセス104に提供され得る。実施形態において、アプリケーションプロセス104は、ストレージ108から直接的に応答データ116を受け取ることを可能にさせられるのではなく、ブローカーサービス106によって応答データ116を提供されることができる、ということに注意すべきである。このように、アプリケーションプロセス104のセキュリティ/特権レベルは、アプリケーションプロセス104が応答データ116を受け取るために上げられる必要はない。フローチャート1100の動作は、ステップ1112が実行された後に完了する。
【0075】
たとえば、例示的な目的のために提供される一例において、アプリケーションプロセス104は、ファイル名/c:のパス/ホーム/ユーザ/ユーザファイル.docを有するファイルを要求するためにデータアクセス114を送り得る。ブローカーサービス106は、ファイル名/パスと、アプリケーションコンテナ806/アプリケーションプロセス104のためのセキュリティ識別子522とを含む、データアクセス114を受け取り得る。ブローカーサービス106は、このファイル名/パスのファイルタイプが「.doc」である、と決定し得る。ブローカーサービス106は、アプリケーションコンテナ806/アプリケーションプロセス104のためのセキュリティ識別子522に関連づけられたファイルタイプ518にアクセスし得る。この例において、ファイルタイプ518は、「.doc」、「.docx」、「.txt」、および「.wpd」のファイル拡張子を含み得る。条件マッチングロジック1002は、要求されたデータの「.doc」のファイルタイプが、ファイルタイプ518のファイル拡張子と等しい、と決定し得る。したがって、ブローカーサービス106は、応答データ116においてアプリケーションプロセス104に、ファイル名/c:のパス/ホーム/ユーザ/ユーザファイル.docを有するファイルを提供し得る。
【0076】
したがって、さまざまな特徴および利点が、実施形態によって提供される。たとえば、ブローカーサービス106は、アプリケーションコンテナに含まれたアプリケーションプロセスのためのファイルシステム抽象化を提供する。ブローカーサービス106は、静的に宣言されたファイルタイプを使用して、アプリケーションプロセスによるデータアクセスを限定する。インストールされると、宣言されたファイルタイプが、ブローカーサービス106によって記録される。(アプリケーションコンテナにおいて)隔離されたアプリケーションプロセスは、セキュリティ識別子を使用して、アプリケーションプロセスがファイルシステムの離散部分(たとえば、ドキュメントライブラリ、取り外し可能なストレージ等)へのアクセスを有することをブローカーサービス106に通信する。このように、アプリケーションのためのファイルシステムデータへのフィルタリングされたアクセスが提供される。ブローカーサービス106のインスタンスが、(複数のブローカーサービス106が存在し得るように)コンピューティングデバイス102で各ユーザのために提供され得るか、または、単一のブローカーサービス106が、すべてのユーザを取り扱い得る、ということに注意すべきである。ブローカーサービス106は、単一のアプリケーションを取り扱うか、または、複数のアプリケーションを同時に取り扱うように構成され得る。
【0077】
III.例示的なコンピューティングデバイスの実施形態
ブローカーサービス106、処理ロジック502、アプリケーションインストーラ506、ファイルタイプ記録モジュール508、識別子生成部520、アプリケーション部802、トークン生成部804、条件マッチングロジック1002、フローチャート300、フローチャート400、フローチャート700、フローチャート900、およびフローチャート1100は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実現され得る。たとえば、ブローカーサービス106、処理ロジック502、アプリケーションインストーラ506、ファイルタイプ記録モジュール508、識別子生成部520、アプリケーション起動部802、トークン生成部804、条件マッチングロジック1002、フローチャート300、フローチャート400、フローチャート700、フローチャート900、および/またはフローチャート1100は、1つ以上のプロセッサにおいて実行されるように構成されたコンピュータプログラムコードとして実現され得る。あるいは、ブローカーサービス106、処理ロジック502、アプリケーションインストーラ506、ファイルタイプ記録モジュール508、識別子生成部520、アプリケーション起動部802、トークン生成部804、条件マッチングロジック1002、フローチャート300、フローチャート400、フローチャート700、フローチャート900、および/またはフローチャート1100は、ハードウェアロジック/電気回路として実現され得る。たとえば、実施形態において、ブローカーサービス106、処理ロジック502、アプリケーションインストーラ506、ファイルタイプ記録モジュール508、識別子生成部520、アプリケーション起動部802、トークン生成部804、条件マッチングロジック1002、フローチャート300、フローチャート400、フローチャート700、フローチャート900、および/またはフローチャート1100のうちの1つ以上は、システムオンチップ(SoC)に実装され得る。SoCは、その機能を実行するための、プロセッサ(たとえば、マイクロコントローラ、マイクロプロセッサ、デジタルシグナルプロセッサ(DSP)等)、メモリ、1つ以上の通信インターフェース、および/または、さらなる回路および/または埋め込まれたファームウェア、のうちの1つ以上を含む、集積回路チップを含み得る。
【0078】
図12は、本発明の実施形態が実現され得るコンピュータ1200の例示的な実現を示す。たとえば、コンピューティングデバイス102は、コンピュータ1200の1つ以上の特徴および/または代替の特徴を含む、コンピュータ1200と同様のコンピュータシステムにおいて実現されることができる。コンピュータ1200は、たとえば、従来のパーソナルコンピュータ、モバイルコンピュータ、サーバ、またはワークステーションの形態の汎用コンピューティングデバイスであることができ、または、コンピュータ1200は、専用コンピューティングデバイスであることができる。本明細書で提供されるコンピュータ1200の説明は、例示の目的で提供され、限定を意図するものではない。本発明の実施形態は、当業者に周知であるように、さらなるタイプのコンピュータシステムにおいて実現されることができる。
【0079】
図12に示すように、コンピュータ1200は、1つ以上のプロセッサ1202と、システムメモリ1204と、システムメモリ1204を含むさまざまなシステムコンポーネントをプロセッサ1202に結合するバス1206と、を含む。バス1206は、メモリバスまたはメモリコントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および、さまざまなバスアーキテクチャのうちのいずれかを使用するプロセッサまたはローカルバス、を含むいくつかのタイプのバス構造のいずれかの1つ以上を表す。システムメモリ1204は、読み出し専用メモリ(ROM)1208およびランダムアクセスメモリ(RAM)1210を含む。ベーシックインプット/アウトプットシステム1212(BIOS)は、ROM1208に記憶される。
【0080】
コンピュータ1200はまた、以下のドライブ、すなわち、ハードディスクに読み書きするためのハードディスクドライブ1214、取り外し可能な磁気ディスク1218に読み書きするための磁気ディスクドライブ1216、および、CD ROM、DVD ROM、または他の光学媒体といった取り外し可能な光学ディスク1222に読み書きするための光学ディスクドライブ1220、のうちの1つ以上を有する。ハードディスクドライブ1214、磁気ディスクドライブ1216、および光学ディスクドライブ1220は、それぞれ、ハードディスクドライブインターフェース1224、磁気ディスクドライブインターフェース1226、および光学ドライブインターフェース1228によって、バス1206に接続される。ドライブおよびそれらに関連づけられたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータのための他のデータの、不揮発性ストレージを提供する。ハードディスク、取り外し可能な磁気ディスク、および取り外し可能な光学ディスクが説明されるが、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)等といった、他のタイプのコンピュータ可読記憶媒体が、データを記憶するために使用されることができる。
【0081】
多数のプログラムモジュールが、ハードディスク、磁気ディスク、光学ディスク、ROM、またはRAMに記憶され得る。これらのプログラムは、オペレーティングシステム1230、1つ以上のアプリケーションプログラム1232、他のプログラムモジュール1234、およびプログラムデータ1236を含む。アプリケーションプログラム1232またはプログラムモジュール1234は、たとえば、ブローカーサービス106、処理ロジック502、アプリケーションインストーラ506、ファイルタイプ記録モジュール508、識別子生成部520、アプリケーション起動部802、トークン生成部804、条件マッチングロジック1002、フローチャート300、フローチャート400、フローチャート700、フローチャート900、および/またはフローチャート1100(フローチャート300、400、700、900、および1100の任意のステップを含む)、および/または、本明細書に説明されるさらなる実施形態、を実現するためのコンピュータプログラムロジック(たとえば、コンピュータプログラムコード)を含み得る。
【0082】
ユーザは、キーボード1238およびポインティングデバイス1240のような入力デバイスによってコンピュータ1200へコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等を含み得る。これらのおよび他の入力デバイスは多くの場合、バス1206に結合されたシリアルポートインターフェース1242によってプロセッサ1202に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)といった、他のインターフェースによって接続されることもできる。
【0083】
ディスプレイデバイス1244もまた、ビデオアダプタ1246のようなインターフェースを介してバス1206に接続される。モニタに加えて、コンピュータ1200は、スピーカーおよびプリンタといった、他の周辺機器出力デバイス(図示せず)を含み得る。
【0084】
コンピュータ1200は、アダプタまたはネットワークインターフェース1250、モデム1252、またはネットワークを介して通信を確立するための他の手段によって、ネットワーク1248(たとえば、インターネット)に接続される。モデム1252は、内部または外部であることができ、シリアルポートインターフェース1242を介してバス1206に接続される。
【0085】
本明細書で使用される場合、「コンピュータプログラム媒体」、「コンピュータ可読媒体」、および「コンピュータ可読記憶媒体」という用語は一般的に、ハードディスクドライブ1214に関連づけられたハードディスク、取り外し可能な磁気ディスク1218、取り外し可能な光学ディスク1222、といった媒体だけでなく、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)等といった他の媒体のことを言うために使用される。そのようなコンピュータ可読記憶媒体は、通信媒体と区別され、かつ重複しない(通信媒体を含まない)。通信媒体は典型的に、搬送波のような変調されたデータ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを組み込む。「変調されたデータ信号」という用語は、信号中に情報を符号化するようにその特徴のうちの1つ以上が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、音響、RF、赤外線、および他の無線媒体といった、無線媒体を含む。実施形態はまた、そのような通信媒体に関する。
【0086】
上述したように、(アプリケーションプログラム1232および他のプログラムモジュール1234を含む)コンピュータプログラムおよびモジュールは、ハードディスク、磁気ディスク、光学ディスク、ROM、またはRAMに記憶されることができる。そのようなコンピュータプログラムはまた、ネットワークインターフェース1250またはシリアルポートインターフェース1242を介して受け取られることができる。そのようなコンピュータプログラムは、アプリケーションによって実行またはロードされると、コンピュータ1200に、本明細書に説明された本発明の実施形態の特徴を実現することを可能にさせる。したがって、そのようなコンピュータプログラムは、コンピュータ1200のコントローラを表す。
【0087】
本発明はまた、任意のコンピュータ使用可能媒体に記憶されたソフトウェアを備えるコンピュータプログラム製品に関する。そのようなソフトウェアは、1つ以上のデータ処理デバイスにおいて実行されると、データ処理デバイスを本明細書に説明したように動作させる。本発明の実施形態は、現在または将来的に周知の、任意のコンピュータ使用可能媒体またはコンピュータ可読媒体を用いる。コンピュータ可読媒体の例は、RAM、ハードドライブ、フロッピー(登録商標)ディスク、CD ROM、DVD ROM、ジップディスク、テープ、磁気ストレージデバイス、光学ストレージデバイス、MEM、ナノテクノロジーに基づいたストレージデバイス等といったストレージデバイスを含むが、これらに限定されるものではない。
【0088】
VI.結論
本発明のさまざまな実施形態が上述されたが、それらは限定ではなく例として提示されているにすぎない、ということが理解されるべきである。形態および詳細のさまざまな変更が添付の特許請求の範囲で定義される本発明の精神および範囲から逸脱せずに実施形態で行われ得ることが、当業者によって理解されるだろう。したがって、本発明の広さおよび範囲は、上述した例示的な実施形態のいずれかによって限定されるべきでなく、以下の特許請求の範囲およびそれらの均等物によってのみ定義されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12