(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】情報処理装置、プログラムおよび情報処理システム
(51)【国際特許分類】
G06F 11/07 20060101AFI20240219BHJP
G06F 21/55 20130101ALI20240219BHJP
【FI】
G06F11/07 151
G06F11/07 140E
G06F21/55 320
(21)【出願番号】P 2020185040
(22)【出願日】2020-11-05
【審査請求日】2023-02-08
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】小椋 直樹
(72)【発明者】
【氏名】金井 遵
(72)【発明者】
【氏名】春木 洋美
【審査官】武田 広太郎
(56)【参考文献】
【文献】再公表特許第2012/001765(JP,A1)
【文献】米国特許出願公開第2006/0236374(US,A1)
【文献】特開2017-91108(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶するリスト記憶部と、
プロセッサと、
を備え、
前記プロセッサは、
何れかの前記システム操作が実行されたことを検出する操作検出部と、
実行を検出した前記システム操作を実行したプロセスである対象プロセスを特定するプロセス特定部と、
前記対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定するログ特定部と、
前記対象動作ログを解析することにより、実行を検出した前記システム操作を実行した前記モジュール処理である対象モジュール処理の種類を特定する種類特定部と、
前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作が含まれていない場合、異常が発生したことを示す異常情報を出力する出力部と
して機能する情報処理装置。
【請求項2】
前記操作検出部は、予め定められた前記システム操作である特定システム操作が実行されたことを検出し、および、実行を検出した前記特定システム操作による処理対象を特定し、
前記ホワイトリストは、実行を許可する前記システム操作と、前記システム操作を許可する処理対象との組が記述され、
前記出力部は、前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作と特定された処理対象との組が含まれていない場合、前記異常情報を出力する
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、オペレーティングシステムを実行し、前記オペレーティングシステムの管理下でアプリケーションプログラムを実行し、
前記プロセスは、実行中の前記アプリケーションプログラムによる処理であり、
前記モジュール処理は、前記オペレーティングシステムに管理されているプログラム部品による処理であり、
前記システム操作は、前記プロセスにおいて前記オペレーティングシステムに組み込まれている機能を呼び出して処理を実行させる操作である
請求項1または2に記載の情報処理装置。
【請求項4】
前記リスト記憶部は、前記アプリケーションプログラム毎且つ前記モジュール処理の種類毎に、前記ホワイトリストを記憶し、
前記出力部は、前記対象プロセスに対応する前記アプリケーションプログラムの前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作が含まれていない場合、前記異常情報を出力する
請求項3に記載の情報処理装置。
【請求項5】
前記リスト記憶部は、予め定められた1または複数の特定種類の前記モジュール処理のそれぞれについての前記ホワイトリスト、および、汎用種類についての前記ホワイトリストを記憶し、
前記汎用種類は、前記1または複数の特定種類に含まれない全ての種類を統一して表す種類であり、
前記種類特定部は、前記対象モジュール処理の種類が、前記1または複数の特定種類の何れにも一致しない場合、前記対象モジュール処理の種類を前記汎用種類と特定する
請求項4に記載の情報処理装置。
【請求項6】
前記プロセスにおいて、前記プロセッサは、
前記モジュール処理の開始時に、前記モジュール処理の種類および前記モジュール処理を開始したことを示す開始情報を前記動作ログに記録し、
前記モジュール処理の終了時に、前記モジュール処理の種類および前記モジュール処理を終了したことを示す終了情報を前記動作ログに記録し、
前記種類特定部は、
前記対象動作ログに記録された最後の前記開始情報である最終開始情報を検出し、
前記最終開始情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れかであり、且つ、前記最終開始情報の後に前記最終開始情報に対応する前記モジュール処理の前記終了情報が存在しない場合、前記対象モジュール処理の種類を、前記最終開始情報に対応する前記モジュール処理の種類と特定し、
前記最終開始情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れでもない場合、または、前記最終開始情報の後に前記最終開始情報に対応する前記モジュール処理の前記終了情報が存在する場合、前記対象モジュール処理の種類を、前記汎用種類と特定する
請求項5に記載の情報処理装置。
【請求項7】
前記プロセスにおいて、前記プロセッサは、前記モジュール処理の開始時に前記モジュール処理の種類および前記モジュール処理を開始したことを示す開始情報を前記動作ログに記録し、
前記種類特定部は、
前記対象動作ログに記録された最後の前記開始情報である最終開始情報を検出し、
前記最終開始情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れかである場合、前記対象モジュール処理の種類を、前記最終開始情報に対応する前記モジュール処理の種類と特定し、
前記最終開始情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れでもない場合、前記対象モジュール処理の種類を、前記汎用種類と特定する
請求項5に記載の情報処理装置。
【請求項8】
前記プロセスにおいて、前記プロセッサは、前記モジュール処理の開始時に前記プロセスが受け付けた処理要求の内容を前記動作ログに記録し、
前記種類特定部は、
前記対象動作ログに記録された最後の前記処理要求の内容である最終要求情報を検出し、
前記最終要求情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れかである場合、前記対象モジュール処理の種類を、前記最終要求情報に対応する前記モジュール処理の種類と特定し、
前記最終要求情報に対応する前記モジュール処理の種類が前記1または複数の特定種類の何れでもない場合、前記対象モジュール処理の種類を、前記汎用種類と特定する
請求項5に記載の情報処理装置。
【請求項9】
モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶するリスト記憶部と、
プロセッサと、
を備える情報処理装置において実行され、前記プロセッサを監視装置として機能させるためのプログラムであって、
前記プロセッサを、
何れかの前記システム操作が実行されたことを検出する操作検出部と、
実行を検出した前記システム操作を実行したプロセスである対象プロセスを特定するプロセス特定部と、
前記対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定するログ特定部と、
前記対象動作ログを解析することにより、実行を検出した前記システム操作を実行した前記モジュール処理である対象モジュール処理の種類を特定する種類特定部と、
前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作が含まれていない場合、異常が発生したことを示す異常情報を出力する出力部と
して機能させるプログラム。
【請求項10】
情報処理装置と、
1個または複数個の対象装置と、
前記情報処理装置からの指示に応じて前記1個または複数個の対象装置を制御するコントローラと、
を備える情報処理システムであって、
前記情報処理装置は、
モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶するリスト記憶部と、
プロセッサと、
を備え、
前記プロセッサは、
何れかの前記システム操作が実行されたことを検出する操作検出部と、
実行を検出した前記システム操作を実行したプロセスである対象プロセスを特定するプロセス特定部と、
前記対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定するログ特定部と、
前記対象動作ログを解析することにより、実行を検出した前記システム操作を実行した前記モジュール処理である対象モジュール処理の種類を特定する種類特定部と、
前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作が含まれていない場合、異常が発生したことを示す異常情報を出力する出力部と
して機能する情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置、プログラムおよび情報処理システムに関する。
【背景技術】
【0002】
工場および発電所等の産業制御システムに対してサイバー攻撃があった場合、重大な損害が生じる。損害を最小限に抑えるために、産業制御システムは、サイバー攻撃の可能性のある異常な事象を早急に検知することが重要である。
【0003】
異常な事象を検知する方法として、プロセスが操作したファイルを監視し、プロセスが正常時において操作していたファイルと比較する方法が知られている。このような方法は、正常時においてプロセスが操作していたファイルの種類が少ない場合、異常な処理がされたことを確実に検出することができる。
【0004】
しかし、ユーザから指示を受けてコマンドを実行するプロセス等は、多数の種類の処理を選択的に実行する。このようなプロセスは、操作するファイルの種類が非常に多い。従って、このようなプロセスは、異常な処理がされた場合であっても、正常時において操作されていたファイルが操作される可能性があった。このため、上述の方法では、このようなプロセスの異常を十分に検知することが困難であった。例えば、上述の方法では、共有ライブラリに含まれる1つのプログラム部品が侵害された場合に、プロセスが、共有ライブラリから侵害されたプログラム部品を呼び出して実行したとしても、異常を検知することができなかった。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2010-182019号公報
【文献】特開2013-247664号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、異常を確実に検知する情報処理装置、プログラムおよび情報処理システムを提供することにある。
【課題を解決するための手段】
【0007】
実施形態に係る情報処理装置は、リスト記憶部と、プロセッサとを備える。前記リスト記憶部は、モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶する。前記プロセッサは、操作検出部と、プロセス特定部と、ログ特定部と、種類特定部と、出力部として機能する。前記操作検出部は、何れかの前記システム操作が実行されたことを検出する。前記プロセス特定部は、実行を検出した前記システム操作を実行したプロセスである対象プロセスを特定する。前記ログ特定部は、前記対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定する。前記種類特定部は、前記対象動作ログを解析することにより、実行を検出した前記システム操作を実行した前記モジュール処理である対象モジュール処理の種類を特定する。前記出力部は、前記対象モジュール処理の種類についての前記ホワイトリストに、実行を検出した前記システム操作が含まれていない場合、異常が発生したことを示す異常情報を出力する。
【図面の簡単な説明】
【0008】
【
図2】実施形態に係る情報処理装置の機能構成を示す図。
【
図3】第1プロセスの処理の流れの一例を示すシーケンス図。
【
図5】対象モジュール処理の種類の特定処理の流れを示すフローチャート。
【
図6】第1変形例に係る種類の特定処理の流れを示すフローチャート。
【
図7】第2変形例に係る第2プロセスの処理の流れの一例を示すシーケンス図。
【
図8】第2変形例に係る種類の特定処理の流れを示すフローチャート。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら実施形態に係る情報処理システム10について説明する。
【0010】
図1は、情報処理システム10を示す図である。本実施形態において、情報処理システム10は、ユーザからの指示に応じて、工場および発電所等に設置される設備を制御する。設備は、例えば、ポンプ、タービン、ボイラーおよびモータ等である。なお、情報処理システム10は、このような設備の制御に限らず、他の制御システムまたは処理システムであってもよい。例えば、情報処理システム10は、ユーザからの指示に応じてサーバから情報を取得するクライアントサーバシステム等であってもよい。
【0011】
情報処理システム10は、情報処理装置12と、コントローラ14と、1個または複数個の対象装置16とを備える。
【0012】
情報処理装置12は、コンピュータである。情報処理装置12は、ユーザからの指示を受け付けることができ、さらに、ユーザに対して情報を表示したり出力したりすることができる。例えば、情報処理装置12は、キーボード、マウス、ディスプレイおよびタッチパネル等の入出力装置を有する。
【0013】
情報処理装置12は、ネットワーク18を介してコントローラ14と接続される。これにより、情報処理装置12は、コントローラ14と相互にデータを送受信することができる。なお、ネットワーク18は、有線であっても無線であってもよい。また、ネットワーク18は、ルータ、スイッチングハブおよび中継サーバ等の1個または複数個の装置を経由して接続されていてもよい。
【0014】
コントローラ14は、情報処理装置12からの制御命令を受信し、制御命令に応じて1個または複数個の対象装置16のそれぞれの動作を制御する。1個または複数個の対象装置16のそれぞれは、コントローラ14からの制御に応じて動作する装置または設備である。本実施形態において、1個または複数個の対象装置16のそれぞれは、ポンプ、タービン、ボイラーまたはモータ等である。
【0015】
ここで、情報処理装置12は、コントローラ14に指示を与えて1個または複数個の対象装置16を制御する。例えば、情報処理装置12は、ユーザからの制御要求に応じて、コントローラ14に指示を与える。本実施形態において、情報処理装置12は、メモリと、プロセッサとを備える。プロセッサは、オペレーティングシステムを実行する。さらに、プロセッサは、オペレーティングシステムの管理下で、1個または複数個の対象装置16の動作を制御するためのアプリケーションプログラムを実行する。
【0016】
プロセッサは、アプリケーションプログラムを実行することにより、1個または複数個の対象装置16を制御する。また、プロセッサは、複数のアプリケーションプログラムを並行して実行してもよい。
【0017】
さらに、本実施形態において、プロセッサは、プロセスに異常が発生したことを検出する監視プログラムを実行する。プロセスは、プロセッサが実行中のアプリケーションプログラムによる処理である。監視プログラムは、アプリケーションプログラムであってもよいし、オペレーティングシステムの一部に組み込まれたプログラムであってもよい。
【0018】
さらに、本実施形態において、プロセッサは、異常に対する対処をする異常監視プログラムを実行する。異常監視プログラムは、アプリケーションプログラムであってもよいし、オペレーティングシステムの一部に組み込まれたプログラムであってもよい。
【0019】
図2は、情報処理装置12の機能構成を示す図である。情報処理装置12は、ログ記憶部32と、リスト記憶部34と、監視部40とを有する。
【0020】
ログ記憶部32は、メモリにより実現される。ログ記憶部32は、プロセスの処理内容の履歴を表す動作ログを記憶する。それぞれのプロセスは、モジュール処理を実行した場合、実行したモジュール処理の内容を表す情報を、対応する動作ログに記録する。
【0021】
モジュール処理は、例えば、オペレーティングシステムに管理されているプログラム部品による処理である。プログラム部品は、例えば、共有ライブラリに含まれるプログラムであり、アプリケーションプログラムに組み込んで実行される。プロセスは、プログラム部品を呼び出しまたはロードし、呼び出したまたはロードしたプログラム部品を実行することにより、対応するモジュール処理を実行することができる。
【0022】
リスト記憶部34は、メモリにより実現される。リスト記憶部34は、モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶する。
【0023】
システム操作は、プロセスにおいてオペレーティングシステムに組み込まれている機能を呼び出して処理を実行させる操作である。例えば、システム操作は、プロセスがオペレーティングシステムの機能を呼び出すシステムコールである。システム操作は、例えば、ファイルのオープン、ファイルの読み込み、ファイルへの書き込み、ファイルの実行、ネットワークソケットの生成、および、ネットワークソケットを通した通信の実行等である。
【0024】
また、ホワイトリストは、実行を許可するシステム操作と、システム操作を許可する処理対象との組が記述されてもよい。例えば、実行を許可するシステム操作がファイルのオープンである場合、ホワイトリストは、ファイルのオープンを示す情報と、オープンする対象のファイルのパスとの組が記述される。
【0025】
また、複数種類のアプリケーションプログラムが実行される場合、リスト記憶部34は、アプリケーションプログラム毎且つモジュール処理の種類毎に、ホワイトリストを記憶する。
【0026】
また、リスト記憶部34は、実行可能な複数種類のモジュール処理の全てについてのホワイトリストを記憶しなくてもよい。この場合、リスト記憶部34は、予め定められた1または複数の特定種類のモジュール処理のそれぞれについてのホワイトリストを記憶する。予め定められた1または複数の特定種類のモジュール処理は、実行可能な複数種類のモジュール処理のうちの一部である。
【0027】
さらに、1または複数の特定種類のモジュール処理についてのホワイトリストを記憶している場合、リスト記憶部34は、汎用種類のモジュール処理についてのホワイトリストを記憶してもよい。汎用種類は、1または複数の特定種類のモジュール処理に含まれない全ての種類を統一して表す種類である。
【0028】
このようなホワイトリストは、アプリケーションプログラムの作成者またはシステム管理者等により予め生成される。また、ホワイトリストは、正常動作中におけるシステム操作を収集することにより作成されてもよい。
【0029】
監視部40は、プロセッサが監視プログラムを実行することにより実現される。すなわち、プロセッサは、監視プログラムを実行することにより監視部40として機能する。
【0030】
監視部40は、プロセスにおける異常を検出する。監視部40は、プロセスにおいて異常が検出された場合、異常情報を異常監視プロセスに出力する。異常監視プロセスは、プロセッサが実行中の異常監視プログラムの処理である。異常監視プロセスにおいて、プロセッサは、監視部40から異常情報を受け取った場合、異常監視処理を実行する。プロセッサは、異常監視処理として、例えば、ポップアップウィンドウを表示することにより異常が発生したことをユーザに通知したり、異常が発生したプロセスを停止したり、バックアップ処理を実行したり、異常が発生したプロセスの制御対象となっている対象装置16の動作を停止したりする。
【0031】
監視部40は、操作検出部42と、プロセス特定部44と、ログ特定部46と、種類特定部48と、比較部50と、出力部52とを有する。
【0032】
操作検出部42は、何れかのシステム操作が実行されたことを検出する。また、操作検出部42は、予め定められたシステム操作である特定システム操作が実行されたことを検出してもよい。例えば、操作検出部42は、ファイルのオープンが実行されたことを検出する。さらに、操作検出部42は、実行を検出した特定システム操作による処理対象を特定してもよい。例えば、特定システム操作がファイルのオープンである場合、操作検出部42は、特定システム操作による処理対象であるファイルのパスを特定する。
【0033】
プロセス特定部44は、実行を検出したシステム操作を実行したプロセスである対象プロセスを特定する。例えば、プロセス特定部44は、対象プロセスを識別するプロセス識別子を特定する。プロセス識別子は、オペレーティングシステムが、現在実行中のプロセスを識別するために付ける情報である。
【0034】
ログ特定部46は、対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定する。ログ特定部46は、例えば、対象動作ログを含むファイル(ログファイル)のパスを特定する。
【0035】
種類特定部48は、対象動作ログを解析することにより、実行を検出したシステム操作を実行したモジュール処理である対象モジュール処理の種類を特定する。例えば、種類特定部48は、特定したパスに記憶されたログファイルをオープンし、ログファイルに記録された情報を解析して対象モジュール処理の種類を特定する。例えば、種類特定部48は、共有ライブラリに含まれるプログラム部品群のうちの、実行を検出したシステム操作を実行したプログラム部品を特定する。
【0036】
なお、種類特定部48は、リスト記憶部34が、予め定められた1または複数の特定種類のモジュール処理のそれぞれについてのホワイトリスト、および、汎用種類についてのホワイトリストを記憶している場合には、対象モジュール処理の種類が、1または複数の特定種類の何れであるのかを特定する。また、種類特定部48は、対象モジュール処理の種類が、1または複数の特定種類の何れにも一致しない場合、対象モジュール処理の種類を汎用種類と特定する。
【0037】
比較部50は、リスト記憶部34に記憶されている複数のホワイトリストのうち、対象モジュール処理の種類についてのホワイトリストを特定する。そして、比較部50は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作が含まれているか否かを判断する。
【0038】
また、特定システム操作が実行されたこと検出した場合には、比較部50は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作と、特定された処理対象との組が含まれているか否かを判断する。例えば、特定システム操作がファイルのオープンである場合、比較部50は、実行を検出したシステム操作の処理対象のファイルのパスと、ホワイトリストに含まれるファイルのパスとが一致するか否かをさらに判断する。比較部50は、判断結果を出力部52に与える。
【0039】
なお、複数種類のアプリケーションプログラムが実行される場合、比較部50は、対象プロセスに対応するアプリケーションプログラムの対象モジュール処理の種類についてのホワイトリストを特定する。そして、この場合、比較部50は、対象プロセスに対応するアプリケーションプログラムの対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作が含まれているか否かを判断する。
【0040】
出力部52は、比較部50から判断結果を受け取る。出力部52は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作が含まれていない場合、異常が発生したことを示す異常情報を出力する。例えば、出力部52は、対象プロセスに対応するアプリケーションプログラムの対象モジュール処理の種類のホワイトリストに、実行を検出したシステム操作が含まれていない場合、異常情報を出力する。
【0041】
図3は、第1プロセスの処理の流れの一例を示すシーケンス図である。
【0042】
情報処理装置12のプロセッサは、あるアプリケーションプログラムを実行することにより、プロセス実行部60として機能する。プロセス実行部60は、モジュール処理として、第1制御処理および第2制御処理を実行する。
【0043】
プロセス実行部60は、ユーザインターフェース部62と、ログ出力部64と、第1制御処理部66と、第2制御処理部68とを有する。このようなプロセス実行部60は、
図3に示すような流れで処理を実行する。
【0044】
まず、ユーザは、第1制御処理の処理要求を情報処理装置12に対して入力する(S11)。例えば、ユーザは、第1制御処理に対応付けられたテキストボックスに制御値を入力したり、第1制御処理に対応付けられたボタンをクリックしたりすることにより、第1制御処理の処理要求を情報処理装置12に対して入力する。
【0045】
続いて、ユーザインターフェース部62は、第1制御処理の処理要求を受け付ける(S12)。続いて、ユーザインターフェース部62は、第1制御処理部66に第1制御処理の開始を指示する(S13)。ここで、第1制御処理の開始時に、ログ出力部64は、モジュール処理の種類およびモジュール処理を開始したことを示す開始情報を、第1プロセスの動作ログに記録する(S14)。例えば、ログ出力部64は、“第1制御処理の開始”という文字列および処理の開始時刻を示すタイムスタンプを動作ログに記録する。
【0046】
続いて、第1制御処理部66は、第1制御処理を実行する(S15)。続いて、第1制御処理が終了した場合、第1制御処理部66は、ユーザインターフェース部62に対して、第1制御処理の処理終了を通知する(S16)。例えば、第1制御処理部66は、関数の戻り値等の第1制御処理の処理結果を通知する。
【0047】
続いて、ユーザインターフェース部62は、第1制御処理の処理終了を受信する(S17)。続いて、ユーザインターフェース部62は、第1制御処理の処理結果をユーザに通知する(S18)。例えば、ユーザインターフェース部62は、ディスプレイに表示されている第1制御処理に対応付けられた制御値を、最新の値に更新する。ここで、第1制御処理の終了時に、ログ出力部64は、モジュール処理の種類およびモジュール処理を終了したことを示す終了情報を、第1プロセスの動作ログに記録する(S19)。例えば、ログ出力部64は、“第1制御処理の終了”という文字列および処理の終了時刻を示すタイムスタンプを動作ログに記録する。
【0048】
続いて、ユーザは、第2制御処理の処理要求を情報処理装置12に対して入力する(S21)。続いて、ユーザインターフェース部62は、第2制御処理の処理要求を受け付ける(S22)。続いて、ユーザインターフェース部62は、第2制御処理部68に第2制御処理の開始を指示する(S23)。ここで、第2制御処理の開始時に、ログ出力部64は、モジュール処理の種類およびモジュール処理を開始したことを示す開始情報を、第2プロセスの動作ログに記録する(S24)。
【0049】
続いて、第2制御処理部68は、第2制御処理を実行する(S25)。続いて、第2制御処理が終了した場合、第2制御処理部68は、ユーザインターフェース部62に対して、第2制御処理の処理終了を通知する(S26)。続いて、ユーザインターフェース部62は、第2制御処理の処理終了を受信する(S27)。続いて、ユーザインターフェース部62は、第2制御処理の処理結果をユーザに通知する(S28)。ここで、第2制御処理の終了時に、ログ出力部64は、モジュール処理の種類およびモジュール処理を終了したことを示す終了情報を、第2プロセスの動作ログに記録する(S29)。
【0050】
以上のように、それぞれのプロセスにおいて、情報処理装置12のプロセッサは、モジュール処理の開始時に、モジュール処理の種類およびモジュール処理を開始したことを示す開始情報を動作ログに記録する。また、情報処理装置12のプロセッサは、モジュール処理の終了時に、モジュール処理の種類およびモジュール処理を終了したことを示す終了情報を動作ログに記録する。
【0051】
図4は、監視部40の処理の流れを示すフローチャートである。監視部40は、
図4に示す流れでプロレス監視処理を実行することにより、プロセスの異常を検出する。
【0052】
まず、S51において、監視部40は、プロセスにおいて、何れかのシステム操作がされたか否かを判断する。本例においては、監視部40は、予め定められた特定システム操作がされたか否かを判断する。例えば、監視部40は、ファイルのオープンがされたか否かを判断する。
【0053】
監視部40は、何れかのシステム操作が実行された場合(S51のYes)、処理をS52に進める。本例においては、監視部40は、特定システム操作(例えばファイルのオープン)が実行された場合(S51のYes)、処理をS52に進める。監視部40は、何れかのシステム操作も実行されていない場合(S51のNo)、処理をS51で待機する。本例においては、監視部40は、特定システム操作(例えばファイルのオープン)が実行されていない場合(S51のNo)、処理をS51で待機する。
【0054】
S52において、監視部40は、実行を検出したシステム操作による処理対象を特定する。本例においては、監視部40は、特定システム操作(例えば、ファイルのオープン)による処理対象であるファイルのパスを特定する。
【0055】
続いて、S53において、監視部40は、対象プロセスを特定する。対象プロセスは、実行を検出したシステム操作を実行したプロセスである。例えば、監視部40は、ファイルのオープンを実行したプロセスのプロセス識別子を特定する。
【0056】
続いて、S54において、監視部40は、対象プロセスの処理内容の履歴を表す動作ログである対象動作ログを特定する。例えば、監視部40は、対象動作ログを含むファイル(ログファイル)のパスを特定する。
【0057】
続いて、S55において、監視部40は、対象動作ログを解析することにより、対象モジュール処理の種類を特定する。対象モジュール処理は、実行を検出したシステム操作を実行したモジュール処理である。例えば、監視部40は、特定したパスに記憶されたログファイルをオープンし、ログファイルに記録された情報を解析して対象モジュール処理の種類を特定する。
【0058】
続いて、S56において、監視部40は、リスト記憶部34に記憶されている複数のホワイトリストのうち、対象モジュール処理の種類についてのホワイトリストを特定する。なお、リスト記憶部34は、複数のアプリケーションプログラムのそれぞれについて、モジュール処理の種類毎のホワイトリストを記憶している場合がある。この場合、監視部40は、対象プロセスに対応するアプリケーションプログラムの対象モジュール処理の種類についてのホワイトリストを特定する。
【0059】
続いて、S57において、監視部40は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作が含まれているか否かを判断する。なお、特定システム操作が実行されたこと検出した場合には、監視部40は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作と特定された処理対象との組が含まれているか否かを判断する。例えば、特定システム操作がファイルのオープンである場合、監視部40は、実行を検出したシステム操作の処理対象であるファイルのパスと、ホワイトリストに含まれるファイルのパスとが一致するか否かをさらに判断する。
【0060】
監視部40は、ホワイトリストに、実行を検出したシステム操作が含まれている場合(S57のYes)、処理をS58に進める。監視部40は、特定したホワイトリストに、実行を検出したシステム操作が含まれていない場合(S57のNo)、処理をS59に進める。
【0061】
S58において、監視部40は、異常が発生していないことを示す正常情報を異常監視プロセスに出力する。異常監視プロセスは、正常情報を受け取った場合、何ら処理を実行しない。なお、監視部40は、S58において何ら処理を実行しなくてもよい。
【0062】
S59において、監視部40は、異常が発生したことを示す異常情報を異常監視プロセスに出力する。異常監視プロセスは、異常情報を受け取った場合、例えばポップアップウィンドウを表示することにより異常が発生したことをユーザに通知する。また、異常監視プロセスは、異常情報を受け取った場合、異常が発生したプロセスを停止したり、バックアップ処理を実行したり、異常が発生したプロセスの制御対象となっている対象装置16の動作を停止したりしてもよい。
【0063】
そして、S58またはS59の処理を終了すると、監視部40は、処理をS51に戻して、処理をS51から繰り返す。これにより、監視部40は、プロセスの監視を継続することができる。
【0064】
図5は、対象モジュール処理の種類の特定処理の流れを示すフローチャートである。監視部40は、例えば、
図4のS55において、
図5に示す流れで処理を実行することにより、対象モジュール処理の種類を特定する。
【0065】
なお、本例において、リスト記憶部34は、予め定められた1または複数の特定種類のモジュール処理のそれぞれについてのホワイトリスト、および、汎用種類についてのホワイトリストを記憶する。
【0066】
まず、S61において、監視部40は、対象動作ログのファイルをオープンする。続いて、S62において、監視部40は、対象動作ログのファイルから、1または複数の特定種類のモジュール処理のうちの何れかの特定種類のモジュール処理の開始情報を最後に記録した箇所を探す。
【0067】
続いて、S63において、監視部40は、何れかの特定種類のモジュール処理の開始情報を最後に記録した箇所が検出できたか否かを判断する。監視部40は、検出できなかった場合(S63のNo)、処理をS64に進める。S64において、監視部40は、対象モジュール処理の種類を、汎用種類と特定する。監視部40は、S64の処理を終了すると、本フローを終了する。
【0068】
監視部40は、検出できた場合(S63のYes)、処理をS65に進める。S65において、監視部40は、対象動作ログのファイルから、検出した開始情報の後に、検出した開始情報に対応する特定種類のモジュール処理の終了情報を記録した箇所を探す。
【0069】
続いて、S66において、監視部40は、検出した開始情報に対応する特定種類のモジュール処理の終了情報を記録した箇所が検出できたか否かを判断する。監視部40は、検出できた場合(S66のYes)、処理をS67に進める。S67において、監視部40は、対象モジュール処理の種類を、汎用種類と特定する。監視部40は、S67の処理を終了すると、本フローを終了する。
【0070】
監視部40は、検出できなかった場合(S66のNo)、処理をS68に進める。S68において、監視部40は、対象モジュール処理の種類を、検出した開始情報に対応する特定種類と特定する。監視部40は、S68の処理を終了すると、本フローを終了する。
【0071】
以上のように、監視部40は、対象動作ログに記録された最後の開始情報である最終開始情報を検出する。そして、監視部40は、最終開始情報に対応するモジュール処理の種類が1または複数の特定種類の何れかであり、且つ、最終開始情報の後に最終開始情報に対応するモジュール処理の終了情報が存在しない場合、対象モジュール処理の種類を、最終開始情報に対応するモジュール処理の種類と特定する。また、監視部40は、最終開始情報に対応するモジュール処理の種類が1または複数の特定種類の何れでもない場合、または、最終開始情報の後に最終開始情報に対応するモジュール処理の終了情報が存在する場合、対象モジュール処理の種類を、汎用種類と特定する。
【0072】
これにより、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れかに一致する場合、対象モジュール処理の種類を一致した特定種類と特定することができる。また、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れにも一致しない場合、対象モジュール処理の種類を汎用種類と特定することができる。
【0073】
(第1変形例)
図6は、第1変形例に係る対象モジュール処理の種類の特定処理の流れを示すフローチャートである。
【0074】
情報処理装置12のプロセッサは、アプリケーションプログラムを実行した場合、
図3とは異なる処理の流れで、動作ログへの記録を実行する場合がある。例えば、プロセスにおいて、プロセッサは、モジュール処理の開始時に動作ログに開始情報を記録するが、モジュール処理の終了時に動作ログに終了情報を記録しない場合もある。このような場合、監視部40は、
図6に示すような流れで、対象モジュール処理の種類を特定する。
【0075】
まず、S71において、監視部40は、対象動作ログのファイルをオープンする。続いて、S72において、監視部40は、対象動作ログのファイルから、1または複数の特定種類のモジュール処理のうちの何れかの特定種類のモジュール処理の開始情報を最後に記録した箇所を探す。
【0076】
続いて、S73において、監視部40は、何れかの特定種類のモジュール処理の開始情報を最後に記録した箇所が検出できたか否かを判断する。監視部40は、検出できなかった場合(S73のNo)、処理をS74に進める。S74において、監視部40は、対象モジュール処理の種類を、汎用種類と特定する。監視部40は、S74の処理を終了すると、本フローを終了する。
【0077】
監視部40は、検出できた場合(S73のYes)、処理をS75に進める。S75において、監視部40は、対象モジュール処理の種類を、検出した開始情報に対応する特定種類と特定する。監視部40は、S75の処理を終了すると、本フローを終了する。
【0078】
以上のように、監視部40は、対象動作ログに記録された最後の開始情報である最終開始情報を検出する。そして、監視部40は、最終開始情報に対応するモジュール処理の種類が1または複数の特定種類の何れかである場合、対象モジュール処理の種類を、最終開始情報に対応するモジュール処理の種類と特定する。また、監視部40は、最終開始情報に対応するモジュール処理の種類が1または複数の特定種類の何れでもない場合、対象モジュール処理の種類を、汎用種類と特定する。
【0079】
これにより、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れであるのかを特定することができる。また、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れにも一致しない場合、対象モジュール処理の種類を汎用種類と特定することができる。
【0080】
(第2変形例)
図7は、第2変形例に係る第2プロセスの処理の流れの一例を示すシーケンス図である。情報処理装置12のプロセス実行部60は、
図3に示す流れの処理に代えて、例えば、
図7に示す流れで処理を実行してもよい。
【0081】
まず、ユーザは、第1制御処理の処理要求を情報処理装置12に対して入力する(S81)。例えば、ユーザは、第1制御処理に対応付けられたテキストボックスに制御値を入力したり、第1制御処理に対応付けられたボタンをクリックしたりすることにより、第1制御処理の処理要求を情報処理装置12に対して入力する。
【0082】
続いて、ユーザインターフェース部62は、第1制御処理の処理要求を受け付ける(S82)。続いて、ログ出力部64は、第1制御処理の開始時にプロセスが受け付けた処理要求の内容を、第1プロセスの動作ログに記録する(S83)。例えば、ログ出力部64は、制御値を入力したテキストボックスの識別子、クリックしたボタンの識別子およびテキストボックスに入力された制御値等と、開始時刻を示すタイムスタンプとを動作ログに記録する。
【0083】
続いて、ユーザインターフェース部62は、ユーザにより入力された処理要求を解釈し、第1制御処理に関する処理要求であることを特定する(S84)。続いて、ユーザインターフェース部62は、第1制御処理部66に第1制御処理の開始を指示する(S85)。
【0084】
続いて、第1制御処理部66は、第1制御処理を実行する(S86)。続いて、第1制御処理が終了した場合、第1制御処理部66は、ユーザインターフェース部62に対して、第1制御処理の処理終了を通知する(S87)。例えば、第1制御処理部66は、関数の戻り値等の第1制御処理の処理結果を通知する。
【0085】
続いて、ユーザインターフェース部62は、第1制御処理の処理終了を受信する(S88)。続いて、ユーザインターフェース部62は、第1制御処理の処理結果をユーザに通知する(S89)。例えば、ユーザインターフェース部62は、ディスプレイに表示されている第1制御処理に対応付けられた制御値を、最新の値に更新する。
【0086】
続いて、ユーザは、第2制御処理の処理要求を情報処理装置12に対して入力する(S91)。続いて、ユーザインターフェース部62は、第2制御処理の処理要求を受け付ける(S92)。続いて、ログ出力部64は、第2制御処理の開始時にプロセスが受け付けた処理要求の内容を、第2プロセスの動作ログに記録する(S93)。
【0087】
続いて、ユーザインターフェース部62は、ユーザにより入力された処理要求を解釈し、第2制御処理に関する処理要求であることを特定する(S94)。続いて、ユーザインターフェース部62は、第2制御処理部68に第2制御処理の開始を指示する(S95)。
【0088】
続いて、第2制御処理部68は、第2制御処理を実行する(S96)。続いて、第2制御処理が終了した場合、第2制御処理部68は、ユーザインターフェース部62に対して、第2制御処理の処理終了を通知する(S97)。続いて、ユーザインターフェース部62は、第2制御処理の処理終了を受信する(S98)。続いて、ユーザインターフェース部62は、第2制御処理の処理結果をユーザに通知する(S99)。
【0089】
以上のように、第2変形例では、それぞれのプロセスにおいて、情報処理装置12のプロセッサは、モジュール処理の開始時にプロセスが受け付けた処理要求の内容を動作ログに記録する。
【0090】
図8は、第2変形例に係る対象モジュール処理の種類の特定処理の流れを示すフローチャートである。情報処理装置12のプロセス実行部60が、
図7に示す流れで処理を実行する場合、監視部40は、
図8に示す流れで処理を実行することにより対象モジュール処理の種類を特定する。
【0091】
まず、S101において、監視部40は、対象動作ログのファイルをオープンする。続いて、S102において、監視部40は、対象動作ログのファイルから、1または複数の特定種類のモジュール処理のうちの何れかの特定種類のモジュール処理についての、処理要求の内容を最後に記録した箇所を探す。
【0092】
続いて、S103において、監視部40は、何れかの特定種類のモジュール処理についての処理要求の内容を最後に記録した箇所が検出できたか否かを判断する。監視部40は、検出できなかった場合(S103のNo)、処理をS104に進める。S104において、監視部40は、対象モジュール処理の種類を、汎用種類と特定する。監視部40は、S104の処理を終了すると、本フローを終了する。
【0093】
監視部40は、検出できた場合(S103のYes)、処理をS105に進める。S105において、監視部40は、検出した処理要求の内容の記述に基づき、1または複数の特定種類のモジュール処理のうちの何れかのモジュール処理が実行されたのかを判断する。例えば、情報処理装置12は、処理要求の開始を受け付けるボタンまたはテキストボックスに付けられた識別子と、モジュール処理の種類とを対応付けたテーブルを記憶する対応情報メモリを備えてもよい。この場合、監視部40は、処理要求の内容に記述されたボタンまたはテキストボックス等の識別子と、テーブルの記述とに基づき、対応モジュール処理の種類を特定する。監視部40は、S105の処理を終了すると、本フローを終了する。
【0094】
以上のように、監視部40は、対象動作ログに記録された最後の処理要求の内容である最終要求情報を検出する。そして、監視部40は、最終要求情報に対応するモジュール処理の種類が1または複数の特定種類の何れかである場合、対象モジュール処理の種類を、最終要求情報に対応するモジュール処理の種類と特定する。また、監視部40は、最終要求情報に対応するモジュール処理の種類が1または複数の特定種類の何れでもない場合、対象モジュール処理の種類を、汎用種類と特定する。
【0095】
これにより、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れであるのかを特定することができる。また、監視部40は、対象モジュール処理の種類が、1または複数の特定種類の何れにも一致しない場合、対象モジュール処理の種類を汎用種類と特定することができる。
【0096】
以上のように、本実施形態に係る情報処理装置12は、モジュール処理の種類毎に、実行を許可するシステム操作が記述されたホワイトリストを記憶する。情報処理装置12は、何れかのシステム操作が実行されたことを検出し、実行を検出したシステム操作を実行した対象プロセスを特定し、対象プロセスの処理内容の履歴を表す対象動作ログを特定し、対象動作ログを解析することにより対象モジュール処理の種類を特定する。そして、そして、情報処理装置12は、対象モジュール処理の種類についてのホワイトリストに、実行を検出したシステム操作が含まれていない場合、異常情報を出力する。これにより、情報処理装置12は、多数の種類のモジュール処理を実行するようなプロセスであっても、異常を確実に検知することができる。
【0097】
(ハードウェア構成)
図9は、実施形態に係る情報処理装置12のハードウェア構成の一例を示す図である。情報処理装置12は、例えば
図9に示すようなハードウェア構成のコンピュータにより実現される。情報処理装置12は、CPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、ROM(Read Only Memory)303と、操作入力装置304と、表示装置305と、記憶装置306と、通信装置307とを備える。そして、これらの各部は、バスにより接続される。
【0098】
CPU301は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。CPU301は、RAM302の所定領域を作業領域として、ROM303および記憶装置306等に記憶されたプログラムとの協働により各種処理を実行する。
【0099】
RAM302は、SDRAM(Synchronous Dynamic Random Access Memory)等のメモリである。RAM302は、CPU301の作業領域として機能する。ROM303は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
【0100】
操作入力装置304は、マウスおよびキーボード等の入力デバイスである。操作入力装置304は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をCPU301に出力する。
【0101】
表示装置305は、LCD(Liquid Crystal Display)等の表示デバイスである。表示装置305は、CPU301からの表示信号に基づいて、各種情報を表示する。
【0102】
記憶装置306は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置306は、CPU301からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信装置307は、CPU301からの制御に応じて外部の機器とネットワークを介して通信する。
【0103】
コンピュータで実行される監視プログラムは、操作検出モジュールと、プロセス特定モジュールと、ログ特定モジュールと、種類特定モジュールと、比較モジュールと、出力モジュールとを含むモジュール構成となっている。このプログラムは、CPU301(プロセッサ)によりRAM302上に展開して実行されることにより、コンピュータを操作検出部42、プロセス特定部44、ログ特定部46、種類特定部48、比較部50および出力部52として機能させる。また、RAM302および記憶装置306は、ログ記憶部32およびリスト記憶部34として機能する。
【0104】
また、コンピュータで実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、CD-ROM、フレキシブルディスク、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0105】
また、このプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、情報処理装置12で実行されるプログラムを、ROM303等に予め組み込んで提供するように構成してもよい。
【0106】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0107】
10 情報処理システム
12 情報処理装置
14 コントローラ
16 対象装置
18 ネットワーク
32 ログ記憶部
34 リスト記憶部
40 監視部
42 操作検出部
44 プロセス特定部
46 ログ特定部
48 種類特定部
50 比較部
52 出力部
60 プロセス実行部
62 ユーザインターフェース部
64 ログ出力部
66 第1制御処理部
68 第2制御処理部