(57)【要約】【課題】リクエスト／レスポンス・システムにおいて発生するリクエストとレスポンスのペアを監視するためのルールを抽出するためのコンピュータ実装方法を提供する。【解決手段】  方法は、複数のリクエストとレスポンスのペアを含むテスト集合を準備するステップと、複数のリクエストを類似度によるクラスタリングによってグループ化するステップと、あるリクエスト・グループ含まれ、あるパラメータに特定の値を有する複数のリクエストに対応するレスポンスの集合を形成するステップと、レスポンスの集合のメンバが所定の類似範囲に収まっているかどうかを判定するステップと、レスポンスの集合のメンバが所定の類似範囲に収まっていると判定されたことを条件に、当該レスポンス集合に含まれるレスポンスとリクエストの関係に基づいて、システムで発生するリクエストとレスポンスのペアを監視するためのルールを抽出するステップを含む。【選択図】  図３
2014123198.tif 000002
【特許請求の範囲】
【請求項１】
リクエスト／レスポンス・システムにおいて発生するリクエストおよびレスポンスのペアを監視するためのルールを抽出するためのコンピュータ実装方法であって、
複数のリクエストおよび対応するレスポンスのペアを含むテスト集合を準備するステップと、
リクエスト間の類似度によるクラスタリングによって、前記複数のリクエストをグループ化するステップと、
あるリクエスト・グループ含まれ、ある１以上の可変部に特定の値を有する複数のリクエストに対応するレスポンスの集合のメンバが所定の類似範囲に収まっているかどうかを判定するステップと、
前記判定の結果に応じて、当該レスポンス集合に含まれるレスポンスとリクエストの相関関係に基づいて、システムで発生するリクエストとレスポンスのペアを監視するためのルールを抽出するステップと、
を含む、方法。
【請求項２】
前記判定ステップは、
Dv= { L(r, r’) | r ∈ Rv, r’∈ Rv, r != r’ }
Rv:ある１以上の可変部に特定の値vを有するリクエストに対応するレスポンス集合
L(r,r’)：レスポンスｒ、r’間の編集距離
を計算するステップと、
T< avg(Dv) （T: 予め定められたしきい値、avg(Dv):Dvの平均値）である場合に、所定の類似範囲に収まっていると判定するステップを含む、
請求項１に記載の方法。
【請求項３】
前記ある１以上の可変部が取り得る他の値について、前記判定ステップを繰り返すステップを含む、請求項１の方法。
【請求項４】
リクエストに含まれる他の可変部について、前記繰り返すステップを繰り返す、請求項３に記載の方法。
【請求項５】
他のリクエスト・グループに対して、前記判定ステップおよび前記抽出ステップを繰り返す、請求項１に記載の方法。
【請求項６】
前記抽出ステップにおいて、レスポンスに含まれる複数の可変部のうち、リクエストの前記ある１以上の可変部の変化に伴って変化するものについてのみ、両者の相関関係をルールとして抽出する、請求項１に記載の方法。
【請求項７】
前記抽出ステップで抽出されるルールが、変換式、あるいは静的な関係またはその組合せである、請求項１に記載の方法。
【請求項８】
前記抽出ステップで抽出されたルールのセットを適用し、警告を発するステップをさらに含む、請求項１に記載の方法。
【請求項９】
請求項１乃至７のいずれかに記載の方法に含まれる各ステップをコンピュータに実行させる、プログラム。
【請求項１０】
請求項１乃至７のいずれかに記載の方法に含まれる各ステップを実行する手段を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、情報処理技術に関し、より特定的には、リクエストおよびレスポンスのペアを監視するためのルールを抽出するためのコンピュータ実装方法、プログラム、および、システムに関する。
【背景技術】
【０００２】
クライアント端末からサーバに対してリクエスト（要求）を送信し、それに対するレスポンス（応答）をサーバから受けるリクエスト／レスポンス・システムが普及している。一般的に、リクエスト／レスポンス・システムは、ビジネス要求などに応じて、システムの設定変更やシステムにおいて使用されるプログラムのバージョンアップがなされる。そのような変更があった場合は、システム環境が意図する通りに動作するかどうかテストがされた後で、ユーザに使用させるために正式にシステムがリリースされることが多い。リクエスト／レスポンス・システムに関連して、背景技術として以下の特許文献および非特許文献が存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２２７５９５号公報
【特許文献２】特開２００５−３３２１３９号公報
【特許文献３】特開２００２−００７２３２号公報
【特許文献４】特開２０００−０２９７０７号公報
【非特許文献】
【０００４】
【非特許文献１】Xiaowei Li et al., "BLOCK: A Black-boxApproach for Detection of State Violation Attacks Towards WebApplications", Proceeding ACSAC '11 Proceedings of the 27th AnnualComputer Security Applications Conference, Pages 247-256, 2011
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リクエスト／レスポンス・システムに対する変更がなされた場合、予期せぬ箇所に影響が及ぶ場合がある。そのような場合に対応するために、その都度、影響が及ぶ可能性のある箇所を特定し、テストケースを作成してテストを行うことは非常に手間がかかることである。また、あらかじめテストすべき事項を定義しておき、システム変更があった場合にこれを実行するようにする手法を採用しても、テストすべき事項を維持管理したうえで、テストを実行することはやはり手間のかかることである。システム変更があるたびに、人間を介してテストを実行することは煩雑であるうえに、タイムリネスの観点からも問題が生じる可能性がある。
【０００６】
したがって、本発明の目的の１つは、リクエスト／レスポンスのペアが満たすべきルールを自動的に抽出するためのコンピュータ実装方法、プログラム、および、システムを提供することである。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、リクエスト／レスポンス・システムにおいて発生するリクエストおよびレスポンスのペアを監視するためのルールを抽出するためのコンピュータ実装方法が提供される。方法は、複数のリクエストおよび対応するレスポンスのペアを含むテスト集合を準備するステップと、類似度によるクラスタリングによって、複数のリクエストをグループ化するステップと、あるリクエスト・グループ含まれ、ある１以上の可変部に特定の値を有する複数のリクエストに対応するレスポンスの集合のメンバが所定の類似範囲に収まっているかどうかを判定するステップと、判定の結果に応じて、当該レスポンス集合に含まれるレスポンスとリクエストの相関関係に基づいて、システムで発生するリクエストとレスポンスのペアを監視するためのルールを抽出するステップを含む。
【０００８】
好ましくは、ある１以上の可変部が取り得る他の値について、判定ステップを繰り返すステップを含む。さらに好ましくは、リクエストに含まれる他の可変部について、繰り返すステップが繰り返される。また、他のリクエスト・グループに対して、判定ステップおよび抽出ステップを繰り返すようにすることができる。
【０００９】
抽出ステップで抽出されたルールのセットを適用し、警告を発するステップをさらに含むことが好ましい。
【００１０】
以上、リクエスト／レスポンスのペアが満たすべきルールを自動的に抽出するためのコンピュータ実装方法として本発明の概要を説明したが、本発明は、プログラム、プログラム製品、ソフトウェア、ソフトウェア製品、システム、装置などとして把握することもできる。
【００１１】
プログラム製品ないしソフトウェア製品は、例えば、前述のプログラム、ソフトウェアを格納した記憶媒体を含め、あるいはプログラム、ソフトウェアを伝送する媒体を含めることができる。プログラムは、コンピュータに前述の方法の各ステップを実行させることができる。
【００１２】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態におけるリクエスト／レスポンス・システム全体の概要を説明するための全体図である。
【図２】本発明の実施形態におけるリクエスト／レスポンス・システムの管理サーバの機能ブロック図である。
【図３】本発明の実施形態におけるリクエスト／レスポンスが満たすべきルールを抽出する動作を表現するフローチャートである。
【図４】本発明の実施形態のルール適用および警告の動作を表現するフローチャートである。
【図５】本発明の実施形態における類似するリクエストのグループ化の一例を説明するための図である。
【図６】本発明の実施形態におけるリクエスト内の可変部および非可変部の特定およびテンプレートの形成の一例を説明するための図である。
【図７】本発明の実施形態におけるある可変部の値が同一であるリクエストに対応するレスポンス集合の形成の一例を説明するための図である。
【図８】本発明の実施形態におけるレスポンス集合のメンバ間の類似度評価の一例を説明するための図である。
【図９】本発明の実施形態におけるレスポンス集合に対する評価を説明するための図である。
【図１０】本発明の実施形態におけるリクエスト／レスポンスのペアが満たすべきルールの抽出の一例を説明するための図である。
【図１１】本発明の実施形態における情報処理システムの構成要素であるクライアント、サーバ、オペレータ端末等を実現するために好適な情報処理装置のハードウェア構成の一例を示した図である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲に記載された発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らないことに留意すべきである。
【００１５】
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態の説明の全体を通じて同じ要素には、原則として同じ番号を付している。
【００１６】
本発明の実施形態では、リクエスト／レスポンス・システムにおけるリクエストおよびレスポンスのペア集合を分析する情報処理を通じて、当該システムにおいてリクエストおよびレスポンスのペアを監視するためのルールを抽出する。さらに、本発明の実施形態では、早期に問題を発見し、トラブルの影響を抑えるために、稼働中のシステム内で生じるリクエスト／レスポンスのペアに抽出したルールのセットをリアルタイムで適用し、ルール・セットに含まれるルールのいずれをも満たさないリクエスト／レスポンスのペアと判定された場合に警告が管理者に送信される。
【００１７】
本発明の実施形態のリクエスト／レスポンス・システムは、複数のクライアントからアプリケーション・サーバがリクエストを受信し、当該リクエストに対してレスポンスを返答するようにされている。本発明の実施形態では、リクエストとレスポンスが１：１で対応する、すなわち、システム環境に変化がない限り、同じリクエストに対して同じレスポンスが返信されるものとする。また、本発明の実施形態では、原則的に、リクエストとレスポンスはテキスト形式であるものとする。
【００１８】
本発明の実施形態では、クライアントからアプリケーション・サーバへ送信されるリクエストと、それに対応するレスポンスのペアが、ストレージ・システムに継続的に記録される。リクエスト／レスポンスのペアが遵守すべきルールを抽出しようとする場合、当該ストレージ・システムに記憶されたペアの一部または全部について、類似するリクエストをグループ化し、各グループに対してリクエストのテンプレートを生成する。テンプレートでは、可変部と非可変部が含まれており、テンプレート内では両者が区別されている。
【００１９】
次いで、ある可変部について同一の値を持つリクエスト集合が形成される。そして、形成されたリクエスト集合のメンバに対応するレスポンス集合のメンバが所定の類似範囲に収まっているかどうかが判定される。同様の処理が、当該可変部についての他の値に対しても繰り返される。この繰り返しの結果得られた判定の結果に基づいて、当該可変部とレスポンスに相関があるかどうかが判定される。相関があると判定された場合、当該可変部についてリクエスト／レスポンスのペアが満たすべきルールを抽出することが決定され、相関関係をそのようなルールとして抽出することとなる。
【００２０】
これを他の可変部について繰り返し、さらにリクエストの他のグループに対して繰り返すことによって、リクエスト／レスポンスのペアが満たすべきルールのセットが形成される。本発明の実施形態では、当該ルールのセットがシステムにおいて発生するリクエスト／レスポンスのペアに対してリアルタイムで適用され、ルール・セットに含まれるルールのいずれをも満たさないことを検知した場合は、警告が管理者に送信される。
【００２１】
以下、本発明を図１〜１１を参照して詳細に説明する。
【００２２】
図１は、本発明の実施形態におけるリクエスト／レスポンス・システム全体の概要を説明するための全体図である。本発明の実施形態におけるリクエスト／レスポンス・システム１００は、クライアント１０５−１、１０５−２…（以下、「クライアント１０５」と総称することがある）、アプリケーション・サーバ１１５、管理サーバ１１７、管理者１２５が操作する管理者端末１２０、および、ストレージ・システム１３０を含む。
【００２３】
本発明の実施形態では、クライアント１０５は、サービスを要求するためのリクエストをネットワーク１１０を通じてアプリケーション・サーバ１１５に送信する。受領したリクエストに応じて、アプリケーション・サーバ１１５はインストールされたアプリケーションを用いて情報処理を行った結果をレスポンスとしてクライアント１０５にネットワーク１１０を通じて返送し、サービスを提供する。本発明の実施形態では、ストレージ・システム１３０は、これらのやり取りを常時監視し、キャプチャしている。その結果として、クライアント１０５とアプリケーション・サーバ１１５の間でやり取りされたクライアント／レスポンスのペアの集合がストレージ・システム１３０に継続的に記憶されていくこととなる。
【００２４】
本発明の実施形態では、管理サーバ１１７は、ストレージ・システム１３０に記憶されたクライアント／レスポンスのペアの集合を用いて、クライアント／レスポンスが満たすべきルールを抽出する。そして、管理サーバ１１７は、受領した抽出されたルールのセットを、常時監視によって得られたリクエスト／レスポンスのペアにリアルタイムで適用し、ルール・セットに含まれるルールのいずれをも満たさないと判断した場合は、管理者端末１２０に警告を送信する。管理者１２５は、管理者端末１２０で受けた警告を確認して、不具合に対処するため、または、トラブルを未然に防ぐために必要なアクションを取ることになる。
【００２５】
図２は、本発明の実施形態におけるリクエスト／レスポンス・システムの管理サーバ１１７の機能ブロック図である。図２の機能ブロック図に示す各ブロック要素は、図１１に例示したハードウェア構成を有する情報処理装置において、ハードディスク装置１３などに格納されたオペレーティング・システム、アプリケーション・プログラムなどのコンピュータ・プログラムをメインメモリ４にロードした上でメインＣＰＵ１に読み込ませ、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
【００２６】
本発明の実施形態の管理サーバ１１７は、入出力部２０５、リクエスト分類部２１０、可変部識別部２１５、リクエスト類似度判定部２２０、評価対象テストペアデータベース２２５、レスポンス類似度判定部２３０、判定結果評価部２３５、ルール抽出部２４０、ルール格納部２４５、および、ルール適用部２５０を備える。
【００２７】
本発明の実施形態の入出力部２０５は、入出力部２０５は、管理サーバ１１７との双方向の入出力インターフェースをユーザおよび／または他のコンピュータ・システムに提供する。本発明の実施形態では、例えば、ストレージ・システム１３０のテスト集合記憶部からリクエスト／レスポンスのペア集合を受信し、リクエスト分類部２１０に引き渡すことができる。さらに、入出力部２０５は、キャプチャされたサーバとクライアント間のやり取り、すなわち、リクエスト／レスポンスをリアルタイムで受信し、ルール適用部２５０に引き渡す。入出力部２０５は、ルール適用部２５０によって警告が出された電子的な警告を管理者端末１２０に届けるために、電子的な警告をネットワークに送出することができる。
【００２８】
本発明の実施形態のリクエスト分類部２１０は、ストレージ・システム１３０からネットワーク１１０を介して受領したリクエスト／レスポンスのペア集合に含まれるリクエストを類似度に従ってグループ化する。かかるグループ化については、図３のフローチャート３００内のステップ３１５および図５等と関連して後で詳述される。
【００２９】
本発明の実施形態の可変部識別部２１５は、リクエスト分類部２１０によってグループ化されたリクエスト内の可変部を特定し、それ以外を非可変部（固定部分）として特定することによって、リクエストの可変部および非可変部を識別する。本発明の実施形態のテンプレート形成部２２０は、可変部識別ユニット２１５によって識別された可変部／非可変部の識別情報その他の情報に基づいて、リクエスト分類部２１０によって形成されたリクエスト・グループごとに当該グループに属するリクエストのテンプレートを形成する。可変部識別部２１５およびテンプレート形成部２２０については、図３のフローチャート３００内のステップ３１７および図６等に関連して後で詳述される。
【００３０】
本発明の実施形態の評価対象テストペアデータベース２２５は、ストレージ・システム１３０から受領したリクエスト／レスポンスのペアそれぞれが、レスポンス分類部２１０によるグルーピング情報、可変部識別部２１５による可変部／非可変部識別情報、および、テンプレート形成部２２０によるテンプレートと関連付けられて記憶される。記憶された情報は、リクエスト／レスポンスのペアを監視するためのルールを抽出するために使用される。
【００３１】
本発明の実施形態のレスポンス類似度判定部２３０は、あるリクエスト・グループと、それに対応するレスポンス・グループを評価対象データベース２２５から受け取る。レスポンス類似度評価部２３５は、リクエスト・グループに含まれるリクエストについて、ある可変部に同一の値を有するリクエストをメンバとするリクエスト集合および対応するレスポンス集合を形成する。レスポンス類似度判定部２３０は、形成したレスポンス集合が所定の類似範囲に収まっているかどうかを判定する。本発明の実施形態ではかかるレスポンス類似度判定部２３０の処理が、他の可変部が取り得る他の値について繰り返され、かかる繰り返しが、リクエストに含まれる他の可変部に対して繰り返される。さらに、同様の処理が、他のリクエスト・グループに対しても実行される。レスポンス類似度判定部２３０の動作については、図３のフローチャート３００内のステップ３２０〜３５５および図７、８等に関連して後で詳述される。
【００３２】
本発明の実施形態の判定結果評価部２３５は、レスポンス類似度判定部２３０によるレスポンス集合が所定の類似範囲に収まっているかどうかを判定の結果を評価し、リクエストのどの可変部について、リクエストと対応するレスポンスの相関関係に基づいてルールを抽出するかどうかを決定する。本発明の実施形態では、ある可変部について形成されたレスポンス集合すべてについて、そのメンバが所定の類似範囲に納まっている場合に、当該可変部についてのルールを抽出することが決定される。判定結果評価部２３５については、図３のフローチャート３００内のステップ３６０および図９に関連して後で詳述される。
【００３３】
本発明の実施形態のルール抽出部２４０は、ルール抽出の対象となるレスポンス・グループについて、可変部特定部２１５およびテンプレート形成部２２０と同様の処理を実施してテンプレートを形成する。そして、実施形態のルール抽出部２４０は、具体的には、判定結果評価部２３５がレスポンスとの間の相関関係が強いと判定したリクエスト内の可変部について、当該可変部とリクエスト内の相関部分について条件式を作成し、リクエストおよびレスポンスのテンプレート内に存在する可変部に対応する正規表現と条件式の組合せを満たせば当該部分についての内容は正当であるというルールを抽出する。また、あるレスポンス・グループに属するすべてのレスポンスについて共通する内容を持つ非可変部から、当該非可変部分が当該内容を持っていれば、当該部分について内容は正当なものであるルールが抽出される。最終的に、ルール抽出部２４０によって抽出されたルールのセットは、ルール格納部２４５に記憶される。上記したルール抽出部２４０の動作は、図３のフローチャート３００内のステップ３６０および図１０に関連して後で詳述される。
【００３４】
本発明の実施形態では、リクエスト／レスポンス・システムにおけるリクエストおよびレスポンスのペア集合を分析する情報処理を通じて、当該システムにおいてリクエストおよびレスポンスのペアを監視するためのルールを抽出する。さらに、本発明の実施形態では、早期に問題を発見し、トラブルの影響を抑えるために、稼働中のシステム内で生じるリクエスト／レスポンスのペアに抽出したルールのセットをリアルタイムで適用し、ルール・セットに含まれるルールのいずれをも満たさないリクエスト／レスポンスのペアと判定された場合に警告が管理者に送信される。
【００３５】
本発明の実施形態のルール適用部２５０は、入出力部２０５を介してリアルタイムで得られたリクエスト／レスポンスのペアにルール格納部２４５に格納されたルール・セットに含まれるルールを適用し、いずれのルールにも該当しない場合は、管理者端末１２０に警告を届けるために、入出力部２０５を介してネットワーク１１０に警告を送出する。ルール適用部２５０の動作については、図４のフローチャート４００等と関連して後で詳細に説明される。
【００３６】
図３は、本発明の実施形態におけるリクエスト／レスポンスが満たすべきルールを抽出する動作を表現するフローチャート３００である。処理はステップ３０５でスタートし、ステップ３１０でリクエスト−レスポンスのペアテスト集合を準備する。既に述べたとおり、本発明の実施形態では、ストレージ・システム１３０は、クライアント１０５からアプリケーション・サーバ１１５が受信したリクエスト、および、当該リクエストに対するレスポンスを常時監視し、キャプチャし、継続的に記憶している。リクエスト−レスポンスのペアテスト集合は、管理サーバ１１７がストレージ・システム１３０にネットワーク１１０を通じてアクセスし、ストレージ・システム１３０に記憶されたデータの全部または一部を必要に応じて入手することによって準備されるものとする。
【００３７】
次に、ステップ３１５において、準備されたリクエスト−レスポンスのペアテスト集合に含まれるリクエストの間の類似度を計算し、類似すると判断されるリクエストをグループ化する。このリクエストのグループ化は、類似するリクエストを編集距離でクラスタリングすることによって実現される。ここで、編集距離は、レーベンシュタイン距離とも呼ばれ、二つのテキストがどの程度異なっているのかを表現する手法として情報処理の分野でよく知られたものである。したがって、当業者はこれを応用して編集距離によるクラスタリングを適宜実装することができるので、かかる実装についてここではこれ以上詳細に説明されない。また、形成されたリクエスト・グループの各メンバに対応するレスポンスをメンバとするレスポンス・グループが同時に形成される。
【００３８】
図５は、本発明の実施形態における類似するリクエストのグループ化の一例を説明するための図である。図中に示されるリクエスト１（５０５−１）、２（５０５−２）は、パラメータ”page_id”および”UnicaNIODID”の値にあたる部分以外はすべて同じ情報であるので、両者の間の編集距離は比較的小さいものとなる。その結果、リクエスト１（５０５−１）、２（５０５−２）は同一のリクエスト・グループＱｎ（５１０）にクラスタリングされることとなる。一方、リクエスト１（５０５−１）、２（５０５−２）に対応するレスポンス１（５１５−１）、２（５１５−２）は、大きく内容が異なる。しかし、リクエスト・グループＱｋ（５１０）に対応するレスポンス・グループＲｎ（５２０）のメンバとしてグループ化されることとなる。
【００３９】
処理はステップ３１７に進み、ステップ３１５で形成されたリクエスト・グループごとに、リクエストの可変部／非可変部を識別し、テンプレートを形成する。図６は、本発明の実施形態におけるリクエスト内の可変部および非可変部の特定およびテンプレートの作成の一例を説明するための図である。この一例では、４つのＨＴＴＰリクエスト内に存在するＧＥＴ文の部分６１０、６１２、６１４、６１６についてについて、可変部／非可変部を特定し、テンプレート化するプロセスが示されている。
【００４０】
最初に、ＧＥＴ文６１０、６１２の組、および、６１４、６１６のそれぞれについて、最長共通部分列問題 (Ｌｏｎｇｅｓｔ  Ｃｏｍｍｏｎ  Ｓｕｂｓｅｑｕｅｎｃｅ、ＬＣＳとも略される)を解くアルゴリズムで差分を見つけて、差分の場所を可変部の候補として記号”?”でマークし、一般化されたＧＥＴ文６２０、６２２にマージする。ここで、最長共通部分列問題およびそれを解くためのアルゴリズムは、情報処理の分野でよく知られたものである。したがって、当業者はこれを応用して可変部の候補の特定を適宜実装することができるので、かかる実装についてここではこれ以上詳細に説明されない。本発明の実施形態においては、このとき、”?”のマークが付けられた可変部の候補に対して、元の文字列６２４、６２６をそれぞれ記憶しておくものとする。
【００４１】
次に、一般化されたＧＥＴ文６２０、６２２をさらにマージするために同様の処理を１つの一般化されたＧＥＴ文となるまで繰り返す。最終的に１つの一般化されたＧＥＴ文６３０が得られたことに応じて、可変部の候補に対応する元の文字列６３４の集合を、各繰り返しにおいて記憶された文字列６３２から形成する。そして、元の文字列６３４の集合の文字列長、出現文字の分散が所定よりも小さい場合に、当該可変部の候補を最終的に可変部として採用する。これは、ある可変部の候補が取りえる値の分散があまりに大きい場合、その可変値の候補についてはある程度の規則をもつ部分であるとは言えず、単に無秩序な部分がたまたま一般化されたに過ぎないといえるからである。可変部として最終的に採用された部分以外の部分は、非可変部として識別されるものとする。なお、図６の例ではＧＥＴ文の部分について説明をしたが、かかる処理をリクエストの他の部分に対しても実施することで、ステップ３１５で形成されたリクエスト・グループごとのリクエストの可変部／非可変部の識別およびテンプレートの形成が実現される。
【００４２】
説明は図３のフローチャート３００に戻る。次にステップ３２０において、ステップ３１５で形成されたリクエスト・グループを１つ取り出し、ステップ３２５において、取り出したグループのリクエストのテンプレートを参照し、リクエスト中の可変部を所定のアルゴリズムに従って選択する。ここで、選択される可変部は単一であってもよいし、複数の可変部の組合せであってもよいし、またはその組合せであってもよい。
【００４３】
さらに処理は進み、ステップ３３０において、ステップ３２５で選択した可変部について、同一の値を持つ複数のリクエストにそれぞれ対応するレスポンスの集合を形成する。図７は、本発明の実施形態におけるある可変部の値が同一であるリクエストに対応するレスポンス集合の形成の一例を説明するための図である。この例では、同一のリクエスト・グループに属するリクエスト７０５−１、２、３は、/us/en/?page_idの値である可変部に同一の値「１２１」を有している。かかる３つのリクエストに対応するレスポンスとしてレスポンス７１０−１、２、３がレスポンス集合が形成されるものとする。
【００４４】
処理はステップ３３５に進み、ステップ３３０で形成したレスポンス集合の１つについて、当該レスポンス集合のメンバの間の類似度を評価する。本発明の実施形態では、かかる類似度を以下の式にしたがってDvを計算することによって求めるものとする。なお、本発明の実施形態におけるレスポンス集合のメンバ間の類似度評価の一例が図８に示されていることに留意されたい。
【００４５】
Dv= { L(r, r’) | r ∈ Rv, r’∈ Rv, r != r’}
Rv：ある可変部に特定の値vを有するリクエストに対応するレスポンスの集合
L(r,r’)：２つのレスポンスｒ、ｒ’間の編集距離
【００４６】
次いで、ステップ３４０において、かかる評価に基づいて、当該レスポンス集合のメンバが所定の類似範囲に収まっているかどうかを判定する。本発明の実施形態では、T < avg(Dv) （T：あらかじめ定められたしきい値、avg(Dv)：Dvの平均値）となる場合に、レスポンス集合のメンバが所定の類似範囲に収まっていると判定する。
【００４７】
本発明の実施形態では、ステップ３４０における判定の結果がいずれであれ、ステップ３３５における評価結果をステップ３４０の判定結果と共に記録するものとする。ステップ３４０でレスポンス集合のメンバが所定の類似範囲に収まっていると判定された場合、処理はＹＥＳの矢印を介してステップ３４５に進み、類似範囲に収まっていることを示すマークが対応する記録に追加され、次いで、処理はステップ３５０に進む。また、ステップ３４０でレスポンス集合のメンバが所定の類似範囲に収まっていないと判定された場合は、このレスポンス集合は所定の類似範囲に収まっていることを示すマークがなされることなく、ＮＯの矢印を介してステップ３５０に進み、他の可変部についての処理を行うこととなる。
【００４８】
図９は、本発明の実施形態におけるレスポンス集合に対する記録の一例である。この一例では、このテーブルの「第１のリクエスト集合」と「可変部１」が交差するところにあるセルには、「可変部１が“１２１”という値を取るリクエスト」に対応するレスポンス集合のメンバのavg(Dv)が「０．８」であることが示されている。また、この一例は、T（あらかじめ定められたしきい値）が「０．６」であるものとすると、当該セルのDvがTよりも大きいので、このレスポンス集合は所定の類似範囲に収まっているとして網掛けでハイライトされていることに留意されたい。なお、ある列（例えば、「第１のリクエスト集合」の列）に属する各セルに対応する各リクエスト集合ないし各レスポンス集合は、多くの場合に同一のメンバを有するものではないことに留意されたい。
【００４９】
ステップ３５０ではステップ３３０で形成したレスポンス集合に、未処理のものが存在するかどうかが判定される。ステップ３５０で未処理のレスポンス集合が存在すると判定された場合は、処理はステップ３３０に戻り、以降、ステップ３３５、３４０、３４５、および、３５０の処理が未処理のレスポンス集合が存在する限り同様に実行される。
【００５０】
ステップ３５０で未処理のレスポンス集合が存在しないと判定された場合は、処理はステップ３５５に進む。ステップ３５５では、現在評価中のグループについて、まだ評価していない可変部が存在するかどうかが判定される。ステップ３５５でまだ評価していない可変部が存在すると判定された場合は、処理はＹＥＳの矢印を介してステップ３２５に戻り、まだ処理をされていない可変部を選択し、以降の処理を同様に実施する。
【００５１】
ステップ３５５でまだ評価していない可変部が存在しないと判定された場合は、処理はＮＯの矢印を介してステップ３６０に進む。ステップ３６０では、現在、ステップ３２０で取り出された状態となっているリクエスト・グループおよび対応するレスポンス・部ループから導き出されるリクエスト／レスポンスのペアが満たすべきルールを抽出する。
【００５２】
図１０は、本発明の実施形態におけるリクエスト／レスポンスのペアが満たすべきルールの抽出の一例を説明するための図である。既に述べたとおり、本発明の実施形態では、ルール抽出の対象となるレスポンス・グループについて、テンプレートが形成され、レスポンスとの間の相関関係が強いと判定したリクエスト内の可変部について、当該可変部とリクエスト内の相関部分について条件式を作成し、リクエストおよびレスポンスのテンプレート内に存在する可変部に対応する正規表現と条件式の組合せを満たせば当該部分についての内容は正当であるというルールを抽出する。図１０の例では、あるリクエスト・グループのメンバであるリクエスト１００５−１〜３の可変部１０１５−１〜３が、レスポンスとの間の相関関係が強いと判定されたものとする。この場合、レスポンスのタグ<title>に挟まれた可変部１０２５は、リクエストの可変部１０１５が「１２１」の場合は「ＸＸＸ」、「１２４」の場合は「ＣＣＣ」という相関関係があるので、これを条件式にしてルールが抽出される。一方、レスポンスのタグ<ad>に挟まれた可変部１０３０については、リクエストの可変部１０１５との関係が条件式とすることができないので、ここはルール化されない。また、あるレスポンス・グループに属するすべてのレスポンスについて共通する内容を持つ非可変部から、当該非可変部分が当該内容を持っていれば、当該部分について内容は正当なものであるルールが抽出される。例えば、図１０の例では、レスポンスの非可変部１０２０については、常に値は「ＨＴＴＰ  ２００  ＯＫ」であるので、この非可変部が「ＨＴＴＰ  ２００  ＯＫ」であれば内容が正当である、とのルールが抽出される。最終的に正規表現と条件式の組合せとして、リクエスト／レスポンスを監視するためのルールのセットが形成される。
【００５３】
ステップ３６５では、まだ処理がされていないリクエスト・グループが存在するかどうかが判定される。ステップ３６５でまだ処理がされていないリクエスト・グループが存在すると判定された場合、処理はＹＥＳの矢印を介してステップ３２０に返り、以降、同様の処理がなされる。ステップ３６５でまだ処理がされていないリクエスト・グループが存在しないと判定された場合、処理はステップ３７０に進み終了する。
【００５４】
図４は、本発明の実施形態のルール適用および警告の動作を表現するフローチャートである。処理はステップ４０５でスタートし、ステップ４１０でサーバが受信するリクエストを常時監視する。次いで、ステップ４２０において常時監視の実施を続行するかどうかが判定される。ステップ４２０で続行しないと判定された場合、処理はＮＯの矢印を介してステップ４５０に進み、終了する。
【００５５】
ステップ４２０において常時監視を続行すると判断した場合、ステップ４２５へ進み、常時監視においてサーバが受信するリクエストを検知したかどうかが判断される。ステップ４２５においてリクエストを検知しなかった場合、処理はＮＯの矢印からステップ４１０に戻り、常時監視が続行される。
【００５６】
ステップ４２５においてリクエストを検知した場合、処理はＹＥＳの矢印からステップ４３０に進み、検知したリクエストと、それに対応するレスポンスのペアを入手する。次いで、ステップ４３５において、入手したリクエスト／レスポンスのペアが、図３のフローチャートに従って抽出され、管理サーバ１１７に記憶されているルール・セットに含まれるルールのいずれかを満たすかどうかが検証される。具体的には、当該リクエスト／レスポンスのペアに含まれるリクエストとテンプレートとのマッチングを実行し、合致したテンプレートに対応するグループに関連するルール・セットに含まれるルールを、リクエスト／レスポンスのペアが満たすかどうかが判定される。
【００５７】
次にステップ４４０において、ルール・セットに含まれるルールのいずれをも満たさないと判定された場合は、処理はＮＯの矢印を介してステップ４４５に進み、当該リクエスト／レスポンスのペア、および、必要に応じて追加の検証結果の情報を含む警告を管理者に送信し、ステップ４１０に戻ることとなる。ステップ４４０においてルール・セットに含まれるルールのいずれかを満たしていると判定された場合は、処理はＹＥＳの矢印を介してステップ４１０に戻る。ステップ４１０に戻った後は、ステップ４２０からＮＯの矢印を介して処理がステップ４５０で終了するまで、これらの処理が繰り返される。
【００５８】
図１１は、本発明の実施の形態のリクエスト／レスポンス・システムに含まれる各コンピューティング要素（すなわち、クライアント１０５、アプリケーション・サーバ１１５、管理サーバ１１７、管理者端末１２０、ストレージ・システム１３０）を実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。情報処理装置は、バス２に接続されたＣＰＵ（中央処理装置）１とメインメモリ４を含んでいる。ハードディスク装置１３、３０、およびＣＤ−ＲＯＭ装置２６、２９、フレキシブル・ディスク装置２０、ＭＯ装置２８、ＤＶＤ装置３１のようなリムーバブル・ストレージ（記録メディアを交換可能な外部記憶システム）がフロッピーディスクコントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７などを経由してバス２へ接続されている。
【００５９】
フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置１３、３０、ＲＯＭ１４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００６０】
情報処理装置は、キーボード／マウス・コントローラ５を経由して、キーボード６やマウス７のような入力デバイスからの入力を受ける。情報処理装置は、視覚データをユーザに提示するための表示装置１１にＤＡＣ／ＬＣＤＣ１０を経由して接続される。
【００６１】
情報処理装置は、ネットワーク・アダプタ１８（イーサネット（Ｒ）等）を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。図示はされていないが、パラレルポートを介してプリンタと接続することや、シリアルポートを介してモデムを接続することも可能である。
【００６２】
以上の説明により、本発明の実施の形態によるリクエスト／レスポンス・システムに含まれる各コンピューティング要素を実現するのに好適な情報処理装置は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００６３】
本発明の実施の形態において使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。
【００６４】
本発明の実施の形態のリクエスト／レスポンス・システムの各構成要素は、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（Ｒ）オペレーティング・システム、アップル・コンピュータ・インコーポレイテッドが提供するＭａｃＯＳ（Ｒ）、ＵＮＩＸ（Ｒ）系システム（例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（Ｒ））のような、ＧＵＩ（グラフィカル・ユーザー・インターフェース）マルチウインドウ環境をサポートするオペレーティング・システムを採用する。
【００６５】
以上から、本発明の実施の形態において使用されるリクエスト／レスポンス・システムの各構成要素は、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。
【００６６】
本発明は、当業者に理解されるとおり、システム、方法またはコンピュータ・プログラム製品として実施することができる。そのため、本発明は全面的にハードウェアとしての実施形態、全面的にソフトウェアとしての実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）あるいは、ここでは、一般的に「回路」、「モジュール」または「システム」と呼ぶソフトウェアとハードウェアを組み合わせた実施形態の形式をとることができる。さらに、本発明は、その媒体で実施されるコンピュータが使用できるプログラム・コードを持った有形の表現媒体で実施されるコンピュータ・プログラム製品の形態をとることもできる。
【００６７】
コンピュータ使用可能／コンピュータ可読媒体の組み合わせを利用することもできる。コンピュータ使用可能／コンピュータ可読媒体は、たとえば、電子的、磁気的、光学的、電磁、赤外線または半導体システム、装置、デバイスまたは伝搬媒体であってよいが、これらに限定されない。コンピュータ可読媒体のより具体的な例の非網羅的なリストには、以下のものが含まれる。導線を持った電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リードオンリー・メモリ（ＲＯＭ）、消去可能なプログラマブル・リードオンリー・メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバー、ポータブル・コンパクトディスク・リードオンリー・メモリ（ＣＤ―ＲＯＭ）、光記憶デバイス、インターネットまたはイントラネットをサポートする伝送媒体、磁気記憶装置。
【００６８】
プログラムは、たとえば、紙または他の媒体を光学的に走査することによって、電子的に取得され、次に、必要に応じて、コンパイルされ、解釈され、その他適宜の方法で処理され、コンピュータのメモリに保存されるため、コンピュータ使用可能／コンピュータ可読媒体は、プログラムが印刷された紙またはその他の適当な媒体であってもよい点に留意すべきである。コンピュータ使用可能／コンピュータ可読媒体は、命令実行システム、装置またはデバイスにより、あるいはこれらに関連して使用するためのプログラムを包含し、保存し、通信し、伝播し、または搬送することができる任意の媒体であってよい。コンピュータが使用できる媒体は、ベースバンド中または搬送波の一部として、一緒に実施されるコンピュータが使用できるプログラム・コードを含んだ伝播されたデータ信号を含むことができる。コンピュータが使用できるプログラム・コードは、無線、ワイヤーライン、光ファイバー・ケーブル、ＲＦ等を含むがこれらに限定されない適切な媒体を使用して伝送することができる。
【００６９】
本発明を実行するコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向のプログラム言語およびＣプログラム言語またはこれに類似するプログラム言語等の従来型の手続プログラム言語を含んだ１種類または複数のプログラム言語の組み合わせを使用して記述することができる。プログラム・コードは、全面的にユーザのコンピュータ上、一部をユーザのコンピュータ上、独立型のソフトウェア・パッケージとして、一部をユーザのコンピュータおよび一部をリモート・コンピュータ上、全面的にリモート・コンピュータまたはサーバ上で実行できる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通じてユーザのコンピュータに接続することができ、あるいは接続は外部コンピュータ（たとえば、インターネット・サービス・プロバイダを利用してインターネットを通じて）に対して行うこともできる。
【００７０】
以上、方法、装置（システム）およびコンピュータ・プログラム製品のフローチャートによる図示および／またはブロック図を参照して、本発明の実施形態を説明した。フローチャートによる図示および／またはブロック図の各ブロック、およびフローチャートによる図示および／またはブロック図のブロックの組み合わせは、コンピュータ・プログラムの命令によって実行できることは理解されるであろう。汎用コンピュータ、特殊目的のコンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサを通じて実行される命令が、フローチャートおよび／またはブロック図の１つまたは複数のブロックで指定された機能／活動を実行する手段を生成する機械を製造するために、これらのコンピュータ・プログラムの命令は、上記コンピュータ、その他のプログラム可能なデータ処理装置のプロセッサに対して与えることができる。
【００７１】
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置を、コンピュータ可読媒体に保存された命令が、フローチャートおよび／またはブロック図の１つまたは複数のブロックで指定された機能／動作を実行する命令手段を含む製品を生産するよう、特定の態様で機能させることができるコンピュータ可読媒体に保存することもできる。
【００７２】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置上で実行する命令がフローチャートおよび／またはブロック図の1つまたは複数のブロックで指定された機能／活動を実行するプロセスを提供するように、コンピュータで実行するプロセスを作成するため、コンピュータまたは他のプログラム可能なデータ処理装置上で一連の動作のステップを実行するようにそのコンピュータまたは他のプログラム可能なデータ処理装置にロードすることもできる。
【００７３】
図面中のフローチャートおよびブロック図は、この発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品のアーキテクチャ、機能性および実行動作を図示している。この点については、フローチャートまたはブロック図の各ブロックは指定された論理機能を実行するための１つまたは複数の実行可能な命令を含んだモジュール、セグメントまたはコードの部分を示すことができる。一定の代替的実装例においては、ブロックに示された機能が図面に示したものとは異なる順番で行われることがある点にも留意すべきである。たとえば、関連する機能性に応じて、順番に示されている2個のプロックが、実際にはほぼ同時に実行されること、あるいはブロックが逆の順番で実行されることがある。ブロック図および／またはフローチャートの図示の各ブロック、およびブロック図および／またはフローチャートの図示のブロックの組み合わせは、特殊な機能または活動を行う特殊目的のためのハードウェア主体のシステム、または特殊目的のハードウェアの組み合わせによって実行され得る。
【００７４】
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。以上、本発明の実施形態によれば、リクエスト／レスポンス・システムにおいて発生するリクエストとレスポンスのペアを監視するためのルールを自動的に抽出することができることが理解される。さらに、本発明の実施形態によれば、かようにして抽出されたルールをリアルタイムでキャプチャしたリクエスト／レスポンスに適用してリアルタイムで警告を発することが可能であることが理解される。
【００７５】
本発明の実施形態の応用例として、例えば、設定変更やプログラムの更新のタイミングで別途用意した検査プログラムに検証項目を入力し、テスト環境などで検査を実施するというシナリオで本発明を活用することができる。これによって変更が発生した箇所を管理者が知ることができる。また、他のシナリオとして、稼働中のシステムに対するリクエスト・レスポンスを監視し、システムの設定変更、プログラムの更新による影響範囲を定常的に確認するというものが考えられる。この場合、システムの異常やセキュリティ・インシデントを発見することもできる。
【図１】
2014123198.tif 000003
【図２】
2014123198.tif 000004
【図３】
2014123198.tif 000005
【図４】
2014123198.tif 000006
【図５】
2014123198.tif 000007
【図６】
2014123198.tif 000008
【図７】
2014123198.tif 000009
【図８】
2014123198.tif 000010
【図９】
2014123198.tif 000011
【図１０】
2014123198.tif 000012
【図１１】
2014123198.tif 000013