(57)【要約】【課題】ソフトウェアに脆弱性が発見されたときの利便性が高い診断装置等を提供する。【解決手段】診断装置１００は、データベースに接続される。判定部１１２は、ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断する。出力部１１３は、判定部１１２による診断結果を示す情報を出力する。通知部１２３は、ソフトウェア群のいずれかに関して脆弱性情報が更新された場合、ソフトウェア群を利用するプロジェクトの管理者に通知する。【選択図】図３
2017228225.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア毎にライセンス情報と脆弱性情報とを示すソフトウェア情報を記憶するデータベースに接続された診断装置であって、
前記ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断する診断手段と、
前記診断手段による診断結果を示す情報を出力する出力手段と、
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新された場合、前記ソフトウェア群を利用するプロジェクトの管理者に通知する通知手段と、を備える、
診断装置。
【請求項２】
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新されたか否かをチェックするプロジェクト管理手段を更に備える、
請求項１に記載の診断装置。
【請求項３】
前記ソフトウェア情報は、ソフトウェア毎に前記ライセンス情報と前記脆弱性情報と公開ソフトウェア情報とを示し、
前記通知手段は、前記ソフトウェア群のいずれかに関して前記公開ソフトウェア情報が更新された場合、前記プロジェクトの管理者に通知する、
請求項１又は２に記載の診断装置。
【請求項４】
データベースサーバと診断装置とを備える診断システムであって、
前記データベースサーバは、
ソフトウェア毎にライセンス情報と脆弱性情報とを示すソフトウェア情報を記憶するデータベースを備え、
前記診断装置は、
前記ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断する診断手段と、
前記診断手段による診断結果を示す情報を出力する出力手段と、
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新された場合、前記ソフトウェア群を利用するプロジェクトの管理者に通知する通知手段と、を備える、
診断システム。
【請求項５】
前記データベースサーバは、
前記脆弱性情報を掲載する脆弱性情報サイトにアクセスし、新たな脆弱性情報が掲載された場合に、前記ソフトウェア情報を更新する処理を、定期的に実行するソフトウェア情報管理部を更に備える、
請求項４に記載の診断システム。
【請求項６】
前記ソフトウェア情報は、ソフトウェア毎に前記ライセンス情報と前記脆弱性情報と公開ソフトウェア情報とを示し、
前記ソフトウェア情報管理部は、前記公開ソフトウェア情報を掲載するソフトウェア情報サイトにアクセスし、新たな公開ソフトウェア情報が掲載された場合に、前記ソフトウェア情報を更新する処理を、定期的に実行する、
請求項５に記載の診断システム。
【請求項７】
ソフトウェア毎にライセンス情報と脆弱性情報とを示すソフトウェア情報を記憶するデータベースに接続された診断装置が実行する通知方法であって、
前記ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断し、
診断結果を示す情報を出力し、
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新された場合、予め定められた通知先に通知する、
通知方法。
【請求項８】
ソフトウェア毎にライセンス情報と脆弱性情報とを示すソフトウェア情報を記憶するデータベースに接続された診断装置が備えるコンピュータを、
前記ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断する診断手段、
前記診断手段による診断結果を示す情報を出力する出力手段、
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新された場合、前記ソフトウェア群を利用するプロジェクトの管理者に通知する通知手段、として機能させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、診断装置、診断システム、通知方法及びプログラムに関する。
【背景技術】
【０００２】
現在、ソフトウェアやファームウェアを開発するための開発環境を構成するソフトウェア群を１つのプロジェクトとして扱い、プロジェクト単位でソフトウェアのライセンスを診断する診断装置が知られている。ここで、プロジェクトで用いられるソフトウェアに脆弱性がある場合、プロジェクトに用いられるソフトウェアをバージョンアップ又は変更することが求められる。
【０００３】
現在、ソフトウェアに脆弱性が発見された場合、脆弱性に関する情報を通知する技術が知られている。例えば、特許文献１には、組織や仕様の変更に伴って脆弱性に関する情報の通知先が変更される環境においても、脆弱性に関する情報を伝達する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１５５７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１には、ソフトウェアに脆弱性が発見された場合に、脆弱性に関する情報を通知する技術が開示されているだけである。そして、特許文献１には、脆弱性に関する情報を通知する技術を、ソフトウェア群のライセンスを診断する診断装置の利便性が高まるように、診断装置に組み込む技術は開示されていない。このため、ソフトウェアに脆弱性が発見されたときの利便性が高い診断装置が望まれている。
【０００６】
本発明は、上記問題に鑑みてなされたものであり、ソフトウェアに脆弱性が発見されたときの利便性が高い診断装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係る診断装置は、
ソフトウェア毎にライセンス情報と脆弱性情報とを示すソフトウェア情報を記憶するデータベースに接続された診断装置であって、
前記ライセンス情報に基づいて、ユーザにより指定されたソフトウェア群のライセンスを診断する診断手段と、
前記診断手段による診断結果を示す情報を出力する出力手段と、
前記ソフトウェア群のいずれかに関して前記脆弱性情報が更新された場合、前記ソフトウェア群を利用するプロジェクトの管理者に通知する通知手段と、を備える。
【発明の効果】
【０００８】
本発明では、ライセンスの診断の対象となるソフトウェア群のいずれかに関して脆弱性情報が更新された場合、ソフトウェア群を利用するプロジェクトの管理者に通知される。従って、本発明によれば、ソフトウェアに脆弱性が発見されたときの利便性が高い診断装置等を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態１に係る診断システムの構成図である。
【図２】本発明の実施形態１に係る診断装置の構成図である。
【図３】本発明の実施形態１に係る診断装置の機能を説明するための図である。
【図４】本発明の実施形態１に係るデータベースサーバの機能を説明するための図である。
【図５】本発明の実施形態１に係る処理装置の構成図である。
【図６】本発明の実施形態１に係るデータベースサーバが実行する情報更新処理を示すフローチャートである。
【図７】本発明の実施形態１に係る診断装置が実行する通知処理を示すフローチャートである。
【図８】本発明の実施形態２に係る診断システムの構成図である。
【発明を実施するための形態】
【００１０】
（実施形態１）
以下、本発明の実施形態を、図面を参照して説明する。まず、図１を参照して、本発明の実施形態１に係る診断システム１０００について説明する。診断システム１０００は、ソフトウェアやファームウェアを開発するための１つのプロジェクトに用いられる複数のソフトウェア（以下、適宜「ソフトウェア群」という。）のライセンスを診断するシステムである。ここで、ソフトウェアのライセンスを診断することは、開発環境の使用者である開発者もしくはプロジェクトの管理者等が、当該ソフトウェアを利用した製品を開発するにあたり、個々のソフトウェアのライセンスを明確にし、自作成プログラムを含め、全てのプログラムに対するライセンス遵守事項を明確にすることである。自作成プログラムは、例えば、プロジェクトで利用されるソフトウェアを用いて作成したプログラムである。なお、ソフトウェアは、ライブラリのように他のソフトウェアに組み込まれて使用されるものであってもよいし、アプリケーションプログラムのようにプログラムを作成するためのツールであってもよい。
【００１１】
ライセンスの診断とは、具体的には、例えば、処理Ａ〜処理Ｄを実行することである。処理Ａは、製品を構成する各々のソフトウェア自身が持つライセンスを全て明らかにする処理である。処理Ｂは、ライセンス伝搬を考慮して、ソフトウェア同士の結合の仕方を調査及び特定する処理である。ライセンス伝搬とは、第１のソフトウェアを第２のソフトウェアが利用する場合に、第１のソフトウェアのライセンスが第２のソフトウェアにも承継されることである。処理Ｃは、処理Ａの処理結果と処理Ｂの処理結果とに基づいて、全てのソフトウェアの最終的なライセンスを明確にする処理である。処理Ｄは、各ライセンスで規定されている遵守事項に応じた診断結果を報知する処理である。遵守事項としては、例えば、ソースコードを公開する義務（以下「遵守事項１」とする。）や、ソースコード中にライセンスを表記する義務（以下「遵守事項２」とする。）がある。
【００１２】
ここで、遵守事項１が規定されたライセンスの対象となるソースコード部分は、一般に公開されている部分であれば問題ないが、自社開発部分であると問題がある。自社開発部分には、ノウハウが含まれており、公開したくないことが多いためである。そこで、処理Ｄでは、遵守事項１が規定されたライセンスの対象となるソースコード部分を特定し、特定した部分を診断結果としてユーザに報知する。一方、ユーザは、診断結果を参照して、問題があるか否かを判定し、問題がある場合には対策を講じる。また、処理Ｄでは、遵守事項２に関して、対象となる全てのソースコードにライセンス表記があるか否かを確認し、確認の結果を診断結果としてユーザに報知する。診断結果は、例えば、対象となる全てのソースコードにライセンス表記があるか否かを示す情報や、ライセンス表記がないソースコードを特定する情報である。一方、ユーザは、診断結果を参照して、対象となる全てのソースコードにライセンス表記があるか否かを確認したり、ライセンス表記がないソースコードにライセンス表記を追加したりする。
【００１３】
ソフトウェアに脆弱性があることが発見された場合、脆弱性が解消されたバージョンのソフトウェア、或いは、他のソフトウェアを利用するように、プロジェクトを再構築することが望まれる。なお、脆弱性とは、プログラムの不具合や設計上のミスが原因となって発生した情報セキュリティ上の欠陥である。ここで、ソフトウェアに脆弱性があることが発見された場合、脆弱性の内容、脆弱性を回避するための方法、脆弱性を回避するための修正ソフトウェア（例えば、修正パッチ）等を示す情報（以下「脆弱性情報」という。）が掲載されることが一般的である。しかしながら、ユーザ（例えば、開発者やプロジェクトの管理者）が、膨大な数のソフトウェアについて、脆弱性情報が掲載されたか否かを監視することは容易ではない。
【００１４】
また、ソフトウェアが更新（バージョンアップ）された場合、更新されたバージョンのソフトウェアを利用するように、プロジェクトを再構築することが望まれる。ここで、ソフトウェアが更新された場合、ソフトウェアが更新された旨、更新された内容、バージョン、ダウンロード元のＵＲＬ（Uniform Resource Locator）等を示す情報（以下「公開ソフトウェア情報」という。）が掲載されることが一般的である。しかしながら、ユーザが、膨大な数のソフトウェアについて、公開ソフトウェア情報が掲載されたか否かを監視することは容易ではない。
【００１５】
そこで、診断システム１０００は、脆弱性情報や公開ソフトウェア情報が更新されたソフトウェアを利用するプロジェクトの管理者に、脆弱性情報や公開ソフトウェア情報が更新された旨や脆弱性情報や公開ソフトウェア情報の内容を自動で通知する機能を有する。診断システム１０００によれば、管理者は、多大な調査負担を負うことなく、プロジェクトの再構築（迅速にソフトウェアのバージョンアップやソフトウェアの変更）を検討することが可能となる。また、管理者は、再構築後のプロジェクトに用いられるソフトウェア群について、即座に、ライセンスを診断することが可能となる。このため、ソフトウェア群により構成される開発環境を用いた開発効率が向上することが期待できる。
【００１６】
診断システム１０００は、診断装置１００と、データベースサーバ２００とを備える。診断装置１００とデータベースサーバ２００とは、通信ネットワーク７００を介して相互に接続される。また、診断装置１００とデータベースサーバ２００とは、通信ネットワーク７００を介して、処理装置３００と、端末装置４００と、脆弱性情報サイト５００と、ソフトウェア公開サイト６００とに接続される。
【００１７】
診断装置１００は、ユーザによる診断指示に従って、ユーザにより指定された診断対象のライセンスを診断する。診断指示や診断対象の指定は、例えば、通信ネットワーク７００を介して処理装置３００や端末装置４００から診断装置１００に与えられる。診断対象は、（１）新たに指定されたソフトウェア群（新たに作成されたプロジェクトに用いられるソフトウェア群）、（２）過去に診断されたソフトウェア群（作成済みのプロジェクトに用いられるソフトウェア群であって、データベース２１０に保存されているソフトウェア群）、（３）過去に診断されたソフトウェア群の一部又は全部を変更したソフトウェア群（作成済みのプロジェクトを変更したプロジェクトに用いられるソフトウェア群）などである。
【００１８】
診断装置１００は、データベースサーバ２００が備えるデータベース２１０を参照して、ソフトウェア群のライセンスを診断する。診断装置１００は、診断結果を示す情報を、通信ネットワーク７００を介して、処理装置３００や端末装置４００に送信する。診断装置１００は、診断したソフトウェア群をプロジェクトとしてデータベース２００に保存する。つまり、診断装置１００は、診断したソフトウェア群により構成されるプロジェクトを管理する。
【００１９】
また、診断装置１００は、脆弱性情報や公開ソフトウェア情報が更新された場合、管理者に通知する。通知内容は、脆弱性情報や公開ソフトウェア情報が更新された旨や、脆弱性情報や公開ソフトウェア情報の内容である。通知先は、例えば、管理者の電子メールのアドレスである。一方、通知を受けた管理者は、通知内容に従って、対応を検討し、プロジェクトで利用するソフトウェアを変更したり、更新したりする。また、管理者は、変更後のプロジェクトで用いられるソフトウェア群について、再度、ライセンスの診断を要求する。
【００２０】
図２に示すように、診断装置１００は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、ハードディスク１４、通信インターフェース１５を備える。診断装置１００が備える各構成要素は、バスを介して相互に接続される。診断装置１００は、例えば、パーソナルコンピュータやワークステーションである。
【００２１】
ＣＰＵ１１は、診断装置１００の全体の動作を制御する。なお、ＣＰＵ１１は、ＲＯＭ１２に格納されているプログラムに従って動作し、ＲＡＭ１３をワークエリアとして使用する。ＲＯＭ１２には、診断装置１００の全体の動作を制御するためのプログラムやデータが記憶される。ＲＡＭ１３は、ＣＰＵ１１のワークエリアとして機能する。つまり、ＣＰＵ１１は、ＲＡＭ１３にプログラムやデータを一時的に書き込み、これらのプログラムやデータを適宜参照する。
【００２２】
ハードディスク１４は、各種の情報を記憶する記録媒体である。通信インターフェース１５は、診断装置１００を、通信ネットワーク７００に接続するためのインターフェースである。診断装置１００は、通信インターフェース１５を介して通信ネットワーク７００に接続された各種の装置と通信することが可能である。通信インターフェース１５は、例えば、ＮＩＣ（Network Interface Card）を備える。
【００２３】
次に、図３を参照して、診断装置１００の機能的な構成について説明する。診断装置１００は、機能的には、診断部１１０と、構成管理部１２０とを備える。診断部１１０は、指定されたソフトウェア群のライセンスを診断する機能を有する。構成管理部１２０は、プロジェクトを管理する機能や、脆弱性情報や公開ソフトウェア情報が変更されたことを通知する機能を有する。診断部１１０は、入力部１１１と、判定部１１２と、出力部１１３と、制御部１１４とを備える。構成管理部１２０は、プロジェクト管理部１２１と、通知先記憶部１２２と、通知部１２３と、制御部１２４とを備える。
【００２４】
入力部１１１は、診断対象の入力を受け付ける。診断対象は、上述の通り、（１）新たに指定されたソフトウェア群、（２）過去に診断されたソフトウェア群、（３）過去に診断されたソフトウェア群の一部又は全部を変更したソフトウェア群である。入力部１１１は、（１）を処理装置３００や端末装置４００から受け付け、（２）や（３）を構成管理部１２０から受け付ける。入力部１１１の機能は、例えば、通信インターフェース１５の機能により実現される。
【００２５】
判定部１１２は、入力部１１１により受け付けられた診断対象と、データベース２１０に記憶された各ソフトウェアのライセンス情報とに基づいて、診断対象のライセンスを判定する。例えば、判定部１１２は、診断対象のソフトウェア群のそれぞれに対応するライセンス情報に基づいて、診断対象のソフトウェア群全ての最終的なライセンスを特定し、自作成プログラムを含め、全てのプログラムに対するライセンス遵守事項を明確にする。なお、ライセンスを判定することは、ライセンスを診断することである。判定部１１２の機能は、例えば、ＣＰＵ１１がＲＯＭ１２に記憶されたプログラムを実行することにより実現される。
【００２６】
出力部１１３は、判定部１１２による診断結果（判定結果）を示す情報を出力する。例えば、出力部１１３は、診断結果を示す情報を、通信ネットワーク７００を介して、処理装置３００に送信する。一方、処理装置３００は、受信した情報に基づいて、診断結果を液晶ディスプレイ３５に表示する。出力部１１３の機能は、例えば、ＣＰＵ１１と通信インターフェース１５とが協働することにより実現される。
【００２７】
制御部１１４は、診断部１１０全体を制御する。制御部１１４の機能は、例えば、ＣＰＵ１１がＲＯＭ１２に記憶されたプログラムを実行することにより実現される。
【００２８】
プロジェクト管理部１２１は、ライセンスを診断する対象となるプロジェクトを管理する。プロジェクト管理部１２１は、プロジェクトにＩＤを付与し、ＩＤにより特定されるプロジェクトを示すプロジェクト情報を、プロジェクト情報記憶部２１２に記憶させる。プロジェクト情報は、例えば、プロジェクトを構成するソフトウェア群を示す情報、プロジェクトに対するライセンスの診断結果を示す情報を含む。プロジェクト情報には、自作成プログラムを示す情報、自作成プログラムの所在を示す情報が含まれていてもよい。プロジェクト管理部１２１は、データベース管理部２２０にアクセスし、管理しているプロジェクトを構成するソフトウェア群に関して、脆弱性情報や公開ソフトウェア情報を取得し、脆弱性情報や公開ソフトウェア情報が更新されたか否かを判定する。プロジェクト管理部１２１は、更新されたと判定した場合、通知部１２３に更新された脆弱性情報や公開ソフトウェア情報を引き渡し、通知部１２３に通知を依頼する。
【００２９】
脆弱性情報や公開ソフトウェア情報が変更されたか否かをチェックするためにデータベース管理部２２０にアクセスするタイミングは、適宜、調整することができる。典型的には、プロジェクト管理部１２１は、予め定められた周期で、定期的に、データベース管理部２２０にアクセスする。この周期は、システムの管理者により指定された周期であってもよいし、システムが定めたデフォルトの周期であってもよい。なお、プロジェクト管理部１２１は、不定期で、データベース管理部２２０にアクセスしてもよい。例えば、プロジェクト管理部１２１は、データベース管理部２２０から脆弱性情報や公開ソフトウェア情報が更新された旨の通知を受けたことをトリガとして、データベース管理部２２０にアクセスしてもよい。
【００３０】
また、プロジェクト管理部１２１は、ユーザから受け付けたプロジェクト情報の変更指示に従って、プロジェクト情報記憶部２１２に記憶されたプロジェクト情報を変更する。プロジェクト情報を変更することは、ソフトウェア群の構成を変更することであり、例えば、用いるソフトウェアを他のソフトウェアに変更することである。プロジェクト管理部１２１は、通信ネットワーク７００を介して、処理装置３００や端末装置４００から変更指示を受け付ける。
【００３１】
また、プロジェクト管理部１２１は、脆弱性情報や公開ソフトウェア情報が変更されたソフトウェアを含むプロジェクトに対してプロジェクト情報の照会を受けた場合、ソフトウェアの更新や変更を実施すべきか否かの判断に役立つ情報を提示するユーザインターフェースを提供してもよい。このようなユーザインターフェースとして、例えば、現在使用しているソフトウェアの現在のバージョンにおける脆弱性、現在使用しているソフトウェアの公開ソフトウェア情報、現在使用しているソフトウェアのバージョンを更新した場合における脆弱性、代替可能な他のソフトウェアの公開ソフトウェア情報、代替可能な他のソフトウェアに変更した場合における脆弱性などを提示するユーザインターフェースがある。また、プロジェクト管理部１２１は、ソフトウェアの更新や変更を容易にするユーザインターフェースを提供してもよい。このようなユーザインターフェースを生成するための情報は、通信ネットワーク７００を介して、プロジェクト管理部１２１から処理装置３００や端末装置４００に送信される。プロジェクト管理部１２１の機能は、例えば、ＣＰＵ１１と通信インターフェース１５とが協働することにより実現される。
【００３２】
通知先記憶部１２２は、脆弱性情報や公開ソフトウェア情報の更新が検知された際に通知する宛先を示す情報を記憶する。宛先は、例えば、脆弱性情報や公開ソフトウェア情報の更新が検知されたソフトウェアを含むプロジェクトの管理者の電子メールアドレスである。宛先は、電子メールアドレスでなく、ソーシャルネットワークにおけるアカウントであってもよい。宛先は、１つでもよいし複数でもよい。宛先がない場合、通知されない。通知先記憶部１２２の機能は、例えば、ハードディスク１４の機能により実現される。
【００３３】
通知部１２３は、プロジェクト管理部１２１からの通知依頼に応答して、通知先記憶部１２２に記憶されている宛先に対して通知処理（例えば、電子メールを発信する処理）を実行する。通知内容は、脆弱性情報や公開ソフトウェア情報が更新された旨、脆弱性情報や公開ソフトウェア情報の内容、脆弱性情報や公開ソフトウェア情報が更新されたソフトウェアの種別、脆弱性情報が更新されたバージョン、情報源のＵＲＬなどである。このように、通知部１２３は、ソフトウェア群のいずれかに関して脆弱性情報が更新された場合、ソフトウェア群を利用するプロジェクトの管理者に、脆弱性情報が更新されたことを通知（報知）する。具体的には、通知部１２３は、脆弱性情報が更新された場合、管理者の電子メールアドレス宛に、脆弱性情報が更新されたことを知らせる電子メールを送信する。通知部１２３の機能は、例えば、ＣＰＵ１１と通信インターフェース１５とが協働することにより実現される。
【００３４】
制御部１２４は、構成管理部１２０全体を制御する。制御部１２４の機能は、例えば、ＣＰＵ１１がＲＯＭ１２に記憶されたプログラムを実行することにより実現される。
【００３５】
データベースサーバ２００は、データベース２１０を備えるサーバであり、データベース２１０に記憶されたデータを管理する。データベースサーバ２００は、通信ネットワーク７００を介して、診断装置１００からのアクセスを受け付ける。また、データベースサーバ２００は、通信ネットワーク７００を介して、脆弱性情報サイト５００やソフトウェア公開サイト６００から、定期的に、又は、不定期で、脆弱性情報や公開ソフトウェア情報を取得し、データベース２１０上の情報を更新する。図示しないが、データベースサーバ２００は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク、通信インターフェースなどを備える。
【００３６】
図４に示すように、データベースサーバ２００は、機能的には、データベース２１０と、データベース管理部２２０とを備える。データベース２１０は、ソフトウェア情報記憶部２１１と、プロジェクト情報記憶部２１２とを備える。データベース管理部２２０は、脆弱性情報サイト記憶部２２１と、ソフトウェア公開サイト記憶部２２２と、ソフトウェア情報管理部２２３と、制御部２２４とを備える。
【００３７】
ソフトウェア情報記憶部２１１は、ソフトウェア情報を記憶する。ソフトウェア情報は、ソフトウェア毎に、バージョン毎のソースコード情報、バージョン毎のライセンス情報、バージョン毎の脆弱性情報、公開ソフトウェア情報を示す情報である。ソフトウェア情報記憶部２１１の機能は、例えば、図示しないハードディスクの機能により実現される。
【００３８】
プロジェクト情報記憶部２１２は、プロジェクト情報を記憶する。上述したように、プロジェクト情報は、例えば、プロジェクトを構成するソフトウェア群を示す情報、プロジェクトに対するライセンスの診断結果を示す情報を含む。プロジェクト情報記憶部２１２の機能は、例えば、図示しないハードディスクの機能により実現される。
【００３９】
脆弱性情報サイト記憶部２２１は、各種のソフトウェアの脆弱性情報を掲載するサイト（脆弱性情報サイト５００）の所在を示す情報（例えば、ＵＲＬ）を記憶する。脆弱性情報を掲載するサイトは、１つでも複数でもよい。脆弱性情報を掲載するサイトが記憶されていない場合、脆弱性情報が取得されない。脆弱性情報サイト記憶部２２１の機能は、例えば、図示しないハードディスクの機能により実現される。
【００４０】
ソフトウェア公開サイト記憶部２２２は、各種のソフトウェアの公開ソフトウェア情報を掲載するサイト（ソフトウェア公開サイト６００）の所在を示す情報（例えば、ＵＲＬ）を記憶する。公開ソフトウェア情報を掲載するサイトは、１つでも複数でもよい。公開ソフトウェア情報を掲載するサイトが記憶されていない場合、公開ソフトウェア情報が取得されない。ソフトウェア公開サイト記憶部２２２の機能は、例えば、図示しないハードディスクの機能により実現される。
【００４１】
ソフトウェア情報管理部２２３は、脆弱性情報サイト記憶部２２１やソフトウェア公開サイト記憶部２２２に記憶された所在を示す情報に基づいて、脆弱性情報サイト５００やソフトウェア公開サイト６００（以下、適宜「外部サイト」という。）にアクセスし、脆弱性情報や公開ソフトウェア情報を取得する。ソフトウェア情報管理部２２３は、脆弱性情報や公開ソフトウェア情報が更新された場合、ソフトウェア情報記憶部２１１に記憶されているソフトウェア情報を更新する。つまり、ソフトウェア情報管理部２２３は、外部サイトから取得された情報と、ソフトウェア情報記憶部２１１に記憶されている情報とに差がある場合、データベース２１０に記憶された情報を更新する。
【００４２】
外部サイトにアクセスするタイミングは、適宜、調整することができる。典型的には、ソフトウェア情報管理部２２３は、予め定められた周期で、定期的に、外部サイトにアクセスする。この周期は、システムの管理者により指定された周期であってもよいし、システムが定めたデフォルトの周期であってもよい。
【００４３】
脆弱性情報や公開ソフトウェア情報の取得対象は、ソフトウェア情報記憶部２１１にソフトウェア情報が記憶されているソフトウェアである。より詳細には、掲載された脆弱性情報は、ソフトウェアの種別及びバージョンがソフトウェア情報として記憶されている場合に、取得対象となる。また、掲載された公開ソフトウェア情報は、ソフトウェアの種別がソフトウェア情報として記憶されている場合に、取得対象となる。ただし、掲載された脆弱性情報や公開ソフトウェア情報が、ソフトウェア情報として既に記憶されている場合、ソフトウェア情報は更新されない。なお、公開ソフトウェア情報は、例えば、ソースコードや、ビルド情報等をまとめたアーカイブである。
【００４４】
データベース２１０に登録される（ソフトウェア情報として記憶される）ソフトウェアは、システムの管理者やライセンス診断の利用者が任意に指定したソフトウェアであってもよいし、ライセンスが診断されたソフトウェアであってもよい。なお、ソフトウェア情報管理部２２３は、ソフトウェア情報として記憶されていないソフトウェアに関しても、脆弱性情報や公開ソフトウェア情報を収集し、保存してもよい。
【００４５】
また、ソフトウェア情報管理部２２３は、データベース管理部２２０の外部の構成（例えば、診断装置１００）からデータベース２１０へのアクセスを受け付け、情報の読み出しや情報の書き込みを中継する機能を有する。ソフトウェア情報管理部２２３の機能は、例えば、図示しないＣＰＵと図示しない通信インターフェースとが協働することにより実現される。
【００４６】
制御部２２４は、データベース管理部２２０全体を制御する。制御部２２４の機能は、例えば、図示しないＣＰＵが図示しないＲＯＭに記憶されたプログラムを実行することにより実現される。
【００４７】
本実施形態では、構成管理部１２０がソフトウェア情報管理部２２３に、管理対象のプロジェクトに使用されるソフトウェア群に関するソフトウェア情報の更新の有無を問い合わせる方式（ポーリング方式）を採用している。管理対象のプロジェクトに使用されるソフトウェア群に関するソフトウェア情報の更新が発生したことに応答してソフトウェア情報管理部２２３が構成管理部１２０に通知する方式（イベント方式）を採用してもよい。
【００４８】
処理装置３００は、ソフトウェア群がインストールされ、コーディングやビルド等が実行できる開発環境を備えた装置である。開発環境は、例えば、ファームウェア開発の場合、ファームウェアの開発に必要なソフトウェア群から構成される統合開発環境である。処理装置３００は、通信ネットワーク７００を介して、診断装置１００と接続される。システムの利用者は、処理装置３００が備えるウェブブラウザ上に表示されるユーザインターフェースを介して、診断対象の指定、診断実施の指示、診断結果の閲覧、脆弱性情報の閲覧、更新情報の閲覧、プロジェクトの再構築（利用するソフトウェアの変更）などを実施することができる。
【００４９】
図５に示すように、処理装置３００は、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ハードディスク３４、液晶ディスプレイ３５、キーボード３６、マウス１７、通信インターフェース３８を備える。処理装置３００が備える各構成要素は、バスを介して相互に接続される。処理装置３００は、例えば、パーソナルコンピュータやワークステーションである。
【００５０】
ＣＰＵ３１は、処理装置３００の全体の動作を制御する。なお、ＣＰＵ３１は、ＲＯＭ３２に格納されているプログラムに従って動作し、ＲＡＭ３３をワークエリアとして使用する。ＲＯＭ３２には、処理装置３００の全体の動作を制御するためのプログラムやデータが記憶される。ＲＡＭ３３は、ＣＰＵ３１のワークエリアとして機能する。つまり、ＣＰＵ３１は、ＲＡＭ３３にプログラムやデータを一時的に書き込み、これらのプログラムやデータを適宜参照する。
【００５１】
ハードディスク３４は、各種の情報を記憶する記録媒体である。液晶ディスプレイ３５は、ＣＰＵ３１による制御に従って、種々の情報を表示するデバイスである。キーボード３６は、ユーザから各種の操作を受け付けるユーザインターフェースである。マウス３７は、ユーザから各種の操作を受け付けるユーザインターフェースである。通信インターフェース３８は、処理装置３００を、通信ネットワーク７００に接続するためのインターフェースである。処理装置３００は、通信インターフェース３８を介して通信ネットワーク７００に接続された各種の装置と通信することが可能である。通信インターフェース３８は、例えば、ＮＩＣを備える。
【００５２】
端末装置４００は、診断装置１００にアクセスし、診断装置１００に診断実施を指示したり、診断結果を提示したりする装置である。なお、処理装置３００が診断装置１００に予め複数の診断対象（ソフトウェア群）を登録している場合、システムのユーザは、診断装置１００に登録された複数の診断対象から１つの診断対象を選択する。端末装置４００は、通信ネットワーク７００を介して、診断装置１００と接続される。システムの利用者は、端末装置４００が備えるＷＥＢブラウザ上に表示されるユーザインターフェースを介して、診断対象の選択、診断実施の指示、診断結果の閲覧などを実施することができる。図示しないが、端末装置４００は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク、液晶ディスプレイ、通信インターフェースなどを備える。端末装置４００は、例えば、パーソナルコンピュータやスマートフォンである。
【００５３】
脆弱性情報サイト５００は、各種のソフトウェアの脆弱性情報を掲載するサイトである。脆弱性情報サイト５００は、脆弱性情報を掲載するウェブページを蓄積するサーバ又はこのようなサーバを備えるシステムである。脆弱性情報サイト５００は、通信ネットワーク７００を介して、診断装置１００やデータベースサーバ２００からアクセスされる。
【００５４】
ソフトウェア公開サイト６００は、各種のソフトウェアの公開ソフトウェア情報を掲載するサイトである。ソフトウェア公開サイト６００は、各種のソフトウェアの公開ソフトウェア情報を掲載するウェブページを蓄積するサーバ又はこのようなサーバを備えるシステムである。ソフトウェア公開サイト６００は、通信ネットワーク７００を介して、診断装置１００やデータベースサーバ２００からアクセスされる。
【００５５】
次に、図６を参照して、データベースサーバ２００が実行する情報更新処理について説明する。データベースサーバ２００は、電源が投入されている間、情報更新処理を実行する。
【００５６】
データベース管理部２２０は、情報収集のタイミングか否かを判別する（ステップＳ１０１）。例えば、１日１回午前０時に情報収集を実行する場合、データベース管理部２２０は、現在時刻が午前０時であるか否かを判別する。なお、現在時刻は、データベースサーバ２００が備える図示しないＲＴＣ（Real Time Clock）を参照したり、通信ネットワーク７００に接続された図示しないサーバにアクセスしたりすることで取得可能である。データベース管理部２２０は、情報収集のタイミングでないと判別すると（ステップＳ１０１：ＮＯ）、ステップＳ１０１に処理を戻す。
【００５７】
データベース管理部２２０は、情報収集のタイミングであると判別すると（ステップＳ１０１：ＹＥＳ）、脆弱性情報を取得する（ステップＳ１０２）。具体的には、データベース管理部２２０は、通信ネットワーク７００を介して、脆弱性情報サイト５００から脆弱性情報を取得する。なお、取得される脆弱性情報は、ソフトウェア情報記憶部２１１に記憶されているソフトウェア情報に登録されているソフトウェアの種別及びバージョンに対応するものである。
【００５８】
データベース管理部２２０は、ステップＳ１０２の処理を完了すると、脆弱性情報が未登録であるか否かを判別する（ステップＳ１０３）。具体的には、データベース管理部２２０は、取得された脆弱性情報が、ソフトウェア情報として未登録であるか否かを判別する。
【００５９】
データベース管理部２２０は、脆弱性情報が未登録であると判別すると（ステップＳ１０３：ＹＥＳ）、脆弱性情報を登録する（ステップＳ１０４）。具体的には、データベース管理部２２０は、ソフトウェア情報記憶部２１１に記憶されているソフトウェア情報を、取得した脆弱性情報を含むように更新する。
【００６０】
データベース管理部２２０は、脆弱性情報が未登録でないと判別した場合（ステップＳ１０３：ＮＯ）、又は、ステップＳ１０４の処理を完了した場合、公開ソフトウェア情報を取得する（ステップＳ１０５）。具体的には、データベース管理部２２０は、通信ネットワーク７００を介して、ソフトウェア公開サイト６００から公開ソフトウェア情報を取得する。なお、取得される公開ソフトウェア情報は、ソフトウェア情報記憶部２１１に記憶されているソフトウェア情報に登録されているソフトウェアの種別に対応するものである。
【００６１】
データベース管理部２２０は、ステップＳ１０５の処理を完了すると、公開ソフトウェア情報が未登録であるか否かを判別する（ステップＳ１０６）。具体的には、データベース管理部２２０は、取得された公開ソフトウェア情報が、ソフトウェア情報として未登録であるか否かを判別する。
【００６２】
データベース管理部２２０は、公開ソフトウェア情報が未登録であると判別すると（ステップＳ１０６：ＹＥＳ）、公開ソフトウェア情報を登録する（ステップＳ１０７）。具体的には、データベース管理部２２０は、ソフトウェア情報記憶部２１１に記憶されているソフトウェア情報を、取得した公開ソフトウェア情報を含むように更新する。
【００６３】
データベース管理部２２０は、公開ソフトウェア情報が未登録でないと判別した場合（ステップＳ１０６：ＮＯ）、又は、ステップＳ１０７の処理を完了した場合、ステップＳ１０１に処理を戻す。なお、図６には、脆弱性情報を収集するタイミングと公開ソフトウェア情報を収集するタイミングとが同一である例を示しているが、これらのタイミングが異なっていてもよい。
【００６４】
次に、図７を参照して、診断装置１００が実行する通知処理について説明する。診断装置１００は、電源が投入されている間、通知処理を実行する。
【００６５】
構成管理部１２０は、更新確認のタイミングか否かを判別する（ステップＳ２０１）。例えば、１日１回午前１時に更新確認を実行する場合、構成管理部１２０は、現在時刻が午前１時であるか否かを判別する。なお、現在時刻は、診断装置１００が備える図示しないＲＴＣを参照したり、通信ネットワーク７００に接続された図示しないサーバにアクセスしたりすることで取得可能である。構成管理部１２０は、更新確認のタイミングでないと判別すると（ステップＳ２０１：ＮＯ）、ステップＳ２０１に処理を戻す。
【００６６】
構成管理部１２０は、更新確認のタイミングであると判別すると（ステップＳ２０１：ＹＥＳ）、対象のソフトウェアを特定する（ステップＳ２０２）。対象のソフトウェアは、プロジェクト管理部１２１が管理するプロジェクトに用いるソフトウェア群である。なお、プロジェクト管理部１２１が管理するプロジェクトは、プロジェクト情報記憶部２１２にプロジェクト情報が記憶されたプロジェクトである。
【００６７】
構成管理部１２０は、ステップＳ２０２の処理を完了すると、脆弱性情報と公開ソフトウェア情報とを取得する（ステップＳ２０３）。具体的には、構成管理部１２０は、データベース管理部２２０にアクセスし、対象のソフトウェアに関する、脆弱性情報と公開ソフトウェア情報とを、ソフトウェア情報記憶部２１１から取得する。
【００６８】
構成管理部１２０は、ステップＳ２０３の処理を完了すると、脆弱性情報又は公開ソフトウェア情報が更新されたか否かを判別する（ステップＳ２０４）。例えば、構成管理部１２０は、前回取得した脆弱性情報及び公開ソフトウェア情報を、ハードディスク１４又はデータベース２１０に記憶しておく。そして、構成管理部１２０は、記憶済みの脆弱性情報や公開ソフトウェア情報と、今回取得された脆弱性情報や公開ソフトウェア情報とに差異があるか否かを判別する。
【００６９】
構成管理部１２０は、脆弱性情報及び公開ソフトウェア情報が更新されていないと判別すると（ステップＳ２０４：ＮＯ）、ステップＳ２０１に処理を戻す。一方、構成管理部１２０は、脆弱性情報又は公開ソフトウェア情報が更新されたと判別すると（ステップＳ２０４：ＹＥＳ）、プロジェクトの管理者への通知先を取得する（ステップＳ２０５）。例えば、構成管理部１２０は、通知先記憶部１２２を参照して、脆弱性情報又は公開ソフトウェア情報が更新されたソフトウェアを利用するプロジェクトの管理者の電子メールアドレスを取得する。
【００７０】
構成管理部１２０は、ステップＳ２０５の処理を完了すると、情報が更新された旨を通知先に通知する（ステップＳ２０６）。具体的には、構成管理部１２０は、通知部１２３に通知を指示する。一方、通知部１２３は、プロジェクトの管理者の電子メールアドレスに向けて、電子メールを送信する。通知内容は、例えば、脆弱性情報が更新された旨、公開ソフトウェア情報が更新された旨、脆弱性情報の内容、公開ソフトウェア情報の内容などである。構成管理部１２０は、ステップＳ２０６の処理を完了すると、ステップＳ２０１に処理を戻す。
【００７１】
本実施形態では、ライセンスの診断の対象となるソフトウェア群のいずれかに関して脆弱性情報が更新された場合、ソフトウェア群を利用するプロジェクトの管理者に通知される。従って、本発明によれば、ソフトウェアに脆弱性が発見されたときの利便性が高い診断装置等を提供することができる。
【００７２】
（実施形態２）
実施形態１では、診断システム１０００が、診断部１１０と構成管理部１２０とを備える診断装置１００と、データベース２１０とデータベース管理部２２０とを備えるデータベースサーバ２００と、を備える例について説明した。本発明において、診断システムの構成は、この例に限定されない。図８に、本実施形態に係る診断システム１１００の構成を示す。
【００７３】
診断システム１１００は、診断部１１０と、構成管理部１２０と、データベース２１０と、データベース管理部２２０と、を備える１つの装置により構成されるシステムである。例えば、診断システム１１００は、診断部１１０と構成管理部１２０とを備える診断装置１００に、更に、データベース２１０とデータベース管理部２２０とを備えさせた構成である。診断システム１１００によっても、基本的に、診断システム１０００と同様の効果が得られる。
【００７４】
（変形例）
以上、本発明の実施形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能である。
【００７５】
本発明において、上記実施形態において説明した構成、機能、動作のどの部分を採用するのかは任意である。また、本発明において、上述した構成、機能、動作のほか、更なる構成、機能、動作が採用されてもよい。また、上述した機能は、どの装置が有していても良く、上述した機能がシステム全体として実行されればよい。
【００７６】
例えば、処理装置３００の機能が診断装置１００に組み込まれていてもよいし、端末装置４００の機能が診断装置１００に組み込まれていてもよい。また、処理装置３００の機能と端末装置４００の機能とを有する装置が通信ネットワーク７００に接続されていてもよい。
【００７７】
本発明に係る診断装置１００、データベースサーバ２００、処理装置３００、端末装置４００の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末装置に適用することで、当該パーソナルコンピュータを本発明に係る診断装置１００、データベースサーバ２００、処理装置３００、端末装置４００として機能させることも可能である。
【００７８】
また、このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【００７９】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００８０】
本発明は、ソフトウェアのライセンスを診断するシステムに適用可能である。
【符号の説明】
【００８１】
１１，３１  ＣＰＵ、１２，３２  ＲＯＭ、１３，３３  ＲＡＭ、１４，３４  ハードディスク、１５，３８  通信インターフェース、３５  液晶ディスプレイ、３６  キーボード、３７  マウス、１００  診断装置、１１０  診断部、１１１  入力部、１１２  判定部、１１３  出力部、１１４，１２４，２２４  制御部、１２０  構成管理部、１２１  プロジェクト管理部、１２２  通知先記憶部、１２３  通知部、２００  データベースサーバ、２１０  データベース、２１１  ソフトウェア情報記憶部、２１２  プロジェクト情報記憶部、２２０  データベース管理部、２２１  脆弱性情報サイト記憶部、２２２  ソフトウェア公開サイト記憶部、２２３  ソフトウェア情報管理部、３００  処理装置、４００  端末装置、５００  脆弱性情報サイト、６００  ソフトウェア公開サイト、７００  通信ネットワーク、１０００，１１００  診断システム
【図１】
2017228225.tif 000003
【図２】
2017228225.tif 000004
【図３】
2017228225.tif 000005
【図４】
2017228225.tif 000006
【図５】
2017228225.tif 000007
【図６】
2017228225.tif 000008
【図７】
2017228225.tif 000009
【図８】
2017228225.tif 000010