以下に図面を参照して、開示のファイル評価プログラム、ファイル特定装置、およびファイル評価方法の実施の形態を詳細に説明する。
図1は、本実施の形態にかかるファイル特定装置の動作例を示す説明図である。ファイル特定装置100は、サーバ群を有する環境の中で、不具合があるファイルを特定するコンピュータである。サーバ群は、クラウドサービスを提供する装置群や、クラウドサービスの開発に用いる装置群である。サーバ群と、クラウドサービスとの関係は、図2で後述する。
ある環境で不具合が発生した場合、環境に含まれるサーバ群のいずれかのサーバが有するファイルの内容に不具合が存在することがある。ファイルの内容には、サーバが有するハードウェアの設定値や、サーバが実行するOS(Operating System)、アプリケーションソフトウェアといったソフトウェアの設定値、といったデータが格納されるものがある。
ファイルの内容に不具合が発生する理由としては、たとえば、開発者が検証のために、一時的に、あるサーバのあるファイルの内容を書き換えたのち、戻し忘れが発生した場合である。このとき、ファイルの内容の書き換えを行った開発者以外の開発者はどのファイルを変更したかを把握していないため、問題発生の原因を特定することが困難になる。
問題発生の原因を特定する際に、クラウドサービスを運用する管理者、または、クラウドサービスを開発する開発者は、環境内のファイルの内容を閲覧して、内容に誤りがあるか否かを確認する。具体的な確認方法の第1の例として、不具合が発生した環境に含まれるサーバ群のサーバ同士で同一名称のファイルの内容を比較して、内容に差異があるファイルの内容を確認する方法がある。また、確認方法の第2の例として、不具合が発生した環境と、不具合が発生した環境の構成が類似する環境と、に含まれるサーバ同士で同一名称のファイルの内容を比較して、内容に差異があるファイルの内容を確認する方法がある。
しかしながら、第1の例および第2の例ともに、内容に差異があるファイルを特定することはできるが、ファイルの内容が正規であるか否かは判断できない。たとえば、第1の例では、サーバ間でファイルの内容が異なることが正規である設定内容なのか、それとも、設定ミスによりサーバ間でファイルの内容が異なっているのか判断することが難しい。また、第2の例では、環境間でファイルの内容が異なることが正規である設定内容なのか、それとも、設定ミスにより環境間でファイルの内容が異なっているのか判断することが難しい。
そこで、ファイル特定装置100は、各環境が有するファイル群の同一パスのファイルを、各環境での同一名称のファイルの内容の一致度に基づき階層に区分し、評価対象ファイルにおける2つの環境の階層に対応する逸脱度合の差を求める。これにより、ファイル特定装置100は、内容が逸脱するファイルを特定できる。内容が逸脱するファイルの情報を利用者に提供することにより、利用者は、始めに内容が逸脱するファイルの内容を閲覧することができるため、内容に不具合があるファイルを精度良く特定することができる。
図1では、複数の環境のうちの、第1のサーバ群を有する環境Aと、第2のサーバ群を有する環境Bに含まれるサーバ群が有するファイル群として、ファイルf1とファイルf2を示す。環境Aと環境Bとは、環境の構成が類似する方が、内容に不具合があるファイルの特定の精度が良くなる。具体的に、環境Aと環境Bともに、4つのサーバを有する。そして、各サーバは、ファイルf1とファイルf2とを有する。
環境Aと環境Bとの構成が類似するか否かは、環境に含まれるサーバの数を特定する構成情報が類似するか否かと同義である。ここで、本実施の形態における構成情報は、1つの環境における構成情報であり、具体的には、環境に含まれるハードウェアの情報や、環境に含まれるサーバにインストールされるソフトウェアの情報である。たとえば、ある環境がサーバA、B、C、Dを有するとする。このとき、ある環境の構成情報は、サーバA〜Dを有し、所定のソフトウェアがサーバA、Bにインストールされている、サーバDには、所定のハードウェアとして拡張ディスクが付与されている、といったことを特定する情報となる。構成情報が類似するか否かを判断する例としては、図20で後述する。
図1では、説明の明瞭化のため、どの環境のどのファイルであるかを判断できるようにファイルに符号を付与してある。ファイルに付与された符号をアンダーバーで分割した際の先頭の文字列は、符号が付与されたファイルがファイルf1かファイルf2かを示す。また、ファイルに付与された符号をアンダーバーで分割した際の先頭の文字列が同一のファイルは、同一名称である。ファイルに付与された符号をアンダーバーで分割した際の2番目の文字列は、符号が付与されたファイルが環境Aにあるか環境Bにあるかを示す。ファイルに付与された符号をアンダーバーで分割した際の3番目の文字列は、符号が付与されたファイルを有するサーバが環境内の何番目かを示す。
たとえば、ファイルf1_A_1は、環境Aの1番目のサーバが有するファイルf1であることを示す。また、ファイルf1_A_1〜ファイルf1_A_4、ファイルf1_B_1〜ファイルf1_B_4は、同一名称のファイルとなる。環境Aと環境Bとの構成が類似するため、環境Aと環境Bとで同一名称のファイルがある可能性は高い。
また、図1では、ファイルの内容を、ファイル内に記載した文字により模擬してある。以下、ファイル内に記載した文字を、単にファイルの内容とする。たとえば、ファイルf1_A_1とファイルf1_A_2とは、ファイルの内容が共に、“○”であり、内容が同一である。
ファイル特定装置100は、環境Aに含まれるサーバ群が有するファイル群の同一名称のファイルを、各環境での同一名称のファイルの内容の一致度に基づいて、複数の階層のいずれかの階層に区分する。複数の階層は、構成情報に基づいて生成される。各環境での同一名称のファイルの内容の一致度は、各環境におけるファイルの内容が一致する度合であり、たとえば、同一名称のファイルのうち同一内容となるファイルを有するサーバの数である。また、各環境におけるファイルの内容が一致する度合は、同一名称のファイルのうち、スペースの数以外は同一内容となるファイルを有するサーバの数でもよいし、改行コードの違い以外は同一内容となるファイルを有するサーバの数でもよい。複数の階層の生成例については、図18、図24等で後述する。図1の例では、環境に含まれるサーバの数に一致する数分の階層として、階層1〜4を生成したとする。また、同一名称のファイルのうち同一内容となるファイルを有するサーバの数を、以下、「共通サーバ数」と称する場合がある。
環境Aでのファイルf1の内容は、全て“○”であり、同一内容となるファイルを有するサーバの数は4となる。したがって、ファイル特定装置100は、環境Aのファイルf1を、階層4に区分する。また、環境Aでのファイルf2の内容は、“×”、“△”、“□”、“□”であり、共通サーバ数は2となる。したがって、ファイル特定装置100は、環境Aのファイルf2を、階層2に区分する。
また、環境Bでのファイルf1の内容は、全て“○”であり、同一内容となるファイルを有するサーバの数は4となる。したがって、ファイル特定装置100は、環境Bのファイルf1を、階層4に区分する。また、環境Bでのファイルf2の内容は、“×”、“△”、“▽”、“□”であり、共通サーバの数は1となる。したがって、ファイル特定装置100は、環境Bのファイルf2を、階層1に区分する。
続けて、ファイル特定装置100は、区分される階層の異なる同一名称のファイルを抽出する。たとえば、ファイル特定装置100が評価対象ファイルとしてファイルf1_A_1を指定したとする。続けて、ファイル特定装置100は、評価対象ファイルが環境Aで区分された第1の階層と、評価対象ファイルと同一名称であり環境Bのいずれかのサーバが有するファイルが環境Bで区分された第2の階層とが異なるか否かを判断する。第1の階層と第2の階層とが異なる場合、ファイル特定装置100は、区分される階層の異なる同一名称のファイルとして抽出する。ファイルf1_A_1が区分された第1の階層は4であり、ファイルf1_A_1と同一名称のファイルf1_B_1が区分された第2の階層は4であるから、第1の階層と第2の階層とが同一である。
また、ファイル特定装置100が評価対象ファイルとしてファイルf2_A_1を指定したとする。続けて、ファイル特定装置100は、評価対象ファイルが区分された第1の階層と、評価対象ファイルと同一名称であり環境Bのいずれかのサーバが有するファイルが区分された第2の階層とが異なるか否かを判断する。ファイルf2_A_1が区分された第1の階層は2であり、ファイルf2_A_1と同一名称のファイルf2_B_1が区分された第2の階層は1であるから、第1の階層と第2の階層とが異なる。したがって、ファイル特定装置100は、区分される階層の異なる同一名称のファイルとしてファイルf2_A_1を抽出する。
区分される階層の異なる同一名称のファイルを抽出した後、ファイル特定装置100は、第1の階層および第2の階層に基づいて、複数の階層の各々の階層の逸脱度合を参照して、評価対象ファイルの危険度を決定する。逸脱度合は、複数の階層の各々の階層に区分される同一名称のファイル同士の内容の逸脱の度合を表す指標値である。
図1の例では、階層1の逸脱度合が1であり、階層2の逸脱度合が8であり、階層3の逸脱度合が10であり、階層4の逸脱度合が0である。各階層の逸脱度合が示すように、内容が全て同一である階層4や内容が全て異なる階層1では逸脱度合が小さくなり、2つだけ内容が同一となる階層2や内容が一つだけ異なる階層3では逸脱度合が大きくなる。逸脱度合の詳細は、図14で後述する。
危険度は、ファイルの内容に不具合がある可能性の度合を示す評価値である。危険度の詳細は、図25で後述する。また、危険度の算出例として、ファイル特定装置100は、第1の階層の逸脱度合と第2の階層の逸脱度合との差を危険度としてもよいし、第1の階層の逸脱度合と第2の階層の逸脱度合との差の絶対値を危険度としてもよい。図1の例では、ファイル特定装置100は、階層2の逸脱度合=8から階層1の逸脱度合=1を減じた7をファイルf2の危険度として決定する。
図2は、評価対象となるクラウドシステムの一例を示す説明図である。クラウドシステム201は、複数の環境として、運用中であるマスタ環境202と、マスタ環境202の開発環境となる環境Aと、マスタ環境202のテスト環境となる環境Bと、マスタ環境202の本番環境となる環境Cと、ファイル特定装置100とを有する。マスタ環境202と、環境A〜Cと、ファイル特定装置100とは、ネットワーク211で接続される。各環境には、複数のサーバが存在する。マスタ環境202との構成、環境A〜Cとの構成は類似する。環境Aのリソースは環境A〜Cの中では相対的に小さく、環境Bのリソースは環境A〜Cの中では中程度であり、環境Cのリソースは環境A〜Cの中では大きい。
クラウドシステム201が複数の環境を有する理由は、マスタ環境202によるサービスの拡大に伴い、マスタ環境202の増築を行う際に、拡大したサービスが提供できるまでの期間を短縮化するためである。具体的に、環境Aは、新たなサービスを提供する機能を開発するために用いられる環境である。環境Aは、新たなサービスを提供する機能を開発するために用いられる環境である。環境Bは、新たなサービスをテストするために用いられる環境である。環境Cは、新たなサービスを運用するために用いられる環境である。
ファイル特定装置100は、マスタ環境202と、環境A〜Cと、にアクセス可能な装置である。
(ファイル特定装置100のハードウェア)
図3は、ファイル特定装置のハードウェア構成の一例を示すブロック図である。図3において、ファイル特定装置100は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、ファイル特定装置100は、ディスクドライブ304と、ディスク305と、通信インターフェース306と、を含む。また、ファイル特定装置100は、ディスプレイ307と、キーボード308と、マウス309とを含む。また、CPU301〜マウス309はバス310によってそれぞれ接続される。
CPU301は、ファイル特定装置100の全体の制御を司る演算処理装置である。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ304には、たとえば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ304が磁気ディスクドライブである場合、ディスク305には、磁気ディスクを採用することができる。また、ディスクドライブ304が光ディスクドライブである場合、ディスク305には、光ディスクを採用することができる。また、ディスクドライブ304がソリッドステートドライブである場合、ディスク305には、半導体素子メモリを採用することができる。
通信インターフェース306は、ネットワーク211と内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース306は、通信回線を通じてネットワーク211となるLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどに接続され、ネットワーク211を介して他の装置に接続される。通信インターフェース306には、たとえば、モデムやLANアダプタなどを採用することができる。
ディスプレイ307は、マウスカーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ307には、たとえば、CRT(Cathode Ray Tube)、TFT(Thin Film Transistor)液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボード308は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード308は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス309は、マウスカーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス309は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
(ファイル特定装置100の機能)
次に、ファイル特定装置100の機能について説明する。図4は、ファイル特定装置の機能構成例を示すブロック図である。ファイル特定装置100は、生成部401と、区分部402と、抽出部403と、特定部404と、決定部405と、を含む。制御部となる生成部401〜決定部405は、記憶装置に記憶されたプログラムをCPU301が実行することにより、生成部401〜決定部405の機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、ディスク305などである。または、通信インターフェース306を経由して他のCPUが実行することにより、生成部401〜決定部405の機能を実現してもよい。
また、ファイル特定装置100は、ファイル集合テーブル410と、構成情報411と、にアクセス可能である。ファイル集合テーブル410と、構成情報411とは、RAM303、ディスク305といった記憶装置に格納されている。
ファイル集合テーブル410は、ある環境が有するファイル群の同一名称のファイルを、同一名称のファイルのうち同一内容となるファイルを有するサーバの数を記憶するテーブルである。ファイル集合テーブル410は、1つの環境につき1つ存在する。ファイル集合テーブル410の記憶内容の一例については、図5で示す。
構成情報411は、ある環境に含まれるサーバの数を特定する情報である。具体的に、構成情報411は、ある環境に含まれるサーバ全ての数や、所定のハードウェアを有するサーバの数や、所定のソフトウェアがインストールされたサーバの数を記憶する情報である。所定のハードウェアとは、ファイル特定装置100の利用者が予め指定したハードウェアである。たとえば、所定のハードウェアとしては、拡張ディスク等がある。また、所定のソフトウェアとは、ファイル特定装置100の利用者が予め指定したソフトウェアである。たとえば、所定のソフトウェアとしては、Webサーバソフトウェア等がある。構成情報411は、1つの環境に対して1つ存在する。
生成部401は、第1のサーバ群に含まれるサーバの数を特定する第1の構成情報と、第2のサーバ群に含まれるサーバの数を特定する第2の構成情報とに基づいて、複数の階層を生成する。
たとえば、ある構成情報411が、環境Aに含まれるサーバ全ての数が4であるという情報を有しており、別の構成情報411が、環境Bに含まれるサーバ全ての数が8であるという情報を有しているとする。このとき、生成部401は、環境Aに含まれるサーバ全ての数と、環境Bに含まれるサーバ全ての数とのうち、少ない数となる4つの階層を生成する。階層の生成例については、図24で後述する。生成した階層を示す情報は、RAM303、ディスク305などの記憶領域に記憶される。
区分部402は、複数の環境の環境ごとに、環境が有するファイル群の同一名称のファイルを、ファイル集合テーブル410Aに記憶された共通サーバ数に基づいて、複数の階層のいずれかの階層に区分する。たとえば、ファイル集合テーブル410Aが、環境Aが有するファイルf1の共通サーバ数が2であることを記憶していたとする。このとき、区分部402Aは、ファイルf1を、階層1〜階層4のうちの階層2に区分する。
また、区分部402は、複数の環境の環境ごとに、環境が有するファイル群の同一名称のファイルを、構成情報411に記憶された共通サーバ数に基づいて、生成部401が生成した複数の階層のいずれかの階層に区分してもよい。
たとえば、ある構成情報411が、環境Aに含まれるサーバ全ての数が4であるという情報を有しており、別の構成情報411が、環境Bに含まれるサーバ全ての数が8であるという情報を有しており、生成部401が4つの階層を生成したとする。このとき、区分部402Bは、ファイルの共通サーバ数を2で割った商に対応する階層にファイルを区分する。具体的には、区分部402Bは、共通サーバ数が1または2となるファイルであれば1つ目の階層に区分する。同様に、区分部402Bは、共通サーバ数が3または4となるファイルであれば2つ目の階層に区分し、共通サーバ数が5または6となるファイルを3つ目の階層に区分し、共通サーバ数が7または8となるファイルを4つ目の階層に区分する。
また、環境Aに含まれるサーバ全ての数と環境Bに含まれるサーバ全ての数とが異なる場合、数が多い方に対応する区分部402は、環境に含まれるサーバ群の中から、少ない数分のサーバを指定してもよい。どのサーバを指定するかについては、環境に含まれるサーバ群の中からファイル特定装置100の利用者等によって指定してもよいし、環境に含まれるサーバ群の中からランダムに指定してもよい。そして、数が多い方に対応する区分部402は、同一名称のファイルを、指定したサーバのうち同一名称のファイルのうち同一内容となるファイルを有するサーバの数に基づいて、複数の階層からいずれかの階層に区分してもよい。なお、区分した階層の情報は、RAM303、ディスク305などの記憶領域に記憶される。
抽出部403は、複数の環境のうちの環境間で、区分される階層の異なる同一名称のファイルを抽出する。たとえば、抽出部403は、図1の例では、ファイルf2を抽出する。抽出したファイルを特定する情報は、RAM303、ディスク305などの記憶領域に記憶される。
特定部404は、構成情報411に基づいて、複数の階層から環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する。特定する階層は、単数複数ともに有り得る。
たとえば、構成情報411が、ある環境に含まれるサーバ全ての数が10であるという情報を記憶しており、階層が10あるとする。このとき、特定部404は、複数の階層から、ある環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を10番目の階層とする。また、構成情報411が、ある環境に含まれるサーバ全ての数が10であり、所定のソフトウェアをインストールしたサーバの数が5であるという情報を記憶しており、階層が10あるとする。このとき、特定部404は、複数の階層から、ある環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を10番目の階層と5番目の階層とする。特定した階層の情報は、RAM303、ディスク305などの記憶領域に記憶される。
決定部405は、抽出部403が抽出した階層の異なる同一名称のファイルが区分された各階層に基づいて、複数の階層の各々の階層の逸脱度合を参照して、評価対象ファイルの危険度を決定する。ここで、階層の異なる同一名称のファイルが区分された各階層のうち、環境Aのいずれかのサーバが有する評価対象ファイルが区分された階層を第1の階層とし、環境Bのいずれかのサーバが有する評価対象ファイルが区分された階層を第2の階層とする。
また、決定部405は、逸脱度合を求める第1の逸脱関数に特定部404が特定した階層と第1の階層とを入力して得た第1の逸脱度合と、第1の逸脱関数に特定部404が特定した階層と第2の階層とを入力して得た第2の逸脱度合との差分を算出する。そして、決定部405は、算出した値を、評価対象ファイルの危険度として決定してもよい。第1の逸脱関数は、サーバ群が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層とサーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて逸脱度合を表す関数である。第1の逸脱関数は、図16にて後述する逸脱関数の第1の例に相当する。
また、特定部404が複数の階層を特定した場合には、決定部405は、特定した階層ごとに、第1の逸脱度合と第2の逸脱度合との差分を算出する。そして、決定部405は、特定した階層ごとの第1の逸脱度合と第2の逸脱度合との差分の和を、評価対象ファイルの危険度として決定してもよい。
また、決定部405は、逸脱度合を求める第2の逸脱関数に、構成情報411によって特定されるサーバの数と特定部404が特定した階層と第1の階層とを入力して得た第1の逸脱度合を算出する。そして、決定部405は、第2の逸脱関数に構成情報411によって特定されるサーバの数と特定部404が特定した階層と第2の階層とを入力して得た第2の逸脱度合を算出する。続けて、決定部405は、第1の逸脱度合と第2の逸脱度合との差分を算出することにより、評価対象ファイルの危険度を決定してもよい。第2の逸脱関数は、構成情報から特定されるサーバの数と、サーバ群が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層と、サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて逸脱度合を表す関数である。第2の逸脱関数は、図17にて後述する逸脱関数の第2の例に相当する。
また、決定部405は、第1の逸脱度合と第2の逸脱度合との差分として、第1の逸脱度合と第2の逸脱度合との差を算出してもよいし、第1の逸脱度合と第2の逸脱度合との差の絶対値を算出してもよい。なお、決定した評価対象ファイルの危険度は、RAM303、ディスク305などの記憶領域に記憶される。
図5は、ファイル集合テーブルの記憶内容の一例を示す説明図である。ファイル集合テーブル410は、環境に含まれるファイルの共通サーバ数を記憶するテーブルである。ファイル集合テーブル410は、環境ごとに生成されるテーブルである。図5に示すファイル集合テーブル410は、レコード501−1、501−2を含む。ファイル集合テーブル410は、ファイルパスと、共通サーバ数と、ファイルが存在するサーバと、いう3つのフィールドを含む。ファイルパスフィールドには、ファイルのフルパスが格納される。共通サーバ数フィールドには、ファイルパスフィールドで指定されたファイルを有し、かつファイルの内容が同一となったファイルを有するサーバの数が格納される。ファイルが存在するサーバフィールドには、ファイルパスフィールドで指定されたファイルを有するサーバの識別情報が格納される。
たとえば、レコード501−1は、ファイルパスが“/root/test_20130110.log”を有するサーバが、A,C,D,E,F,G,E,…であり、ファイルを有するサーバのうち、100台のサーバが内容が同一であることを示す。次に、図6〜図9を用いて、ファイル集合テーブル410の生成例について説明する。また、図6〜図9では、ファイルを矩形で表現する。
図6は、ファイル集合テーブルの生成例を示す説明図(その1)である。ファイル特定装置100は、不具合が発生した環境に含まれるサーバ間のdiffの結果に基づいて、ファイルを共通、変更、差分というファイル区分に分類する。
たとえば、ファイル特定装置100は、まず、不具合が発生した環境Aに含まれるサーバAとサーバBについて、サーバA、Bでファイルパスが同一のファイルがあるか否かを判断する。ここでは、サーバA、Bに存在する全てのファイルを処理対象とする。
同一のファイルがある場合、ファイル特定装置100は、サーバA、Bが有するファイルの内容が同一であるか否かを、diffツールを用いて判断する。ファイル特定装置100は、ファイルの内容が同一となったファイルを“共通”というファイル区分に分類する。また、ファイル特定装置100は、サーバA、Bが有するファイルの内容が異なるファイルを、“変更”というファイル区分に分類する。さらに、ファイル特定装置100は、サーバAに存在しサーバBに存在しないファイルや、サーバBに存在しサーバAに存在しないファイルを“差分”というファイル区分に分類する。
集合601は、サーバA、B間でファイルパスが同一となるファイルを含む。さらに、集合ABは、集合ABに含まれるファイルがサーバA、B間で内容が同一であるため、ファイル特定装置100によって“共通”というファイル区分に分類されたことを示す。また、集合A−Bは、集合A−Bに含まれるファイルがサーバA、B間で内容が異なるため、ファイル特定装置100によって“変更”というファイル区分に分類されたことを示す。さらに、集合Aは、集合Aに含まれるファイルがサーバAに存在しサーバBに存在しなかったため、ファイル特定装置100によって“差分”というファイル区分に分類されたことを示す。同様に、集合Bは、集合Bに含まれるファイルがサーバBに存在しサーバAに存在しなかったため、ファイル特定装置100によって“差分”というファイル区分に分類されたことを示す。
図7は、ファイル集合テーブルの生成例を示す説明図(その2)である。ファイル特定装置100は、図6で示したサーバA、B間のdiffの結果と同様に、環境Aに含まれるサーバ間のサーバA、B以外の全ての組合せに対して、“共通”、“変更”、“差分”に分類する。
図7の例では、ファイル特定装置100は、サーバA、Cの組合せと、サーバA、Dの組合せと、サーバB、Cの組合せと、サーバB、Dの組合せと、サーバC、Dの組合せと、…に対して、“共通”、“変更”、“差分”のいずれか一つに分類する。
環境Aに含まれるサーバ間の全ての組合せに対して、“共通”、“変更”、“差分”のいずれか一つに分類した後、ファイル特定装置100は、分類結果に基づいて、ファイルパスが同一となるファイルを有するサーバの数ごとの集合を生成する。
具体的に、図7に示すように、ファイル特定装置100は、ファイルパスが同一となるファイルのうち、全てのサーバの組合せにおいてファイル区分が“共通”または“変更”となったファイルを集合701に含める。集合701は、全てのサーバに存在しておりファイルパスが同一となるファイルを含む集合である。集合701は、ファイル区分が全て“共通”となったファイルを含む集合702と、ファイル区分が“変更”を含むファイルを含む集合703を含む。
また、ファイル特定装置100は、ファイルパスが同一となるファイルのうち、あるサーバの組合せではファイル区分が“差分”となり、別のサーバの組合せではファイル区分が“共通”または“変更”となったファイルを集合711、集合721、…に含める。集合711、721は、一部のサーバに存在しておりファイルパスが同一となるファイルを含む集合である。集合711、721は、ファイルが存在するサーバの組合せが異なる。また、ファイル特定装置100は、1つのサーバに存在するファイルを、集合731、732、733、734、…に含める。
以下、説明を簡略化するため、集合711は、サーバA、Bに存在しておりファイルパスが同一となるファイルを含む集合であり、集合721は、サーバA、Cに存在しておりファイルパスが同一となるファイルを含む集合であるとする。集合711は、サーバAと、サーバB以外のサーバとの組合せと、サーバBと、サーバA以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバA、Bの組合せにおいてファイル区分が“共通”となったファイルを含む集合712を含む。さらに、集合711は、サーバAと、サーバB以外のサーバとの組合せと、サーバBと、サーバA以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバA、Bの組合せにおいてファイル区分が“変更”となったファイルを含む集合713を含む。
また、集合721は、サーバAと、サーバC以外のサーバとの組合せと、サーバCと、サーバA以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバA、Cの組合せにおいてファイル区分が“共通”となったファイルを含む集合722を含む。さらに、集合721は、サーバAと、サーバC以外のサーバとの組合せと、サーバCと、サーバA以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバA、Cの組合せにおいてファイル区分が“変更”となったファイルを含む集合723を含む。
図8は、ファイル集合テーブルの生成例を示す説明図(その3)である。ファイルパスが同一となるファイルを有するサーバの数ごとの集合を生成後、ファイル特定装置100は、ファイルパスが同一となるファイルを有するサーバの数ごとの集合ごとに、ファイル区分に基づいて、ファイルが同一の内容となる集合に分類する。説明を簡略化するため、図8では、環境Aが、サーバA、B、C、Dという4つのサーバを有することとする。
たとえば、ファイル特定装置100は、集合702を集合ABCDとする。集合ABCDは、サーバ全ての組合せにおいて、ファイル区分が“共通”となったファイルである。言い換えれば、集合ABCDは、全てのサーバに存在しており、ファイルパスが同一であり、内容が同一となるファイルを含む。
また、ファイル特定装置100は、集合703が含むファイルのうち、サーバA,B,Cに存在するファイルの内容が同一であり、サーバDに存在するファイルの内容がサーバA,B,Cに存在するファイルの内容と異なるファイルを、集合ABC−Dに含める。以下、集合の符号の表記として、内容が同一のファイルが存在するサーバの識別情報同士を連結して表記し、内容が異なるファイルが存在するサーバの識別情報同士を“−”で結合して表記するものとする。たとえば、集合AB−C−Dは、集合703が含むファイルのうち、サーバA,Bに存在するファイルの内容が同一であり、サーバA,Bに存在するファイルの内容とサーバCに存在するファイルの内容とサーバDに存在するファイルの内容が異なるファイルを含む。
図8が示すように、少なくともサーバ3台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、集合ABC−D、ABD−C、ACD−B、BCD−A、ABC、ABD、ACD、BCDである。少なくともサーバ3台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、3台のうち2台を選ぶ組合せの通り=3となったファイルである。たとえば、集合ABC−Dに含まれるファイルは、サーバA,B、サーバA,C、サーバB,Cの組合せにおけるファイル区分が“共通”となり、サーバA,D、サーバB,D、サーバC,Dの組合せにおけるファイル区分が“変更”となったファイルである。
また、少なくともサーバ2台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、集合AB−C−D、…、AB−CD、…、AB−C、…、AB、…である。少なくともサーバ2台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、1つまたは2つとなったファイルである。たとえば、集合AB−C−Dに含まれるファイルは、サーバA,Bの組合せにおけるファイル区分が“共通”となり、サーバA,C、サーバA,D、サーバB,C、サーバB,D、サーバC,Dの組合せにおけるファイル区分が“変更”となったファイルである。また、集合AB−CDに含まれるファイルは、サーバA,B、サーバC,Dの組合せにおけるファイル区分が“共通”となり、サーバA,C、サーバA,D、サーバB,C、サーバB,Dの組合せにおけるファイル区分が“変更”となったファイルである。
また、少なくともサーバ1台に存在するファイルであり、ファイルパスが同一であれば内容が異なるファイルを含む集合は、集合A−B−C−D、A−B−C、…、A−B、…A、…である。少なくともサーバ1台に存在するファイルであり、ファイルパスが同一であれば内容が異なるファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、0であるファイルである。たとえば、集合A−B−C−Dに含まれるファイルは、サーバ全ての組合せにおけるファイル区分が“変更”となったファイルである。
図9は、ファイル集合テーブルの生成例を示す説明図(その4)である。ファイルが同一の内容となる集合に分類した後、ファイル特定装置100は、ファイルが同一の内容となる集合から、ファイル集合テーブル410を生成する。図9の例では、環境に含まれるサーバ数をNとする。また、図9の例では、図8の例と同様に、環境Aが、サーバA、B、C、Dという4つのサーバを有することとする。
たとえば、ファイル特定装置100は、集合ABCDに含まれるファイルについて、ファイルパスにファイルのファイルパス、共通サーバ数にN、ファイルが存在するサーバにサーバA〜Dの識別情報を格納するレコードをファイル集合テーブル410に追加する。図9の例では、ファイル特定装置100は、集合ABCDに含まれるファイルについて、N台のサーバ共通のファイル群として、レコード901−1〜901−3をファイル集合テーブル410に追加したことになる。
また、ファイル特定装置100は、集合ABC−Dに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数にN−1、ファイルが存在するサーバにサーバA〜Dの識別情報を格納するレコードをファイル集合テーブル410に追加する。図9の例では、ファイル特定装置100は、集合ABC−Dに含まれるファイルについて、レコード901−4、901−5をファイル集合テーブル410に追加する。同様に、ファイル特定装置100は、集合ABCに含まれるファイルについて、レコード901−8、901−9をファイル集合テーブル410に追加する。ファイル特定装置100は、N−1台のサーバ共通のファイル群として、レコード901−4〜901−11をファイル集合テーブル410に追加したことになる。
また、ファイル特定装置100は、集合AB−C−Dに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数にN−2、ファイルが存在するサーバにサーバA〜Dの識別情報を格納するレコードをファイル集合テーブル410に追加する。図9の例では、ファイル特定装置100は、集合AB−C−Dに含まれるファイルについて、レコード901−12、901−13をファイル集合テーブル410に追加する。同様に、ファイル特定装置100は、集合AB−CDに含まれるファイルについて、レコード901−16、901−17をファイル集合テーブル410に追加する。また、ファイル特定装置100は、集合AB−Cに含まれるファイルについて、レコード901−20、901−21をファイル集合テーブル410に追加する。さらに、ファイル特定装置100は、集合ABに含まれるファイルについて、レコード901−24、901−25をファイル集合テーブル410に追加する。ファイル特定装置100は、N−2台のサーバ共通のファイル群として、レコード901−12〜901−27をファイル集合テーブル410に追加したことになる。
また、ファイル特定装置100は、集合A−B−C−Dに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数に1、ファイルが存在するサーバにサーバA〜Dの識別情報を格納するレコードをファイル集合テーブル410に追加する。図9の例では、ファイル特定装置100は、集合A−B−C−Dに含まれるファイルについて、レコード901−28、901−29をファイル集合テーブル410に追加する。同様に、ファイル特定装置100は、集合A−B−Cに含まれるファイルについて、レコード901−30、901−31をファイル集合テーブル410に追加する。また、ファイル特定装置100は、集合A−Bに含まれるファイルについて、レコード901−34、901−35をファイル集合テーブル410に追加する。さらに、ファイル特定装置100は、集合Aに含まれるファイルについて、レコード901−38、901−39をファイル集合テーブル410に追加する。ファイル特定装置100は、サーバ固有のファイル群として、レコード901−28〜901−41をファイル集合テーブル410に追加したことになる。
次に、図10を用いて、共通サーバ数の差異があるファイルの抽出例について説明する。
図10は、共通サーバ数の差異があるファイルの抽出例を示す説明図である。ファイル特定装置100は、比較元環境となる環境Aに対するファイル集合テーブル410Aと、比較先環境となる環境Bに対するファイル集合テーブル410Bと、を生成し、共通サーバ数に差異のあるファイルを、危険性のあるファイルとして抽出する。環境Bは、環境Aの構成情報と類似する構成情報を有する。
図10では、環境Aに対するファイル集合テーブル410Aと、環境Bに対するファイル集合テーブル410Bと、の各レコードについて、同一のサーバ共通のファイル群を纏めて表示してある。
共通サーバ数に差異のあるファイルを、危険性のあるファイルと見做せる理由としては、同一のファイルパスであるにも関わらず、環境によって共通サーバ数に差異がある場合、設定変更の戻し忘れにより、差異が発生した可能性があるためである。
図10の例では、ファイル1は、ファイル集合テーブル410AにおいてN−2台のサーバ共通のファイル群に含まれるにも関わらず、ファイル集合テーブル410Bにおいてサーバ固有のファイル群に含まれており、共通サーバ数に差異がある。このように、ファイル特定装置100は、共通サーバ数に差異があるファイルを抽出する。
図11は、共通サーバ数の差異があるファイルにおける危険性の一例を示す説明図である。図11では、環境A、環境Bで共通サーバ数の差異がないファイル2と、環境A、環境Bで共通サーバ数の差異があるファイル3と、を用いて、危険性の有無を説明する。
ファイル2は、環境Aでの設定値は1024[MB]であり、環境Bでの設定値は2048[MB]であり、環境A、環境BともにN台のサーバ共通のファイル群に属する。ファイル2の設定値は環境A、B間で異なるが、構成情報が類似するならばファイルが属する共通サーバ数の集合も同一になる可能性が高いため、ファイル特定装置100は、ファイル2が危険性があるファイルではないと特定する。
一方、ファイル3は、環境Aでの設定値は512[MB]であり、環境Bでの設定値は1024[MB]であり、環境AではN−2台のサーバ共通のファイル群に属し、環境Bでは、サーバ固有のファイル群に属する。ファイル3について、構成情報が類似するにも関わらずファイルが属する共通サーバ数の集合が同一になっていないため、ファイル特定装置100は、ファイル3が危険性があるファイルであると特定する。
図10、図11の条件では、環境間で共通サーバ数の集合の差があるため、危険性があるファイルが複数特定される可能性が高い。そこで、ファイル特定装置100は、危険性があるファイルのうち、危険性が高いファイルを判定する。まず、図12では、危険性が高いファイルを判定する際に用いる、構成情報と共通サーバ数との関係について説明する。
図12は、構成情報と共通サーバ数との関係を示す説明図である。ある環境内のファイルは、次に示す属性に応じて、共通サーバ数がある程度決まる傾向がある。全サーバ共通のファイルは、共通サーバ数が多い集合に属する可能性が高い。また、サーバ固有のファイルは、共通サーバ数が少ない集合に属する可能性が高い。そして、構成情報に関連するファイルは、構成情報に依存した共通サーバ数の集合に属する可能性が高い。
たとえば、ある環境がサーバA、B、C、Dを有し、ある環境の構成情報は、ソフトウェアAがサーバA、Bにインストールされていることを特定する情報であるとする。このとき、ソフトウェアAの設定ファイルは、ソフトウェアAがサーバA、Bにインストールされていることから、共通サーバ数=2の集合に属する可能性が高い。図13〜図19を用いて、危険性があるファイルのうち、構成情報と共通サーバ数との関係を用いて危険性が高いファイルを判定する一例について説明する。
図13は、危険性と逸脱度合との関係を示す説明図である。ファイル特定装置100は、危険性があるファイルのうち、異なる環境間における比較対象ファイルに対する逸脱度合を用いて、比較対象ファイルに危険性が高いか否かを判定する。異なる環境間において類似する構成情報となるにも関わらず比較対象ファイルに対する逸脱度合の差の絶対値が大きい場合、ファイル特定装置100は、比較対象ファイルの危険性が高いと判定する。ここで、比較対象ファイルに対する逸脱度合は、構成情報と共通サーバ数とに依存する値であり、比較対象ファイルの同一名称であり環境内の他サーバのファイルと比較して内容がどれほど逸脱しているかを示す値である。比較対象ファイルに対する逸脱度合の詳細については、図14で後述する。
図13では、リソースが小さい環境Aと、環境Aに構成情報が類似し、リソースが中程度の環境Bとにファイル1、2がある。図13の例では、ファイル1の逸脱度合の差の絶対値より、ファイル2の逸脱度合の差の絶対値が大きい。したがって、ファイル特定装置100は、ファイル2の危険性が高いと判定する。
図14は、比較対象ファイルに対する逸脱度合の説明図である。具体的に、比較対象ファイルに対する逸脱度合は、環境内のサーバ間で、比較対象ファイルの内容が全て同一か、全て異なる場合に小さくなり、一部のサーバが有するファイルの内容だけ異なる場合に大きくなる値である。図14の(A)では、比較対象ファイルとして、ある環境における言語設定が記述されたファイルについて示す。図14の(A)が示すように、ある環境において、全てのサーバが有するファイルの言語設定が、日本語を示す“JP”であるとする。この場合、逸脱度合が最小となる。
図14の(B)でも、比較対象ファイルとして、ある環境における言語設定が記述されたファイルについて示す。図14の(B)が示すように、ある環境において、あるサーバが有するファイルの言語設定が、英語を示す“ENG”であり、あるサーバ以外の全てのサーバが有するファイルの言語設定が、“JP”であるとする。この場合、逸脱度合が最大となる。図14の(B)のように、1台のサーバだけ異なる内容になる可能性として、ある環境内で全て同一の内容であったファイルのうち、1台のサーバだけ、プログラムの不具合や、管理者などによる操作等による意図せぬ設定変更、または内容の戻し忘れがある。このように、意図せぬ不具合により、1台だけ異なる内容となっている可能性があるため、逸脱度合が大きくなる。
図14の(C)では、比較対象ファイルとして、ある環境におけるIP(Internet Protocol)アドレス設定が記述されたファイルについて示す。図14の(C)が示すように、ある環境において、全てのサーバのIPアドレスが全て異なるとする。この場合、逸脱度合が小さい値となる。逸脱度合が小さくなる理由として、全ての値が異なる場合、IPアドレスが一意に特定されるために設定されるように、意図的に異なる内容に設定された可能性があるためである。次に、図15において、環境間における比較対象ファイルに対する逸脱度合について説明する。
図15は、環境間における比較対象ファイルに対する逸脱度合の説明図である。類似する構成情報となる環境間では、比較対象ファイルに対する逸脱度合も似たような値となる可能性が高い。本実施の形態では、類似する構成情報となる環境間では、比較対象ファイルに対する逸脱度合も似たような値となる可能性が高いことを利用して、比較対象ファイルに対する逸脱度合に差があるファイルを、危険性が高いファイルとして判定する。
図15の(A)では、環境Aにおいて、比較対象ファイルの言語設定が1台のサーバだけ“ENG”であり、他のサーバが“JP”であるため、比較対象ファイルに対する逸脱度合が大きい。また、環境Bにおいても、比較対象ファイルの言語設定が1台のサーバだけ“ENG”であり、他のサーバが“JP”であるため、比較対象ファイルに対する逸脱度合が大きい。したがって、図15の(A)では、環境Aと環境Bとの逸脱度合の差がないため、ファイル特定装置100は、言語設定が記述された比較対象ファイルに対して危険性がないと判断する。
図15の(B)では、環境Aにおいて、比較対象ファイルの言語設定が1台のサーバだけ“ENG”であり、他のサーバが“JP”であるため、逸脱度合が大きい。また、環境Bにおいては、比較対象ファイルの言語設定が、全て異なる内容であり、逸脱度合が小さい。したがって、図15の(B)では、環境Aと環境Bとの逸脱度合の差があるため、ファイル特定装置100は、言語設定が記述された比較対象ファイルに対して危険性があると判断する。
次に、図16と図17を用いて、逸脱度合を求める逸脱関数の第1の例と第2の例について説明する。第1の例と第2の例による逸脱関数は、逸脱関数によって求められる逸脱度合の最小値が0となり、最大値が1となるような関数である。
図16は、逸脱関数の第1の例を示す説明図である。ファイル特定装置100は、図16の(A)でも示すように、逸脱関数f(A)について下記(1)式を用いて算出する。
ここで、eは自然対数の底である。また、Nは、環境に含まれるサーバの全台数である。また、Xは、環境Aが有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していないと見做す値であり、具体的には、構成情報から特定されるファイルを有するサーバの台数である。また、Aは、共通サーバ数である。
図16の(B)は、Aの値に対応する集合に関連付いた階層について図示してある。ファイル特定装置100は、(1)式に、XとNを設定することにより、共通サーバ数=Xが特定された階層の逸脱関数を用意することになる。図16の(B)では、ファイル特定装置100は、A=1が特定された階層1601と、A=2〜X−1が特定された階層1602と、A=Xが特定された階層1603と、A=X+1〜N−1が特定された階層1604と、A=Nが特定された階層1605とに区分する。
図16の(C)では、(1)式の算出結果として、Aと逸脱度合の値との関係をグラフ1611に示した例である。グラフ1611の横軸は、Aを示す。グラフ1611の縦軸は、逸脱度合を示す。グラフ1611は、N=100,X=40とした際の(1)式が描く曲線を表示したグラフである。グラフ1611が示すように、A=40のときに、逸脱度合の値が0となり、A=39または41のときに、逸脱度合の値が最大となる。
図17は、逸脱関数の第2の例を示す説明図である。図17の(A)でも示すように、ファイル特定装置100は、逸脱関数f(A)について下記(2)式を用いて算出する。
e、N、Xは、(1)式と同じ定義である。(2)式は、(1)式と比較して、構成情報から特定されるサーバの台数を加えることにより、多くのサーバが関係する構成ほど危険度を高く評価することができる。
図17の(B)では、(2)式の算出結果として、Aと逸脱度合の値との関係をグラフ1701に示した例である。グラフ1701の横軸は、Aを示す。グラフ1701の縦軸は、逸脱度合を示す。グラフ1701内にある実線1702は、N=100,X=40とした際の(2)式が描く曲線である。また、グラフ1701内にある破線1703は、N=100,X=80とした際の(2)式が描く曲線である。実線1702と破線1703とが示すように、N=100,X=80とした際のA=79または81のときの逸脱度合の値が、N=100,X=40とした際のA=39または41のときの逸脱度合の値より大きくなる。
次に、逸脱関数を用いて、逸脱度合の値を求める具体例を、図18、図19を用いて説明する。
図18は、逸脱関数による逸脱度合の値の算出例を示す説明図(その1)である。まず、ファイル特定装置100は、環境における構成情報に基づいて、複数の階層を生成する。そして、ファイル特定装置100は、共通サーバ数Aの取り得る値1〜Nを、構成情報によって特定されるソフトウェアがインストールされているサーバ数の階層や、ハードウェアを使用するサーバ数の階層に関連付ける。
図18の例では、ファイル特定装置100は、構成情報に基づいて第1の階層〜第5の階層という5つの階層を生成する。続けて、ファイル特定装置100は、構成情報に基づいて、第1の階層〜第5の階層から、環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する。
たとえば、環境が有するファイル群のうちサーバ固有のファイル群は、それぞれ内容が異なる可能性が高いため、ファイル特定装置100は、サーバ固有のファイル群について、A=1である階層1801を特定する。同様に、環境が有するファイル群のうち、ソフトウェアAやソフトウェアBに関連するファイル群は、共通サーバ数がX1個となる可能性が高い。したがって、ファイル特定装置100は、ソフトウェアAやソフトウェアBに関連するファイル群について、A=X1である階層1803を特定する。また、環境が有するファイル群のうちハードウェアCに関連するファイル群は、共通サーバ数がX2個となる可能性が高いため、ファイル特定装置100は、ハードウェアCに関連するファイル群について、A=X2である階層1804を特定する。また、環境が有するファイル群のうち全サーバ共通のファイル群は、共通サーバ数がN個となる可能性が高いため、ファイル特定装置100は、全サーバ共通のファイル群について、A=Nである階層1805を特定する。
図19は、逸脱関数による逸脱度合の値の算出例を示す説明図(その2)である。共通サーバ数Aを階層に区分した後、ファイル特定装置100は、各階層の逸脱関数を生成し、生成した逸脱関数から、A=1〜Nまでの各階層の逸脱度合の値の和を求める。そして、ファイル特定装置100は、評価対象ファイルの危険度を、環境Aにおける評価対象ファイルが区分される階層の逸脱度合の値の和と、環境Bにおける評価対象ファイルが区分される階層の逸脱度合の値の和と、の差の絶対値とする。
図19の例では、ファイル特定装置100は、階層1801〜階層1805の逸脱関数をそれぞれ生成し、生成した逸脱関数から、A=1〜Nまでの各階層の逸脱度合の値の和を求める。生成した逸脱関数にA=1〜Nを入力して得られる逸脱度合の値をプロットして描く曲線を、グラフ1900内に示す。また、A=1〜Nまでの各階層の逸脱関数の和がプロットされることにより形成される曲線を、グラフ1910内に示す。グラフ1900の横軸は逸脱度合を示す。グラフ1910の横軸は、逸脱度合の和を示す。グラフ1900およびグラフ1910の縦軸は共通サーバ数Aを示す。
具体的に、ファイル特定装置100は、階層1801の逸脱関数として、X=1の逸脱関数を生成する。X=1の逸脱関数にA=1〜Nを入力して得られる逸脱度合の値がプロットされることにより形成される曲線は、グラフ1900内の実線1901である。階層1802の逸脱関数は、所属する構成情報の項目がないため、ファイル特定装置100は階層1802の逸脱関数を生成しない。
また、ファイル特定装置100は、階層1803の逸脱関数として、X=X1の逸脱関数を生成する。X=X1の逸脱関数にA=1〜Nを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ1900内の点線1902である。
また、ファイル特定装置100は、階層1804の逸脱関数として、X=X2の逸脱関数を生成する。X=X2の逸脱関数にA=1〜Nを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ1900内の一点鎖線1903である。
また、ファイル特定装置100は、階層1805の逸脱関数として、X=Nの逸脱関数を生成する。X=Nの逸脱関数にA=1〜Nを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ1900内の長二点鎖線1904である。
各階層の逸脱関数の生成後、ファイル特定装置100は、A=1〜Nまでの各階層の逸脱関数より逸脱度合の値を算出して、逸脱度合の和を求める。A=1〜Nまでの各階層の逸脱度合の和がプロットされることにより形成される曲線は、グラフ1910内の曲線1911となる。たとえば、ファイル1の危険度は、グラフ1910より、環境Aにおける逸脱度合と環境Bにおける逸脱度合との差の絶対値となる。
(具体例)
次に、以下、図20〜図27を用いて、本実施の形態の具体例を説明する。具体例では、環境Aのあるファイルに対して意図せぬ設定変更があった場合、本実施の形態におけるファイル評価方法を用いて、あるファイルの名称を特定するところまでを説明する。
図20は、具体例に用いる環境A、Bと構成情報の説明図である。具体例に用いる環境A、環境Bともに、サーバA〜Dを有する。また、環境Aの各サーバは、構成情報411Aに従ったハードウェアを使用しており、ソフトウェアをインストールしてある。同様に、環境Bの各サーバは、構成情報411Bに従ったハードウェアを使用しており、ソフトウェアをインストールしてある。図20に示す構成情報411Aと構成情報411Bとは同一の内容であるとする。
構成情報411A、411Bは、データベース(DataBase:DB)サーバソフトウェア1がサーバA、Bにインストールされており、DBサーバソフトウェア2がサーバC、Dにインストールされており、WebサーバソフトウェアがサーバDにインストールされていることを示す。また、構成情報411A、411Bは、サーバA〜Dを有することが特定する情報を含む。以下、DBサーバソフトウェアを、単に、「DB」と呼称する。また、Webサーバソフトウェアを、単に、「Web」と呼称する。
図20の例では、構成情報411Aと構成情報411Bとが同一の内容であったため、ファイル特定装置100は、環境Aと環境Bとの構成が類似すると判断する。以降の図では、構成情報411Aと構成情報411Bとのうち、構成情報411Aのみを用いて説明を行う。また、構成情報411Aと構成情報411Bとが異なる内容であっても、たとえば、2つの環境のサーバの数の差が所定の閾値未満であれば、ファイル特定装置100は、類似すると判断してもよい。
図21は、具体例に用いる環境A、Bが有するファイルの説明図である。表2101と表2102は、環境Aと環境Bとが有するファイルの個数を示す。表2101は、ソフトウェアのインストールに伴うファイルの数を示す。具体的に、サーバAとサーバBとは、DB1のインストールに伴い100個のファイルを有する。また、サーバCとサーバDとは、DB2のインストールに伴い100個のファイルを有する。さらに、サーバDは、Webのインストールに伴い100個のファイルを有する。
表2102は、サーバが固有で有するファイルの数を示す。サーバAは、サーバA固有である10個のファイルを有する。また、サーバBは、サーバB固有である10個のファイルを有する。また、サーバCは、サーバC固有である10個のファイルを有する。また、サーバDは、サーバD固有である10個のファイルを有する。
環境の構築後、意図せぬ設定変更により、環境AのサーバCのDB2に関連する1ファイルを変更したとする。以下に、本実施の形態との比較として、環境内のサーバ間でdiffをとった場合について説明する。
環境内のサーバ間でdiffをとる場合、環境AにおけるサーバAとサーバBとで差異のあるファイルは、表2102により20ファイルである。また、環境AにおけるサーバAとサーバCとで差異のあるファイルは、表2101と表2102とにより220ファイルである。また、環境AにおけるサーバAとサーバDとで差異のあるファイルは、表2101と表2102とにより320ファイルである。また、環境AにおけるサーバBとサーバCとで差異のあるファイルは、表2101と表2102とにより220ファイルである。また、環境AにおけるサーバBとサーバDとで差異のあるファイルは、表2101と表2102とにより320ファイルである。また、環境AにおけるサーバCとサーバDとで差異のあるファイルは、表2101と表2102と、変更したファイルとにより121ファイルである。
以上より、環境Aにおけるdiff比較結果は、1221ファイル異なることがわかったが、異なるファイルが1221個もあるため、変更ファイルを特定することが難しい。
また、環境Bについて、サーバ間の差異のあるファイルの個数は、サーバCとサーバD間以外については環境Aと同一であるため、説明を省略する。環境BにおけるサーバCとサーバDとで差異のあるファイルは、表2101と表2102とにより120ファイルである。
以上より、環境Bにおけるdiff比較結果は、1220ファイル異なることがわかったが、異なるファイルが1220個もあるため、変更ファイルを特定することが難しい。
さらに、本実施の形態との比較として、環境間でのdiff比較結果を比較したとする。環境Aでは、サーバCとサーバDで差異のあるファイルが121個であり、環境Bでは、サーバCとサーバDで差異のあるファイルが120個であるから、1ファイル異なることがわかるが、121個のどれかを特定することが難しい。
続けて、図22〜図26を用いて、本実施の形態におけるファイル評価方法を用いるところまでを説明し、図27を用いて、ファイル評価方法の結果を表示した例を示す。
図22は、ファイル集合テーブルの生成の具体例を示す説明図である。利用者の操作等により、ファイル評価処理の実行要求を受け付けた場合、ファイル特定装置100は、環境ごとに、任意のサーバの組合せに対して、差異があるか否かを、diffを用いて判断する。判断結果が、差異結果テーブル2201である。図22に示す差異結果テーブル2201は、レコード2201−1とレコード2201−2とを有する。
差異結果テーブル2201は、ファイルパスと、比較サーバと、差異と、ファイルが存在するサーバと、いう2つのフィールドを含む。ファイルパスフィールドには、ファイルのフルパスが格納される。比較サーバフィールドには、比較した2つのサーバの識別情報が格納される。差異フィールドには、2つのサーバが有するファイルの内容に差異があるか否かを示す識別子が格納される。ファイルが存在するサーバフィールドには、ファイルパスフィールドで指定されるファイルを有するサーバの識別情報が格納される。
たとえば、レコード2201−1は、ファイルパスが“/root/db1/default.ini”となるファイルについて、サーバAとサーバBともに有し、サーバAとサーバBとが有する内容に差異がないことを示す。
ファイル特定装置100は、環境ごとに、全てのサーバの組合せに対して差異があるか否かを判断し、1環境におけるファイル集合テーブル2202を作成する。図22の例では、レコード2202−1は、“/root/db1/default.ini”を有するサーバが、A、Bであり、ファイルを有するサーバのうち、2台のサーバが内容が同一であることを示す。また、レコード2202−2は、“/etc/…/ifcfg−eth0”を有するサーバが、A、Bであり、ファイルを有するサーバのうち、2台のサーバが内容が異なることを示す。
図23は、共通サーバ数の差異があるファイルの具体例を示す説明図である。ファイル特定装置100は、環境Aに対するファイル集合テーブル410Aと、環境Bに対するファイル集合テーブル410Bとから、集合差異テーブル2301を生成する。
図23に示す環境Aに対するファイル集合テーブル410Aは、レコード410A−1〜410A−5を有する。図23に示す環境Bに対するファイル集合テーブル410Bは、レコード410B−1〜410B−5を有する。ここで、レコード410A−1とレコード410B−1とは、DB1に関連する100個のファイルのうちの1つのファイルに対応するレコードである。レコード410A−2、3とレコード410B−2、3とは、DB2に関連する100個のファイルのうちの2つのファイルに対応するレコードである。レコード410A−4とレコード410B−4とは、Webに関連する100個のファイルのうちの1つのファイルに対応するレコードである。レコード410A−5とレコード410B−5とは、サーバ固有で異なる10個のファイルのうちの1つのファイルに対応するレコードである。
図23に示す集合差異テーブル2301は、レコード2301−1〜2301−5を有する。集合差異テーブルは、ファイルパスと、2つの共通サーバ数と、いう3つのフィールドを有する。ファイルパスフィールドは、ファイル集合テーブルのファイルパスフィールドと同一の値となる。共通サーバ数フィールドは、比較元環境と比較先環境という2つの環境における共通サーバ数が格納される。2つの共通サーバ数フィールドに格納された値が異なるファイルが、図11で説明した共通サーバ数の差異があるファイルとなる。
たとえば、レコード2301−1は、“/root/db1/default.ini”について、レコード410A−1により得た環境Aにおける共通サーバ数が2であり、レコード410B−1により得た環境Bにおける共通サーバ数が2であることを示す。
図23の例では、ファイル特定装置100は、レコード2301−3に対して、同一名称のファイルであるのに、共通サーバ数が環境Aと環境Bとで異なることを特定する。この時点で、ファイル特定装置100は、レコード2301−3が示す、“/root/db2/db.conf”の内容に差異があることを特定する。続けて、“/root/db2/db.conf”を比較対象ファイルとして、比較対象ファイルがどの程度危険であるかを、危険度を求めることにより判定する。図24において、階層の生成の具体例について説明する。また、図25において、危険度の算出例について説明する。
図24は、階層の生成の具体例を示す説明図である。ファイル特定装置100は、構成情報411Aにおけるハードウェア、ソフトウェアといった項目ごとに、環境に含まれるサーバ群Nのうち、項目に関連するサーバ数を計数する。図24の例では、ファイル特定装置100は、DB1が2であり、DB2が2であり、Webが1であると計数する。続けて、ファイル特定装置100は、構成情報の各項目と、全サーバ共通のファイル群と、サーバ固有のファイル群とから、構成情報の集合化テーブル2401を生成する。
図24に示す構成情報の集合化テーブル2401は、レコード2401−1〜2401−5を有する。構成情報の集合化テーブル2401は、構成情報項目と、共通サーバ数という2つのフィールドを有する。構成情報項目は、環境に含まれるファイル群のうち、構成情報の各項目に関連するファイル群か、全サーバ共通のファイル群か、サーバ固有のファイル群か、のいずれかが格納される。共通サーバ数は、構成情報項目に格納された情報から特定されるファイル群が階層に区分された際に、内容が逸脱していないと見做せる階層に関連付けられた共通サーバ数が格納される。ファイル特定装置100は、ファイル群区分された際にファイル群の内容が逸脱していない階層を、構成情報411Aから特定する。
たとえば、レコード2401−1は、全サーバ共通のファイル群が階層に区分された際に内容が逸脱していない階層が、構成情報411Aが示す共通サーバ数=4に関連付いた階層であることを示す。また、レコード2401−2は、DB1に関連するファイル群が階層に区分された際に内容が逸脱していない階層が、構成情報411Aで計数したDB1=2に関連付いた階層であることを示す。
続けて、ファイル特定装置100は、構成情報の集合化テーブル2401から、階層を複数生成する。図24では、ファイル特定装置100は、以下に示す、階層2411〜2414を生成する。
階層2411は、共通サーバ数=1に関連付いたサーバ固有に関連するファイルが区分される可能性が高い階層である。階層2412は、共通サーバ数=2に関連付いたDB1、DB2に関連するファイルが区分される可能性が高い階層である。階層2413は、共通サーバ数3に関連付いたどのファイルも区分される可能性が低い階層である。階層2414は、共通サーバ数4に関連付いた全サーバに共通するファイルが区分される階層である。
階層を生成する際には、ファイル特定装置100は、共通サーバ数の最大数分階層を生成してもよい。また、ファイル特定装置100は、構成情報の集合化テーブル2401の共通サーバ数フィールドに格納された値に対応する階層を生成するとともに、構成情報の集合化テーブル2401の共通サーバ数フィールドにない値を纏めた階層を生成してもよい。たとえば、共通サーバ数の最大値が10であり、構成情報の集合化テーブル2401の共通サーバ数フィールドに、1、5、10という値が格納されていたとする。この場合、ファイル特定装置100は、共通サーバ数=1に関連付いた階層と、共通サーバ数=2〜4に関連付いた階層と、共通サーバ数=5に関連付いた階層と、共通サーバ数=6〜9に関連付いた階層と、共通サーバ数=10に関連付いた階層とを生成する。
図25は、危険度の算出の具体例を示す説明図である。ファイル特定装置100は、逸脱関数のXに各階層の共通サーバ数を設定して、各階層の逸脱関数を用意する。続けて、ファイル特定装置100は、構成情報項目ごとにA=1〜Nまでの各階層の逸脱関数より逸脱度合の値を算出して、各階層の逸脱度合の和を求める。そして、ファイル特定装置100は、比較元環境における比較対象ファイルが区分される階層の逸脱度合と比較先環境における比較対象ファイルが区分される階層の逸脱度合との差の絶対値を危険度として決定する。
なお、階層に関連付いた共通サーバ数の値が複数あるならば、ファイル特定装置100は、階層に関連付いた共通サーバ数の値の中央値をXに設定して、該当の階層の逸脱関数を用意してもよい。また、図19で説明したように、階層に区分される構成情報の項目がない場合、ファイル特定装置100は、該当の階層の逸脱関数を用意しない。図25の例で用いる逸脱関数は、図16で説明した(1)式を用いる。
たとえば、ファイル特定装置100は、(1)の処理として、階層2414の逸脱関数として、(1)式にN=4、X=4を設定した逸脱関数を用意する。そして、ファイル特定装置100は、用意した逸脱関数のAに、階層2411〜2414に関連付いた共通サーバ数の値1〜4をそれぞれ代入して、逸脱度合の値として、それぞれ0.11、0.37、0.78、0を得る。
同様に、ファイル特定装置100は、(2)の処理として、階層2412の逸脱関数として、(1)式にN=4、X=2を設定した逸脱関数を用意する。そして、ファイル特定装置100は、用意した逸脱関数のAに、階層2411〜2414に関連付いた共通サーバ数の値1〜4をそれぞれ代入して、逸脱度合の値として、それぞれ0.78、0、0.78、0.37を得る。また、ファイル特定装置100は、(3)の処理として、(1)式にN=4、X=2を設定した逸脱関数のAに、階層2411〜2414に関連付いた共通サーバ数の値1〜4をそれぞれ代入して、逸脱度合の値として、それぞれ0.78、0、0.78、0.37を得る。
また、ファイル特定装置100は、(4)の処理として、階層2411の逸脱関数として、(1)式にN=4、X=1を設定した逸脱関数を用意する。そして、ファイル特定装置100は、用意した逸脱関数のAに、階層2411〜2414に関連付いた共通サーバ数の値1〜4をそれぞれ代入して、逸脱度合の値として、それぞれ0、0.78、0.37、0.11を得る。また、ファイル特定装置100は、(5)の処理として、(1)式にN=4、X=1を設定した逸脱関数のAに、階層2411〜2414に関連付いた共通サーバ数の値1〜4をそれぞれ代入して、逸脱度合の値として、それぞれ0、0.78、0.37、0.11を得る。
各階層の逸脱度合の値を算出した後、ファイル特定装置100は、階層に対応する共通サーバ数の値ごとに、構成情報項目の逸脱度合の値の和を求める。たとえば、階層2411に対して、ファイル特定装置100は、0.11+0.78+0.78+0+0=1.67を算出する。同様に、階層2412に対して、ファイル特定装置100は、0.37+0+0+0.78+0.78=1.93を算出する。また、階層2413に対して、ファイル特定装置100は、0.78+0.78+0.78+0.37+0.37=3.08を算出する。また、階層2414に対して、ファイル特定装置100は、0+0.37+0.37+0.11+0.11=0.96を算出する。図25では、共通サーバ数に対応する各構成情報項目の逸脱度合の値の和を、グラフ2501にプロットしてある。
比較対象ファイルは、環境Aでは階層2412に区分され、環境Bでは階層2411に区分される。したがって、ファイル特定装置100は、レコード2301−3で示したファイルの危険度を、1.93−1.67=0.26と算出する。
図26は、危険度の妥当性を示す説明図である。図26では、図25で求めた危険度の妥当性として、危険度が、真に危険性の高いファイルにおいて値が大きくなるかについて説明する。図26では、図25で求めた(第1の例)と、(第2の例)とを用いて説明を行う。(第1の例)は、ファイル特定装置100が、比較対象ファイルを、環境Aでは階層2411に区分するとともに、環境Bでは階層2412に区分した場合である。(第2の例)は、ファイル特定装置100が、比較対象ファイルを、環境Aでは階層2413に区分するとともに、環境Bでは階層2412に区分した場合である。
(第1の例)で示す、危険度=0.26について、環境Aにおける比較対象ファイルは、サーバ固有、およびWebが属する階層2411に区分されている。したがって環境Aにおける比較対象ファイルは、サーバ固有またはWebに関連するファイルの可能性があるため、危険度が大きい値とならない。
(第2の例)で示す、危険度=1.15について、環境Aにおける比較対象ファイルは、構成情報項目が存在しない階層2413に区分されている。したがって、環境Aにおける比較対象ファイルは、意図せぬ設定変更が行われた可能性があるため、危険度が大きい値となる。
図27は、危険度の表示例を示す説明図である。ファイル特定装置100は、危険度の表示を行う画面2701をディスプレイ307に表示することにより、危険度の高いファイルを利用者に通知する。以下に、画面2701の使用例を説明する。
ファイル特定装置100は、利用者によるマウス309の操作によって、リストボックス2711とリストボックス2712との機能により、比較元環境と比較先環境とを指定する。続けて、利用者によるマウス309の操作によって抽出ボタン2713が押下された場合、図22〜図25までで説明した一連の処理を行う。処理終了後、ファイル特定装置100は、リスト2714に危険度が高い順にファイルパスと危険度とを表示する。このとき、利用者によるキーボード308やマウス309の操作によって危険度下限値テキストボックス2715と危険度上限値テキストボックス2716とに値が入力されていたとする。このとき、ファイル特定装置100は、危険度を算出したファイルのうち、危険度が危険度下限値テキストボックス2715に入力された値以上かつ危険度上限値テキストボックス2716に入力された値以下であるファイルをリスト2714に表示する。
また、ファイル特定装置100は、利用者によるマウス309の操作によって、リスト2714のある一項目が選択された場合、ファイル集合テーブル410A、410Bから選択されたファイルパスに対応するレコードを抽出する。そして、ファイル特定装置100は、抽出したレコードのファイルが存在するサーバフィールドの内容を、リスト2717に表示する。
利用者は、リスト2714とリスト2717とを参照して、危険性が高いファイルの内容を確認する。図27の例では、利用者は、環境AのサーバA、Bにある“/root/db2/db.conf”の内容を閲覧して、不具合がないかを確認する。
続けて、図28〜図33を用いて、ファイル特定装置100が実行するファイル評価処理について説明する。
図28は、ファイル評価処理手順の一例を示すフローチャートである。ファイル評価処理は、ファイルに対して危険性の度合を示す評価値となる危険度を算出する処理である。ファイル特定装置100は、ファイル集合テーブル作成処理を実行する(ステップS2801)。ファイル集合テーブル作成処理は、図29で後述する。次に、ファイル特定装置100は、集合差異ファイル特定処理を実行する(ステップS2802)。集合差異ファイル特定処理は、図30で後述する。続けて、ファイル特定装置100は、危険度算出処理を実行する(ステップS2803)。次に、ファイル特定装置100は、ファイルパスと危険度とを出力する(ステップS2804)。
ステップS2804の処理終了後、ファイル特定装置100は、ファイル評価処理を終了する。ファイル評価処理を実行することにより、ファイル特定装置100は、危険性が高いファイルを利用者に通知することができる。
図29は、ファイル集合テーブル作成処理手順の一例を示すフローチャートである。ファイル集合テーブル作成処理は、比較元環境と比較先環境のファイル集合テーブルを作成する処理である。
ファイル特定装置100は、利用者の操作により、比較対象のうちの比較元環境と比較先環境とを指定する(ステップS2901)。次に、ファイル特定装置100は、比較元環境と比較先環境とのうちの未選択の環境を選択する(ステップS2902)。続けて、ファイル特定装置100は、選択した環境内のサーバ群の組合せから、未選択の組合せとなるサーバAとサーバBとを選択する(ステップS2903)。
次に、ファイル特定装置100は、サーバAのファイルパス一覧を作成する(ステップS2904)。続けて、ファイル特定装置100は、サーバBのファイルパス一覧を作成する(ステップS2905)。次に、ファイル特定装置100は、サーバAのファイルパス一覧とサーバBのファイルパス一覧とを用いて、ファイルパス同士のdiff結果から、ファイルを“共通”、“変更”、“差分”のいずれか一つに分類する(ステップS2906)。続けて、ファイル特定装置100は、分類結果を用いて、サーバAとサーバBの差異結果テーブルを作成する(ステップS2907)。次に、ファイル特定装置100は、選択した環境内のサーバ群の組合せの全てを選択したか否かを判断する(ステップS2908)。
まだ選択していない環境内のサーバ群の組合せがある場合(ステップS2908:No)、ファイル特定装置100は、ステップS2903の処理に移行する。選択した環境内のサーバ群の組合せの全てを選択した場合(ステップS2908:Yes)、ファイル特定装置100は、サーバ群の組合せに対応する差異結果テーブルから、選択した環境でのファイル集合テーブルを作成する(ステップS2909)。
続けて、ファイル特定装置100は、比較元環境および比較先環境を選択したか否かを判断する(ステップS2910)。比較元環境または比較先環境のいずれかを選択していない場合(ステップS2910:No)、ファイル特定装置100は、ステップS2902の処理に移行する。比較元環境および比較先環境を選択した場合(ステップS2910:Yes)、ファイル特定装置100は、ファイル集合テーブル作成処理を終了する。ファイル集合テーブル作成処理を実行することにより、ファイル特定装置100は、比較元環境と比較先環境のファイル集合テーブルを作成することができる。
図30は、集合差異ファイル特定処理手順の一例を示すフローチャートである。集合差異ファイル特定処理は、集合差異テーブル2301を生成して、共通サーバ数に差異があるファイルを特定する処理である。
ファイル特定装置100は、比較元環境のファイル集合テーブル410と、比較先環境のファイル集合テーブル410とから、集合差異テーブル2301を生成する(ステップS3001)。次に、ファイル特定装置100は、集合差異テーブル2301の比較元環境と比較先環境とで共通サーバ数に差異があるファイルパスを抽出する(ステップS3002)。ステップS3002の処理終了後、ファイル特定装置100は、集合差異ファイル特定処理を終了する。集合差異ファイル特定処理を実行することにより、ファイル特定装置100は、共通サーバ数に差異があるファイルを特定することができる。
図31は、危険度算出処理手順の一例を示すフローチャート(その1)である。また、図32は、危険度算出処理手順の一例を示すフローチャート(その2)である。さらに、図33は、危険度算出処理手順の一例を示すフローチャート(その3)である。危険度算出処理は、共通サーバ数に差異があるファイルに対して危険度を算出する処理である。
ファイル特定装置100は、構成情報を読み込む(ステップS3101)。具体的に、ステップS3101の処理について、ファイル特定装置100は、SNMP(Simple Network Management Protocol)や、構成管理をチェックするスクリプトを使用して登録された構成情報を管理する構成管理データベース(CMDB:Configuration Management Database)から読み込む。スクリプトは、環境内の各サーバ上でコマンドを実行するスクリプトである。
次に、ファイル特定装置100は、構成情報の項目ごとに、環境に含まれるサーバ群Nのうち、項目に関連するサーバ数を計数する(ステップS3102)。続けて、ファイル特定装置100は、構成情報の各項目と、全サーバ共通のファイル群と、サーバ固有のファイル群とから、構成情報の集合化テーブル2401を生成する(ステップS3103)。次に、ファイル特定装置100は、構成情報の集合化テーブル2401に基づいて、階層を複数生成する(ステップS3104)。
続けて、ファイル特定装置100は、構成情報の集合化テーブル2401の先頭のレコードを選択する(ステップS3105)。次に、ファイル特定装置100は、構成情報411に基づいて、選択したレコードに対応するファイル群が区分された際に内容が逸脱していない階層を特定する(ステップS3106)。
続けて、ファイル特定装置100は、逸脱関数のXに特定した階層に関連付いた共通サーバ数を設定する(ステップS3107)。次に、ファイル特定装置100は、逸脱関数のAに、各階層に関連付いた共通サーバ数を代入して、各階層の逸脱度合の値を算出する(ステップS3108)。
続けて、ファイル特定装置100は、構成情報の集合化テーブル2401の全てのレコードを選択したか否かを判断する(ステップS3109)。まだ選択していない構成情報の集合化テーブル2401のレコードがある場合(ステップS3109:No)、ファイル特定装置100は、構成情報の集合化テーブル2401の次のレコードを選択する(ステップS3110)。ステップS3110の処理終了後、ファイル特定装置100は、ステップS3106の処理に移行する。構成情報の集合化テーブル2401の全てのレコードを選択した場合(ステップS3109:Yes)、ファイル特定装置100は、図32に示すステップS3201に移行する。
図32において、ステップS3109:Yesとなった場合、ファイル特定装置100は、複数の階層のうちの先頭の階層を選択する(ステップS3201)。次に、ファイル特定装置100は、選択した階層に関連付いた共通サーバ数に対して、各構成情報のレコードの逸脱関数の値の和を算出する(ステップS3202)。続けて、ファイル特定装置100は、全ての階層を選択したか否かを判断する(ステップS3203)。まだ選択していない階層がある場合(ステップS3203:No)、ファイル特定装置100は、複数の階層の次の階層を選択する(ステップS3204)。ステップS3204の処理終了後、ファイル特定装置100は、ステップS3202の処理に移行する。全ての階層を選択した場合(ステップS3203:Yes)、ファイル特定装置100は、図33に示すステップS3301に移行する。
図33において、ステップS3203:Yesとなった場合、ファイル特定装置100は、比較元環境と比較先環境とで共通サーバ数の差異がある同一名称のファイルのうち、先頭のファイルを評価対象ファイルとして選択する(ステップS3301)。次に、ファイル特定装置100は、複数の階層の中から、評価対象ファイルを、比較元環境の共通サーバ数に対応する階層に区分する(ステップS3302)。続けて、ファイル特定装置100は、複数の階層の中から、評価対象ファイルを、比較先環境の共通サーバ数に対応する階層に区分する(ステップS3303)。次に、ファイル特定装置100は、ファイルに対する危険度を、比較元環境の階層に対応する逸脱度合の値と、比較先環境の階層に対応する逸脱度合の値と、の差として決定する(ステップS3304)。
続けて、ファイル特定装置100は、比較元環境と比較先環境とで共通サーバ数の差異があるファイルパスの全てを選択したか否かを判断する(ステップS3305)。共通サーバ数の差異があるファイルパスの全てを選択していない場合(ステップS3305:No)、ファイル特定装置100は、次のファイルパスを選択する(ステップS3306)。ステップS3306の処理終了後、ファイル特定装置100は、ステップS3302の処理に移行する。
共通サーバ数の差異があるファイルパスの全てを選択した場合(ステップS3305:Yes)、ファイル特定装置100は、共通サーバ数の差異があるファイルパスを、危険度の降順に並び替える(ステップS3307)。ファイル特定装置100は、ファイル集合テーブル410とともに、共通サーバ数の差異があるファイルパスと危険度とを出力する(ステップS3308)。ステップS3308の処理終了後、ファイル特定装置100は、危険度算出処理を終了する。危険度算出処理を実行することにより、ファイル特定装置100は、共通サーバ数に差異があるファイルに対する危険度を算出することができる。
なお、ステップS3106について、ファイル特定装置100は、比較元環境に含まれるファイル群について階層を特定した後、比較先環境に含まれるファイル群について階層を特定してもよい。比較元環境と比較先環境との構成が類似するため、特定される階層は、比較元環境と比較先環境とで同一になる可能性が高い。
また、比較元環境と比較先環境とで特定された階層が同一にならない場合、次に示す方法により、危険度を算出してもよい。まず、ステップS3107とステップS3108において、ファイル特定装置100は、逸脱関数のXに、比較元環境について特定した階層に関連付いた共通サーバ数を設定し、各階層の逸脱度合の値を算出する。同様に、ファイル特定装置100は、逸脱関数のXに、比較先環境について特定した階層に関連付いた共通サーバ数を設定し、各階層の逸脱度合の値を算出する。
次に、ステップS3202において、ファイル特定装置100は、選択した階層に関連付いた共通サーバ数に対して、比較元環境における各構成情報のレコードの逸脱関数の値の和と、比較先環境における各構成情報のレコードの逸脱関数の値の和とを算出する。続けて、ステップS3304において、ファイル特定装置100は、「比較元環境の階層に対応する逸脱度合の値」について、比較元環境における各構成情報のレコードの逸脱関数の値の和から取得する。同様に、ファイル特定装置100は、「比較先環境の階層に対応する逸脱度合の値」について、比較先環境における各構成情報のレコードの逸脱関数の値の和から取得する。
以上説明したように、ファイル特定装置100によれば、各環境が有するファイル群の同一パスのファイルを共通サーバ数に応じて階層に区分し、区分される階層の異なる同一名称のファイルを抽出する。これにより、ファイルの内容に不具合がある可能性があるファイルを精度良く特定して利用者にファイルの情報を提供できる。利用者は、提供されたファイルから順にファイルの内容を確認することにより、問題発生の解決を早く行える可能性が高まる。
また、ファイル特定装置100によれば、区分される階層の異なる同一名称のファイルにおける2つの環境の階層に対応する逸脱度合の差を、同一名称のファイルの危険度を求める。
これにより、ファイル特定装置100は、区分される階層の異なる同一名称のファイルが複数ある場合、さらに精度良くファイルの内容に不具合がある可能性が高いファイルを特定して利用者にファイルの情報を提供できる。精度良く可能性が高いファイルを特定できる理由として、区分される階層の異なる同一名称のファイルにも、内容が正規である可能性もあり、このような同一名称のファイルを除いて特定することができるためである。
また、ファイル特定装置100によれば、構成情報411とに基づいて複数の階層を生成し、環境Aと環境Bとのファイル群を、共通サーバ数と構成情報411とに基づいて複数の階層のうちのいずれかに区分してもよい。構成情報411には、サーバの数が特定できる情報を有する。
たとえば、サーバの数Nに一致する数分階層を生成した場合、サーバの数Nに一致する階層は、ファイル群が区分された際に同一名称のファイル同士の内容が逸脱していなく、他の階層は、内容が逸脱していることになる。このように、ファイルの内容の逸脱度合に応じて階層を生成することにより、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができる。また、サーバの数Nに対応する階層と、サーバの数N−1、N−2、…に対応する階層と、いうように階層を生成してもよい。これにより、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができることを維持しつつ、階層数が減少した分、ファイル評価処理の処理量を抑制することができる。
また、構成情報411は、環境における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する情報でもよい。環境に含まれるファイル群のうち、共通サーバ数が所定のハードウェアを有するサーバの数や所定のソフトウェアがインストールされたサーバの数に一致するファイル群がある可能性が高い。したがって、共通サーバ数が所定のハードウェアを有するサーバの数や所定のソフトウェアがインストールされたサーバの数に一致する階層を生成しておけば、ファイルの内容の逸脱度合に応じて階層を生成することになる。また、ファイル特定装置100は、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができる。
また、ファイル特定装置100によれば、第1の逸脱関数を用いて逸脱度合を算出してもよい。第1の逸脱関数は、A=Xの場合と、AがXから離れた値となる場合に値が小さくなり、AがXから近い値となる場合に値が大きくなる関数である。第1の逸脱関数を用いることにより、複数の階層の各々の階層の逸脱度合を記憶しなくてよくなるため、ファイル特定装置100は、記憶量を少なくすることができる。
また、ファイル特定装置100によれば、第2の逸脱関数を用いて逸脱度合を算出してもよい。第2の逸脱関数は、第1の逸脱関数から、サーバの数の観点を加えた関数である。第2の逸脱関数を用いることにより、ファイル特定装置100は、構成情報の各項目のうち、多くのサーバが関係する項目の危険度を高くすることができる。
なお、本実施の形態で説明したファイル評価方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ファイル評価プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ファイル評価プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行させることを特徴とするファイル評価プログラム。
(付記2)前記コンピュータに、
抽出した前記階層の異なる同一名称のファイルが区分された各階層に基づいて、前記複数の階層の各々の階層に区分される同一名称のファイル同士の内容の逸脱の度合を表す指標値を参照して、前記階層の異なる同一名称のファイルの内容に不具合がある可能性の度合を示す評価値を決定する、
処理を実行させることを特徴とする付記1に記載のファイル評価プログラム。
(付記3)前記コンピュータに、
前記複数のサーバ群の各々のサーバ群に含まれるサーバの数を特定する構成情報に基づいて、複数の階層を生成する、処理を実行させ、
前記区分する処理は、
前記サーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度と前記複数のサーバ群の各々のサーバ群の構成情報とに基づき、生成した前記複数の階層のいずれかに区分することを特徴とする付記2に記載のファイル評価プログラム。
(付記4)前記複数のサーバ群の各々のサーバ群の構成情報は、前記各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する情報であることを特徴とする付記3に記載のファイル評価プログラム。
(付記5)前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層のいずれか一方の階層とを入力して得た指標値と、前記関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層の前記いずれか一方とは異なる他方の階層とを入力して得た指標値との差分を算出することにより、前記評価値を決定することを特徴とする付記2〜4のいずれか一つに記載のファイル評価プログラム。
(付記6)前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群の構成を特定する構成情報から特定されるサーバの数と、前記サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、前記複数のサーバ群のいずれかのサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記いずれかのサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値と、前記関数に前記複数のサーバ群の前記いずれかのサーバ群とは異なる他のサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記他のサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値の差分を算出することにより、前記評価値を決定することを特徴とする付記2〜4のいずれか一つに記載のファイル評価プログラム。
(付記7)複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行させるファイル評価プログラムを記録したことを特徴とする記録媒体。
(付記8)複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分する区分部と、
前記複数のサーバ群のうちのサーバ群間で、前記区分部によって区分される階層の異なる同一名称のファイルを抽出する抽出部と、
を有することを特徴とするファイル特定装置。
(付記9)複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分する区分部と、
前記複数のサーバ群のうちのサーバ群間で、前記区分部によって区分される階層の異なる同一名称のファイルを抽出する抽出部と、
を有するコンピュータを含むことを特徴とするファイル特定装置。
(付記10)コンピュータが、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行することを特徴とするファイル評価方法。