(57)【要約】【課題】事前に作成されたポリシ生成ルールに基づいて、監視対象のプログラムを動作させて収集したアクセス情報を自動的に分類し汎化して、アクセスポリシの生成を自動化し、アクセスポリシ作成の手間を可能な限り軽減できるようにする。【解決手段】「あるリソースにアクセスした場合に、いずれ別のあるリソースにアクセスする可能性が高い」というリソースアクセスの共起関係のうち、対象とするプログラムに依存しないものを事前に列挙してポリシ生成ルール１１０として記述しておく。分類手段１０６は、ポリシ生成ルール１１０に基づいて、アクセス監査手段１０２が観測したアクセスログからイベント集合を生成する。また、汎化手段１０７は、イベント集合に基づいてイベントの汎化を行う。そして、ポリシ生成手段１０８は、汎化後のイベント集合に基づいてアクセスポリシを生成する。【選択図】図１
2007109016.tif 000002
【特許請求の範囲】
【請求項１】
監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成システムであって、
前記監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出手段と、
アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、前記アクセス検出手段が出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成手段とを
備えたことを特徴とするアクセスポリシ生成システム。
【請求項２】
アクセス検出手段が監視対象のプログラムによるリソースへのアクセスの発生を検出すると、前記監視対象のプログラムに従って実行されている処理の状態を検出する状態検出手段を備え、
前記状態検出手段は、前記監視対象のプログラムに従って実行されている処理の状態の検出結果を、前記アクセス検出手段が出力したアクセス情報に付加し、
アクセスポリシ生成手段は、前記状態検出手段が前記監視対象のプログラムに従って実行されている処理の状態の検出結果を付加したアクセス情報に基づいて、アクセスポリシを生成する
請求項１記載のアクセスポリシ生成システム。
【請求項３】
ポリシ生成ルールを予め記憶するポリシ生成ルール記憶手段を備え、
アクセスポリシ生成手段は、前記ポリシ生成ルール記憶手段が記憶するポリシ生成ルールに従って、アクセスポリシを生成する
請求項１又は請求項２記載のアクセスポリシ生成システム。
【請求項４】
ポリシ生成ルール記憶手段は、アクセス情報を分類するための所定の分類条件を示す分類ルールと、アクセス情報を汎化するための所定の汎化条件を示す汎化ルールとを含むポリシ生成ルールを予め記憶し、
アクセスポリシ生成手段は、
前記ポリシ生成ルールが含む分類ルールに従って、アクセス検出手段が出力したアクセス情報を分類する分類手段と、
前記ポリシ生成ルールが含む汎化ルールに従って、前記分類手段が分類したアクセス情報を汎化する汎化手段と、
前記汎化手段が汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成手段とを含む
請求項３記載のアクセスポリシ生成システム。
【請求項５】
リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成システムであって、
前記ポリシ強制の際に、前記監視対象のプログラムによる前記リソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出手段と、
前記アクセス検出手段が前記監視対象のプログラムによるリソースへのアクセスの発生を検出すると、当該監視対象のプログラムに従って実行されている処理の状態を検出する状態検出手段と、
前記アクセス検出手段が出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類手段と、
前記分類手段が分類したアクセス情報を、前記ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化手段と、
前記汎化手段が汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成手段とを備え、
前記状態検出手段は、前記監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加する
ことを特徴とするアクセスポリシ生成システム。
【請求項６】
分類手段は、分類ルールとして、複数のアクセス情報から所定の条件に合致するアクセス情報のみを選択する条件を示す選択分類ルールと、所定の条件に合致するアクセス情報同士が同一の集合に属するように、複数のアクセス情報を分割する条件を示す分割分類ルールとを含むポリシ生成ルールに基づいて、アクセス情報を分類する請求項５記載のアクセスポリシ生成システム。
【請求項７】
アクセスポリシによって許可されたアクセスが発生したときに状態検出手段が検出した監視対象のプログラムに従って実行されている処理の状態を保存する状態記憶手段を備え、
アクセス検出手段は、アクセスポリシに基づいてアクセスを検出する際に、状態検出手段が検出した監視対象のプログラムに従って実行されている処理の状態が、前記状態記憶手段に格納されている状態と合致するか否かに基づいて、アクセスの検出を行い、
ポリシ生成手段は、監視対象のプログラムに従って実行されている処理の状態に合致するか否かに基づいて、アクセスを検出するか否かを指示するアクセスポリシを生成する
請求項５又は請求項６記載のアクセスポリシ生成システム。
【請求項８】
監視対象のプログラムが動作するプラットフォームの種類やバージョンを検出し、検出したプラットフォームの種類やバージョンに合致するポリシ生成ルールを取得するポリシ生成ルール取得手段を備えた請求項５から請求項７のうちのいずれか１項に記載のアクセスポリシ生成システム。
【請求項９】
監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成方法であって、
前記監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出ステップと、
アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、前記アクセス検出ステップで出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成ステップとを
含むことを特徴とするアクセスポリシ生成方法。
【請求項１０】
リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成方法であって、
前記ポリシ強制の際に、前記監視対象のプログラムによる前記リソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出ステップと、
前記アクセス検出ステップで前記監視対象のプログラムによるリソースへのアクセスの発生を検出すると、前記監視対象のプログラムに従って実行されている処理の状態を検出し、前記監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加する状態検出ステップと、
前記アクセス検出ステップで出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類ステップと、
前記分類ステップで分類したアクセス情報を、前記ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化ステップと、
前記汎化ステップで汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成ステップとを
含むことを特徴とするアクセスポリシ生成方法。
【請求項１１】
監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するためのアクセスポリシ生成用プログラムであって、
コンピュータに、
前記監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出処理と、
アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、前記出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成処理とを
実行させるためのアクセスポリシ生成用プログラム。
【請求項１２】
リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成用プログラムであって、
コンピュータに、
前記ポリシ強制の際に、前記監視対象のプログラムによる前記リソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出処理と、
前記監視対象のプログラムによるリソースへのアクセスの発生を検出すると、前記監視対象のプログラムに従って実行されている処理の状態を検出し、前記監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加する状態検出処理と、
前記出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類処理と、
前記分類したアクセス情報を、前記ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化処理と、
前記汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成処理とを
実行させるためのアクセスポリシ生成用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスポリシを生成するアクセスポリシ生成システム、アクセスポリシ生成方法及びアクセスポリシ生成用プログラムに関し、特にポリシ強制（ポリシに基づくアクセス制御）の対象となるプログラムの動作状態を収集してアクセスポリシを生成できるアクセスポリシ生成システム、アクセスポリシ生成方法及びアクセスポリシ生成用プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータウイルスによる情報漏洩及び情報改ざんや、サーバへの不正アクセスによる情報漏洩及び情報改ざんが問題となっている。これら情報漏洩や情報改ざんの問題の多くは、ソフトウェアの脆弱性が原因となって生じている。つまり、脆弱な部分（例えば、セキュリティホール）を攻撃されることによって、本来そのプログラムが想定していた動作とは異なる動作に従ってプログラムが処理を実行してしまうことがある。プログラムが想定外の動作をすることによって、本来外部から読み取り不可であるファイルが読み取られてしまったり（情報漏洩）、本来外部から編集不可であるファイルを編集されてしまったり（情報改ざん）する等の不正なリソースアクセスがなされる。
【０００３】
上記のような情報漏洩や情報改ざんの問題を解決するために、例えソフトウェアの脆弱性を攻撃された場合であっても、ソフトウェアが本来想定していた動作とは異なる動作に従ってリソースアクセスをした場合には、そのアクセスを防止するように制御すればよい。例えば、ソフトウェアによる不正なリソースアクセスを防止するために、セキュアＯＳや、アクセス制御ミドルウェア、サンドボックス、不正侵入防止システム等と呼ばれる各種のポリシ強制システムが利用されている。
【０００４】
これらのポリシ強制システムは、与えられた要件（条件）に従って、監視対象のプログラムが特定のリソースにアクセスすることを制限する機能を備える。以下、この監視対象のプログラムが特定のリソースにアクセスすることを制限するための要件（条件）を「アクセスポリシ」（又は単に「ポリシ」）という。また、アクセスポリシに従って制限される動作を「アクセス」という。
【０００５】
ポリシ強制システムにおいて、アクセスポリシを正しく設定することにより、不正アクセスやクラッキング、コンピュータウイルス、ワームによる被害を抑制することができる。例えば、ＷＷＷサーバでポリシ強制システムを用いる場合に、ＷＷＷコンテンツを書き換え不可というアクセスポリシを設定しておけば、ＷＷＷサーバの脆弱性を攻撃されて任意のコードを実行されたとしても、ＷＷＷコンテンツの書き換えによる改ざんを防止できる。
【０００６】
なお、一般に、アクセスポリシには、「許可ポリシ」と「禁止ポリシ」との２種類のポリシがある。「許可ポリシ」は、プログラムが特定のリソースにアクセスすることを許可する条件を示すポリシである。また、「禁止ポリシ」は、プログラムが特定のリソースにアクセスすることを禁止する条件を示すポリシである。また、アクセスポリシの指定方法は、「許可ポリシ」のみを指定する方法、「禁止ポリシ」のみを指定する方法、及び「許可ポリシ」及び「禁止ポリシ」の両方を指定する方法の３通りがある。
【０００７】
アクセスポリシの指定方法として許可ポリシのみを指定する方法では、アクセスポリシに、ユーザによって許可されたアクセスのみが記述される（含まれる）。この場合、アクセスポリシの許可ポリシに示される条件に合致したアクセスのみが許可され、それ以外の（許可ポリシに示される条件に合致しない）アクセスは禁止される。
【０００８】
また、アクセスポリシの指定方法として禁止ポリシのみを指定する方法では、アクセスポリシに、ユーザによって禁止されたアクセスのみが記述される（含まれる）。この場合、アクセスポリシの禁止ポリシに示される条件に合致したアクセスのみが禁止され、それ以外の（禁止ポリシに示される条件に合致しない）アクセスは許可される。
【０００９】
また、アクセスポリシの指定方法として許可ポリシ及び禁止ポリシの両方を指定する方法では、許可ポリシと禁止ポリシとが競合したときに実行する処理を定めた「メタポリシ」が、許可ポリシ及び禁止ポリシとは別に、ユーザによって、アクセスポリシに別途記述される（含まれる）。
【００１０】
ここで、アクセス制限を適切に行えるようにするためには、アクセスポリシを正しく設定することが重要である。アクセスポリシで許可されたアクセスの範囲が狭すぎると、本来アクセス可能であるべきリソースにプログラムがアクセスできず、プログラムの誤動作を引き起こしてしまう。この本来アクセス可能であるべきリソースにアクセスできず、プログラムが誤動作してしまうことを、「誤検知」という。プログラムの誤動作を引き起こすとシステム全体の運営に支障を及ぼすため、誤検知を可能な限りゼロに抑えられるようにしなければ、実用上、ポリシ強制システムを用いることは難しい。
【００１１】
一方、誤検知の発生を無くすために、アクセスポリシで許可するアクセスの範囲を広くすることが考えられる。しかし、アクセスポリシで許可するアクセスの範囲を広くしすぎると、プログラムの不正動作も許可してしまうことになり、適切にポリシ強制を行えなくなくなってしまう。このアクセスの範囲を広くしすぎてプログラムの不正動作も許可してしまうことを、「検知漏れ」という。従って、適切にポリシ強制を行えるようにするためには、検知漏れをできるだけ減らしつつ、誤検知を可能な限りゼロに抑える必要がある。
【００１２】
しかし、そのように検知漏れ及び誤検知の両方の低減を考慮したアクセスポリシを人手で記述して作成すると、ユーザの手間と時間がかかり、アクセスポリシの内容に誤りも生じやすい。そこで、プログラムの実際の動作状態を観測して、許可ポリシを自動的に生成する方法が提案されている。
【００１３】
例えば、特許文献１には、プログラムを一定時間動作させて、そのプログラムが動作している間に観測されたアクセスを許可するルールを、許可ポリシとして追加する方法（従来技術１ともいう）が記載されている。また、例えば、特許文献２には、プログラムを一定時間動作させて、観測したリソースアクセスに対して、同じディレクトリ内のファイルや、同じ種類のファイルがアクセスされうると類推した上で、ベイズ推定によって許可対象のアクセスを絞り込む方法（従来技術２ともいう）が記載されている。
【００１４】
また、例えば、特許文献３には、プログラムを一定時間動作させて、観測したリソースアクセスに対して、パス名のパターンによって汎化したり、リソースアクセス時のプログラムの内部状態が類似しているアクセス同士を汎化する方法（従来技術３ともいう）が記載されている。また、例えば、特許文献４には、アクセスポリシ作成を支援するポリシ設定支援ツールが記載されている。
【００１５】
【特許文献１】特開２００３−００６０２７号公報（段落０００９−００１５、図１−５）
【特許文献２】特開２００５−０４４２４３号公報（段落００５９−０１０１、図２）
【特許文献３】特開２００５−２３４６６１号公報（段落００４４−００８９、図１−６）
【特許文献４】特開２００４−１９２６０１号公報（段落００８８−０１０８、図１、図７−９）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来技術１（特許文献１に記載された方法）によれば、観測されたアクセスを許可ルールとして追加することができる。しかし、プログラムを一定期間動作させても、そのプログラムが行いうるアクセスを全て観測することができるとは限らない、監視対象のプログラムが行いうる全てのアクセスを観測できなかった場合、観測したアクセスをそのまま許可ルールとして追加したとしても、監視対象のプログラムで許可されるべきアクセスが全て許可されない（誤検知が生じる）という問題が生じる。一般に、プログラムの動作は非常に多岐にわたるため、全てのアクセスを観測することは難しく、従来技術１による方法を用いたとしても、このような誤動作を排除することができない。
【００１７】
従来技術２（特許文献２に記載された方法）によれば、観測したアクセスをそのまま許可ルールとして追加するのではなく、観測したファイルアクセスの対象ファイルと同じディレクトリ内のファイルや、同じ拡張子をもつファイルも許可対象と類推する。そして、許可対象のファイルを推定した上で処理（推定した許可対象のファイルに対するアクセスを許可ルールとして追加）する。特許文献２に記載された方法を用いれば、アクセス対象が同一の種類のファイル（主にファイルの拡張子によって判定する）であれば、実際に観測していないアクセスであっても、アクセスポリシの対象としてアクセス制御することができる。すなわち、同一種類のファイルであれば同一のアクセスポリシを適用できるという性質や、同一のディレクトリにあるファイルであれば同じアクセスポリシを適用できるという性質を仮定して、実際に観測していないアクセスでもアクセスポリシの対象にすることができる。
【００１８】
特許文献２に記載された方法を用いれば、全てのアクセスを観測できなかった場合に誤検知を生じるという従来技術１における課題を、ある程度解消することができる。しかし、一般に上記のような性質（同一種類のファイルであれば適用できるという性質や、同一のディレクトリにあるファイルであれば適用できるという性質）が成り立たない場合も多いので、必ずしも適切なアクセスポリシを作成できるとは限らない。例えば、同一の拡張子をもつファイルや、同一のディレクトリ内にあるファイルであっても、実際には全く異なるアクセスポリシが適用されるべきことが多い。例えば、Ｌｉｎｕｘでは、ディレクトリ「/etc/ 」以下に「 .conf」という拡張子をもつファイルが多数あるが、これらは全く別々の機能に関連するファイルが多く、同一のアクセスポリシを適用するべきではない。このような場合に、同一のアクセスポリシを適用すると、検知漏れが発生することになってしまう。
【００１９】
逆に、同一の拡張子をもつファイルや、同一のディレクトリ内にあるファイルでなくても、同一のアクセスポリシが適用される場合も多い。例えば、一般に、ファイルサーバは、公開ディレクトリ以下に存在するファイル全てに対してアクセスしうる。しかし、これらの公開ディレクトリ以下のファイルを拡張子やディレクトリで区別することはできないので、従来技術２による方法を用いたとしても、同一のアクセスポリシを適用することは困難である。また、そのような公開ディレクトリ以下のファイルを区別できない場合に、同一のアクセスポリシを適用できなければ、誤検知が発生することになってしまう。
【００２０】
従来技術３（特許文献３に記載された方法）によれば、プログラム中の同一の場所から呼び出された（同一のコールスタックをもつ）リソースアクセスである場合には同一のアクセスポリシが適用可能という性質を仮定して、実際に観測していないアクセスでもアクセスポリシの対象にすることができる。特許文献３に記載された方法によれば、拡張子やディレクトリを用いてアクセスポリシを作成する方法と比較して、高い精度をもつアクセスポリシを生成することができる。しかし、拡張子やディレクトリでアクセスの許否を判定する方法と比較すると、プログラム中の同一の場所から呼び出されたか否かで判定する方法は、生成するアクセスポリシの精度が高いが、監視対象のプログラムによっては判定条件が強すぎたり、弱すぎたりする場合がある。すなわち、特許文献３に記載された方法を用いたとしても、誤検知が生じたり、検知漏れが生じたりする場合がある。例えば、特許文献３に記載された方法を用いたとしても、アクセスポリシ生成中に観測したイベントの数が少ないと、適切なアクセスポリシを生成できない。
【００２１】
以上のように、従来技術２による方法や従来技術３による方法では、全てのアクセスを観測できなかった場合に誤検知を生じるという従来技術１における課題を、ある程度解消している。しかし、従来技術２による方法を用いたとしても、同一種類のファイルであれば適用できるという性質や、同一のディレクトリにあるファイルであれば適用できるという性質が成り立たない場合には、必ずしも適切なアクセスポリシを作成できるとは限らない。また、従来技術３による方法では、精度よくアクセスポリシを生成でき、従来技術２による方法を用いた場合の課題をある程度解決している。しかし、従来技術３による方法を用いたとしても、監視対象のプログラムによっては、アクセスポリシによる判定条件が強すぎたり弱すぎたりし、依然として誤検知や検知漏れが生じするという課題がある。
【００２２】
なお、特許文献４に記載されたポリシ設定支援ツールもアクセスポリシの作成に関する従来技術である。しかし、特許文献４では、アクセスポリシ作成の支援に関する支援ツールが記載されているにすぎず、未知のアプリケーションのアクセスポリシを作成することは開示されていない。また、特許文献４に記載されたポリシ設定支援ツールを用いたとしても、アプリケーションのインストール場所や設定が変更された場合に、アクセスポリシ作成のための有効な支援を行うことはできない。
【００２３】
そこで、本発明は、アクセスポリシの生成を自動化し、アクセスポリシ作成の手間を可能な限り軽減できるアクセスポリシ生成システム、アクセスポリシ生成方法及びアクセスポリシ生成用プログラムを提供することを目的とする。また、本発明は、精度の高いアクセスポリシを生成し、人手による修正の手間をできるだけ軽減できるアクセスポリシ生成システム、アクセスポリシ生成方法及びアクセスポリシ生成用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明によるアクセスポリシ生成システムは、監視対象のプログラム（例えば、対象プログラム１０１）が特定のリソース（例えば、アクセス対象のファイルやデータを管理するファイルシステムや、アクセス対象のファイルやデータ）にアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成システムであって、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出手段（例えば、アクセス監査手段１０２によって実現される）と、アクセスポリシの生成条件を示す情報であるポリシ生成ルール（例えば、ポリシ生成ルール１１０）に従って、アクセス検出手段が出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成手段（例えば、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８によって実現されるアクセスポリシ生成手段）とを備えたことを特徴とする。
【００２５】
また、アクセスポリシ生成システムは、アクセス検出手段が監視対象のプログラムによるリソースへのアクセスの発生を検出すると、監視対象のプログラムに従って実行されている処理の状態を検出する状態検出手段（例えば、状態観測手段１１３によって実現される）を備え、状態検出手段は、監視対象のプログラムに従って実行されている処理の状態の検出結果（例えば、内部状態情報）を、アクセス検出手段が出力したアクセス情報に付加し、アクセスポリシ生成手段は、状態検出手段が監視対象のプログラムに従って実行されている処理の状態の検出結果を付加したアクセス情報に基づいて、アクセスポリシを生成するものであってもよい。
【００２６】
また、アクセスポリシ生成システムは、ポリシ生成ルールを予め記憶するポリシ生成ルール記憶手段（例えば、ポリシ生成ルール記憶部１０９によって実現される）を備え、アクセスポリシ生成手段は、ポリシ生成ルール記憶手段が記憶するポリシ生成ルールに従って、アクセスポリシを生成するものであってもよい。
【００２７】
また、アクセスポリシ生成システムにおいて、ポリシ生成ルール記憶手段は、アクセス情報を分類するための所定の分類条件を示す分類ルール（例えば、分類ルール１１１）と、アクセス情報を汎化するための所定の汎化条件を示す汎化ルール（例えば、汎化ルール１１２）とを含むポリシ生成ルールを予め記憶し、アクセスポリシ生成手段は、ポリシ生成ルールが含む分類ルールに従って、アクセス検出手段が出力したアクセス情報を分類する分類手段（例えば、分類手段１０６によって実現される）と、ポリシ生成ルールが含む汎化ルールに従って、分類手段が分類したアクセス情報を汎化する汎化手段（例えば、汎化手段１０７によって実現される）と、汎化手段が汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成手段（例えば、ポリシ生成手段１０８によって実現される）とを含むものであってもよい。なお、「汎化」とは、例えば、イベント（アクセスの際に検出したイベント）の集合に基づいて、そのイベントの集合を含むより大きなイベントの集合を算出することをいう。
【００２８】
また、アクセスポリシ生成システムは、リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成システムであって、ポリシ強制の際に、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出手段と、アクセス検出手段が監視対象のプログラムによるリソースへのアクセスの発生を検出すると、監視対象のプログラムに従って実行されている処理の状態を検出する状態検出手段と、アクセス検出手段が出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類手段と、分類手段が分類したアクセス情報を、ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化手段と、汎化手段が汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成手段とを備え、状態検出手段は、監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加するものであってもよい。なお、「ポリシ強制」とは、例えば、アクセスポリシに基づいて、リソースへのアクセスを許可するか禁止するか判定し、許可すると判定したアクセスを受け付け、禁止すると判定したアクセスを拒否することである。
【００２９】
また、アクセスポリシ生成システムにおいて、分類手段は、分類ルールとして、複数のアクセス情報から所定の条件に合致するアクセス情報のみを選択する条件を示す選択分類ルールと、所定の条件に合致するアクセス情報同士が同一の集合に属するように、複数のアクセス情報を分割する条件を示す分割分類ルールとを含むポリシ生成ルールに基づいて、アクセス情報を分類するものであってもよい。
【００３０】
また、アクセスポリシ生成システムは、アクセスポリシによって許可されたアクセスが発生したときに状態検出手段が検出した監視対象のプログラムに従って実行されている処理の状態を保存する状態記憶手段（例えば、状態記憶部１１４によって実現される）を備え、アクセス検出手段は、アクセスポリシに基づいてアクセスを検出する際に、状態検出手段が検出した監視対象のプログラムに従って実行されている処理の状態が、状態記憶手段に格納されている状態と合致するか否かに基づいて、アクセスの検出を行い、ポリシ生成手段は、監視対象のプログラムに従って実行されている処理の状態に合致するか否かに基づいて、アクセスを検出するか否かを指示するアクセスポリシを生成するものであってもよい。
【００３１】
また、アクセスポリシ生成システムは、監視対象のプログラムが動作するプラットフォーム（例えば、コンピュータが用いるオペレーティングシステム（例えば、ＬｉｎｕｘやＷｉｎｄｏｗｓ））の種類やバージョンを検出し、検出したプラットフォームの種類やバージョンに合致するポリシ生成ルールを取得するポリシ生成ルール取得手段（例えば、ポリシ生成ルール取得手段１１５によって実現される）を備えたものであってもよい。なお、「ポリシ生成ルールを取得」とは、例えば、アクセスポリシ生成システムを用いたコンピュータ以外のホストから、ポリシ生成ルール１１０を、ネットワークを介して受信することである。
【００３２】
本発明によるアクセスポリシ生成方法は、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成方法であって、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出ステップと、アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、アクセス検出ステップで出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成ステップとを含むことを特徴とする。
【００３３】
アクセスポリシ生成方法は、リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成方法であって、ポリシ強制の際に、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出ステップと、アクセス検出ステップで監視対象のプログラムによるリソースへのアクセスの発生を検出すると、監視対象のプログラムに従って実行されている処理の状態を検出し、監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加する状態検出ステップと、アクセス検出ステップで出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類ステップと、分類ステップで分類したアクセス情報を、ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化ステップと、汎化ステップで汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成ステップとを含むものであってもよい。
【００３４】
本発明によるアクセスポリシ生成用プログラムは、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するためのアクセスポリシ生成用プログラムであって、コンピュータに、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出処理と、アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成処理とを実行させるためのものである。
【００３５】
また、アクセスポリシ生成用プログラムは、リソースへのアクセスを許可する許可ルールを示す許可ポリシにもとづいて行うポリシ強制に用いる、監視対象のプログラムが特定のリソースにアクセスすることを制限するためのアクセスポリシを生成するアクセスポリシ生成用プログラムであって、コンピュータに、ポリシ強制の際に、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出処理と、監視対象のプログラムによるリソースへのアクセスの発生を検出すると、監視対象のプログラムに従って実行されている処理の状態を検出し、監視対象のプログラムに従って実行されている処理の状態の検出結果を、対応するアクセス情報に付加する状態検出処理と、出力した複数のアクセス情報を、予め作成されたアクセスポリシの生成条件を示すポリシ生成ルールに含まれる分類ルールに基づいて分類する分類処理と、分類したアクセス情報を、ポリシ生成ルールに含まれる汎化ルールに基づいて汎化する汎化処理と、汎化したアクセス情報に基づいて、アクセスポリシを生成するポリシ生成処理とを実行させるためののものであってもよい。
【００３６】
例えば、従来技術３による方法において利用している「プログラム中の同一の場所から呼び出されたリソースアクセスには同一のアクセスポリシが適用可能」という性質は、プログラムのもっている性質の１つに過ぎない。プログラムが悪意をもって書かれていない限り、プログラムが動作するプラットフォーム上における慣習や、プラットフォームの性質等に由来するプログラム間における共通の性質が他にも存在する。
【００３７】
それら共通の性質の中には、「あるリソースにアクセスした場合には、いずれ別のあるリソースにアクセスする可能性が高い」というリソースアクセスの類推が可能な性質がある。この性質を、「リソースアクセスの共起関係」という。「プログラム中の同一の場所から呼び出されたリソースアクセスには同一のアクセスポリシが適用可能」という性質は、リソースアクセスの共起関係の１つである。
【００３８】
リソースアクセスの共起関係は、拡張子が共通であったり、親ディレクトリが共通であったり、リソースアクセス時の内部状態が同じであったりすること以外にも、いくつでも列挙することが可能である。それら複数のリソースアクセスの共起関係を組み合わせて利用することによって、より精度の高いアクセスポリシを生成することができる。
【００３９】
例えば、ＵＮＩＸ（登録商標）やＬｉｎｕｘを用いる場合、一時ファイルを「/tmp」ディレクトリ内に書き出すことが多い。このような性質から、ＵＮＩＸ，Ｌｉｎｕｘプラットフォーム上の慣習に由来した「「/tmp」ディレクトリ内に書き出されたあるファイルには同一のアクセスポリシが適用可能」というリソースアクセスの共起関係を導くことができる。そして、仮に、アクセスポリシ生成中に観測したイベントの数が少なく、例えば「 /tmp/0001.tmpへの書き込み」イベントしか観測できなかった場合であっても、この共起関係を用いることによって、「/tmp/*.tmp」への書き込みを許可してもよいと判断することができる。
【００４０】
同様に、ＵＮＩＸ，Ｌｉｎｕｘを用いる場合に「/etc」内に置かれている設定ファイルや、「/usr/lib」内等に置かれているライブラリファイル、「/var/log」内に置かれているログファイルの間には、慣習に由来したリソースアクセスの共起関係をいくつでも列挙することができる。これらの性質は、ＯＳの種類やバージョン等、プラットフォームには依存するものの、アプリケーションプログラムには依存しないため、どのようなプログラムのアクセスポリシを生成する場合であっても利用することができる。
【００４１】
本発明では、これら監視対象のプログラムに共通したリソースの共起関係を組み合わせて用いることによって、より精度の高いアクセスポリシを生成する。また、従来技術３による方法の課題の１つとして、アクセスポリシ生成中にのみ、リソースアクセス時のプログラムの内部状態を調べてアクセスポリシを生成するため、特に観測したイベントの数が少ないときに十分な許可ポリシを生成できない場合があるという問題がある。本発明の第２の実施の形態では、アクセスポリシ生成中だけでなく、プログラムの動作を監視している状態であっても、リソースアクセス時のプログラムの内部状態を調べる。そして、プログラム動作監視中も内部状態を検出するという監視方法を用いた場合に適したアクセスポリシ生成手段を用意することによって、より誤検知の少ないアクセス制御を実現する。
【発明の効果】
【００４２】
本発明によれば、ポリシ生成ルールに従って、アクセス情報に基づいて、アクセスポリシを生成する。すなわち、単に所定期間のアクセスの観測結果のみに基づいてアクセスポリシを生成するのでなく、個々のプログラムに依存しないイベントの共起関係に基づくポリシ生成ルールに従って、アクセスポリシを生成する。従って、アクセスポリシの生成を自動化し、アクセスポリシ作成の手間を可能な限り軽減することができる。また、精度の高いアクセスポリシを生成し、人手による修正の手間をできるだけ軽減することができる。
【００４３】
また、本発明において、分類ルールと汎化ルールとを含むポリシ生成ルールに従って、アクセス情報を分類し汎化する処理を順に実行するように構成すれば、誤検知の点においても検知漏れの点においても、より精度の高いアクセスポリシを生成することができる。
【００４４】
また、本発明において、監視対象のプログラムに従って実行されている処理の状態を保存する状態記憶手段を備え、検出した処理の状態が状態記憶手段に格納されている状態と合致するか否かに基づいてアクセスの検出を行うように構成すれば、検出した状態を考慮しながらアクセス可否の判定を行うことができる。従って、観測したアクセスのイベントの数が足りなかったり、十分な汎化ができない場合であっても、より正確にアクセス可否の判定を行うことができる。
【００４５】
また、本発明において、プラットフォームの種類やバージョンに合致するポリシ生成ルールを取得するように構成すれば、プラットフォームに適したポリシ生成ルールに従って、アクセスポリシを生成することができる。そのため、オペレーティングシステム（ＯＳ）のバージョンが更新された場合であっても、最適なアクセスポリシを生成することができる。
【発明を実施するための最良の形態】
【００４６】
実施の形態１．
以下、本発明の第１の実施の形態について図面を参照して説明する。図１は、本発明によるアクセスポリシ生成システムを用いた（稼動する）システム１００の構成の例を示すブロック図である。なお、本実施の形態において、アクセスポリシ生成システムは、例えば、一般のオペレーティングシステム（ＯＳ）のファイルアクセス権限設定や、セキュアＯＳのアクセス権限設定、アクセス制御ミドルウェアのポリシ設定等を行うシステムに適用できる。また、アクセスポリシ生成システムは、ホストベース不正侵入検知システムやホストベース不正侵入防止システムのポリシ設定、サンドボックスモデルをもつバーチャルマシンのポリシ設定等を行うシステムに適用できる。
【００４７】
図１に示すように、アクセスポリシ生成システムを用いたシステム（例えば、情報処理システム）１００は、例えば、プログラム制御により動作するコンピュータ（中央処理装置やプロセッサ、データ処理装置）によって実現される。また、システム１００は、例えば、ワークステーションやパーソナルコンピュータ等の情報処理装置によって実現される。また、図１に示すように、システム１００は、各種の情報を入力する入力装置１２０が接続される。なお、システム１００は、入力装置１２０を含んでいてもよい。また、入力装置１２０は、具体的には、キーボードやマウス等の入力機器によって実現される。
【００４８】
図１に示すように、システム１００は、対象プログラム１０１と、アクセス監査手段１０２と、リソース１０３と、状態観測手段１１３と、アクセスログ記憶部１０５と、ポリシ生成ルール記憶部１０９と、分類手段１０６と、汎化手段１０７と、ポリシ生成手段１０８と、ポリシ記憶部１０４とを含む。また、図１に示すように、ポリシ生成ルール記憶部１０９は、分類ルール１１１と汎化ルール１１２とを含むポリシ生成ルール１１０を予め複数格納する。すなわち、ポリシ生成ルール記憶部１０９は、個々のプログラムに依存しないイベントの共起関係に基づくポリシ生成ルール１１０を、分類ルール１１１と汎化ルール１１２との組という形式で予め記憶している。
【００４９】
対象プログラム１０１は、システム１００上で動作するプログラムであって、アクセス監視の対象となるプログラムである。例えば、対象プログラム１０１は、ＷＷＷサーバやワードプロセッサ等の各種アプリケーションソフトウェアである。
【００５０】
アクセス監査手段１０２は、具体的には、プログラムに従って動作するコンピュータによって実現される。アクセス監査手段１０２は、対象プログラム１０１が特定のリソース１０３にアクセスすることを制限するためのアクセスポリシに従って、対象プログラム１０１が行う各種アクセス（例えば、ファイルへのアクセス）を監視する機能を備える。この場合、アクセス監査手段１０２は、アクセスポリシの許可ポリシに示される条件に従って（例えば、条件が合致すると）、対象プログラム１０１が行うアクセスを許可する。また、アクセス監査手段１０２は、アクセスポリシの禁止ポリシに示される条件に従って（例えば、条件が合致すると）、対象プログラム１０１が行うアクセスを禁止する。
【００５１】
本実施の形態では、アクセス監査手段１０２は、「監査モード」及び「ルール生成モード」のうちいずれか一方のモードで動作する。本実施の形態では、アクセス監査手段１０２を「監査モード」と「ルール生成モード」とのいずれのモードで動作させるかの設定は、入力装置１１０からのユーザ入力によって行われる。例えば、アクセス監査手段１０２は、予めユーザ入力によって設定された設定情報に従って、「監査モード」又は「ルール生成モード」のいずれかのモードを選択する。そして、アクセス監査手段１０２は、選択した動作モードに従って処理を実行する。
【００５２】
「監査モード」で動作する場合、アクセス監査手段１０２は、対象プログラム１０１からリソース１０３へのアクセスを監視する。この場合、アクセス監査手段１０２は、ポリシ記憶部１０４に格納されたアクセスポリシに基づいてポリシ強制を行う。
【００５３】
「ポリシ強制」とは、ポリシ記憶部１０４に格納されているアクセスポリシに基づいて、リソースへのアクセスを許可するか禁止するか判定し、許可すると判定したアクセスを受け付け、禁止すると判定したアクセスを拒否する処理である。
【００５４】
なお「アクセス」とは、対象プログラム１０１に基づく基盤プログラムに対する命令であって、システムリソース１０３に対する各種操作のための操作命令である。また、本実施の形態では、「アクセス」を、システムリソース１０３に対する各種操作の意味で用いることもある。例えば、基盤プログラムがオペレーティングシステム（ＯＳ）である場合、ファイル読み出しや、ファイル書き込み、通信ネットワークへのデータ送信、通信ネットワークからのデータ受信等を行うためのシステムコールが「アクセス」となる。なお、ファイルの入出力やデータ送受信以外の他のシステムコールを「アクセス」に含めてもよい。例えば、プロセス実行や、ヒープメモリ確保等を行うためのシステムコールを「アクセス」に含めてもよい。
【００５５】
また、例えば、基盤プログラムがＪａｖａＶＭ（Java Virtual Machine、Ｊａｖａは登録商標）の場合、オブジェクト作成や、他のオブジェクトのメソッド呼び出し等のＪａｖａＶＭに対するＡＰＩ（Application Programming Interface ）呼び出し全般が「アクセス」となる。
【００５６】
「ルール生成モード」で動作する場合、アクセス監査手段１０２は、対象プログラム１０１からリソース１０３へのアクセスを監視するが、ポリシ強制を行わずに、検知したアクセスの内容（アクセス情報）をアクセスログ記憶部１０５に格納する処理を行う。同時に、状態観測手段１１３は、対象プログラム１０１に基づく処理を行う制御手段（例えば、コンピュータ）の内部状態（例えば、制御手段が備えるスタックの内容やレジスタの内容、ヒープメモリの内容）を調べる（検出する）。そして、状態観測手段１１３は、アクセス監査手段１０２によって検知されたアクセス情報に、検出した制御手段の内部状態を加えた情報を、アクセスログ記憶部１０５に格納する。
【００５７】
なお、状態観測手段１１３は、具体的には、プログラムに従って動作するコンピュータによって実現される。状態観測手段１１３は、アクセス監査手段１０２が対象プログラム１０１によるリソース１０３へのアクセスの発生を検出した際に、制御手段の内部状態として、対象プログラム１０１に従って実行されている処理の状態を検出する機能を備える。。また、状態観測手段１１３は、検出した制御手段の内部状態を、アクセス監査手段１０２が出力するアクセス情報に付加する機能を備える。
【００５８】
ここで、アクセスログ記憶部１０５に保存する情報に加えられた内部状態は、制御手段の内部状態の一部のみとするのが好ましい。なぜなら、一般に、制御手段の内部状態を示すデータ量は大きく、全ての内部状態を示す情報を保存するようにすると、メモリ利用効率上問題が生じる（例えば、メモリ容量が不足してしまう）おそれがあるためである。従って、例えば、制御手段の内部状態のうち、スタックの内容や、コールスタック（特に、スタックの中でも、プロシージャ呼び出しの履歴を格納する部分）のみを保存するようにすればよい。なお、状態観測手段１１３が検出する制御手段の内部状態を示す情報を内部状態情報ともいう。
【００５９】
リソース１０３は、例えば、アクセス対象のファイルやデータを管理するファイルシステムである。また、リソース１０３は、例えば、アクセス対象のファイルやデータである。リソース１０３は、例えば、磁気ディスク装置等の記憶装置に予め蓄積される。なお、図１では、１つのリソース１０３を示しているが、システム１００の記憶装置は、予め複数のリソース１０３を蓄積してもよい。
【００６０】
ポリシ記憶部１０４は、具体的には、磁気ディスク装置等の記憶装置によって実現される。ポリシ記憶部１０４は、アクセス監査手段１０２がアクセス監視に用いるアクセスポリシを記憶する。
【００６１】
アクセスログ記憶部１０５は、具体的には、磁気ディスク装置等の記憶装置によって実現される。アクセスログ記憶部１０５は、アクセス監査手段１０２によって検知されたアクセス情報（対象プログラム１０１によるアクセスに基づくアクセス情報）を、一時的に記憶する。また、アクセスログ記憶部１０５は、状態観測手段１１３によって検知された内部状態を示す情報（対象プログラム１０１によるアクセス時の内部状態情報）を、一時的に記憶する。なお、本実施の形態では、アクセスログ記憶部１０５は、内部状態情報を付加されたアクセス情報を記憶する。
【００６２】
なお、アクセス情報は、アクセスの種類とアクセスの対象とを含む情報である。本実施の形態では、アクセスログ記憶部１０５に格納されているこれらアクセス情報や内部状態情報を、まとめてアクセスログという。アクセスログ記憶部１０５には、アクセスログとして、１回のリソースアクセスに対して、１つのアクセス情報と１つの内部状態情報とが保存される。また、このアクセス情報と内部状態情報との組をイベントという。
【００６３】
分類手段１０６は、具体的には、プログラムに従って動作するコンピュータによって実現される。分類手段１０６は、アクセスログ記憶部１０５に格納されたイベントの集合から、ポリシ生成ルール１１０に含まれる（記述された）分類ルール１１１の内容に従って、１つ又は複数の部分集合を抽出する処理を実行する機能を備える。本実施の形態では、図１に示すように、ポリシ生成ルール記憶部１０９は、アクセス情報を分類するための所定の分類条件を示す分類ルール１１１を含むポリシ生成ルール１１０を予め記憶している。そして、分類手段１０６は、ポリシ生成ルール１１０に含まれる分類ルール１１１に従って、アクセス監査手段１０２が出力したアクセス情報を分類する処理を行う。
【００６４】
汎化手段１０７は、具体的には、プログラムに従って動作するコンピュータによって実現される。汎化手段１０７は、分類手段１０６によって抽出されたイベントの集合に基づいて、ポリシ生成ルール１１０に含まれる（記述された）汎化ルール１１２の内容に従って、イベントの汎化を行う処理を実行する機能を備える。本実施の形態では、図１に示すように、ポリシ生成ルール記憶部１０９は、アクセス情報（アクセス情報に示されるイベント）を汎化するための所定の汎化条件を示す汎化ルール１１２を含むポリシ生成ルール１１０を予め記憶している。そして、汎化手段１０７は、ポリシ生成ルール１１０に含まれる汎化ルール１１２に従って、分類手段１０６が分類したアクセス情報を汎化する処理を行う。
【００６５】
ここで、イベントの汎化とは、イベントの集合に基づいて、そのイベントの集合を含むより大きなイベントの集合を算出する処理をいう。例えば、イベントの汎化は、「read /tmp/01.tmp」，「read /tmp/02.tmp」，「read /tmp/03.tmp」から成るイベントの集合がある場合、このイベントの集合に基づいて、 「read/tmp/*.tmp」というイベントの集合を算出することである。なお、ここで、「/tmp/*.tmp」に含まれる「* 」は、ワイルドカード又はＧＬＯＢと呼ばれる記法であり、０個以上の文字の並び（ただし、「/ 」を含まない）を意味する。「read/tmp/*.tmp」によって表されるイベントは無数に存在するので、汎化手段１０７は、この汎化処理を実行することによって、３つの元のイベントから成るイベントの集合から、その３つのイベントを含むある無限集合を算出する処理を実行したことになる。
【００６６】
また、「read /etc/hosts.conf」から成るイベントの集合から、「read /etc/hosts.conf」，「read /etc/hosts」から成るイベントの集合を算出する処理も汎化処理の一例である。汎化手段１０７は、この汎化処理を実行することによって、１つの元のイベントから成るイベントの集合から、２つの元のイベントから成る集合を算出する処理を実行したことになる。
【００６７】
ポリシ生成手段１０８は、具体的には、プログラムに従って動作するコンピュータによって実現される。ポリシ生成手段１０８は、汎化手段１０７が汎化したアクセス情報に基づいて、アクセスポリシを生成する機能を備える。本実施の形態では、ポリシ生成手段１０８は、汎化手段１１２によって生成されたイベントの集合を、アクセス監査手段１０２が解釈可能な形式（データ形式）に変換し、アクセスポリシを生成する。また、ポリシ生成手段１０８は、生成したアクセスポリシをポリシ記憶部１０４に格納する処理を行う。
【００６８】
なお、システム１００が「監査モード」で動作している場合、アクセスポリシの生成のための動作は行われず、アクセス監査手段１０２は、アクセスログ記憶部１０５に対してイベントを一切出力しない（すなわち、アクセスログ記憶部１０５にイベントを記憶させない）。そのため、「監査モード」で動作している場合、状態観測手段１１３、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８は、何ら動作を行わないことになる。
【００６９】
また、本実施の形態において、アクセスポリシ生成手段は、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８によって実現される。また、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８が上記に示す動作を行うことによって、アクセスポリシ生成手段は、ポリシ生成ルール１１０に従って、アクセス監査手段１０２が出力したアクセス情報に基づいて、アクセスポリシを生成する。
【００７０】
ポリシ生成ルール記憶部１０９は、具体的には、磁気ディスク装置等の記憶装置によって実現される。ポリシ生成ルール記憶部１０９は、アクセスポリシを生成する際の生成ルールを含むポリシ生成ルール１１０を、予め複数記憶する。また、ポリシ生成ルール１１０は、分類ルール１１１と汎化ルール１１２とを含む。分類ルール１１１は、分類手段１０６がイベントの集合から１つ又は複数の部分集合を抽出する際の抽出ルールである。また、汎化ルール１１２は、汎化手段１０７がイベントの集合に基づいてイベントの汎化を行う際の汎化ルールである。
【００７１】
なお、本実施の形態において、アクセスポリシ生成システムは、システム１００が備える各手段のうち、例えば、アクセス監査手段１０２、ポリシ記憶部１０４、アクセスログ記憶部１０５、分類手段１０６、汎化手段１０７、ポリシ生成手段１０８、ポリシ生成ルール記憶部１０９及び状態観測手段１１３によって実現される。
【００７２】
また、本実施の形態において、システム１００の記憶装置は、アクセスポリシを生成するための各種プログラムを記憶している。例えば、システム１００の記憶装置は、コンピュータに、監視対象のプログラムによるリソースへのアクセスを検出し、検出したアクセスの内容を示すアクセス情報を出力するアクセス検出処理と、アクセスポリシの生成条件を示す情報であるポリシ生成ルールに従って、出力したアクセス情報に基づいて、アクセスポリシを生成するアクセスポリシ生成処理とを実行させるためのアクセスポリシ生成用プログラムを記憶している。
【００７３】
次に、動作について説明する。なお、本実施の形態では、ルール生成モードが設定されている場合のシステム１００の動作について説明する。図２は、ルール生成モードが設定されている場合に、アクセスポリシ生成システムを用いたシステム１００が実行するアクセスポリシ生成処理の一例を示すフローチャートである。
【００７４】
アクセスポリシ生成処理において、アクセス監査手段１０２は、対象プログラム１０１からのリソースアクセスを監視している。また、アクセス監査手段１０２は、アクセスが発生する毎に、アクセスの種類とアクセスの対象とを含むアクセス情報を抽出している。また、状態観測手段１１３は、アクセスが生じた時点における対象プログラム１０１の内部状態を取得する。例えば、対象プログラム１０１からのリソースアクセスが発生すると、状態観測手段１１３は、制御手段（例えば、コンピュータ）の内部状態を検出する。また、状態観測手段１１３は、検出した内部状態情報と、アクセス監査手段１０２が検出したアクセス情報とをイベントとしてまとめて、アクセスログとしてアクセスログ記憶部１０５に格納する（ステップＳ１０１）。
【００７５】
また、アクセス監査手段１０２は、所定の監視終了条件が成立したか否かを判断する（ステップＳ１０２）。監視終了条件が成立しないと判断すると、アクセス監査手段１０２は、ステップＳ１０１に戻り、ステップＳ１０１，Ｓ１０２の処理を繰り返し実行する。すなわち、アクセスの監視が所定の監視終了条件が成立するまで継続して実行され、監視中にアクセスが発生すると、ステップＳ１０１の処理が実行される。
【００７６】
監視終了条件は、アクセス監査手段１０２によるアクセス監視を終了する条件である。例えば、対象プログラム１０１に基づく処理が終了したことを条件として、監視終了条件が成立し、アクセス監査手段１０２は、アクセス監視を終了する。また、例えば、ルール生成モードの終了が入力装置１１０から指定された（ユーザによって指示入力された）ことを条件として、監視終了条件が成立し、アクセス監査手段１０２は、アクセス監視を終了する。また、例えば、所定期間が経過したことを条件として、監視終了条件が成立し、アクセス監査手段１０２は、アクセス監視を終了する。また、例えば、所定個数のアクセス情報がアクセスログ記憶部１０５に格納されたことを条件として、監視終了条件が成立し、アクセス監査手段１０２は、アクセス監視を終了する。また、例えば、上記に示したいずれかの任意の条件の組合せが成立すると、監視終了条件が成立し、アクセス監査手段１０２は、アクセス監視を終了してもよい。
【００７７】
なお、この実施の形態において、監視終了条件は予め定められているものとする。例えば、アクセス監査手段１０２は、予め監視終了条件を定めた設定情報に基づいて、ステップＳ１０２において監視終了条件が成立したか否かを判断する。
【００７８】
ステップＳ１０２で監視終了条件が成立すると判断すると、アクセス監査手段１０２は、アクセス監視を終了する。アクセス監視を終了すると、システム１００は、ポリシ生成ルール記憶部１０９に格納されているポリシ生成ルールを読み込む（ステップＳ１０３）。また、システム１００の分類手段１０６は、ポリシ生成ルールに含まれる（記述された）分類ルール１１１の内容に従って、アクセスログ記憶部１０５に格納されているイベントを分類する分類処理を実行する（ステップＳ１０４）。
【００７９】
また、汎化手段１０７は、分類手段１０６よって抽出された１つ又は複数のイベントの集合について、ポリシ生成ルールに含まれる（記述された）汎化ルール１１２の内容に従って、汎化処理を実行する（ステップＳ１０５）。システム１００は、ポリシ生成ルール記憶部１０９が格納する全てのポリシ生成ルール１１０について処理を終了したか否かを判断する（ステップＳ１０６）。全てのポリシ生成ルール１１０について処理を終了していないと判断すると、システム１００は、ステップＳ１０３に戻り、ステップＳ１０３〜Ｓ１０６の処理を繰り返し実行する。すなわち、システム１００は、ステップＳ１０３，Ｓ１０４，Ｓ１０５の一連の処理を、ポリシ生成ルール記憶部１０９に格納されている全てのポリシ生成ルール１１０に対して順に行う。
【００８０】
全てのポリシ生成ルール１１０について処理を終了したと判断すると、ポリシ生成手段１０８は、汎化手段１０７によって生成されたイベントの集合に基づいて、アクセスポリシを生成する（ステップＳ１０７）。そして、ポリシ生成手段１０８は、生成したアクセスポリシをポリシ記憶部１０４に格納する。
【００８１】
次に、分類手段１０６の動作について説明する。図３は、分類手段１０６がアクセスログ記憶部１０５に格納される各イベントを分類する分類処理（図２のステップＳ１０４）の一例を示すフローチャートである。
【００８２】
まず、分類手段１０６が分類処理に用いる分類ルール１１１について説明する。本実施の形態において、分類ルール１１１には、「選択分類ルール」と「分割分類ルール」との２種類が存在する。「選択分類ルール」は、イベントの集合から１つの部分集合を抽出する条件を示す情報である。また、部分集合を抽出する条件とは、抽出された部分集合に属するイベントが満たすべき条件である。
【００８３】
「分割分類ルール」は、イベントの集合を複数の部分集合に分割するための条件を示す情報である。また、複数の部分集合に分割するための条件とは、イベントのどの属性が同一の値と見なされた場合に同じ部分集合に属するかを示す条件である。ただし、部分集合に含まれるイベントが１つしかない場合には除外される。
【００８４】
また、分類ルール１１１は、その分割ルール１１１に従ってイベントを処理した後に、抽出したイベントをアクセスログ記憶部１０５から削除するか否かを指定するフラグ（削除フラグという）を含む。例えば、分類手段１０６は、分類ルール１１１の削除フラグにおいてイベントを削除する旨が設定されている場合、イベントを処理すると、その処理したイベントをアクセスログ記憶部１０５から削除する。
【００８５】
分類処理において、分類手段１０６は、まず、ステップＳ１０３で読み込んだ分類ルール１１１が選択分類ルールでであるか否かを判定する（ステップＳ２０１）。すなわち、分類手段１０６は、分類ルール１１１が選択分類ルールであるか分割分類ルールであるかを判定する。
【００８６】
読み込んだ分類ルール１１１が選択分類ルールであると判定すると、分類手段１０６は、アクセスログ記憶部１０５に格納されているイベントの集合から、選択分類ルールに指定された条件に合致するイベントを抽出する（ステップＳ２０２）。そして、分類手段１０６は、分類ルール１１１のイベント削除フラグでイベントを削除する旨が指定されていれば、抽出したイベントをアクセスログ記憶部１０５から削除する（ステップ２０５）。また、分類手段２０６は、抽出したイベントを汎化手段１０７に渡す。
【００８７】
読み込んだ分類ルール１１１が分割分類ルールであると判定すると、分類手段１０６は、アクセスログ記憶部１０５に格納されているイベントの集合を、分割分類ルールに指定された条件に合致する属性が同一の値をもつイベント集合に分割する。そして、分類手段１０６は、分割後に要素数が２つ以上あるイベントの集合を抽出する（ステップＳ２０３）。次に、分類手段２０６は、分類ルール１１１のイベント削除フラグを調べ、削除フラグでイベントを削除する旨が指定されていれば、抽出したイベントの集合に含まれるイベントをアクセスログ記憶部１０５から削除する（ステップ２０５）。また、分類手段２０６は、抽出したイベントの集合を汎化手段１０７に渡す。
【００８８】
なお、本実施の形態では、分類ルール１１１が「選択分類ルール」又は「分割分類ルール」のいずれかのルールのみから成っている場合について説明するが、分類ルール１１１は、それらのルールが複数指定され、ＡＮＤ又はＯＲで結合されていてもよい。例えば、分類ルール１１１は、選択分類ルールＡと選択分類ルールＢと分割分類ルールＣとを含み、それらのルールＡ，Ｂ，ＣがＡＮＤで組み合わされたものであってもよい。この場合、分類手段１０６は、選択分類ルールＡに従ってイベントの集合から抽出したイベント集合に対して、さらに選択分類ルールＢを適用してイベントの集合を抽出する。そして、分類手段１０６は、更に、その抽出したイベント集合に対して、分割分類ルールＣを適用してイベントの集合を抽出するようにしてもよい。
【００８９】
次に、汎化手段１０７の動作について説明する。図４は、汎化手段１０７がイベントを汎化する汎化処理（図２のステップＳ１０５）の一例を示すフローチャートである。汎化ルール１１２は、分類手段１０６によって抽出されたイベントの集合に対して適用される。例えば、分類ルール１１１が分割分類ルールである場合、分類手段１０６によってイベントの集合が複数抽出される。この場合、分類手段１０６によって抽出されたそれぞれのイベントの集合に対して、順に汎化手段１０７による汎化処理が適用される。汎化手段１０７の処理内容は、汎化ルール１１２に含まれる（記述されている）。
【００９０】
まず、汎化手段１０７が汎化処理に用いる汎化ルール１１２について説明する。本実施の形態において、汎化ルール１１２には、「直接汎化ルール」と「ＧＬＯＢ汎化ルール」との２種類がある。「直接汎化ルール」は、イベントの集合に含まれるそれぞれのイベントのある属性を、指定された値に直接置き換える処理方法を指定する情報である。また、イベントのどの属性を置き換えるかを示す情報は、直接汎化ルールの条件部に記述されている。また、値が複数指定された場合、汎化手段１０７は、汎化対象のイベントの複製を生成し、複製を含む複数のイベントについて、それぞれのイベントの属性の値を指定された値に置き換える。
【００９１】
「ＧＬＯＢ汎化ルール」は、イベントの集合に含まれるそれぞれのイベントのある属性を、１つ又は複数のＧＬＯＢパターンに置き換える処理方法を指定する情報である。また、イベントのどの属性を置き換えるかを示す情報は、ＧＬＯＢ汎化ルールの条件部に記述されている。また、複数のパターンに置き換える場合、汎化手段１０７は、汎化対象のイベントの複製を生成し、複製を含む複数のイベントについて、それぞれのイベントの属性の値をそれぞれのパターンに置き換える。
【００９２】
汎化処理において、汎化手段１０７は、まず、ステップＳ１０３で読み込んだ汎化ルール１１２が直接汎化ルールであるか否かを判定する（ステップＳ３０１）。すなわち、汎化手段１０７は、汎化ルール１１２が直接汎化ルールかＧＬＯＢ汎化ルールかを判定する。
【００９３】
読み込んだ汎化ルール１１２が直接汎化ルールであると判定すると、汎化手段１０７は、処理対象としているイベント集合に含まれる各イベントそれぞれに対して、直接汎化ルールに記述された条件に合致する属性を、直接汎化ルールで指定された属性値に置き換える（ステップＳ３０２）。また、読み込んだ汎化ルール１１２がＧＬＯＢ汎化ルールであると判定すると、汎化手段１０７は、処理対象としているイベント集合に含まれる各イベントの属性のうち、ＧＬＯＢ汎化ルールに記述された条件に合致する属性値からＧＬＯＢパターンを生成する。そして、汎化手段１０７は、その条件に合致する属性値を、生成したＧＬＯＢパターンに置き換える（ステップＳ３０３）。
【００９４】
汎化手段１０７は、分類手段１０６が抽出したイベント集合のうち、未処理のイベント集合があるか否かを判断する（ステップＳ３０４）。未処理のイベント集合があると判断すると、汎化手段１０７は、ステップＳ３０１に戻り、ステップＳ３０１〜Ｓ３０４の処理を繰り返し実行する。すなわち、汎化手段１０７は、分類手段１０６によって複数のイベント集合が抽出されている場合、全てのイベント集合に対して、上記に示したステップＳ３０１〜Ｓ３０４の処理を繰り返す。また、汎化手段１０７は、上記の処理に従って生成したイベントを、ポリシ生成手段１０８に渡す。
【００９５】
次に、ＧＬＯＢ汎化ルールが与えられた場合の汎化手段１０７の動作を説明する。図５は、ＧＬＯＢ汎化ルールが与えられた場合に、汎化手段１０７が行う変換処理（図４のステップＳ３０３）の一例を示すフローチャートである。まず、汎化手段１０７は、分類手段１０６が抽出したイベント集合について、与えられた複数の文字列に含まれるパスセパレータ（例えば、ＵＮＩＸやＬｉｎｕｘの場合「/ 」）の数を数え、それぞれのパスの深さを算出する。そして、汎化手段１０７は、算出したパスの深さに基づいて、同一の深さのパスの集合を抽出する（ステップＳ４０１）。
【００９６】
また、汎化手段１０７は、抽出した同一の深さのパスの集合に含まれるそれぞれのパスのファイル名・ディレクトリ名部分（パスコンポーネントという）を、「. 」をデリミタとしてトークン化する（ステップＳ４０２）。ここで、「. 」をデリミタとしてトークン化するのは、拡張子を特別扱いするためである。なお、汎化手段１０７は、「. 」をデリミタとして用いる方法以外のトークン化のルールを用いてもよい。例えば、汎化手段１０７は、数字と英字とが別々のトークンになるルールを用いて、パスコンポーネントをトークン化してもよい。また、例えば、汎化手段１０７は、「- 」や「_ 」をデリミタとして加えて、パスコンポーネントをトークン化してもよい。また、汎化手段１０７は、敢えてパスコンポーネントをトークン化せずに、文字列に対して直接に最長共通部分列を算出してもよい。
【００９７】
パスコンポーネントをトークン化した後、汎化手段１０７は、トークン列から最長共通部分列を算出して、トークン列の共通部分と非共通部分とを調べる（ステップＳ４０３）。そして、汎化手段１０７は、抽出した非共通部分を「* 」に置き換える（ステップＳ４０４）。
【００９８】
また、汎化手段１０７は、全てのコンポーネントについて処理を終了したか否かを判断する（ステップＳ４０５）。全てのコンポーネントについて処理を終了していないと判断すると、汎化手段１０７は、ステップＳ４０２に戻り、ステップＳ４０２〜Ｓ４０５の処理を繰り返し実行する。すなわち、汎化手段１０７は、ステップＳ４０２からステップＳ４０４までの処理を、全てのパスコンポーネントに対して繰り返し行う。
【００９９】
また、汎化手段１０７は、全てのパスについて処理を終了したか否かを判断する（ステップＳ４０６）。全てのパスについて処理を終了していないと判断すると、汎化手段１０７は、ステップＳ４０１に戻り、ステップＳ４０１〜Ｓ４０６の処理を繰り返し実行する。すなわち、汎化手段１０７は、ステップＳ４０１からステップＳ４０５までの処理を、全ての同じ深さのパスに対して繰り返し行う。
【０１００】
なお、汎化手段１０７は、ステップＳ４０３において、トークン列から最長部分列を抽出するために、例えば、ＬＣＳ（Longest Common Substring）アルゴリズムを用いればよい。
【０１０１】
また、本実施の形態では、汎化ルール１１２として、直接汎化ルールとＧＬＯＢ汎化ルールという２つの種類のルールを定義して用いる場合を説明したが、直接汎化ルールやＧＬＯＢ汎化ルール以外のルールを定義して用いてもよい。例えば、ＧｌＯＢではなく正規表現でイベントを汎化するルールを定義して用いてもよい。また、イベントの集合をそのイベントの集合を含む別のイベントの集合に対応付けることが可能な規則（ルール）であれば、どのようなルールであっても汎化ルール１１２として用いることができる。
【０１０２】
次に、ポリシ生成手段１０８の動作について説明する。ポリシ生成手段１０８は、まず、汎化手段１０７によって生成されたイベントの集合から重複するイベントを取り除く。すなわち、同一の属性をもつイベントが複数ある場合、ポリシ生成手段１０８は、１つのイベントを残して、その残したイベント以外のイベントを削除する。ここで、ポリシ生成手段１０８は、同一か否かを判定する際に、アクセスポリシに反映させない属性（例えば、内部状態を示す属性）を考慮しない。汎化手段１０７は、上記の処理を行った後、削除せずに残したイベントを、アクセスポリシの許可ルールに変換する。
【０１０３】
次に、更に具体的な例を用いて、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８の動作について説明する。図６は、アクセスログ記憶部１０５に格納されるイベントの集合の例を示す説明図である。本実施の形態では、図６に示すように、アクセスログ記憶部１０５は、アクセスの種類（アクセス名）と、アクセスの対象と、アクセス時のプログラムの内部状態とを含むイベントを、表形式で格納する。
【０１０４】
「アクセスの種類（アクセス名）」は、対象プログラム１０１に基づくリソース１０３へのアクセスの方法を示す情報である。例えば、イベントは、アクセスの種類として、ファイルの読み込み（「read」）やファイルへの書き込み（「write 」）等を含む。また、「アクセスの対象」は、対象プログラム１０１に基づくアクセスによって操作対象とされたファイル等のリソース１０３を示す情報である。
【０１０５】
「内部状態」は、アクセス時のプログラムの内部状態を示す情報である。ここで、アクセス時のプログラムの内部状態は、一般に、長い文字列又は数値列で表されるが、本実施の形態では、見やすくするために内部状態を単一の数値に置き換えている。図６において、数値が同じ値であれば、それらのアクセスに対して同一の内部状態をもつものとする。
【０１０６】
図７は、ポリシ生成ルール記憶部１０９に格納されているポリシ生成ルール１１０の例を示す説明図である。本実施の形態では、図７に示すように、ルールＲ０１，ルールＲ０２，ルールＲ０３の３つのポリシ生成ルール１１０が定義されている場合を説明する。
【０１０７】
まず、３つのポリシ生成ルール１１０のうちルールＲ０１を用いて処理を実行する場合を具体的に説明する。図８は、ポリシ生成ルールＲ０１を用いて処理を実行する場合の例を示す説明図である。
【０１０８】
図７に示すように、ポリシ生成ルールＲ０１には、分類ルールとして（アクセス対象の先頭="/tmp/" ）という選択分類ルールが記述されている。このことは、ポリシ生成ルールＲ０１が、イベントの集合から、「アクセス対象」が「/tmp/ 」で始まるイベントを抽出するという条件を示すルールであることを意味する。従って、図８に示すように、分類対象とするイベント集合Ｃ０１に対して分類手段１０６による分類処理を適用すると、その分類処理の結果、イベントＥ０２から成るイベントの集合Ｃ０２が抽出される。
【０１０９】
また、図７に示すように、ポリシ生成ルールＲ０１には、汎化ルールとして（アクセス対象 => "/tmp/*"）という直接汎化ルールが記述されている。このことは、ポリシ生成ルールＲ０１が、分類手段１０６によって抽出されたイベント集合の各要素に対して、「アクセス対象」を「/tmp/*」に置き換えることを指定するルールであることを意味している。従って、図８に示すように、分類手段０６によって抽出された部分集合Ｃ０２に対して、汎化手段１０７による汎化処理を適用すると、その汎化処理の結果、イベントＥ１１から成るイベントの集合Ｃ０３が生成され、ポリシ生成手段１０８に対して出力される。
【０１１０】
また、図７に示す例では、ポリシ生成ルールＲ０１において、イベントを削除する旨の削除フラグが設定されている（本例では、削除フラグが○に設定されている）。そのため、汎化手段１０７は、上記に示す処理を実行する際に、分割手段１０６によって抽出されたイベントＥ０２を、アクセスログ記憶部１０５から削除する。
【０１１１】
次に、３つのポリシ生成ルール１１０のうちルールＲ０２を用いて処理を実行する場合を具体的に説明する。図９は、ポリシ生成ルールＲ０２を用いて処理を実行する場合の例を示す説明図である。
【０１１２】
図７に示すように、ポリシ生成ルールＲ０２には、分類ルールとして（内部状態）を条件とする分割分類ルールが記述されている。このことは、ポリシ生成ルールＲ０２が、分類対象とするイベントの集合を、「内部状態」が同じものか否かに着目して分割する（ただし、分割後、要素数が１つしかない部分集合を除外する）ルールであることを意味する。従って、図９に示すように、イベント集合Ｃ１１に対してポリシ生成ルールＲ０２の分割分類ルールを適用して分類処理を行った場合、その分類処理の結果、イベントＥ０３，０Ｅ０４から成るイベントの集合Ｃ１２ａと、イベントＥ０６，Ｅ０７，Ｅ０８，Ｅ０９から成るイベントの集合Ｃ１２との２つのイベント集合が抽出される。
【０１１３】
また、図７に示すように、ポリシ生成ルールＲ０２には、汎化ルールとして（アクセス対象）を条件とするＧＬＯＢ汎化ルールが記述されている。このことは、ポリシ生成ルールＲ０２が、分類手段１０６によって抽出されたイベント集合に含まれる各イベントのアクセス対象をＧＬＯＢパターンに置き換えることを指定するルールであることを意味している。従って、図９に示すように、イベント集合Ｃ１２ａに含まれるイベントのアクセス対象に対して、図５に示したＧＬＯＢ汎化処理を適用すると、汎化手段１０７によってイベントＥ１２が生成される。同様に、イベント集合Ｃ１２ｂに対してＧＬＯＢ汎化処理を適用すると、汎化手段１０７によってイベントＥ１３，Ｅ１４が生成される。これらのイベントＥ１２，Ｅ１３，Ｅ１４が、汎化手段１０７によってポリシ生成手段１０８に対して出力される。
【０１１４】
また、図７に示す例では、ポリシ生成ルールＲ０２において、イベントを削除する旨の削除フラグが設定されている。そのため、汎化手段１０７は、上記に示す処理を実行する際に、分割手段１０６によって抽出されたイベントＥ０３，Ｅ０４，Ｅ０６，Ｅ０７，Ｅ０８，Ｅ０９を、アクセスログ記憶部１０５から削除する。
【０１１５】
次に、３つのポリシ生成ルール１１０のうちルールＲ０３を用いて処理を実行する場合を具体的に説明する。図１０は、ポリシ生成ルールＲ０３を用いて処理を実行する場合の例を示す説明図である。
【０１１６】
図７に示すように、ポリシ生成ルールＲ０３には、分類ルールとして（TRUE）という条件をもつ選択分類ルールが記述されている。このことは、ポリシ生成ルールＲ０３が、分類対象とするイベントの集合から、無条件にイベントを抽出することを示すルールであることを意味する。すなわち、ポリシ生成ルールＲ０３が、分類手段１０６によってアクセスログ記憶部１０５に現在格納されている全てのイベントを抽出するルールであることを意味する（図１０に示すイベント集合Ｃ２２参照）。
【０１１７】
また、図７に示すように、ポリシ生成ルールＲ０３には、汎化ルールとして（）という直接汎化ルールが記述されている。このことは、ポリシ生成ルールＲ０３が、何も汎化処理を行わないルールであることを意味している。従って、汎化手段１０７は、ポリシ生成ルールＲ０３を用いる場合、アクセスログ記憶部１０５に格納されている全てのイベント（図１０に示すイベント集合Ｃ２３参照）を、そのままポリシ生成手段１０８に対して出力する。
【０１１８】
以上の処理によって、最終的に、図１１に示すイベントがポリシ生成手段１０８に入力される。ポリシ生成手段１０８は、入力したイベントから重複を取り除く。また、ポリシ生成手段１０８は、入力したイベントに示されるアクセスを許可し、入力したイベントに示されるアクセス以外のアクセスを禁止するアクセスポリシを生成する。図１２は、ポリシ生成手段１０８が生成し出力するアクセスポリシの例を示す説明図である。図１２に示すように、本例では、ポリシ生成手段１０８は、ポリシＰ０１，Ｐ０２，Ｐ０３，Ｐ０４，Ｐ０５，Ｐ０６に合致するアクセスを許可し、ポリシＰ０１，Ｐ０２，Ｐ０３，Ｐ０４，Ｐ０５，Ｐ０６に合致するアクセス以外のアクセスを禁止するアクセスポリシを生成する。
【０１１９】
以上のように、本実施の形態で示したアクセスポリシ生成システムにより、以下に挙げる効果を得ることができる。まず、本実施の形態によれば、より誤検知の少ないアクセスポリシを生成することができる。例えば、図６に示す「 /tmp/0001.tmpへの write」という１つのイベントＥ０２しか観測できなかった場合であっても、図１２に示す「/tmp/*への writeを許可する」というアクセスポリシを生成できている。例えば、「 /tmp/0001.tmpへの write」というイベントを観測した場合であっても、「 /tmp/0001.tmpへの write」は一時ファイル書き出しのイベントであり、いずれ「 /tmp/0002.tmp」等の他のファイルへの書き出しのイベントが生じる可能性が高い。プラットフォーム上の慣習に由来するルールであるポリシ生成ルールＲ０１を与えることによって、このファイルアクセスを許可するルールＰ０１を生成できていることが分かる。なお、この誤検知の少ないアクセスポリシを生成できるという効果は、従来技術１、従来技術２及び従来技術３による方法を用いたとしても、実現できないものである。
【０１２０】
また、本実施の形態によれば、「プログラム中の同一の場所から呼び出されたリソースアクセスには同一のアクセスポリシが適用可能」という性質に由来するルールであるポリシ生成ルールＲ０２を用いることにより、アプリケーションに依存したリソースアクセスに対しても誤検知の少ないアクセスポリシを生成できている。具体的には、図８に示すように、イベント集合Ｅ０６，Ｅ０７，Ｅ０８，Ｅ０９からイベントＥ１３とＥ１４とを生成し、アクセスポリシを生成できている。これらのイベントは、「/var/www」に配置されている（格納されている）Ｗｅｂコンテンツへのアクセスである可能性が高く、いずれ「/var/www/doc/result.xls」等のファイルへのアクセスが生じる可能性が高い。本実施の形態によれば、ポリシ生成ルールＲ０２を与えることによって、このファイルアクセスを許可するルールＰ０４を生成できていることが分かる。なお、このアプリケーションに依存したリソースアクセスに対しても誤検知の少ないアクセスポリシを生成できるという効果は、従来技術３による方法を用いた場合には実現できるが、従来技術１や従来技術２による方法を用いたとしても、実現できないものである。
【０１２１】
言い換えると、本実施の形態では、従来技術３による方法の特長を生かしつつ、そのプラットフォーム上の慣習等に由来するプログラム共通の知識（プログラム共通の情報）を記述した（含む）ポリシ生成ルール１１０を用いる。そのようなポリシ生成ルール１１０を用いることにより、限られた観測イベントから、未観測の正当なリソースアクセスを許可する（誤検知の可能性が低い）アクセスポリシを生成できる可能性が高まる。
【０１２２】
また、ポリシ生成ルール１１０として、そのプラットフォーム上の慣習等に由来するプログラム共通の知識を記述しておくことによって、検知漏れの少ないアクセスポリシを生成できる可能性も高まる。
【０１２３】
例えば、仮に、図６に示すイベントＥ０１とＥ０２とが同一の内部状態をもっているとする。既に述べたように、発生する確率は低いものの、対象プログラム１０１の実装の仕方によっては、複数のイベントが同一の内部状態をもつような場合も生じうる。この場合、ポリシ生成ルール１０１としてルールＲ０１を定義していないと、ルールＲ０２を用いた分類処理及び汎化処理によって、「 write/var/run/httpd.pid」と「write/tmp/0001.tmp」とがＧＬＯＢ汎化の対象となってしまう。本実施の形態によれば、ホリシ生成ルールＲ０１を定義している場合、図８に示す処理の段階でイベント集合Ｃ１１にイベントＥ０２を含まないので、このような過剰な汎化による検知漏れの可能性を抑えることができる。なお、この過剰な汎化による検知漏れの可能性を抑えることができるという効果も、従来技術１や従来技術２、従来技術３による方法を用いたとしても、実現できないものである。
【０１２４】
以上のように、本実施の形態によれば、ポリシ生成ルール１１０に従って、アクセス監査手段１０２が出力したアクセス情報に基づいて、アクセスポリシを生成する。すなわち、本実施の形態によれば、単に所定期間のアクセスの観測結果のみに基づいてアクセスポリシを生成するのでなく、個々のプログラムに依存しないイベントの共起関係に基づくポリシ生成ルール１１０に従って、アクセスポリシを生成する。従って、アクセスポリシの生成を自動化し、アクセスポリシ作成の手間を可能な限り軽減することができる。また、精度の高いアクセスポリシを生成し、人手による修正の手間をできるだけ軽減することができる。
【０１２５】
また、本実施の形態によれば、個々のプログラムに依存しないイベントの共起関係に基づくアクセスポリシ生成ルール（ポリシ生成ルール１１０）を、分類ルールと汎化ルールとの組という形式で予め記述する。そして、そのアクセスポリシ生成ルール１１０に従って、分類手段１０６と汎化手段１０７とを順に適用して処理することにより、従来技術による方法を用いた場合と比較して、誤検知の点においても検知漏れの点においても、より精度の高いアクセスポリシを生成できる。
【０１２６】
実施の形態２．
次に、本発明の第２の実施の形態について図面を参照して説明する。図１３は、アクセスポリシ生成システムを用いたシステム１００の他の構成例を示すブロック図である。本実施の形態において、システム１００は、図１で示した構成要素に加えて、状態記憶部１１４を含む点で、第１の実施の形態と異なる。なお、システム１００の状態記憶部１１４以外の構成要素の機能は、第１の実施の形態で示したそれらの機能と同様である。
【０１２７】
状態記憶部１１４は、例えば、システム１００上に搭載されているメインメモリである。例えば、状態記憶部１１は、システム１００を実現する情報処理装置のメモリによって実現される。
【０１２８】
本実施の形態では、システム１００が「監査モード」で動作している場合、システム１００はポリシの生成のための動作を行わず、アクセス監査手段１０２からアクセスログ記憶部１０５に対してイベントは一切出力されない。そのため、「監査モード」で動作する場合、分類手段１０６、汎化手段１０７及びポリシ生成手段１０８は、何ら動作を行わない。ただし、本実施の形態では、実施の形態１と異なり、状態観測手段１１３は、リソースアクセスが生じた時点におけるシステム１００の内部状態を取得（検出）する動作を行う。
【０１２９】
また、本実施の形態では、第１の実施の形態と異なり、アクセス監査手段１０２は、リソースアクセス時のアクセス名やアクセス対象だけでなく、アクセス時の内部状態も考慮してアクセス可否の判定を行う。具体的には、本実施の形態では、例えば、図１４に示すアクセスポリシが与えられる。すなわち、アクセスポリシには、アクセス名やアクセス対象だけでなく、状態を考慮して判定するか否かを示すフラグ（状態フラグ）が指定される。そして、アクセス監査手段１０２は、状態フラグを含むアクセスポリシを用いて、アクセス可否の判定を行う。
【０１３０】
次に、動作について説明する。図１５は、本実施の形態におけるアクセス監査手段１０２が行うアクセス監査処理の一例を示すフローチャートである。アクセス監査手段１０２は、アクセスを観測（検出）すると、アクセスポリシの先頭のルールを調べ、先頭のルールを取り出す（ステップＳ５０１）。また、アクセス監査手段１０２は、取り出したルールのアクセス名とアクセス対象とが合致するか否かを判定する（ステップＳ５０２）。アクセス名とアクセス対象とが合致する場合、アクセス監査手段１０２は、その取り出したルールに状態フラグが設定されているか否かを調べる（ステップＳ５０３）。状態フラグが設定されている場合、アクセス監査手段１０２は、その時点における状態観測手段１１３での観測内容（すなわち、状態観測手段１１３が検出した現在のシステム１００の内部状態）と、その取り出したルールに示される状態フラグが「許可」を示しているか「拒否」を示しているかを合わせて状態記憶部１１４に保存する（ステップＳ５０４）。
【０１３１】
そして、アクセス監査手段１０２は、その取り出したルールの記述に従って、アクセスを「許可」又は「拒否」する（ステップＳ５０５）。ステップＳ５０３で状態フラグが設定されていない場合、アクセス監査手段１０２は、状態記憶部１１４に状態を保存せずに、そのままステップＳ５０５に移行する。
【０１３２】
また、ステップＳ５０２でアクセス名とアクセス対象とが合致しないと判定した場合、アクセス監査手段１０２は、その取り出したルールに状態フラグが設定されているか否かを調べる（ステップＳ５０６）。状態フラグが設定されている場合、アクセス監査手段１０２は、その時点において状態観測手段１１３で観測された内容（すなわち、状態観測手段１１３が検出した現在のシステム１００の内部状態）と同一の状態を示す情報が、状態記憶部１１４に既に保存されているか否かを調べる（ステップＳ５０７，Ｓ５０８）。同一の状態を示す情報が保存されている場合、アクセス監査手段１０２は、その同一の状態を示す情報と合わせて保存されている状態フラグが「拒否」を示しているか「許可」を示しているかの情報に従って、アクセス制御を行う（ステップＳ５０５）。
【０１３３】
保存されていない場合、アクセス監査手段１０２は、アクセスポリシに含まれる次のルールに対して、ステップＳ５０２以下の処理を繰り返し実行する。この場合、アクセス監査手段１０２は、アクセスポリシに未処理のルールが含まれるか否かを判断する（ステップＳ５０９）。未処理のルールがある場合、アクセス監査手段１０２は、アクセスポリシから次のルールを読み出す（ステップＳ５１０）。そして、アクセス監査手段１０２は、ステップＳ１０２の処理に戻る。次のルール（未処理のルール）がない場合、アクセス監査手段１０２は、システム１００の状態がどのルールにも合致しなかったと判定し、そのまま処理を終了する。
【０１３４】
次に、上記に示したアクセス監査手段１０２の動作を、具体例を用いて説明する。本実施の形態では、図１６に示すように、システム１００においてリソースアクセスが順に生じた場合を説明する。図１６に示すリソースアクセスＥ２０６が生じたとすると、このアクセスは、アクセスルールＰ１５（図１４参照）に示す条件に合致する。また、アクセスルールＰ１５には状態フラグが設定されているので、アクセス監査手段１０２は、ステップＳ５０４の処理を実行することにより、状態記憶部１１４に、（状態５，許可）という一組の情報を保存する。
【０１３５】
そして、その後にリソースアクセスＥ２１０が生じたとすると、このリソースアクセスはアクセスルールＰ１５に示す条件に合致しないが、アクセスルールＰ１５には状態フラグが設定されているので、アクセス監査手段１０２は、状態記憶部１１４から、リソースアクセスＥ２１０の状態５と同一の状態が保存されてるか否か検索する（ステップＳ５０７参照）。その検索の結果、アクセス監査手段１０２は、同一の状態をもつ（状態５，許可）という情報を検索して抽出し、その抽出した情報に基づいて、アクセスＥ２１０を許可すると判定する（ステップＳ５０５参照）。
【０１３６】
また、本実施の形態において、ポリシ生成手段１０８は、第１の実施の形態で示した動作に加えて、内部状態による分割分類ルールを用いて生成されたイベントに対応するアクセス許可ルールに対して、状態フラグを設定するという処理を行う。そのようにすることにより、ポリシ生成手段１０８は、図１４に例示したアクセスポリシを生成することが可能となる。
【０１３７】
なお、ポリシ生成ルール１１０に対して、予め状態フラグを設定できるようにしてもよい（図１７参照）。この場合、ポリシ生成手段１０８は、第１の実施の形態で示した動作に加えて、状態フラグが設定されたポリシ生成ルールを用いて生成されたイベントに対応するアクセス許可ルールに対して、状態フラグを設定するという処理を行う。
【０１３８】
以上のように、本実施の形態によれば、監査モードでシステム１００が動作している場合であっても、状態観測手段１１３がシステム１００の状態を観測する。また、アクセス監査手段１０２は、状態観測手段１１３が検出した状態を考慮しながら、アクセス可否の判定を行う。さらに、ポリシ生成手段１０８が、予め状態フラグをもつアクセスポリシを事前に生成しておく。そのようにすることによって、ルール生成モードで観測したイベントの数が足りなかったり、ＧＬＯＢ汎化処理では十分な汎化ができない場合であっても、より正確なアクセス可否を実現することが可能となる。
【０１３９】
例えば、第１の実施の形態において生成したアクセスポリシ（図１２参照）の内容では、アクセス監査手段１０２は、「/var/www/copyright.txtへのread」アクセスを許可しないことになる。しかし、ＷＷＷサーバの動作として、「/var/www/index.html 」へのアクセスが許可されている以上、「/var/www/ 」以下の txtファイルへのアクセスも許可するように設定するのが自然である。第１の実施の形態において、図１２に示すアクセスポリシを生成しているのは、ルール生成モードで動作している間に、アクセス監査手段１０２が「/var/www」内の「.html 」という拡張子ををつファイルへのアクセスしか観測できなかったので（図６に示すイベントＥ０６，Ｅ０７参照）、十分な汎化処理を行えなかったことが原因である。
【０１４０】
本実施の形態によれば、例えば、ルール生成モードで観測したイベントの内容が図６に示すイベントと同じであったとしても、上記のように具体的に示したように、アクセス監査手段１０２は、「/var/www/copyright.txtへのread」アクセスを許可する。すなわち、実施の形態１と比較して、より誤検知の少ないアクセス制御を実現することができる。
【０１４１】
実施の形態３．
次に、本発明の第３の実施の形態について図面を参照して説明する。図１８は、アクセスポリシ生成システムを用いたシステム１００の更に他の構成例を示すブロック図である。本実施の形態において、システム１００は、図１で示した構成要素に加えて、ポリシ生成ルール取得手段１１５を含む点で、第１の実施の形態と異なる。また、本実施の形態では、ポリシ生成ルール記憶部１０９は、必ずしもシステム１００内にある必要はなく、インターネット等のネットワークを介した別のホスト（例えば、ワークステーションやパーソナルコンピュータ等の情報処理装置）が含んでもよい。そして、その別のホストが、ポリシ生成ルール記憶部１０９が記憶するポリシ生成ルール１１０を管理してもよい。
【０１４２】
なお、システム１００のポリシ生成ルール取得手段１１５及びポリシ生成ルール記憶部１０９以外の構成要素の機能は、第１の実施の形態で示したそれらの機能と同様である。
【０１４３】
本実施の形態において、ポリシ生成ルール記憶部１０９は、図６に示した属性（分類ルール、汎化ルール及び削除フラグ）に加えて、システム１００が用いるオペレーティングシステム（ＯＳ）の種類やバージョンを示す識別子を含むポリシ生成ルール１１０を格納する。
【０１４４】
ポリシ生成ルール取得手段１１５は、具体的には、プログラムに従って動作するコンピュータ及びネットワークインタフェース部によって実現される。ポリシ生成ルール取得手段１１５は、システム１００のコンピュータ上で稼動するＯＳの種類及びバージョンを検出する機能を備える。また、ポリシ生成ルール取得手段１１５は、その検出したＯＳの種類及びバージョンに合致するポリシ生成ルール１１０を、ポリシ生成ルール記憶部１０９に問い合わせる機能を備える。また、ポリシ生成ルール取得手段１１５は、ポリシ生成ルール１１０に設定されているバージョン識別子を参照し、バージョンが合致するポリシ生成ルールのみを取得する機能を備える。
【０１４５】
この場合、例えば、ポリシ生成ルール取得手段１１５は、ポリシ生成ルール１１０の検索要求とともに、ＯＳの種類及びバージョンを示す情報を、ネットワークを介して、ポリシ生成ルール記憶部１０９を備えるホストに送信する。すると、ホストは、受信した情報に示されるＯＳの種類及びバージョンに合致するポリシ生成ルール１１０を、ポリシ生成ルール記憶部１０９から抽出する。そして、ホストは、抽出したポリシ生成ルール１１０を、ネットワークを介してシステム１００に送信する。
【０１４６】
図１９は、ＯＳの種類を追加して含むポリシ生成ルール１１０の例を示す説明図である。例えば、システム１００がＯＳとしてＬｉｎｕｘを用いて動作している場合を考える。この場合、ポリシ生成ルール取得手段１１５は、ポリシ生成ルール記憶部１０９から、ポリシ生成ルールＲ２０１，Ｒ２０３，Ｒ２０４を取得し、分類手段１０６及び汎化手段１０７に渡す。
【０１４７】
また、システム１００がＯＳとしてＷｉｎｄｏｗｓ（登録商標）を用いて動作している場合を考える。この場合、ポリシ生成ルール取得手段１１５は、ポリシ生成ルール記憶部１０９から、ポリシ生成ルールＲ２０２，Ｒ２０３，Ｒ２０４を取得し、分類手段１０６及び汎化手段１０７に渡す。
【０１４８】
また、本実施の形態では、分類手段１０６は、ポリシ生成ルール取得手段１１５が取得したポリシ生成ルール１１０に基づいて分類処理を行い、システム１００が用いるＯＳに合致したイベント集合を生成する。また、汎化手段１０７は、ポリシ生成ルール取得手段１１５が取得したポリシ生成ルール１１０に基づいて汎化処理を行い、システム１００が用いるＯＳに合致したイベント集合を生成する。そして、ポリシ生成手段１０８は、それらのイベント集合にもとづいて、、システム１００が用いるＯＳに合致したアクセスポリシを生成する。
【０１４９】
以上のように、本実施の形態によれば、システム１００のプラットフォームに適したポリシ生成ルール１００を参照して（システム１００が用いるＯＳに合致したルールを用いて）、アクセスポリシを生成する。そのため、ＯＳのバージョンが更新された場合であっても、最適なアクセスポリシを生成することができる。
【０１５０】
例えば、慣習的に、Ｌｉｎｕｘでは一時ファイルを「/tmp」に書き込むことが多く、Ｗｉｎｄｏｗｓではユーザのプロファイルディレクトリ内にある「Local Settings」ディレクトリ内のTempディレクトリに書き込むことが多い。そのため、ＯＳのバージョンが更新されると、適切にアクセス制御を行えなくなる可能性がある。本実施の形態では、システムが用いるＯＳに合致したポリシ生成ルール１１０を用いてアクセスポリシを生成するので、システム１００上で動作するプラットフォームに応じて、適切なアクセスポリシを生成することができる。
【０１５１】
実施の形態４．
次に、本発明の第４の実施の形態について図面を参照して説明する。図２０は、アクセスポリシ生成システムを用いたシステム１００の他の構成例を示すブロック図である。本実施の形態において、システム１００は、図１で示した構成要素のうち、状態観測手段１１３を含まない点で、第１の実施の形態と異なる。なお、システム１００の状態観測手段１１３以外の構成要素の機能は、第１の実施の形態で示したそれらの機能と同様である。
【０１５２】
本実施の形態によれば、システム１００は状態観測手段１１３をもたないので、生成するアクセスポリシの精度が、第１の実施の形態１で生成したアクセスポリシよりも低下する可能性が高いが、システム１００の構成を簡素化できるという長所がある。
【０１５３】
図２１は、本実施の形態におけるポリシ生成ルール１１０の例を示す説明図である。図２１に示すように、図７で示したルールと異なり、システム１００は、ポリシ生成ルールＲ３０２として、内部状態ではなく、アクセス対象の拡張子が同一か否かを判断して、イベント集合を分割するルールを用いる。本実施の形態では、図２１に示すルールを用いて処理を行った結果、システム１００は、図６に示すイベントから、図２２に示すアクセスポリシを生成する。そのため、第１の実施の形態で生成された図１２に示すアクセスポリシと比較して、誤検知の可能性が高くなっている。しかし、状態観測手段１１３が不要となりシステム構成が簡素化されているため、既存のシステムへの導入がより容易になるという長所がある。
【実施例】
【０１５４】
次に、本発明の具体的な実施例について説明する。なお、本実施例は、第１の実施の形態で示したアクセスポリシ生成システムを用いたシステム１００を具体化したものに相当する。
【０１５５】
図２３は、本実施例におけるアクセスポリシ生成システムを含むコンピュータ２００を示すブロック図である。コンピュータ２００は、ＯＳとしてＬｉｎｕｘがインストールされており、Ｌｉｎｕｘ上で動作するＷＷＷサーバとしての機能を備える。
【０１５６】
図２３に示すように、アクセスポリシ生成システムを含むコンピュータ２００は、ＷＷＷサーバ２０１と、システムコール監査手段２０２と、ファイルシステム２０３と、ポリシ記憶部２０４と、分類手段２０６と、汎化手段２０７と、ポリシ生成手段２０８と、アクセスログ記憶部２０５と、ポリシ生成ルール記憶部２０９と、スタック検査手段２１３とを含む。
【０１５７】
図２３に示すＷＷＷサーバ２０１は、監視対象プログラム１０１の具体例であり、Ｌｉｎｕｘ上で動作するサーバプログラムである。
【０１５８】
システムコール検査手段２０２は、アクセス監査手段１０２の具体例である。システムコール検査手段２０２は、Ｌｉｎｕｘのｐｔｒａｃｅシステムコールを利用することによって、対象プログラムに基づくシステムコールが発生する度に、ソフトウェア割り込みによってシステムコール名（アクセス名の例）と引数（アクセス対象の例）の内容を確認する処理を行う。または、コンピュータ２００は、システムコール検査手段２０２を直接カーネルモジュール（ドライバ）として実装し、システムコール呼び出しを直接仲介して、上記に示す情報（システムコール名及び引数）を取得するようにしてもよい。
【０１５９】
ファイルシステム２０３は、リソース１０３の具体例であり、Ｌｉｎｕｘによって管理されるファイルシステムである。
【０１６０】
ルール生成モードで動作する場合、システムコール検査手段２０２は、観測したアクセス情報をアクセスログ記憶部２０５に格納する。また、システムコール検査手段２０２は、対象プログラムによるシステムコールが発生したことを、スタック検査手段２１３に通知する処理を行う。
【０１６１】
スタック検査手段２１３は、状態観測手段１１３の具体例である。スタック検査手段２１３は、システムコールが呼び出された時点におけるＷＷＷサーバ２０１のコールスタックを検査する。
【０１６２】
スタック検査手段２１３は、コールスタックを検査することによって、そのシステムコールがプログラム中のどのようなプロシージャによって呼び出されたかを、プロシージャの呼び出し階層を遡って検査する。そして、スタック検査手段２１３は、その検査結果を示す情報（後述するコールスタック情報）を取得（抽出）する処理を行う。なお、コールスタックを検査することによって、その時点におけるプロシージャ呼び出しの階層を遡って調べることは、例えば、ｇｄｂ（ＧＮＵデバッガ）プログラム等のデバッガプログラムによって実現できる処理である。
【０１６３】
アクセスログ記憶部２０５は、ファイルを記憶するコンピュータ２００上のメインメモリ又は固定ディスク（例えば、磁気ディスク装置）であり、アクセス記憶部１０６の具体例である。アクセス記憶部２０６は、システムコール検査手段２０２によって検出されたシステムコール呼び出しを示すアクセス情報と、スタック検査手段２１３によって検査されたシステムコールの呼び出し時点におｋるコールスタック情報とを合わせて、イベントとして保存する。
【０１６４】
分類手段２０６、汎化手段２０７及びポリシ生成手段２０８は、それぞれ分類手段１０６、汎化手段１０７及びポリシ生成手段１０８の具体例であり、Ｌｉｎｕｘ上で動作するプログラムとして実装されている。
【０１６５】
ポリシ記憶部２０４は、ポリシ記憶部１０４の具体例であり、ファイルを記憶するコンピュータ２００上のメインメモリ又は固定ディスク（例えば、磁気ディスク装置）である。
【０１６６】
ポリシ生成ルール記憶部２０９は、ポリシ記憶部１０９の具体例であり、ファイルを記憶するコンピュータ２００上のメインメモリ又は固定ディスク（例えば、磁気ディスク装置）である。
【０１６７】
図２４は、アクセスログ記憶部２０５が格納するアクセスログの具体例を示す説明図である。本実施例では、アクセスログは、ＸＭＬ形式のデータとして格納される。図２４に示すように、アクセスログにおいて、それぞれのイベントは event要素で表され、 event要素の子要素の syscall要素がアクセス情報を表し、 syscall要素のname属性がアクセス名である。 syscall要素は子要素として１つ又は複数の arg要素をもつことができ、 arg要素がシステムコールの引数に相当する。 arg要素は value属性をもち、 value属性がシステムコールの引数の値に相当する。本例では、引数は常に１つであり、その唯一の引数がアクセス対象に相当する。
【０１６８】
また、 event要素の子要素の callstack要素の value属性がリソースアクセス呼び出し時のコールスタックの内容を表す。 callstack属性は、アドレスを１６進表記した文字列を「：」で区切った列で表される。図１５に示す例では、説明を簡単にするため、全てのイベントが２つのアドレスから成るコールスタックをもつ場合を示しているが、実際には、コールスタックは、データ長がもっと長く、長さもまちまちである。
【０１６９】
例えば、図２４に示すイベントＥ２１は、「/var/run/httpd.pid」をアクセス対象とする writeシステムコール呼び出しであり、呼び出し時のコールスタックが「 40008080:80008a5a」であるイベントを示す。
【０１７０】
なお、本実施例では、上記に示したように、ＸＭＬ形式のデータをアクセスログとして用いる場合を説明したが、別の形式のデータをアクセスログとして用いてもよい。また、アクセスログは、データベースに格納された表データのようなデータであってもよい。
【０１７１】
図２５は、ポリシ生成ルール記憶部２０９が格納するポリシ生成ルール２１０の具体例を示す説明図である。本実施例では、アクセスログと同様に、ポリシ生成ルール２１０も、ＸＭＬ形式のデータとして格納される。
【０１７２】
図２５に示すように、各ポリシ生成ルール２１０は、rule要素で表される。また、rule要素において、delete属性が指定可能であり、delete属性の値が「 yes」の場合には削除フラグが設定されていることを示す。rule要素はclassify要素とgeneralize要素とを子要素としてもち、それぞれ分類ルールと汎化ルールとも相当する。また、classify要素のmethod属性の値が「choice」の場合には選択分類ルールであることを示し、method属性の値が「divide」の場合には分割分類ルールであることを示す。また、select属性は、分類の条件を示しており、ＸＰａｔｈで記述される。ＸＰａｔｈは、ＸＭＬ文書中のノード（要素や属性等）を指定する記法であり、Ｗ３Ｃ勧告として公開されている。
【０１７３】
また、generalize要素のmethod属性の値が「direct」の場合には直接汎化ルールであることを示し、generalize要素の子要素の value属性の値が、置き換える値を示す。method属性の値が「ＧＬＯＢ」の場合にはＧＬＯＢ汎化ルールであることを示す。いずれの場合も、select属性にＸＰａｔｈ形式で記述された値を置き換えるノードを指定する。
【０１７４】
以下、分類手段２０６、汎化手段２０７及びポリシ生成手段２０８の具体的な手順について、具体例を用いて説明する。
【０１７５】
本実施例において、ポリシ生成ルールＲ１１に含まれる選択分類ルールＲ１２のselect属性の値は、「 syscall要素の最初の子の arg要素であり、かつ value属性の値が「 /tmp/」で始まっているノード」を選択するための条件式である。また、ポリシ生成ルールＲ１１に含まれる直接汎化ルールＲ１３のselect属性の値は、「 syscall要素の最初の arg要素の value属性」を表し、子要素として「/tmp/*」という値をもつ value属性が定義されている。
【０１７６】
ポリシ生成ルールＲ１１を用いた場合の分類手段２０６、汎化手段２０７及びポリシ生成手段２０８の具体的処理手順は以下のとおりである。分類手段２０６は、イベント集合を示すＸＭＬ文書（図２４参照）の各 event要素に対して、選択分類ルールＲ１２のselect属性で示されるＸＰａｔｈ形式の値を評価し、ＸＰａｔｈ形式で指示されたノードを含む event要素を選択する。その処理の結果、分類手段２０６は、 event要素Ｅ２２を選択する。
【０１７７】
次に、汎化手段２０７は、分類手段２０６が選択したイベントの集合（イベントＥ２２のみから成る）に対して、直接汎化ルールＲ１３のselect属性で示されるＸＰａｔｈ形式の値を評価し、ＸＰａｔｈ形式で指示されたノードの値を「/tmp/*」に置き換える。そのような処理を行うことにより、汎化手段２０７は、 event要素Ｅ２２の子の syscall要素の最初の arg要素の value属性の値を「/tmp/*」に変換する。そして、ポリシ生成ルールＲ１１にはdeleteフラグが設定されているため、イベントＥ２２の内容をポリシ生成手段２０８に渡した後、分類手段２０６は、アクセスログ記憶部２０５から削除する。
【０１７８】
次に、ポリシ生成ルールＲ１４を用いた場合の分類手段２０６、汎化手段２０７及びポリシ生成手段２０８の処理について具体的に説明する。ポリシ生成ルールＲ１４に含まれる選択分類ルールＲ１５のselect属性の値は、「name属性の値が「read」である syscall要素」を示す条件式である。また、分割分類ルールＲ１６のselect属性の値は、「子の callstack要素の value属性」を示す式である。また、ＧＬＯＢ汎化ルールＲ１７のselect属性の値は、「 syscall要素の最初の arg要素の value属性」を示す。
【０１７９】
なお、本実施例では、分類ルールを複数指定可能であり、それらの分類ルールをＡＮＤ結合で評価する場合を説明する。
【０１８０】
ポリシ生成ルールＲ１４を用いた場合の分類手段２０６、汎化手段２０７及びポリシ生成手段２０８の具体的処理手順は以下のとおりである。分類手段２０６は、ポリシ生成ルールＲ１１の処理後のイベント集合を示すＸＭＬ文書（図２６参照）の各 event要素に対して、ＧＬＯＢ汎化ルールＲ１７のselect属性で示されるＸＰａｔｈ形式の値を評価し、ＸＰａｔｈ形式で指示されたノードを含む event要素を選択する。その処理の結果、分類手段２０６は、 event要素Ｅ２３とＥ２４とを選択する。次に、分類手段２０６は、イベントＥ２３とＥ２４とから成るイベントの集合の各 event要素に対して、分割分類ルールＲ１６のselect属性で示されるＸＰａｔｈ形式で示されるノードの値が一致するイベントが、同じ部分集合に属するように分割する。本例の場合、イベントＥ２３とＥ２４との「子の callstack要素の value属性」が同じ値であるため、分類手段２０６は、分割分類ルールＲ１６を用いた分類処理後も、イベントＥ２３とＥ２４とから成るイベントの集合を残す。
【０１８１】
次に、汎化手段２０７は、上記の分類手段２０６が生成したイベントの集合（イベントＥ２３とＥ２４とから成る）に対して、ＧＬＯＢ汎化ルールＲ１７のselect属性で示されるＸＰａｔｈ形式の値を評価し、選択されたノードの値に対してＧＬＯＢ汎化処理を適用（実行）する。ＧＬＯＢ汎化ルールＲ１７のselect属性で示されるＸＰａｔｈ形式は、「 syscall要素の最初の arg要素の value属性」を示すため、汎化手段２０７は、ノードの値として、それぞれ「/usr/lib/libc.so」と「  /usr/lib/libutil.so」とを選択する。
【０１８２】
汎化手段２０７は、この選択した２つの文字列に対して、図５に示したＧＬＯＢ汎化処理を適用（実行）して、「 /usr/lib/*.so」という文字列を生成する。また、汎化手段２０７は、この生成した値（文字列）をイベントＥ２３とＥ２４との syscall要素の最初の arg要素の value属性に代入する。そして、ポリシ生成ルールＲ１４にはdeleteフラグが設定されているため、イベントＥ２３とＥ２４との内容をポリシ生成手段２０８に渡した後、分類手段２０６は、アクセスログ記憶部２０５から削除する。
【０１８３】
なお、ポリシ生成ルールＲ１８を用いる場合も、分類手段２０６、汎化手段２０７及びポリシ生成手段２０８は、ポリシ生成ルールＲ１１，Ｒ１４を用いた場合と同様の処理手順に従って処理を実行する。
【０１８４】
以上に示す処理の結果、汎化手段２０７は、図２７に示すＸＭＬデータ（イベント集合）をポリシ生成手段２０８に渡す。ポリシ生成手段２０７は、図２７に示すイベント集合に基づいて、イベントＥ２１，Ｅ２２，Ｅ２３によるアクセスを許可し、イベントＥ２１，Ｅ２２，Ｅ２３以外のイベントによるアクセスを禁止するアクセスポリシを生成し出力する。
【０１８５】
以上のように、本実施例によれば、第１の実施の形態で示したアクセスポリシ生成システムを具体的なコンピュータシステム上で実施可能であることが分かる。また、本実施例により、従来技術による方法より精度の高い（誤検知が少なく、検知漏れも少ない）アクセスポリシを生成できることができる。
【産業上の利用可能性】
【０１８６】
本発明は、一般のオペレーティングシステム（ＯＳ）のファイルアクセス権限設定や、セキュアＯＳのアクセス権限設定、アクセス制御ミドルウェアのポリシ設定等を行うシステムが、アクセス制御に用いるアクセスポリシを生成する用途に適用できる。また、ホストベース不正侵入検知システムやホストベース不正侵入防止システムのポリシ設定、サンドボックスモデルをもつバーチャルマシンのポリシ設定等を行うシステムが、アクセス制御に用いるアクセスポリシを生成する用途に適用できる。また、これらの各アクセス権限設定や不正侵入検知／防止システムを実現するソフトウェアが搭載されたサーバ装置やネットワーク機器（例えば、ルータ）にも適用可能である。
【図面の簡単な説明】
【０１８７】
【図１】本発明によるアクセスポリシ生成システムを用いたシステム１００の構成の例を示すブロック図である。
【図２】アクセスポリシ生成システムを用いたシステム１００が実行するアクセスポリシ生成処理の一例を示すフローチャートである。
【図３】分類手段１０６がアクセスログ記憶部１０５に格納される各イベントを分類する分類処理の一例を示すフローチャートである。
【図４】汎化手段１０７がイベントを汎化する汎化処理の一例を示すフローチャートである。
【図５】ＧＬＯＢ汎化ルールが与えられた場合に、汎化手段１０７が行う変換処理の一例を示すフローチャートである。
【図６】アクセスログ記憶部１０５に格納されるイベントの集合の例を示す説明図である。
【図７】ポリシ生成ルール記憶部１０９に格納されているポリシ生成ルール１１０の例を示す説明図である。
【図８】ポリシ生成ルールＲ０１を用いて処理を実行する場合の例を示す説明図である。
【図９】ポリシ生成ルールＲ０２を用いて処理を実行する場合の例を示す説明図である。
【図１０】ポリシ生成ルールＲ０３を用いて処理を実行する場合の例を示す説明図である。
【図１１】ポリシ生成手段１０８に入力されるイベントの例を示す説明図である。
【図１２】ポリシ生成手段１０８が生成し出力するアクセスポリシの例を示す説明図である。
【図１３】アクセスポリシ生成システムを用いたシステム１００の他の構成例を示すブロック図である。
【図１４】第２の実施の形態におけるアクセスポリシの例を示す説明図である。
【図１５】第２の実施の形態におけるアクセス監査手段１０２が行うアクセス監査処理の一例を示すフローチャートである。
【図１６】第２の実施の形態におけるリソースアクセスの例を示す説明図である。
【図１７】第２の実施の形態におけるポリシ生成ルール１１０の例を示す説明図である。
【図１８】アクセスポリシ生成システムを用いたシステム１００の更に他の構成例を示すブロック図である。
【図１９】ＯＳの種類を追加して含むポリシ生成ルール１１０の例を示す説明図である。
【図２０】アクセスポリシ生成システムを用いたシステム１００の他の構成例を示すブロック図である。
【図２１】第３の実施の形態におけるポリシ生成ルール１１０の例を示す説明図である。
【図２２】第３の実施の形態におけるアクセスポリシの例を示す説明図である。
【図２３】アクセスポリシ生成システムを含むコンピュータ２００を示すブロック図である。
【図２４】アクセスログ記憶部２０５が格納するアクセスログの具体例を示す説明図である。
【図２５】ポリシ生成ルール記憶部２０９が格納するポリシ生成ルール２１０の具体例を示す説明図である。
【図２６】ポリシ生成ルールＲ１１の処理後のイベント集合を示すＸＭＬ文書の例を示す説明図である。
【図２７】汎化処理後のイベント集合をを示すＸＭＬデータの例を示す説明図である。
【符号の説明】
【０１８８】
１００  システム
１０１  対象プログラム
１０２  アクセス監査手段
１０３  リソース
１０４  ポリシ記憶部
１０５  アクセスログ記憶部
１０６  分類手段
１０７  汎化手段
１０８  ポリシ生成手段
１０９  ポリシ生成ルール記憶部
１１０  ポリシ生成ルール
１１１  分類ルール
１１２  汎化ルール
１１３  状態観測手段
１２０  入力装置
【図１】
2007109016.tif 000003
【図２】
2007109016.tif 000004
【図３】
2007109016.tif 000005
【図４】
2007109016.tif 000006
【図５】
2007109016.tif 000007
【図６】
2007109016.tif 000008
【図７】
2007109016.tif 000009
【図８】
2007109016.tif 000010
【図９】
2007109016.tif 000011
【図１０】
2007109016.tif 000012
【図１１】
2007109016.tif 000013
【図１２】
2007109016.tif 000014
【図１３】
2007109016.tif 000015
【図１４】
2007109016.tif 000016
【図１５】
2007109016.tif 000017
【図１６】
2007109016.tif 000018
【図１７】
2007109016.tif 000019
【図１８】
2007109016.tif 000020
【図１９】
2007109016.tif 000021
【図２０】
2007109016.tif 000022
【図２１】
2007109016.tif 000023
【図２２】
2007109016.tif 000024
【図２３】
2007109016.tif 000025
【図２４】
2007109016.tif 000026
【図２５】
2007109016.tif 000027
【図２６】
2007109016.tif 000028
【図２７】
2007109016.tif 000029