(57)【要約】【課題】  人手による煩わしい後処理を行うことなく、プログラムを動作させて収集したアクセスを自動的に汎化してアクセスポリシを生成する。【解決手段】  アクセスポリシ生成処理において、アクセス監査手段は、対象プログラムにもとづくアクセスが発生するたびに、アクセスの種類とアクセスの対象とを含むアクセス情報をアクセス記憶部に格納する。アクセスの監視は監視終了条件が成立するまで継続して実行される。監視終了条件が成立すると、汎化手段は、アクセス記憶部に格納された各アクセス情報それぞれのアクセス名とアクセス対象とから、アクセス対象を汎化する処理を行う。例えば、アクセス情報のアクセス対象であるファイルのうち、同じディレクトリに含まれているファイル同士の非共通部分を一般化することで汎化する。そして、ポリシ生成手段が、汎化されたアクセス情報を、許可ポリシとしてポリシ記憶部に格納する。【選択図】  図２
2005234661.tif 000002
【特許請求の範囲】
【請求項１】
リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成するアクセスポリシ生成システムであって、
前記ポリシ強制の際に監査の対象とする対象プログラムにもとづく前記リソースへのアクセスを検知するアクセス検知手段と、
前記アクセス検知手段が検知したアクセスの内容を示すアクセス情報を取得するアクセス情報取得手段と、
前記アクセス情報取得手段によって取得された複数のアクセス情報における非共通部分の一部または全部を一般化し、汎用的に用いられる形式に汎化したアクセス情報を生成する汎化手段と、
前記汎化手段によって汎化されたアクセス情報にもとづいてアクセスポリシを生成するポリシ生成手段とを備えた
ことを特徴とするアクセスポリシ生成システム。
【請求項２】
対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測する状態観測手段を備え、
前記状態観測手段は、観測結果を対応するアクセスの内容を示すアクセス情報に付加し、
汎化手段は、付加された前記観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出し、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化し、汎化したアクセス情報を生成する
請求項１記載のアクセスポリシ生成システム。
【請求項３】
状態観測手段は、プロシージャ呼び出しの履歴が格納されているコールスタックを検査することによって、アクセスを起動したプロシージャを含むコールスタック情報を取得するスタック検査手段を含み、
前記スタック検査手段は、観測結果として、コールスタック情報を対応するアクセスの内容を示すアクセス情報に付加し、
汎化手段は、付加された前記コールスタック情報にもとづいて算出した相関値が基準値よりも高い複数のアクセス情報を一般化し、汎化したアクセス情報を生成する
請求項２記載のアクセスポリシ生成システム。
【請求項４】
汎化手段は、複数のアクセス情報の相関関係を示す相関値を算出する相関値算出手段と、前記相関値算出手段により算出された相関値にもとづいてアクセス情報を分類するカテゴライズ手段と、前記カテゴライズ手段により同一分類とされた複数のアクセス情報を汎化して共通のアクセス情報とする共通化手段とを含む
請求項１から請求項３のうちいずれかに記載のアクセスポリシ生成システム。
【請求項５】
アクセス情報は、アクセス検知手段が検知したアクセスの種類とアクセスの対象とを含み、
汎化手段は、アクセスの種類が同一の複数のアクセス情報におけるアクセスの対象を一般化することで、汎化したアクセス情報を生成する
請求項１から請求項４のうちいずれかに記載のアクセスポリシ生成システム。
【請求項６】
リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成するアクセスポリシ生成方法であって、
前記ポリシ強制の際に監査の対象とする対象プログラムにもとづく前記リソースへのアクセスを検知し、
検知したアクセスの内容を示すアクセス情報を取得し、
取得された複数のアクセス情報における非共通部分の一部または全部を一般化して、汎用的に用いられる形式に汎化したアクセス情報を生成し、
汎化されたアクセス情報にもとづいてアクセスポリシを生成する
ことを特徴とするアクセスポリシ生成方法。
【請求項７】
対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測し、
観測結果を対応するアクセスの内容を示すアクセス情報に付加し、
付加された前記観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出し、
算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成する
請求項６記載のアクセスポリシ生成方法。
【請求項８】
プロシージャ呼び出しの履歴が格納されているコールスタックを検査することによって、アクセスを起動したプロシージャを含むコールスタック情報を取得し、
観測結果として、コールスタック情報を対応するアクセスの内容を示すアクセス情報に付加し、
付加された前記コールスタック情報にもとづいて算出した相関値が基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成する
請求項７記載のアクセスポリシ生成方法。
【請求項９】
複数のアクセス情報の相関関係を示す相関値を算出し、
算出された相関値にもとづいてアクセス情報を分類し、
同一分類とされた複数のアクセス情報を共通のアクセス情報とすることで、汎化したアクセス情報を生成する
請求項６から請求項８のうちいずれかに記載のアクセスポリシ生成方法。
【請求項１０】
アクセス情報は、アクセス検知手段が検知したアクセスの種類とアクセスの対象とを含み、
アクセスの種類が同一の複数のアクセス情報におけるアクセスの対象を一般化することで、汎化したアクセス情報を生成する
請求項６から請求項９のうちいずれかに記載のアクセスポリシ生成方法。
【請求項１１】
リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成させるためのアクセスポリシ生成用プログラムであって、
コンピュータに、
前記ポリシ強制の際に監査の対象とする対象プログラムにもとづく前記リソースへのアクセスを検知するステップと、
検知したアクセスの内容を示すアクセス情報を取得するステップと、
取得された複数のアクセス情報における非共通部分の一部または全部を一般化して、汎用的に用いられる形式に汎化したアクセス情報を生成するステップと、
汎化されたアクセス情報にもとづいてアクセスポリシを生成するステップとを
実行させることを特徴とするアクセスポリシ生成用プログラム。
【請求項１２】
コンピュータに、
さらに、対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測するステップと、
観測結果を対応するアクセスの内容を示すアクセス情報に付加するステップと、
付加された前記観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出するステップとを実行させ、
算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成するステップを実行させる
請求項１１記載のアクセスポリシ生成用プログラム。
【請求項１３】
コンピュータに、
対象プログラムに従って実行されている処理の状態の観測として、プロシージャ呼び出しの履歴が格納されているコールスタックを検査することによって、アクセスを起動したプロシージャを含むコールスタック情報を取得するステップを実行させ、
観測結果の付加として、コールスタック情報を対応するアクセスの内容を示すアクセス情報に付加するステップを実行させ、
付加された前記コールスタック情報にもとづいて算出した相関値が基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成するステップを実行させる
請求項１２記載のアクセスポリシ生成用プログラム。
【請求項１４】
コンピュータに、
さらに、複数のアクセス情報の相関関係を示す相関値を算出するステップと、
算出された相関値にもとづいてアクセス情報を分類するステップとを実行させ、
同一分類とされた複数のアクセス情報を共通のアクセス情報とすることで、汎化したアクセス情報を生成するステップを実行させる
請求項１１から請求項１３のうちいずれかに記載のアクセスポリシ生成用プログラム。
【請求項１５】
アクセス情報は、アクセス検知手段が検知したアクセスの種類とアクセスの対象とを含み、
コンピュータに、
アクセスの種類が同一の複数のアクセス情報におけるアクセスの対象を一般化することで、汎化したアクセス情報を生成するステップを実行させる
請求項１１から請求項１４のうちいずれかに記載のアクセスポリシ生成用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポリシ強制に用いるアクセスポリシを生成するアクセスポリシ生成システム等に関し、特に、ポリシ強制の対象となるプログラムにもとづく動作を収集し、収集した動作からアクセスポリシを生成するアクセスポリシ生成システム、アクセスポリシ生成方法、およびアクセスポリシ生成用プログラムに関する。
【背景技術】
【０００２】
従来から、制御プログラムにもとづく処理での不正なリソース利用を防止するため、セキュアＯＳ、アクセス制御ミドルウェア、サンドボックス、不正侵入検知システム、不正侵入防止システムなどと呼ばれる各種のポリシ強制システムが利用されている。
【０００３】
従来のポリシ強制システムは、与えられたリソース利用の要件（以下、「アクセスポリシ」または単に「ポリシ」という）に従って、ポリシ強制の対象とする制御プログラムにもとづく処理にて特定のリソース（例えば、ファイルシステム、通信デバイスなど）を操作（以下、「アクセス」という）することを制限する機能を持つ。
【０００４】
図２０は、ポリシ強制システムの一般的な構成を示すブロック図である。このポリシ強制システム５００は、プログラム制御により動作するコンピュータ（具体的には、例えば中央処理装置、プロセッサ、データ処理装置）によって構成され、アクセス監査手段５０２と、リソース５０３と、ポリシ記憶部５０４とを含む。
【０００５】
アクセス監査手段５０２は、ポリシ強制の対象となるプログラム５０１に従って動作するコンピュータシステム５００のリソース５０３へのアクセスを監視し、ポリシ記憶部５０４に保存されているポリシの内容に従って、リソース５０３へのアクセスの可否を判定する。
【０００６】
そして、アクセス監査手段５０２は、アクセスが許可されている場合にはそのままリソース５０３へのアクセスを許し、アクセスが許可されていない場合にはリソース５０３へのアクセスを中断する。
【０００７】
なお、アクセスポリシには、「許可ポリシ」と「禁止ポリシ」の２種類がある。また、アクセスポリシの指定方法は、「許可ポリシ」のみを指定する方法、「禁止ポリシ」のみを指定する方法、その両方を指定する方法の３通りがある。
【０００８】
許可ポリシのみを指定する方法では、ユーザによって、許可するアクセスのみが記述される。この場合、許可ポリシに合致したアクセスは許可され、それ以外のアクセスは禁止される。
【０００９】
禁止ポリシのみを指定する方法では、ユーザによって、禁止するアクセスのみが記述される。この場合、禁止ポリシに合致したアクセスは禁止され、それ以外のアクセスは許可される。
【００１０】
許可ポリシと禁止ポリシの両方を指定する方法では、ユーザによって、許可ポリシと禁止ポリシとが競合したときの処理を定める「メタポリシ」が別途記述される。
【００１１】
上記のようなポリシ強制システム５００において、アクセスポリシを正しく設定しておくことにより、不正アクセス、クラッキング、ウイルス、ワームなどの被害が抑制される。
【００１２】
具体的には、「ＷＷＷ（World Wide Web）サーバはＷＷＷコンテンツを書き換え不可」という禁止ポリシを設定しておけば、ＷＷＷサーバの脆弱性を攻撃され、任意コードを実行されたとしても、ＷＷＷコンテンツの書き換えによるＷｅｂ改ざんを防止できる。
【００１３】
同様に、例えば、「ＷＷＷサーバはテンポラリファイルのみ書き出す」という許可ポリシを設定しておけば、ＷＷＷサーバの脆弱性を攻撃され、任意コードを実行されたとしても、ＷＷＷコンテンツの書き出しにもとづくＷｅｂ改ざんを防止できる。
【００１４】
しかし、上記のようなポリシ強制システム５００では、アクセスポリシを人手で記述する必要がある。アクセスポリシのユーザによる記述は、手間と時間がかかるだけでなく、間違いも生じやすい。
【００１５】
そこで、従来から、プログラムの実際の動作を観測して、許可ポリシを自動的に生成する方法が提案されている（例えば、特許文献１参照）。
【００１６】
図２１は、特許文献１に記載されている従来のアクセスポリシ生成システム６００の例を示すブロック図である。
【００１７】
対象プログラム５０１にもとづく処理でのリソース５０３へのアクセスは、アクセス監査手段５０２によって監視される。この監視の際に、アクセスの内容がポリシ生成手段５０５に送られる。ポリシ生成手段５０５では、そのアクセス内容を許可ポリシとしてポリシ記憶部５０４に記憶されているアクセスポリシに追加する。このようにして自動的にアクセスポリシが生成される。このような技術を、「従来技術１」ということにする。
【００１８】
また、ファイル入出力だけではなく、ＯＳ（Operating System）を経由したリソースアクセス、すなわち、システムコールのポリシを生成するアクセスポリシ生成システムも提案されている（例えば、非特許文献１参照）。
【００１９】
このアクセスポリシ生成システムでは、単にアクセス先をそのままポリシに追加するだけではなく、追加した後、人手によって編集する機能を有している。このような技術を、「従来技術２」ということにする。
【００２０】
【特許文献１】特開２００３−６０２７号公報（図１）
【非特許文献１】ニールス・プローブス（Niels Provos）著、“CITI Technical Report 02-3 Improving Host Security with System Call Policies”、［ｏｎｌｉｎｅ］、［平成１６年２月１３日検索］、インターネット＜ＵＲＬ：http://citeseer.nj.nec.com/provos02improving.html＞
【発明の開示】
【発明が解決しようとする課題】
【００２１】
上述した従来のアクセスポリシ生成技術では、プログラムにもとづくリソースへのアクセスを全て収集することができないため、生成されるポリシに抜けが生じ、その結果として、プログラムの正常な動作であるにも関わらず、不正動作として判定される場合が生じるという問題があった。
【００２２】
その理由は、一定期間中に観測したプログラムのアクセスをそのままポリシとして使用しているためである。一般に、プログラムの動作は多岐にわたるため、ある一定期間に観測したアクセスのみでは、そのプログラムがアクセスし得る全ての動作を列挙することは困難である。
【００２３】
例えば、多くのサーバプログラムでは、一時的なファイル（テンポラリファイル）を作成して情報を一時的に保存するが、テンポラリファイルのファイル名としては、固定のファイル名の後にランダムな数値を付加したものを用いることが多い。
【００２４】
従って、テンポラリファイルの作成動作を一定期間観測し、「/tmp/tmp03123」、「/tmp/tmp04145」、「/tmp/tmp04231」という各ファイルへのアクセスを観測し、これを許可ポリシとしてポリシに追加したとしても、例えば、ファイル「/tmp/tmp05134」を作成する動作は許可ポリシとして含まれていないので、それはポリシ違反動作として検知されてしまう。
【００２５】
上述した従来技術２では、この問題点に対処するため、ユーザによる後処理工程を設けている。具体的には、後処理工程で、ファイル「/tmp/tmp*」（「*」は任意の文字列をあらわす）の作成を許可ポリシとして追加することで、上記の問題を解消することとしている。
【００２６】
つまり、「/tmp/tmp03123」、「/tmp/tmp04145」、「/tmp/tmp04231」の３つのファイルだけでなく、ディレクトリ「/tmp」以下の「tmp」で始まるファイルの作成を全て許可ポリシとするように汎化（より広い範囲を対象とするにようにルールを一般化すること）することによって、プログラムにもとづくアクセスの収集洩れに対応することとしている。しかし、ルールの一般化を図るための後処理をユーザが行わなければばらないため、時間と労力が費やされる煩わしい後処理をユーザが強いられているという新たな課題が生じていた。
【００２７】
本発明は、上述した問題を解消し、人手による煩わしい後処理を行うことなく、プログラムを動作させて収集したアクセスを自動的に汎化してアクセスポリシを生成することができるようにすることを目的とする。
【課題を解決するための手段】
【００２８】
本発明によるアクセスポリシ生成システムは、リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成するアクセスポリシ生成システム（例えばアクセスポリシ生成システム１００，１００ａ，２００）であって、ポリシ強制の際に監査の対象とする対象プログラムにもとづくリソースへのアクセスを検知するアクセス検知手段（例えば、アクセス監査手段１０２、システムコール検査手段２０２）と、アクセス検知手段が検知したアクセスの内容を示すアクセス情報（例えば図３に示すアクセス情報）を取得するアクセス情報取得手段（例えば、アクセス監査手段１０２、システムコール検査手段２０２）と、アクセス情報取得手段によって取得された複数のアクセス情報における非共通部分の一部または全部を一般化し、汎用的に用いられる形式に汎化したアクセス情報を生成する汎化手段（例えば、汎化手段１０７，２０７）と、汎化手段によって汎化されたアクセス情報にもとづいてアクセスポリシを生成するポリシ生成手段（例えば、ポリシ生成手段２０５）とを備えたことを特徴とする。
【００２９】
上記のように、検知したアクセスの内容を示すアクセス情報を汎化し、汎化したアクセス情報にもとづいてアクセスポリシを生成する構成としているので、煩わしい処理を行うことなく自動的にアクセスポリシを生成することができる。
【００３０】
対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測する状態観測手段（例えば、状態観測手段１０８、スタック検査手段２０８）を備え、状態観測手段は、観測結果を対応するアクセスの内容を示すアクセス情報に付加し（例えばステップＳ１０５）、汎化手段は、付加された観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出し、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化し、汎化したアクセス情報を生成する（例えばステップＳ１０３）構成とすることが好ましい。
【００３１】
上記のように、検知したアクセスの内容を示すアクセス情報を、アクセスが発生したときの処理状態を考慮して汎化する構成としているので、抜けが少なく精度の高いアクセスポリシを生成することができる。
【００３２】
状態観測手段は、例えば、プロシージャ呼び出しの履歴が格納されているコールスタックを検査することによって、アクセスを起動したプロシージャを含むコールスタック情報を取得するスタック検査手段（例えばスタック検査手段２０８）を含む構成とされ、スタック検査手段が、観測結果として、コールスタック情報を対応するアクセスの内容を示すアクセス情報に付加し（例えば図１２に示すように付加する）、汎化手段が、付加されたコールスタック情報にもとづいて算出した相関値が基準値よりも高い複数のアクセス情報を一般化し、汎化したアクセス情報を生成するように構成される。
【００３３】
汎化手段は、例えば、複数のアクセス情報の相関関係を示す相関値を算出する相関値算出手段と、相関値算出手段により算出された相関値にもとづいてアクセス情報を分類するカテゴライズ手段と、カテゴライズ手段により同一分類とされた複数のアクセス情報を汎化して共通のアクセス情報とする共通化手段とを含む構成とされる。
【００３４】
アクセス情報は、例えば、アクセス検知手段が検知したアクセスの種類とアクセスの対象とを含み、汎化手段が、アクセスの種類が同一の複数のアクセス情報におけるアクセスの対象を一般化することで、汎化したアクセス情報を生成する構成とされる。
【００３５】
また、本発明のアクセスポリシ生成方法は、リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成するアクセスポリシ生成方法であって、ポリシ強制の際に監査の対象とする対象プログラムにもとづくリソースへのアクセスを検知し（例えばステップＳ１０１）、検知したアクセスの内容を示すアクセス情報を取得し（例えばステップＳ１０１）、取得された複数のアクセス情報における非共通部分の一部または全部を一般化して、汎用的に用いられる形式に汎化したアクセス情報を生成し（例えばステップＳ１０３）、汎化されたアクセス情報にもとづいてアクセスポリシを生成する（例えばステップＳ１０４）ことを特徴とする。
【００３６】
上記のように、検知したアクセスの内容を示すアクセス情報を汎化し、汎化したアクセス情報にもとづいてアクセスポリシを生成する構成としているので、煩わしい処理を行うことなく自動的にアクセスポリシを生成することができる。
【００３７】
対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測し（例えばステップＳ１０５）、観測結果を対応するアクセスの内容を示すアクセス情報に付加し（例えばステップＳ１０５）、付加された観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出し、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成する（例えばステップＳ１０３）ことが好ましい。
【００３８】
上記のように、検知したアクセスの内容を示すアクセス情報を、アクセスが発生したときの処理状態を考慮して汎化する構成としているので、抜けが少なく精度の高いアクセスポリシを生成することができる。
【００３９】
さらに、本発明のアクセスポリシ生成用プログラムは、リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成させるためのアクセスポリシ生成用プログラムであって、コンピュータ（例えばアクセスポリシ生成システム１００，１００ａ，２００）に、ポリシ強制の際に監査の対象とする対象プログラムにもとづくリソースへのアクセスを検知するステップ（例えばステップＳ１０１）と、検知したアクセスの内容を示すアクセス情報を取得するステップ（例えばステップＳ１０１）と、取得された複数のアクセス情報における非共通部分の一部または全部を一般化して、汎用的に用いられる形式に汎化したアクセス情報を生成するステップ（例えばステップＳ１０３）と、汎化されたアクセス情報にもとづいてアクセスポリシを生成するステップ（例えばステップＳ１０４）とを実行させることを特徴とする。
【００４０】
上記のように、コンピュータに、検知したアクセスの内容を示すアクセス情報を汎化し、汎化したアクセス情報にもとづいてアクセスポリシを生成する処理を実行させる構成としているので、煩わしい処理を行うことなく自動的にアクセスポリシを生成させることができる。
【００４１】
コンピュータに、さらに、対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測するステップ（例えばステップＳ１０５）と、観測結果を対応するアクセスの内容を示すアクセス情報に付加するステップ（例えばステップＳ１０５）と、付加された観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出するステップとを実行させる構成とすることが好ましい。この場合、コンピュータに、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成するステップを実行させるようにすればよい。
【００４２】
上記のように、コンピュータに、検知したアクセスの内容を示すアクセス情報を、アクセスが発生したときの処理状態を考慮して汎化する処理を実行させる構成としているので、抜けが少なく精度の高いアクセスポリシを生成させることができる。
【発明の効果】
【００４３】
本発明によれば、検知したアクセスの内容を示すアクセス情報を汎化し、汎化したアクセス情報にもとづいてアクセスポリシを生成する構成としているので、煩わしい処理を行うことなく、自動的にアクセスポリシを生成することができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施の形態について図面を参照して説明する。
実施の形態１．
図１は、本発明の第１の実施の形態におけるアクセスポリシ生成システム１００の構成の例を示すブロック図である。
【００４５】
アクセスポリシ生成システム１００は、プログラム制御により動作するコンピュータ（中央処理装置、プロセッサ、データ処理装置）により構成される。また、アクセスポリシ生成システム１００には、各種の情報を入力する入力装置１１０が接続されている。なお、入力装置１１０をシステム１００に含めるようにしてもよい。
【００４６】
図１に示すように、アクセスポリシ生成システム１００は、対象プログラム１０１と、アクセス監査手段１０２と、リソース１０３と、ポリシ記憶部１０４と、ポリシ生成手段１０５と、アクセス記憶部１０６と、汎化手段１０７とを含む。
【００４７】
対象プログラム１０１は、システム１００上で動作するプログラムであって、アクセス監査の対象となるプログラムを意味する。
【００４８】
アクセス監査手段１０２は、「監査モード」と「ルール生成モード」のうち何れか一方のモードで動作する。「監査モード」と「ルール生成モード」の何れとするかの設定は、入力装置１１０からのユーザ入力によって行われる。
【００４９】
「監査モード」では、アクセス監査手段１０２は、対象プログラム１０１にもとづくリソース１０３へのアクセスを監視し、ポリシ記憶部１０４に格納されたアクセスポリシにもとづいてポリシ強制を行う。
【００５０】
「ポリシ強制」とは、設定されているアクセスポリシにもとづいて、アクセスを許可するか禁止するか判定し、許可すると判定したアクセスを受け入れ、禁止すると判定したアクセスを拒否する処理を意味する。
【００５１】
「ルール生成モード」では、アクセス監査手段１０２は、対象プログラム１０１にもとづくリソース１０３へのアクセスを監視するが、ポリシ強制は行わずに、検知したアクセスの内容をアクセス記憶部１０６に格納する処理を行う。
【００５２】
リソース１０３は、対象プログラム１０１が動作する基盤プログラム（例えばオペレーティングシステム）上で管理されるシステムリソースを意味する。具体的には、ファイルシステムや通信デバイスなどが該当する。
【００５３】
なお、「アクセス」とは、対象プログラム１０１にもとづく基盤プログラムに対する命令であって、システムリソース１０３の操作のための操作命令を意味する。また、「アクセス」を、システムリソース１０３の操作の意味で用いることもある。
【００５４】
例えば、基盤プログラムがＯＳの場合には、ファイル読み出し、ファイル書き込み、通信ネットワークへのデータ送信、通信ネットワークからのデータ受信などを行うためのシステムコールが「アクセス」となる。
【００５５】
なお、プロセス実行や、ヒープメモリ確保などを行うためのその他のシステムコールを「アクセス」に含めてもよい。
【００５６】
また、例えば、基盤プログラムがＪａｖａ（登録商標）ＶＭ（Java Virtual Machine）の場合には、オブジェクト作成、他のオブジェクトのメソッド呼び出しなどのＪａｖａＶＭに対するＡＰＩ（Application Programming Interface）呼び出し全般が「アクセス」となる。
【００５７】
ポリシ記憶部１０４は、ポリシ生成手段１０５によって生成された許可ポリシを記憶する記憶装置である。
【００５８】
アクセス記憶部１０６は、アクセス監査手段１０２によって検知されたアクセスにもとづくアクセス情報を一時的に記憶する記憶装置である。なお、アクセス情報は、アクセスの種類と、アクセスの対象とを含む情報である。
【００５９】
ポリシ記憶部１０４とアクセス記憶部１０６とは、ハードディスクなどの外部記憶装置であっても、システム１００に搭載されるメインメモリであってもよい。
【００６０】
汎化手段１０７は、アクセス記憶部１０６に一時的に保存されたアクセス情報を汎化する処理を行う。汎化処理は、例えば、アクセス情報中に含まれるパラメータ（アクセスの対象）を汎化することによって行われる。
【００６１】
ポリシ生成手段１０５は、汎化手段１０７によって汎化されたパラメータをアクセスポリシに変換し、ポリシ記憶部１０４に格納する処理を行う。
【００６２】
なお、システム１００が「監査モード」で動作しているときは、ポリシの生成のための動作が行われず、アクセス監査手段１０２からアクセス記憶部１０６に対してアクセス情報は一切出力されない。このため、「監査モード」では、汎化手段１０７およびポリシ生成手段１０５は何ら動作を行わない。
【００６３】
次に、本例のアクセスポリシ生成システム１００の動作について説明する。
ここでは、ルール生成モードが設定されているときのアクセスポリシ生成システム１００の動作について詳細に説明する。
【００６４】
図２は、ルール生成モードが設定されているときにアクセスポリシ生成システム１００が実行するアクセスポリシ生成処理の例を示すフローチャートである。
【００６５】
アクセスポリシ生成処理において、アクセス監査手段１０２は、対象プログラムにもとづくアクセスの有無を監視し、対象プログラム１０１にもとづくアクセスが発生するたびに、アクセスの種類とアクセスの対象とを含むアクセス情報をアクセス記憶部１０６に格納する（ステップＳ１０１）。
【００６６】
アクセスの監視は後述する監視終了条件が成立するまで継続して実行され、監視中にアクセスが発生すると、ステップＳ１０１の処理が実行される。
【００６７】
監視終了条件は、例えば、対象プログラム１０１にもとづく処理が終了したこと、ルール生成モードの終了が入力装置１１０によって指定されたこと、所定期間が経過したこと、所定個数のアクセス情報がアクセス記憶部１０６に格納されたこと、あるいはこれらの任意の組合せなどのように、あらかじめ定められていものとする。
【００６８】
図３は、アクセス記憶部１０６に格納されたアクセス情報の例を示す説明図である。この例では、図３に示すように、アクセスの種類とアクセスの対象とを含むアクセス情報が表形式で格納される。
【００６９】
「アクセスの種類（アクセス名）」は、例えば、ファイルの作成（「create」）、ファイルの読み込み（「read」）など、対象プログラム１０１にもとづくリソース１０３へのアクセスの内容を示す情報である。
【００７０】
「アクセスの対象」は、対象プログラム１０１にもとづくアクセスによって操作対象とされたファイルなどのリソース１０３を示す情報である。
【００７１】
具体的には、図３の最初の行に示すアクセス情報は、「/tmp/tmp03123」という名前のファイルが作成されたことを意味する。また、図３の２行目に示すアクセス情報は、「/etc/hosts」という名前のファイルが読み込まれたことを意味する。
【００７２】
監視終了条件が成立すると（ステップＳ１０２のＹ）、アクセス監査手段１０２によるアクセスの監視を終了し、汎化処理（ステップＳ１０３）に移行する。
【００７３】
汎化処理（ステップＳ１０３）では、汎化手段１０７は、アクセス記憶部１０６に格納された表（図３参照）を参照して、各アクセス情報それぞれのアクセス名とアクセス対象とから、各アクセス情報における同じアクセス名に対応するアクセス対象それぞれで共通しているパターンを抽出し、アクセス対象を汎化する処理を行う。
【００７４】
なお、「汎化」とは、あるデータを汎用的に用いることができるように変換することをいう。この例では、共通部分を持つデータの非共通部分を一般化することで「汎化」を行うようにしている。
【００７５】
汎化処理（ステップＳ１０３）による汎化の方法には、様々な方法が考えられる。以下、アクセス対象がファイル名で特定されている図３に示したアクセス情報を例に、汎化の方法の例について説明する。
【００７６】
例えば、汎化処理において、図３に示すアクセス情報のアクセス対象であるファイルのうち、同じディレクトリに含まれているファイル同士の非共通部分を一般化することで汎化するようにすればよい。
【００７７】
この場合、図４に示すように、同じアクセス名「create」に対応する各アクセス対象のうち同じディレクトリ「tmp」に含まれている４つのファイルが、「/tmp/＊」という一般化されたファイル名とされ、同じアクセス名「read」に対応する各アクセス対象のうち同じディレクトリ「etc」に含まれている２つのファイルが、「/etc/＊」という一般化されたファイル名とされることで、汎化される。
【００７８】
なお、「＊」は任意の文字列を表す。すなわち、ファイル「/tmp/＊」は、ディレクトリ「tmp」に格納されている任意のファイルを意味する。
【００７９】
上記のようにして汎化処理を行うと、６つあったアクセス情報（図３参照）が、図４に示すように、汎化された２つのアクセス情報で表現される。
【００８０】
また、汎化処理において、図３に示すアクセス情報のアクセス対象である各ファイルについて、同じディレクトリに含まれているファイルのファイル名の一部が一致する部分も共通部分として取り扱い、その他の非共通部分を一般化することで汎化するようにしてもよい。
【００８１】
この場合、図５に示すように、同じディレクトリ「tmp」に含まれている４つのファイルのファイル名のうち一致する一部「tmp」も共通部分として取り扱い、これら４つのファイルが「/tmp/ tmp＊」に一般化される。なお、同じディレクトリ「etc」に含まれている２つのファイルのファイル名には一致する部分がないため、図４に示した場合と同様に「/etc/＊」に一般化される。
【００８２】
上記のようにして汎化処理を行うと、６つあったアクセス情報（図３参照）が、図５に示すように、２つの汎化された２つのアクセス情報で表現される。
【００８３】
さらに、汎化処理において、図３に示すアクセス情報のアクセス対象であるファイルについて、同じディレクトリに含まれているファイルのファイル名に表れる文字の種類が一致する部分も共通部分として取り扱い、文字の種類が共通であるとして一般化することで汎化するようにしてもよい。
【００８４】
この場合、図６に示すように、同じディレクトリ「tmp」に含まれている４つのファイルのファイル名が一致する一部「tmp」に加え、文字の種類が一致している部分も共通部分として取り扱い、これら４つのファイルが「/tmp/tmp［０−９］＊」に一般化される。
【００８５】
ここで、「［０−９］＊」は、０から９までの数字のいずれかのみで構成される文字列を意味する。すなわち、ファイル「/tmp/tmp［０−９］＊」は、ディレクトリ「tmp」に格納されているファイルのうち、「tmp」の後に任意の数字が付加されたファイル名を持つ任意のファイルを意味する。
【００８６】
上記のようにして汎化処理を行うと、６つあったアクセス情報（図３参照）が、図６に示すように、２つの汎化された２つのアクセス情報で表現される。
【００８７】
汎化処理を終了すると、ポリシ生成手段１０５は、汎化手段１０７によって汎化されたアクセス情報を、許可ポリシとしてポリシ記憶部１０４に格納する（ステップＳ１０４：ポリシ生成処理）。
【００８８】
ポリシ生成処理では、ステップＳ１０３にてアクセス情報が図６に示すように汎化された場合には、「/tmp/tmp［０−９］＊」に対する「create」と、「/etc/＊」に対する「read」との２つを許可ポリシとしてポリシ記憶部１０４に格納し、２つの許可ポリシが追加される。
【００８９】
以上に説明したように、検知したアクセスの内容を示すアクセス情報の非共通部分の一部または全部を一般化することで汎用的に用いることができるような形式に汎化し、汎化したアクセス情報にもとづいてアクセスポリシを生成する構成としているので、抜けが少なく精度の高いアクセスポリシを煩わしい処理を行うことなく自動的に生成することができる。
【００９０】
実施の形態２．
次に、本発明の第２の実施の形態について説明する。
図７は、本発明の第２の実施の形態におけるアクセスポリシ生成システム１００ａの構成の例を示すブロック図である。なお、図７において、上述したアクセスポリシ生成システム１００と同様の構成をなす部分については、同一の符号を付与してその詳細な説明は省略する。
【００９１】
図７に示すように、アクセスポリシ生成システム１００ａは、上述したアクセスポリシ生成システム１００が備える構成と、状態観測手段１０８とを含む。すなわち、アクセスポリシ生成システム１００ａは、アクセスポリシ生成システム１００の構成に状態観測手段１０８を追加した構成とされている。
【００９２】
状態観測手段１０８は、対象プログラム１０１にもとづく処理を行う制御手段（例えば、コンピュータ）の内部状態（例えば、制御手段が備えるスタックの内容、レジスタの内容、ヒープメモリの内容など）を調べ、アクセス監査手段１０２によって検知されたアクセス情報に内部状態を加えてアクセス記憶部１０６に格納する。
【００９３】
ここで、アクセス記憶部１０６に保存する内部状態は、制御手段の内部状態の一部のみとするのが好ましい。なぜなら、制御手段の内部状態を表すデータ量は一般に大きく、全て保存するのはメモリ利用効率上問題が生じるおそれがあるためである。
【００９４】
従って、例えば、制御手段の内部状態のうち、スタックの内容や、コールスタック（スタックの中でも、特に、プロシージャ呼び出しの履歴を格納する部分）を保存するようにすればよい。
【００９５】
次に、本例のアクセスポリシ生成システム１００ａの動作について説明する。
ここでは、ルール生成モードが設定されているときのアクセスポリシ生成システム１００ａの動作について詳細に説明する。
【００９６】
図８は、ルール生成モードが設定されているときにアクセスポリシ生成システム１００ａが実行するアクセスポリシ生成処理の例を示すフローチャートである。なお、この実施の形態における監査モードでのアクセスポリシ生成システム１００ａの動作は、上述したアクセスポリシ生成システム１００の監査モードでの動作と同一である。
【００９７】
アクセスポリシ生成処理において、アクセス監査手段１０２は、対象プログラムにもとづくリソース１０３へのアクセスを監視し、対象プログラム１０１にもとづくアクセスが発生するたびに、アクセスの種類とアクセスの対象とを含むアクセス情報をアクセス記憶部１０６に格納する（ステップＳ１０１）。
【００９８】
アクセス情報が格納されると、状態観測手段１０８は、対象プログラム１０１にもとづく処理を行っている制御手段の内部状態であって、格納されたアクセス情報がアクセス監査手段１０２によって検知された時点の内部状態（ここでは内部状態の一部）をアクセス記憶部１０６に格納する（ステップＳ１０５）。
【００９９】
終了条件が成立するまでステップＳ１０１とステップＳ１０５の処理を繰り返し行うことによって、例えば図９に示すように、内部状態が付加されたアクセス情報が表形式で格納される。
【０１００】
図９の最初の行は、「/tmp/tmp03123」という名前のファイルが作成されたことを表すアクセス情報であり、２行目は、「/etc/hosts」という名前のファイルが読み込まれたことを表すアクセス情報である。
【０１０１】
図３に示した例とは異なり、図９の表では、アクセス情報に内部状態が付加されている。なお、図９に示す「内部状態」は、対応するアクセスを起動したプロシージャのアドレスを表している。
【０１０２】
終了条件が成立すると（ステップＳ１０２のＹ）、汎化手段１０７によって汎化処理を行い（ステップＳ１０３）、ポリシ生成手段１０５によってポリシ生成処理を行う（ステップＳ１０４）。
【０１０３】
ポリシ生成処理では、汎化手段１０７によって汎化されたアクセス情報を、許可ポリシとしてポリシ記憶部１０４に格納する処理が行われる。
【０１０４】
汎化処理では、汎化手段１０７が、アクセス記憶部１０６に格納された表（図９参照）を参照して、アクセス名とアクセス対象と内部状態からパターンを抽出し、アクセス対象を汎化する。
【０１０５】
本実施の形態では、上述した第１の実施の形態と異なり、内部状態をパターン抽出に用いることができる。例えば図９の例の場合、同じディレクトリに含まれており、かつ、同じプロシージャから呼び出されたアクセスの対象となったファイル同士を汎化することが考えられる。
【０１０６】
具体的には、図１０に示すように、同じディレクトリに含まれており、かつ、同じプロシージャから呼び出されたアクセスの対象の共通部分が一般化されて汎化される。なお、「＊」は任意の文字列を表す。
【０１０７】
図１０に示す例では、上述した第１の実施の形態における図４に示した例と比較すると、ファイル「/etc/hosts」に対するreadと、ファイル「/etc/passwd」に対するreadは異なるプロシージャから呼び出されているため、両者は汎化されずに残る。
【０１０８】
一般に、プログラム内の同じ場所（同じプロシージャ）から呼び出されたアクセスは同じ意味を持ち、異なる場所（異なるプロシージャ）から呼び出されたアクセスは別の意味を持つ。処理において別の意味を持つアクセス（例えば、異なる場所から呼ばれるアクセス）を汎化によって許可ポリシに含めることは好ましくない。
【０１０９】
なぜなら、一般に、テンポラリファイルを作成するという処理、パスワードを読み出すという処理、ホストファイルを読み出すという処理は、それぞれ、プログラム中の別々の箇所で行われる。
【０１１０】
このため、処理によって異なる取り扱いがなされ、一般に、テンポラリファイルを作成するという処理は作成されるファイル名が異なっていても同じ場所から呼ばれるが、パスワードを読み出すという処理、ホストファイルを読み出すという処理は異なる場所から呼ばれる。
【０１１１】
このような、プログラムの持つ性質を利用することによって、本実施の形態では、テンポラリファイルの作成を示すアクセス情報（図９の１，３、４、６行目）は汎化し、パスワードを読み出すという処理を示すアクセス情報（図９の５行目）とホストファイルを読み出すという処理を示すアクセス情報（図９の２行目）とは汎化しない。
【０１１２】
上記のように、アクセス名とアクセス対象だけでなく、アクセスが検知されたときの制御手段の処理状態（内部状態）をも考慮して汎化する構成としているので、過剰な汎化を防止することができ、生成されるアクセスポリシが緩すぎるものになることを防ぐことができる。すなわち、アクセスポリシの抜けを防止し、精度の高いアクセスポリシを生成することができる。
【０１１３】
すなわち、アクセス監査手段１０２によって収集可能なアクセス名およびアクセス対象のみからでは、後処理による汎化を高精度で行うことは難しい。
【０１１４】
サーバプログラムの多くは、動作時にＯＳの設定ファイルを参照する。例えば、設定ファイル読み出しの動作を一定期間観測し、「/etc/passwd」、「/etc/hosts」、および「/etc/services」というファイルへのアクセスを観測したとする。
【０１１５】
ここで、上述した第１の実施の形態と同様に、「ファイル「/etc/*」の読み出し」を許可ポリシとするように汎化するのは必ずしも正しくない。
【０１１６】
つまり、テンポラリファイルの場合と異なり、サーバプログラムによるファイル「/etc/passwd」、ファイル「/etc/hosts」、およびファイル「/etc/services」の読み出しは、一般に、それぞれ別の意味を持つ処理であり、これらのファイルを読み出したとしても、ファイル「/etc/shadow」の読み出しを許可してよいとは限らないためである。
【０１１７】
ところが、アクセス名およびアクセス対象によって特定される「どのようなアクセスが、何に対して生じたか」という情報のみからでは、それぞれのアクセスがどのような背景で呼ばれたかを判定することはできない。
【０１１８】
これに対し、上述した第２の実施の形態では、アクセス名とアクセス対象だけでなく、対象プログラムにもとづく処理の内容（制御手段の内部情報）をも収集する構成としているので、それぞれのアクセスがどのような背景で呼ばれたかを示す情報をも考慮した上で、汎化処理を行うことができ、抜けの少ない高精度なアクセスポリシを生成することができる。
【０１１９】
なお、上述した第２の実施の形態では、同じプロシージャから呼び出されたアクセスの対象の共通部分を一般化して汎化する構成としていた。すなわち、対象プログラムにもとづく処理の内容（制御手段の内部情報）が同一の複数のアクセス情報を汎化する構成としていたが、複数のデータを含む内部情報（例えば後述する図１２に示すコールスタック情報）が得られる場合には、内部情報が同一である場合に限らず、内部情報が近似する複数のアクセス情報をも汎化対象とする構成としてもよい。
【０１２０】
この場合、例えば、ステップＳ１０３の汎化処理にて、汎化手段１０７が、内部情報にもとづいて複数のアクセスの相関関係を示す相関値を算出し、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成するようにすればよい。具体的には、先ず、対比される複数のアクセス情報について、それぞれに付加された内部情報に含まれる複数のデータの中に占める一致するデータの割合を相関値として算出する。そして、算出した相関値が基準値としてあらかじめ定められた値（例えば６割、８割などの値）よりも高ければ、該当する複数のアクセス情報を汎化することに決定するようにすればよい。このように構成すれば、例えば内部情報を収集するための観測範囲を広くした場合（例えば後述する実施例においてスタック領域の全てを観測することとした場合）に、汎化するための要件が厳し過ぎて汎化対象となるアクセス情報が極端に少なくなってしまうような事態を防止することができる。
【０１２１】
なお、上述した各実施の形態では特に言及していないが、本発明は、上述した各処理をコンピュータに実行させるソフトウェアが搭載されたサーバ装置に適用できることは勿論である。また、上述したアクセスポリシ生成システムの一部がインターネットや専用回線などの通信ネットワークを介して接続されていてもよく、そのような通信ネットワークに接続される機器に適用することもできる。
【０１２２】
また、上述した各実施の形態では特に言及していないが、上述した各実施の形態における各処理は、システムが備える制御プログラム（アクセスポリシ生成用プログラム）にもとづいて行われている。
【０１２３】
アクセスポリシ生成用プログラムは、コンピュータ（システム１００，１００ａ）に、リソースへのアクセスの許可ルールを示す許可ポリシにもとづいてポリシ強制を行うためのアクセスポリシを生成させるための制御プログラムである。具体的には、アクセスポリシ生成用プログラムは、例えば、コンピュータに、ポリシ強制の際に監査の対象とする対象プログラムにもとづくリソースへのアクセスを検知するステップと、検知したアクセスの内容を示すアクセス情報を取得するステップと、取得された複数のアクセス情報における非共通部分の一部または全部を一般化して、汎用的に用いられる形式に汎化したアクセス情報を生成するステップと、汎化されたアクセス情報にもとづいてアクセスポリシを生成するステップとを実行させる制御プログラムである。
【０１２４】
また、例えば、アクセスポリシ生成用プログラムは、コンピュータ（システム１００ａ）に、さらに、対象プログラムにもとづくリソースへのアクセスが発生したときの当該対象プログラムに従って実行されている処理の状態を観測するステップと、観測結果を対応するアクセスの内容を示すアクセス情報に付加するステップと、付加された観測結果にもとづいて複数のアクセスの相関関係を示す相関値を算出するステップとを実行させ、算出した相関値があらかじめ定められた基準値よりも高い複数のアクセス情報を一般化することで、汎化したアクセス情報を生成するステップを実行させる制御プログラムである。
【実施例】
【０１２５】
次に、本発明の具体的実施例について説明する。
図１１は、本実施例におけるアクセスポリシ生成システム２００を示すブロック図である。アクセスポリシ生成システム２００は、各種のデータ処理を行うパーソナル・コンピュータを含むシステムによって構成される。
【０１２６】
図１１に示すように、アクセスポリシ生成システム２００は、ＷＷＷサーバ２０１と、システムコール検査手段２０２と、Linux OS２０３と、ポリシ記憶部２０４と、ポリシ生成手段２０５と、アクセス記憶部２０６と、汎化手段２０７と、スタック検査手段２０８とを含む。
【０１２７】
図１１に示すＷＷＷサーバ２０１は、対象プログラム１０１に従って動作を行う制御手段の具体例である。
【０１２８】
システムコール検査手段２０２は、アクセス監査手段１０２の具体例である。Linux OS２０３は、リソース１０３の具体例であるファイルなどのシステムリソースを管理するオペレーティングシステムである。
【０１２９】
システムコール検査手段２０２は、Linux OS２０３のptraceシステムコールを利用することによって、対象プログラムにもとづくシステムコールが発生するたびに、ソフトウェア割り込みによってシステムコール名（アクセス名の例）と引数（アクセス対象の例）の内容を確認する処理を行う。
【０１３０】
システムコール検査手段２０２による確認結果は、アクセス情報としてアクセス記憶部２０８に格納される。なお、システムコール検査手段２０２は、対象プログラムにもとづくシステムコールが発生したことを、スタック検査手段２０８に通知する処理を行う。
【０１３１】
なお、ptraceシステムコールと呼ばれる手法を利用してシステムコール名と引数の内容を調べることは、straceプログラムと呼ばれるプログラムなどにより実現されている公知の処理である。
【０１３２】
ポリシ記憶部２０４はポリシ記憶部１０４の具体例であり、ポリシ生成手段２０５はポリシ生成手段１０４具体例である。ポリシ生成手段２０５は、汎化手段２０７によって生成された汎化されたアクセス情報にもとづいて、アクセスポリシを生成する処理を行う。
【０１３３】
汎化手段２０７は汎化手段１０７の具体例であり、アクセス記憶部２０６に格納されたデータを汎化したルールを生成するための汎化処理を行う。
【０１３４】
また、スタック検査手段２０８は、状態観測手段１０８の具体例である。スタック検査手段２０８は、システムコールが呼び出された時点でのＷＷＷサーバ２０１のコールスタックを検査する。
【０１３５】
スタック検査手段２０８は、コールスタックを検査することによって、そのシステムコールがプログラム中のどのようなプロシージャによって呼び出されたかを、プロシージャの呼び出し階層を遡って検査し、その検査結果を示す後述するコールスタック情報を取得する処理を行う。
【０１３６】
なお、コールスタックを検査することによって、その時点におけるプロシージャ呼び出しの階層を遡って調べることは、gdb（GNUデバッガ）プログラムなどのデバッガプログラムで実現されている公知の処理である。
【０１３７】
アクセス記憶部２０６は、システム２００のメインメモリであり、アクセス記憶部１０６の具体例である。アクセス記憶部２０６は、システムコール検査手段２０２によって検出されたシステムコール呼び出しを示すアクセス情報と、スタック検査手段２０８によって検査されたシステムコールの呼び出し時点でのコールスタック情報とを保存する。
【０１３８】
図１２は、アクセス記憶部２０６に格納されるアクセス情報の例を示す説明図である。ここで、「システムコール名」には、システムコールの名前、「引数の値」には、システムコールの引数の値が格納される。引数は複数あってもよい。また、「コールスタック情報」には、システムコール呼び出し時のプロシージャ呼び出しの履歴を示す情報が保存されている。
【０１３９】
ここで、「0x40002340」といった「コールスタック情報」を示す数値は、プロシージャのメモリアドレスをあらわしている。
【０１４０】
従って、例えば図１２の最初の行（行番号１）は、readシステムコールが"/etc/passwd"という引数を伴ってコールされ、コールしたプロシージャのメモリアドレスは「0x40002340」であり、かつ、そのプロシージャをコールしたプロシージャのメモリアドレスは「0x80003128」であり、さらに、そのプロシージャをコールしたプロシージャのメモリアドレスは「0x80003320」であり、さらに、そのプロシージャは対象プログラムのプロセスのエントリポイントであることを表す。
【０１４１】
実施の形態２で例示した手法と異なり、プロシージャ呼び出しの階層を全て調べることによって、例えば、共有ライブラリを経由してシステムコールが呼び出された場合も、正確に区別することが可能となる。
【０１４２】
なぜなら、Linux OSでは、一般に、システムコールを呼び出したプロシージャのアドレスは、アプリケーションプログラムに記述されているプロシージャではなく、共有ライブラリ内のプロシージャであり、一般に、同じシステムコールを呼び出す共有ライブラリ内のプロシージャは同じアドレスに格納されているためである。
【０１４３】
図１３は、汎化手段２０７の具体的構成の例を示すブロック図である。図１３に示すように、汎化手段２０７は、相関値算出手段３０１と、カテゴライズ手段３０２と、共通化手段３０３とを含む。
【０１４４】
相関値算出手段３０１は、アクセス記憶部２０６に格納されている表の各レコードを、システムコール名と、各コールスタックの内容とから、レコード間の相関値（近似度）を算出する手段である。
【０１４５】
カテゴライズ手段３０２は、相関値算出手段３０１によって算出された相関値を元に、各レコードを分類する手段である。
【０１４６】
共通化手段３０３は、カテゴライズ手段３０２で分類された各レコードに含まれる引数の値から、共通な部分を取り出して汎化する手段である。
【０１４７】
次に、本実施例のアクセスポリシ生成システム２００の動作について説明する。
ここでは、ルール生成モードが設定されているときのアクセスポリシ生成システム２００の動作について詳細に説明する。
【０１４８】
図１４は、ルール生成モードが設定されているときにアクセスポリシ生成システム２００するアクセスポリシ生成処理の例を示すフローチャートである。
【０１４９】
この例では、アクセスポリシ生成システム２００は、システム２００に搭載されているアクセス生成プログラムが起動されると、対象プログラムに従って動作を行うWWWサーバ２０１を起動する（ステップＳ２０１）。
【０１５０】
なお、ステップＳ２０１にて、WWWサーバ２０１を新たに起動するのではなく、既に起動しているWWWサーバ２０１からのアクセスの監視等の処理を、アクセスポリシ生成プログラムの起動に応じて開始するようにしてもよい。
【０１５１】
このような処理は、PTRACE_ATTACHオプションをつけてptraceシステムコールを起動することによって実現される公知の処理である。
【０１５２】
次に、WWWサーバ２０１に対象プログラムにもとづく処理を実行させるために、適当なリクエストを発行する（ステップＳ２０２）。
【０１５３】
なお、リクエストの発行は、人手で行うようにユーザに指示してもよいし、WWWサーバテストツールなどを利用して機械的に入力してもよい。
【０１５４】
また、攻撃を受けることが無いようにセキュリティ上の注意を十分払った上で、WWWサーバ２０１を実運用環境に配置するようにしてもよい。この場合、実運用環境にてリクエストが発行される。
【０１５５】
リクエストの発行は、WWWサーバ２０１から発行されるアクセスの数が十分な数になり、アクセス情報の収集が完了するまで繰り返し実行する（ステップＳ２０３）。
【０１５６】
ここで、収集完了とするかどうかの判定は、収集したアクセスの数だけでなく、リクエスト数の数を利用してもよいし、WWWサーバ２０１を動作させた時間に依存して決定するようにしてもよい。
【０１５７】
収集を完了すると、汎化手段２０７によって汎化処理を行い（ステップＳ２０４）、ポリシ生成手段２０５によってアクセスポリシを生成する（ステップＳ２０５）。
【０１５８】
次に、汎化手段２０７を構成する、相関値算出手段３０１、カテゴライズ３０２、および共通化手段３０３の詳細な動作について説明する。
【０１５９】
図１５は、相関値算出手段３０１が実行する相関値算出処理の例を示すフローチャートである。
【０１６０】
相関値算出処理では、アクセス記憶部２０６に格納されている表（図１２参照）における各レコードの２つずつの組合せ全てについて、図１５に示す処理を行う。
【０１６１】
相関値算出処理において、相関値算出手段３０１は、ｉ番目のレコードＥi（行番号ｉのアクセス情報：図１２に示す例では１≦ｉ≦６）とｊ番目のレコードＥj（行番号ｊのアクセス情報：図１２に示す例では１≦ｊ≦６かつｊ≠ｉ）に対して、ＥiとＥjが同じシステムコール名かどうかを比較し（ステップＳ３０１）、同じでない場合は０を相関値とする（ステップＳ３０２）。
【０１６２】
ＥiとＥjが同じシステムコール名であれば、相関値算出手段３０１は、ＥiのコールスタックとＥjのコールスタックを比較し、最長部分列Ｃijを算出する（ステップＳ３０３）。
【０１６３】
なお、最長部分列を算出するアルゴリズムは、ＬＣＳ（Longest Common Substring）アルゴリズムと呼ばれている広く知られているアルゴリズムを用いるようにすればよい。
【０１６４】
最長部分列Ｃijを算出すると、相関値算出手段３０１は、（Ｃijの長さ）／（Ｅiの長さ）×（Ｃijの長さ）／（Ｅjの長さ）を算出し、その算出結果をレコードＥiとレコードＥjの相関値とする（ステップＳ３０４）。
【０１６５】
ステップＳ３０４にて算出される相関値は、ＥiとＥjが完全に同じ場合は１．０となり、全く異なる場合は０となる。
【０１６６】
相関値算出手段３０１は、上述したステップＳ３０１〜ステップＳ３０４の処理を、全てのi,jの組み合わせに対して行う。
【０１６７】
図１６は、図１２に示したアクセス情報における各レコード間の相関値を示す説明図である。この例では、図１６に示すように、行番号２（"/var/tmp/31240.tmp"に対するwriteシステムコール）と行番号５( "/var/tmp/34123.tmp"に対するwriteシステムコール)との間と、行番号３("/var/html/index.html"に対するreadシステムコール)と行番号４("/var/html/title.gif"に対するreadシステムコール)との間とで相関値が１となる。
【０１６８】
次に、カテゴライズ手段３０２が実行する分類処理の例について説明する。カテゴライズ手段３０２は、相関値算出手段３０１によって算出された相関値が１であるアクセス情報を同じカテゴリとして分類する処理を行う。
【０１６９】
図１７は、図１２に示したアクセス情報をカテゴライズした状態を示す説明図である。同じカテゴリに分類されているものは、「カテゴリ」欄に同じカテゴリ名が与えられる。
【０１７０】
図１７では、行番号２（"/tmp/31240.tmp"に対するwriteシステムコール）と行番号５（"/tmp/34123.tmp"に対するwriteシステムコール）とが同じカテゴリＡに属する。
【０１７１】
また、行番号３（"/var/html/index.html"に対するreadシステムコール）と行番号４（"/var/html/title.gif"に対するreadシステムコール）とが同じカテゴリＢに属する。その他の２つはそれぞれ独立したカテゴリに属する。
【０１７２】
次に、共通化手段３０３が実行する共通化処理の例について説明する。共通化手段３０３は、同じカテゴリに属するアクセス情報のシステムコールの引数の値から、共通な部分を取り出して汎化する処理を行う。
【０１７３】
ここで、引数の値が文字列の場合は、共通化手段３０３は、上述した最長部分文字列算出アルゴリズム（ＬＣＳアルゴリズム）を用いて処理を行う。
【０１７４】
また、、文字列がファイル名の場合は、ファイル名で特別な意味を持つ文字（スラッシュ「／」やピリオド「．」）を特別扱いして一旦トークン化し、トークン化したトークン列に対してＬＣＳアルゴリズムを用いるようにすればよい。
【０１７５】
このように処理を行うようにすると、ファイル名の持つ意味が汎化の際に考慮されるため、より精度の高い汎化を行うことができる。
【０１７６】
例えば、図１２に示した行番号２のファイル「/var/tmp/31240.tmp」と行番号５のファイル「/var/tmp/34123.tmp」を汎化する場合、単純にＬＣＳアルゴリズムを適用すると、ファイル「/var/tmp/3*.tmp」となる。なお、「*」は可変部分を表し、それ以外の文字が部分文字列を表す。
【０１７７】
その結果、ファイル「/var/tmp/31240.tmp」への書き込みと、ファイル「/var/tmp/34123.tmp」への書き込みは許可されるが、例えば、ファイル「/var/tmp/41234.tmp」への書き込みはポリシ違反となってしまう。
【０１７８】
しかし、この書き込みは、ランダムな数値によるファイルを用いた、テンポラリファイル書き込みである可能性が高い。その場合、本来は、ファイル「/var/tmp/41234.tmp」への書き込みは正当なものである。
【０１７９】
一方、図１２に示した行番号２のファイル「/var/tmp/31240.tmp」と行番号５のファイル「/var/tmp/34123.tmp」を汎化する場合、一旦スラッシュとピリオドを区切り文字と見なしてトークン化し、トークン列に対してＬＣＳアルゴリズムを用いた上で、逆トークン化することによって、ファイル「/var/tmp/*.tmp」という結果が得られる。
【０１８０】
図１８は、共通化手段３０３が実行する上記のトークン化処理とＬＣＳアルゴリズムを組み合わせた共通化処理の例を示す説明図である。
【０１８１】
共通化処理において、共通化手段３０３は、行番号２のファイル「/var/tmp/31240.tmp」と行番号５のファイル「/var/tmp/34123.tmp」それぞれのファイル名を、「／」 と 「．」で区切るトークン化処理を行う（ステップＳ４０１，Ｓ４０２）。
【０１８２】
次に、共通化手段３０３は、トークン（区切られた文字のかたまり、図１８では四角の枠で表記）に対して、最長部分列を算出する（ステップＳ４０３）。
【０１８３】
最後に、共通化手段３０３は、トークンを元の文字列に戻すことによって（ステップＳ４０４）、ファイル「/var/tmp/*.tmp」という結果を得る。
【０１８４】
この結果は、単にＬＣＳアルゴリズムを適用した場合と比較して、例えばファイル「/var/tmp/41234.tmp」への書き込みも許可ポリシに含ませることができ、より正確に汎化することができていると言える。
【０１８５】
上記の共通化処理が同じカテゴリに分類されたそれぞれのアクセス情報について実行されると、最終的に、図１９に示すようなアクセス情報に汎化される。
【０１８６】
ポリシ生成手段２０５は、図１９に示すような汎化されたアクセス情報から、アクセスポリシの記述文法に従ってアクセスポリシを生成し、生成したアクセスポリシを出力する。
【０１８７】
このような構成にすることによって、過不足の無いアクセスポリシを生成することができる。
【０１８８】
例えば、図１２に示すアクセス情報をそのまま許可ポリシとした場合、従来技術１では、ファイル「/var/tmp/35321.tmp」への書き込みが生じた場合はポリシ違反となってしまう。
【０１８９】
しかし、上述のとおり、この書き込みは、ランダムな数値によるファイルを用いたテンポラリファイル書き込みである可能性が高く、その場合、ファイル「/var/tmp/35321.tmp」への書き込みは本来は正当なものである。しかし、従来技術１では、プログラムの正常な動作であるにも関わらず、不正動作として判定されてしまう。
【０１９０】
一方、本実施例では、「ファイル「/var/tmp/*.tmp」への書き込みを許可する」という許可ポリシが生成されるため、ファイル「/var/tmp/35321.tmp」への書き込みも正当なものと認められ、上記のような問題は生じない。
【０１９１】
また、図１２に示したアクセス情報を、コールスタックの情報を用いずに図１５に示した共通化処理によって汎化する場合には、ファイル「/var/tmp/31240.tmp」、ファイル「/var/tmp/34123.tmp」、およびファイル「/var/log/httpd.log」の３つが同じカテゴリとして分類されるため、「ファイル「/var/*」への書き込み」が許可ポリシとされてしまう。
【０１９２】
しかし、ファイル「/var/log/httpd.log」への書き込みは、テンポラリファイルの書き込みではなく、ログファイルの書き込みであるため、この３つをまとめて汎化するのは過剰な汎化であるといえる。
【０１９３】
例えば、ファイル「/var/log/troyanhorse.pl」への書き込みは、トロイの木馬やコンピュータウイルスの感染行為である可能性があり、許可ポリシに含ませるべきではない。
【０１９４】
これに対し、本実施例では、スタック検査手段２０８を備えてコールスタックを観測し、かつ、そのコールスタックを汎化手段２０７での汎化処理で利用する構成としているので、過剰な汎化を抑制することができる。
【産業上の利用可能性】
【０１９５】
本発明は、ポリシ強制システムなどのアクセスポリシにもとづくセキュリティの管理に適用可能であり、特に、一般のＯＳのファイルアクセス権限の設定、セキュアＯＳのアクセス権限の設定、アクセス制御ミドルウェアのポリシ設定、ホストベース不正侵入検知システム、ホストベース不正侵入防止システムのポリシ設定、あるいは、サンドボックスモデルを有するバーチャルマシンのポリシ設定などに適用し、アクセスポリシを自動的に生成するために有用である。
【図面の簡単な説明】
【０１９６】
【図１】本発明の第１の実施の形態におけるアクセスポリシ生成システムの構成の例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるアクセスポリシ生成処理の例を示すフローチャートである。
【図３】本発明の第１の実施の形態におけるアクセス情報の例を示す説明図である。
【図４】本発明の第１の実施の形態における汎化したアクセス情報の例を示す説明図である。
【図５】本発明の第１の実施の形態における汎化したアクセス情報の他の例を示す説明図である。
【図６】本発明の第１の実施の形態における汎化したアクセス情報のさらに他の例を示す説明図である。
【図７】本発明の第２の実施の形態におけるアクセスポリシ生成システムの構成の例を示すブロック図である。
【図８】本発明の第２の実施の形態におけるアクセスポリシ生成処理の例を示すフローチャートである。
【図９】本発明の第２の実施の形態におけるアクセス情報の例を示す説明図である。
【図１０】本発明の第２の実施の形態における汎化したアクセス情報の例を示す説明図である。
【図１１】アクセスポリシ生成システムの具体例を示すブロック図である。
【図１２】アクセス情報の具体例を示す説明図である。
【図１３】汎化手段の具体的構成の例を示すブロック図である。
【図１４】アクセスポリシ生成処理の具体例を示すフローチャートである。
【図１５】相関値算出処理の例を示すフローチャートである。
【図１６】相関値の算出結果を示す説明図である。
【図１７】カテゴライズしたアクセス情報を示す説明図である。
【図１８】共通化処理の具体例を示す説明図である。
【図１９】汎化したアクセス情報の具体例を示す説明図である。
【図２０】ポリシ強制システムの一般的な構成の例を示すブロック図である。
【図２１】従来のアクセスポリシ生成システムの例を示すブロック図である。
【符号の説明】
【０１９７】
１００，１００ａ，２００    アクセスポリシ生成システム
１０１                      対象プログラム
１０２                      アクセス監査手段
１０３                      リソース
１０４，２０４              ポリシ記憶部
１０５，２０５              ポリシ生成手段
１０６，２０６              アクセス記憶部
１０７．２０７              汎化手段
１０８                      状態観測手段
１１０                      入力装置
２０１                      ＷＷＷサーバ
２０２                      システムコール検査手段
２０３                      Linux OS
２０８                      スタック検査手段
【図１】
2005234661.tif 000003
【図２】
2005234661.tif 000004
【図３】
2005234661.tif 000005
【図４】
2005234661.tif 000006
【図５】
2005234661.tif 000007
【図６】
2005234661.tif 000008
【図７】
2005234661.tif 000009
【図８】
2005234661.tif 000010
【図９】
2005234661.tif 000011
【図１０】
2005234661.tif 000012
【図１１】
2005234661.tif 000013
【図１２】
2005234661.tif 000014
【図１３】
2005234661.tif 000015
【図１４】
2005234661.tif 000016
【図１５】
2005234661.tif 000017
【図１６】
2005234661.tif 000018
【図１７】
2005234661.tif 000019
【図１８】
2005234661.tif 000020
【図１９】
2005234661.tif 000021
【図２０】
2005234661.tif 000022
【図２１】
2005234661.tif 000023