JP7173165B2 - 履歴管理装置、履歴管理方法及びプログラム - Google Patents

履歴管理装置、履歴管理方法及びプログラム Download PDF

Info

Publication number
JP7173165B2
JP7173165B2 JP2020565111A JP2020565111A JP7173165B2 JP 7173165 B2 JP7173165 B2 JP 7173165B2 JP 2020565111 A JP2020565111 A JP 2020565111A JP 2020565111 A JP2020565111 A JP 2020565111A JP 7173165 B2 JP7173165 B2 JP 7173165B2
Authority
JP
Japan
Prior art keywords
storage area
history
event history
event
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020565111A
Other languages
English (en)
Other versions
JPWO2020144816A1 (ja
Inventor
純明 榮
和彦 磯山
淳 西岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2020144816A1 publication Critical patent/JPWO2020144816A1/ja
Application granted granted Critical
Publication of JP7173165B2 publication Critical patent/JP7173165B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は履歴を管理する技術に関する。
履歴を表すデータを管理するための技術が開発されている。例えば特許文献1は、複数のコンピュータから得たログを一つにまとめる技術を開示している。具体的には、各コンピュータから得たログを共通形式の中間ログに変換し、中間ログの内容を要約することで、統合ログが生成される。
特開2006-259811号公報
記録されているログの中から、所望の条件を満たすログを検索したいことがある。この際、記録されているログの量が多いと、ログの検索に要する時間が長くなる。特許文献1は、統合ログから所望のログを検索することについては言及していない。
本発明は、上述の課題に鑑みてなされたものであり、その目的の一つは、イベントの履歴を効率的に管理する技術を提供することである。
本発明の履歴管理装置は、1)プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、取得したイベント履歴の内容に基づき、複数の記憶領域の中から、イベント履歴を記憶させる記憶領域を決定する格納先決定部と、2)決定した記憶領域に取得したイベント履歴を格納する格納処理部と、3)取得したイベント履歴が決定された記憶領域に記憶されていることを表すように、決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新部と、を有する。
格納先決定部は、イベント履歴の内容に関する条件と、その条件に該当するイベント履歴を記憶させる1つ以上の前記記憶領域とを対応づけたグループ情報を取得し、グループ情報に示されている記憶領域のうち、取得したイベント履歴が合致する条件に対応づけられている記憶領域を、取得したイベント履歴を記憶させる記憶領域として決定する。グループ情報が示す条件は、イベントの主体又は客体に関するユーザグループを示す。格納先決定部は、グループ情報において取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている記憶領域を、取得したイベント履歴を記憶させる記憶領域に決定する。
本発明の履歴管理方法はコンピュータによって実行される。当該履歴管理方法は、1)プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、取得したイベント履歴の内容に基づき、複数の記憶領域の中から、イベント履歴を記憶させる記憶領域を決定する格納先決定ステップと、2)決定した記憶領域に取得したイベント履歴を格納する格納処理ステップと、3)取得したイベント履歴が決定された記憶領域に記憶されていることを表すように、決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新ステップと、を有する。
格納先決定ステップにおいて、イベント履歴の内容に関する条件と、その条件に該当するイベント履歴を記憶させる1つ以上の記憶領域とを対応づけたグループ情報を取得し、グループ情報に示されている記憶領域のうち、取得したイベント履歴が合致する条件に対応づけられている記憶領域を、取得したイベント履歴を記憶させる記憶領域として決定する。グループ情報が示す条件は、イベントの主体又は客体に関するユーザグループを示している。格納先決定ステップにおいて、グループ情報において取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている記憶領域を、取得したイベント履歴を記憶させる記憶領域に決定する。
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
本発明によれば、イベントの履歴を効率的に管理する技術が提供される。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
本実施形態の情報処理システムの動作の概要を例示する図である。 実施形態1の情報処理システムの構成を例示する図である。 履歴管理装置を実現するための計算機を例示する図である。 検索処理装置を実現するための計算機を例示する図である。 実施形態1の履歴管理装置によって実行される処理の流れを例示するフローチャートである。 実施形態1の検索処理装置によって実行される処理の流れを例示するフローチャートである。 イベント履歴をテーブル形式で例示する図である。 イベント履歴の内容が複数のテーブルに分散して格納されるケースを例示する図である。 イベントの発生時刻を条件として示すグループ情報を例示する図である。 ユーザグループを条件として示すグループ情報を例示する図である。 OS の種類を条件として示すグループ情報を例示する図である。 複数の条件の組み合わせに対して記憶領域30が対応づけられるケースを例示する図である。 ブルームフィルタで実現されるインデックス情報を例示する図である。 記憶領域ごとに複数のインデックス情報が用意されるケースを例示する図である。 インデックス項目がイベント履歴に含まれる複数の項目の組みに対応するケースを例示する図である。 ブルームフィルタで構成されるインデックス情報を利用した検索を例示する図である。 複数のインデックス項目が存在するケースにおける検索について例示する図である。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
[実施形態1]
<概要>
図1は、本実施形態の情報処理システム4000の動作の概要を例示する図である。図1は、情報処理システム4000の動作についての理解を容易にするための概念的な説明を表す図であり、情報処理システム4000の動作を具体的に限定するものではない。
情報処理システム4000は、履歴管理装置2000及び検索処理装置3000を有する。履歴管理装置2000は、対象のコンピュータシステム(以下、対象システム)において発生したイベントに関する情報であるイベント履歴10を記憶領域30に格納する。対象システムは、1つ以上の任意のマシンで構成される。マシンは、物理マシンであってもよいし、仮想マシンであってもよい。イベントは、例えば、対象システムに含まれるマシンで動作するプロセスが行った活動(ファイルや他のプロセスへのアクセスなど)を表す。検索処理装置3000は、履歴管理装置2000によって記憶領域30に格納されたイベント履歴の検索要求(検索クエリ)を処理する装置である。
ここで、情報処理システム4000には、複数の記憶領域30が設けられている。イベント履歴10は、複数の記憶領域30の一部(1つ以上の記憶領域30であって、全ての記憶領域30ではない)に記憶される。記憶領域30は、例えば、1つの記憶装置である。ただし、1つの記憶装置の中に複数の記憶領域30(例えばパーティション)が設けられていてもよい。また、記憶領域30は、複数の記憶装置の集合を仮想的に1つの記憶装置とみなすことで構成された記憶領域であってもよい。
履歴管理装置2000は、新たなイベント履歴10を記憶領域に記憶させる際、そのイベント履歴10の内容に基づいて、そのイベントを記憶させる記憶領域30を決定し、決定した記憶領域30にそのイベント履歴を記憶させる。さらに、履歴管理装置2000は、検索処理装置3000が検索を行う際に、検索対象とする記憶領域30を一部に絞り込むことができるように、インデックス情報40の更新を行う。
インデックス情報40は記憶領域30に対応づけられる。記憶領域30に対応するインデックス情報40は、イベント履歴10がその記憶領域30に記憶されているか否かを表す。履歴管理装置2000は、イベント履歴10を或る記憶領域30に記憶させたら、その記憶領域30に対応するインデックス情報40を、そのイベント履歴10がその記憶領域30に記憶されていることを表すように更新する。
ここで、少なくとも、インデックス情報40により、「対応する記憶領域30にイベント履歴10が記憶されていない」ということが表されている場合、そのイベント履歴10は、その記憶領域30に記憶されていない。すなわち、フォールスネガティブは許容しない。こうすることで、「検索条件に該当するイベント履歴10が実際には存在するにもかかわらず、検索結果としてそのイベント履歴10を取得できない」という事態が発生しないようにする。一方で、インデックス情報40により、「対応する記憶領域30にイベント履歴10が記憶されている」ということが表されている場合、そのイベント履歴10は、実際にその記憶領域30に記憶されていてもよいし、記憶されていなくてもよい。すなわち、フォールスポジティブは許容してもよい。
検索処理装置3000は、インデックス情報40を利用して検索クエリ50を処理する。検索クエリ50は、検索により記憶領域30から取得したいイベント履歴10に関する条件(以下、検索条件)を示す。例えば、「イベントの実行主体がアプリケーション X である」という検索条件を示す検索クエリ50で検索が行われた場合、検索処理装置3000は、アプリケーション X によって実行された各イベントのイベント履歴10を取得する。
ここで、検索処理装置3000は、インデックス情報40を用いて、検索クエリ50が示す検索条件を満たすイベント履歴10が記憶されている記憶領域30の絞り込みを行う。具体的には、検索処理装置3000は、各インデックス情報40と、検索クエリ50が示す検索条件とを比較することで、検索条件を満たすイベント履歴10が記憶されている可能性がある記憶領域30を特定する。そして、検索処理装置3000は、特定された記憶領域30を対象に、検索条件を満たすイベント履歴10の検索を行う。そして検索処理装置3000は、検索条件を満たすイベント履歴10が記憶領域30の中に記憶されていたら、そのイベント履歴10を取得する。
なお、図1では履歴管理装置2000と検索処理装置3000とが別々に実装されているが、これら2つの装置は、同一の計算機上に実装されてもよい。
<作用効果>
履歴管理装置2000によれば、イベント履歴10を記憶領域30に記憶する際、そのイベント履歴10の内容に基づいて格納先の記憶領域30が決定された上で、格納先の記憶領域30に対応するインデックス情報40が更新される。こうすることで、検索処理装置3000がイベント履歴10の検索を行う際、インデックス情報40を参照することで、イベント履歴10が記憶されている可能性がある記憶領域30を絞り込むことができる。よって、イベント履歴10の検索に要する時間を削減することができる。
以下、本実施形態の情報処理システム4000についてさらに詳細に説明する。
<情報処理システム4000の機能構成の例>
図2は、実施形態1の情報処理システム4000の構成を例示する図である。情報処理システム4000は、履歴管理装置2000及び検索処理装置3000を有する。履歴管理装置2000は、格納先決定部2020、格納処理部2040、及びインデックス更新部2060を有する。格納先決定部2020は、イベント履歴10を取得し、そのイベント履歴10の内容に基づいて、そのイベント履歴10を記憶させる記憶領域30を決定する。格納処理部2040は、決定した記憶領域30にイベント履歴10を格納する。インデックス更新部2060は、上記決定した記憶領域30に対応するインデックス情報が、上記取得したイベント履歴10がその記憶領域30に記憶されていることを表すように、そのインデックス情報40を更新する。
検索処理装置3000は、クエリ取得部3020、記憶領域特定部3040、及び検索処理部3060を有する。クエリ取得部3020は検索クエリ50を取得する。記憶領域特定部3040は、検索クエリ50が示す検索条件と、各記憶領域30に対応するインデックス情報40とを比較することで、検索クエリ50が示す検索条件に該当するイベント履歴10が記憶されている可能性がある記憶領域30を特定する。検索処理部3060は、特定された記憶領域30を対象としてイベント履歴10の検索を行う。
<履歴管理装置2000のハードウエア構成>
履歴管理装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、履歴管理装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
図3は、履歴管理装置2000を実現するための計算機1000を例示する図である。計算機1000は任意の計算機である。例えば計算機1000は、Personal Computer(PC)、サーバマシン、タブレット端末、又はスマートフォンなどである。計算機1000は、履歴管理装置2000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
計算機1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、又は FPGA(Field-Programmable Gate Array)などのプロセッサである。メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスクドライブ、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。ただし、ストレージデバイス1080は、RAM など、主記憶装置を構成するハードウエアと同様のハードウエアで構成されてもよい。
入出力インタフェース1100は、計算機1000と入出力デバイスとを接続するためのインタフェースである。ネットワークインタフェース1120は、計算機1000を通信網に接続するためのインタフェースである。この通信網は、例えば LAN(Local Area Network)や WAN(Wide Area Network)である。ネットワークインタフェース1120が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
ストレージデバイス1080は、履歴管理装置2000の機能構成部を実現するプログラムモジュールを記憶している。プロセッサ1040は、これら各プログラムモジュールをメモリ1060に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
<検索処理装置3000のハードウエア構成>
検索処理装置3000の各機能構成部は、履歴管理装置2000の各機能構成部と同様に、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。
図4は、検索処理装置3000を実現するための計算機5000を例示する図である。計算機5000は、計算機1000と同様に、任意の計算機である。計算機5000は、バス5020、プロセッサ5040、メモリ5060、ストレージデバイス5080、入出力インタフェース5100、及びネットワークインタフェース5120を有する。バス5020、プロセッサ5040、メモリ5060、ストレージデバイス5080、入出力インタフェース5100、及びネットワークインタフェース5120はそれぞれ、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120と同様である。
<記憶領域30について>
記憶領域30は、種々の記憶装置によって実現される。ここで、複数の記憶領域30が1つの記憶装置で実現されてもよい。また、1つの記憶領域30が複数の記憶装置で実現されてもよい。
例えば、各記憶領域30を実現する記憶装置の集合により、SAN(Storage Area Network)が構成される。計算機1000は、ネットワークインタフェース1120を介して、記憶領域30によって構成される SAN に接続される。同様に、計算機5000は、ネットワークインタフェース5120を介して、記憶領域30によって構成される SAN に接続される。こうすることで、ネットワークを介し、履歴管理装置2000及び検索処理装置3000の双方から各記憶領域30にアクセスすることができる。ただし、各記憶領域30は履歴管理装置2000及び検索処理装置3000の双方からアクセス可能に構成されていればよく、必ずしも上述した SAN を構成する必要はない。
<処理の流れ>
図5は、実施形態1の履歴管理装置2000によって実行される処理の流れを例示するフローチャートである。格納先決定部2020は、イベント履歴10を取得する(S102)。格納先決定部2020は、取得したイベント履歴10の内容に基づいて、そのイベント履歴10を記憶させる記憶領域30を決定する(S104)。格納処理部2040は、上記決定した記憶領域30にイベント履歴10を格納する(S106)。インデックス更新部2060は、上記決定した記憶領域30に対応するインデックス情報40を更新する(S108)。
図6は、実施形態1の検索処理装置3000によって実行される処理の流れを例示するフローチャートである。クエリ取得部3020は検索クエリ50を取得する(S202)。記憶領域特定部3040は、検索クエリ50が示す検索条件と、各インデックス情報40とを比較することで、検索条件に該当するイベント履歴10が記憶されている可能性がある記憶領域を特定する(S204)。検索処理部3060は、特定された記憶領域30を対象としてイベント履歴10の検索を行う(S206)。
<イベント履歴10について>
イベント履歴10は、過去の或る時点において対象システム上で(対象システムに含まれるマシン上で)発生したイベントに関する情報である。イベント履歴10は、イベントの発生時刻とイベントの内容とを対応づけて示す。
例えばイベント履歴10は、対象システム上で動作するプロセスの活動の履歴を表す。例えばプロセスの活動は、システムコール単位で記録される。或るプロセスが他のプロセスを客体として活動する場合、これらのプロセスは互いに同一の OS(Operating System)上で動作するものであってもよいし、互いに異なる OS 上で動作するものであってもよい。後者の例としては、例えば、ソケットインタフェースを利用することで、或るプロセスが他の OS 上で動作する別のプロセスと通信を行うことが考えられる。
イベント履歴10は、1つ以上の項目に関する情報を示す。ここで、例えばイベントは、主体、客体、活動内容、及び発生時刻という4つの要素を表す情報によって識別される。そこで例えば、イベント履歴10は、大別して、主体を表す主体情報、客体を表す客体情報、活動の内容を表す内容情報、及び発生時刻という4つの項目で構成される。
主体情報は、例えば、その主体の種別及び識別情報である。主体の種別は、例えば、プロセス又はソケットなどである。主体がプロセスである場合、主体情報には、そのプロセスを識別する情報が含まれる。以下、プロセスを識別する情報をプロセス識別情報と呼ぶ。具体的には、プロセス識別情報は、プロセスID(Identifier)を含む。ただし、複数のスレッドが動作するプロセスについてのプロセス識別情報は、プロセスIDに加え、スレッドIDをさらに含む。
また、プロセス識別情報は、プロセスの実行ファイルに関する情報をさらに含んでもよい。プロセスの実行ファイルに関する情報とは、例えば、実行ファイルの名称やパス、実行ファイルのハッシュ値、実行ファイルのデジタル署名、又は実行ファイルで実現されるアプリケーションの名称などである。
主体がソケットである場合、例えば主体情報には、ソケットに割り当てられた識別子が含まれる。
客体情報は、例えば、その客体の種別及び識別情報である。客体の種別は、例えば、プロセス、ファイル、又はソケットなどである。客体がプロセスである場合、客体情報にはそのプロセスのプロセス識別情報が含まれる。
客体がファイルである場合、客体情報には、そのファイルを識別する情報(以下、ファイル識別情報)が含まれる。ファイル識別情報は、例えばファイルの名称やパスなどである。また、客体がファイルである場合、客体情報には、そのファイルのハッシュ値や、ファイルシステムの識別子とファイルシステム上でのファイルを構成するディスクブロックの識別子(inode 番号やオブジェクトID)の組み合わせなどが含まれていてもよい。
客体がソケットである場合、例えば客体情報には、ソケットに割り当てられた識別子が含まれる。
内容情報は、例えば、種々ある活動内容に予め割り当てておく識別子である。例えば、「プロセスを起動する」、「プロセスを停止する」、「ファイルをオープンする」、「ファイルからデータを読み込む」、「ファイルにデータを書き込む」、「ソケットをオープンする」、「ソケットからデータを読み込む」、「ソケットにデータを書き込む」、及び「ソケットから別のソケットへデータを送信する」などといった活動の内容に、互いに異なる識別子を割り当てておく。なお、ソケットに対するアクセスは、そのソケットに対応づけられた他の装置へのアクセスを意味する。
システムコール単位でイベントが記録される場合、内容情報は、システムコールの識別情報を示してもよい。システムコールの識別情報は、例えば、システムコール名やシステムコール番号である。また、内容情報には、システムコールに与えた引数の内容(引数自体の値や、引数として与えたポインタが指し示すメモリ領域に格納されているデータ)など、システムコールがどのような条件下で実行されたかを表す情報がさらに示されてもよい。
図7は、イベント履歴10をテーブル形式で例示する図である。以下、図7のテーブルをイベントテーブル200と呼ぶ。イベントテーブル200の各レコードは、1つのイベント履歴10を表す。イベントテーブル200は、大別して、主体情報202、客体情報204、内容情報206、及び発生時刻207という4つの項目を含む。主体情報202は、プロセスID208、スレッドID209、及びパス210という3つの項目を含む。客体情報204は、種別212及び識別情報214という2つの項目を含む。発生時刻207は、イベントが発生した時刻を示す。
ここで、イベント履歴10は、対象システム上におけるプロセスの活動を記録することで生成される。プロセスの活動を記録する技術には、既存の技術を利用することができる。
ここで、図7の例では、イベント履歴10が1つのテーブルで表されている。しかし、イベント履歴10の内容は、複数のテーブルに分散して格納されてもよい。図8は、イベント履歴10の内容が複数のテーブルに分散して格納されるケースを例示する図である。ここでは説明を簡単にするため、客体の種類を、プロセスとファイルの2つにしている。
まず、イベント履歴10を表すイベントテーブルが、客体の種類ごとに設けられている。すなわち、客体がプロセスであるイベント履歴10を表すイベントテーブルと、客体がファイルであるイベント履歴10を表すイベントテーブルの2つが用意されている。さらに、プロセスに関する情報をまとめたテーブル(以下、プロセステーブル)と、ファイルに関する情報をまとめたテーブル(以下、ファイルテーブル)がそれぞれ用意されている。イベントテーブルは、プロセステーブルとファイルテーブルを参照する。
新しいイベント履歴10をイベントテーブルに格納する際、そのイベント履歴10が示すプロセスに関する情報が既にプロセステーブルに格納されている場合、そのプロセスに関する情報を示すプロセステーブルのレコードを、イベントテーブルから参照するように設定する。一方、イベント履歴10が示すプロセスに関する情報がプロセステーブルに格納されていない場合、そのプロセスに関するレコードをプロセステーブルに追加した上で、そのレコードをイベントテーブルから参照するように設定する。ファイルについても同様にする。
<イベント履歴10の取得:S102>
格納先決定部2020は、処理対象とするイベント履歴10を取得する(S102)。格納先決定部2020がイベント履歴10を取得する方法は様々である。例えば格納先決定部2020は、イベント履歴10を生成した装置によって送信されたイベント履歴10を受信することで、イベント履歴10を取得する。その他にも例えば、格納先決定部2020は、イベント履歴10が記憶されている記憶装置にアクセスすることで、イベント履歴10を取得する。例えばこの記憶装置は、生成されたイベント履歴10を、記憶領域30に記憶させる前に一時的に保存しておくために利用される。そして、履歴管理装置2000がこの記憶装置から取得したイベント履歴10を記憶領域30に格納することにより、効率的に検索できる態様で、イベント履歴10が管理されるようになる。
<記憶領域30の決定:S104>
格納先決定部2020は、取得したイベント履歴10の内容に基づいて、そのイベント履歴10を記憶させる記憶領域30を決定する(S104)。複数の記憶領域30は、イベント履歴10の内容に関する条件でグループ分けされる。各グループに含まれる記憶領域30は、1つであってもよいし、複数であってもよい。また、1つの記憶領域30は、1つのグループのみに含まれてもよいし、複数のグループに含まれてもよい。
このようにイベント履歴10の内容に基づいてイベント履歴10の先を決めることにより、同様の内容のイベント履歴10が同じ記憶領域30に記憶されるようになる。そのため、イベント履歴10の検索の際に、その検索範囲を効率的に絞り込めるようになる。
記憶領域30のグループを表す情報は、履歴管理装置2000及び検索処理装置3000の双方からアクセス可能な記憶装置に記憶させておく。この情報を、グループ情報と呼ぶ。グループ情報は、イベント履歴10の内容に関する条件と、その条件に該当するイベント履歴10を記憶させる記憶領域30とを対応づけた情報である。
格納先決定部2020は、グループ情報に示される条件の中から、取得したイベント履歴10が合致する条件を特定する。そして、格納先決定部2020は、特定した条件に対応づけられている記憶領域30を、そのイベント履歴10を記憶させる記憶領域として決定する。
ここで、記憶領域30のグループ分けに利用する条件には、様々なものを採用できる。以下、この条件についていくつか例示する。
<<イベントの発生時刻>>
例えば複数の記憶領域30は、その中に記憶されるイベント履歴10が示すイベントの発生時刻を条件としてグループ分けされる。この場合、グループ情報は、条件として、時間の範囲(期間)を示す。すなわち、グループ情報は、期間と記憶領域30との対応付けを示す。或る期間に対応づけられている記憶領域30には、その期間に含まれる発生時刻を示すイベント履歴10が格納される。
図9は、イベントの発生時刻を条件として示すグループ情報を例示する図である。図9に示すテーブルをテーブル300と呼ぶ。テーブル300は、レコードID302、条件304、及び記憶領域ID306を互いに対応づけている。例えば1行目のレコードは、期間 P1 に対して S1, S2, 及び S3 という記憶領域30が対応づけられていることを示している。
格納先決定部2020は、グループ情報に示される複数の期間の中から、取得したイベント履歴10によって示される発生時刻が含まれる期間を特定する。そして、格納先決定部2020は、特定した期間に対応づけられている記憶領域30を、イベント履歴10を記憶させる記憶領域として決定する。
イベントの発生には時間的な偏りがあることが多い。例えば、攻撃手法のトレンドは時間的に変遷することが多いため、攻撃に関するイベントは期間ごとに異なった特徴を持つことが多い。また、攻撃活動には時間的な波があることが多いため、攻撃に関するイベントの発生は特定の期間に集中することが多い。
このようにイベントの発生が時間的に偏りやすいことから、期間ごとにイベント履歴10を格納する記憶領域30を分けることで、イベント履歴10の検索範囲を効率的に絞り込めるようになる。
<<ユーザグループ>>
例えば記憶領域30は、その中に記憶されるイベント履歴10が示す主体又は客体に関連するユーザグループを条件としてグループ分けされる。この場合、グループ情報は、条件として、ユーザグループを示す。すなわち、グループ情報は、ユーザグループと記憶領域30との対応付けを示す。或るユーザグループに対応づけられている記憶領域30には、そのユーザグループを主体又は客体に関するユーザグループとして示すイベント履歴10が格納される。
図10は、ユーザグループを条件として示すグループ情報を例示する図である。図10に示すテーブルをテーブル400と呼ぶ。テーブル400は、レコードID402、条件404、及び記憶領域ID406を互いに対応づけている。例えば1行目のレコードは、ユーザグループ U1 に対して S1, S2, 及び S3 という記憶領域30が対応づけられていることを示している。
格納先決定部2020は、グループ情報に示される複数のユーザグループの中から、取得したイベント履歴10が示す主体又は客体に関するユーザグループに合致するものを特定する。そして、格納先決定部2020は、グループ情報において特定したユーザグループに対応づけられている記憶領域30を、イベント履歴10を記憶させる記憶領域として決定する。
このようにユーザグループを条件として利用する場合、イベント履歴10の主体情報や客体情報にユーザグループに関する情報を含めるようにする。なお、主体に関するユーザグループと客体に関するユーザグループのどちらを条件として利用するかは、予め設定しておく。
ここで、主体に関するユーザグループとは、例えば、イベント履歴10が示すイベントの主体のプロセスを実行しているユーザが属しているユーザグループである。
また、客体に関するユーザグループには、例えば以下に示すものが挙げられる。イベント履歴10が示すイベントの客体がプロセスである場合、客体に関するユーザグループとは、例えば、そのプロセスを実行しているユーザが属しているユーザグループである。イベント履歴10が示すイベントの客体がファイルである場合、客体に関するユーザグループとは、例えば、そのファイルの所有者が属しているユーザグループである。イベント履歴10が示すイベントの客体がマシンである場合、客体に関するユーザグループとは、例えば、そのマシンの所有者が属しているユーザグループである。
イベントの発生は、組織の部門などといったユーザのグループについて偏りがあることが多い。例えば攻撃の対象は、或る特定のユーザグループに集中することが多い。例えば、ユーザグループで共通するアカウント、ユーザグループ内のファイルサーバや Web サーバなどが集中して攻撃の対象となることがある。また、コンピュータシステムの運用ポリシーがユーザグループごとに異なる場合、或るユーザグループの運用ポリシーに問題があると、そのユーザグループに攻撃が集中することがある。また、ユーザグループがセキュリティの境界(ファイヤウォールなど)となっていると、或るユーザグループ内で発生した攻撃がそのユーザグループ内に閉じ込められる(例えば、マルウェア感染がそのユーザグループ内のみで発生する)ため、そのユーザグループに攻撃が集中することになる。
このようにイベントの発生がユーザグループごとに偏りやすいことから、ユーザグループごとにイベント履歴10を格納する記憶領域30を分けることで、イベント履歴10の検索範囲を効率的に絞り込めるようになる。
<<オペレーティングシステム>>
例えば記憶領域30は、その中に記憶されるイベント履歴10が示す主体又は客体に関連する OS(Operating System)の種類という基準でグループ分けされる。この場合、グループ情報は、条件として OS の種類を示す。すなわち、グループ情報は、OS の種類と記憶領域30との対応付けを示す。或る OS 種類に対応づけられている記憶領域30には、その OS の種類を主体又は客体に関する OS の種類として示すイベント履歴10が格納される。
図11は、OS の種類を条件として示すグループ情報を例示する図である。図11に示すテーブルをテーブル500と呼ぶ。テーブル500は、レコードID502、条件504、及び記憶領域ID506を互いに対応づけている。例えば1行目のレコードは、「名称が OS1 でバージョンが v1 」という OS の種類に対して、S1, S2, 及び S3 という記憶領域30が対応づけられていることを示している。
このように OS の種類を条件として利用する場合、イベント履歴10の主体情報や客体情報に、OS の種類に関する情報を含めるようにする。なお、主体に関する OS の種類と客体に関する OS の種類のどちらを条件として利用するかは、予め設定しておく。
主体に関する OS の種類とは、例えば、イベント履歴10が示すイベントの主体のプロセスを実行している OS の種類である。イベント履歴10が示す客体がプロセスである場合、客体に関する OS の種類とは、例えばそのプロセスを実行している OS の種類である。イベント履歴10が示す客体がマシンである場合、客体に関する OS の種類とは、例えばそのマシンで動作している OS 種類である。
OS の種類は、例えば、Windows、Mac OS、Android といった OS の名称で区別される。また、これら OS の名称に加え、バージョン番号やディストリビューションごとにさらに細かく OS の種類が区別されてもよい。前述の図11では、OS の名称とバージョン番号の組み合わせで、OS の種類が表されている。
イベントの発生は、OS の種類について偏りがあることが多い。例えば攻撃は、脆弱性が発見された種類の OS に対して集中して行われることが多い。また、通常、プログラムの実行ファイルは OS の種類ごとに異なるため、或る特定の種類の OS 用に攻撃ツールが作られた場合、その攻撃ツールによる攻撃は、その種類の OS に対して集中して行われる。
このようにイベントの発生が OS の種類ごとに偏りやすいことから、OS の種類ごとにイベント履歴10を格納する記憶領域30を分けることで、イベント履歴10の検索範囲を効率的に絞り込めるようになる。
<<複数の基準の組み合わせ>>
記憶領域30は、上述した種々の条件の組み合わせでグループ分けされてもよい。例えば、期間、ユーザグループ、及び OS の種類という3つの条件の組み合わせに対して、記憶領域30を対応づけるようにする。
図12は、複数の条件の組み合わせに対して記憶領域30が対応づけられるケースを例示する図である。図12において、記憶領域30は、まず期間でグループ分けされている。次に、期間でグループ分けされた記憶領域30が、ユーザグループでグループ分けされている。そして、期間及び部門でグループ分けされた記憶領域30が、OS の種類でグループ分けされている。これにより、「期間、部門、OS の種類」という3つの条件の組み合わせに対して、記憶領域30が対応付けられている。
<記憶領域30への格納:S106>
格納処理部2040は、格納先決定部2020によって決定された記憶領域30にイベント履歴10を格納する(S106)。ここで、特定の記憶領域30にデータを格納する技術には、既存の技術を利用することができる。なお、図8で例示したようにイベント履歴10に示される情報が複数のテーブルに分散して格納される場合、格納処理部2040は、複数のテーブルそれぞれについて、イベント履歴10が示す情報に対応するレコードを生成し、生成したレコードを、格納先決定部2020によって決定された記憶領域30に格納する。すなわち、イベントテーブルのレコード及びイベントテーブルから参照する他のテーブルのレコードがいずれも、格納先決定部2020によって決定された記憶領域30に格納される。
なお、グループ情報において、条件に対して複数の記憶領域30が対応づけられていることもある(図9の1行目のレコードなど)。この場合、例えば格納処理部2040は、グループ情報を用いて決定された複数の記憶領域30の中から1つを選択し、選択した記憶領域30にイベント履歴10を格納する。ここで、複数の記憶領域30の中から1つの記憶領域30を選択する基準は任意である。例えば格納処理部2040は、空き容量が最も少ない記憶領域30を選択する。こうすることで、使用する記憶領域30の数をできる限り少なくできる。その他にも例えば、格納処理部2040は、空き容量が最も多い記憶領域30を選択してもよい。こうすることで、記憶領域30に対するアクセスを分散させることができる。
また、イベント履歴10の冗長性を高めるため、格納処理部2040は、グループ情報を用いて決定された複数の記憶領域30のうちのいずれか2つ以上にイベント履歴10を複数格納してもよい。なお、データの冗長性を高めるための技術には、RAID などの既存の技術を利用することができる。
<インデックス情報40の更新:S108>
インデックス更新部2060は、格納先決定部2020によって決定された記憶領域30に対応するインデックス情報40を更新する(S108)。ここで、記憶領域30とインデックス情報40との対応づけは、予め定めておく。例えば前述したグループ情報において、条件、記憶領域30、及びインデックス情報40の組み合わせを示すようにする。これにより、グループ情報において同一の条件に対応づけられている1つ以上の記憶領域30に対し、1つのインデックス情報40が用いられる。インデックス情報40は、例えば、グループ情報を生成した際に生成及び初期化しておく。
記憶領域30に対応するインデックス情報40は、或るイベント履歴10がその記憶領域30に記憶されているか否かを示す情報である。また、1つのインデックス情報40は、イベント履歴10の1つ以上の項目に対応づけられる。ここで、インデックス情報40が対応づけられているイベント履歴10の項目を、インデックス項目と呼ぶ。例えば、インデックス項目として、主体のプロセスの実行ファイル名を用いるとする。この場合、或るイベント履歴10が記憶されている記憶領域30は、そのイベント履歴10が示す主体のプロセスの実行ファイル名とインデックス情報とを用いて把握することができる。
インデックス情報40の具体的なデータ構造としては、例えば、ブルームフィルタを採用することができる。ブルームフィルタは、所定長のビット列で構成される。また、ブルームフィルタを操作するために、1つ以上の関数(例えばハッシュ関数)が予め用意される。各操作関数は、入力されたデータを、ブルームフィルタに含まれるいずれか1つ以上のビットにマッピングする。すなわち、操作関数にデータを入力すると、ブルームフィルタ内のビットの位置が1つ以上出力される。なお、ブルームフィルタのサイズ(ビット数)や操作関数の数は、任意に定めることができる。
ブルームフィルタは、フォールスネガティブは必ず発生せず、フォールスポジティブの発生確率も小さい。よって、「フォールスネガティブは許容しないがフォールスポジティブは許容する」という条件を満たすため、履歴管理装置2000が利用するインデックス情報40に好適なデータ構造である。
インデックス情報40としてブルームフィルタを用いる場合、インデックス更新部2060は、格納処理部2040によって処理されたイベント履歴10が示すインデックス項目の値を、上述した操作関数に入力する。そして、インデックス更新部2060は、格納処理部2040がイベント履歴10を記憶させた記憶領域30に対応するブルームフィルタについて、操作関数から得られた1つ以上のビットの値を、対応する記憶領域30にイベント履歴10が記憶されていることを表す値(例えば、1)に変更する。
図13は、ブルームフィルタで実現されるインデックス情報40の更新方法を例示する図である。例えば図13では、操作関数 h1 から h3 という3つの操作関数が利用されている。格納処理部2040がイベント履歴10を記憶領域30に記憶させたら、インデックス更新部2060は、そのイベント履歴10が示すインデックス項目の値を、前述した各操作関数に入力する。これにより、各操作関数から、1つ以上のビットの位置が出力される。
例えば図13において、インデックス項目は主体のプロセスの実行ファイル名である。そのため、インデックス更新部2060は、イベント履歴10が示す主体のプロセスの実行ファイル名を、操作関数 h1 から h3 それぞれに入力する。操作関数 h1 から h3 は、入力に応じて、それぞれ位置 p1 から p3 を出力する。
インデックス更新部2060は、ブルームフィルタにおいて、各操作関数によって出力された各位置のビットを1にする。例えば図13では、位置 p1 から p3 という3箇所のビットの値が1に変更される。なお、ブルームフィルタの生成時には、全てのビットの値を0に初期化しておく。
以上の操作により、イベント履歴10を記憶領域30に記憶させた際に、その記憶領域30に対応するブルームフィルタ(インデックス情報40)において、そのイベント履歴10のインデックス項目が示す値に対応する各ビットが1になる。これによりインデックス項目を条件として検索した場合に、検索条件を満たすイベント履歴10が記憶されている記憶領域30を高速に絞り込むことができる。よって、イベント履歴10を効率的に検索できるようになる。なお、ブルームフィルタを利用した検索方法の具体例については後述する。
なお、インデックス情報40は、ブルームフィルタ以外のデータ構造で構成されてもよい。インデックス情報40を構成するデータ構造には、既存のデータベース管理システムなどにおいてインデックスに利用されている種々のデータ構造を利用することができる。
インデックス情報40は、記憶領域30ごとに複数用意されてもよい。この場合、記憶領域30ごとに、インデックス項目がそれぞれ異なる複数のインデックス情報40が用意される。図14は、記憶領域30ごとに複数のインデックス情報40が用意されるケースを例示する図である。この例では、記憶領域30ごとに、主体のプロセスの実行ファイル名をインデックス項目とするブルームフィルタと、客体のファイル名をインデックス項目とするブルームフィルタが用意されている。
インデックス更新部2060は、イベント履歴10が示す主体のプロセスの実行ファイル名を操作関数に入力し、その結果を用いて、イベント履歴10が格納された記憶領域30に対応するブルームフィルタのうち、主体のプロセスの実行ファイル名をインデックス項目とするものを更新する。また、インデックス更新部2060は、イベント履歴10が示す客体のファイル名を操作関数に入力し、その結果を用いて、イベント履歴10が格納された記憶領域30に対応するブルームフィルタのうち、客体のファイル名をインデックス項目とするものを更新する。なお、インデックス項目がそれぞれ異なる複数のインデックス情報40において、操作関数は共通であってもよいし、異なっていてもよい。後者の場合、図14の例でいえば、2つのブルームフィルタの更新に、それぞれ異なる操作関数の組みが用いられる。
1つのインデックス項目は、イベント履歴10に含まれる複数の項目の組みに対応してもよい。この場合、インデックス項目に対応する複数の項目の組み(例えば、各項目の値を連結した文字列)を操作関数に入力して得られる結果を用いて、インデックス情報40の更新が行われる。図15は、インデックス項目がイベント履歴10に含まれる複数の項目の組みに対応するケースを例示する図である。この例では、1つのインデックス項目が、主体のプロセスの実行ファイル名と客体のファイル名の組みで定められている。そのため、記憶領域30ごとに、主体のプロセスの実行ファイル名と客体のファイル名の組みをインデックス項目とする1つのブルームフィルタが用意されている。インデックス更新部2060は、イベント履歴10が示す主体のプロセスの実行ファイル名と客体のファイル名を連結した文字列を操作関数に入力し、その結果を用いて、ブルームフィルタを更新する。
インデックス項目として採用するイベント履歴10の項目は、検索の条件として頻繁に指定される項目とすることが好適である。例えば、マルウエアが実行されていないかどうかを把握するために、イベント履歴10の検索が頻繁に行われるとする。この場合、主体のプロセスの実行ファイル名を条件とした検索が頻繁に行われると考えられる。そのため、インデックス項目として主体のプロセスの実行ファイル名を採用することが好適である。
<検索クエリ50の取得:S202>
検索処理装置3000では、まずクエリ取得部3020が、検索クエリ50を取得する(S202)。検索クエリ50は、検索したいイベント履歴10に関する条件である検索条件を示す。検索条件は、検索したいイベント履歴10の特徴を表しているとも言える。
例えば検索条件は、イベント履歴10に含まれる項目の値に関する条件である。例えば、「主体のプロセスの実行ファイル=xyz.exe」や「客体のファイル名=abc.docx」などといった検索条件が考えられる。
<検索クエリ50に対応する記憶領域30の特定:S204>
記憶領域特定部3040は、検索クエリ50によって示される検索条件を満たすイベント履歴10が記憶されている可能性がある記憶領域30を特定する。そのために、記憶領域特定部3040は、検索クエリ50によって示される検索条件とインデックス情報40とを比較することで、インデックス情報40が、対応する記憶領域30に検索条件を満たすイベント履歴10が記憶されていることを表しているか否かを判定する。インデックス情報40が、対応する記憶領域30に検索条件を満たすイベント履歴10が記憶されていることを表す場合、記憶領域特定部3040は、そのインデックス情報40に対応する記憶領域30を、検索条件を満たすイベント履歴10が記憶されている可能性がある記憶領域30として特定する。一方、インデックス情報40が、対応する記憶領域30に検索条件を満たすイベント履歴10が記憶されていないことを表す場合、記憶領域特定部3040は、そのインデックス情報40に対応する記憶領域30を、検索条件を満たすイベント履歴10が記憶されていない記憶領域30として特定する。
例えば、インデックス情報40がブルームフィルタで実現されているとする。この場合、記憶領域特定部3040は、検索条件で指定されているインデックス項目の値をブルームフィルタの操作関数に入力することで、1つ以上のビット位置を得る。そして、記憶領域特定部3040は、各記憶領域30に対応するブルームフィルタについて、得られたビット位置が1であるか否か(対応する記憶領域30に検索条件を満たすイベント履歴10が記憶されていることを表す値であるか否か)を判定する。記憶領域特定部3040は、得られたビット位置がいずれも1であるブルームフィルタに対応する記憶領域30を、検索条件を満たすイベント履歴10を記憶している可能性がある記憶領域30として特定する。一方、記憶領域特定部3040は、得られたビット位置のいずれかが0であるブルームフィルタに対応する記憶領域30を、検索条件を満たすイベント履歴10が記憶されていない記憶領域30として特定する。
図16は、ブルームフィルタで構成されるインデックス情報40を利用した検索を例示する図である。この例において、インデックス項目は、主体のプロセスの実行ファイル名である。記憶領域特定部3040は、検索クエリ50で指定されている主体のプロセスの実行ファイル名を、操作関数 h1 から h3 に入力する。これにより、これらの操作関数からそれぞれ、位置 q1 から q3 が出力される。記憶領域特定部3040は、複数のブルームフィルタそれぞれについて、位置 q1 から q3 の値がいずれも1となっているか否かを判定する。
記憶領域特定部3040は、位置 q1 から q3 の値がいずれも1であるブルームフィルタに対応する記憶領域30を、検索条件を満たすイベント履歴10が記憶されている可能性がある記憶領域30として特定する。一方で、記憶領域特定部3040は、位置 q1 から q3 の値のいずれかが1でないと判定されたブルームフィルタに対応する記憶領域30を、検索条件を満たすイベント履歴10が記憶されていない記憶領域30として特定する。
前述したように、インデックス情報40はフォールスネガティブを許容しない。そのため、インデックス情報40を利用することで、少なくとも、検索条件を満たすイベント履歴10を記憶していないことが確実である記憶領域30を特定し、その記憶領域30をイベント履歴10の検索対象から除外することができる。よって、イベント履歴10の検索に要する時間を短くすることができる。
ここで、インデックス項目が複数であるとする。すなわち、1つの記憶領域30に対して複数のインデックス情報40が設けられているとする。この場合、記憶領域特定部3040は、各記憶領域30についてこれら複数のインデックス情報40を利用することで、各記憶領域30に検索条件を満たすイベント履歴10が記憶されているか否かを判定する。例えば、インデックス情報40がブルームフィルタで実現されているとする。この場合、各インデックス項目について、検索条件において指定されているそのインデックス項目の値を、ブルームフィルタの操作関数に入力する。こうすることで、インデックス項目ごとに、検索条件に対応するビットの位置が出力される。
記憶領域特定部3040は、対応する全てのブルームフィルタにおいて、操作関数から得られたビットの位置が全て1となっている記憶領域30を、検索条件を満たすイベント履歴10が記憶されている可能性がある記憶領域30として特定する。一方、対応するいずれかのブルームフィルタにおいて、操作関数から得られたいずれかのビットの位置が0である記憶領域30を、検索条件を満たすイベント履歴10が記憶されていない記憶領域30として特定する。
図17は、複数のインデックス項目が存在するケースにおける検索について例示する図である。図17の例では、主体のプロセスの実行ファイル名というインデックス項目と、客体のファイル名というインデックス項目がある。記憶領域特定部3040は、検索条件において指定されている主体のプロセスの実行ファイル名を操作関数に入力することで、主体のプロセスの実行ファイル名に対応するブルームフィルタについて、ビットの位置 q1 から q3 を取得する。同様に、記憶領域特定部3040は、検索条件において指定されている客体のファイル名を操作関数に入力することで、客体のファイル名に対応するブルームフィルタについて、ビットの位置 q4 から q6 を取得する。
記憶領域特定部3040は、主体のプロセスの実行ファイル名に対応するブルームフィルタについて、位置 q1 から q3 のビットがいずれも1であるか否かを判定する。同様に、記憶領域特定部3040は、客体のファイル名に対応するブルームフィルタについて、位置 q4 から q6 のビットがいずれも1であるか否かを判定する。主体のプロセスの実行ファイル名に対応するブルームフィルタにおいて位置 q1 から q3 のビットがいずれも1であり、なおかつ客体のファイル名に対応するブルームフィルタにおいて位置 q4 から q6 のビットがいずれも1であれば、これらのブルームフィルタに対応する記憶領域30において、検索条件を満たすイベント履歴10が記憶されている可能性があることが分かる。一方、主体のプロセスの実行ファイル名に対応するブルームフィルタにおいて位置 q1 から q3 のビットのいずれかが0であるか、又は客体のファイル名に対応するブルームフィルタにおいて位置 q4 から q6 のビットのいずれかが0であれば、これらのブルームフィルタに対応する記憶領域30において、検索条件を満たすイベント履歴10が記憶されていないことが分かる。
なお、インデックス情報40を利用する場合、検索条件で指定されるイベント履歴10の項目の中に、前述したインデックス項目に対応する項目が含まれている必要がある。例えば図13に示したように主体のプロセスの実行ファイル名をインデックス項目とする場合、検索クエリ50が示す検索条件で、主体のプロセスの実行ファイル名が指定されている必要がある。インデックス項目に関する条件が検索条件に含まれない場合、例えば検索処理装置3000は、インデックス情報40を利用せず、全ての記憶領域30を対象として検索を実行する。
<検索の実行:S206>
検索処理部3060は、記憶領域特定部3040によって特定された記憶領域30を対象として、イベント履歴10の検索を実行する。具体的には、検索処理部3060は、特定されたインデックス情報40に対応する記憶領域30の中から、検索条件を満たすイベント履歴10を探索する。そして、記憶領域30の中に検索条件を満たすイベント履歴10が記憶されていたら、検索処理部3060は、そのイベント履歴10を取得する。なお、特定の記憶領域の中から検索条件を満たすデータを探索する技術には、既存の技術を利用することができる。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
1. プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、前記取得したイベント履歴の内容に基づき、複数の記憶領域の中から、前記イベント履歴を記憶させる記憶領域を決定する格納先決定部と、
前記決定した記憶領域に前記取得したイベント履歴を格納する格納処理部と、
前記取得したイベント履歴が前記決定された記憶領域に記憶されていることを表すように、前記決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新部と、を有する履歴管理装置。
2. 前記格納先決定部は、前記イベント履歴の内容に関する条件と、その条件に該当する前記イベント履歴を記憶させる1つ以上の前記記憶領域とを対応づけたグループ情報を取得し、前記グループ情報に示されている記憶領域のうち、前記取得したイベント履歴が合致する条件に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域として決定する、1.に記載の履歴管理装置。
3. 前記グループ情報が示す前記条件は、イベントの発生時刻が含まれる期間を示しており、
前記格納先決定部は、前記グループ情報において前記取得したイベント履歴が示すイベントの発生時刻を含む期間に対応づけられている前記記憶領域を、そのイベント履歴を記憶させる記憶領域に決定する、2.に記載の履歴管理装置。
4. 前記グループ情報が示す前記条件は、イベントの主体又は客体に関するユーザグループを示しており、
前記格納先決定部は、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する、2.に記載の履歴管理装置。
5. 前記グループ情報が示す前記条件は、イベントの主体又は客体に関する OS(Operating System)の種類を示しており、
前記格納先決定部は、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関する OS の種類に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する、2.に記載の履歴管理装置。
6. 前記インデックス情報はブルームフィルタを含み、
前記インデックス更新部は、
前記取得したイベント履歴に含まれる情報を1つ以上の関数に入力し、
前記格納先決定部によって決定された記憶領域に対応する前記インデックス情報に含まれる前記ブルームフィルタにおいて、前記関数から出力された値によって定まるビットの値を、前記取得したイベント履歴が記憶されていることを示す値に更新する、1.乃至5.いずれか一つに記載の履歴管理装置。
7. プログラムの活動に関連するイベントの履歴であるイベント履歴の検索条件を示す検索クエリを取得するクエリ取得部と、
前記取得した検索クエリが示す検索条件を、各記憶領域に対応するインデックス情報と比較することで、前記検索条件に該当するイベント履歴が記憶されている可能性がある記憶領域を特定する記憶領域特定部と、
前記特定された記憶領域を対象として、前記検索条件に該当する前記イベント履歴を検索する検索処理部と、を有する検索処理装置。
8. 前記インデックス情報はブルームフィルタを含み、
前記記憶領域特定部は、
前記検索条件によって指定される前記イベント履歴に関する情報を1つ以上の関数に入力し、
前記関数から出力された値によって定まるビットの値がいずれも、前記検索条件によって指定される前記イベント履歴が対応する記憶領域に記憶されていることを示す値である前記ブルームフィルタに対応する記憶領域を、前記検索条件に該当するイベント履歴が記憶されている可能性がある記憶領域として特定する、7.に記載の検索処理装置。
9. コンピュータによって実行される履歴管理方法であって、
プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、前記取得したイベント履歴の内容に基づき、複数の記憶領域の中から、前記イベント履歴を記憶させる記憶領域を決定する格納先決定ステップと、
前記決定した記憶領域に前記取得したイベント履歴を格納する格納処理ステップと、
前記取得したイベント履歴が前記決定された記憶領域に記憶されていることを表すように、前記決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新ステップと、を有する履歴管理方法。
10. 前記格納先決定ステップにおいて、前記イベント履歴の内容に関する条件と、その条件に該当する前記イベント履歴を記憶させる1つ以上の前記記憶領域とを対応づけたグループ情報を取得し、前記グループ情報に示されている記憶領域のうち、前記取得したイベント履歴が合致する条件に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域として決定する、9.に記載の履歴管理方法。
11. 前記グループ情報が示す前記条件は、イベントの発生時刻が含まれる期間を示しており、
前記格納先決定ステップにおいて、前記グループ情報において前記取得したイベント履歴が示すイベントの発生時刻を含む期間に対応づけられている前記記憶領域を、そのイベント履歴を記憶させる記憶領域に決定する、10.に記載の履歴管理方法。
12. 前記グループ情報が示す前記条件は、イベントの主体又は客体に関するユーザグループを示しており、
前記格納先決定ステップにおいて、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する、10.に記載の履歴管理方法。
13. 前記グループ情報が示す前記条件は、イベントの主体又は客体に関する OS(Operating System)の種類を示しており、
前記格納先決定ステップにおいて、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関する OS の種類に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する、10.に記載の履歴管理方法。
14. 前記インデックス情報はブルームフィルタを含み、
前記インデックス更新ステップにおいて、
前記取得したイベント履歴に含まれる情報を1つ以上の関数に入力し、
前記格納先決定ステップによって決定された記憶領域に対応する前記インデックス情報に含まれる前記ブルームフィルタにおいて、前記関数から出力された値によって定まるビットの値を、前記取得したイベント履歴が記憶されていることを示す値に更新する、9.乃至13.いずれか一つに記載の履歴管理方法。
15. コンピュータによって実行される検索処理方法であって、
プログラムの活動に関連するイベントの履歴であるイベント履歴の検索条件を示す検索クエリを取得するクエリ取得ステップと、
前記取得した検索クエリが示す検索条件を、各記憶領域に対応するインデックス情報と比較することで、前記検索条件に該当するイベント履歴が記憶されている可能性がある記憶領域を特定する記憶領域特定ステップと、
前記特定された記憶領域を対象として、前記検索条件に該当する前記イベント履歴を検索する検索処理ステップと、を有する検索処理方法。
16. 前記インデックス情報はブルームフィルタを含み、
前記記憶領域特定ステップにおいて、
前記検索条件によって指定される前記イベント履歴に関する情報を1つ以上の関数に入力し、
前記関数から出力された値によって定まるビットの値がいずれも、前記検索条件によって指定される前記イベント履歴が対応する記憶領域に記憶されていることを示す値である前記ブルームフィルタに対応する記憶領域を、前記検索条件に該当するイベント履歴が記憶されている可能性がある記憶領域として特定する、15.に記載の検索処理方法。
17. 9.乃至14.いずれか一つに記載の履歴管理方法が有する各ステップをコンピュータに実行させるプログラム。
18. 15.又は16.に記載の検索処理方法が有する各ステップをコンピュータに実行させるプログラム。

