(57)【要約】【課題】操作の対象を指定した状態依存アクセス制御機能を持つことができるようにする。【解決手段】不正アクセス防止システムは、入出力装置と、サーバ装置と、アクセス判定部での操作の実行可否の判定に用いられる監視ルールを作成する機能を有するルール作成装置と、記憶装置とを備える。サーバ装置は、監視対象プログラムにもとづくプラットフォームに対する処理を仲介する機能と、仲介した操作の内容を一意に識別する文字列を生成する機能とを有するアクセス制御部と、監視ルールの内容にもとづいて、アクセス制御部から受信したイベントが示す操作の実行の可否を判定する機能を有するアクセス判定部とを含む。【選択図】  図１
2004287810.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するアクセス制御手段と、
前記プラットフォームに対する監視対象の制御プログラムにもとづく操作の履歴を記憶する履歴記憶手段と、
前記履歴記憶手段に記憶された操作の履歴にもとづいて、前記リソースへのアクセスを許可するか否かを判定するアクセス判定手段とを備え、
前記アクセス制御手段は、前記アクセス判定手段の判定結果に従って前記リソースに対するアクセスを制御する
ことを特徴とする不正アクセス防止システム。
【請求項２】
サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するアクセス制御手段と、
監視対象の制御プログラムにもとづく規制対象とする操作順序を示す監視ルールを予め記憶する監視ルール記憶手段と、
前記制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成するイベント生成手段と、
前記イベント列と前記監視ルールとを比較することで、前記リソースへのアクセスを許可するか否かを判定するアクセス判定手段とを備え、
前記アクセス制御手段は、前記アクセス判定手段の判定結果に従って前記リソースに対するアクセスを制御する
ことを特徴とする不正アクセス防止システム。
【請求項３】
アクセス判定手段は、アクセス判定手段の判定結果が拒否であったことに応じて制御プログラムにもとづく操作を遮断する操作遮断手段を含む
請求項２記載の不正アクセス防止システム。
【請求項４】
アクセス判定手段は、
アクセス制御の対象となるリソース毎に、監視ルールに適合するイベント列のパターンに従った状態遷移を許容するための有限状態モデルを生成する有限状態モデル構築手段と、
リソースへのアクセスを許可するか否かの判定をするために当該有限状態モデルを実行する有限状態モデル実行手段とを含む
請求項２または請求項３記載の不正アクセス防止システム。
【請求項５】
監視ルール記憶手段には、監視ルールに違反した操作がなされたときの対応処理を示す違反対応情報が記憶され、
監視ルールに違反した操作がなされたときに前記対応処理を実行する状態に遷移させるための有限状態モデルを生成する有限状態モデル構築手段と、
前記違反対応情報を出力するために当該有限状態モデルを実行する有限状態モデル実行手段と、
前記有限状態モデル実行手段からの前記違反対応情報が入力したことにもとづいて、当該違反対応情報が示す対応処理を実行する対応処理手段とを備えた
請求項２または請求項３記載の不正アクセス防止システム。
【請求項６】
監視対象の制御プログラムの内容を解析するプログラム解析手段と、
前記プログラム解析手段による解析結果にもとづいて、監視ルール記憶手段に記憶されている監視ルールの修正または追加を行う監視ルール更新手段とを備えた
請求項２から請求項５のうちいずれかに記載の不正アクセス防止システム。
【請求項７】
監視ルールの登録を行うルール登録手段を備え、
前記ルール登録手段は、
監視対象の制御プログラムを静的解析することで当該プログラムから生成され得るイベントのフローグラフを生成する監視対象解析手段と、
監視ポリシーの入力を受け付けて監視ポリシーを編集する監視ポリシー編集手段と、
前記監視ポリシーにもとづく監視ルールを作成するルール作成手段と、
前記監視ルールと前記フローグラフとの整合性を検査する整合性検査手段とを備え、
前記整合性検査手段により整合がとれていると判定されたときに、前記監視ルールを監視ルール記憶手段に記憶させる
請求項２から請求項６のうちいずれかに記載の不正アクセス防止システム。
【請求項８】
整合性検査手段により不整合であると判定されたときに、不適切な監視ポリシーである旨を警告する警告出力手段を備えた
請求項７記載の不正アクセス防止システム。
【請求項９】
監視ルールを作成するルール作成手段を備え、
前記ルール作成手段は、
監視対象の制御プログラムに対する正常な入力パターンを生成する正常入力生成手段と、
前記正常な入力パターンによって生成されるイベント列を収集するイベント列収集手段と、
前記イベント列が監視ルールに違反しているか否かを検査し、違反していると判定したときに警告を出力する違反検査手段とを含む
請求項２から請求項６のうちいずれかに記載の不正アクセス防止システム。
【請求項１０】
サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するためにアクセス制御装置によって実行される不正アクセス防止方法であって、
前記アクセス制御装置は、
監視対象の制御プログラムにもとづく規制対象とする操作順序を示す監視ルールを予め監視ルール記憶手段に記憶し、
前記制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成し、
前記イベント列と前記監視ルールとを比較することで、前記リソースへのアクセスを許可するか否かを判定し、その判定結果に従って前記リソースに対するアクセスを制御する
ことを特徴とする不正アクセス防止方法。
【請求項１１】
サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するための不正アクセス防止プログラムであって、
コンピュータに、
監視対象の制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成する処理と、
前記イベント列と、前記制御プログラムにもとづく規制対象とする操作順序を示す前記監視ルールとを比較することで、前記リソースへのアクセスを許可するか否かを判定し、その判定結果に従って前記リソースに対するアクセスを制御する処理と
を実行させることを特徴とする不正アクセス防止プログラム。
【請求項１２】
コンピュータに、
判定結果が拒否であったことに応じて制御プログラムにもとづく操作を遮断する処理を実行させる
請求項１１記載の不正アクセス防止プログラム。
【請求項１３】
コンピュータに、
アクセス制御の対象となるリソース毎に、監視ルールに適合するイベント列のパターンに従った状態遷移を許容するための有限状態モデルを生成する処理と、
リソースへのアクセスを許可するか否かの判定をするために当該有限状態モデルを実行する処理とを実行させる
請求項１１または請求項１２記載の不正アクセス防止プログラム。
【請求項１４】
コンピュータに、
監視ルールに違反した操作がなされたときに、監視ルールに違反した操作がなされたときの対応処理を実行する状態に遷移させるための有限状態モデルを生成する処理と、
前記違反対応情報を出力するために当該有限状態モデルを実行する処理と、
前記対象処理を示す前記違反対応情報が入力したことにもとづいて、当該違反対応情報が示す対応処理を実行する処理とを実行させる
請求項１１または請求項１２記載の不正アクセス防止プログラム。
【請求項１５】
コンピュータに、
監視対象の制御プログラムの内容を解析する処理と、
前記制御プログラムの内容の解析結果にもとづいて、監視ルールの修正または追加を行う処理とを実行させる
請求項１１から請求項１４のうちいずれかに記載の不正アクセス防止プログラム。
【請求項１６】
コンピュータに、
監視対象の制御プログラムを静的解析することで当該プログラムから生成され得るイベントのフローグラフを生成する処理と、
監視ポリシーの入力を受け付けて監視ポリシーを編集する処理と、
前記監視ポリシーにもとづく監視ルールを作成する処理と、
前記監視ルールと前記フローグラフとの整合性を検査する処理と、
整合性の検査によって整合がとれていると判定されたときに、前記監視ルールを記憶手段に格納する処理とを実行させる
請求項１１から請求項１５のうちいずれかに記載の不正アクセス防止プログラム。
【請求項１７】
コンピュータに、整合性の検査によって不整合であると判定されたときに、不適切な監視ポリシーである旨を警告する処理を実行させる
請求項１６記載の不正アクセス防止プログラム。
【請求項１８】
コンピュータに、
監視対象の制御プログラムに対する正常な入力パターンを生成する処理と、
前記正常な入力パターンによって生成されるイベント列を収集する処理と、
前記イベント列が監視ルールに違反しているか否かを検査し、違反していると判定したときに警告を出力する処理とを実行させる
請求項１１から請求項１５のうちいずれかに記載の不正アクセス防止プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアの障害や設定の誤りにもとづく不正動作がなされることを防止する不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラムに関する。
【０００２】
【従来の技術】
近年のインターネットの普及に伴い、インターネットは電話網などと並ぶ重要な社会インフラとなりつつある。インターネットでは、ユーザは様々なサービスを受けることができる。インターネット上で提供されるサービスは、一般に、ユーザからの一連のリクエストを受け付け、受け付けたリクエストに応じた処理を実行し、その処理結果をユーザに送信することで実現されている。具体的には、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）によるサービスが広く普及しており、現在では電子商取引などの様々なサービスの基盤となっている。
【０００３】
上記のインターネット上で提供される様々なサービスは、インターネットに接続されたサーバと呼ばれるシステムによって実現されている。特に、インターネットに公開されたサーバは、匿名性の高い不特定多数のユーザからのリクエストを受け付けるため、いわゆるサイバー攻撃（サイバースペースへの攻撃）の対象となりやすく、セキュリティ上の大きな問題となっている。
【０００４】
このような、公開サーバに対するサイバー攻撃の一つに、サーバの脆弱性（サーバソフトウェアの障害、サーバソフトウェアの設定ミス）を悪用し、サーバに悪意のあるリクエストを送りつけて不正動作させ、機密ファイルを盗むなどの悪意のある動作をさせるようにするものである。このようなサイバー攻撃は、「脆弱性攻撃」と呼ばれる。
【０００５】
脆弱性攻撃は、理想的には、サーバの脆弱性を無くすことによって、未然に防止することができる。しかし、ソフトウェアの脆弱性を完全に無くすことは非常に困難であり、現実的には不可能である。また、ソフトウェアの作成者とサーバ運用者は一般には同一でないため、サーバ運用者がソフトウェアの仕様を誤解して、セキュリティ上問題のある設定をしてしまう可能性は排除することができない。
【０００６】
従って、脆弱性攻撃を未然に防ぐための現実的な対処としては、システムの実際の動作を監視して、サーバ運用者が想定している通りの挙動を示していることを保証する仕組みが必要となる。なお、システムのあらゆる動作を監視する必要はなく、ファイルアクセスやネットワークアクセスのように、システムにリソースに対するアクセスを監視できればよい。なぜなら、システムのリソースの不正使用が、セキュリティ上の被害を引き起こす最も深刻な不正動作であるからである。
【０００７】
現在の一般的なコンピュータアーキテクチャでは、サーバプログラムが単独でコンピュータ上で動作することはなく、オペレーティングシステム（ＯＳ）の上で動作する。そして、ファイル等の重要なシステムリソースに対するアクセスは、必ずＯＳを介して行なわれる。このようなソフトウェアの階層は、ＯＳ上で動作する処理系にも当てはまる。例えば、Ｊａｖａ（登録商標）と呼ばれるプログラミング言語で記述されたサーバプログラムの場合、プログラムからのファイルアクセスは、まずＪａｖａＶＭ（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を介して行なわれる。このように、システムリソースへのアクセスが必ず仲介される環境では、アクセス元（ユーザ等）からアクセス先（ファイル等）へのアクセス（システムコール等）の可否を、アクセス元やアクセス先のそれぞれに対してあらかじめ定めておくことにより、セキュリティ違反動作の防止を実現できる。これをアクセス制御技術と呼ぶ。なお、以下、アクセス元のことを「主体」、アクセス先のことを「対象」、アクセスのことを「操作」と呼ぶ。
【０００８】
例えば、ＵＮＩＸ（登録商標）と呼ばれるＯＳは、ファイルの所有者、ファイルに設定されているグループに属するユーザ、それ以外のユーザの３種類の主体に対して、ファイルの読み込み、書き出し、実行の３種類の操作の可否を設定できる。これらの設定は、そのファイルを書き換え可能なユーザ（一般には、所有者からＯＳの管理者）以外は変更することができない。例えば、システムを構成するＷＷＷサーバに未知の脆弱性があったとしても、機密ファイルはＷＷＷサーバから読み出せないように設定しておけば、そのＷＷＷサーバが不正ユーザの攻撃によって異常な動作をしても、機密ファイルが盗まれることはない。
【０００９】
ファイルシステムと同様に、ネットワーク通信に対するアクセス制御も実現されている。例えば、ＵＮＩＸオペレーティングシステム上で一般に使用されている「ｘｉｎｅｔｄ」というサーバプログラムは、ネットワーク経由のリクエストに対して、そのリクエストを処理する他のサーバプログラム（ｆｔｐサーバ、ｔｅｌｎｅｔサーバ等）を起動する一種のプラットフォームである。「ｘｉｎｅｔｄ」は、あるサーバプログラムが、どのホストからのリクエストのみを受け付ける、といった設定をすることができる。
【００１０】
また、アクセス制御を行なう対象を、ＯＳ内部の広範なオブジェクトに適用する方式も提案されている。例えば、米国国家安全保障局（ＮＳＡ）が研究用プロトタイプとして公開している「ＳＥＬｉｎｕｘ」が挙げられる（非特許文献１参照）。
【００１１】
「ＳＥＬｉｎｕｘ」では、ＴＣＰソケットに対して、例えば図４５に示すような各種の権限を設定することができる。例えば、ＷＷＷサーバに感染するインターネットワームの中には、ＷＷＷサーバの動作を乗っ取り、周辺のサーバに手当たり次第に接続し、ワームを伝染させる動作をするものがある。
【００１２】
サーバプログラムは、原則として自発的にネットワーク接続することはないので、「ＳＥＬｉｎｕｘ」上では、ＷＷＷサーバに対して、「ｃｏｎｎｅｃｔｔｏ」を許可しないことによって、このような動作を制限することができる。
【００１３】
また、特定の対象への動作を、特定のユーザが特定のプログラムを使用した場合に限り許可するというように、細かく主体を設定することにより、セキュリティを向上させているものもある（特許文献１参照）。
【００１４】
上記のような手法で特定の動作を制限するアクセス制御技術を、「従来技術１」と呼ぶことにする。
【００１５】
一方、より高度なソフトウェアの動作保証の仕組みとして、サーバの動作履歴を利用したポリシー強制技術がある。例えば、ＥＭ（Ｅｘｅｃｕｔｉｏｎ  Ｍｏｎｉｔｏｒｉｎｇ：実行の監視）と呼ばれるサーバの動作履歴に依存したポリシー強制技術がある（非特許文献２）。
【００１６】
ＥＭは、セキュリティオートマトンという有限状態機械（有限状態モデル）の一種によって、ソフトウェアの動作を規制する。ソフトウェアの個々の動作は、セキュリティオートマトンの状態遷移と関連付けられており、状態遷移が可能な動作のみが許容され、状態遷移が不可能な動作が生じた場合はそのソフトウェアは強制終了される。
【００１７】
ここで、「有限状態機械」とは、システムをある有限な状態の集合で表し、システムの動作を、システムへの入力に応じた状態の遷移で記述したものを意味する。また、「セキュリティオートマトン」とは、ソフトウェアが実行してもよい動作がなされたときにのみ状態遷移が可能な有限状態機械を意味する。
【００１８】
図４６は、ＥＭによる動作規制の例を示す説明図である。図４６に示す例では、「ＦｉｌｅＲｅａｄ」と「Ｓｅｎｄ」という２つの操作の順序を規制しており、「ＦｉｌｅＲｅａｄ」のあとに「Ｓｅｎｄ」を実行してはならないことを表す。図４６において、状態ｑ１は初期状態を意味し、状態ｑ２は状態ｑ１であるときに「ＦｉｌｅＲｅａｄ」が実行された場合に遷移する状態を意味する。
【００１９】
図４６に示す例では、最初は状態ｑ１であるため、初期状態では「ＦｉｌｅＲｅａｄ」も「Ｓｅｎｄ」も実行可能である。状態ｑ１であるときに「Ｓｅｎｄ」が実行された場合、状態遷移９０１によって状態ｑ１のままとなる。状態ｑ１であるときに「ＦｉｌｅＲｅａｄ」が実行された場合、状態遷移９０２によって状態ｑ２に移行する。状態ｑ２では、「ＦｉｌｅＲｅａｄ」のみが実行可能である。状態ｑ２であるときに「ＦｉｌｅＲｅａｄ」が実行された場合、状態遷移９０３によって状態ｑ２のままとなる。「Ｓｅｎｄ」に対応する状態遷移は存在しないため、「Ｓｅｎｄ」を実行しようとすると、プログラムが強制終了される。
【００２０】
上記のような手法で特定の動作を制限するアクセス制御技術を、「従来技術２」と呼ぶことにする。
【００２１】
【特許文献１】
特開２００１−３３７８６４号公報
【非特許文献１】
「オペレーティングシステムのセキュリティ機能拡張の調査」、１３情経第１１７９号、ＩＰＡ／ＩＳＥＣ（情報処理振興事業協会セキュリティセンター）、平成１３年度、概要調査編、ｐ．Ｉ−５−Ｉ−１３
【非特許文献２】
Ｆｒｅｄ  Ｓｃｈｎｅｉｄｅｒ（フレッド・シュナイダー）「Ｅｎｆｏｒｃｅａｂｌｅ  Ｓｅｃｕｒｉｔｙ  Ｐｏｌｉｃｉｅｓ（エンフォーサブル・セキュリティ・ポリシーズ）」、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｓｙｓｔｅｍ  Ｓｅｃｕｒｉｔｙ（エイシーエム・トランザクションズ・オン・インフォメーション・アンド・システムセキュリティ）、３巻１号、２０００年２月、ｐ．３０―５０
【００２２】
【発明が解決しようとする課題】
上述した従来技術１のアクセス制御技術は、いずれも、アクセス制御の操作を細かく分類しているものの、アクセス制御の主体であるサーバプログラムの状態については一切関知しないものである。
【００２３】
サーバプログラムは、一般的に複雑な内部状態を持ったプログラムであるため、より広範な不正動作を監視するには、上述した従来技術１によるアクセス制御では限界があり、適切に不正動作を監視することはできないという課題があった。
【００２４】
例えば、理想的には、ＷＷＷサーバが自発的にネットワーク接続する動作を制限すれば、ワームの伝染を未然に防止できる。しかし、実際には、ＷＷＷサーバには、起動時に一度自発的にネットワーク接続を行うものがあるため、このようなＷＷＷサーバの動作を適切に制限することはできない。このようなサーバの動作を適切に制限するためには、「ある時点まではｃｏｎｎｅｃｔしてもよいが、ある時点以降はｃｏｎｎｅｃｔしてはならない」という、状態依存のアクセス制御を設けることが必要となる。
【００２５】
一方、上述した従来技術２では、サーバの状態に依存したアクセス制御を実現しているが、以下に示す課題を有している。
【００２６】
第１の課題は、従来技術２のアクセス制御技術では、プログラムの動作の順序を制限する機能が与えられているが、操作の対象を限定した状態依存のアクセス制御の記述ができないことである。例えば、「ｏｐｅｎ」、「ｒｅａｄ」、「ｃｌｏｓｅ」という３つの操作がある場合、「ｏｐｅｎしたあとｒｅａｄを実行しなくてはならない」といったルールを記述することはできるが、「ファイルＡをｏｐｅｎしたあと、ファイルＡをｒｅａｄしてはならない」というように、操作の対象を限定する記述ができない。したがって、ファイルＡを「ｏｐｅｎ」したあと、ファイルＢを「ｒｅａｄ」した場合も違反動作として検知されてしまう。従って、アクセス制御のルールの記述が困難なものとなり、アクセス制御の能力も限られてしまう。
【００２７】
第２の課題は、通常のサーバ運用者にとっては、アクセス制御のルールの記述が困難であるという点にある。なぜなら、サーバ運用者は、対象とするサーバプログラムの大まかな仕様しか把握していないが、現実のサーバプログラムの動作は一般に非常に複雑であるためである。この問題は、従来技術１でも生じるが、従来技術２ではサーバの内部状態遷移を知る必要があるため、より難しくなる。誤ったルールを記述すると、正当な動作が不正なものとして制限されてしまうという問題が発生してしまうことになる。
【００２８】
第３の課題は、違反動作が生じた際に、単に強制終了するだけなので、不正動作の内容に応じた対処ができない点にある。
【００２９】
本発明は上述した問題を解消し、操作の対象を指定した状態依存アクセス制御機能を持つことができるようにすることを目的とする。また、アクセス制御のルールをより簡単に記述することができるようにすることを目的とする。さらに、状態依存アクセス制限に違反した動作が生じた際に、違反した内容に応じた対処を指定することができるようにすることを目的とする。
【００３０】
【課題を解決するための手段】
上記の問題を解決するために、本発明の不正アクセス防止システム（例えば不正アクセス防止システム１００）は、サーバ装置（例えばサーバ装置２）に搭載されているプラットフォーム（例えばプラットフォーム２１ｂ）が管理するリソースに対するアクセスを制御するアクセス制御手段（例えばアクセス制御部２２）と、プラットフォームに対する監視対象の制御プログラム（例えば監視対象プログラム２１ａ）にもとづく操作の履歴を記憶する履歴記憶手段（例えば状態変数記憶部２３ｄ）と、履歴記憶手段に記憶された操作の履歴にもとづいて、リソースへのアクセスを許可するか否かを判定するアクセス判定手段（例えばアクセス判定部２３）とを備え、アクセス制御手段が、アクセス判定手段の判定結果（例えば図２９において「許可」で終了したか「拒否」で終了したかの結果）に従ってリソースに対するアクセスを制御することを特徴とする。
【００３１】
上記のように、監視対象の制御プログラムにもとづく操作の履歴を用いてアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【００３２】
また、本発明の不正アクセス防止システム（例えば不正アクセス防止システム１００）は、サーバ装置（例えばサーバ装置２）に搭載されているプラットフォーム（例えばプラットフォーム２１ｂ）が管理するリソースに対するアクセスを制御するアクセス制御手段（例えばアクセス制御部２２）と、監視対象の制御プログラム（例えば監視対象プログラム２１ａ）にもとづく規制対象とする操作順序を示す監視ルールを予め記憶する監視ルール記憶手段（例えば監視ルール記憶部４２）と、制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成するイベント生成手段（例えばイベント生成部２２ｂ）と、イベント列と監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定（例えば、生成されたイベント列が、監視ルールにより禁止しようとしているイベント列であるか否かを判定する）するアクセス判定手段（例えばアクセス判定部２３）とを備え、アクセス制御手段が、アクセス判定手段の判定結果に従ってリソースに対するアクセスを制御することを特徴とする。
【００３３】
上記のように、イベント列と監視ルールとを比較することでアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【００３４】
また、アクセス判定手段が、アクセス判定手段の判定結果が拒否であったことに応じて制御プログラムにもとづく操作を遮断する操作遮断手段（例えばステップＳ３８２にてプログラムを終了させる処理を実行させる手段）を含むように構成されていてもよい。
【００３５】
上記の構成とすれば、アクセスを拒否すると判定されたときに、操作を遮断することができる。
【００３６】
アクセス判定手段は、アクセス制御の対象となるリソース毎に、監視ルールに適合するイベント列のパターンに従った状態遷移を許容するための有限状態モデル（有限状態機械）を生成する有限状態モデル構築手段（例えば監視ＦＳＭ構築部２３ｂ）と、リソースへのアクセスを許可するか否かの判定をするために当該有限状態モデルを実行する有限状態モデル実行手段（例えば監視ＦＳＭ実行部２３ａ）とを含むように構成されていてもよい。
【００３７】
上記の構成とすれば、有限状態モデルを用いて高速に判定処理を行うことができるようになる。
【００３８】
監視ルール記憶手段には、監視ルールに違反した操作がなされたときの対応処理を示す違反対応情報（例えば対応選択領域１１６で選択された対応を示す情報）が記憶され、監視ルールに違反した操作がなされたときに対応処理を実行する状態に遷移させるための有限状態モデルを生成する有限状態モデル構築手段（例えばアクセス判定・対応部２４が有する監視ＦＳＭ構築部２３ｂ）と、違反対応情報を出力するために当該有限状態モデルを実行する有限状態モデル実行手段（例えばアクセス判定・対応部２４が有する監視ＦＳＭ実行部２３ａ）と、有限状態モデル実行手段からの違反対応情報が入力したことにもとづいて、当該違反対応情報が示す対応処理を実行する対応処理手段（例えば対応処理部５１）とを備えていてもよい。
【００３９】
上記の構成とすれば、アクセスを拒否すると判定されたときに、適切な対応処理をとることができるようになる。
【００４０】
監視対象の制御プログラムの内容を解析するプログラム解析手段（例えば監視対象解析部３３）と、プログラム解析手段による解析結果にもとづいて、監視ルール記憶手段に記憶されている監視ルールの修正または追加を行う監視ルール更新手段（例えば監視ルール作成部３１）とを備えていてもよい。
【００４１】
上記の構成とすれば、拒否すべきでないアクセスを拒否してしまうような不適切な監視ルールが生成されてしまうことを防止することができる。
【００４２】
監視ルールの登録を行うルール登録手段（例えばルール作成装置３）を備え、ルール登録手段は、監視対象の制御プログラムを静的解析することで当該プログラムから生成され得るイベントのフローグラフを生成する監視対象解析手段（例えば監視対象解析部３３）と、監視ポリシーの入力を受け付けて監視ポリシーを編集する監視ポリシー編集手段（例えば監視ポリシー編集部３１ａ）と、監視ポリシーにもとづく監視ルールを作成するルール作成手段（例えばポリシー翻訳部３１ｂ）と、監視ルールとフローグラフとの整合性を検査する整合性検査手段（例えば整合性検査部３１ｃ）とを備え、整合性検査手段により整合がとれていると判定されたときに、監視ルールを監視ルール記憶手段に記憶させるように構成されていてもよい。
【００４３】
上記の構成とすれば、拒否すべきでないアクセスを拒否してしまうような不適切な監視ルールが生成されてしまうことを防止することができる。
【００４４】
整合性検査手段により不整合であると判定されたときに、不適切な監視ポリシーである旨を警告する警告出力手段（例えば対応処理装置５）を備えていてもよい。
【００４５】
上記の構成とすれば、拒否すべきでないアクセスを拒否してしまうような不適切な監視ポリシーが指定されたときに、警告を発して監視ポリシーの変更や指定中止などを促すことができるようになる。
【００４６】
監視ルールを作成するルール作成手段（例えばルール作成装置３）を備え、ルール作成手段は、監視対象の制御プログラムに対する正常な入力パターンを生成する正常入力生成手段（例えば正常入力生成部３４ａ）と、正常な入力パターンによって生成されるイベント列を収集するイベント列収集手段（例えばイベント列収集部３４ｃ）と、イベント列が監視ルールに違反しているか否かを検査し、違反していると判定したときに警告を出力する違反検査手段（例えば違反検査部３１ｄ）とを含むように構成されていてもよい。
【００４７】
上記の構成とすれば、拒否すべきでないアクセスを拒否してしまうような不適切な監視ポリシーが指定されたときに、警告を発して監視ポリシーの変更や指定中止などを促すことができるようになる。
【００４８】
また、本発明の不正アクセス防止方法は、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するためにアクセス制御装置によって実行される不正アクセス防止方法であって、アクセス制御装置が、監視対象の制御プログラムにもとづく規制対象とする操作順序を示す監視ルールを予め監視ルール記憶手段に記憶し、制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成し、イベント列と監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定し、その判定結果に従って前記リソースに対するアクセスを制御することを特徴とする。
【００４９】
上記のように、イベント列と監視ルールとを比較することでアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【００５０】
さらに、本発明の不正アクセス防止プログラムは、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するための不正アクセス防止プログラムであって、コンピュータに、監視対象の制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成する処理と、イベント列と、制御プログラムにもとづく規制対象とする操作順序を示す監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定し、その判定結果に従ってリソースに対するアクセスを制御する処理とを実行させることを特徴とする。
【００５１】
上記のように、イベント列と監視ルールとを比較することでアクセス制御を実行させる構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【００５２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
実施の形態１．
図１は、本発明の第１の実施形態における不正アクセス防止システム１００の構成例を示すブロック図である。不正アクセス防止システム１００は、入出力装置１と、サーバ装置２と、ルール作成装置３と、記憶装置４とを備える。不正アクセス防止システム１００は、例えばＷＷＷサーバやネットワークサーバとして機能するパーソナルコンピュータによって構成される。この不正アクセス防止システム１００（主としてサーバ装置２）は、インターネットなどの通信ネットワークを介して情報の提供や受け付けなどの各種のサービスを実行する機能を有する。
【００５３】
入出力装置１は、キーボードやマウスなどの入力部によって構成され例えばサーバ運用者によって操作される入力装置と、ＬＣＤ（液晶表示装置）などの表示部によって構成される出力装置を含む。なお、出力装置は、プリンタなどの印刷部を含む構成とされていてもよい。
【００５４】
サーバ装置２は、ＲＯＭやＲＡＭなどの記憶媒体によって構成されるデータ記憶部２１と、アクセス制御部２２と、アクセス判定部２３とを含む。サーバ装置２は、データ記憶部２１に格納されている制御プログラムに従って動作を行う。
【００５５】
データ記憶部２１には、監視対象プログラム２１ａや、プラットフォーム２１ｂなどの各種のデータが格納される。監視対象プログラム２１ａは、データ記憶部２１に格納されている制御プログラムのうち、アクセス制御の対象とするものとしてあらかじめ定めらている制御プログラムである。制御プログラムには、例えばＷＷＷサーバプログラムなどが挙げられる。プラットフォーム２１ｂは、監視対象プログラム２１ａを含む各制御プログラムが動作する基盤ソフトウェアである。プラットフォーム２１ｂには、例えばＵＮＩＸのようなＯＳやＪａｖａＶＭなどが挙げられる。
【００５６】
アクセス制御部２２は、図２に示すように、操作仲介部２２ａと、イベント生成部２２ｂと、対象属性記憶部２２ｃとを含む。
【００５７】
アクセス制御部２２は、監視対象プログラム２１ａにもとづくプラットフォーム２１ｂに対する処理（操作）を仲介する機能と、仲介した操作の内容を一意に識別する文字列（イベント）を生成する機能と、生成したイベントをアクセス判定部２３に通知する機能とを有する。
【００５８】
操作仲介部２２ａは、監視対象プログラム２１ａにもとづくプラットフォーム２１ｂに対する操作が実行されるときに、イベント生成部２２ｂを呼び出す処理を実行する。すなわち、操作仲介部２２ａは、プラットフォーム２１ｂにあらかじめ組み込まれているリソースアクセス操作に対するフック機構として機能する。例えば、「ＳＥＬｉｎｕｘ」には、このような仕組みが用意されている。なお、操作仲介部２２ａを実現する機構がプラットフォーム２１ｂ上で用意されていない場合には、監視対象プログラム２１ａからプラットフォーム２１ｂへの呼び出しを仲介するラッパープログラムを用意し、そのラッパープログラム用いてフックさせるようにすればよい。
【００５９】
イベント生成部２２ｂは、操作仲介部２２ａによって仲介された操作に対応するイベント（対象となる操作の内容を一意に識別する文字列）を生成し、生成したイベントをアクセス判定部２３に送信する処理を実行する。
【００６０】
アクセス判定部２３は、図３に示すように、監視ＦＳＭ実行部２３ａと、監視ＦＳＭ構築部２３ｂと、監視ＦＳＭ記憶部２３ｃと、状態変数記憶部２３ｄとを含む。なお、「ＦＳＭ」は、有限状態機械を意味する。
【００６１】
アクセス判定部２３は、監視ルール記憶部４２に格納されている後述する監視ルールの内容にもとづいて、アクセス制御部２２から受信したイベントが示す操作の実行の可否を判定する機能と、その判定結果をアクセス制御部２２に通知する機能とを有する。
【００６２】
ルール作成装置３は、監視ルール作成部３１と、解析結果記憶部３２と、監視対象解析部３３とを含む。ルール作成装置３は、サーバ運用者によって指定された監視ポリシーにもとづいて、アクセス判定部２３での操作の実行可否の判定に用いられる監視ルールを作成する機能を有する。「監視ポリシー」は、サーバ運用者によって指定されるアクセス制御の方策を意味する。「監視ルール」は、イベントが示す操作の実行を許可するか否かの判定の際に、アクセス判定部２３によって参酌される規則を意味する。「監視ポリシー」はサーバ運用者側からみたアクセス制御での監視内容を示す情報であり、「監視ルール」はサーバ装置２側からみたアクセス制御で監視内容を示す情報である。
【００６３】
監視ルール作成部３１は、図４に示すように、監視ポリシー編集部３１ａと、ポリシー翻訳部３１ｂと、整合性検査部３１ｃとを含む。
【００６４】
監視ルール作成部３１は、入出力装置１からサーバ運用者によって入力された監視ポリシーと、解析結果記憶部３２に記憶されている解析結果情報とにもとづいて、監視ルールを生成する機能と、生成した監視ルールを監視ルール記憶部４２に格納させる機能とを有する。
【００６５】
監視対象解析部３３は、監視対象プログラム２１ａを解析し、その解析結果を解析結果記憶部３２に格納する機能を有する。監視対象解析部３３は、図５に示すように、構文解析部３３ａと、基本ブロック抽出部３３ｂと、ライブラリ関数置換部３３ｃと、イベントフロー生成部３３ｄと、ライブラリ表記憶部３３ｅとを含む。
【００６６】
構文解析部３３ａは、監視対象プログラム２１ａから実行文リスト（図７参照）を生成する処理を実行する。基本ブロック抽出部３３ｂは、構文解析部３３ａによって生成された実行文リストを解析し、基本ブロックを抽出し、後述する制御フローグラフ（図８参照）を生成する処理を実行する。
【００６７】
ライブラリ関数置換部３３ｃは、制御フローを構成する各基本ブロックに含まれているライブラリ関数呼び出しを、ライブラリ表記憶部３３ｅに格納されているライブラリ表（図９参照）を用いて、プラットフォーム２１ｂ上の操作呼び出しに置き換える処理を実行する。すなわち、監視対象プログラム２１ａにもとづいて実行される制御を、プラットフォーム２１ｂが実行する操作として表現する処理を実行する。具体的には、例えば、後述する図７に示す実行文リストにて「ｃａｌｌ文」によって呼び出される「ｆｏｐｅｎ」「ｆｒｅａｄ」「ｆｃｌｏｓｅ」などの関数を、各関数に対応する操作フローグラフに置換する処理を実行する。
【００６８】
ライブラリ表記憶部３３ｅは、ライブラリ表を記憶する。イベントフロー生成部３３ｄは、操作呼び出しをイベントに置き換えることにより、イベントのフローグラフ（図１１参照）を生成する処理を実行する。
【００６９】
構文解析部３３ａは、監視対象とするプログラムの実行形式の種類毎に用意される。監視対象プログラム２１ａの実行形式がＰｅｒｌやＰＨＰのようなスクリプト言語の場合、構文解析部３３ａは、そのスクリプト言語の構文解析器として機能する。監視対象プログラム２１ａの実行形式がＣ言語等で書かれたネイティブ実行形式の場合、構文解析部３３ａは、実行形式を逆アセンブルし、関数呼び出し・プロシージャ呼び出しをそのプラットフォームの慣習にもとづいて解釈し、実行にコールされているライブラリ関数・ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を特定する手段である。
【００７０】
記憶装置４は、ＲＡＭ、ＲＯＭ、磁気ディスクなどの記憶媒体によって構成され、入出力装置１とサーバ装置２との間のデータの受け渡しを行なう役割を果たす。記憶装置４は、イベント表記憶部４１と、監視ルール記憶部４２とを含む。
【００７１】
次に、本発明の第１の実施の形態における不正アクセス防止システム１００の動作について説明する。
【００７２】
先ず、イベントフローグラフを生成するためのイベントフローグラフ生成処理について説明する。図６は、イベントフローグラフ生成処理の例を示すフローチャートである。イベントフローグラフ生成処理は、制御対象プログラム２１ａの内容にもとづいて、イベントフローグラフを生成する処理である。イベントフローグラフ生成処理は、例えば、制御対象プログラム２１ａがサーバ装置２に搭載されたとき、あるいはサーバ運用者からの実行指示があったときに実行される。そして、監視対象プログラム２１ａに関するアクセス制御を遂行するために、監視対象プログラム２１ａにもとづくイベントフローグラフがあらかじめ生成されて記憶領域に格納される。
【００７３】
イベントフローグラフ生成処理において、構文解析部３３ａは、監視対象プログラムの構文を解析してプログラムを構成する各文のリスト（実行文リスト）を生成する（ステップＳ６０１）。図７に示す実行文リストは、Ｉｎｔｅｌ  Ｘ８６系ＣＰＵ用の実行コードを、構文解析部３３ａが処理することで生成したアセンブリ言語文のリストである。
【００７４】
次いで、基本ブロック抽出部３３ｂは、構文解析部３３ａによって生成された実行文リストを走査して基本ブロックを抽出し、制御フローグラフを生成する（ステップＳ６０２）。なお、「基本ブロック」とは、そのブロックの先頭から末尾まで順にコードが実行され、その末尾以外には分岐がないプログラム片をいう。また、「制御フローグラフ」とは、該当する監視対象プログラムに従って実行され得る制御の実行パターンを示すグラフをいう。
【００７５】
具体的には、基本ブロック抽出部３３ｂは、ステップＳ６０２にて、基本ブロックの先頭となる文（リーダ）を、以下に示す規則１〜規則３に従って決定する。
規則１：プログラムの最初の文をリーダとする。
規則２：分岐先となる文をリーダとする。
規則３：分岐文の直後の文をリーダとする。
【００７６】
次いで、基本ブロック抽出部３３ｂは、規則１〜規則３に従って決定したそれぞれのリーダに対し、次のリーダの直前の文まで、あるいはプログラムの末尾までをまとめて基本ブロックとする。
【００７７】
図７は、実行文リストから抽出された基本ブロックの例を示す説明図である。図７に示すリストでは、文ＳＴ１が分岐文（「ｊｚ」は、条件分岐を意味する）であり、文ＳＴ２が分岐先の直後の文である。よって、この例では、上記の規則１〜規則３に従って、図７に示す「Ｂ１」，「Ｂ２」，「Ｂ３」の３つの基本ブロックが抽出される。図７は、実行文リストから抽出された基本ブロックの例を示す説明図である。
【００７８】
基本ブロックＢ１，Ｂ２，Ｂ３を抽出すると、基本ブロック抽出部３３ｂは、ステップＳ６０２にて、抽出した基本ブロックＢ１，Ｂ２，Ｂ３の各処理の遷移を示す制御フローグラフを生成する。
【００７９】
具体的には、制御フローフラグの生成処理において、基本ブロック抽出部３３ｂは、基本ブロックの末尾が条件分岐文（条件に応じて分岐することを示す文）の場合は、次の基本ブロックと、分岐先の基本ブロックにリンクを生成する。また、基本ブロックの末尾が無条件分岐文（常に分岐することを示す文）の場合は、分岐先の基本ブロックにリンクを生成する。そして、基本ブロックの末尾が分岐文でない場合は、次の基本ブロックとリンクを生成する。
【００８０】
図８は、図７の実行文リストにもとづいて生成される制御フローグラフの例を示す説明図である。図８に示す制御フローグラフは、基本ブロックＢ１の処理が終了すると基本ブロックＢ２または基本ブロックＢ３に遷移し、基本ブロックＢ２が終了すると基本ブロックＢ３に遷移することを示す。
【００８１】
なお、基本ブロック抽出部３３ｂが実行する上述したステップＳ６０２の処理は、例えば、「Ｃｏｍｐｉｌｅｒｓ，  Ｐｒｉｎｃｉｐｌｅｓ，  Ｔｅｃｈｎｉｑｕｅｓ，  ａｎｄ  Ｔｏｏｌｓ；著者：Ａ．Ａｈｏ，Ｒ．Ｓｅｔｈｉ，Ｊ．Ｄ．Ｕｌｍａｎ、１９８６年刊行、ＩＳＢＮ  ０−２０１−１００８８−６（以下、「公知文献」という）」の第５２９頁、Ａｌｇｏｒｉｔｈｍ９．１に記載されている公知の処理である。
【００８２】
制御フローグラフが生成されると、ライブラリ関数置換部３３ｃは、生成された制御フローグラフを、操作フローグラフに置換する処理を行う（ステップＳ６０３）。具体的には、ライブラリ関数置換部３３ｃは、基本ブロック抽出部３３ｂによって生成された制御フローグラフの基本ブロックに含まれているライブラリ関数呼び出し（例えば図７に示す「ｃａｌｌ文」）を、ライブラリ表記憶部３３ｅに格納されているライブラリ表を参照して、対応する操作フローグラフに置き換える処理を行う。
【００８３】
ライブラリ表記憶部３３ｅには、ライブラリ関数名と、操作フローグラフとの組合せを複数含むライブラリ表が格納されている。「操作フローグラフ」は、対応するライブラリ関数が呼び出されたときに実行され得る操作の実行パターンを示すグラフをいう。なお、ライブラリ表は、プラットフォーム毎に予め作成され、ライブラリ表記憶部３３ｅに予め格納されている。
【００８４】
図９は、ライブラリ表記憶部３３ｅに格納されているライブラリ表の例を示す説明図である。このライブラリ表には、「ｆｏｐｅｎ」、「ｆｒｅａｄ」、「ｆｃｌｏｓｅ」の３つのライブラリ関数名と、それぞれの関数に対応する操作フローグラフとが記述されている。なお、操作フローフラグの各矢印に付加されたラベルが操作を表している。この例では、ラベル「ε」は、操作が生じないことを表す。よって、例えば図９に示す最上段の組合せは、「ｆｏｐｅｎ」が呼び出された場合、「ｏｐｅｎ」が実行されるか、何も実行されないかの何れかであることを意味する。
【００８５】
図１０は、図８に示されている制御フローグラフを、図９に示されているライブラリ表にもとづいて置換して得た操作フローグラフの例を示す説明図である。図１０に示す操作フローグラフは、図８に示されている制御フローグラフの基本ブロックＢ１を「ｆｏｐｅｎ」に対応する操作フローグラフに置換し、基本ブロックＢ２を「ｆｒｅａｄ」に対応する操作フローグラフに置換し、基本ブロックＢ３を「ｆｃｌｏｓｅ」に対応する操作フローグラフに置換することによって生成される。
【００８６】
操作フローグラフが生成されると、イベントフロー生成部３３ｄは、生成された操作フローグラフからイベントの生起順序を表すイベントフローグラフを生成する（ステップＳ６０４）。イベントフロー生成部３３ｄは、ステップＳ６０４にて、イベント表記憶部４１に格納されているイベント表を参照しつつ、操作フローグラフに含まれる操作をイベントに置き換える処理を行う。
【００８７】
図１１は、図１０に示された操作フローグラフを、後述する図１８に示すイベント表を参照して生成したイベントフローグラフの例を示す説明図である。図１８を参照すると、操作「ｏｐｅｎ」にはイベント「ｒｅａｄ＿  ｏｐｅｎ」とイベント「ｗｒｉｔｅ＿  ｏｐｅｎ」とが対応付けされており、操作「ｒｅａｄ」にはイベント「ｒｅａｄ」が対応付けされており、操作「ｗｒｉｔｅ」に対応付けされたイベントは存在せず、操作「ｃｌｏｓｅ」にはイベント「ｃｌｏｓｅ」が対応付けされている。従って、図１０に示された操作フローグラフの操作「ｏｐｅｎ」を「イベント「ｒｅａｄ＿  ｏｐｅｎ」またはイベント「ｗｒｉｔｅ＿  ｏｐｅｎ」」に置換し、操作「ｒｅａｄ」をイベント「ｒｅａｄ」に置換し、操作「ｗｒｉｔｅ」を削除し、操作「ｃｌｏｓｅ」をイベント「ｃｌｏｓｅ」に置換する処理を行うことで、図１１に示すイベントフローグラフが生成される。
【００８８】
イベントフローグラフが生成されると、イベントフロー生成部３３ｄは、生成したイベントフローグラフを出力して解析結果記憶部３２に格納させる処理を行う（ステップＳ６０５）。
【００８９】
次に、監視ルールを作成するための監視ルール作成処理について説明する。図１２は、監視ルール作成部３１が実行する監視ルール作成処理の例を示すフローチャートである。ここでは、サーバ運用者による入出力装置１の操作によって指定された監視ポリシーにもとづいて、監視ルールを作成する処理が実行される。
【００９０】
監視ルール作成処理において、監視ポリシー編集部３１ａは、入出力装置１の出力装置に監視ポリシー処理画面を表示させ（ステップＳ１２１）、入出力装置１からの監視ポリシーの指定を受け付ける（ステップＳ１２２）。
【００９１】
図１３〜図１６は、監視ポリシー処理画面の例を示す説明図である。監視ポリシー編集部３１ａは、ステップＳ１２１及びステップＳ１２２にて、図１３〜図１６に示すような監視ポリシー処理画面を入出力装置１に表示させ、サーバ運用者からの監視ポリシーの指定を受け付ける。
【００９２】
図１３は、監視ポリシー一覧画面の表示状態の例を示す説明図である。図１３に示すように、監視ポリシー一覧画面には、対象プログラム選択領域１０１と、型選択タブ１０２と、監視ポリシー表示領域１０３と、追加ボタン１０４と、削除ボタン１０５とが設けれられている。
【００９３】
対象プログラム選択領域１０１には、プラットフォーム２１ｂ上で稼動するアクセスの対象となるプログラム（監視対象プログラムとなり得るプログラム）のリストが表示される。この例では、選択されているプログラムが、対象プログラム選択領域１０１の最上部に表示される。例えば、プログラムの表示部分がサーバ運用者によってマウスクリックされると、対象とするプログラムが切り替えられる。型選択タブ１０２は、「ファイル」や「ネットワーク」などのアクセス制御の対象の型を選択するためのタブである。型選択タブ１０２がサーバ運用者によってマウスクリックされると、アクセス制御の対象の型が切り替えられる。監視ポリシー表示領域１０３には、既に設定されている監視ポリシーのうち、選択されている監視対象プログラムにおける選択されている型についての監視ポリシーの内容が一覧表示される。図１３では、「ＷＷＷサーバ［／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ］に対して、クライアントからのネットワーク接続後は、ファイル［／ｅｔｃ／ｐａｓｓｗｄ］を読み出すことを禁止する」という設定済の監視ポリシーが表示されている。追加ボタン１０４は、監視ポリシーを追加するときに、例えばマウスクリックによって押下されるボタンである。また、削除ボタン１０５は、設定されている監視ポリシーを削除するときに、例えばマウスクリックによって押下されるボタンである。
【００９４】
監視ポリシー一覧画面が表示されると、サーバ運用者は、入出力装置１を操作して、型選択タブ１０２をクリックすることでアクセス制御の対象の型を選択するとともに、対象プログラム選択領域１０１に表示されているプログラムのリストから、主体となるプログラム（例えば監視対象プログラム２１ａ）を選択する。そして、対象プログラム選択領域１０１にて選択されているプログラムに対して監視ポリシーの追加を行うときには、サーバ運用者は、入出力装置１を操作して、追加ボタン１０４をクリックする。
【００９５】
図１４は、監視ポリシー追加画面の例を示す説明図である。監視ポリシー追加画面は、監視ポリシー一覧画面において追加ボタン１０４が押下されると入出力装置１の表示画面に表示される。監視ポリシー追加画面には、図１４に示すように、アクセス制御の対象を選択させるため対象選択領域１１１と、アクセス制御の操作を選択させるための操作選択領域１１２と、選択されているアクセス制御の条件が表示される条件表示領域１１３と、追加ボタン１１４と、削除ボタン１１５とが設けれられている。
【００９６】
監視ポリシー追加画面上で、サーバ運用者は、アクセス制御の「対象」および「操作」を指定するとともに、必要に応じて「条件」を指定する。具体的には、対象選択領域１１１にて、アクセス制御の「対象」として、特定のファイルを直接指定するか、または任意のファイルを指定することができる。任意のファイルを指定した場合、全てのファイルがアクセス制御の「対象」となる。「対象」を指定したあと、アクセス制御を行う「操作」を指定する。これは、操作選択領域１１２に提示された操作の中から例えばマウスクリックによって選択する。また、操作選択領域１１２にて、選択した操作を禁止するのか、選択した操作のみ許可するのかを、操作選択領域１１２内に設けられているラジオボタン１１２ａを用いて指定する。その後、必要に応じて、アクセス制御の「条件」を指定する。選択されているアクセス制御の「条件」は、条件表示領域１１３に一覧表示される。アクセス制御の「条件」を追加する場合には、追加ボタン１１４を押下し、削除する場合には削除ボタン１１５を押下する。
【００９７】
図１５は、条件追加画面の例を示す説明図である。条件追加画面は、監視ポリシー追加画面において追加ボタン１１４が押下されると入出力装置１の表示画面に表示される。条件追加画面には、図１５に示すように、アクセス制御条件とする「操作」を選択させるため条件操作選択領域１２１と、アクセス制御条件とする「対象」を選択させるための条件対象選択領域１２２とが設けれられている。
【００９８】
条件追加画面上で、サーバ運用者は、アクセス制御の条件とする「操作」および「対象」を選択する。具体的には、条件操作選択領域１２１にて、アクセス制御の条件とする「操作」として、どの型についてのどの操作であるかを選択する。どの型とするかは、型指定領域１２１ａのラジオボタンを押下することで指定される。どの操作とするかは、操作指定領域１２１ｂに一覧表示されている各操作の中から選択する。また、アクセス制御条件とする「対象」を、条件対象選択領域１２２にて、監視ファイル（対象選択領域１１１にて指定されているファイルを意味する）を指定するか、特定のファイルを直接指定するか、または任意のファイルを指定する。どのファイルを対象とするかは、条件対象選択領域１２２内に設けられているラジオボタンを押下することで指定される。
【００９９】
なお、図１５に示す条件追加画面は、型指定領域１２１ａにて型が指定されると、操作指定領域１２１ｂの表示内容が指定された型に合致した「操作」の一覧に切り替えられるとともに、条件対象選択領域１２２の表示内容も指定された型に合致した内容に切り替えられる。
【０１００】
図１６は、図１５に示す画面において型指定領域１２１ａの型「ネットワーク」が指定されたときの条件追加画面の例を示す説明図である。図１６に示すように、型指定領域１２１ａにて型「ネットワーク」が指定されているときには、条件操作選択領域１２１ｃにネットワークに関する操作の一覧が表示され、条件対象選択領域１２２にはネットワークに関連する対象を選択し得るような表示がなされる。
【０１０１】
図１３〜図１６の画面上の操作によりサーバ運用者が必要事項を入力すると、監視ポリシー編集部３１ａによって、サーバ運用者によって指定された監視ポリシーが受け付けられる。受け付けされた監視ポリシーは、「ある主体（領域１０１で指定）が、ある対象（領域１１１で指定）に対して、ある操作を禁止／ある操作のみ許可する（領域１１２で指定）ことを、それ以前に生じたその対象に対する操作／他の任意の対象に対する操作／他の特定の対象に対する操作（領域１２１，領域１２２で指定）の有無によって決定する」と編集される。
【０１０２】
監視ポリシー編集部３１ａによって監視ポリシーが受け付けられると、ポリシー翻訳部３１ｂは、受け付けられた監視ポリシーを監視ルールに変換する処理を行う（ステップＳ１２３）。
【０１０３】
監視ルールは、「ある主体が、ある対象に対して実行してはならない操作のパターン」を、イベントの生起パターンによって記述したものである。監視ルールは、この例では、±（ｓ，ｔ：ｏ，ｐ，ａ）という式の集合で記述される。この式は、±（＜主体＞，＜型＞：＜対象＞，＜パターン＞，＜操作＞）のことである。具体的には、監視ルールを示す上記の式は、主体「ｓ」による、型「ｔ」を持つ対象「ｏ」に対する操作「ａ」が、パターン「ｐ」で表される前提条件が満たされる場合に限り、許可される「＋」か拒否される「−」かを指定することを意味する。
【０１０４】
なお、＜操作＞はイベント名で表され、＜パターン＞は例えば図１７に示す文法を用いた表現とされる。＜パターン＞は、図１７に示す文法を１または２以上用いた表現とされる。図１７には、複数種類の前提条件を示すパターンの文法の例が示されている。文法Ｒ１１「ａ」は、操作「ａ」が監視ルール中に記載された対象（ここでは対象「ｏ」）に対して生じることを前提条件とするときに用いられる。文法Ｒ１２「ｔ’：ａ」は、型「ｔ’」の操作「ａ」が任意の対象（対象「ｏ」は型「ｔ」の対象であり、監視ルール中に型「ｔ’」の対象が記述されていないため、任意と対象となる）に対して生じることを前提条件とするときに用いられる。文法Ｒ１３「ｔ’：ａ［ｏ’］」は、型「ｔ’」の操作「ａ」が対象「ｏ’」に対して生じることを前提条件とするときに用いられる。文法Ｒ１４「．」は、任意の操作が対象「ｏ」に対して生じることを前提条件とするときに用いられる。文法Ｒ１５「！ａ」は、「ａ」以外の任意の操作が、対象「ｏ」に対して生じることを前提条件とするときに用いられる。文法Ｒ１６「ｔ’：！ａ」は、型「ｔ’」の、「ａ」以外の任意の操作が、任意の対象に対して生じることを前提条件とするときに用いられる。文法Ｒ１７「ｔ’：！ａ［ｏ’］」は、型「ｔ’」の、「ａ」以外の任意の操作が、対象「ｏ’」に対して生じることを前提条件とするときに用いられる。
【０１０５】
また、文法Ｒ１８「Ａ？」は、パターンＡが０回か１回生じるパターンを前提条件とするときに用いられる。文法Ｒ１９「Ａ＊」は、パターンＡが０回以上続けて生じるパターンを前提条件とするときに用いられる。文法Ｒ２０「Ａ＋」は、パターンＡが１回以上続けて生じるパターンを前提条件とするときに用いられる。文法Ｒ２１「ＡＢ」は、パターンＡとパターンＢとが連続して生じるパターンを前提条件とするときに用いられる。文法Ｒ２２「Ａ｜Ｂ」は、パターンＡ又はパターンＢの何れかが生じるパターンを前提条件とするときに用いられる。
【０１０６】
例えば、監視ポリシーにおける＜主体＞が［”／ｓｂｉｎ／ｈｔｔｐｄ”  ］であり、＜対象＞が［”／ｅｔｃ／ｐａｓｓｗｄ”］であり、＜型＞が［ｆｉｌｅ］であり、＜パターン＞が「操作ａが対象ｏに対して生じる（図１７の文法Ｒ１１）」であり、＜操作＞が［ｂ］である場合には、ステップＳ１２３にて、監視ルールを示す基本式に各項目が代入され、±（”／ｓｂｉｎ／ｈｔｔｐｄ”，ｆｉｌｅ：”／ｅｔｃ／ｐａｓｓｗｄ”，ａ，ｂ）という監視ルールが生成される。
【０１０７】
図１８は、イベント表記憶部４１に記憶されているイベント表の一部を示す説明図である。イベント表は、監視対象プログラム２１ａによる「操作」を、アクセス判定部２３で解釈可能な「イベント」に翻訳するために使用される。図１８に示すように、イベント表には、型、イベント名、操作、条件、対象、および処理が対応付けされて記述されている。イベント表には、ある操作が、どのような型とイベント名を持つかについても設定されていることになる。
【０１０８】
なお、図１８において、＄１は第１引数を意味し、＄２は第２引数を意味する。また、図１８に示す「処理」は、「操作」から「イベント」に翻訳（置換）する際に必要とされる処理を意味する。
【０１０９】
ステップＳ１２３にて、図１４等の画面を用いて指定された監視ポリシーは、図１９に示す監視ルールに変換される。すなわち、図１３〜図１５にて指定された監視ポリシーは、＜主体＞が［”／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ”  ］であり（領域１０１で選択された監視対象プログラムを示す文字列）、＜対象＞が［”／ｅｔｃ／ｐａｓｓｗｄ”］であり（領域１１１で指定されたオブジェクトを表す文字列）、＜型＞が［ｆｉｌｅ］であり（選択タブ１０２で選択された対象の型）、＜パターン＞が「クライアントから接続、またはファイルの属性変更の何れかが生じる」であり（領域１２１、領域１２２で指定された前提条件のパターン）、＜操作＞が［読み込みを禁止］である（領域１１２ａで指定された許可／禁止の別）。
【０１１０】
このため、＜主体＞に［”／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ”  ］を代入し、＜対象＞に［”／ｅｔｃ／ｐａｓｓｗｄ”］を代入し、＜型＞に［ｆｉｌｅ］を代入する。また、クライアントからの接続を示す「ｎｅｔ：ｃｏｎｎｅｃｔ」と、ファイルの属性変更を示す「ｃｈｍｏｄ」とを図１７の文法Ｒ２２を用いて連結した［（ｎｅｔ：ｃｏｎｎｅｃｔ  ｜  ｃｈｍｏｄ）］に、図１７の文法Ｒ１４と文法Ｒ１９との文法を示すパターンを連結した”．＊”を付加したものを＜パターン＞に代入する。さらに、＜操作＞が［読み込みを禁止］であり「禁止」とされているため、式の先頭の符号を「−」とし、図１８を参照して「読み込み」を示す操作「ｒｅａｄ」に対応するイベント名［ｒｅａｄ］を＜操作＞に代入する。このように、ユーザインタフェース上の表示を、イベント表を参照するなどして置換していくことで、図１９に示す監視ルールが生成される。
【０１１１】
監視ルールを生成すると、整合性検査部３１ｃは、生成した監視ルールと、イベントフローグラフとを比較することによって、整合性検査を行う（ステップＳ１２４）。
【０１１２】
図２０は、整合性検査処理（ステップＳ２０１〜ステップＳ２０３）および反例推薦処理（ステップＳ２０４〜ステップＳ２０６）の例を示すフローチャートである。整合性検査処理では、監視対象プログラムからあらかじめ抽出されているイベントフローグラフと、ステップＳ１２３で生成された監視ルールとを比較することによって、整合性検査が行われる。イベントフローグラフは、あらかじめ監視対象解析部３３によって監視対象プログラム２１ａを解析することによって作成され、解析結果記憶部３２に格納されている。
【０１１３】
整合性検査処理において、整合性検査部３１ｃは、重なり検査処理によって、解析結果記憶部３２に格納されたイベントフローグラフによって生じるイベント生起パターンが、監視ルールによって表される禁止パターンに含まれるかどうか検査する（ステップＳ２０１）。
【０１１４】
ステップＳ２０１では、監視ルールを示す非決定性有限オートマトンと、イベントフローグラフを示す非決定性有限オートマトンとを用いて整合性検査を行う。
【０１１５】
まず、監視ルールは、図２１に示す処理によって、非決定有限オートマトンを表す正規表現に変換できる。先ず、±（ｓ，ｔ：ｏ，ｐ，ａ）という符合付きの監視ルールの符号表示を消去するための変換処理を行う（ステップＳ２１１）。この例では、「＋」の符号が付されている場合には、符号を除去するとともに、パターンと操作を示す「ｐ，ａ」を操作「ｐ  ！ａ」に置換する変換処理を実行する。また、「−」の符号が付されている場合には、符号を除去するとともに、パターンと操作を示す「ｐ，ａ」を操作「ｐ  ａ」に置換する変換処理を実行する。
【０１１６】
次いで、主体「ｓ」、型「ｔ」および対象「ｏ」が共通の監視ルールを１つの監視ルールに統合するための変換処理を行う（ステップＳ２１２）。この例では、操作、パターン、および符号を示す部分を、ｑ１，ｑ２，・・・，に置換するとともに、置換したｑ１，ｑ２，・・・，を、ｓ，ｔ，ｏが同一である監視ルールについて連結することで統合される。具体的には、図２１に示す例では、「ｐ！ａ」を「ｑ１」に置換し、「ｐ  ａ」を「ｑ２」に置換し、「ｓ，ｔ，ｏ」が同一である２つの監視ルールを、「ｑ１」と「ｑ２」とを連結した「ｑ１｜ｑ２」することで１つの監視ルールに統合する。
【０１１７】
そして、全てのパターンの先頭に”．＊”というパターンを追加する置換処理を行う（ステップＳ２１３）。
【０１１８】
上記手続きにより生成された監視ルール（ｓ，ｔ：ｏ，ｑ）の「ｑ」は、主体「ｓ」が型ｔの対象「ｏ」に対して実行してはならない操作の系列を受理する有限オートマトンを生成するためのアルゴリズムを使用して、非決定性有限オートマトンに変換できる。上記の有限オートマトンを生成するためのアルゴリズムは、例えば、参考文献の第１２２頁、Ａｌｇｏｒｉｔｈｍ３．３などに記載されている公知のアルゴリズムであるため、ここでの詳細な説明は省略する。
【０１１９】
一方、イベントフローグラフ（図１１参照）は、イベントを入力アルファベットとする非決定性有限オートマトンそのものである。
【０１２０】
監視ルールを示す非決定性有限オートマトンをＡ、イベントフローグラフを示す非決定性有限オートマトンをＢとし、ＡとＢの両方で受理可能なイベント列のみを受理するオートマトンＡ∩Ｂを構築することで、Ａ∩Ｂが空である（受理可能なイベントがない）かどうかを検査することができる。Ａ∩Ｂが空である場合には重なりなしと判定し、空でない場合には重なりありと判定する。
【０１２１】
Ａ∩Ｂは、Ａの状態とＢの状態の直積（組み合わせ）を状態とする有限オートマトンを考え、Ａの状態遷移とＢの状態遷移を掛け合わせたものを各状態間の遷移とすることによって構築できる。
【０１２２】
重なり検査処理（ステップＳ２０１）によって重なりが検出されたということは、監視ルールによって禁止しようとしているイベント列が、適切なサーバ運用時に発生し得るイベント列であることを意味する。従って、検出されたときには（ステップＳ２０２のＹ）、監視ルールに誤りがある可能性があるので、警告をサーバ運用者に提示する（ステップＳ２０３）。この警告は、例えば入出力装置１に警告表示を行うものであっても、スピーカから警告音を出力するものであっても、警告用のランプなどを点灯させるものであってもよい。
【０１２３】
この例では、整合性検査処理のあと、さらに推薦提案処理が実行される。なお、整合性検査処理と推薦提案処理とを連続して実行する必要はなく、別個のタイミングで別個に処理が行われるようにしてもよい。
【０１２４】
推薦提案処理において、整合性検査部３１ｃは、反例として取り扱うことのできるイベントを示す判例イベントを抽出する処理を実行する（ステップＳ２０４）。「反例イベント」とは、プラットフォーム２１ｂ上で実行されるイベントであるが、監視対象プログラム２１ａにもとづく制御の実行中には出現しないイベントを意味する。すなわち、「反例イベント」は、イベント表に定義されているが、イベントフローグラフには現れないイベントである。よって、整合性検査部３１ｃは、ステップＳ２０４にて、イベント表に定義されているイベントのうち、解析結果記憶部３２に格納されているイベントフローグラフに含まれないイベントがあるか否か確認し、そのようなイベントが存在していれば、反例イベントとして抽出する処理を行う。
【０１２５】
次いで、整合性検査部３１ｃは、抽出した反例イベントが有効反例であるか否か判定する（ステップＳ２０５）。ステップＳ２０５では、監視ルールの中に、反例イベントの実行を禁止するルールが含まれていなければ、その反例イベントが有効反例であると判定する。有効判例であると判定した場合には（ステップＳ２０５のＹ）、整合性検査部３１ｃは、有効反例とされた反例イベントの実行を禁止を指定する監視ポリシーの追加の推薦提案をユーザに提示する（ステップＳ２０６）。この推薦提案は、例えば、入出力装置１の出力部に、推薦提案を示す文章を表示することで行われる。
【０１２６】
サーバ運用者は、入出力装置１を操作して、監視ポリシー編集手段３１ａを通じて、提示された警告や推薦にもとづく監視ポリシーの修正や追加を行う。
【０１２７】
そして、整合性検査部３１ｃは、重なり検査処理（ステップＳ２０１）によって重なりが検出されなかった監視ルールを、監視ルール記憶部４２に格納する。監視ルール記憶部４２に格納された監視ルールは、監視対象プログラム２１ａの運用動作時に、サーバ装置２のアクセス判定部２３によって読み込まれてアクセス許可／拒否の判定に用いられる。よって、アクセス判定部２３の判定結果にもとづく監視対象プログラム２１ａのアクセス制御がアクセス制御部２２を通じて実現される。
【０１２８】
次に、アクセス制御部２２が実行するイベント生成処理について説明する。図２２は、イベント生成処理の例を示すフローチャートである。イベント生成処理では、イベント生成部２２ｂが、操作仲介部２２ａによって仲介された操作についてのイベントを生成する処理が実行される。
【０１２９】
イベント生成処理において、イベント生成部２２ｂは、先ず、イベント表（図１８参照）の操作名欄と条件欄を調べ、操作仲介部２２ａによって仲介された操作と、操作名が一致し、かつ、条件欄の評価結果が真であるレコードを検索する（ステップＳ２２１）。
【０１３０】
一致するレコードがなければ、イベント生成部２２ｂは、プラットフォーム２１ｂの操作呼び出しを行い（ステップＳ２２５）、イベントを生成せずに処理を終了する。
【０１３１】
一致するレコードがあれば、イベント生成部２２ｂは、（ｓ，ｔ：ｏ，ａ）という記述で表されるイベントを生成する（ステップＳ２２２）。イベント（ｓ，ｔ：ｏ，ａ）は、監視対象プログラム２１ａのプログラム名を「ｓ」、イベント欄に記述されたイベント名を「ａ」、対象欄の評価結果を「ｏ」、型欄に記述された型名を「ｔ」として生成されてものである。
【０１３２】
イベント生成部２２ｂによって生成されたイベントは、アクセス判定部２３に送信され、アクセス判定部２３からの結果を待つ（ステップＳ２２３）。結果が「拒否」である場合には（ステップＳ２２４のＮ）、そのまま処理を終了する。結果が「許可」である場合は（ステップＳ２２４のＹ）、プラットフォーム２１ｂの操作呼び出しを行う（ステップＳ２２６）。操作呼び出し後、一致したレコードの処理欄に処理が指定されていれば（ステップＳ２２７）、その処理を実行し（ステップＳ２２８）、イベント生成処理を終了する。
【０１３３】
次に、監視ＦＳＭ構築部２３ｂが実行する有限状態機械（ＦＳＭ）の生成処理について説明する。図２３は、有限状態機械生成処理の例を示すフローチャートである。有限状態機械生成処理では、生成されて監視ルール記憶部４２に格納された監視ルールにもとづいて、有限状態機械を生成する処理が実行される。
【０１３４】
有限状態機械生成処理において、監視ＦＳＭ構築部２３ｂは、±（ｓ，ｔ：ｏ，ｐ，ａ）という符合付きの４つの組で記述されていた監視ルールを、符号なしの３つの組（ｓ，ｔ：ｏ，ｑ）の形式に変換する（ステップＳ２３１）。次いで、監視ＦＳＭ構築部２３ｂは、主体「ｓ」と、型「ｔ」と、対象「ｏ」とが同一である複数の監視ルールを、一つの監視ルールに統合する処理を行う（ステップＳ２３２）。そして、監視ＦＳＭ構築部２３ｂは、全てのパターンの先頭に「．＊」というパターンを追加する（ステップＳ２３３）。なお、ステップＳ２３１〜ステップＳ２３３は、上述したステップＳ２１１〜ステップＳ２１３と同様であるため、その詳細な説明は省略する。
【０１３５】
上記のステップＳ２３１〜ステップＳ２３３により生成された監視ルール（ｓ，ｔ：ｏ，ｑ）の「ｑ」は、主体「ｓ」が対象「ｏ」に対して行ってはならない操作の系列のみを受理する有限オートマトンを表す正規表現となる。
【０１３６】
例えば、ステップＳ２３１〜ステップＳ２３３の処理によって、図２４のＲ３１〜Ｒ３４に示される監視ルールから、図２５に示すＲ４１〜Ｒ４３に示す有限状態機械が生成される。具体的には、Ｒ３１からＲ４１が、Ｒ３２とＲ３３からはＲ４２が、Ｒ３４からはＲ４３が生成される。
【０１３７】
次に、監視ＦＳＭ構築部２３ｂは、生成された有限状態機械から固有イベントを抽出する処理を実行する（ステップＳ２３４）。「固有イベント」とは、有限状態機械を示す正規表現中に現れるイベントの型と名前の部分をいう。よって、ステップＳ２３４では、有限状態機械からイベントの型と名前を抽出する処理が実行される。例えば、有限状態機械Ｒ４１には、「ｎｅｔ：ｃｏｎｎｅｃｔ」、「ｃｈｍｏｄ」、「ｒｅａｄ」の３つのイベントしか記述されない。従って、固有イベントは「ｎｅｔ：ｃｏｎｎｅｃｔ」、「ｃｈｍｏｄ」、「ｒｅａｄ」となる。
【０１３８】
次に、監視ＦＳＭ構築部２３ｂは、有限状態機械を示す正規表現を、固有イベントと「ｏに対する固有イベント以外のイベント」を意味する特別なイベントγを入力とする決定性有限オートマトンに変換し、構築された決定性有限オートマトンから、受理状態と受理状態に遷移する状態遷移を取り除く。
【０１３９】
なお、正規表現を決定性有限オートマトンに変換するアルゴリズムは、例えば、公知文献の第１４０頁、Ａｌｇｏｒｉｔｈｍ３．５に記載されている。
【０１４０】
このようにして生成された状態遷移機械が、プログラム「ｓ」のオブジェクト「ｏ」に対する監視ＦＳＭとなる。ＦＳＭの実体は、行に状態、列にイベントを列挙し、表の要素（ｍ，ｎ）には、状態ｍでイベントｎが入力された場合の遷移先の状態を記述した状態遷移表として表すことができる。例えばＲ４１は図２６に示す監視ＦＳＭに変換され、この監視ＦＳＭは図２７に示す状態遷移表で表すことができる。
【０１４１】
以上の手続きにより、ある（ｓ，ｏ）の組みに１つにつき１つの監視ＦＳＭが生成され、最後に、ＦＳＭ表格納部によって、生成した監視ＦＳＭに、それぞれ１以上の番号による識別子（ＦＩＤと呼ぶ）を割り振り、（ＦＩＤ，状態遷移表，ｓ，ｏ，固有イベント）の組にして、順に監視ＦＳＭ記憶部２３ｃに格納する。
【０１４２】
図２８は、図２４に示される監視ルールが監視ルール記憶部に格納されている場合に、監視ＦＳＭ構築部２３ｂによって、監視ＦＳＭ記憶部２３ｃに格納される監視ＦＳＭ表の例である。
【０１４３】
次に、上記の手順によって作成された監視ＦＳＭを解釈実行する監視ＦＳＭ実行処理について説明する。図２９は、監視ＦＳＭ実行部２３ａが実行する監視ＦＳＭ実行処理の例を示すフローチャートである。監視ＦＳＭ実行部２３ａがアクセス制御部２２からイベント（ｓ，ｔ：ｏ，ａ）を受信すると、それを受理する監視ＦＳＭを監視ＦＳＭ表から検索する（ステップＳ２９１）。監視ＦＳＭ表の主体欄がｓに一致し、かつ、対象欄と固有イベントが図３０に示す比較処理で一致するものがあれば、受理する監視ＦＳＭとなる。例えば、監視ＦＳＭ表が図２８である場合に、（”／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ”，ｆｉｌｅ：”／ｅｔｃ／ｐａｓｓｗｄ”，ｃｈｍｏｄ）というイベントを受信したとき、ルールＲ６１によって監視ＦＳＭ表のＲ５１が検索される。
【０１４４】
次に、検索された監視ＦＳＭのＦＩＤと、受信したイベント中のｓ，ｔ，ｏをキーにして、状態変数記憶部２３ｄから現在状態（どの監視ＦＳＭにおけるどの状態であるかを意味する。よって、具体的にどのような遷移をしてきたかは必ずしも把握できないが、有限状態モデルにおけるどの状態にあるのかが把握できるため、現在状態が「操作の履歴」を示すことになる。）を検索する（ステップＳ２９２）。なお、初期状態では、状態変数記憶部２３ｄは空である。
【０１４５】
記憶済みであれば、検索された状態変数を現在状態として、監視ＦＳＭを状態遷移する。記憶済みでない場合には、初期状態を現在状態として、監視ＦＳＭを状態遷移する。状態遷移に失敗した場合は、適正な状態遷移でなく不正な動作が実行されるおそれがあるため、監視ＦＳＭ実行部２３ａは、処理を終了し、アクセス制御部２２に「拒否」を返す。状態遷移に成功した場合、ｓ，ｔ，ｏと検索された監視ＦＳＭのＦＩＤをキーにして、状態変数の値を状態変数記憶部２３ｄに格納する。ただし、遷移後の状態変数の値が初期状態である場合は、メモリを節約するために格納しなくてもよい。
【０１４６】
例えば、監視ＦＳＭ表が図２８である場合に、（”／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ”，ｆｉｌｅ：”／ｅｔｃ／ｐａｓｓｗｄ”，ｃｈｍｏｄ）というイベントを受信したとき、ステップＳ２９６実行後の状態変数記憶部２３ｄの表は図３１のようになる。
【０１４７】
上記の処理を、検索されたＦＳＭの数だけ繰り返し、全ての遷移が成功した場合は、監視ＦＳＭ実行部２３ａは、終了し、アクセス制御部２２に「許可」を返す。
【０１４８】
以上のように、第１の実施の形態では、監視対象の制御プログラムにもとづく操作の履歴を用いてアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力を向上させることができる。
【０１４９】
また、第１の実施の形態では、監視ルール作成装置３によって、対象とするオブジェクト毎の状態依存アクセス制御を記述する監視ルールを作成して、監視ルール記憶部４２に保存し、その監視ルールを用いてサーバ装置２内で状態依存アクセス制御を行うことにより、操作の対象を限定したアクセス制御を実現している。従って、操作の対象を指定した状態依存アクセス制御機能を持つ不正アクセス防止システムを実現することができる。
【０１５０】
また、監視ＦＳＭ構築部２３ｂ、監視ＦＳＭ実行部２３ａにより、監視ルールをＦＳＭに変換することによって、高速なアクセス制御を実現している。
【０１５１】
また、監視ルール作成部３１とアクセス判定部２３がイベント表記憶部４１に格納されたイベント表を共有することにより、監視対象プログラム２１ａのプラットフォーム２１ｂに対する詳しい知識なしにサーバ運用者が状態依存アクセス制御ルールを記述することができる。また、監視ポリシー編集部３１ａと、ポリシー翻訳部３１ｂにより、サーバ運用者が正規表現の知識無しに状態依存アクセス制御ルールを記述することができる。よって、アクセス制御のルールをより簡単に記述することができるようになる。
【０１５２】
また、監視対象解析部によって監視対象プログラムを解析し、その結果を利用して整合性検査手段で重なり検査を行うことにより、サーバ運用者による監視ポリシーの記述ミスを発見・修正することができる。
【０１５３】
実施の形態２．
図３２は、本発明の第２の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。以下の説明において、上述した第１の実施の形態における不正アクセス防止システム１００と同一の構成および処理を行う部分については、同一の符号を付与してその詳細な説明を省略する。
【０１５４】
第２の実施の形態では、上述した第１の実施の形態の内容に加えて、監視ポリシーに反する動作が生じた場合に、適切な対応処理を行うことを実現する。対応処理とは、サーバ運用者に電子メールで異常を通知したり、監視対象プログラムを強制終了させたり、ネットワークを遮断してサーバを外部ネットワークから切り離したりすることである。
【０１５５】
図３２に示すように、不正アクセス防止システム１００ａは、入出力装置１と、サーバ装置２ａと、ルール作成装置３と、記憶装置４と、対応装置５とを備える。不正アクセス防止システム１００ａは、例えばＷＷＷサーバやネットワークサーバとして機能するパーソナルコンピュータによって構成される。
【０１５６】
サーバ装置２ａは、データ記憶部２１と、アクセス制御部２２と、アクセス判定・対応部２４とを含む。対応装置５は、対応処理を実行する対応処理部５１を含む。
【０１５７】
図３３は、アクセス判定・対応部２４の構成例を示すブロック図である。図３３に示すように、アクセス判定・対応部２４は、監視ＦＳＭ実行部２３ａと、監視ＦＳＭ構築部２３ｂと、監視ＦＳＭ記憶部２３ｃと、状態変数記憶部２３ｄとを含む。
【０１５８】
図３４は、監視ポリシー追加画面の例を示す説明図である。この例では、図３４に示す監視ポリシー追加画面では、図１４に示した監視ポリシー追加画面と比較して、対応の種類を選択するための対応選択領域１１６が追加されている。対応選択領域１１６には、「プログラムを終了」、「ネットワークを遮断」、「なし」の３種類の対応が用意されている。よって、この例では、サーバ運用者は、対応選択領域１１６にて対応の種類を指定することにより、監視ポリシーそれぞれについて、個別の対応処理の内容を指定することができる。
【０１５９】
対応選択領域１１６にて指定された対応処理の内容は、監視ルールに反映される。この実施の形態では、監視ルールは、±（ｓ，ｔ：ｏ，ａ，ｐ，ｗ）という形式で表される。「ｗ」は、対応処理識別子を表す。例えば、図３４に示す内容の監視ポリシーが指定されたことによって生成される監視ルールは、「−（／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ，ｆｉｌｅ：”／ｅｔｃ／ｐａｓｓｗｄ”，（ｎｅｔ：ｃｏｎｎｅｃｔ  ｜  ｃｈｍｏｄ））．＊，ｒｅａｄ，ｔｅｒｍｉｎａｔｅ）」のようになる。なお、「ｔｅｒｍｉｎａｔｅ」は、サーバを強制終了させるという対応処理を表す識別子である。
【０１６０】
図３５は、第２の実施の形態における有限状態機械生成処理の例を示すフローチャートである。有限状態機械生成処理において、監視ＦＳＭ構築部２３ｂは、±（ｓ，ｔ：ｏ，ｐ，ａ，ｗ）という符合付きの５つの組で記述されていた監視ルールを、符号なしの４つの組（ｓ，ｔ：ｏ，ｑ，ｗ）の形式に変換する（ステップＳ３５１）。次いで、監視ＦＳＭ構築部２３ｂは、主体「ｓ」と、型「ｔ」と、対象「ｏ」とが同一である複数の監視ルールを、一つの監視ルールに統合する処理を行う（ステップＳ３５２）。そして、監視ＦＳＭ構築部２３ｂは、全てのパターンの先頭に「．＊」というパターンを追加する（ステップＳ３５３）。なお、ステップＳ３５１〜ステップＳ３５３は、上述したステップＳ２１１〜ステップＳ２１３と同様であるため、その詳細な説明は省略する。
【０１６１】
次に、監視ＦＳＭ構築部２３ｂは、生成された有限状態機械から固有イベントを抽出する処理を実行する（ステップＳ３５４）。
【０１６２】
次に、監視ＦＳＭ構築部２３ｂは、有限状態機械を示す正規表現を、固有イベントと「ｏに対する固有イベント以外のイベント」を意味する特別なイベントγを入力とする決定性有限オートマトンに変換し、構築された決定性有限オートマトンから、受理状態と受理状態に遷移する状態遷移を取り除く（ステップＳ３５５）。
【０１６３】
この例では、第１の実施の形態と異なり、同じｓ，ｏを対象とするルールを統合する際に、末尾に＃ｗ１、＃ｗ２という対応処理識別子と１対１で対応するダミーイベントを追加しておく（ステップＳ３５２参照）。その結果、ｑ１とｑ２が同じイベントである場合でも、対応処理が異なれば、必ず異なる受理状態を持つ決定性有限オートマトン（ＤＦＡ）を生成することができる。このようにして生成されたＤＦＡから、受理状態を取り除き、さらに受理状態への遷移（＃１）を持つ状態に、ｗというラベルを設定し、その状態からの遷移を取り除く。この手順によって、違反動作が生じた場合にのみ、その違反動作を記述していた監視ルールの対応処理識別子ｗをラベルに持つ状態に遷移するＦＳＭを生成できる。
【０１６４】
例えば、監視ルール「−（／ｕｓｒ／ｓｂｉｎ／ｈｔｔｐｄ，ｆｉｌｅ：”／ｅｔｃ／ｐａｓｓｗｄ”，（ｎｅｔ：ｃｏｎｎｅｃｔ  ｜  ｃｈｍｏｄ））．＊，ｒｅａｄ，ｔｅｒｍｉｎａｔｅ）」は、先ず図３６の状態遷移図で示されるＤＦＡに変換される。ここから、最終状態ｑ４を取り除き、ｑ４に遷移する状態ｑ３のラベルを「ｔｅｒｍｉｎａｔｅ」に置換することによって、図３７の状態遷移図で示されるＦＳＭを得る。そして、生成したＦＳＭを監視ＦＳＭ記憶部２３ｄに格納する（ステップＳ３５６）。
【０１６５】
次に、上記の手順によって作成された監視ＦＳＭを解釈実行する監視ＦＳＭ実行処理について説明する。図３８は、第２の実施の形態における監視ＦＳＭ実行部２３ａが実行する監視ＦＳＭ実行処理を示すフローチャートである。ここでは、図２９に示した処理と同一の処理を実行する部分については同一の符号を付与してその詳細な説明を省略する。監視ＦＳＭ実行処理において、上述したステップＳ２９１〜ステップＳ２９４の処理を実行する。
【０１６６】
この例では、違反動作が生じた場合にも、対応処理をラベルにもつ状態に遷移する。そこで、対応処理識別子をラベルにもつ状態に遷移したかどうか検査し（ステップＳ３８１）、そうであった場合は、対応処理部５１に対してそのラベルで示される対応処理識別子を通知し（ステップＳ３８２）、アクセス制御部２２には「拒否」を返す。対応処理部５１は、受信した対応処理識別子に応じた対応処理を行う。
【０１６７】
このように、上述した第２の実施の形態では、違反動作に対する対応処理を実現できる。また、対応処理の通知も監視ＦＳＭ実行時に効率的に実現できる。よって、状態依存アクセス制限に違反した動作が生じた際に、違反した内容に応じた対処を指定することができる。
【０１６８】
実施の形態３．
図３９は、本発明の第３の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。以下の説明において、上述した第１の実施の形態における不正アクセス防止システム１００と同一の構成および処理を行う部分については、同一の符号を付与してその詳細な説明を省略する。
【０１６９】
第３の実施の形態では、監視対象プログラム２１ａを静的に解析するのではなく、実際に動作させて現実の動作履歴を収集し、収集したイベント列を利用して監視ルールの生成を支援する。
【０１７０】
図３９に示すように、不正アクセス防止システム１００ｂは、入出力装置１と、サーバ装置２と、ルール作成装置３ｂと、記憶装置４とを備える。不正アクセス防止システム１００ｂは、例えばＷＷＷサーバやネットワークサーバとして機能するパーソナルコンピュータによって構成される。
【０１７１】
ルール作成装置３ｂは、監視ルール作成部３１Ｂと、プロファイル部３４と、動作結果記憶部３５とを含む。
【０１７２】
図４０は、プロファイル部３４の構成例を示すブロック図である。図４０に示すように、プロファイル部３４は、正常入力生成部３４ａと、入力パターン記憶部３４ｂと、イベント列収集部３４ｃとを含む。
【０１７３】
なお、図４０に示されているアクセス制御部２２は、上述した第１の実施の形態と同様に構成されるが、本例ではプロファイル部３４から利用されることから、イベントの生成後に判定結果を待つ必要がないため、上述した図２２に示した処理のステップＳ２２３およびステップＳ２２４を省略することができる。
【０１７４】
正常入力生成部３４ａは、監視対象プログラム２１ａへの入力（サーバへのリクエスト）を行う機能を有する。正常入力生成部３４ｂは、入力パターン記憶部３４ｂに格納されている入力パターンに従って、正常入力を生成する。この入力パターンを作成するには、サーバ運用者が実際に適当なクライアントプログラムを用いて、監視対象プログラム２１ａ（サーバ）に適当なリクエストを行ってその内容を記録しておく方法、スクリプト言語によってリクエストの内容と送信方法を記述する方法などがある。また、正常入力生成部３４ａを、サーバソフトウェア用のテストツールを利用することで実現するようにしてもよい。
【０１７５】
正常入力生成部３４ａから入力されたリクエストは、監視対象プログラム２１ａに入力され、その入力内容とサーバ装置２の内部状態に応じて、アクセス制御部２２からイベントが発行される。
【０１７６】
イベント列収集部３４ｃは、入力したイベントを動作結果記憶部３５に順に格納し、アクセス制御部２２には常に「許可」を返す。
【０１７７】
図４１は、プロファイル部３４によって動作結果記憶部３５に格納されたイベントのリストの例を示す説明図である。上述した第１の実施の形態では、監視対象解析部３３による静的解析によって操作の対象を特定するのは一般に困難であるため、イベントフローグラフには操作の対象が空白のままであったが（図１１参照）、プロファイル部３４で生成されたイベントは、実際に監視対象プログラムを動作させているため、対象が必ず設定される。一方で、イベントはグラフ構造にはならず、順序のみが決定したリスト（グラフでない）である。
【０１７８】
図４２は、監視ルール作成部３１Ｂの構成例を示すブロック図である。図４２に示すように、監視ルール作成部３１Ｂは、監視ポリシー編集部３１ａと、ポリシー翻訳部３１ｂと、違反検査部３１ｄと、アクセス判定・対応部２４とを含む。なお、この例では、アクセス判定・対応部２４が監視ルール作成部３１Ｂに含まれているため、サーバ装置２のアクセス判定部２３は必ずしも必要でない。
【０１７９】
この例では、上述した第１の実施の形態と異なり、監視ポリシー編集部３１ａによって生成された監視ルールは、違反検査部３１ｄで検査される。違反検査部３１ｄは、それぞれの監視ルールに対して一意の対応処理識別子を一時的に付加して、上述した第２の実施の形態にて説明したアクセス判定・対応部２４に入力する。そして、動作結果記憶部３５に格納されたイベントのリスト（図４１参照）を、擬似的なイベントとしてアクセス判定・対応部２４に順に入力する。そして、アクセス判定・対応部２４から対応処理通知を受けた場合、通知された識別子に対応する監視ルールを判定し、監視ポリシー編集部３１ａに警告を通知する。このような手順により、違反検査部３１ｄは、監視ルールが動作結果記憶部３５に格納されたイベント列を許可するかどうかを判別し、許可しない場合は監視ポリシー編集部３１ａを通じて入出力装置１に警告を出力することで、サーバ運用者に警告を通知する。
【０１８０】
上述した第３の実施の形態では、上述した第１の実施の形態のような監視対象プログラム２１ａの静的解析結果でなく、実際の動作履歴結果を監視ポリシーの検査に使用する。このような構成とされているので、静的解析では一般に解析できないイベントの対象を含んだ検査を実現することができる。
【０１８１】
実施の形態４．
図４３は、本発明の第４の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。以下の説明において、上述した各実施の形態における不正アクセス防止システムと同一の構成および処理を行う部分については、同一の符号を付与してその詳細な説明を省略する。
【０１８２】
図４３に示すように、不正アクセス防止システム１００ｃは、サーバ装置２と、ルール作成装置３ｃと、記憶装置４とを含む。ルール作成装置３ｃは、上述したルール作成装置３と、ルール作成装置３ｂとに示された各構成を含む。すなわち、上述した第１の実施の形態と第３の実施の形態とを組合せた構成とされている。
【０１８３】
上記のように構成すれば、上述した第１の実施の形態での効果と、上述した第３の実施の形態での効果を同時に得ることができる。
【０１８４】
実施の形態５．
図４４は、本発明の第５の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。以下の説明において、上述した各実施の形態における不正アクセス防止システムと同一の構成および処理を行う部分については、同一の符号を付与してその詳細な説明を省略する。
【０１８５】
図４４に示すように、不正アクセス防止システム１００ｄは、サーバ装置２ｄと、ルール作成装置３ｄと、記憶装置４とを含む。
【０１８６】
この実施の形態では、状態依存アクセス制御を実行しない構成とされ、既存のアクセス制御を実行する構成とされている。この例では、アクセス制御は既存のプラットフォーム２１ｂによって実現される。従って、監視ルールは、ファイルに対するパーミッションなど、サーバ装置２ｄの内部状態には依存しないものである。監視対象プログラム２１ａは、第４の実施の形態と同様に、監視対象解析部３３と、プロファイル部３４とによって解析される。ただし、監視対象解析部３３ではイベントフローグラフは生成せず、静的解析によって生起する可能性が確認されたイベントの列挙のみを行い、解析結果記憶部３２に格納する。また、プロファイル部３４でも、観測されたイベントが生起した順序を保存せずに、生起したイベントの列挙のみを行い、動作結果記憶部３２に格納する。
【０１８７】
また、この実施の形態では、整合性検査部３１ｃは、第１の実施の形態と異なり、重なり検査処理（ステップＳ２０１参照）において、解析結果記憶部３２に格納されたイベントが、監視ポリシー編集部３１ａで禁止されたイベントに含まれるかどうかチェックする。その他は上述した第１の実施の形態と同様である。
【０１８８】
上記のように、既存のプラットフォームでアクセス制御を行う構成としても、監視ルール作成装置３ｄを利用することによって、アクセス制御の監視ルールの記述を容易にすることができる。
【０１８９】
以上説明したように、上述した実施の形態に示した不正アクセス防止システムにより、操作の履歴を用いたアクセス制御を実現することができ、高性能なアクセス制御を実現することができる。この結果、プログラムの内部状態に依存したアクセス制御を実現することができ、プログラムの脆弱性に起因するセキュリティ違反動作を防止する機能を向上させることができる。
【０１９０】
また、上述した実施の形態に示した不正アクセス防止システムでは、アクセス制御において、監視ルールを一旦監視ＦＳＭに変換するようにしているので、効率的なアクセス判定を実現することができる。さらに、対象の種類毎に監視ＦＳＭを構築し、対象の数毎に状態変数を管理する構成としているので、操作の対象を限定したアクセス制御を実現することができる。
【０１９１】
また、上述した実施の形態に示した不正アクセス防止システムでは、アクセス制御において、静的解析やプロファイルによる監視対象プログラムの分析を行い、監視ポリシーの誤りや、監視ポリシーの抜けを検出する構成としているので、セキュリティに関する高度の知識を持たないサーバ運用者であっても、誤った監視ルールを設定してしまったり、必要な監視ルールの設定ができなかったりすることが防止される。すなわち、アクセス制御の具体的な仕組みに依存することなく監視ポリシーを指定することができるため、適切な監視ルールを容易に設定することができる。
【０１９２】
さらに、上述した実施の形態に示した不正アクセス防止システムでは、アクセス制御の監視ルールに対応処理の内容を付加する構成としたので、アクセス違反時における対応処理を実現することができる。
【０１９３】
なお、上述した各実施の形態においては特に言及していないが、不正アクセス防止システムには、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するための制御プログラム（不正アクセス防止プログラム）が搭載されている。不正アクセス防止システムを構成する各部は、不正アクセス防止プログラムに従って各種の制御を実行する。すなわち、不正アクセス防止プログラムは、例えば、サーバ装置に、監視対象の制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成する処理と、イベント列と、制御プログラムにもとづく規制対象とする操作順序を示す監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定し、その判定結果に従ってリソースに対するアクセスを制御する処理とを実行させるプログラムである。
【０１９４】
【発明の効果】
以上のように、本発明の本発明の不正アクセス防止システムによれば、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するアクセス制御手段と、プラットフォームに対する監視対象の制御プログラムにもとづく操作の履歴を記憶する履歴記憶手段と、履歴記憶手段に記憶された操作の履歴にもとづいて、リソースへのアクセスを許可するか否かを判定するアクセス判定手段とを備え、アクセス制御手段が、アクセス判定手段の判定結果に従ってリソースに対するアクセスを制御することを特徴とするので、監視対象の制御プログラムにもとづく操作の履歴を用いてアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【０１９５】
また、本発明の不正アクセス防止システムは、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するアクセス制御手段と、監視対象の制御プログラムにもとづく規制対象とする操作順序を示す監視ルールを予め記憶する監視ルール記憶手段と、制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成するイベント生成手段と、イベント列と監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定するアクセス判定手段とを備え、アクセス制御手段が、アクセス判定手段の判定結果に従って前記リソースに対するアクセスを制御することを特徴とするので、イベント列と監視ルールとを比較することでアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【０１９６】
また、本発明の不正アクセス防止方法は、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するためにアクセス制御装置によって実行される不正アクセス防止方法であって、アクセス制御装置が、監視対象の制御プログラムにもとづく規制対象とする操作順序を示す監視ルールを予め監視ルール記憶手段に記憶し、制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成し、イベント列と監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定し、その判定結果に従ってリソースに対するアクセスを制御することを特徴とするので、イベント列と監視ルールとを比較することでアクセス制御を行う構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【０１９７】
さらに、本発明の不正アクセス防止プログラムは、サーバ装置に搭載されているプラットフォームが管理するリソースに対するアクセスを制御するための不正アクセス防止プログラムであって、コンピュータに、監視対象の制御プログラムのプラットフォームに対する一連の操作を監視して、当該一連の操作内容を示すイベント列を生成する処理と、イベント列と、制御プログラムにもとづく規制対象とする操作順序を示す監視ルールとを比較することで、リソースへのアクセスを許可するか否かを判定し、その判定結果に従ってリソースに対するアクセスを制御する処理とを実行させることを特徴とするので、イベント列と監視ルールとを比較することでアクセス制御を実行させる構成としたので、高機能なアクセス制御を実現することができる。この結果、制御プログラムの内部状態に依存したアクセス制御を実現することができ、制御プログラムの脆弱性に起因するセキュリティ違反動作を防止する能力が向上する。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態における不正アクセス防止システムの構成例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるアクセス制御部の構成例を示すブロック図である。
【図３】本発明の第１の実施の形態におけるアクセス判定部の構成例を示すブロック図である。
【図４】本発明の第１の実施の形態における監視ルール作成部の構成例を示すブロック図である。
【図５】本発明の第１の実施の形態における監視対象解析部の構成例を示すブロック図である。
【図６】本発明の第１の実施の形態におけるイベントフローグラフ生成処理の例を示すフローチャートである。
【図７】実行文リストから抽出された基本ブロックの例を示す説明図である。
【図８】図７の実行文リストにもとづいて生成される制御フローグラフの例を示す説明図である。
【図９】ライブラリ表記憶部に格納されているライブラリ表の例を示す説明図である。
【図１０】図８に示されている制御フローグラフを図９に示されているライブラリ表にもとづいて置換して得た操作フローグラフの例を示す説明図である。
【図１１】図１０に示された操作フローグラフを図１８に示すイベント表を参照して生成したイベントフローグラフの例を示す説明図である。
【図１２】本発明の第１の実施の形態における監視ルール作成処理の例を示すフローチャートである。
【図１３】本発明の第１の実施の形態における監視ポリシー一覧画面の例を示す説明図である。
【図１４】本発明の第１の実施の形態における監視ポリシー追加画面の例を示す説明図である。
【図１５】本発明の第１の実施の形態における条件追加画面の例を示す説明図である。
【図１６】本発明の第１の実施の形態における条件追加画面の例を示す説明図である。
【図１７】パターンの文法の例を示す説明図である。
【図１８】イベント表の例を示す説明図である。
【図１９】監視ルールの例を示す説明図である。
【図２０】整合性検査処理および反例推薦処理の例を示すフローチャートである。
【図２１】非決定有限オートマトンを表す正規表現への変換処理の例を示すフローチャートである。
【図２２】イベント生成処理の例を示すフローチャートである。
【図２３】有限状態機械生成処理の例を示すフローチャートである。
【図２４】監視ルールの例を示す説明図である。
【図２５】図２４の監視ルールから生成された有限状態機械の例を示す説明図である。
【図２６】監視ＦＳＭの例を示す説明図である。
【図２７】状態遷移表の例を示す説明図である。
【図２８】監視ＦＳＭ記憶部に格納される監視ＦＳＭ表の例を示す説明図である。
【図２９】監視ＦＳＭ実行処理の例を示すフローチャートである。
【図３０】比較処理の例を示すフローチャートである。
【図３１】状態変数記憶部に格納されている表の例を示す説明図である。
【図３２】本発明の第２の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。
【図３３】アクセス判定・対応部の構成例を示すブロック図である。
【図３４】監視ポリシー追加画面の例を示す説明図である。
【図３５】有限状態機械生成処理の例を示すフローチャートである。
【図３６】ＤＦＡを示す状態遷移図である。
【図３７】ＦＳＭを示す状態遷移図である。
【図３８】監視ＦＳＭ実行処理の例を示すフローチャートである。
【図３９】本発明の第３の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。
【図４０】プロファイル部の構成例を示すブロック図である。
【図４１】イベントのリストの例を示す説明図である。
【図４２】監視ルール作成部の構成例を示すブロック図である。
【図４３】本発明の第４の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。
【図４４】本発明の第５の実施の形態における不正アクセス防止システムの構成の例を示すブロック図である。
【図４５】従来技術１のアクセス権の一覧を示す説明図である。
【図４６】従来技術２のＥＭによる動作規制の例を示す説明図である。
【符号の説明】
１      入出力装置
２      サーバ装置
２１    データ記憶部
２１ａ  プラットフォーム
２１ｂ  監視対象プログラム
２２    アクセス制御部
２３    アクセス判定部
３      ルール作成装置
３１    監視ルール作成部
３２    解析結果記憶部
３３    監視対象解析部
４      記憶装置
４１    イベント表記憶部
４２    監視ルール記憶部
１００  不正アクセス防止システム
【図１】
2004287810.tif 000003
【図２】
2004287810.tif 000004
【図３】
2004287810.tif 000005
【図４】
2004287810.tif 000006
【図５】
2004287810.tif 000007
【図６】
2004287810.tif 000008
【図７】
2004287810.tif 000009
【図８】
2004287810.tif 000010
【図９】
2004287810.tif 000011
【図１０】
2004287810.tif 000012
【図１１】
2004287810.tif 000013
【図１２】
2004287810.tif 000014
【図１３】
2004287810.tif 000015
【図１４】
2004287810.tif 000016
【図１５】
2004287810.tif 000017
【図１６】
2004287810.tif 000018
【図１７】
2004287810.tif 000019
【図１８】
2004287810.tif 000020
【図１９】
2004287810.tif 000021
【図２０】
2004287810.tif 000022
【図２１】
2004287810.tif 000023
【図２２】
2004287810.tif 000024
【図２３】
2004287810.tif 000025
【図２４】
2004287810.tif 000026
【図２５】
2004287810.tif 000027
【図２６】
2004287810.tif 000028
【図２７】
2004287810.tif 000029
【図２８】
2004287810.tif 000030
【図２９】
2004287810.tif 000031
【図３０】
2004287810.tif 000032
【図３１】
2004287810.tif 000033
【図３２】
2004287810.tif 000034
【図３３】
2004287810.tif 000035
【図３４】
2004287810.tif 000036
【図３５】
2004287810.tif 000037
【図３６】
2004287810.tif 000038
【図３７】
2004287810.tif 000039
【図３８】
2004287810.tif 000040
【図３９】
2004287810.tif 000041
【図４０】
2004287810.tif 000042
【図４１】
2004287810.tif 000043
【図４２】
2004287810.tif 000044
【図４３】
2004287810.tif 000045
【図４４】
2004287810.tif 000046
【図４５】
2004287810.tif 000047
【図４６】
2004287810.tif 000048