(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174424
(43)【公開日】2022-11-24
(54)【発明の名称】情報処理プログラム、情報処理方法及び情報処理装置
(51)【国際特許分類】
G06F 8/71 20180101AFI20221116BHJP
G06F 11/34 20060101ALI20221116BHJP
【FI】
G06F8/71
G06F11/34 176
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021080212
(22)【出願日】2021-05-11
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】及川 孝徳
(72)【発明者】
【氏名】森川 郁也
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042MA08
5B042MA14
5B042MC35
5B042MC40
5B376CA18
5B376CA42
(57)【要約】
【課題】アプリケーションの更新状況を効率良く管理することを課題とする。
【解決手段】管理装置10は、端末にインストールされているアプリケーションの実行ファイルのパスと、実行ファイルの実行日時と、実行日時に実行された実行ファイルのハッシュ値とを含むログを複数の端末から取得する。管理装置10は、複数の端末20
1~20
nそれぞれについて、ログに基づき、同一の実行ファイルのハッシュ値の時系列の遷移を特定し、複数の端末20
1~20
n間のハッシュ値の時系列の遷移に基づき、実行ファイルの改版対象を特定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータに、
端末にインストールされているアプリケーションの実行ファイルのパスと、前記実行ファイルの実行日時と、前記実行日時に実行された前記実行ファイルのハッシュ値とを含むログを複数の端末から取得する処理と、
前記複数の端末それぞれについて、前記ログに基づき、同一の前記実行ファイルのハッシュ値の時系列の遷移を特定し、前記複数の端末間の前記ハッシュ値の時系列の遷移に基づき、前記実行ファイルの改版対象を特定する処理
を実行させる情報処理プログラム。
【請求項2】
前記特定する処理は、
改変の対象外と指定された許容ハッシュ値および改変の対象と指定された不許可ハッシュ値に基づいて、前記実行ファイルの改版対象を特定する処理
を含む請求項1に記載の情報処理プログラム。
【請求項3】
前記特定する処理は、
前記ハッシュ値の時系列の変化を表す有向グラフを前記複数の端末毎に生成する処理と、
前記有向グラフに基づいて、前記実行ファイルの改版対象を特定する処理
を含む請求項2に記載の情報処理プログラム。
【請求項4】
前記特定する処理は、
前記複数の端末毎に生成された前記有向グラフを結合した結合有向グラフを生成し、前記結合有向グラフに基づいて、前記実行ファイルの改版対象を特定する処理
を含む請求項3に記載の情報処理プログラム。
【請求項5】
前記特定する処理は、
前記結合有向グラフの末端ノード以外のノードに含まれるハッシュ値の版を前記改版対象として特定する処理と、
前記改版対象の版の実行ファイルをインストールしている端末を、不許可版の実行ファイルをインストールしている端末として抽出する処理
を含む請求項4に記載の情報処理プログラム。
【請求項6】
前記特定する処理は、
前記結合有向グラフのノードに含まれる前記ハッシュ値の初回出現日時を特定する処理と、
前記初回出現日時が所定日時以降であるノードに含まれるハッシュ値の版を前記実行ファイルの許容版対象と特定し、前記初回出現日時が前記所定日時より前であるノードに含まれるハッシュ値の版を前記実行ファイルの改版対象として特定する処理
を含む請求項4に記載の情報処理プログラム。
【請求項7】
前記特定する処理は、
前記結合有向グラフの末端ノードから根ノードに向かって所定数のノードより前記根ノード側のノードに含まれるハッシュ値の版を前記実行ファイルの改版対象として特定する処理
を含む請求項4に記載の情報処理プログラム。
【請求項8】
前記特定する処理は、
時系列で後の版へ更新した前記端末の台数と、時系列で前の版へ戻した前記端末の台数とに基づいて、前記実行ファイルのロールバック版を特定する処理と、
前記ロールバック版を除いて前記実行ファイルの改版対象を特定する処理
を含む請求項1から請求項7のいずれか一項に記載の情報処理プログラム。
【請求項9】
前記特定する処理は、
前記複数の端末のうち前記改版対象の版の実行ファイルをインストールしている端末を特定する処理と、
特定した前記端末を一意に識別する情報を表示する処理
を含む請求項1から請求項8のいずれか一項に記載の情報処理プログラム。
【請求項10】
コンピュータが、
端末にインストールされているアプリケーションの実行ファイルのパスと、前記実行ファイルの実行日時と、前記実行日時に実行された前記実行ファイルのハッシュ値とを含むログを複数の端末から取得する処理と、
前記複数の端末それぞれについて、前記ログに基づき、同一の前記実行ファイルのハッシュ値の時系列の遷移を特定し、前記複数の端末間の前記ハッシュ値の時系列の遷移に基づき、前記実行ファイルの改版対象を特定する処理
を実行する情報処理方法。
【請求項11】
端末にインストールされているアプリケーションの実行ファイルのパスと、前記実行ファイルの実行日時と、前記実行日時に実行された前記実行ファイルのハッシュ値とを含むログを複数の端末から取得するログ取得部と、
前記複数の端末それぞれについて、前記ログに基づき、同一の前記実行ファイルのハッシュ値の時系列の遷移を特定し、前記複数の端末間の前記ハッシュ値の時系列の遷移に基づき、前記実行ファイルの改版対象を特定する版特定部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法及び情報処理装置に関する。
【背景技術】
【0002】
組織内の複数の端末にインストールされているアプリケーションの実行ファイルは、パッチや最新版が配布された場合、組織全体へ案内されて各端末で更新が行われる。しかしながら、案内されたパッチや最新版による更新が行われていない端末がある場合、アプリケーションの改善がなされていない状態が続くため、各端末における更新の状態を把握することが行われている。端末における実行ファイルの更新を把握する方法としては、ハッシュ値を用いる方法がある。ハッシュ値を用いる場合、例えば各端末のアプリケーションの実行ファイルのハッシュ値を取得し、取得したハッシュ値を適切な版のハッシュ値と比較することにより、端末で実行ファイルの更新が行われたか判断する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009-110061号公報
【特許文献2】特開2019-082816号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
組織内で稼働する複数の端末においては、管理者がインストールしたアプリケーションとは別のアプリケーションを端末の利用者が業務のためにインストールして使用する場合がある。このようなアプリケーションの実行ファイルについては、予め管理装置にて管理対象になっていない場合、管理装置でハッシュ値を取得することができず、版の管理を行うことができない。端末の利用者が業務のためにインストールしたアプリケーションを管理対象として登録するとしても、インストールするアプリケーションが多岐に渡る場合、登録が煩雑で手間がかかる。
【0005】
1つの側面では、アプリケーションの更新状況を効率良く管理できる情報処理プログラム、情報処理方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
第1の案では、情報処理プログラムは、コンピュータに次の処理を実行させる。情報処理プログラムは、端末にインストールされているアプリケーションの実行ファイルのパスと、実行ファイルの実行日時と、実行日時に実行された実行ファイルのハッシュ値とを含むログを複数の端末から取得する処理をコンピュータに実行させる。情報処理プログラムは、複数の端末それぞれについて、ログに基づき、同一の実行ファイルのハッシュ値の時系列の遷移を特定し、複数の端末間のハッシュ値の時系列の遷移に基づき、実行ファイルの改版対象を特定する処理をコンピュータに実行させる。
【発明の効果】
【0007】
一実施形態によれば、アプリケーションの更新状況を効率良く管理することができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態に係るアプリケーション管理システムの構成の一例を示す図である。
【
図2】
図2は、ログ記憶部が記憶するログの構成の一例を示す図である。
【
図3】
図3は、端末で実行された実行ファイルの版の遷移を示す有向グラフの一例を示す図である。
【
図4】
図4は、結合有向グラフの一例を示す図である。
【
図5】
図5は、ノード情報を説明するための図である。
【
図6】
図6は、エッジ情報を説明するための図である。
【
図7】
図7は、使用不許可の版の実行ファイルをインストールしている端末を特定する方法を説明するための図である。
【
図9】
図9は、使用不許可の版の実行ファイルをインストールしている端末を特定する方法を説明するための図である。
【
図10】
図10は、実行ファイルの複数の版を、使用を許可する版とする方法を説明するための図である。
【
図11】
図11は、ロールバックが行われた場合の結合有向グラフの一例を示す図である。
【
図12】
図12は、ロールバック後の実行ファイルのハッシュ値を含むノードを末端ノードとする方法を説明するための図である。
【
図13】
図13は、管理装置が実行する処理の流れを示すフローチャートである。
【
図14】
図14は、X版前のノードを判定する処理の流れを示すフローチャートである。
【
図15】
図15は、ロールバック版のノードを判定する処理の流れを示すフローチャートである。
【
図16】
図16は、管理装置のハードウェア構成を説明する図である。
【発明を実施するための形態】
【0009】
以下に、本願の開示する情報処理プログラム、情報処理方法及び情報処理装置の実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【0010】
[実施形態]
図1は、本発明の実施形態に係るアプリケーション管理システム1の構成の一例を示す図である。アプリケーション管理システム1は、管理装置10と、端末20
1、20
2、…20
n(nは3以上の自然数)と、を備える。管理装置10と端末20
1~20
nとはネットワークNWにより通信可能に接続される。
【0011】
端末201~20nは、例えば、所定の組織における業務を遂行するために組織内のユーザが利用できる情報処理端末である。端末201~20nの種類は特に限定されるものではない。端末201~20nは、例えば、パーソナルコンピュータ(PC)、ポータブルコンピュータ、スマートフォン、パーソナルデジタルアシスタント、その他の情報処理端末であってよい。以下、端末201~20nそれぞれを区別する必要がないときはまとめて端末20と称する。
【0012】
端末20は、インストールされているアプリケーションの実行ファイルを実行する毎に、実行ファイルの実行日時、実行した実行ファイルのパス、実行した実行ファイルのハッシュ値をログとして記憶し、記憶したログを管理装置10へ送信する。なお、端末20は、実行ファイルを実行する毎にログを送信するのではなく、記憶して未送信のログを所定の時間が経過する毎または所定のタイミングで管理装置10へ送信してもよい。
【0013】
情報処理装置の一例である管理装置10は、端末20にインストールされているアプリケーションの実行ファイルを管理する装置である。管理装置10は、端末20から送信されるログを受信して記憶する。管理装置10は、記憶したログに基づき、端末201~20nにおいて、使用を不許可とする版の実行ファイルをインストールしている端末20を特定する。なお、管理装置10は、この特定した端末20を表す情報を自装置上に表示してもよい。また、管理装置10は、この特定した端末20へ使用を不許可とする版の実行ファイルをインストールしていることを通知し、この通知を受信した端末20は、実行ファイルの更新を促す表示を行うようにしてもよい。また、管理装置10は、端末201~20nが送信するログを、管理装置10とは別体のデータベース等に格納させ、適宜読み出すように構成してもよい。
【0014】
ネットワークNWは、管理装置10と、端末20とを相互に通信可能に接続する。ネットワークNWはたとえば、インターネット、イントラネット、ローカルエリアネットワーク、広域ネットワークまたはそれらの組み合わせであってよい。また、ネットワークNWは、有線ネットワーク、無線ネットワークまたはその組み合わせであってよい。また、ネットワークNWは一部または全部が仮想ネットワークであってもよい。
【0015】
(管理装置10の構成例)
管理装置10の構成について
図1を参照してさらに説明する。管理装置10は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150と、を備える。
【0016】
通信部110は、ネットワークNWを介した他の装置等との通信を実現する機能部である。通信部110は、たとえば、ルータ、スイッチ、モデム、ポート等により実現される。
【0017】
入力部120は、管理装置10への外部からの情報の入力を実現する機能部である。入力部120はたとえば、キーボード、マウス、タッチパネル、マイクロフォンおよびそれらの周辺回路等により実現される。
【0018】
表示部130は、制御部150から出力される各種の情報を表示する機能部である。例えば、表示部130は、液晶ディスプレイやタッチパネルにより実現される。
【0019】
記憶部140は、管理装置10における処理に使用される情報および処理の結果生成される情報を記憶する。記憶部140はたとえば、半導体メモリ素子や記憶装置により実現される。半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【0020】
制御部150は、管理装置10の動作および機能を制御する。制御部150は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部150は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。
【0021】
制御部150は、ログ取得部150aと、版特定部150bと、端末特定部150cと、出力部150dとを有する。なお、ログ取得部150aと、版特定部150bと、端末特定部150cと、出力部150dは、プロセッサが有する電子回路やプロセッサが実行するプロセスの一例などにより実現される。
【0022】
ログ取得部150aは、端末20から送信されるログを取得する処理部である。具体的には、ログ取得部150aは、端末20から送信されるログを取得し、取得したログをログ記憶部140aに記憶させる。また、ログ取得部150aは、ログ記憶部140aに記憶されたログを取得する。
【0023】
版特定部150bは、ログ取得部150aが取得したログに基づいて、ファイル名が同一の実行ファイルのハッシュ値の時系列の遷移を特定し、複数の端末20間のハッシュ値の時系列の変化に基づいて、実行ファイルの改版対象を特定する。
【0024】
端末特定部150cは、改版対象の実行ファイルをインストールしている端末20を、ログに基づいて特定する。
【0025】
出力部150dは、端末特定部150eが特定した端末20を示す情報を表示部130に表示させる。
【0026】
記憶部140は、ログ記憶部140aと、ノード情報記憶部140bと、エッジ情報記憶部140cと、を有する。ログ記憶部140aは、端末20から送信されて通信部110が受信したログを記憶する。
図2は、ログ記憶部140aが記憶するログの構成の一例を示す図である。
図2に示すログは、「端末ID」、「実行日時」、「パス」、「ハッシュ値」を含む。
【0027】
「端末ID」は、ログを送信した端末201~20nのいずれか一つを一意に特定する識別子(Identifier:ID)である。「実行日時」は、ユーザの操作により端末20において実行ファイルが実行された日時である。「パス」は、端末20で実行された実行ファイルの格納位置を特定する情報である。「ハッシュ値」は、端末20で実行された実行ファイルのハッシュ値である。ハッシュ値は、同じ実行ファイルであっても更新されて版が変わると異なる値になるため、実行ファイルの版を表しているといえる。
【0028】
図2の例では、端末ID「PC01」に対応付けて、実行日時「2021/01/01/9:30」、パス「C:\Users\admin\test1.exe」、ハッシュ値「E04E…」が記憶されている。これは、端末ID「PC01」で特定される端末20において、ユーザが2021年1月1日の9時30分にハッシュ値が「E04E…」であって「C:\Users\admin」のディレクトリ下にある「test1.exe」という実行ファイルを実行したことを示す。また、
図2の例では、端末ID「PC01」に対応付けて、実行日時「2021/02/02/10:30」、パス「C:\Users\admin\test1.exe」、ハッシュ値「CA8E…」が記憶されている。これは、端末ID「PC01」で特定される端末20において、ユーザが2021年2月2日の10時30分にハッシュ値が「CA8E…」であって「C:\Users\admin」のディレクトリ下にある「test1.exe」という実行ファイルを実行したことを示す。
【0029】
ここで、端末IDが「PC01」である端末20において、2021年2月2日の10時30分に実行された実行ファイルは、2021年1月1日の9時30分に実行された実行ファイルと実行ファイル名が同じであるものの、ハッシュ値が異なっている。このため、管理装置10では、「test1.exe」という実行ファイルの版が更新されたことが分かる。
【0030】
ログ記憶部140aに記憶されるログは、端末20で実行された実行ファイルの版の遷移を示す有向グラフの生成に使用される。ここで、管理装置10における有向グラフの生成方法の一例について説明する。
図3は、管理装置10が生成する有向グラフであって、端末20で実行された実行ファイルの版の遷移を示す有向グラフの一例を示す図である。
【0031】
管理装置10は、ログ記憶部140aに記憶されている端末20毎のログについて、パスを参照し、実行ファイルが同じレコードを抽出する。例えば、管理装置10は、端末IDが「PC01」の場合、「test1.exe」を含むレコードを抽出する。次に管理装置10は、抽出したレコードに含まれているハッシュ値を抽出する。例えば、管理装置10は、端末IDが「PC01」の場合、「test1.exe」を含むレコードから、ハッシュ値として「E04E…」、「CA8E…」及び「AB4E…」を抽出する。
【0032】
管理装置10は、抽出したハッシュ値を含むレコードに含まれている実行日時のうち、最も過去の日時を、抽出したハッシュ値の実行ファイルの初回出現日時とし、初回出現日時と、抽出したハッシュ値を含むノードを生成する。
【0033】
例えば、管理装置10は、端末IDが「PC01」の場合、
図3に示すように、ファイル名が「test1.exe」である実行ファイルについては、ハッシュ値が「E04E…」の版について、初回出現日時として「2021/01/01/9:30」を含むノードNd12を生成する。また、管理装置10は、ファイル名が「test1.exe」である実行ファイルについては、ハッシュ値が「CA8E…」の版について、初回出現日時として「2021/02/02/10:30」を含むノードNd13を生成する。また、管理装置10は、ファイル名が「test1.exe」である実行ファイルについては、ハッシュ値が「AB4E…」の版について、初回出現日時として「2021/03/01/13:45」を含むノードNd14を生成する。
【0034】
また、管理装置10は、「test1.exe」を含むレコードを、レコードに含まれている実行日時の順でソートし、ソートしたレコードに含まれているハッシュ値の変化に応じて、生成したノード間をエッジで接続する。例えば、端末IDが「PC01」のログの場合、「test1.exe」を含むレコードにおいては、ハッシュ値が「E04E…」、「CA8E…」、「AB4E…」の順で変化している。このため、管理装置10は、この順番に従って
図3に示すように、ノードNd12とノードNd13とをエッジで接続し、ノードNd13とノードNd14とをエッジで接続する。
【0035】
管理装置10は、
図3に示すように、他の端末IDの端末20についても、ログに基づいて、ファイル名が「test1.exe」である実行ファイルについて、実行ファイルの版の遷移を示す有向グラフを生成する。これにより、端末IDが「PC02」の端末20については、ハッシュ値「E04E…」を含むノードNd22と、ハッシュ値「AB4E…」を含むノードNd24を有する有向グラフが生成される。端末IDが「PC03」の端末20については、ハッシュ値「90A2…」を含むノードNd31と、ハッシュ値「E04E…」を含むノードNd32を有する有向グラフが生成される。端末IDが「PC04」の端末20については、ハッシュ値「E04E…」を含むノードNd42と、ハッシュ値「CA8E…」を含むノードNd43と、ハッシュ値「B88B…」を含むノードNd44とを有する有向グラフが生成される。
【0036】
端末20毎に実行ファイルの版の遷移を示す有向グラフを生成した管理装置10は、生成した有向グラフを結合する。
図4は、
図3に示す有向グラフを結合して生成された結合有向グラフGR1の一例を示す図である。
【0037】
具体的には、管理装置10は、端末20毎に生成された有向グラフについて、同じハッシュ値のノードを結合し、同じハッシュ値のノードに含まれている最も過去の日時を、結合したノードに含まれる初回出現日時とする。
【0038】
例えば、
図3に示す有向グラフを結合する場合、ハッシュ値が「90A2…」のノードは、端末IDが「PC03」である端末20の有向グラフのノードNd31に含まれる初回出現日時が最も過去である。このため、結合有向グラフGR1においては、ハッシュ値が「90A2…」のノードNd1については、ノードNd31に含まれている初回出現日時「2020/11/10/11:10」が含まれる。
【0039】
また、ハッシュ値が「E04E…」のノードNd12、Nd22、Nd32及びNd42においては、端末IDが「PC02」である端末の有向グラフのノードNd22に含まれる初回出現日時が最も過去である。このため、結合有向グラフGR1においては、ハッシュ値が「E04E…」のノードNd2について、ノードNd22に含まれている初回出現日時「2020/12/01/10:15」が含まれる。
【0040】
ここで
図5は、結合有向グラフGR1の各ノードに含まれるノード情報の一例を示す図である。結合有向グラフGR1のノード情報は、ノード情報記憶部140bに記憶される。
図5に示すノード情報は、「ノードID」、「ハッシュ値」、「初回出現日時」を含む。「ノードID」は、結合有向グラフGR1のノードを一意に識別する識別子である。「ハッシュ値」は、結合有向グラフGR1のノードに含まれるハッシュ値である。「初回出現日時」は、結合有向グラフGR1のノードに含まれる初回出現日時である。
【0041】
また、管理装置10は、結合前の有向グラフのエッジに基づいて、結合有向グラフGR1のエッジを生成する。例えば、端末IDが「PC03」である端末の有向グラフにおいては、ハッシュ値が「90A2…」のノードNd31とハッシュ値が「E04E…」のノードNd32を結ぶエッジがある。このため、管理装置10は、このエッジと同様に、結合有向グラフGR1において、ハッシュ値が「90A2…」のノードNd1とハッシュ値が「E04E…」のノードNd2とを結ぶエッジEg1を生成する。
【0042】
同様に、管理装置10は、ノードNd12とノードNd13とを結ぶエッジやノードNd42とノードNd43を結ぶエッジに基づいてエッジEg2を生成し、ノードNd13とノードNd14とを結ぶエッジに基づいてエッジEg3を生成する。また、管理装置10は、ノードNd43とノードNd45とを結ぶエッジに基づいてエッジEg4を生成し、ノードNd22とノードNd24とを結ぶエッジに基づいてエッジEg5を生成する。
【0043】
ここで
図6は、結合有向グラフGR1の各エッジに含まれるエッジ情報の一例を示す図である。結合有向グラフGR1のエッジ情報は、エッジ情報記憶部140cに記憶される。エッジ情報は、「エッジID」、「接続元」、「接続先」、「遷移台数」を含む。「エッジID」は、エッジを一意に識別する識別子である。「接続元」は、エッジの接続元のノードに含まれるハッシュ値である。「接続先」は、エッジの接続先のノードに含まれるハッシュ値である。「遷移台数」は、接続元のノードに含まれるハッシュ値の版の実行ファイルから接続先のハッシュ値の版の実行ファイルへ更新した端末20の台数である。この台数は、例えば、端末20毎に生成された有向グラフを参照し、接続元のハッシュ値を含むノードから接続先のハッシュ値を含むノードへ遷移している端末20の台数をカウントすることにより得られる。なお、「接続元」をエッジの接続元のノードのノードIDとし、「接続先」をエッジの接続先のノードのノードIDとしてもよい。
【0044】
ノード情報及びエッジ情報からなる結合有向グラフGR1は、使用不許可の版の実行ファイルをインストールしている端末20の特定に用いられる。ここで、使用不許可の版の実行ファイルをインストールしている端末20を管理装置10が特定する方法について説明する。
【0045】
図7は、使用不許可の版の実行ファイルをインストールしている端末20を特定する方法を説明するための図である。まず、管理装置10は、使用を許可する版の実行ファイルのハッシュ値を特定する。具体的には、管理装置10は、結合有向グラフGR1において、接続先がないノード、即ち、エッジの接続元となっていない末端ノードを特定する。例えば、管理装置10は、結合有向グラフGR1において接続先がないノードNd4とノードNd5を末端ノードとして特定する。次に管理装置10は、特定した末端ノードに含まれるハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとする。また、管理装置10は、特定した末端ノード以外のノードNd1、Nd2、Nd3に含まれるハッシュ値の実行ファイルを、使用不許可の版の実行ファイルとする。なお、ノードに含まれるハッシュ値において使用を許可する版のハッシュ値である許容ハッシュ値と、ノードに含まれるハッシュ値において使用を不許可とする版のハッシュ値である不許可ハッシュ値とを入力部120で指定してもよい。この場合、管理装置10は、許容ハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとし、不許可ハッシュ値の実行ファイルを使用不許可の版の実行ファイルとする。例えば、
図7の結合有向グラフGR1において、「AB4E…」と「B88B…」を許容ハッシュ値とし、「90A2…」、「E04E…」および「CA8E…」を不許可ハッシュ値とした場合を想定する。この場合、管理装置10は、ノードNd4とノードNd5に含まれるハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとする。また、管理装置10は、ノードNd1、Nd2、Nd3に含まれるハッシュ値の実行ファイルを、使用不許可の版の実行ファイルとする。このように、ハッシュ値の時系列の遷移を特定することにより、改版対象である使用不許可の版の実行ファイルを特定することができる。
【0046】
次に管理装置10は、使用不許可の版の実行ファイルのハッシュ値を用いて、使用不許可の版の実行ファイルをインストールしている端末20を特定する。具体的には、管理装置10は、端末20毎に生成した有向グラフにおいて、ノードNd1、Nd2、Nd3に含まれるハッシュ値を末端ノードに含む有向グラフを特定し、特定した有向グラフに対応する端末20を特定する。例えば、ノードNd2に含まれるハッシュ値は、使用不許可の版の実行ファイルのハッシュ値「E04E…」である。
図3に示す端末20毎に生成された有向グラフにおいて、このハッシュ値「E04E…」を末端ノードに含む有向グラフは、端末IDが「PC03」の端末20のログ情報を基に生成された有向グラフである。よって、管理装置10は、端末IDが「PC03」である端末20を、使用不許可の版の実行ファイルをインストールしている端末20として特定する。このように、結合有向グラフGR1を生成することにより、古い版の実行ファイルをインストールしている端末20を容易に特定することができる。また、端末20毎に有向グラフを生成していることにより、端末20における実行ファイルのハッシュ値の時系列の遷移を知ることができ、複数の端末20
1~20
nの中から古い版の実行ファイルをインストールしている端末20を容易に特定することができる。また、末端ノード以外のノードに含まれているハッシュ値を、使用を不許可とする版の実行ファイルのハッシュ値とすることにより、最新の版以外の版の実行ファイルをインストールしている端末20を特定することができる。また、許容ハッシュ値と不許可ハッシュ値とを用いることにより、使用を許容しない版の実行ファイルをインストールしている端末20を特定することができる。
【0047】
管理装置10は、使用不許可の版の実行ファイルをインストールしている端末20を示す情報を表示部130で表示する。
図8は、表示画面の一例を示す図である。
図8に示すように、管理装置10は、端末20がインストールしている実行ファイルのファイル名と、この実行ファイルの使用不許可の版をインストールしている端末20の端末IDを表示する。ファイル名と、このファイル名の実行ファイルの使用不許可の版をインストールしている端末20の端末IDが表示されるため、組織内のアプリケーションの管理者は、使用不許可の版をインストールしている端末20を知ることができる。
【0048】
なお、管理装置10は、結合有向グラフGR1において、初回出現日時が所定の日付以降のノードに含まれているハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとしてもよい。例えば、初回出現日時が2月以降のノードに含まれているハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとする場合を想定する。この場合、管理装置10は、
図9に示すように、ノードNd3、Nd4、Nd5に含まれるハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとする。また、管理装置10は、これらのノード以外のノードNd1、Nd2に含まれるハッシュ値の実行ファイルを、使用不許可の版の実行ファイルとする。この構成によれば、最新の版及び最新の版に近い版以外の版の実行ファイルをインストールしている端末20を特定することができる。
【0049】
なお、管理装置10は、
図10に示すように、結合有向グラフGR1の末端ノードと、末端ノードから根ノードへ向かって所定数遡上したノードに含まれるハッシュ値の実行ファイルを、使用を許可する版の実行ファイルとしてもよい。即ち、管理装置10は、実行ファイルの複数の版を、使用を許可する版としてもよい。この場合、管理装置10は、末端ノード及び末端ノードから所定数遡上したノード以外のノードに含まれるハッシュ値の実行ファイルを、使用不許可とする版の実行ファイルとする。この構成によれば、最新の版及び最新の版に近い版以外の版の実行ファイルをインストールしている端末20を特定することができる。
【0050】
図10は、実行ファイルの複数の版を、使用を許可する版とする方法を説明するための図である。例えば、管理装置10は、末端ノードのハッシュ値の実行ファイルを最新版とし、最新版から遡上してX版前までを使用を許可する版とする。ここで、X版前の「版前」とは、最新版からX版前までの使用を許可する場合に用いる文言であり、最新版を「1版前」とする。このXの値は、例えば入力部120にて入力される。
【0051】
図10の例では、まず管理装置10は、
図10(a)に示すように末端ノードであるノードNd4、Nd5を「1版前」に確定する。例えば、管理装置10は、X=2とする場合、
図10(b)に示すように、「1版前」のノードNd4、Nd5を接続先とするノードNd2、Nd3を「2版前候補」とする。管理装置10は、
図10(c)に示すように、「2版前候補」のノードNd2、Nd3のうち、1版前のノードNd4、Nd5以外に初回出現日時が新しいノードへ接続していないノードNd3を「2版前」ノードとする。なお、ノードNd2は、1版前のノードNd4、Nd5以外に自身の初回出現日時より初回出現日時が新しいノードNd3に接続しているため、管理装置10は、
図9(c)に示すように、ノードNd2を「2版前」から除外する。
【0052】
ところで、端末20においては、更新した実行ファイルに不具合がある場合、ユーザが更新前の実行ファイルに戻すロールバックが行われる場合がある。
図11は、ロールバックが行われた場合の結合有向グラフの一例を示す図である。
図11に示す結合有向グラフGR2は、ノードNd101~Nd104と、エッジEg101~Eg104を有する。
【0053】
図11(a)に示す結合有向グラフGR2は、ハッシュ値「CA8E…」の実行ファイルからハッシュ値「AB4E…」の実行ファイルへ更新した端末20と、ハッシュ値「AB4E…」の実行ファイルからハッシュ値「CA8E…」の実行ファイルへ戻した端末20とがあったことを示している。この場合、
図11(a)に示すように、ノードNd103とノードNd104との間が、ノードNd103からノードNd104へ向かうエッジEg103と、ノードNd104からノードNd103へ向かうエッジEg104とで接続される。このように、結合有向グラフGR2において、接続先がないノードが存在しない場合、管理装置10は、
図11(b)に示すように、初回出現日時が新しいノードNd104から古いノードNd103へのエッジEg104を削除し、ノードNd104を末端ノードとしてもよい。
【0054】
また、端末20においてロールバックが行われた場合、ロールバック後の実行ファイルのハッシュ値を含むノードを結合有向グラフにおける末端ノードとしてもよい。
図12は、ロールバック後の実行ファイルのハッシュ値を含むノードを末端ノードとする方法を説明するための図である。
図12(a)に示す結合有向グラフGR3は、ノードNd101~Nd104と、エッジEg101~Eg104を有する。
図12(b)に示す結合有向グラフGR4は、ノードNd202~Nd205と、エッジEg201~Eg207を有する。
【0055】
管理装置10は、例えば、結合有向グラフにおいて、初回出現日時が新しいノードに向かう更新エッジに含まれる台数Bと、このノードより初回出現日時が古いノードに向かうロールバックエッジに含まれる台数Aについて、A/Bを計算する。管理装置10は、このA/Bの計算結果が所定の閾値以上である場合、更新エッジの接続先のノードをロールバック版ノードとし、ロールバックエッジの接続先のノードを末端ノードとしてもよい。
【0056】
例えば、
図12(a)に示す結合有向グラフGR3のように、エッジEg103(更新エッジ)に含まれる台数Bが50台であり、エッジEg104(ロールバックエッジ)に含まれる台数Aが40台である場合を想定する。この場合、管理装置10は、閾値を0.8とすると、40台/50台=0.8となるため、ノードNd104をロールバックノードとし、ノードNd103を末端ノードとする。
【0057】
また、
図12(b)に示す結合有向グラフGR4のように、更新エッジであるエッジEg203とエッジEg204に含まれる台数の合計が50台であり、ロールバックエッジであるエッジEg205とエッジEg207に含まれる台数の合計が40台である場合を想定する。この場合、管理装置10は、閾値を0.8とすると、B=40台+10台、A=35台+5台であり、40台/50台=0.8となるため、ノードNd205をロールバックノードとする。
【0058】
また、
図12(b)に示すように、更新エッジであるエッジEg202に含まれる台数Aが50台であり、ロールバックエッジであるエッジEg206に含まれる台数Bが5台である場合を想定する。この場合、管理装置10は、閾値を0.8とすると、5台/50台=0.1となるため、ノードNd204をロールバックノードとせずに末端ノードとする。
【0059】
このように、ロールバック版を特定する構成によれば、ロールバック後の版以外の版の実行ファイルをインストールしている端末20を特定することができる。
【0060】
次に、フローチャートを用いて管理装置10の処理の流れを説明する。
図13~15は、管理装置10が実行する処理の流れを示すフローチャートである。
【0061】
まず、管理装置10は、ログ記憶部140aに記憶されたログに基づいて、上述したように、端末20に、端末20において実行された実行ファイルの版の遷移を示す有向グラフを生成する(ステップS101)。次に管理装置10は、上述したように、端末20毎に生成した有向グラフを結合して結合有向グラフを生成する(ステップS102)。管理装置10は、上述したように、生成した結合有向グラフに基づいて、使用を許可する版の実行ファイルのハッシュ値を特定する(ステップS103)。なお、ステップS103においては、
図14に示す処理や
図15に示す処理が実行される。次に管理装置10は、上述したように、使用を許可する版の実行ファイルのハッシュ値以外のハッシュ値を含むノードを特定し、このノードに含まれるハッシュ値を、使用を不許可とする版の実行ファイルのハッシュ値として特定する(ステップS104)。そして、管理装置10は、使用を不許可とする版の実行ファイルのハッシュ値に基づいて、使用を不許可とする版の実行ファイルをインストールしている端末20を特定し(ステップS105)、特定した端末20を表示部130に表示する(ステップS106)。
【0062】
図14は、使用を許可する版をX版前までとする場合に、結合有向グラフにおいてX版前のノードを判定する処理の流れを示すフローチャートである。まず、管理装置10は、末端ノードを「1版前」に確定する(ステップS201)。
【0063】
次に管理装置10は、ループ1の繰り返し処理を実行する(ステップS202~S212)。ループ1の繰り返し処理は、繰り返しの変数Nの初期値を1とし、Nの増分値を1とし、NがX-1となるまで繰り返す処理である。
【0064】
管理装置10は、ループ1の処理内でループ2の繰り返し処理を実行する(ステップS203~S211)。ループ2の繰り返し処理は、繰り返しの変数iの初期値を1とし、iの増分値を1とし、変数iがN版前のノードへ遷移している版前未確定ノードの数aとなるまで繰り返す処理である。管理装置10は、この版前未確定ノードの中から変数iに応じて選択したノードをノードiとする。
【0065】
管理装置10は、選択したノードiについて、初回出現日時が接続先のN版前ノードより古い日時であるか判断する(ステップS204)。管理装置10は、N版前のノードへ遷移しているノードiの初回出現日時が接続先のN版前ノードより古い日時ではない場合(ステップS204でNo)、ステップS211でループ2の終了条件を満たしているか判断する。管理装置10は、ループ2の終了条件を満たしていない場合には、変数iを増分してステップS204へ戻る。
【0066】
管理装置10は、ノードiの初回出現日時が接続先のN版前ノードより古い日時である場合(ステップS204でYes)、結合有向グラフにおいて、N以下版前ノード以外にノードiの遷移先となるノードがあるか判定する(ステップS205)。
【0067】
管理装置10は、結合有向グラフにおいて、N以下版前ノード以外にノードiの遷移先となるノードがない場合(ステップS205でNo)、ノードiを「N+1版前」として確定する(ステップS206)。次に管理装置10は、使用を許可する版のハッシュ値を含むノードとしてノードiをノードリストに追加する(ステップS207)。管理装置10は、ステップS207の後、ステップS211でループ2の終了条件を満たしているか判断する。管理装置10は、ループ2の終了条件を満たしていない場合には、iを増分してステップS204へ戻る。
【0068】
管理装置10は、結合有向グラフにおいて、N以下版前ノード以外にノードiの遷移先となるノードがある場合(ステップS205でYes)、ループ3の繰り返し処理を実行する(ステップS208~S210)。ループ3の繰り返し処理は、繰り返しの変数jの初期値を1とし、jの増分値を1とし、N以下版前が確定したノード以外でノードiの遷移先となるノードの数bまで繰り返す処理である。管理装置10は、N以下版前が確定したノード以外のノードであってノードiの遷移先となるノードの中から変数jに応じて選択したノードをノードjとする。
【0069】
管理装置10は、選択したノードjについて、初回出現日時がノードiの初回出現日時より新しい日時であるか判断する(ステップS209)。管理装置10は、選択したノードjについて、初回出現日時がノードiの初回出現日時より新しい日時である場合(ステップS209でYes)、ステップS211でループ2の終了条件を満たしているか判断する。管理装置10は、ループ2の終了条件を満たしていない場合には、iを増分してステップS204へ戻る。
【0070】
管理装置10は、選択したノードjについて、初回出現日時がノードiの初回出現日時より新しい日時ではない場合(ステップS209でNo)、ステップS210でループ3の終了条件を満たしているか判断する。管理装置10は、ループ3の終了条件を満たしていない場合には、jを増分してステップS209へ戻る。
【0071】
管理装置10は、ループ3の終了条件を満たしている場合、上述したステップS206、S207の処理を実行し、ステップS211でループ2の終了条件を満たしているか判断する。管理装置10は、ループ2の終了条件を満たしていない場合には、iを増分してステップS204へ戻る。
【0072】
管理装置10は、ループ2の終了条件を満たしている場合、ステップS212でループ1の終了条件を満たしているか判断する。管理装置10は、ループ1の終了条件を満たしていない場合には、Nを増分してステップS203へ戻る。管理装置10は、ループ1の終了条件を満たしている場合、ループ1の処理を終了する。
【0073】
例えば、結合有向グラフGR1について、X=2として
図14に示す処理を実行した場合を想定する。この場合、
図10で示したように1版前のノードとしてノードNd4、Nd5を確定し、2版前のノードとしてノードNd3を確定することができ、実行ファイルの複数の版を、使用を許可する版とすることができる。
【0074】
図15は、結合有向グラフにおいてロールバック版のノードを判定する処理の流れを示すフローチャートである。管理装置10は、ループ4の繰り返し処理を実行する(ステップS301~S311)。ループ4の繰り返し処理は、繰り返しの変数iの初期値を1とし、iの増分値を1とし、変数iが結合有向グラフにおけるノードの数cとなるまで繰り返す処理である。管理装置10は、この繰り返し処理において、変数iに応じて選択したノードをノードiとする。
【0075】
次に管理装置10は、変数Lと変数Mについて、初期化してL=0とし、M=0とする(ステップS302)。
【0076】
次に管理装置10は、ループ4の処理内でループ5の繰り返し処理を実行する(ステップS303~S308)。ループ5の繰り返し処理は、繰り返しの変数jの初期値を1とし、jの増分値を1とし、変数jがノードiに接続しているエッジの数dとなるまで繰り返す処理である。管理装置10は、この繰り返し処理において、ノードiに接続しているエッジの中から変数jに応じて選択したエッジをエッジjとする。
【0077】
管理装置10は、選択したノードiに接続しているエッジjについて、接続先のノードの初回出現日時がノードiに含まれている初回出現日時より古い日時であるか判断する(ステップS304)。管理装置10は、エッジjについて、接続先のノードの初回出現日時がノードiに含まれている初回出現日時より古い日時ではない場合(ステップS304でNo)、ステップS308でループ5の終了条件を満たしているか判断する。管理装置10は、ループ5の終了条件を満たしていない場合には、jを増分してステップS304へ戻る。
【0078】
管理装置10は、エッジjについて、接続先のノードの初回出現日時がノードiに含まれている初回出現日時より古い日時である場合(ステップS304でYes)、エッジjがノードiに向かう遷移であるか判断する(ステップS305)。管理装置10は、エッジjがノードiに向かう遷移ではない場合(ステップS305でNo)、L=L+(エッジjが含む端末20の台数)とする(ステップS306)。管理装置10は、エッジjがノードiに向かう遷移である場合(ステップS305でYes)、M=M+(エッジjが含む端末20の台数)とする(ステップS307)。
【0079】
管理装置10は、ステップS306、S307の後、ステップS308でループ5の終了条件を満たしているか判断する。管理装置10は、ループ5の終了条件を満たしていない場合には、jを増分してステップS304へ戻る。
【0080】
管理装置10は、ループ5の終了条件を満たしている場合、L/M≧Yであるか判断する。ここでYは、ロールバックを判定する閾値である。管理装置10は、L/M≧Yである場合(ステップS309でYes)、ノードiをロールバック版ノードとし、ロールバックリストに追加する(ステップS310)。
【0081】
管理装置10は、L/M≧Yではない場合(ステップS309でNo)またはステップS310の後、ループ4の終了条件を満たしているか判断する。管理装置10は、ループ4の終了条件を満たしていない場合には、iを増分してステップS302へ戻る。管理装置10は、ループ4の終了条件を満たしている場合、ループ4の処理を終了する。
【0082】
端末20においてロールバックが行われた場合でも、
図15の処理によれば、
図12に示したようにロールバック版ノードを特定し、特定したロールバック版ノードから末端ノードを特定することができる。
【0083】
図16は、管理装置10のハードウェア構成例を説明する図である。
図16に示すように、管理装置10は、プロセッサ10a、HDD(Hard Disk Drive)10b、メモリ10c、通信装置10d、操作部10e、ディスプレイ10fを有する。また、
図16に示した各部は、バス等で相互に接続される。
【0084】
通信装置10dは、ネットワークインタフェースカードなどであり、
図1に示す通信部110に相当し、他の装置との通信を行う。操作部10eは、入力部120に相当し、キーボードやマウス、タッチパネル等に対応する。ディスプレイ10fは、表示部130に相当し、液晶ディスプレイやタッチパネルに対応する。HDD10bは、記憶部140に相当し、
図1に示した機能を動作させるプログラムやログ、各種情報等を記憶する。
【0085】
プロセッサ10aは、
図1に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、
図1等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、管理装置10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10aは、ログ取得部150a、版特定部150b、端末特定部150c、出力部150d等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10aは、ログ取得部150a、版特定部150b、端末特定部150c、出力部150d等と同様の処理を実行するプロセスを実行する。
【0086】
このように、管理装置10は、プログラムを読み出して実行することで情報処理方法を実行する情報処理装置として動作する。また、管理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、管理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【0087】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【0088】
1 アプリケーション管理システム
10 管理装置
10a プロセッサ
10b HDD
10c メモリ
10d 通信装置
10e 操作部
10f ディスプレイ
20、201~20n 端末
110 通信部
120 入力部
130 表示部
140 記憶部
150 制御部
140a ログ記憶部
140b ノード情報記憶部
140c エッジ情報記憶部
150a ログ取得部
150b 版特定部
150c 端末特定部
150d 出力部
Eg1~Eg5、Eg101~Eg104、Eg201~Eg207 エッジ
GR1~GR4 結合有向グラフ
Nd1~Nd5、Nd12~Nd14、Nd22、Nd24、Nd31、Nd32、Nd42、Nd43、Nd45、Nd101~Nd104、Nd202~Nd205 ノード
NW ネットワーク