Claims (13)

  1. プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、前記取得したイベント履歴の内容に基づき、複数の記憶領域の中から、前記イベント履歴を記憶させる記憶領域を決定する格納先決定部と、
    前記決定した記憶領域に前記取得したイベント履歴を格納する格納処理部と、
    前記取得したイベント履歴が前記決定された記憶領域に記憶されていることを表すように、前記決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新部と、を有し、
    前記格納先決定部は、前記イベント履歴の内容に関する条件と、その条件に該当する前記イベント履歴を記憶させる1つ以上の前記記憶領域とを対応づけたグループ情報を取得し、前記グループ情報に示されている記憶領域のうち、前記取得したイベント履歴が合致する条件に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域として決定し、
    前記グループ情報が示す前記条件は、イベントの主体又は客体に関するユーザグループを示しており、
    前記格納先決定部は、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する履歴管理装置。
  2. 前記主体がプロセスである場合の前記主体に関するユーザグループは、前記取得したイベント履歴が示すイベントの主体であるプロセスを実行しているユーザが属しているユーザグループである
    請求項1に記載の履歴管理装置。
  3. 前記客体がプロセスである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるプロセスを実行しているユーザが属しているユーザグループである
    請求項1に記載の履歴管理装置。
  4. 前記客体がファイルである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるファイルの所有者が属しているユーザグループである
    請求項1に記載の履歴管理装置。
  5. 前記客体がマシンである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるマシンの所有者が属しているユーザグループである
    請求項1に記載の履歴管理装置。
  6. 前記インデックス情報はブルームフィルタを含み、
    前記インデックス更新部は、
    前記取得したイベント履歴に含まれる情報を1つ以上の関数に入力し、
    前記格納先決定部によって決定された記憶領域に対応する前記インデックス情報に含まれる前記ブルームフィルタにおいて、前記関数から出力された値によって定まるビットの値を、前記取得したイベント履歴が記憶されていることを示す値に更新する、請求項1乃至5いずれか一項に記載の履歴管理装置。
  7. コンピュータ実行る履歴管理方法であって、
    プログラムの活動に関連するイベントの履歴であるイベント履歴を取得し、前記取得したイベント履歴の内容に基づき、複数の記憶領域の中から、前記イベント履歴を記憶させる記憶領域を決定する格納先決定ステップと、
    前記決定した記憶領域に前記取得したイベント履歴を格納する格納処理ステップと、
    前記取得したイベント履歴が前記決定された記憶領域に記憶されていることを表すように、前記決定された記憶領域に対応づけられているインデックス情報を更新するインデックス更新ステップと、を有し、
    前記格納先決定ステップにおいて、前記イベント履歴の内容に関する条件と、その条件に該当する前記イベント履歴を記憶させる1つ以上の前記記憶領域とを対応づけたグループ情報を取得し、前記グループ情報に示されている記憶領域のうち、前記取得したイベント履歴が合致する条件に対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域として決定し、
    前記グループ情報が示す前記条件は、イベントの主体又は客体に関するユーザグループを示しており、
    前記格納先決定ステップにおいて、前記グループ情報において前記取得したイベント履歴が示すイベントの主体又は客体に関するユーザグループに対応づけられている前記記憶領域を、前記取得したイベント履歴を記憶させる記憶領域に決定する履歴管理方法。
  8. 前記主体がプロセスである場合の前記主体に関するユーザグループは、前記取得したイベント履歴が示すイベントの主体であるプロセスを実行しているユーザが属しているユーザグループである
    請求項7に記載の履歴管理方法。
  9. 前記客体がプロセスである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるプロセスを実行しているユーザが属しているユーザグループである
    請求項7に記載の履歴管理方法。
  10. 前記客体がファイルである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるファイルの所有者が属しているユーザグループである
    請求項7に記載の履歴管理方法。
  11. 前記客体がマシンである場合の前記客体に関するユーザグループは、前記取得したイベント履歴が示すイベントの客体であるマシンの所有者が属しているユーザグループである
    請求項7に記載の履歴管理方法。
  12. 前記インデックス情報はブルームフィルタを含み、
    前記インデックス更新ステップにおいて、
    前記取得したイベント履歴に含まれる情報を1つ以上の関数に入力し、
    前記格納先決定ステップによって決定された記憶領域に対応する前記インデックス情報に含まれる前記ブルームフィルタにおいて、前記関数から出力された値によって定まるビットの値を、前記取得したイベント履歴が記憶されていることを示す値に更新する、請求項乃至11いずれか一項に記載の履歴管理方法。
  13. 請求項乃至12いずれか一項に記載の履歴管理方法が有する各ステップをコンピュータに実行させるプログラム。
