(57)【要約】【課題】脆弱性に対する耐性を向上させる。【解決手段】仮想マシン制御装置は、第１格納部、第２格納部、第１生成部、及び、第２生成部を含む。第１格納部は、第１の仮想マシンイメージを格納する。第２格納部は、仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する。第１生成部は、イメージ生成情報に基づいて、第１の仮想マシンイメージにおける構成項目に対応する実装を、実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成する。第２生成部は、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージからインスタンスを生成する。【選択図】図３
2017126236.tif 000002
【特許請求の範囲】
【請求項１】
第１の仮想マシンイメージを格納する第１格納部と、
仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、該対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する第２格納部と、
前記イメージ生成情報に基づいて、前記第１の仮想マシンイメージにおける前記構成項目に対応する実装を、前記実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成する第１生成部と、
前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージからインスタンスを生成する第２生成部と、
を備えることを特徴とする仮想マシン制御装置。
【請求項２】
前記仮想マシン制御装置は、さらに、
脆弱性を有する前記仮想マシンイメージの実装を示す脆弱性情報を受信する受信部と、
前記脆弱性情報に基づいて、前記生成したインスタンスのうち前記脆弱性を有する実装を含むインスタンスを無効化する制御部と、
前記脆弱性情報に基づいて、前記１以上の第２の仮想マシンイメージのうち、前記脆弱性を有する実装を含まない仮想マシンイメージからインスタンスを生成する管理部と、
を備えることを特徴とする請求項１に記載の仮想マシン制御装置。
【請求項３】
前記管理部は、前記脆弱性を有する実装を含まない前記生成されたインスタンスを対象に、前記構成項目毎の前記各実装の数を集計し、集計した前記構成項目毎の前記各実装の数に応じて、前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージのうち、前記脆弱性を有する実装を含まない仮想マシンイメージを選択し、選択した該仮想マシンイメージからインスタンスを生成する
ことを特徴とする請求項２に記載の仮想マシン制御装置。
【請求項４】
前記第２生成部は、前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージのうち、所定の冗長度と等しい数の仮想マシンイメージを選択し、選択した該仮想マシンイメージからインスタンスを生成し、
前記第２生成部は、前記選択において、該選択後の仮想マシンイメージを対象とした前記構成項目毎の前記各実装の数に基づいて、前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージのうちから仮想マシンイメージを選択する
ことを特徴とする請求項１〜３のうちいずれか１項に記載の仮想マシン制御装置。
【請求項５】
前記仮想マシン制御装置は、さらに、
生成した前記インスタンスであって有効な該インスタンスを対象とした、前記構成項目毎の前記各実装の数を示す情報を出力する出力部と、
を備えることを特徴とする請求項１〜４のうちいずれか１項に記載の仮想マシン制御装置。
【請求項６】
仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、該対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する第２格納部に格納された前記イメージ生成情報に基づいて、第１の仮想マシンイメージを格納する第１格納部に格納された前記第１の仮想マシンイメージにおける前記構成項目に対応する実装を、前記実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成し、
前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージからインスタンスを生成する
処理をコンピュータが実行することを特徴とする仮想マシン制御方法。
【請求項７】
コンピュータに、
仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、該対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する第２格納部に格納された前記イメージ生成情報に基づいて、第１の仮想マシンイメージを格納する第１格納部に格納された前記第１の仮想マシンイメージにおける前記構成項目に対応する実装を、前記実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成し、
前記第１の仮想マシンイメージ及び前記１以上の第２の仮想マシンイメージからインスタンスを生成する
処理を実行させることを特徴とする仮想マシン制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン制御装置、仮想マシン制御方法、及び、仮想マシン制御プログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングが普及しつつあり、クライアントからサーバへのコンピューティング環境のシフトが加速している。クラウドコンピューティングにおいては、クラウドサービスを提供するクラウドシステムのダウンタイムを最小化することが求められる。そこで、クラウドシステムでは、ロードバランサを利用してインスタンスの冗長化が行われる。
【０００３】
図１は、クラウドシステムにおいて、ロードバランサを利用したインスタンスの冗長化の例を示す。図１において、クラウドシステムは、１以上のＶＭ（Virtual Machine）インスタンス、インスタンス生成部、及び、ロードバランサを含む。
【０００４】
ＶＭインスタンス（以下、インスタンスと記す）は、仮想化基盤により実行可能な仮想的なコンピュータである。インスタンスは、クラウドサービスの利用者に提供される。
【０００５】
インスタンス生成部は、ＶＭイメージからインスタンスを生成する。ＶＭイメージは、インスタンスを起動するためのファイルシステムや設定情報を含むイメージファイルである。例えばＶＭイメージは、インスタンスのＯＳ（Operating System）をインストールした仮想ディスクを含む１つのファイルである。
【０００６】
ロードバランサは、利用者端末及び各インスタンスとネットワーク等を介して接続する。ロードバランサは、利用者端末からインスタンスに対する処理要求を受信し、受信した処理要求を各インスタンスに振り分ける。また、ロードバランサは、各インスタンスが正常に稼動しているか否かや、各インスタンスのパフォーマンスの低下などを監視し、監視の結果に応じて、利用者端末からの処理要求の振分け制御を行う。例えば、ロードバランサは、異常が発生したインスタンスに対しては利用者端末からの処理要求の振分けを停止し、正常なインスタンスに処理要求を振り分ける。これによりインスタンスの冗長化が実現される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２６５７２号公報
【特許文献２】国際公開第２０１１／１１４６５５号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、脆弱性の増加がクラウドシステムのダウンタイムの最小化にとっての問題になっている。特に最近のクラウドシステムにおけるオープンソース活用の流れに伴い、脆弱性の増加によるダウンタイムへの影響が大きくなってきている。
【０００９】
１つの側面では、本発明は、脆弱性に対する耐性を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
一態様による仮想マシン制御装置は、第１格納部、第２格納部、第１生成部、及び、第２生成部を含む。第１格納部は、第１の仮想マシンイメージを格納する。第２格納部は、仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する。第１生成部は、イメージ生成情報に基づいて、第１の仮想マシンイメージにおける構成項目に対応する実装を、実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成する。第２生成部は、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージからインスタンスを生成する。
【発明の効果】
【００１１】
一側面によれば、脆弱性に対する耐性を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】クラウドシステムにおいて、ロードバランサを利用したインスタンスの冗長化の例を示す。
【図２】脆弱性対策の説明図である。
【図３】実施形態にかかる仮想マシン制御装置の構成の一例を示す。
【図４】実施形態にかかる情報処理システムの構成の一例を示す。
【図５】ＶＭイメージの多様化により、脆弱性が発覚した際のクラウドシステムへの影響の説明図である。
【図６】実施形態にかかるインスタンス管理処理の説明図である。
【図７】種別がＷｅｂサーバである元ＶＭイメージに対応する多様化ルールリストの一例である。
【図８】構成項目（Ｗｅｂサーバソフトウェア）の多様化ルールの一例を示す。
【図９】構成項目（Ｗｅｂサーバソフトウェア）の多様化の様子の説明図である。
【図１０】構成項目（シェル）の多様化の様子の説明図である。
【図１１】多様化イメージリストの構成の一例を示す。
【図１２】インスタンスリストの構成の一例を示す。
【図１３】無効化が行われた後のインスタンスリストの一例を示す。
【図１４】代替インスタンスの情報を反映した後のインスタンスリストの一例を示す。
【図１５】状態情報の一例を示す。
【図１６】実施形態にかかる初期化処理の詳細を図解したフローチャートの一例を示す。
【図１７】実施形態にかかるインスタンス管理処理の詳細を図解したフローチャートの一例を示す。
【図１８】実施形態にかかる代替インスタンスの作成処理の詳細を図解したフローチャートの一例を示す。
【図１９】実施形態にかかる状態情報の出力処理の詳細を図解したフローチャートの一例を示す。
【図２０】実施形態に係る管理サーバのハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１３】
脆弱性対策の一つに、ＶＭイメージにセキュリティパッチを当てる方式がある。この方式は、インスタンスに脆弱性が発見された場合、その脆弱性に対処するパッチをインスタンスの生成元であるＶＭイメージに当てることにより、効率的にクラウドシステムの脆弱性を解消する。
【００１４】
その他の脆弱性対策としては、仮想セキュリティパッチとよばれるＩＰＳ（Intrusion Prevention System）（侵入防止システム）により、ネットワーク上で攻撃を防ぐ方式もある。
【００１５】
図２は、脆弱性対策の説明図である。図２の例では、ＶＭイメージにセキュリティパッチを当てる方式と、ＩＰＳによりネットワーク上での攻撃を防ぐ方式が適用されている。図２において、現行のＶＭイメージに脆弱性が発見された場合、動作検証環境において、脆弱性に対処するパッチがＶＭイメージに当てられる。また、ロードバランサと外部ネットワークとの間にＩＰＳが設けられる。
【００１６】
図２に示すように、ＶＭイメージへのパッチの適用後には、ＶＭイメージの動作検証が行われる。そして、この検証による動作確認がなされた後に、パッチ適用後のＶＭイメージを用いてインスタンスの作成及び入れ替えが行われる。しかしながら、近年のクラウドシステムは様々なコンポーネントが関係する複雑な構成となっていること等から、ＶＭイメージの動作検証には時間がかかることが多い。このような検証作業は、最悪の場合は作業完了までに半年以上かかるケースもありうる。検証作業の完了までに時間がかかる場合、脆弱性を利用した攻撃によりシステムがダウンする確率が高くなり、ダウンタイムが長くなる可能性がある。
【００１７】
また、ＩＰＳを設けた場合、ＩＰＳの処理によるオーバーヘッドが発生することとなる。ＩＰＳにおいては、不正侵入や攻撃パケットを検出するためのパターンファイルの配信に時間がかかることもあり、仮に攻撃者の侵入を許した場合、ダウンタイムが大きくなってしまう。
【００１８】
図３は、実施形態にかかる仮想マシン制御装置の構成の一例を示す。図３において、仮想マシン制御装置１は、第１格納部２、第２格納部３、第１生成部４、第２生成部５、受信部６、制御部７、管理部８、及び出力部９を含む。
【００１９】
第１格納部２は、第１の仮想マシンイメージを格納する。第２格納部３は、仮想マシンイメージの構成項目のうちの対象構成項目を示す情報と、対象構成項目に対応する１以上の実装を示す実装値情報を含むイメージ生成情報を格納する。第１生成部４は、イメージ生成情報に基づいて、第１の仮想マシンイメージにおける構成項目に対応する実装を、実装値情報により示される各実装に変更した１以上の第２の仮想マシンイメージを生成する。第２生成部５は、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージからインスタンスを生成する。
【００２０】
第１仮想マシンイメージと、実装を変更した第２の仮想マシンイメージからインスタンスを生成することで、仮想マシン制御装置１は、生成したインスタンスによりサービスを提供するシステムの脆弱性に対する耐性を高めることができる。また、仮想マシン制御装置１は、特定の実装に脆弱性が発見されたとしても、ダウンタイムを増やすことなく、システムのサービスを継続することができる。
【００２１】
受信部６は、脆弱性を有する仮想マシンイメージの実装を示す脆弱性情報を受信する。制御部７は、脆弱性情報に基づいて、第２生成部５が生成したインスタンスのうち脆弱性を有する実装を含むインスタンスを無効化する。管理部８は、脆弱性情報に基づいて、１以上の第２の仮想マシンイメージのうち、脆弱性を有する実装を含まない仮想マシンイメージからインスタンスを生成する。
【００２２】
仮想マシン制御装置１は、特定の実装に対して脆弱性が発見された場合でも、脆弱性を有さないインスタンスを稼動させることができる。これにより、仮想マシン制御装置１は、第２生成部５が生成した複数のインスタンスを含むシステムの全体の可用性を向上させることができる。また、仮想マシン制御装置１は、特定の実装に対して脆弱性が発見された場合に、脆弱性を有する実装を含まない仮想マシンイメージからインスタンスを生成することで、システム全体の処理性能に対する影響を抑制することができる。
【００２３】
管理部８は、脆弱性を有する実装を含まないインスタンスを対象に、構成項目毎の各実装の数を集計する。そして管理部８は、集計した構成項目毎の各実装の数に応じて、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージのうち、脆弱性を有する実装を含まない仮想マシンイメージを選択し、選択した仮想マシンイメージからインスタンスを生成する。
【００２４】
構成項目毎の各実装の数に基づいて、生成するインスタンスの生成元の仮想マシンイメージを選択することで、仮想マシン制御装置１は、異なる実装のインスタンスが一様にシステム内において分布するようにインスタンスの生成を制御することができる。これにより、仮想マシン制御装置１は、無効化されたインスタンスに代わるインスタンスを生成する際に、システム全体としてのインスタンスの実装の多様性を維持することができる。
【００２５】
第２生成部５は、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージのうち、所定の冗長度と等しい数の仮想マシンイメージを選択し、選択した仮想マシンイメージからインスタンスを生成する。また、第２生成部５は、仮想マシンイメージの選択において、選択後の仮想マシンイメージを対象とした構成項目毎の各実装の数に基づいて、第１の仮想マシンイメージ及び１以上の第２の仮想マシンイメージのうちから仮想マシンイメージを選択する。
【００２６】
構成項目毎の各実装の数に基づいて、インスタンスを生成する仮想マシンイメージを選択することで、仮想マシン制御装置１は、異なる実装のインスタンスが一様にシステム内において分布するようにインスタンスの生成を制御することができる。
【００２７】
出力部９は、生成したインスタンスであって有効なインスタンスを対象とした、構成項目毎の各実装の数を示す情報を出力する。
【００２８】
このような構成項目毎の各実装の数を示す情報を出力することで、仮想マシン制御装置１は、出力された情報を受信する利用者に対して、システム内のインスタンスの実装の多様性の度合いを示す情報を提供することができる。
【００２９】
（実施形態）
図４は、実施形態にかかる情報処理システムの構成の一例を示す。情報処理システムは、例えば、クラウドサービスを利用者に対して提供するクラウドシステムである。図４において、情報処理システムは、管理サーバ２１、仮想化サーバ２２、及びロードバランサ２３を含む。管理サーバ２１、仮想化サーバ２２、及びロードバランサ２３は、互いに通信ネットワークなどを介して接続される。また、管理サーバ２１は、通信ネットワークを介して脆弱性情報を提供する第三者機関の端末と接続する。
【００３０】
管理サーバ２１は、仮想化サーバ２２及びロードバランサ２３を管理する情報処理装置である。管理サーバ２１は、初期化処理、及び、インスタンス管理処理を行う。
【００３１】
初期化処理は、ＶＭイメージを初期化する段階において、ＶＭイメージを多様化して、多様化した各ＶＭイメージからインスタンスを生成する処理である。ＶＭイメージの多様化処理は、同様の機能を提供する冗長化されたインスタンス群において、その機能を提供する実装をインスタンス毎に多様化するための処理である。インスタンス毎に実装を多様化することで、攻撃者から特定のインスタンスの特定の実装に対する攻撃が成功した場合であっても、クラウドシステムの他のインスタンスに対して同じ方法により攻撃が成功する確率を低減することができる。また、特定の実装に対して脆弱性が発見された場合のクラウドシステムの全体の可用性や処理性能に対する影響を抑制することができる。
【００３２】
図５は、ＶＭイメージの多様化により、脆弱性が発覚した際のクラウドシステムへの影響の説明図である。図５に示すように、インスタンス＃１〜＃Ｎには、それぞれ、ＷｅｂサーバＡ〜Ｎが実装されている。この場合、仮にＷｅｂサーバＡに脆弱性が発見されたとしても、インスタンス＃２〜＃Ｎには影響が及ばない。このように多様化が行われているために、実施形態では、脆弱性を利用した攻撃により、システム全体のインスタンスがダウンする可能性を低減することができる。
【００３３】
インスタンス管理処理は、第三者機関から特定のインスタンスの実装に脆弱性が含まれる旨の情報を取得した場合に、脆弱性を有するインスタンスを無効化し、無効化したインスタンスとは異なる実装のインスタンスを生成してシステムの運用を継続する処理である。これにより、クラウドシステムが提供するサービスは、脆弱性が見つかっていない他の実装を有するインスタンスで継続することができる。よって、特定の実装に対して脆弱性が発見された場合のクラウドシステムの全体の可用性や処理性能に対する影響を抑制することができる。
【００３４】
図６は、実施形態にかかるインスタンス管理処理の説明図である。図６において、管理サーバは、第三者機関からの脆弱性情報を取得する。そして管理サーバは脆弱性情報に基づいて、脆弱性のあるインスタンスを特定し、特定したインスタンスを無効化する。また、管理サーバは、無効化したインスタンスの代わりに、脆弱性の見つかっていないインスタンスを生成し、無効化したインスタンスと入れ替える。
【００３５】
以下、図４の情報処理システムの各部の詳細について説明する。
管理サーバ２１は、作成要求受信部３１、作成部３２、多様化部３３、初期化管理部３４、脆弱性情報受信部３５、制御部３６、インスタンス管理部３７、出力部３８、及び、管理情報記憶部３９を含む。作成要求受信部３１、作成部３２、多様化部３３、初期化管理部３４、及び、管理情報記憶部３９は、初期化処理に関する。また、脆弱性情報受信部３５、制御部３６、インスタンス管理部３７、及び、管理情報記憶部３９は、インスタンス管理処理に関する。
【００３６】
作成要求受信部３１は、クラウドシステムの管理者からＶＭイメージの作成要求を受信する。ＶＭイメージの作成要求には、例えば、ＶＭイメージの種別を示す情報を含む。ＶＭイメージの種別は、ＶＭイメージに基づいて作成されるインスタンスが提供するサービスの種別である。ＶＭイメージの種別は、例えば、Ｗｅｂサーバ、アプリケーションサーバなどである。
【００３７】
作成部３２は、ＶＭイメージの作成要求に応じて、ＶＭイメージを作成する。以下の説明では、作成部３２が作成したＶＭイメージを元ＶＭイメージ６１と記す。元ＶＭイメージ６１は、種別毎に作成される。作成部３２は、元ＶＭイメージ６１を、仮想化サーバ２２の元ＶＭイメージ記憶部５１に格納する。
【００３８】
ＶＭイメージは、種別毎に属性として構成項目（設計項目）を有する。構成項目は、ＶＭイメージから作成されるインスタンスの構成要素を示す情報である。構成項目は、ＶＭイメージが有する機能や設定毎に定義される。構成項目は、具体的には例えば、インスタンスを構成するソフトウェアの種類またはパラメータ（設定変数）である。インスタンスを構成するソフトウェアの種類は、具体的には例えば、Ｗｅｂサーバソフトウェアやシェルである。パラメータは、具体的には例えば、Ｗｅｂサーバソフトウェアのルートディレクトリを示すパラメータである。以下の説明では、構成項目がＺ（Ｚは構成項目名）であることを、「構成項目（Ｚ）」と記す。
【００３９】
以下の説明では、ＶＭイメージの構成項目に対応する具体的な実装は、構成項目に対する実装値として表す。実装は、構成項目の機能や仕様を実現するための具体的なソフトウェアなどの装備、または、構成項目に対応する具体的な設定値である。例えば、ＶＭイメージのＷｅｂサーバソフトウェアとして、具体的な製品が実装されている場合、その製品は、構成項目（Ｗｅｂサーバソフトウェア）の実装値として示される。具体的には、ＶＭイメージのＷｅｂサーバソフトウェアとして、Apacheが実装されている場合、構成項目（Ｗｅｂサーバソフトウェア）の実装値は、Apacheとして示される。また、例えば、ＶＭイメージのシェルとして、bash（bourne-again shell）が実装されている場合、構成項目（シェル）の実装値は、bashとして示される。１つの構成項目に対応する複数の実装値群は、同等の機能を有する。
【００４０】
多様化部３３は、元ＶＭイメージ６１を多様化する。すなわち、多様化部３３は、元ＶＭイメージ６１の各構成項目の実装値の組み合わせを多様化した１以上のＶＭイメージを作成する。以下の説明では、多様化部３３により作成されたＶＭイメージを多様化ＶＭイメージ６２と記す。ＶＭイメージの多様化は、多様化ルール４１に基づいて行われる。ＶＭイメージの多様化については、後ほど詳しく説明する。多様化部３３は、作成した多様化ＶＭイメージ６２を、仮想化サーバ２２の多様化ＶＭイメージ記憶部５２に格納する。また、多様化部３３は、作成した多様化ＶＭイメージ６２の一覧（以下、多様化イメージリスト４３と記す）を管理情報記憶部３９に記録する。
【００４１】
初期化管理部３４は、元ＶＭイメージ６１及び多様化ＶＭイメージ６２のインスタンス６３を作成する。初期化管理部３４が作成するインスタンス数は、運用環境において予め設定された冗長度に基づいて決定される。冗長度は、管理情報記憶部３９に予め記憶されていてもよいし、管理者から入力されてもよい。初期化管理部３４によるインスタンス６３の作成については、後ほど詳しく説明する。初期化管理部３４は、作成したインスタンス６３を仮想化サーバ２２のインスタンス記憶部５３に格納する。また、初期化管理部３４は、作成したインスタンス６３の一覧（以下、インスタンスリスト６４と記す）を、仮想化サーバ２２のインスタンスリスト記憶部５４に記録する。また、初期化管理部３４は、外部からのネットワーク接続を各インスタンス６３に振り分ける設定をロードバランサ２３に対して行う。
【００４２】
脆弱性情報受信部３５は、例えば脆弱性情報提供機関などの外部の第三者機関から脆弱性情報を受信する。脆弱性情報は、例えば、脆弱性が発見されたソフトウェアの識別情報、パラメータの識別情報、または、パラメータの設定値を含むタイトルを示す情報、及び、数値化された深刻度を示す情報を含む。ここで、脆弱性が発見されたソフトウェアの識別情報は、具体的には、ソフトウェアの製品名などである。脆弱性情報受信部３５は、受信した脆弱性情報を制御部３６に出力する。
【００４３】
制御部３６は、脆弱性情報に基づいて、情報処理システムで実行中のインスタンス６３のうち、脆弱性を有するソフトウェアを実装しているインスタンス６３、または、脆弱性を有するパラメータ値を有するインスタンス６３を特定する。脆弱性を有するインスタンス６３の特定処理については、後ほど詳細に説明する。制御部３６は、特定したインスタンス６３を無効化するように、インスタンス管理部３７に指示する。この指示には、特定したインスタンス６３（以下、無効化対象インスタンスと記す）の識別情報が含まれる。尚、制御部３６は、脆弱性情報の深刻度に応じて、無効化するインスタンス６３の順番を制御してもよい。
【００４４】
インスタンス管理部３７は、制御部３６からインスタンス６３の無効化の指示を受信すると、無効化対象インスタンスを無効化する。無効化の処理の詳細については、後ほど詳しく説明する。また、インスタンス管理部３７は、無効化で減少したインスタンス数を元々の数に増やすために、無効化したインスタンス６３の代替インスタンスを作成する。代替インスタンスの作成処理の詳細については、後ほど詳しく説明する。さらに、インスタンス管理部３７は、無効化したインスタンス６３から代替インスタンスに切り替える設定をロードバランサ２３に対して行う。すなわち、インスタンス管理部３７は、先ず、無効化したインスタンス６３に対する外部からのネットワーク接続の振り分けを停止する。そしてインスタンス管理部３７は、外部からのネットワーク接続を、作成した代替インスタンスを含む実行中の各インスタンス６３に振り分ける設定をロードバランサ２３に対して行う。このような設定がなされると、ロードバランサ２３は補充されたインスタンス６３を新たに運用し、外部からのネットワーク接続を各インスタンス６３に振り分ける。これにより、脆弱性のある実装を持つインスタンス６３は外部との接続が解除されつつ、インスタンス数は元の数に保たれる。そのため、利用者に対するサービスの処理性能を落とさずに脆弱性を利用した攻撃を防ぐことができる。
【００４５】
出力部３８は、情報処理システムの状態に関する状態情報を利用者に対して出力する。状態情報は、稼働中のインスタンス状況を示す情報、インスタンスの多様化状況を示す情報、及び、脆弱性状況を示す情報を含む。多様化状況を示す情報は、実行中のインスタンスを対象とした、構成項目毎の各実装の数を示す情報を含む。出力部３８が出力する情報については、後ほど説明する。
【００４６】
管理情報記憶部３９は、多様化ルール４１、多様化ルールリスト４２、及び多様化イメージリスト４３を記憶する。管理情報記憶部３９が記憶する各情報については後ほど詳述する。
【００４７】
仮想化サーバ２２は、ハイパーバイザ及びＶＭ管理機能を有する情報処理装置である。仮想化サーバ２２は、元ＶＭイメージ記憶部５１、多様化ＶＭイメージ記憶部５２、インスタンス記憶部５３、及びインスタンスリスト記憶部５４を含む。元ＶＭイメージ記憶部５１は、元ＶＭイメージ６１を記憶する。多様化ＶＭイメージ記憶部５２は、多様化ＶＭイメージ６２を記憶する。インスタンス記憶部５３は、インスタンス６３を記憶する。インスタンスリスト記憶部５４は、インスタンスリスト６４を記憶する。インスタンスリスト６４については後ほど詳述する。尚、元ＶＭイメージ記憶部５１、多様化ＶＭイメージ記憶部５２、インスタンス記憶部５３、及びインスタンスリスト記憶部５４の一部または全部は、管理サーバ２１の管理情報記憶部３９に含まれてもよい。
【００４８】
尚、図４において、多様化ルール４１、多様化ルールリスト４２、多様化イメージリスト４３、元ＶＭイメージ６１、多様化ＶＭイメージ６２、インスタンス６３、インスタンスリスト６４は１つずつ記載しているが、それぞれ複数であってもよい。
【００４９】
ロードバランサ２３は、図１において説明したロードバランサと同様の機能を提供する。
【００５０】
元ＶＭイメージ記憶部５１は、第１格納部２の一例である。管理情報記憶部３９は、第２格納部３の一例である。多様化部３３は、第１生成部４の一例である。初期化管理部３４は、第２生成部５の一例である。脆弱性情報受信部３５は、受信部６の一例である。制御部３６及びインスタンス管理部３７は、制御部７の一例である。インスタンス管理部３７は、管理部８の一例である。出力部３８は、出力部９の一例である。元ＶＭイメージ６１は、第１の仮想マシンイメージの一例である。多様化ＶＭイメージ６２は、第２の仮想マシンイメージの一例である。多様化ルール４１は、イメージ生成情報の一例である。
【００５１】
（ＶＭイメージの多様化）
次に、多様化部３３による元ＶＭイメージ６１の多様化について説明する。上述したように、多様化部３３は、多様化ルール４１に基づいて元ＶＭイメージ６１の多様化を行う。多様化ルール４１は、構成項目ごとに予め管理情報記憶部３９に格納されているものとする。
【００５２】
先ず、多様化部３３は、元ＶＭイメージ６１の種別に応じて、元ＶＭイメージ６１の構成項目毎の多様化ルール４１を特定する。多様化ルール４１の特定は、多様化ルールリスト４２に基づいて行われる。多様化ルールリスト４２は、元ＶＭイメージ６１の種別毎に管理情報記憶部２３に記憶される。
【００５３】
図７は、種別がＷｅｂサーバである元ＶＭイメージ６１に対応する多様化ルールリスト４２の一例である。図７において、多様化ルールリスト４２は、「構成項目」、及び「多様化ルール」のデータ項目を含む。多様化ルールリスト４２のデータ項目は、レコード（行）毎に対応付けられる。「構成項目」は、構成項目を示す情報である。「多様化ルール」は、対応する「構成項目」の多様化ルール４１である。
【００５４】
図７においては、例えば、構成項目（Ｗｅｂサーバソフトウェア）の多様化ルール４１が「Ｗｅｂサーバ多様化ルール」であり、構成項目（シェル）の多様化ルール４１が「シェル多様化ルール」であることが示される。
【００５５】
多様化部３３は、元ＶＭイメージ６１の各構成項目の多様化ルール４１を特定すると、特定した多様化ルール４１に基づいて、元ＶＭイメージ６１の構成項目の実装値を多様化して、多様化ＶＭイメージ６２を作成する。多様化ＶＭイメージ６２の作成は、例えば多様化ルール４１毎に順番に行われる。また、多様化ＶＭイメージ６２の作成は、すべての多様化ルール４１に対して行われる。多様化ルール４１に基づいて、元ＶＭイメージを作成することを、多様化ルールを適用すると記す場合がある。
【００５６】
多様化ルール４１は、ルール毎に適した形式で保存され、それ自体が多様化の手続きを記したスクリプトなどのプログラムであってもよい。具体的には、例えば、構成項目（Ｚ）に対応する多様化ルールは、構成項目（Ｚ）の実装値を多様化した実装値のリストを含む。
【００５７】
図８は、構成項目（Ｗｅｂサーバソフトウェア）の多様化ルール４１の一例を示す。図８において、構成項目（Ｗｅｂサーバソフトウェア）の多様化ルール４１は、「スキャン項目」、及び「実装値リスト」を含む。「スキャン項目」は、ＶＭイメージからスキャンする実装値や設定値の情報である。「実装値リスト」は、ＶＭイメージの構成項目（Ｗｅｂサーバソフトウェア）の実装値と同様の機能を提供する実装（ソフトウェアまたは設定値）の一覧である。
【００５８】
図８の例では、「スキャン項目」には、Ｗｅｂサーバソフトウェアの製品名、ＩＰアドレス、ポート番号、及びルートディレクトリが示されており、「実装値リスト」には、Ｗｅｂサーバの具体的な製品名である、「Nginx」、「IIS」、「lighttpd」が示されている。
【００５９】
多様化部３３は、構成項目（Ｚ）の多様化ルールに含まれる実装値リストで示される設定に、元ＶＭイメージ６１の構成項目（Ｚ）の実装値を変更したＶＭイメージ（多様化ＶＭイメージ６２）を作成する。実装値リストに示される設定が複数ある場合には、多様化部３３は、元ＶＭイメージ６１の実装値を複数の設定それぞれに変更した、複数の多様化ＶＭイメージ６２を作成する。
【００６０】
図９は、構成項目（Ｗｅｂサーバソフトウェア）の多様化の様子の説明図である。図９において、先ず、多様化部３３は、多様化ルール４１の「スキャン項目」で示される実装値または設定値を元ＶＭイメージ６１からスキャンして特定する。図９の例では、多様化部３３は、現在使用されているＷｅｂサーバソフトウェアの製品名、ＩＰアドレス、ポート番号、及びルートディレクトリの情報を元ＶＭイメージ６１からスキャンする。次に、多様化部３３は、多様化ルール４１の「実装値リスト」で示される設定に元ＶＭイメージ６１のＷｅｂサーバソフトウェアをそれぞれ変更した多様化ＶＭイメージ６２を作成する。ここで、多様化ＶＭイメージ６２は、「実装値リスト」に示される製品名の数だけ作成されることとなる。具体的には、多様化部３３は、「実装値リスト」に示される製品名毎に以下の処理を行う。すなわち、先ず多様化部３３は、元ＶＭイメージ６１からインスタンスを生成し、生成したインスタンスのＷｅｂサーバソフトウェアを、「実装値リスト」に示される各製品に入れ替える。そして、多様化部３３は、生成したインスタンスに、元ＶＭイメージ６１からスキャンした設定値の一部などを反映し、再度ＶＭイメージとして保存する。このようにして多様化部３３は、「実装値リスト」に示される製品名毎に、新しいＶＭイメージを多様化ＶＭイメージとして作成する。
【００６１】
図９の例では、元ＶＭイメージ６１のＷｅｂサーバソフトウェアを「Appache」から「Nginx」、「IIS」、「lighttpd」のそれぞれに入れ替えた、３つの多様化ＶＭイメージ６２が作成されている。
【００６２】
次に、構成項目（シェル）の多様化の例を説明する。図１０は、構成項目（シェル）の多様化の様子の説明図である。ここで、構成項目（シェル）の多様化ルール４１は、「実装値リスト」として、「dash」が設定されているものとする。
【００６３】
多様化部３３は、構成項目（Ｗｅｂサーバソフトウェア）の多様化と同様に、多様化ルール４１の「実装値リスト」で示されるシェル毎に、以下の処理を行う。すなわち、先ず多様化部３３は、元ＶＭイメージ６１からインスタンスを生成し、生成したインスタンスにおいて使用されるシェルを、「実装値リスト」で示されるシェルに変更する。具体的には、図１０に示すように、多様化部３３は、「/bin/sh」のリンク先を、「実装値リスト」に示される各シェルに変更する。仮に、「実装値リスト」に記載されたシェルが元ＶＭイメージ６１にインストールされていない場合は、多様化部３３は、未インストールのシェルをインストールしてもよい。
【００６４】
特定した多様化ルール４１が複数存在する場合、ＶＭイメージの多様化は多様化ルール４１の組み合わせで扱われる。すなわち、例えば、多様化ルール４１−１の実装値リストにＡとＢが存在し、多様化ルール４１−２の実装値リストにＣとＤが存在する場合、ＡとＣ、ＡとＤ、ＢとＣ、ＢとＤ、の全通りの組み合わせの多様化が行われ、多様化ＶＭイメージ６２が作成される。これは、脆弱性は実装ごとに影響する可能性が高いため、ＶＭイメージ全体として各実装値の多様度が一様となることが望ましいからである。
【００６５】
上述したように、多様化ＶＭイメージ６２の作成は、多様化ルール４１毎に順番に行われる。２つ目以降の多様化ルール４１については、元ＶＭイメージ６１の多様化に加え、それまでに作成した多様化ＶＭイメージ６２に対してもさらに多様化を行う。例えば、「Ｗｅｂサーバ多様化ルール」、「シェル多様化ルール」の順に多様化が行われた場合、「シェル多様化ルール」についての多様化は以下のように行われる。すなわち、多様化部３３は、元ＶＭイメージ６１の多様化に加え、「Ｗｅｂサーバ多様化ルール」についての多様化で作成した多様化ＶＭイメージ６２に対しても多様化を行う。多様化ＶＭイメージ６２の多様化では、具体的には、多様化部３３は、各多様化ＶＭイメージ６２からインスタンスを生成し、生成したインスタンスにおいて使用されるシェルを変更する。このようにして、多様化部３３は、元ＶＭイメージ６１の各構成項目の実装値が取りうるすべての可能な組み合わせで、ＶＭイメージを生成する。そして、多様化部３３は、生成したＶＭイメージを仮想化サーバ２２の多様化ＶＭイメージ記憶部５２に格納する。また、多様化部３３は、元ＶＭイメージ６１と生成したすべての多様化ＶＭイメージ６２のリストを含む多様化イメージリスト４３を生成して管理情報記憶部３９に格納する。
【００６６】
図１１は、多様化イメージリスト４３の構成の一例を示す。図１１において、多様化イメージリスト４３は、「ＶＭイメージ番号」、「構成項目（Ｗｅｂサーバソフトウェア）」、「構成項目（シェル）」、及び「ＶＭイメージ」のデータ項目を含む。各データ項目は、レコード（行）毎に対応付けられる。レコードはそれぞれ、１つのＶＭイメージに関する情報である。
【００６７】
多様化イメージリスト４３の「構成項目（Ｗｅｂサーバソフトウェア）」、「構成項目（シェル）」は、元ＶＭイメージ６１に対応する多様化ルールリスト４２の「構成項目」の各レコードに対応する。すなわち「構成項目（Ｗｅｂサーバソフトウェア）」及び「構成項目（シェル）」のデータ項目は、元ＶＭイメージ６１に対応する多様化ルールリスト４２の「構成項目」に応じて変化するものとする。
【００６８】
「ＶＭイメージ番号」は、元ＶＭイメージ６１または多様化ＶＭイメージ６２を識別する識別情報である。「構成項目（Ｗｅｂサーバソフトウェア）」は、構成項目（Ｗｅｂサーバソフトウェア）の実装値である。「構成項目（シェル）」は、構成項目（シェル）の実装値である。「ＶＭイメージ」は、元ＶＭイメージ６１または多様化ＶＭイメージ６２の実ファイルである。
【００６９】
図１１において、例えば、「ＶＭイメージ番号」が「１」であるレコードにより以下のことが示される。すなわち、このレコードにより、構成項目（Ｗｅｂサーバソフトウェア）、構成項目（シェル）の実装値がそれぞれ、「Apache」、「bash」であるＶＭイメージファイル（1_1_Apache_2_bash.vmx）が存在することが示される。
【００７０】
尚、多様化ＶＭイメージ６２のファイルは、元ＶＭイメージ６１からの差分だけを多様化ＶＭイメージ記憶部５２に格納する形式としてもよい。
【００７１】
（インスタンスの作成処理）
次に、初期化管理部３４によるＶＭイメージのインスタンス６３の作成について説明する。上述したように、初期化管理部３４が作成するインスタンス数は、運用環境において予め定められた冗長度に基づいて決定される。ここで、冗長度の値は、多様化ＶＭイメージ６２の数以下である場合がある。その場合、初期化管理部３４は元ＶＭイメージ６１及び多様化ＶＭイメージ６２の中から、異なる実装のインスタンスが一様にシステム内において分布するように、インスタンス化するＶＭイメージの選択を行う。
【００７２】
インスタンス化するＶＭイメージの選択では、初期化管理部３４は、選択するＶＭイメージの組合せの中で、各構成項目の実装値が最も異なる組合せを選択する。具体的には、初期化管理部３４は、例えば以下のようにＶＭイメージの選択を行う。すなわち、初期化管理部３４は、１つずつＶＭイメージを選択していく。その際、初期化管理部３４は、それまでに選択したＶＭイメージを対象に、構成項目毎の各実装値の数を集計する。そして、初期化管理部３４は、各構成項目について、集計した数が最も少ない実装値を有するＶＭイメージを次に選択する。集計した数が最も少ない実装値を有するＶＭイメージが複数ある場合には、初期化管理部３４は、それらのＶＭイメージの中からランダムに選択する。
【００７３】
ここで、インスタンス化するＶＭイメージの選択について、以下の場合を例に説明する。すなわち、多様化ルール４１−１の実装値リストにＡ〜Ｃが存在し、多様化ルール４１−２の実装値リストにＤ、Ｅが存在し、多様化ルール４１−３の実装値リストにＦ〜Ｉが存在する場合の例について説明する。以下の説明では、（構成項目１、構成項目２、構成項目３）の実装値がそれぞれ（Ｖ、Ｗ、Ｘ）であるＶＭイメージを、ＶＭイメージ（Ｖ、Ｗ、Ｘ）と記す場合がある。この例の場合、初期化管理部３４は先ず、ランダムにＶＭイメージ（Ａ、Ｄ、Ｆ）を選択する。ＶＭイメージ（Ａ、Ｄ、Ｆ）を選択したので、この時点で（＜構成項目１＞、＜構成項目２＞、＜構成項目３＞）の実装値の数は、（＜Ａ：１、Ｂ：０、Ｃ：０＞、＜Ｄ：１、Ｅ：０＞、＜Ｆ：１、Ｇ：０、Ｈ：０、Ｉ：０＞）となる。したがって、初期化管理部３４は、構成項目１の実装値がＢまたはＣのいずれかであり、構成項目２の実装値がＥであり、構成項目３の実装値がＧ、Ｈ、または、ＩのいずれかであるＶＭイメージの中からランダムに選択する。例えば、初期化管理部３４は、ＶＭイメージ（Ｂ、Ｅ、Ｇ）を選択する。その後も同様にして、初期化管理部３４は例えば、ＶＭイメージ（Ｃ、Ｄ、Ｈ）、ＶＭイメージ（Ａ、Ｅ、Ｉ）、ＶＭイメージ（Ｂ、Ｄ、Ｆ）という順で、ＶＭイメージを選択していく。ＶＭイメージの選択は、選択したＶＭイメージの数が冗長度と同じ数になるまで行われる。
【００７４】
初期化管理部３４は、上述のように選択した各ＶＭイメージからインスタンス６３を生成する。そして初期化管理部３４は、生成したインスタンス６３を仮想化サーバ２２のインスタンス記憶部５３に格納する。また、初期化管理部３４は、生成したインスタンス６３の一覧を含むインスタンスリスト６４を生成し、仮想化サーバ２２のインスタンスリスト記憶部５４に格納する。
【００７５】
図１２は、インスタンスリスト６４の構成の一例を示す。図１２において、インスタンスリスト６４は、「インスタンス番号」、「無効」、「ＶＭイメージ番号」、「構成項目（Ｗｅｂサーバソフトウェア）」、「構成項目（シェル）」、及び「ＶＭイメージ」のデータ項目を含む。各データ項目は、レコード（行）毎に対応付けられる。レコードはそれぞれ、１つの実行中のインスタンス６３に関する情報である。尚、多様化イメージリスト４３の「構成項目（Ｗｅｂサーバソフトウェア）」、「構成項目（シェル）」は、元ＶＭイメージ６１に対応する多様化ルールリスト４２の「構成項目」の各レコードに対応する。すなわち「構成項目（Ｗｅｂサーバソフトウェア）」及び「構成項目（シェル）」のデータ項目は、元ＶＭイメージ６１に対応する多様化ルールリスト４２の「構成項目」に応じて変化するものとする。以下の説明では、「構成項目（Ｗｅｂサーバソフトウェア）」及び「構成項目（シェル）」をまとめて「構成項目」と記す場合がある。
【００７６】
「インスタンス番号」は現在実行中のインスタンス６３を識別する識別情報である。「無効」は、インスタンス６３が無効であるか否かを示す情報である。図面及び以下の説明では、「無効」の値が「×」である場合、インスタンス６３は有効であることを示し、「無効」の値が「○」である場合、インスタンス６３は無効であることを示すものとする。「ＶＭイメージ番号」は、インスタンス６３の生成元であるＶＭイメージを識別する識別情報である。「構成項目（Ｗｅｂサーバソフトウェア）」は、インスタンス６３の生成元であるＶＭイメージの構成項目（Ｗｅｂサーバソフトウェア）の実装値である。「構成項目（シェル）」は、インスタンス６３の生成元であるＶＭイメージの構成項目（シェル）の実装値である。「ＶＭイメージ」は、インスタンス６３の生成元であるＶＭイメージの実ファイルである。
尚、インスタンス６３は作成された時点で、稼働する（実行中の状態となる）ものとする。
【００７７】
（脆弱性を有するインスタンスの特定）
次に、脆弱性を有するインスタンス６３の特定について説明する。制御部３６は、脆弱性情報に基づいて、インスタンスリスト６４から脆弱性を有するインスタンス６３、または、脆弱性を有するパラメータ値を有するインスタンス６３を特定する。具体的には、制御部３６は、脆弱性情報から脆弱性を有するソフトウェアの識別情報、パラメータの識別情報、または、パラメータの設定値を取得する。そして制御部３６は、インスタンスリスト６４において、「構成項目」の値が脆弱性を有するソフトウェアの識別情報、または、パラメータの識別情報及びパラメータの設定値と対応するレコードを抽出することで、脆弱性を有するインスタンス６３を特定する。
【００７８】
図１２の例において、脆弱性を有するソフトウェアの識別情報として、Ｗｅｂサーバソフトウェアの「Apache」が示される場合、制御部３６は、インスタンスリスト６４の「構成項目（Ｗｅｂサーバソフトウェア）」の値が「Apache」であるレコードを抽出する。そして、制御部３６は、抽出したレコード、すなわち「インスタンス番号」が「1」、「5」、及び「9」のインスタンス６３を、脆弱性を有する無効化対象インスタンスであると特定する。
【００７９】
（インスタンス６３の無効化）
次に、インスタンス管理部３７による無効化対象インスタンスの無効化について説明する。インスタンス管理部３７は、制御部３６からインスタンス６３の無効化の指示を受信すると、無効化対象インスタンスを無効化する。インスタンス６３の無効化の指示には、無効化対象インスタンスの識別情報が含まれる。無効化対象インスタンスを無効化すると、インスタンス管理部３７は、インスタンスリスト６４の無効化対象インスタンスのレコードにおいて、「無効」の値を設定する。尚、インスタンスは、無効化された時点で、ロードバランサを介した通信を遮断する。
【００８０】
図１３は、無効化が行われた後のインスタンスリスト６４の一例を示す。図１３の例は、構成項目（Ｗｅｂサーバソフトウェア）の実装値「Apache」に脆弱性が発見された場合の例を示している。この場合、無効化対象インスタンスは、「インスタンス番号」が「1」、「5」、及び「9」のインスタンスである。無効化が行われると、「インスタンス番号」が「1」、「5」、及び「9」のレコードの「無効」の値が「○」に設定される。
【００８１】
（代替インスタンスの作成）
次に、インスタンス管理部３７による代替インスタンスの作成について説明する。インスタンス管理部３７は、無効化されたインスタンス６３の処理を代替するための代替インスタンスを作成する。代替インスタンスの作成において、インスタンス管理部３７は、元ＶＭイメージ６１及び多様化ＶＭイメージ６２のうちから、代替インスタンスを作成するためのＶＭイメージ（以下、代替対象ＶＭイメージと記す）を選択する。
【００８２】
代替対象ＶＭイメージの選択では、現在実行中のインスタンス６３の実装値を考慮して選択が行われる。具体的には、先ずインスタンス管理部３７は、無効化されたインスタンス６３を除く現在実行中のインスタンス６３を対象に、構成項目毎の各実装値の数を集計する。図１３の例では、構成項目（Ｗｅｂサーバソフトウェア）の各実装値の数は、ginx：3、IIS：3、lighttpd：3である。また、構成項目（シェル）の各実装値の数は、bash：3、dash：3、mksh：3である。次に、インスタンス管理部３７は、無効化された実装値を含まないＶＭイメージの中から、各構成項目について、集計した数が最も少ない実装値を有するＶＭイメージを優先して選択する。集計した数が最も少ない実装値を有するＶＭイメージが複数ある場合には、それらのＶＭイメージの中からランダムに選択される。図１３の例では、構成項目（Ｗｅｂサーバソフトウェア）、構成項目（シェル）の各実装値の数はすべて同じなので、インスタンス管理部３７は、ランダムでＶＭイメージを選択する。ここでは、例えばインスタンス管理部３７は、構成項目（Ｗｅｂサーバソフトウェア）、構成項目（シェル）の実装値がそれぞれ、「IIS」、「dash」であるＶＭイメージが選択されたものとする。そして、選択されたＶＭイメージからインスタンス６３が作成された場合、構成項目（Ｗｅｂサーバソフトウェア）の各実装値の数は、ginx：3、IIS：4、lighttpd：3となり、構成項目（シェル）の各実装値の数は、bash：3、dash：4、mksh：3となる。この場合の代替対象ＶＭイメージの選択においては、インスタンス管理部３７は、以下のＶＭイメージのうちから選択を行う。すなわち、インスタンス管理部３７は、構成項目（Ｗｅｂサーバソフトウェア）の実装値が「IIS」または「lighttpd」のいずれかであり、構成項目（シェル）の実装値が「bash」または「mksh」のいずれかであるＶＭイメージの中から選択する。
【００８３】
以上のようにしてインスタンス管理部３７は、代替対象ＶＭイメージを選択して、選択したＶＭイメージから代替インスタンスを作成する。代替対象ＶＭイメージの選択と、代替インスタンスの作成は、無効化されたインスタンス６３の数の分だけ行われる。そして、インスタンス管理部３７は、生成したインスタンス６３をインスタンス記憶部５３に格納する。また、インスタンス管理部３７は、作成した代替インスタンスの情報を、インスタンスリスト６４に反映する。
【００８４】
図１４は、代替インスタンスの情報を反映した後のインスタンスリスト６４の一例を示す。図１４は、図１３のインスタンスリスト６４に対して、代替インスタンスの情報を反映した状態を示している。図１４において、「インスタンス番号」が「1」、「5」、及び「9」のレコードが代替インスタンスの情報に更新されている。最終的には、実行中のインスタンス６３について、構成項目毎の各実装値の数が等しくなっている。
【００８５】
尚、代替対象ＶＭイメージの選択は、インスタンス管理部３７は、脆弱性を有する実装値をもたないＶＭイメージの中からランダムで選択してもよい。ランダムに選択する場合でも、確率的には全く同じ実装のインスタンス６３が生成される可能性もあるが、全体としては実装がほぼ一様となることが期待される。
【００８６】
（出力情報）
次に、出力部３８が出力する状態情報について説明する。出力部３８は、稼働中のインスタンス状況を示す情報、インスタンスの多様化状況を示す情報、及び、脆弱性状況を示す情報を、利用者端末に出力する。図１５は、状態情報の一例を示す。
【００８７】
図１５（Ａ）は、稼働中のインスタンス状況を示す情報の一例である。図１５（Ａ）において、稼働中のインスタンス状況を示す情報は、「インスタンス番号」、「構成項目（Ｗｅｂサーバソフトウェア）」、及び「構成項目（シェル）」のデータ項目を含む。各データ項目は、レコード（行）毎に対応付けられる。レコードはそれぞれ、１つの実行中のインスタンス６３に関する情報である。図１５（Ａ）の各データ項目は、インスタンスリスト６４における「インスタンス番号」、「構成項目（Ｗｅｂサーバソフトウェア）」、及び「構成項目（シェル）」と同様である。
【００８８】
図１５（Ｂ）は、多様化状況を示す情報の一例である。図１５（Ｂ）において、多様化状況を示す情報は、「構成項目」、「多様化ルール」、及び、「実装数の分布」のデータ項目を含む。各データ項目は、レコード（行）毎に対応付けられる。「構成項目」は、構成項目を示す情報である。「多様化ルール」は、対応する「構成項目」の多様化ルール４１を識別する識別情報である。「実装数の分布」は、現在実行中のインスタンス６３を対象に、「構成項目」毎の各実装値の数を集計した値である。
【００８９】
図１５（Ｃ）は、脆弱性状況を示す情報の一例である。図１５（Ｃ）において、脆弱性状況を示す情報は、「脆弱性番号」、「該当実装」、「発生日」、及び、「修正日」のデータ項目を含む。各データ項目は、レコード（行）毎に対応付けられる。「脆弱性番号」は、脆弱性情報受信部３５が受信した脆弱性情報を識別する識別情報である。「該当実装」は、「脆弱性番号」で示される脆弱性情報に含まれるタイトルを示す情報であり、さらに、どの多様化ルールに対応するかを示す情報を含む。「発生日」、及び、「修正日」は、それぞれ、脆弱性が発生した日付を示す情報、脆弱性に対する修正が行われた日付を示す情報である。
【００９０】
（初期化処理のフロー）
次に、初期化処理の動作フローについて説明する。図１６は、実施形態にかかる初期化処理の詳細を図解したフローチャートの一例を示す。
【００９１】
図１６において、先ず、作成要求受信部３１は、ＶＭイメージの作成要求を受信する（Ｓ１０１）。次に、作成部３２は、ＶＭイメージの作成要求に応じて、元ＶＭイメージ６１を作成する（Ｓ１０２）。作成部３２は、作成した元ＶＭイメージ６１を元ＶＭイメージ記憶部５１に格納する。
【００９２】
次に、多様化部３３は、多様化ルールリスト４２を参照し、未適用の多様化ルール４１が存在するか否かを判定する（Ｓ１０３）。未適用の多様化ルール４１が存在すると判定した場合（Ｓ１０３でＹｅｓ）、多様化部３３は、未適用の多様化ルール４１から適用対象の多様化ルール４１を選択する（Ｓ１０４）。次に、多様化部３３は、ＶＭイメージをスキャンして、実装値を特定する（Ｓ１０５）。次に、多様化部３３は、適用対象の多様化ルール４１に基づいて、実装値を入れ替えて、多様化ＶＭイメージ６２を作成する（Ｓ１０６）。Ｓ１０６が完了すると、多様化部３３は、適用対象の多様化ルール４１の適用が完了したと判定する。そして、処理は再度Ｓ１０３に遷移する。
【００９３】
Ｓ１０３において、未適用の多様化ルール４１が存在しないと判定した場合（Ｓ１０３でＮｏ）、初期化管理部３４は、冗長度に応じてインスタンス６３を作成する（Ｓ１０７）。
【００９４】
次に、初期化管理部３４は、外部からのネットワーク接続を各インスタンス６３に振り分ける設定をロードバランサ２３に行う（Ｓ１０８）。そして初期化処理は終了する。
【００９５】
（インスタンス管理処理のフロー）
次に、インスタンス管理処理の動作フローについて説明する。図１７は、実施形態にかかるインスタンス管理処理の詳細を図解したフローチャートの一例を示す。
【００９６】
図１７において、先ず、脆弱性情報受信部３５は、脆弱性情報を受信する（Ｓ２０１）。次に、制御部３６は、実行中のインスタンスのうち、脆弱性を有するインスタンス６３が存在するか否かを判定する（Ｓ２０２）。脆弱性を有するインスタンス６３が存在しないと判定された場合（Ｓ２０２でＮｏ）、インスタンス管理処理は終了する。
【００９７】
一方、脆弱性を有するインスタンス６３が存在すると判定した場合（Ｓ２０２でＹｅｓ）、制御部３６は、脆弱性情報に基づいて、実行中のインスタンスのうち、脆弱性を有するインスタンス６３を特定する（Ｓ２０３）。そして制御部３６は、特定したインスタンスを無効化するように、インスタンス管理部３７に指示する。
【００９８】
次に、インスタンス管理部３７は、インスタンス６３の無効化の指示を受信すると、無効化対象インスタンスを無効化する（Ｓ２０４）。
【００９９】
次に、インスタンス管理部３７は、無効化したインスタンス６３の代替インスタンスを作成する（Ｓ２０５）。代替インスタンスの作成の処理フローの詳細については、後ほど図１８を参照して説明する。
【０１００】
次に、インスタンス管理部３７は、無効化したインスタンス６３から代替インスタンスに切り替える設定をロードバランサ２３に対して行う（Ｓ２０６）。そして、インスタンス管理処理は終了する。
【０１０１】
（代替インスタンスの作成処理のフロー）
次に、代替インスタンスの作成処理の動作フローについて説明する。図１８は、実施形態にかかる代替インスタンスの作成処理の詳細を図解したフローチャートの一例を示す。尚、代替インスタンスの作成処理は、図１７のＳ２０５で実行される処理である。
【０１０２】
図１８において、先ず、インスタンス管理部３７は、実行中のインスタンス６３の数が冗長度より少ないか否かを判定する（Ｓ３０１）。実行中のインスタンス６３の数が冗長度以上であると判定された場合（Ｓ３０１でＮｏ）、代替インスタンスの作成処理は終了する。
【０１０３】
一方、実行中のインスタンス６３の数が冗長度より少ないと判定した場合（Ｓ３０１でＹｅｓ）、インスタンス管理部３７は、無効化されたインスタンス６３を除く現在実行中のインスタンス６３を対象に、構成項目毎の各実装値の数を集計する（Ｓ３０２）。
【０１０４】
次に、インスタンス管理部３７は、脆弱性を有する実装値を含まないＶＭイメージの中から、各構成項目について、集計した数が最も少ない実装値を有するＶＭイメージを優先して選択する（Ｓ３０３）。そしてインスタンス管理部３７は、選択したＶＭイメージから代替インスタンスを作成する（Ｓ３０４）。インスタンス管理部３７は、作成した代替インスタンスをインスタンス記憶部５３に格納する。そして、再度処理はＳ３０１に遷移する。
【０１０５】
（出力処理のフロー）
次に、出力部３８により状態情報の出力処理の動作フローについて説明する。図１９は、実施形態にかかる状態情報の出力処理の詳細を図解したフローチャートの一例を示す。
【０１０６】
図１９において、先ず、出力部３８は、利用者端末から状態情報の出力要求を受信する（Ｓ４０１）。次に、出力部３８は、状態情報を、要求のあった利用者端末に出力する（Ｓ４０２）。そして出力処理は終了する。
【０１０７】
（管理サーバのハードウェア構成）
次に、実施形態に係る管理サーバ２１のハードウェア構成の一例を説明する。図２０は、実施形態に係る管理サーバ２１のハードウェア構成の一例を示す。
【０１０８】
図２０において、管理サーバ２１は、コンピュータのプロセッサの一例であるCentral Processing Unit（ＣＰＵ）９１、メモリ９２、記憶装置９３、読取装置９４、及び通信インターフェース９５を含む。ＣＰＵ９１、メモリ９２、記憶装置９３、読取装置９４、及び通信インターフェース９５はバス９６を介して接続される。
【０１０９】
ＣＰＵ９１は、メモリ９２を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、作成部３２、多様化部３３、初期化管理部３４、制御部３６、インスタンス管理部３７、及び出力部３８の機能の一部または全部の機能を提供する。尚、出力部３８の機能は、通信インターフェース９５を介して実現される。
【０１１０】
メモリ９２は、例えば半導体メモリであり、Random Access Memory（ＲＡＭ）領域およびRead Only Memory（ＲＯＭ）領域を含んで構成される。メモリ９２は管理情報記憶部３９の一部または全部の機能を提供する。尚、メモリ９２は、元ＶＭイメージ記憶部５１、多様化ＶＭイメージ記憶部５２、インスタンス記憶部５３、及びインスタンスリスト記憶部５４の一部または全部の機能を提供してもよい。
【０１１１】
記憶装置９３は、例えばハードディスクである。なお、記憶装置９３は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置９３は、外部記録装置であってもよい。記憶装置９３は、管理情報記憶部３９の一部または全部の機能を提供してもよい。尚、記憶装置９３は、元ＶＭイメージ記憶部５１、多様化ＶＭイメージ記憶部５２、インスタンス記憶部５３、及びインスタンスリスト記憶部５４の一部または全部の機能を提供してもよい。
【０１１２】
読取装置９４は、ＣＰＵ９１の指示に従って着脱可能記憶媒体９９にアクセスする。着脱可能記憶媒体９９は、たとえば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。尚、読取装置９４は管理サーバ２１に含まれなくてもよい。
【０１１３】
通信インターフェース９５は、ＣＰＵ９１の指示に従ってネットワークを介して、仮想化サーバ２２、ロードバランサ２３、利用者端末及び第三機関の端末と通信する。通信インターフェース９５は、作成要求受信部３１、及び、脆弱性情報受信部３５の一部または全部の機能を提供する。
【０１１４】
実施形態のプログラムは、例えば、下記の形態で管理サーバ２１に提供される。
（１）記憶装置９３に予めインストールされている。
（２）着脱可能記憶媒体９９により提供される。
（３）プログラムサーバ（図示せず）から通信インターフェース９５を介して提供される。
【０１１５】
さらに、実施形態の管理サーバ２１の一部は、ハードウェアで実現してもよい。或いは、実施形態の管理サーバ２１は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
【０１１６】
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１１７】
１      仮想マシン制御装置
２      第１格納部
３      第２格納部
４      第１生成部
５      第２生成部
６      受信部
７      制御部
８      管理部
９      出力部
２１    管理サーバ
２２    仮想化サーバ
２３    ロードバランサ
３１    作成要求受信部
３２    作成部
３３    多様化部
３４    初期化管理部
３５    脆弱性情報受信部
３６    制御部
３７    インスタンス管理部
３８    出力部
３９    管理情報記憶部
４１    多様化ルール
４２    多様化ルールリスト
４３    多様化イメージリスト
５１    元ＶＭイメージ記憶部
５２    多様化ＶＭイメージ記憶部
５３    インスタンス記憶部
５４    インスタンスリスト記憶部
６１    元ＶＭイメージ
６２    多様化ＶＭイメージ
６３    インスタンス
６４    インスタンスリスト
９１    ＣＰＵ
９２    メモリ
９３    記憶装置
９４    読取装置
９５    通信インターフェース
９６    バス
９９    着脱可能記憶媒体
【図１】
2017126236.tif 000003
【図２】
2017126236.tif 000004
【図３】
2017126236.tif 000005
【図４】
2017126236.tif 000006
【図５】
2017126236.tif 000007
【図６】
2017126236.tif 000008
【図７】
2017126236.tif 000009
【図８】
2017126236.tif 000010
【図９】
2017126236.tif 000011
【図１０】
2017126236.tif 000012
【図１１】
2017126236.tif 000013
【図１２】
2017126236.tif 000014
【図１３】
2017126236.tif 000015
【図１４】
2017126236.tif 000016
【図１５】
2017126236.tif 000017
【図１６】
2017126236.tif 000018
【図１７】
2017126236.tif 000019
【図１８】
2017126236.tif 000020
【図１９】
2017126236.tif 000021
【図２０】
2017126236.tif 000022