説明

統合されたアクセス認可

【課題】アクセス制御のチェックを実行するファシリティを提供すること。
【解決手段】ファシリティは、コンピュータ上で実行されているオペレーティングシステムの不可欠な部分として実行され、およびプリンシパルが資源にアクセスする認可を有するかどうかを決定する認可の問い合わせを受け取る。ファシリティは、集中されたポリシーの記憶装置に保持され、プリンシパルに適用可能なポリシーを適用して、資源にアクセスする認可が存在するかどうかを決定する。ファシリティは、認可の問い合わせの監査に基づいてイベントを始動することができ、資源にアクセスする認可の表示を監査ログに記録することもできる。ファシリティは、認可の問い合わせが本質的に危険な操作を実行する認可の要求であるかどうかを決定し、本質的に危険な操作を実行する認可の表示を監査ログに記録することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般には、コンピュータセキュリティに関し、より詳細には、コンピュータシステム上の資源(resource)へのアクセスを制御することに関する。
【背景技術】
【0002】
コンピュータおよびコンピュータネットワークに対する攻撃の高度の複雑化および頻発とともに、コンピュータおよびコンピュータネットワークへの依存が増大するにつれて、コンピュータセキュリティの問題は、産業界において益々顕著になっている。現状のコンピュータセキュリティ技術は、コンピュータシステムに特に損傷を与えまたは中断させるように設計された、悪性ソフトウエア(「マルウエア(malware)」、例えば、ウイルス、ワーム、およびトロイの木馬などから、および他の望ましくない活動から、アプリケーションプログラムおよびオペレーティングシステムを保護するのには不十分である。
【0003】
既存のアクセス制御のセキュリティモデルは、通常、コンピュータ上の資源へのアクセスを認可するユーザの資格証明(credentials)に頼っている。これらのモデルにおいては、ユーザに対して利用可能なすべての資源にプロセスがアクセスする必要があるかどうかにかかわらず、同一の資格証明で遂行または実行されるすべてのプロセスに、同一のアクセス権が与えられる。また、資源へのアクセス、例えば、読取り、書込みなどを必要とするプロセスは、資源にアクセスするときに、必要なアクセスを指定する。
【0004】
例えば、ユーザは、ユーザアカウントでパーソナルコンピュータにログオンして、結果としてパーソナルコンピュータに記憶され、および特定のワードプロセシングプログラムを使用して作成された、すべてのワードプロセシング文書にアクセスできることを期待する。この期待を満足させるために、従来のアクセス制御セキュリティシステムは、ユーザの文脈で実行されているすべてのプログラムに、ワードプロセシング文書のすべてにアクセスする許可を与える。しかしながら、これは、過剰なレベルの許可であり、なぜならば、ワードプロセシングプログラム以外のユーザの文脈において実行されているほとんどのプログラムは、実際にはワードプロセシング文書のいずれにもアクセスする必要がないからである。
【発明の概要】
【発明が解決しようとする課題】
【0005】
通常、マルウエアは、コード欠陥を利用することによってプロセスに感染する。危うくされたプロセスの内部でマルウエアが実行されると、プロセスが実行されているユーザのコンテキストのアクセス権を引き継ぎ、ユーザに対して利用可能なすべての資源に対するアクセスを得るが、それは元のプロセスがかつて必要としたものよりはるかに大きくなる可能性がある。
【0006】
したがって、コンピュータ上の資源のセキュリティを改善しかつ増強するアクセス認可(access authorization)に対する統合アプローチは、有用性が高いといえる。
【課題を解決するための手段】
【0007】
コンピュータシステム上のアプリケーションプログラムおよびオペレーティングシステムの利用から発生する逆効果からコンピュータシステムを保護するソフトウエアファシリティ(「ファシリティ(facility)」)について述べる。いくつかの実施形態において、ファシリティは、オペレーティングシステムの不可欠の部分として実現され、およびオペレーティングシステムに論理駆動のアクセス制御レイヤ(logic−driven access control layer)を追加する。例えば、ファシリティは、オペレーティングシステムのアクセス制御機構に不可欠の方法として実現される。
【0008】
ファシリティは、セキュリティに敏感な(security−sensitive)種々の資源アクセスに関する認可の問い合わせを受け取って、集中されたポリシーに基づいて資源アクセスを許可または拒否する決定を返す。ポリシーは、一例としてネットワーク、ファイルシステム、アプリケーションプログラムなどの資源を管理し、かつ保護する方法を決定する1組の規則および慣行である。集中されたポリシーの記憶装置において、ポリシーの規則は集中的に配置されており、規則および/またはポリシーを集中的に呼び出し、かつ集中的に設定することが可能となる。これは、分散型またはオブジェクト単位(per−object)のアクセス制御モデルとは対照的に、通常、物理オブジェクトに結び付けられたアクセス制御リストを使用して実現される。
【0009】
認可モジュールは、ユーザモードプログラム、例えばユーザ文脈で実行中のアプリケーションプログラムなど、が発行する資源へのアクセス要求に応ずる、様々なオペレーティングシステム構成要素が直接的に問い合わせをすることができる。代替的には、認可モジュールは、そのようなオペレーティングシステム構成要素の上部に位置する「インターセプションレイヤ(interception layer)」によって問い合わせをすることができる。インターセプションレイヤは、リソースにアクセスするためにユーザモードプログラムが使用するシステムコールファンクションを中断し、中断されたシステムコールファンクションに「ラッパー(wrapper)」を適用するコードである。認可モジュールは、そのアクセス制御決定(すなわち、許可または拒否)を、資源アクセスを試みているアプリケーションプログラム、例えばアプリケーションプロセスの識別(identity)またはアプリケーションプログラムの識別とアプリケーションが実行されているユーザの識別との組合せのいずれかであり、およびプリンシパルに適用されるポリシーである、プリンシパルの識別に基づいて行う。
【0010】
実施形態において、ファシリティは監査機能を提供する。例えば、ポリシーは、認可が許可(例えば、授与)されるか、または拒否(例えば、阻止)されるかにかかわらず、特定の動作を監査の対象として指示することによって、エントリが監査ログに加えられるようにすることができる。このエントリには、不適合規則(failed rule)、資源またはオブジェクト、およびプリンシパルの表示を含めることができる。本質的に危険な操作などの、ある特定の操作に対しては、そのエントリには、規則、その規則が許可されたか拒否されたか、資源またはオブジェクト、およびプリンシパルの表示を含めることができる。ファシリティは、さらに、監査に基づいてイベント(event)を始動することができる。例えば、ファシリティは、プリンシパル(例えば、アプリケーションプログラムおよび/またはユーザ)またはその他の当事者に、不適合規則または本質的に危険な操作の通知または表示を提供することができる。
【0011】
実施形態において、ファシリティは、ファシリティが規則を適用する代わりに、規則を試験するか、または規則を報告する学習モード機能を提供する。例えば、ポリシーの規則は、動作を実行する認可要求を拒否することを指定することができる。学習モードが、例えば、ポリシーの著者によって、規則に対して起動される場合には、ファシリティは、動作を実行する認可の要求を拒否する代わりに、動作を実行する認可を許可または授与するとともに、イベントを生成して、動作を実行する認可要求は拒否されたであろうことを指示する。ファシリティは、例えば、阻止されるであろう規則、動作を要求する前のアプリケーションプログラムの状態などを示す報告を生成することができる。学習モード機能は、ポリシーの微調整を容易にする。例えば、ポリシーの著者は、報告を分析して、ポリシー内の規則の制限をより多くするかまたは少なくする必要があるかどうかの決定を行うことができる。
【0012】
実施形態において、ファシリティは、段階アクセス(tiered access)制御のチェックの一部として実行される。ここで、ファシリティは、一連のアクセス制御のチェックの一部として、ポリシーチェックを実行する。例えば、資源要求が行われると、最初に従来型アクセス制御機構が呼び出されて、要求された資源に対する認可があるかどうかが決定される。従来型アクセス制御機構が要求された資源に対する認可があるとの最初の決定に続いて、ファシリティが呼び出されて、そのポリシーをチェックして、要求された資源に対する認可があるかどうかを決定することができる。続いて、1つまたは複数のさらなるアクセス制御チェックを追加で呼び出して、要求された資源に対する認可があるかどうかを最終的に決定することができる。
【図面の簡単な説明】
【0013】
【図1】ファシリティが実行される、少なくとも一部のコンピュータシステムに通常組み込まれる、選ばれた構成要素を例示するブロック図である。
【図2】いくつかの実施形態による、ファシリティの選ばれた構成要素を例示するブロック図である。
【図3】いくつかの実施形態による、ファシリティが使用するのに適当な事例のポリシーを例示する図である。
【図4】いくつかの実施形態による、拒否されたアクセス要求の監査をファシリティが実行する方法を例示するフローチャートである。
【図5】いくつかの実施形態による、本質的に危険な動作の監査をファシリティが実行する方法を例示するフローチャートである。
【図6】いくつかの実施形態による、ポリシーの微調整を容易にする学習をファシリティが実行する方法を例示するフローチャートである。
【図7】いくつかの実施形態による、段階アクセス制御のチェックをファシリティが提供する方法を例示するフローチャートである。
【図8】いくつかの実施形態による、アプリケーションプログラムのセキュリティリスクのレベルをファシリティが決定する方法を例示するフローチャートである。
【図9】いくつかの実施形態による、異常検出時により制限的なポリシーをファシリティが課する方法を例示するフローチャートである。
【図10】いくつかの実施形態による、異常検出時にポリシーをファシリティが課する方法を例示するフローチャートである。
【発明を実施するための形態】
【0014】
ファシリティの様々な実施形態およびその利点は、図面の図1〜17を参照することによって最もよく理解できる。図面の要素は、必ずしも比例して拡大縮小せず、代わりに本発明の原理を明確に説明することに重点をおいている。図面全体を通して、様々な図面の同一部品および対応部品には、同一番号を使用している。
【0015】
図1は、ファシリティが実行される、少なくとも一部のコンピュータシステムに通常、組み込まれている、選択された構成要素を例示するブロック図である。これらのコンピュータシステム100には、コンピュータプログラムを実行するための1つまたは複数の中央処理ユニット(CPU)102;プログラムおよびデータ―データ構造を含む―をそれらが使用されている間に記憶するためのコンピュータメモリ104;プログラムおよびデータを永続的に記憶するハードドライブなどの永続的な記憶装置106;コンピュータ読取可能な媒体に記憶されたプログラムおよびデータを読み取るためのCD−ROMドライブなどのコンピュータ読取可能な媒体の駆動装置108;およびプログラムおよび/またはデータ―データ構造を含む―を交換するために、インターネットを介するなどして、コンピュータシステムを他のコンピュータシステムに接続する、ネットワーク接続110を含めることができる。
【0016】
ファシリティは、コンピュータシステム100またはその他のデバイスによって実行されるプログラムモジュールのような、コンピュータ読取可能な命令の一般的文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。メモリ104および永続的な記憶装置106は、ファシリティを実現する命令を収容することができるコンピュータ読取可能な媒体である。ここで、メモリ104および永続的な記憶装置106は、ファシリティを実現する命令に加えて、様々なその他の内容を含むことがあることが認識されるであろう。
【0017】
ここで、コンピュータシステム100には、ビデオモニタまたはLCDパネルなどの、プログラム出力を指示する1つまたは複数の表示デバイス、およびキーボード、マイクロフォン、またはマウスなどのポインティングデバイスなどの、ユーザ入力を受信する1つまたは複数の入力デバイスを含めることができることが認識されるであろう。通常、上述のように構成されたコンピュータシステム100がファシリティの動作をサポートするのに使用されるが、ファシリティは、様々なタイプおよび構成にするとともに、様々な構成要素を有するデバイスを使用して実現することができることが認識されるであろう。
【0018】
図2は、いくつかの実施形態による、ファシリティの選ばれた構成要素を示すブロック図である。図2に示すように、ファシリティは認可モジュール202を含み、このモジュールは、コンピュータシステム100上で実行するのに適したオペレーティングシステム204の一体化構成要素として実現される。認可モジュール202は、一般に、ネットワークフェーシングアプリケーション、ネットワークフェーシングサービスおよびオペレーティングシステム構成要素などの高リスクプロセス、信用できない内容を取り扱うアプリケーション、ならびに信用できないコード、例えば、通常、インターネットによって配信されるコードなどに対する、追加の保護レイヤ(protection layer)として機能する。認可モジュール202は、コンピュータシステム100上で利用可能な資源のポリシー駆動アクセス制御を実行するための論理を提供する。
【0019】
ファシリティは、また、認可モジュール202がそのアクセス制御決定をそれから行うポリシー206を含む。ポリシー206は、資源へのアクセスの認可要求を許可するか、または拒否するかを決定する規則である。いくつかの実施形態においては、ポリシー206は、オペレーティングシステム204および、特に、認可モジュール202によって施行される実行時規則、例えばバイナリ規則にコンパイルされる。いくつかの実施形態においては、ポリシー206は、集中ポリシー記憶装置(centralized policy store)の一部として実現されて、この集中ポリシー記憶装置は、例えばユーザおよび/または管理者が、ポリシー206内の規則を含みポリシー206を、中央から取り消したり、中央から設定したりすることを可能にする。
【0020】
認可モジュール202は、様々なオペレーティングシステムカーネル構成要素208が問い合わせをすることが可能であり、これらのカーネル構成要素は、プリンシパル、例えばプリンシパル212aが出す資源へのアクセス要求に答える。また、認可モジュール202の問い合わせは、資源にアクセスするためにプリンシパル、例えばプリンシパル212bが出すシステムコールファンクションを中断する、インターセプションレイヤ210が行うこともできる。インターセプションレイヤ210は、中断されたシステムコールファンクションにラッパー(wrapper)を適用して、認可モジュール202が適用可能なポリシー206に対するアクセス制御のチェックを実行することを可能にする。例えば、ラッパーを適用することには、プリンシパルおよび/またはコンピューティングシステム100に関連する様々な環境要因の識別を決定すること、およびこの情報を認可要求の一部として供給して、認可モジュール202へのシステムコールを実行してそれがアクセス制御のチェックを実行することを可能にすることが含まれる。さらに、認可モジュール202は、プリンシパル、例えばプリンシパル212cが直接的に問い合わせをすることもできる。
【0021】
実施形態によっては、認可モジュール202が実行するアクセス制御のチェックは、資源へのアクセス要求を行っているプリンシパルおよびそのプリンシパルに適用するポリシーの関数である。すなわち、認可モジュール202は、そのアクセス制御決定(すなわち、許可または拒否)を、プリンシパルの識別―コールしているアプリケーションプログラムの識別、またはコールしているアプリケーションプログラムの識別とそのためにそのアプリケーションプログラムが実行されているユーザの識別との組合せ―およびプリンシパルに適用可能なポリシーにおける規則に基づいて行う。実施形態によっては、認可モジュール202は、プリンシパルの識別および、そのアクセス制御決定を行う際のプリンシパルに適用可能なポリシーにおける規則の識別に加えて、一例として、要求アクセスのタイプ、環境因子―例えば、アプリケーションプログラムが実行されている、企業ネットワーク内部または公共ネットワークに接続されたコンピュータ、コンピュータのパッチレベル、その他―などのパラメータをさらに考慮することができる。
【0022】
実施形態によっては、ファシリティには、図2に破線または「断続線」によって示されている、任意選択の異常検出(anomaly detection)モジュール214を含めることができる。異常検出モジュール214は、異常状態を検出するために、全体的には、コンピュータシステム100の挙動およびコンピュータシステム100で実行されているプログラムを監視する機能を果たす。実施形態によっては、異常検出モジュール214は、異常の検出時に第1の通知を、先に検出された異常の停止検出時に、後続の第2の通知を、ファシリティに提供する。これによって、ファシリティは、異常検出時に、異常が終了するまでポリシー206の施行を起動することが可能となり、それ以後は、ポリシー206はもう施行されない。代替的に、ファシリティは、異常が検出されるまでより制限の少ないポリシーの組を最初に課してもよく、この場合には、異常が終了して再び制限の少ないポリシーの組が再び施行されるまで、より制限的なポリシーの組が施行される。異常検出モジュール214は、コンピュータシステム100上で実行される単一プロセス、コンピュータシステム100上で実行されるプロセス群、またはコンピュータシステム100全体のいずれかにおいて異常を検出することができる。
【0023】
上述のファシリティの態様は、説明のためだけのものであり、図示した構成要素の実現および/またはファシリティの使用もしくは機能性の範囲に関する限定を意味するものではない。例えば、いくつかの実施形態によっては、認可モジュール202は、オペレーティングシステム204の一部として、またはそれに一体化して実現する必要はなく、オペレーティングシステム204と分離して、またはその外部に、例えば非オペレーティングシステムプログラムとして実現することができる。さらに、いくつかの実施形態においては、ポリシー206は集中ポリシー記憶装置として、またはその一部として実現する必要はない。したがって、ポリシー206は、1つの場所にある必要はなく、例えば、分散モデルを使用して実現することができる。さらに、ポリシー206は、認可モジュール202の一部として、またはそれに収容されるものとして記述してあるが、ポリシー206は、認可モジュール202によってアクセス可能ありさえすれば十分である。
【0024】
以下の考察においては、ファシリティの実施形態は、様々な実証例と一緒に記述する。ここで、ファシリティの実施形態は、様々な観点でこれらの例から大きく外れる環境において使用できることが認識されるであろう。
【0025】
図3は、いくつかの実施形態による、ファシリティによる使用に適当な例示ポリシーを示す。例示ポリシーには、ウエブサーバアプリケーションを保護する規則が含まれる。一例として、アイテム302と表示されている、資源を要求するアプリケーションプロセスがチェックされて、それがアイテム304と表示されている、WebServerXウエブサーバプロセスであるかどうかが決定される。認可モジュール202が、要求元アプリケーションプロセスはWebServerXウエブサーバプロセスであると決定する場合には、認可モジュール202は、ポリシー内に含まれる規則に基づいて、要求された資源に対する認可を許可または拒否する。
【0026】
図示するように、例示ポリシーはWebServerXプロセスに与えられる特権またはアクセス権限を包含しており、そのデフォルトは、規則306に示すように、その特権またはアクセス権限が指定されない限り、要求された資源に対する認可を拒否することである。言い換えると、要求された資源がポリシーにおいて明示的に与えられていない限り、要求された資源に対する認可は拒否される。実施形態によっては、ポリシーは、アクセス制限を指定する規則、例えば特定の動作を実行する認可を拒否すべきことを指定する規則、または資源へのアクセスの認可を拒否する規則、あるいは監査を行わせる、例えばイベントをログ記録させる規則を包含することができる。
【0027】
例示ポリシーにおける第1の規則は、WebServerXプロセスが、アイテム308で示す、「$html」ファイルを、アイテム310で示す、「$Webディレクトリ」に書き込むことを許可する命令である。「$html」は、例えば*.html、*.gif、その他のファイル種類の集合の表現である。「$Webディレクトリ」は、ウエブディレクトリとして構成されたディレクトリの集合の表現であり、セキュリティ管理者などのポリシーの製作者とは異なる、ウエブ管理者などの管理者による定義が可能である。例えば、認可モジュール202は、この規則に基づいて、パラメータ「$html」で定義される種類のファイルを、パラメータ「$Webディレクトリ」で定義される種類のディレクトリの1つに書き込む要求をしているWebServerXプロセスに応答して、許可決定(すなわち、認可の授与)を返す。したがって、ポリシー内の規則を、「$Webディレクトリ」のような動的かつ独立に定義されたオブジェクト群、および「$html」のような動的で構成可能な環境パラメータに適用することができる。
【0028】
例示ポリシーにおける第2の規則は、それがアイテム314で示す「ユーザA」のために実行されている場合には、WebServerXプロセスが、アイテム312で示す、「$FTPアップロードディレクトリ」に書込みをすることを許可する命令である。例えば、認可モジュール202は、この規則に基づいて、「$FTPアップロードディレクトリ」への書込み要求をしているユーザAのために実行されているWebServerXプロセスに応答して、許可決定(すなわち、認可の授与)を返す。
【0029】
例示ポリシーにおける第3の規則は、アイテム316で示す、内向きhttpトラフィックを許可する命令である。例えば、認可モジュール202は、この規則に基づいて、内向きhttpデータを受信すること、例えばネットワーク接続上を伝送される、httpデータパケットを受信することを要求しているWebServerXプロセスに応答して、許可決定(すなわち、認可の授与)を返す。
【0030】
例示ポリシーにおける第4の規則は、アイテム320で示す、可変「$FTP」が使用可能である場合に、アイテム318で示す「FTPトラフィック」を許可する命令である。ここで、「$FTP」は変数であり、ポリシーを作成したセキュリティ管理者とは異なる管理者が設定することができる。例えば、認可モジュール202は、実行時のチェックを実行して、変数「$FTP」が使用可能であるかどうかを決定し、そうであれば、この規則に基づいて、パラメータ「FTPトラフィック」によって定義されるデータを送信または受信することを要求するWebServerXプロセスに応答して、許可決定(すなわち、認可の授与)を返す。一方、「$FTP」が使用可能でない場合には、前述のアクセス要求に応答して、認可モジュール202はアイテム306で示す拒否決定(すなわち、認可の拒否)を返す。
【0031】
ポリシーには、上記の例示特権で示したアプリケーションプロセスなどの、オペレーティングシステム内部および外部のオブジェクトに対する特権を定義する、規則を含めることができるが認識されるであろう。ポリシー内の規則は、コンパイル式またはインタープリタ式コンピュータ言語を使用する書込みコードと同様の、リッチスキーマ(rich schema)を使用して指定することができる。例えば、このスキーマは、条件および一時的条件、例えば「Yであるときだけ、Xを許可する」など、動的に構成可能な環境パラメータおよび変数への依存性、環境因子への依存性、その他を規則に含めることをサポートすることができる。さらに、パラメータの使用によって、現在および将来のオブジェクトに適用する規則の作成が容易になる。例えば、特定の種類の文書を、パラメータで表現することが可能であり、そのパラメータを使用して、現在存在するものであれ、将来作成されるものであれ、その特定の種類のすべての文書に適用する制限を指定する規則を作成することができる。実施形態によっては、ポリシーが指定することによって、ある決定は、例えばポップアップダイアログボックスによって、エンドユーザに決定を委ねられるようにすることができる。
【0032】
図4は、いくつかの実施形態による、拒否されたアクセス要求の監査をファシリティが実施する方法400のフローチャートを示している。一例として、あるユーザ(例えば、ユーザABC)が、コンピュータにログオンして、ワードプロセシングアプリケーション(例えば、WPApp)を開始しており、コンピュータ上のディレクトリ(例えば、YZDir)に記憶されているファイル(例えば、FileX)を開くことを要求している。その結果として、WPAppは、ディレクトリYZDirに記憶された資源FileXへのアクセス要求を出す。開始ステップから始まり、認可モジュール202は、ステップ402において、認可問い合わせ、例えばYZDirに記憶されたFileXへのアクセスの認可要求を受信する。
【0033】
ステップ404において、認可モジュール202は、YZDirに記憶されたFileXへのアクセスの認可要求しているプリンシパルを識別する。上記の例においては、プリンシパルは、WPAppであるか、またはWPAppとユーザABCの組合せのいずれかとすることができる。ステップ406において、認可モジュール202は、識別されたプリンシパルに適用可能なポリシーを、例えば、ポリシー206などの集中ポリシー記憶装置から識別するとともに、プリンシパルの識別と適用可能なポリシーに基づいてアクセス制御のチェックを実施する。ステップ408において、認可モジュール202は、ステップ406において実施されたアクセス制御のチェックの結果が、アクセスを拒否するものであるかどうかを決定する。上記の例に続いて、ステップ408において、認可モジュール202は、識別された適用可能なポリシーを分析して、ポリシーにおける規則または特権が、そのプリンシパルがYZDirに記憶されたFileXにアクセスすることを認可するかどうかを決定する。
【0034】
認可モジュール202が、適用可能なポリシーがプリンシパルに要求動作を実行することを認可すると決定する場合には、ステップ420において、認可モジュール202は、プリンシパルが要求動作を実行することが認可されたことの表示である、許可決定を返して、最終ステップへと進む。一方、適用可能なポリシーはプリンシパルが要求動作を実行することを認可しないと認可モジュール202が決定する場合には、ステップ410において、認可モジュール202は拒否決定を返し、これはプリンシパルが要求動作を実行することが認可されないことの表示である。ステップ412において、認可モジュール202は、プリンシパルにエラーストリングを返し、要求動作を実行する認可がないことをプリンシパルに通知することができる。
【0035】
ステップ414において、認可モジュール202は、監査が使用可能かどうかを決定するチェックを行う。適用可能なポリシーまたは規則に関連するフラグまたはレコードによって、監査を実施すべきかどうかを指示することができる。監査が使用可能でない場合には、認可モジュール202は、最終ステップへと進む。一方、監査が使用可能である場合には、認可モジュール202は、ステップ416において、監査ログにエントリを作成する。エントリは、拒否された要求、無効な規則、プリンシパル、および/または要求された資源を識別することができる。
【0036】
ステップ418において、認可モジュール202は、拒否要求の監査に基づいて1つまたは複数のイベントを始動することができる。例えば、認可モジュール202は、例えば電子メール、音声メール、テキストメッセージングなどを介して、セキュリティ管理者に、非認可動作を実行すること、プリンシパルによる非認可動作の実行の試みに続いてアプリケーションプロセスを終了すること、プリンシパルによる非認可動作の実行の試みに続いてより厳格なポリシーの組を課すること、その他の、プリンシパルによる試みの表示を提供することができる。それらのイベントを始動することに続いて、認可モジュール202は、最終ステップへと進む。
【0037】
当業者であれば、本明細書において開示した、これらおよびその他のプロセスならびに方法に対して、プロセスおよび方法において実行される機能は、異なる順序で実現できることを認識するであろう。さらに、概説したステップは、例示的なものにすぎず、本発明の本質から外れることなく、いくつかのステップを任意選択とすること、より少ないステップと組み合わせること、または追加のステップに拡張することができる。
【0038】
図5は、いくつかの実施形態による、本質的に危険な操作の監査をファシリティが実行する方法500のフロー図を示す。一例として、ユーザ(例えば、ユーザABC)はコンピュータにログオンして、ウエブブラウザプログラム(例えば、WebBrowser)を開始して、信用のできないウエブサイト(例えば、WebSiteY)上のウエブページ(例えば、PageX)へのアクセス要求をしている。結果として、WebBrowserは、WebSiteYからPageXを検索する要求を出す。ステップ502〜508は、実質的に方法400のステップ402〜408と同様である。
【0039】
ステップ508において、認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可しないと決定する場合には、ステップ510において、認可モジュール202は拒否決定を返し、これはプリンシパルが要求動作の実行を認可されていないことの表示である。上記の例において、WebBrowserは、信用できないサイトWebSiteYにアクセスする認可を得ることができない。ステップ512において、認可モジュール202は、エラーストリングをプリンシパルに返し、要求動作を実行する認可がないことをプリンシパルに通知することができる。エラーストリングを返した後に、認可モジュールは最終ステップへと進む。
【0040】
一方、認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可すると決定する場合には、ステップ514において、認可モジュール202は許可決定を返し、これは、プリンシパルが要求動作の実行を認可されていることの表示である。ステップ516において、認可モジュール202は、認可された動作が本質的に危険な操作であるかどうかを決定するためのチェックを行う。例えば、ファシリティは本質的に危険な操作のリストを保持することができるとともに、認可モジュール202は、このリストをチェックして、認可された動作が本質的に危険な操作としてリストされているかどうかを決定することができる。
【0041】
認可された動作が、本質的に危険な操作であることがわかった場合には、ステップ518において、認証モジュール202が監査操作を実行する。例えば、認可モジュール202は、本質的に危険な操作監査ログに、本質的に危険な操作を実行することの要求および認可の表示のエントリを作成することができる。エントリには、本質的に危険な操作を実行することの認可を要求したプリンシパルの表示を含めてもよい。認可モジュール202は、本質的に危険な操作を実行する認可によって始動をかけることができる、さらに他の動作を実行してもよい。ステップ518において監査操作を実行するのに続いて、またはステップ516において認可された動作が本質的に危険な操作ではないと決定するのに続いて、認可モジュール202は最終ステップへと進む。
【0042】
実施形態によっては、認可モジュール202は、本質的に危険な操作監査ログに、本質的に危険な操作を実行する認可要求の表示を書き込んでもよい。上記の例の続きとして、信用のできないサイトWebSiteYにアクセスすることが本質的に危険な操作であり、さらに適用可能なポリシーはWebBrowserにWebSiteYにアクセスする認可を与えないことを仮定して、認可モジュール202は、拒否決定を返し(ステップ510)、本質的に危険な操作を実行する認可要求と、その後の認可の拒否を、例えば、本質的に危険な操作監査ログに記録する。認可モジュール202は、本質的に危険な活動を実行する認可を要求したプリンシパルの表示も記録することができる。
【0043】
図6は、いくつかの実施形態による、ポリシーの微調整を容易にする学習をファシリティが実行する方法600のフロー図である。一例として、ユーザ(例えば、ユーザABC)がコンピュータ上にログオンして、ウエブブラウザプログラム(例えば、WebBrowser)を開始して、ウエブサイト(例えば、WebSiteY)上のウエブページ(例えば、PageX)へのアクセス要求をしている。その結果として、WebBrowserは、WebSiteYからPageXの検索要求を出す。ステップ602〜608は、方法400のステップ402〜408と実質的に同様である。
【0044】
ステップ608において、認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可すると決定する場合には、ステップ610において、認可モジュール202は、プリンシパルが要求動作を実行することを認可されていることの表示である、許可決定を返して、最終ステップへと進む。一方、認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可しないと決定する場合には、ステップ612において、認可モジュール202は、要求動作の実行の認可を拒否する、ポリシーにおける規則に対する学習が使用可能であるかどうかをチェックして決定する。上記の例に続いて、WebBrowserに適用可能なポリシーに、WebBrowserのインターネットへのアクセス、したがってWebSiteYへのアクセスを明確に拒否するルールを含めてもよいが、規則を適用する代わりに学習を適用する表示を提供することもできる。
【0045】
認可モジュール202が、要求動作の実行の認可を拒否する規則に対する学習は使用可能ではないと決定する場合には、ステップ618において、認可モジュール202は、拒否決定を返し、これはプリンシパルが要求動作を実行することが認可されていないことの表示である。上記の例において、WebBrowserのインターネットへの、したがってWebSiteYへのアクセスを明確に拒否する規則は、学習を適用することの表示を有していないことがある。この場合には、この規則が適用されて、WebBrowserはWebSiteにアクセスすることを拒否される。ステップ620において、認可モジュール202は、プリンシパルにエラーストリングを返し、要求動作を実行する認可がないことをプリンシパルに通知する。エラーストリングを返すのに続いて、認可モジュールは最終ステップへと進む。
【0046】
一方、ステップ612において、認可モジュール202が、要求動作を実行する認可を拒否する規則に対する学習が使用可能であると決定する場合には、ステップ614において、認可モジュール202は、無効規則の表示を学習報告ログ(learning report log)にエントリを作成する。エントリには、無効規則となった動作を実行することの認可を要求した、プリンシパルの表示を含めてもよい。ステップ616において、認可モジュール202は、プリンシパルが要求動作を実行することを認可されていることの表示である、許可決定を返して、最終ステップへと進む。すなわち、適用可能な規則を適用する代わりに、認可モジュール202は、要求動作を実行する認可を与えて、このイベントの表示を記録する。セキュリティ管理者またはその他の関心のあるユーザは、次いで、学習報告ログの内容を分析して、規則またはポリシーが制限的すぎるか、または十分に制限的ではないかを決定して、規則またはポリシーを実際に施行または実現する前に、規則またはポリシーを微調整する。
【0047】
実施形態によっては、認可モジュール202は、要求動作を実行する認可を与えた規則の表示の学習報告ログにエントリを作成することができる。上記の例に続いて、ルールが、WebBrowserがインターネット、したがってWebSiteYにアクセスすることを明確に認可するとともに、学習を適用する表示も与えることを仮定して、認可モジュール202は許可決定を返す(ステップ610)とともに、要求動作を実行することの認可を与えた規則の表示を記録する。この情報は、規則またはポリシーを微調整するのに使用することができる。例えば、報告ログのエントリから、資源にアクセスする認可が、容易に授与されすぎると決定されると、規則またはポリシーを、調節または変更して、その資源へアクセスする認可が授与される事例を減少させることができる。
【0048】
図7は、いくつかの実施形態による、段階アクセス(tiered access)制御のチェックをファシリティが提供する方法700のフロー図を示す。先の例の1つを再び参照すると、ユーザ(例えば、ユーザABC)はコンピュータにログオンして、ワードプロセシングアプリケーション(例えば、WPApp)を開始しており、コンピュータ上のディレクトリ(例えば、YZDir)内に記憶されたファイル(例えば、FileX)を開くことを要求している。その結果として、WPAppは、ディレクトリYZDirに記憶された資源FileXへのアクセス要求を出す。開始ステップから始まり、認可モジュール202は、ステップ702において、認可問い合わせ、例えば、YZDirに記憶されたFileXへのアクセスの認可要求を受信する。
【0049】
ステップ704において、ユーザのコンピュータで実行されているオペレーティングシステムは、従来のアクセス制御のチェックを実行する。上記の例に続いて、オペレーティングシステムは、ユーザがYZDirのFileXを開く(例えば、読取りアクセス)特権を有するかどうかをチェックして決定することができる。ステップ706において、オペレーティングシステムは、その従来のアクセス制御のチェック機構を使用して、FileXへのユーザアクセスを拒否すべきかどうかを決定する。
【0050】
オペレーティングシステムの従来のアクセスチェック機構が、そのユーザのFileXへのアクセスを拒否すべきであると決定すると、ステップ708において、オペレーティングシステムは、拒否決定を返して、最終ステップへと進む。この拒否決定は、ユーザが要求動作、例えばFileXを開くこと、を実行することが認可されていないことの表示である。一方、オペレーティングシステムの従来のアクセスチェック機構が、そのユーザのFileXへのアクセスを拒否すべきでないと決定する場合には、ステップ710において、認可モジュール202は、YZDirに記憶されたFileXへのアクセスの認可を要求しているプリンシパルを識別する。
【0051】
ステップ712において、認可モジュール202は、識別されたプリンシパルに適用可能なポリシーを、例えば、ポリシー206などの集中ポリシー記憶装置から識別して、プリンシパルの識別と適用可能なポリシーとに基づいてアクセス制御のチェックを実行する。上記の例に続いて、認可モジュール202は、ステップ714において識別された適用可能なポリシーを分析して、ポリシーにおける規則または特権はプリンシパルがYZDirに記憶されたFileXにアクセスすることを認可するかどうかを決定する。
【0052】
認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可すると決定する場合には、ステップ720において、認可モジュール202は、プリンシパルが要求動作を実施することを認可されていることの表示である、許可決定を返して、最終ステップへと進む。一方、認可モジュール202が、適用可能なポリシーはプリンシパルが要求動作を実行することを認可しないと決定する場合には、ステップ716において、認可モジュール202は、プリンシパルが要求動作を実行することが認可されていないことの表示である拒否決定を返す。ステップ718において、認可モジュール202は、エラーストリングをプリンシパルに返して、最終ステップに進むことができる。エラーストリングは、要求動作を実行する認可がないことをプリンシパルに通知することができる。
【0053】
ここで、段階アクセスのチェックを、方法700によって示す順序と逆の順序で実行できることが認識されるであろう。例えば、認可モジュール202は、最初にそのアクセス制御のチェックを実行する。認可モジュール202が、特定の資源アクセスに対して認可を与えるべきであると決定すると、オペレーティングシステムが、その従来のアクセス制御機構を使用して、そのセキュリティチェックを実施する。
【0054】
図8は、いくつかの実施形態による、アプリケーションプログラムのセキュリティリスクのレベルをファシリティが決定する方法800を示すフロー図である。特に、ファシリティは、セキュリティリスクのレベルおよび/またはアプリケーションプログラムの意図の評価を、そのアプリケーションプログラムに専用のポリシーの分析に基づいて行う。一例として、ユーザはコンピュータにログオンして、アプリケーションをコンピュータ上にロードおよび/または実行することを要求している。
【0055】
開始ステップから始まり、ステップ802において、ユーザのコンピュータ上で実行されているオペレーティングシステムは、アプリケーションプログラムをロード/実行する要求を受信する。ステップ804において、オペレーティングシステムは、ファシリティを呼び出して、アプリケーションプログラムが対応するポリシーを有するかどうかを決定する。例えば、そのアプリケーションプログラムに適用可能なポリシーは、ポリシー206の一部として保持することができる。ファシリティが、そのアプリケーションプログラムに適用可能なポリシーは存在しないと決定する場合には、ファシリティは、適用可能なポリシーが存在しないことをオペレーティングシステムに通知する。ステップ806において、オペレーティングシステムは、アプリケーションプログラムをロード/実行することの要求を拒否し、エラー状態を返す。要求を拒否するのに続いて、オペレーティングシステムは、この要求に対する最終ステップへと進む。
【0056】
一方、ステップ804において、ファシリティが、そのアプリケーションプログラムに適用化なポリシーは存在すると決定する場合には、ステップ808において、ファシリティは、その適用可能なポリシーを分析して、そのアプリケーションプログラムをロード/実行することに関連する、またはそれから生ずる潜在的セキュリティリスクのレベルを決定する。ファシリティは、そのポリシーにおける規則によって与えられる認可のレベルまたは範囲に、リスクのレベルを基づかせることができる。例えば、規則がアプリケーションプログラムを多数の資源またはある数の本質的に危険な資源に対して認可する場合には、ファシリティは、規則がアプリケーションプログラムを小数の、比較的安全な資源に対してのみ認可する場合よりも、リスクのレベルを高く設定することができる。ファシリティは、適用可能なポリシーが存在することをオペレーティングシステムに通知して、最終ステップへと進む。
【0057】
図9は、いくつかの実施形態による、異常の検出時により制限的なポリシーをファシリティが課する方法900を示すフロー図である。一例として、コンピュータ上で実行中のファシリティは、2つのポリシー、ポリシーAおよびポリシーBを有することができ、これらはアプリケーションプログラムに適用可能である。さらに、ポリシーAは、ポリシーAがより多数の資源に認可を授与する点において、ポリシーBよりも制限が少ない。
【0058】
開始ステップから始まって、ステップ902において、ファシリティは制限の少ないポリシーAを課する。ステップ904において、ファシリティは、コンピュータ上で実行中のアプリケーションプログラムのインスタンスにおける異常状態を検出することができる。上記の例に続いて、アプリケーションプログラムのインスタンスがコンピュータ上で実行中であり、ファシリティは、実行中のアプリケーションプログラムプロセスを監視中である。アプリケーションプログラムプロセスの監視中に、ファシリティは、そのプロセスにおける異常条件または状態を検出することができる。例えば、ファシリティは、そのコンピュータ上で実行されたアプリケーションプログラムの先のインスタンスを追跡することによって、アプリケーションプログラムが通常出すシステムコールを表す有向グラフ(directed graph)を先に生成しておき、現行アプリケーションプログラムプロセスが行うシステムコールと有向グラフとの比較から異常状態の存在を決定することができる。
【0059】
ステップ906において、異常状態の検出に応答して、ファシリティは、より制限的なポリシーBを課して、最終ステップへと進む。一実施態様においては、ファシリティは、より制限的なポリシーBを、異常状態が検出されたアプリケーションプログラムプロセスに課する。代替的に、ファシリティは、より制限的なポリシーBを、アプリケーションプログラム、例えば、アプリケーションプログラムのすべてのインスタンスまたはプロセスに、課することができる。さらに、検出される異常、アプリケーションプログラム、および/または特定のポリシーに応じて、ファシリティは、コンピュータ全体により制限的なポリシーの組を課することが可能であり、例えば、より制限的なポリシーがコンピュータ上で実行中のすべてのプロセスに適用される。
【0060】
図10は、いくつかの実施形態による、異常の検出時にファシリティがポリシーを課する方法1000を示すフロー図である。一例として、コンピュータ上で実行中のファシリティは、ウエブアプリケーションプログラムに適用可能なポリシー、ポリシーAを有する。開始ステップで始まって、ステップ1002において、ファシリティは、ウエブアプリケーションプログラムにそのポリシーを課さない。したがって、ポリシーAは休眠しており、コンピュータ上で実行中のウエブアプリケーションプログラムのインスタンスに適用されない。ステップ1004において、ファシリティは、コンピュータ上で実行中のウエブアプリケーションプログラムのインスタンスにおける異常状態を検出することがある。
【0061】
上記の例に続いて、ウエブアプリケーションプログラムのインスタンスがコンピュータ上で実行されており、ファシリティは実行中のウエブアプリケーションプログラムプロセスを監視中である。アプリケーションプログラムプロセスを監視する間に、ファシリティは、プロセス中の異常条件または状態を検出することができる。例えば、ファシリティは、ウエブアプリケーションプロセスによって生成されるかまたはそれによって発生するネットワークトラフィックを監視して、そのネットワークトラフィックから、ウエブアプリケーションプロセス中に異常状態が存在することを決定することができる。ステップ1006において、ファシリティは、休眠ポリシー、ポリシーAをウエブアプリケーションプログラム、例えば異常の検出されたウエブアプリケーションプログラムプロセスに課して、最終ステップへと進む。別の選択肢として、ファシリティは、ポリシーAをウエブアプリケーションプログラムのすべてのインスタンスまたはプロセスに課すことができる。このようにして、休眠ポリシーは活動状態になり、ウエブアプリケーションプログラムに適用される。
【0062】
前述の内容から、本発明の特定の実施形態を説明の目的で記述したが、本発明の趣旨と範囲から逸脱することなく、様々な修正が可能であることが認識されるであろう。したがって、本発明は、添えられた特許請求の範囲による場合を除いて、限定されるものではない。

【特許請求の範囲】
【請求項1】
アプリケーションプログラムイメージをメモリにロードする要求を受け取ることと、
前記アプリケーションプログラムイメージが予め定められた資源にアクセスすることを意図するかどうかを決定することと、
前記アプリケーションプログラムイメージが前記予め定められた資源にアクセスすることを意図することを決定するのに応じて、前記アプリケーションプログラムイメージをロードする要求を拒否することと
をコンピュータに実行させる内容を有するコンピュータ読取可能な記憶媒体。
【請求項2】
前記予め定められた資源にアクセスする意図することを決定することは、前記アプリケーションプログラムイメージに適用可能なポリシーの分析によるを特徴とする請求項1に記載のコンピュータ読取可能な記憶媒体。
【請求項3】
アプリケーションプログラムのセキュリティリスクを問い合わせるコンピューティングシステムにおける方法であって、
アプリケーションプログラムイメージに適用可能なポリシーがあるかどうかを決定するステップと、
適用可能なポリシーがあることを決定するのに応じて、前記アプリケーションプログラムイメージを処理するステップと、
適用可能なポリシーが存在しないことを決定するのに応じて、前記アプリケーションプログラムイメージを処理しないステップと
を備えたことを特徴とする方法。
【請求項4】
適用可能なポリシーがあること決定するのに応じて、前記アプリケーションプログラムイメージに関連付けられた潜在的セキュリティリスクを決定するステップをさらに備えたことを特徴とする請求項3に記載の方法。
【請求項5】
前記アプリケーションプログラムイメージのさらなる処理が前記アプリケーションプログラムイメージの意図によるように、前記適用可能なポリシーを分析して、前記アプリケーションプログラムイメージの意図を決定するステップをさらに備えたことを特徴とする請求項3に記載の方法。
【請求項6】
前記アプリケーションプログラムイメージを処理するステップは、前記アプリケーションプログラムイメージをロードするステップを含むことを特徴とする請求項3に記載の方法。
【請求項7】
前記アプリケーションプログラムイメージを処理するステップは、前記アプリケーションプログラムイメージを実行するステップを含むことを特徴とする請求項3に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−3787(P2012−3787A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2011−220995(P2011−220995)
【出願日】平成23年10月5日(2011.10.5)
【分割の表示】特願2005−290091(P2005−290091)の分割
【原出願日】平成17年10月3日(2005.10.3)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】