JP2020565111A 2019-01-10 2019-01-10 履歴管理装置、履歴管理方法及びプログラム Active JP7173165B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/000549 WO2020144816A1 (ja) 2019-01-10 2019-01-10 履歴管理装置、検索処理装置、履歴管理方法、検索処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2020144816A1 JPWO2020144816A1 (ja) 2020-07-16
JP7173165B2 true JP7173165B2 (ja) 2022-11-16

Family

ID=71521072

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020565111A Active JP7173165B2 (ja) 2019-01-10 2019-01-10 履歴管理装置、履歴管理方法及びプログラム

Country Status (2)

Country Link
JP (1) JP7173165B2 (ja)
WO (1) WO2020144816A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115964190B (zh) * 2022-12-07 2023-07-14 中科雨辰科技有限公司 一种更新历史事件信息的数据处理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259811A (ja) 2005-03-15 2006-09-28 Nec Corp ログ作成装置及びプログラム
JP2013012155A (ja) 2011-06-30 2013-01-17 Toshiba Corp 情報処理装置、クライアント管理方法及びクライアント管理システム
US20170228409A1 (en) 2016-02-08 2017-08-10 Red Hat, Inc. In-memory journaling

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61188644A (ja) * 1985-02-15 1986-08-22 Fujitsu Ltd ログアウト方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259811A (ja) 2005-03-15 2006-09-28 Nec Corp ログ作成装置及びプログラム
JP2013012155A (ja) 2011-06-30 2013-01-17 Toshiba Corp 情報処理装置、クライアント管理方法及びクライアント管理システム
US20170228409A1 (en) 2016-02-08 2017-08-10 Red Hat, Inc. In-memory journaling

Also Published As

Publication number Publication date
JPWO2020144816A1 (ja) 2020-07-16
WO2020144816A1 (ja) 2020-07-16

Similar Documents

Publication Publication Date Title
US11604782B2 (en) Systems and methods for scheduling concurrent summarization of indexed data
US20180285596A1 (en) System and method for managing sensitive data
US20020116364A1 (en) Database management program, a database managing method and an apparatus therefor
US11308106B1 (en) Caching results for sub-queries to different data store locations
CN111373390A (zh) 在结构化框架中存储非结构化数据
US11030196B2 (en) Method and apparatus for processing join query
JP6479186B2 (ja) 計算機システム及びデータベース管理方法
US10678784B2 (en) Dynamic column synopsis for analytical databases
US8489551B2 (en) Method for selecting a processor for query execution
US9483523B2 (en) Information processing apparatus, distributed processing system, and distributed processing method
US20230359627A1 (en) Sharing compiled code for executing queries across query engines
US7660790B1 (en) Method and apparatus for utilizing a file change log
US9208234B2 (en) Database row access control
US11294931B1 (en) Creating replicas from across storage groups of a time series database
US7703139B2 (en) Antivirus product using in-kernal cache of file state
US20220342888A1 (en) Object tagging
US9229969B2 (en) Management of searches in a database system
CN112306957A (zh) 获取索引节点号的方法、装置、计算设备和存储介质
JP7173165B2 (ja) 履歴管理装置、履歴管理方法及びプログラム
US20230153455A1 (en) Query-based database redaction
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
US10089308B1 (en) Method for using redundant data elimination to accelerate storage system scanning
US11922222B1 (en) Generating a modified component for a data intake and query system using an isolated execution environment image
US20150106884A1 (en) Memcached multi-tenancy offload
US20200143001A1 (en) Indexing structure with size bucket indexes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220826

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221017

R151 Written notification of patent or utility model registration

Ref document number: 7173165

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151