(57)【要約】      （修正有）【課題】脆弱性を検証する処理による計算資源の消費量を低減しつつ、コンテナイメージの安全性を担保することを目的とする。【解決手段】コンテナイメージ検証システムにおいて、簡易情報取得部１２１は、コンテナイメージデータベース１６０からコンテナ構成ファイルを取得し、パッケージのバージョンを特定する。簡易照合部１２３は、パッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報１７０に基づきコンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う。詳細情報取得部１３１は、簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する。詳細照合部１３２は、脆弱性情報１７０に基づいて、詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う。【選択図】図１
2020154861.tif 000002
【特許請求の範囲】
【請求項１】
コンテナイメージの脆弱性を検証するコンテナイメージ検証装置において、
前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定する簡易情報取得部と、
前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う簡易照合部と、
前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する詳細情報取得部と、
前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う詳細照合部と
を備えたコンテナイメージ検証装置。
【請求項２】
前記簡易情報取得部は、
前記コンテナ構成ファイルから前記生成手順を構成するパッケージインストールコマンドを抽出し、前記パッケージのバージョンが指定されているパッケージインストールコマンドに基づいて前記パッケージのバージョンを特定する請求項１に記載のコンテナイメージ検証装置。
【請求項３】
前記コンテナイメージデータベースは、前記コンテナイメージの更新日時を含み、
前記脆弱性情報は、最新の更新日付を含み、
前記簡易照合部は、前記パッケージのバージョンが特定できない場合、前記コンテナイメージデータベースに含まれる前記コンテナイメージの更新日時と、前記脆弱性情報の最新の更新日付とを比較し、前記コンテナイメージの更新日時以降に前記脆弱性情報が更新されている場合に、前記コンテナイメージに含まれるパッケージに脆弱性有りと判定する請求項１または請求項２に記載のコンテナイメージ検証装置。
【請求項４】
前記簡易照合部は、前記コンテナイメージデータベースに前記簡易検証の結果を記憶し、
前記詳細照合部は、前記コンテナイメージデータベースに前記詳細検証の結果を記憶し、
前記コンテナイメージ検証装置は、
前記コンテナイメージデータベースに基づいて、脆弱性有りと判定されたコンテナイメージを脆弱性コンテナイメージとして更新の可否を判定し、更新可能であれば前記脆弱性コンテナイメージを更新するコンテナイメージ選択部を備えた請求項１から請求項３のいずれか１項に記載のコンテナイメージ検証装置。
【請求項５】
前記コンテナイメージ選択部は、
前記脆弱性コンテナイメージについて更新不可と判定された場合は、インターネットに公開された本番環境への配布するコンテナイメージを格納するパブリック向けレジストリから前記脆弱性コンテナイメージを削除する請求項４に記載のコンテナイメージ検証装置。
【請求項６】
コンテナイメージの脆弱性を検証するコンテナイメージ検証装置のコンテナイメージ検証方法において、
簡易情報取得部が、前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定し、
簡易照合部が、前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行い、
詳細情報取得部が、前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得し、
詳細照合部が、前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行うコンテナイメージ検証方法。
【請求項７】
コンテナイメージの脆弱性を検証するコンテナイメージ検証装置のコンテナイメージ検証プログラムにおいて、
前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定する簡易情報取得処理と、
前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う簡易照合処理と、
前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する詳細情報取得処理と、
前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う詳細照合処理と
をコンピュータである前記コンテナイメージ検証装置に実行させるコンテナイメージ検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナイメージ検証装置、コンテナイメージ検証方法、およびコンテナイメージ検証プログラムに関する。
【背景技術】
【０００２】
コンテナ環境で利用するコンテナイメージをパブリックレジストリから取得する場合、脆弱性のあるイメージをダウンロードしてしまうリスクがある。また、当初は安全であっても、コンテナ環境にて、脆弱性のあるパッケージを追加したコンテナイメージを作成する可能性がある。そのような脆弱性を持つコンテナイメージがインターネット向けに公開されるシステム上に展開された場合、サイバー攻撃を受け、システムに被害をもたらすリスクがある。
【０００３】
特許文献１は、コンテナイメージの取得装置と配信装置で構成される。取得装置は、コンテナイメージのバージョンを特定する情報の入力を受け付け、バージョンを特定し、配信装置に通知する。配信装置は、該当するバージョンのコンテナイメージを取得装置に対して送信する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−６３６２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、配信装置が配信するコンテナイメージには脆弱性を持つソフトウェアパッケージが含まれる可能性がある。しかし、そのような脆弱性を検証し、コンテナイメージの安全性を担保する仕組みがない。コンテナイメージを実行することにより脆弱性を検証できるが、全てのコンテナイメージを実行して脆弱性を検証するので計算資源の消費量が高くなる。
【０００６】
本発明では、脆弱性を検証する処理による計算資源の消費量を低減しつつ、コンテナイメージの安全性を担保することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るコンテナイメージ検証装置は、コンテナイメージの脆弱性を検証するコンテナイメージ検証装置において、
前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定する簡易情報取得部と、
前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う簡易照合部と、
前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する詳細情報取得部と、
前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う詳細照合部と
を備えた。
【０００８】
前記簡易情報取得部は、
前記コンテナ構成ファイルから前記生成手順を構成するパッケージインストールコマンドを抽出し、前記パッケージのバージョンが指定されているパッケージインストールコマンドに基づいて前記パッケージのバージョンを特定する。
【０００９】
前記コンテナイメージデータベースは、前記コンテナイメージの更新日時を含み、
前記脆弱性情報は、最新の更新日付を含み、
前記簡易照合部は、前記パッケージのバージョンが特定できない場合、前記コンテナイメージデータベースに含まれる前記コンテナイメージの更新日時と、前記脆弱性情報の最新の更新日付とを比較し、前記コンテナイメージの更新日時以降に前記脆弱性情報が更新されている場合に、前記コンテナイメージに含まれるパッケージに脆弱性有りと判定する。
【００１０】
前記簡易照合部は、前記コンテナイメージデータベースに前記簡易検証の結果を記憶し、
前記詳細照合部は、前記コンテナイメージデータベースに前記詳細検証の結果を記憶し、
前記コンテナイメージ検証装置は、
前記コンテナイメージデータベースに基づいて、脆弱性有りと判定されたコンテナイメージを脆弱性コンテナイメージとして更新の可否を判定し、更新可能であれば前記脆弱性コンテナイメージを更新するコンテナイメージ選択部を備えた。
【００１１】
前記コンテナイメージ選択部は、
前記脆弱性コンテナイメージについて更新不可と判定された場合は、インターネットに公開された本番環境への配布するコンテナイメージを格納するパブリック向けレジストリから前記脆弱性コンテナイメージを削除する。
【００１２】
本実施の形態に係るコンテナイメージ検証方法は、コンテナイメージの脆弱性を検証するコンテナイメージ検証装置のコンテナイメージ検証方法において、
簡易情報取得部が、前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定し、
簡易照合部が、前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行い、
詳細情報取得部が、前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得し、
詳細照合部が、前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う。
【００１３】
本実施の形態に係るコンテナイメージ検証プログラムは、コンテナイメージの脆弱性を検証するコンテナイメージ検証装置のコンテナイメージ検証プログラムにおいて、
前記コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベースから、前記コンテナ構成ファイルを取得し、前記コンテナイメージに含まれるパッケージのバージョンを特定する簡易情報取得処理と、
前記コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報に基づいて、前記コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う簡易照合処理と、
前記簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、前記詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する詳細情報取得処理と、
前記脆弱性情報に基づいて、前記詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う詳細照合処理と
をコンピュータである前記コンテナイメージ検証装置に実行させる。
【発明の効果】
【００１４】
本発明に係るコンテナイメージ検証装置では、簡易情報取得部が、コンテナイメージデータベースからコンテナ構成ファイルを取得し、コンテナイメージに含まれるパッケージのバージョンを特定する。簡易照合部が、脆弱性情報に基づいて、コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う。そして、詳細照合部は、簡易検証により脆弱性有りと判定された詳細検証対象コンテナイメージに対して、詳細検証を行う。よって、本発明に係るコンテナイメージ検証装置によれば、簡易検証により脆弱性有りと判定された詳細検証対象コンテナイメージに対してのみ詳細検証を行うので、コンテナイメージの検証処理による計算資源の消費量を軽減することができるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係るコンテナイメージ検証システムの全体構成図。
【図２】実施の形態１に係るコンテナイメージ取得処理のフロー図。
【図３】実施の形態１に係るコンテナイメージデータベース登録処理のフロー図。
【図４】実施の形態１に係るコンテナイメージ利用処理のフロー図。
【図５】実施の形態１に係るコンテナイメージ定期検証処理のフロー図。
【図６】実施の形態１に係るコンテナイメージ検証処理のフロー図。
【図７】実施の形態１に係るコンテナイメージの簡易検証処理のフロー図。
【図８】実施の形態１に係るコンテナ構成ファイルと脆弱性情報の例。
【図９】実施の形態１に係る脆弱性情報取得処理のフロー図。
【図１０】実施の形態１に係る脆弱性情報の最新更新日付情報の取得処理のフロー図。
【図１１】実施の形態１に係るパッケージ名およびバージョン情報の抽出処理のフロー図。
【図１２】実施の形態１に係るコンテナ構成ファイルからの簡易パッケージ情報取得処理のフロー図。
【図１３】実施の形態１に係るコンテナ構成ファイル（ｒｐｍコマンド）からの簡易パッケージ情報取得処理のフロー図。
【図１４】実施の形態１に係るコンテナ構成ファイル（ｙｕｍコマンド）からの簡易パッケージ情報取得処理のフロー図。
【図１５】実施の形態１に係るコンテナイメージの詳細検証処理のフロー図。
【図１６】実施の形態１に係る詳細検証処理の詳細パッケージ情報取得処理のフロー図。
【図１７】実施の形態１に係るパーケージ一覧の例。
【図１８】実施の形態１に係るパッケージ一覧からのパッケージ名・バージョン情報抽出処理のフロー図。
【図１９】実施の形態１に係るコンテナイメージ更新・削除処理のフロー図。
【図２０】実施の形態１に係るコンテナイメージ更新可否判定処理のフロー図。
【図２１】実施の形態１に係るコンテナイメージ更新処理のフロー図。
【図２２】実施の形態１に係るコンテナイメージ配布装置更新処理のフロー図。
【図２３】実施の形態１に係るコンテナイメージ削除処理のフロー図。
【図２４】実施の形態１に係るコンテナイメージ本番環境利用処理のフロー図。
【図２５】実施の形態１に係るデータの流れを示す図。
【図２６】実施の形態１に係るコンテナイメージ検証装置のハードウェア構成図。
【発明を実施するための形態】
【００１６】
以下、本実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１７】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るコンテナイメージ検証システム５００の全体構成図である。
コンテナイメージ検証システム５００は、コンテナイメージ検証装置１００、ローカルレジストリ２００、およびコンテナイメージ配布装置３００を備える。
ここでは、コンテナイメージ検証システム５００の各構成要素の機能の概要について説明する。
【００１８】
ローカルレジストリ２００は、インターネット上に公開されたコンテナイメージ２１０を格納する。ローカルレジストリ２００には、インターネットを介して予めパブリックレジストリから取得したコンテナイメージ、あるいは、開発環境５０で変更を加えたコンテナイメージが格納される。ローカルレジストリ２００は、コンテナイメージ２１０を開発環境５０に配布する。
パッケージ管理システム２２０は、コンテナイメージ内部のパッケージを管理するシステムである。
【００１９】
コンテナイメージ検証装置１００は、コンテナイメージの脆弱性を検証する。すなわち、コンテナイメージ検証装置１００は、コンテナイメージに脆弱性が含まれるかどうかの判定、および、脆弱性が含まれるコンテナイメージの削除を行う。
コンテナイメージ検証装置１００は、簡易検証部１２０、詳細検証部１３０、コンテナイメージ選択部１５０、コンテナイメージデータベース１６０、脆弱性情報１７０を備える。簡易検証部１２０は、簡易情報取得部１２１、脆弱性情報取得部１２２、および簡易照合部１２３を備える。詳細検証部１３０は、詳細情報取得部１３１、および詳細照合部１３２を備える。
コンテナイメージ検証装置１００は、ローカルレジストリ２００に格納されたコンテナイメージ２１０の脆弱性有無の検証を行い、結果をコンテナイメージデータベース１６０に保存する。また、コンテナイメージ検証装置１００は、コンテナイメージ選択部１５０により、コンテナイメージ配布装置３００複製するコンテナイメージを選択する。
【００２０】
コンテナイメージデータベース１６０は、コンテナイメージの以下の情報を管理する。
・コンテナイメージＩＤ
・コンテナイメージ更新日時
・コンテナイメージ簡易検証結果
・コンテナイメージ更新可否
・コンテナ構成ファイル
・コンテナイメージ詳細検証結果
・パッケージ情報
・脆弱性のあるパッケージ名
【００２１】
簡易情報取得部１２１は、コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベース１６０から、コンテナ構成ファイルを取得する。そして、簡易情報取得部１２１は、コンテナイメージに含まれるパッケージのバージョンを特定する。簡易情報取得部１２１は、簡易パッケージ情報取得部ともいう。
【００２２】
詳細情報取得部１３１は、簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行する。そして、詳細情報取得部１３１は、詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する。詳細情報取得部１３１は、パッケージ管理システム２２０からコンテナイメージを実行し、インストールされたパッケージ一覧を取得し、次の情報をコンテナイメージデータベース１６０に保存する。
・パッケージ名
・バージョン情報
【００２３】
脆弱性情報取得部１２２は、インターネット上に存在する脆弱性情報データベースから脆弱性情報１７０を取得し、次の情報をローカルの脆弱性情報データベースに保存する。
・脆弱性情報ＩＤ
・パッケージ名
・バージョン情報
【００２４】
脆弱性情報１７０は、コンテナイメージ検証装置１００に存在する。脆弱性情報１７０は、コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた情報である。脆弱性情報１７０には、パッケージの脆弱性情報および最新の更新日付が含まれる。
【００２５】
簡易照合部１２３は、脆弱性情報１７０に基づいて、コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う。簡易照合部１２３は、コンテナイメージデータベース１６０の情報と脆弱性情報１７０を照合する。簡易照合部１２３は、コンテナイメージのパッケージ情報と脆弱性情報１７０を照合し、合致するパッケージがあれば脆弱性有り、合致するパッケージがなければ脆弱性無し、と判定する。
【００２６】
詳細照合部１３２は、簡易検証により脆弱性有りとされたコンテナイメージ（詳細検証対象コンテナイメージ）の脆弱性有無の有無を判定し、コンテナイメージデータベース１６０にコンテナイメージ名およびその詳細検証結果を入力する。
【００２７】
コンテナイメージ選択部１５０は、コンテナイメージデータベース１６０に保存された簡易検証結果および詳細検証結果に基づき、ローカルレジストリ２００およびコンテナイメージ配布装置３００のコンテナイメージの更新および削除処理を実施する。脆弱性有りのコンテナイメージには、ローカルレジストリ２００のコンテナイメージの更新を試みる。更新が不可であれば、コンテナイメージをローカル向けレジストリ３１０にのみ配布し、パブリック向けレジストリ３２０からは削除する。
【００２８】
コンテナイメージ配布装置３００は、コンテナイメージを本番環境に対して配布する。コンテナイメージ配布装置３００は、ローカル向けレジストリ３１０と、パブリック向けレジストリ３２０から構成される。ローカル向けレジストリ３１０とパブリック向けレジストリ３２０には異なるＩＰアドレスを割り当て、ファイアウォール７０でアクセス制御する。
【００２９】
ローカル向けレジストリ３１０は、本番環境（ローカル）９０にのみコンテナイメージを配布する。ローカルレジストリ２００のコンテナイメージがすべて複製され、格納される。
パブリック向けレジストリ３２０は、本番環境（ローカル）９０および本番環境（パブリック）８０に対してコンテナイメージを配布する。ローカルレジストリ２００のコンテナイメージのうち、コンテナイメージ検証装置１００で安全と判定されたコンテナイメージのみが複製され、格納される。
【００３０】
本番環境（ローカル）９０は、インターネット３０からの接続を受け付けないネットワークセグメントに存在する本番環境である。一方、本番環境（パブリック）８０は、インターネット３０からの接続を受け付けるネットワークセグメントに存在する本番環境である。
【００３１】
＊＊＊動作の説明＊＊＊
本実施の形態に係るコンテナイメージ検証システム５００によるコンテナイメージ検証処理について説明する。
【００３２】
図２は、本実施の形態に係るコンテナイメージ取得処理のフロー図である。
コンテナイメージ検証システム５００の利用形態としては、管理者がパブリックレジストリからのコンテナイメージの新規取得を行い、開発者がそのコンテナイメージを利用して開発を行うことを想定している。以下、管理者がパブリックレジストリからコンテナイメージを都度取得するコンテナイメージ取得処理について説明する。
【００３３】
ステップＳ１０１において、パブリックレジストリからのコンテナイメージ取得が開始される。
ステップＳ１０２において、パブリックレジストリよりコンテナイメージがダウンロードされる。
ステップＳ１０３において、コンテナイメージデータベース登録処理が実施される。
ステップＳ１０４において、コンテナイメージ検証処理が実施される。
【００３４】
図３は、本実施の形態に係るコンテナイメージデータベース登録処理のフロー図である。
ステップＳ２０１において、コンテナイメージの以下情報がコンテナイメージデータベースに登録される。
・コンテナイメージＩＤ
・コンテナイメージ更新日時
・コンテナ構成ファイル
【００３５】
図４は、本実施の形態に係るコンテナイメージ利用処理のフロー図である。
コンテナイメージ利用処理は、取得したコンテナイメージを開発者が利用する処理である。
ステップＳ３０１において、コンテナイメージ利用処理が開始される。
ステップＳ３０２において、ローカルレジストリ２００からコンテナイメージが開発環境５０に展開される。
ステップＳ３０３において、展開したコンテナイメージに必要な変更が加えられる。
ステップＳ３０４において、コンテナイメージをコミットしてローカルレジストリ２００に保存する。
ステップＳ３０５において、コンテナイメージデータベース登録処理が実施される。
ステップＳ３０６において、コンテナイメージ検証処理が実施される。
【００３６】
図５は、本実施の形態に係るコンテナイメージ定期検証処理のフロー図である。
コンテナイメージ定期検証処理は、脆弱性情報の更新に対応するため、定期的に実施される。
ステップＳ４０１において、コンテナイメージ定期検証処理が開始される。
ステップＳ４０２において、脆弱性情報データベースから脆弱性情報が取得される。
ステップＳ４０３において、ローカルレジストリ２００上のすべてのコンテナイメージに対して、コンテナイメージ検証処理が実施される（ステップＳ４０４）。
【００３７】
＜コンテナイメージ検証処理＞
図６は、本実施の形態に係るコンテナイメージ検証処理のフロー図である。
コンテナイメージ検証装置１００でコンテナイメージのパッケージ情報を得るには、次の２つの方法がある。
（ａ）コンテナイメージからコンテナを展開し、内部にログインして確認する。
（ｂ）コンテナイメージの構成ファイル、更新日時から、パッケージ情報を推測する。
上記（ａ）の方法は、すべてのパッケージ情報を得ることができるものの、コンテナをデプロイするため、計算資源を消費する。コンテナイメージの脆弱性有無の検証は２段階に分けて、（ｂ）の方法で危険性があると判断したコンテナイメージにのみ、（ａ）の方法での判定を実施することで計算資源の消費量を抑制できる。
【００３８】
ステップＳ５０１において、簡易検証部１２０が、コンテナイメージの簡易検証処理を実施する。
ステップＳ５０２において、コンテナイメージが安全であれば、処理を終了する。
ステップＳ５０２において、コンテナイメージが安全でなければ、詳細検証部１３０による詳細検証処理を実施する（ステップＳ５０３）。
【００３９】
ステップＳ５０４において、コンテナイメージ（詳細検証対象コンテナイメージ）に脆弱性があれば、コンテナイメージ更新・削除処理が実施される（ステップＳ５０５）。その後、ステップＳ５０６に進む。
ステップＳ５０４において、コンテナイメージ（詳細検証対象コンテナイメージ）に脆弱性がなければ、ステップＳ５０６に進む。
ステップＳ５０６において、コンテナイメージを検証用サーバから削除する。
【００４０】
＜簡易検証処理＞
図７は、本実施の形態に係るコンテナイメージの簡易検証処理のフロー図である。
まず、簡易検証部１２０による簡易検証処理の概要について説明する。
簡易情報取得部１２１は、コンテナイメージの生成手順を表すコンテナ構成ファイルが格納されたコンテナイメージデータベース１６０から、コンテナ構成ファイルを取得する。そして、簡易情報取得部１２１は、コンテナイメージに含まれるパッケージのバージョンを特定する。より詳しくは、簡易情報取得部１２１は、コンテナ構成ファイルから生成手順を構成するパッケージインストールコマンドを抽出し、パッケージのバージョンが指定されているパッケージインストールコマンドに基づいてパッケージのバージョンを特定する。
【００４１】
簡易照合部１２３は、コンテナイメージに含まれるパッケージのバージョンと脆弱性の有無とが対応付けられた脆弱性情報１７０に基づいて、コンテナイメージに含まれるパッケージの脆弱性の有無を判定する簡易検証を行う。
また、簡易照合部１２３は、パッケージのバージョンが特定できない場合、コンテナイメージデータベース１６０に含まれるコンテナイメージの更新日時と、脆弱性情報１７０の最新の更新日付とを比較する。そして、簡易照合部１２３は、コンテナイメージの更新日時以降に脆弱性情報１７０が更新されている場合に、コンテナイメージに含まれるパッケージに脆弱性有りと判定する。
簡易照合部１２３は、コンテナイメージデータベース１６０に簡易検証の結果を記憶する。
コンテナイメージの簡易検証処理の具体例は、以下の通りである。
【００４２】
ステップＳ６０１において、簡易検証部１２０の脆弱性情報取得部１２２による脆弱性情報取得処理が実施される。
ステップＳ６０２において、簡易検証部１２０の簡易情報取得部１２１によるコンテナ構成ファイルからの簡易パッケージ情報取得処理が実施される。
【００４３】
図８は、本実施の形態に係るコンテナ構成ファイルと脆弱性情報の例を示す図である。
簡易検証処理では、コンテナ構成ファイルからパッケージ情報を抽出する。コンテナ構成ファイルの例として、Ｄｏｃｋｅｒｆｉｌｅを示す。
上記構成ファイルの「ＲＵＮ」が記述されている行には、コンテナイメージ作成時に実行されるパッケージインストールコマンドが記載されている。ｒｐｍコマンドでは、特定のバージョンのｒｐｍパッケージをインストールしており、ｙｕｍコマンドでは、コンテナイメージ作成時点での最新バージョンにアップグレードしている。
【００４４】
ステップＳ６０３において、簡易検証部１２０の簡易照合部１２３は、パッケージ情報が存在するか否かを判定する。パッケージ情報が存在すれば、ステップＳ６０４に進む。パッケージ情報が存在しない場合は、ステップＳ６０５に進む。
【００４５】
ステップＳ６０４において、簡易照合部１２３は、パッケージ情報と脆弱性情報でパッケージ名、バージョン情報が一致するものがあるかを判定する。一致するものがあれば、ステップＳ６０６に進む。一致するものがなければ、ステップＳ６０５に進む。
ステップＳ６０６において、簡易照合部１２３は、コンテナイメージは脆弱性有り（危険性有り）と判定する。
【００４６】
ステップＳ６０５において、簡易照合部１２３は、更新日時が脆弱性情報の最新更新日付の前か否かを判定する。更新日時が脆弱性情報の最新更新日付の前である場合、ステップＳ６０６で、コンテナイメージは脆弱性有り（危険性有り）と判定される。更新日時が脆弱性情報の最新更新日付の前でない場合、ステップＳ６０７で、コンテナイメージは「安全」と判定される。
【００４７】
以上のように、簡易照合部１２３は、コンテナイメージのパッケージ名およびバージョンが特定されている場合は、脆弱性情報のパッケージ名およびバージョンと照合することで脆弱性の有無を判定する。バージョンが特定されていない場合は、簡易照合部１２３は、コンテナイメージ作成時点での最新バージョンのパッケージがインストールされていると想定し、コンテナイメージの更新日時と脆弱性情報の最新更新日付を比較する。簡易検証部１２０は、コンテナイメージの更新日時と脆弱性情報の最新更新日付を比較により、コンテナイメージの更新日時以降に脆弱性情報があるかどうかを確認する。脆弱性情報があれば、インストールされているパッケージが脆弱性に対応していない可能性があるため、脆弱性有り（危険性有り）と判定する。
【００４８】
図９は、本実施の形態に係る脆弱性情報取得処理のフロー図である。
ステップＳ７０１において、脆弱性情報取得部１２２は、インターネット上の脆弱性情報データベースから脆弱性情報を取得する。
ステップＳ７０２において、脆弱性情報取得部１２２は、脆弱性情報から、パッケージ名およびバージョン情報を抽出する処理を実施する。
ステップＳ７０３において、脆弱性情報取得部１２２は、脆弱性情報の最新更新日付情報を取得する取得処理を実施する。
ステップＳ７０４において、脆弱性情報取得部１２２は、脆弱性情報ＩＤ、パッケージ名、バージョン情報、最新更新日付情報をローカルの脆弱性情報１７０（脆弱性情報データベース）に保存する。
【００４９】
図８の脆弱性情報の例は、Ｒｅｄｈａｔ  Ｓｅｃｕｒｉｔｙ  Ｄａｔａで提供されているものの例である。図８の脆弱性情報の例は、脆弱性を持つＲｅｄｈａｔのパッケージと脆弱性情報ＩＤであるＣＶＥをマッピングさせた情報をＸＭＬ形式で記述している。
【００５０】
図１０は、本実施の形態に係る脆弱性情報の最新更新日付情報の取得処理のフロー図である。
ステップＳ８０１において、脆弱性情報取得部１２２は、文字列“ｅｒｒａｔｕｍ  ｒｅｌｅａｓｅｄ”を含む行を抽出する。
ステップＳ８０２において、脆弱性情報取得部１２２は、イコール“＝”を区切り文字とし、右側の年月日を含む文字列を抽出する。
ステップＳ８０３において、脆弱性情報取得部１２２は、ダブルクォーテーションを区切り文字とし、年月日の部分を抽出する。
ステップＳ８０４において、脆弱性情報取得部１２２は、最後の行の日付を脆弱性情報の最新更新日付として取得する。
【００５１】
図１１は、本実施の形態に係るパッケージ名およびバージョン情報の抽出処理のフロー図である。
ステップＳ９０１において、脆弱性情報取得部１２２は、文字列“ｒｐｍ”を含む行を抽出する。
ステップＳ９０２において、脆弱性情報取得部１２２は、イコール“＝”を区切り文字とし、右側のパッケージ名、バージョン情報の文字列を取得する。
ステップＳ９０３において、脆弱性情報取得部１２２は、ダブルクォーテーションを除去する。
ステップＳ９０４において、脆弱性情報取得部１２２は、文字列”−０：”を区切り文字とし、パッケージ名とバージョン情報に分割する。
ステップＳ９０５において、脆弱性情報取得部１２２は、パッケージ名を取得する。
ステップＳ９０６において、脆弱性情報取得部１２２は、バージョン情報について、ドット（．）で区切られた３つの数字をバージョン情報として取得する。
【００５２】
図１２は、本実施の形態に係るコンテナ構成ファイルからの簡易パッケージ情報取得処理のフロー図である。
図１２は、コンテナ構成ファイルからのパッケージ情報の抽出を行う簡易パッケージ情報取得処理である。ここでは、コンテナ構成ファイルの例で示す通り、ｒｐｍコマンドおよびｙｕｍコマンドによりパッケージがインストールされているものとする。
ステップＳ１００１において、簡易情報取得部１２１は、コンテナ構成ファイルからｙｕｍコマンドを抽出する。
ステップＳ１００２において、ｙｕｍコマンドが存在する場合、簡易情報取得部１２１は、ｙｕｍコマンドからの簡易パッケージ情報取得処理を実施する（ステップＳ１００３）。
ステップＳ１００２において、ｙｕｍコマンドが存在しない場合、簡易情報取得部１２１は、ｒｐｍコマンドを抽出する（ステップＳ１００４）。
ステップＳ１００５において、ｒｐｍコマンドが存在する場合、簡易情報取得部１２１は、ｒｐｍコマンドからの簡易パッケージ情報取得処理を実施する（ステップＳ１００６）。
【００５３】
図１３は、本実施の形態に係るコンテナ構成ファイルからの簡易パッケージ情報取得処理のフロー図である。
図１３は、ｒｐｍコマンドでパッケージがインストールされている場合の、ｒｐｍコマンドからの簡易パッケージ情報取得処理である。
ステップＳ１０１１において、簡易情報取得部１２１は、文字列”．ｒｐｍ”を区切り文字とし、左側のパッケージ名とバージョン情報を含む文字列を抽出する。
ステップＳ１０１２において、簡易情報取得部１２１は、文字列”−”を区切り文字とし、パッケージ名とバージョン情報を分割する。
ステップＳ１０１３において、簡易情報取得部１２１は、パッケージ名を取得する。
ステップＳ１０１４において、簡易情報取得部１２１は、バージョン情報について、ドット（．）で区切られた３つの数字をバージョン情報として取得する。
【００５４】
図１４は、本実施の形態に係るコンテナ構成ファイルからの簡易パッケージ情報取得処理のフロー図である。
図１４は、ｙｕｍコマンドでパッケージがインストールされている場合の、ｙｕｍコマンドからの簡易パッケージ情報取得処理である。
ステップＳ１０２１において、簡易情報取得部１２１は、ｙｕｍの行で、数値の有無を検索する。
ステップＳ１０２２において、数値が存在すれば、簡易情報取得部１２１は、文字列”−”を区切り文字とし、パッケージ名とバージョン情報を分割する（ステップＳ１０２３）。
ステップＳ１０２２において、数値が存在しなければ、処理を終了する。
ステップＳ１０２４において、簡易情報取得部１２１は、パッケージ名を取得する。
ステップＳ１０２５において、簡易情報取得部１２１は、バージョン情報について、ドット（．）で区切られた３つの数字をバージョン情報として取得する。
【００５５】
＜詳細検証処理＞
図１５は、本実施の形態に係るコンテナイメージの詳細検証処理のフロー図である。
図１５のコンテナイメージの詳細検証処理は、簡易検証処理で脆弱性有り（危険性有り）と判定されたコンテナイメージに対する詳細検証を行う処理である。簡易検証処理で脆弱性有り（危険性有り）と判定されたコンテナイメージを、詳細検証対象コンテナイメージとする。
【００５６】
詳細情報取得部１３１は、簡易検証により脆弱性有りと判定されたコンテナイメージを詳細検証対象コンテナイメージとして実行し、詳細検証対象コンテナイメージに含まれるパッケージ情報を取得する。
詳細照合部１３２は、脆弱性情報に基づいて、詳細検証対象コンテナイメージに含まれるパッケージの脆弱性の有無を判定する詳細検証を行う。
【００５７】
簡易検証処理では、パッケージ情報とローカルの脆弱性情報データベースを参照し、パッケージ名、バージョン情報を比較して、一致するものがあれば脆弱性あり（危険性有り）と判定した。一致するものがなければ、脆弱性無し（危険性無し）と判定して、簡易検証結果をコンテナイメージデータベース１６０に保存した。このとき、脆弱性情報取得部１２２により取得された脆弱性情報１７０が、ローカルの脆弱性情報データベースに保存されている。
【００５８】
ステップＳ１０３１において、詳細検証部１３０の詳細情報取得部１３１は、詳細検証対象コンテナイメージからパッケージ情報を取得する詳細パッケージ情報取得処理を実施する。
ステップＳ１０３２において、詳細検証部１３０の詳細照合部１３２は、ローカルの脆弱性情報データベースから脆弱性情報１７０を取得する脆弱性情報取得処理を実施する。
ステップＳ１０３３において、詳細照合部１３２は、パッケージ情報と脆弱性情報でパッケージ名、バージョン情報が一致するものがあるかを判定する。一致するものがあれば、詳細照合部１３２は、脆弱性ありと判定する（ステップＳ１０３４）。一致するものがなければ、詳細照合部１３２は、脆弱性なしと判定する（ステップＳ１０３５）。
ステップＳ１０３６において、詳細照合部１３２は、詳細検証の結果をコンテナイメージデータベース１６０に保存する。
【００５９】
図１６は、本実施の形態に係る詳細検証処理の詳細パッケージ情報取得処理のフロー図である。
詳細情報取得部１３１は、ローカルレジストリ２００のコンテナイメージから、以下のシーケンスでパッケージ一覧を取得する。ここでのコンテナイメージは、詳細検証対象コンテナイメージである。
ステップＳ１０４１において、詳細情報取得部１３１は、コンテナイメージをコンテナイメージ実行サーバで実行し、ログインする。
ステップＳ１０４２において、詳細情報取得部１３１は、パッケージ管理システムの機能により、パッケージ一覧を取得する。
ステップＳ１０４３において、詳細情報取得部１３１は、パッケージ一覧からのパッケージ名、バージョン情報抽出処理を実施する。
ステップＳ１０４４において、詳細情報取得部１３１は、コンテナイメージデータベース１６０のパッケージ情報として、パッケージ名、バージョン情報を保存する。
【００６０】
図１７は、本実施の形態に係るパーケージ一覧の例を示す図である。図１７は、パッケージ管理システムであるｒｐｍによるパッケージ一覧の出力例である。
【００６１】
図１８は、本実施の形態に係るパッケージ一覧からのパッケージ名・バージョン情報抽出処理のフロー図である。
詳細情報取得部１３１は、パッケージ一覧からのパッケージ名、バージョン情報の抽出を行う。
ステップＳ１０５１において、詳細情報取得部１３１は、ハイフン（−）を区切り文字とし、パッケージ名とバージョンに分割する。
ステップＳ１０５２において、詳細情報取得部１３１は、パッケージ名を取得する。
ステップＳ１０５３において、詳細情報取得部１３１は、バージョン情報について、ドット（．）で区切られた３つの数字をバージョン情報として取得する。
【００６２】
＜コンテナイメージ更新・削除処理＞
図１９は、本実施の形態に係るコンテナイメージ更新・削除処理のフロー図である。
コンテナイメージ選択部１５０は、コンテナイメージデータベース１６０に基づいて、脆弱性有りと判定されたコンテナイメージを脆弱性コンテナイメージとして更新の可否を判定する。そして、コンテナイメージ選択部１５０は、更新可能であれば脆弱性コンテナイメージを更新する。また、コンテナイメージ選択部１５０は、脆弱性コンテナイメージについて更新不可と判定された場合は、インターネットに公開された本番環境への配布するコンテナイメージを格納するパブリック向けレジストリ３２０から脆弱性コンテナイメージを削除する。
具体的には、以下の通りである。
【００６３】
ステップＳ１０６１において、コンテナイメージ選択部１５０は、脆弱性を持つコンテナイメージの更新を行うコンテナイメージ更新可否判定処理を実施する。
ステップＳ１０６２において、更新できた場合、コンテナイメージ選択部１５０は、コンテナイメージ更新処理を実施する（ステップＳ１０６３）。ここで、コンテナイメージ選択部１５０は、更新前後のコンテナイメージの双方をローカルレジストリ２００、およびコンテナイメージ配布装置３００のローカル向けレジストリ３１０に保存する。また、コンテナイメージ選択部１５０は、更新後のイメージのみをコンテナイメージ配布装置３００のパブリック向けレジストリ３２０に保存する。
ステップＳ１０６２において、更新不可の場合、コンテナイメージ選択部１５０は、コンテナイメージ削除処理を実施する（ステップＳ１０６４）。コンテナイメージ選択部１５０は、不可であればローカルレジストリ２００、コンテナイメージ配布装置３００のローカル向けレジストリ３１０にのみコンテナイメージを残し、パブリック向けレジストリ３２０からは削除する。
【００６４】
図２０は、本実施の形態に係るコンテナイメージ更新可否判定処理のフロー図である。
コンテナイメージ選択部１５０は、コンテナイメージの更新可否を判定するコンテナイメージ更新可否判定処理を実施する。
ステップＳ１０７１において、コンテナイメージ選択部１５０は、コンテナイメージデータベースから脆弱性のあるパッケージ名を取得する。
ステップＳ１０７２において、コンテナイメージ選択部１５０は、コンテナイメージを展開し、ログインする。
ステップＳ１０７３において、コンテナイメージ選択部１５０は、パッケージ管理システムの機能により、アップデート可能なパッケージ一覧を出力し、脆弱性のあるパッケージ名と比較する。
【００６５】
ステップＳ１０７４において、コンテナイメージ選択部１５０は、アップデート可能なパッケージ名と脆弱性のあるパッケージ名で一致するものがあるかを判定する。一致するものがあれば、ステップＳ１０７５において、コンテナイメージ選択部１５０は、更新可能と判定する。一致するものがなければ、ステップＳ１０７６において、コンテナイメージ選択部１５０は、更新不可と判定する。
ステップＳ１０７７において、コンテナイメージ選択部１５０は、判定結果をコンテナイメージデータベース１６０に保存する。
【００６６】
図２１は、本実施の形態に係るコンテナイメージ更新処理のフロー図である。
コンテナイメージ選択部１５０は、コンテナイメージの更新を行うコンテナイメージ更新処理を実施する。
ステップＳ１０８１において、コンテナイメージ選択部１５０は、コンテナイメージにログインし、脆弱性のあるパッケージのアップデートを実施する。
ステップＳ１０８２において、コンテナイメージ選択部１５０は、コンテナイメージを作成し、ローカルレジストリに書き込む。
ステップＳ１０８３において、コンテナイメージ選択部１５０は、コンテナイメージデータベースを更新する。
ステップＳ１０８４において、コンテナイメージ選択部１５０は、コンテナイメージ配布装置更新処理を実施する。
【００６７】
図２２は、本実施の形態に係るコンテナイメージ配布装置更新処理のフロー図である。
コンテナイメージ選択部１５０は、コンテナイメージ配布装置のコンテナイメージの更新を行うコンテナイメージ配布装置更新処理を実施する。
ステップＳ１０９１において、コンテナイメージ選択部１５０は、ローカルレジストリ２００を参照し、すべてのコンテナイメージをローカル向けレジストリ３１０に複製する。
ステップＳ１０９２において、コンテナイメージ選択部１５０は、コンテナイメージデータベース１６０を参照し、安全と判定されたコンテナイメージのみをパブリック向けレジストリ３２０に複製する。
【００６８】
図２３は、本実施の形態に係るコンテナイメージ削除処理のフロー図である。
コンテナイメージ選択部１５０は、更新されていないコンテナイメージをパブリック向けレジストリ３２０から削除するコンテナイメージ削除処理を実施する。
ステップＳ１１１において、コンテナイメージ選択部１５０は、脆弱性のあるコンテナイメージをパブリック向けレジストリ３２０から削除する。
ステップＳ１１１２において、コンテナイメージ選択部１５０は、コンテナイメージデータベース１６０を更新する。
【００６９】
図２４は、本実施の形態に係るコンテナイメージ本番環境利用処理のフロー図である。
システム管理者は、本番環境（ローカル）あるいは本番環境（パブリック）にコンテナイメージを展開するコンテナイメージ本番環境利用処理を実施する。
ステップＳ１１２１において、コンテナイメージ配布装置３００のローカル向けレジストリ３１０から、コンテナイメージが本番環境（ローカル）に展開される。
また、ステップＳ１１３１において、コンテナイメージ配布装置３００のパブリック向けレジストリ３２０から、コンテナイメージが本番環境（パブリック）に展開される。
【００７０】
図２５を用いて、本実施の形態に係るデータの流れについてまとめる。
（１）は、パブリックレジストリからのコンテナイメージ取得である。
（２）は、ローカルレジストリ２００のコンテナイメージ検証処理である。
（３）は、脆弱性情報データベースから脆弱性情報を取得する脆弱性情報取得処理である。
（４）は、ローカルレジストリ２００のコンテナイメージの開発環境での利用である。
（５）は、ローカルレジストリ２００のコンテナイメージのコンテナイメージ配布装置への複製である。
（６）は、ローカル向けレジストリ３１０のコンテナイメージの本番環境（ローカル）での利用である。
（７）は、パブリック向けレジストリ３２０のコンテナイメージの本番環境（パブリック）での利用である。
【００７１】
＊＊＊ハードウェア構成＊＊＊
ここで、図２６を用いて、コンテナイメージ検証装置１００のハードウェア構成について説明する。
コンテナイメージ検証装置１００は、コンピュータである。コンテナイメージ検証装置１００は、プロセッサ９１０を備えるとともに、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といった他のハードウェアを備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００７２】
コンテナイメージ検証装置１００は、機能要素として、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０、コンテナイメージデータベース１６０、および脆弱性情報１７０を備える。
【００７３】
簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能は、ソフトウェアにより実現される。コンテナイメージデータベース１６０、および脆弱性情報１７０は、メモリ９２１に備えられる。あるいは、コンテナイメージデータベース１６０、および脆弱性情報１７０は、補助記憶装置９２２に備えられていてもよい。また、コンテナイメージデータベース１６０、および脆弱性情報１７０は、メモリ９２１と補助記憶装置９２２に分けられて備えられてもよい。
【００７４】
プロセッサ９１０は、コンテナイメージ検証プログラムを実行する装置である。コンテナイメージ検証プログラムは、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ
Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００７５】
メモリ９２１は、データを一時的に記憶する記憶装置である。メモリ９２１の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置９２２は、データを保管する記憶装置である。補助記憶装置９２２の具体例は、ＨＤＤである。また、補助記憶装置９２２は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬の記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）の略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００７６】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００７７】
通信装置９５０は、レシーバとトランスミッターを有する。通信装置９５０は、無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置９５０は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ
Ｃａｒｄ）である。
【００７８】
コンテナイメージ検証プログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリ９２１には、コンテナイメージ検証プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、コンテナイメージ検証プログラムを実行する。コンテナイメージ検証プログラムおよびＯＳは、補助記憶装置９２２に記憶されていてもよい。補助記憶装置９２２に記憶されているコンテナイメージ検証プログラムおよびＯＳは、メモリ９２１にロードされ、プロセッサ９１０によって実行される。なお、コンテナイメージ検証プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００７９】
コンテナイメージ検証装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、コンテナイメージ検証プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、コンテナイメージ検証プログラムを実行する装置である。
【００８０】
コンテナイメージ検証プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ９２１、補助記憶装置９２２、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００８１】
簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。また簡易情報取得処理、脆弱性情報取得処理、簡易照合処理、詳細情報取得処理、詳細照合処理、コンテナイメージ選択処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記録媒体」に読み替えてもよい。
コンテナイメージ検証プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、コンテナイメージ検証方法は、コンテナイメージ検証装置１００がコンテナイメージ検証プログラムを実行することにより行われる方法である。
コンテナイメージ検証プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、コンテナイメージ検証プログラムは、プログラムプロダクトとして提供されてもよい。
【００８２】
＊＊＊他の構成＊＊＊
＜変形例１＞
本実施の形態では、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能がソフトウェアで実現される。変形例として、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能がハードウェアで実現されてもよい。その場合、コンテナイメージ検証装置１００は、プロセッサ９１０に替えて、電子回路を備える。
【００８３】
電子回路は、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能を実現する専用の電子回路である。
電子回路は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
【００８４】
簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
また、別の変形例として、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の一部あるいはすべての機能が、ファームウェアで実現されていてもよい。
【００８５】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、コンテナイメージ検証装置１００において、簡易情報取得部１２１、脆弱性情報取得部１２２、簡易照合部１２３、詳細情報取得部１３１、詳細照合部１３２、コンテナイメージ選択部１５０の機能は、プロセッシングサーキットリにより実現される。
【００８６】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るコンテナイメージ検証装置１００では、コンテナイメージがローカルレジストリに追加された際に、脆弱性を持つパッケージを含まれていないかどうかをあらかじめ検証する。そして、脆弱性がある場合には、パッケージの更新を試み、できない場合にはインターネットに公開される環境への展開を禁止する。よって、本実施の形態に係るコンテナイメージ検証装置１００によれば、コンテナ環境で利用されるコンテナイメージの安全性を担保することができる。
【００８７】
また、本実施の形態に係るコンテナイメージ検証装置１００では、脆弱性データベースの参照および脆弱性有無の判定は定期的に実施する。そして、コンテナイメージ配布装置に保存されたコンテナイメージに脆弱性があることが新たに発覚した場合には、都度、更新を試み、不可であれば公開された本番環境への配布対象より削除する。よって、本実施の形態に係るコンテナイメージ検証装置１００によれば、脆弱性情報データベースの情報に基づき、パッケージの脆弱性有無を確認することにより、本番環境に配信するコンテナイメージの安全性を担保することができる。また、脆弱性データベースの情報を定期的に取得することにより、新規の脆弱性情報を脆弱性有無の判定に反映することができる。
【００８８】
また、本実施の形態に係るコンテナイメージ検証装置１００では、まず、バージョンが取れればバージョンで検証し、バージョンが取れなければ更新日時で検証する。これにより、敢えてバージョンの古いパッケージが使われている場合でも脆弱性を判定できる。
【００８９】
本実施の形態に係るコンテナイメージ検証装置１００の効果を以下にまとめる。
・パブリックレジストリから取得されたコンテナイメージの安全性を担保することができる。
・開発環境でユーザ開発者が作成したコンテナイメージの安全性を担保することができる。
・定期的に脆弱性データベースを参照して判定することにより、最新の脆弱性情報に基づき、検証を行うことができる。
・脆弱性のあるコンテナイメージを配布対象から外すだけでなく、アップデートによる脆弱性の解消を試みる。
・コンテナイメージの検証を簡易検証と詳細検証の２段階に分けて実施することにより、計算資源を大きく消費する詳細検証の対象となるコンテナイメージ数を削減し、計算資源を節約することができる。
・検証装置で脆弱性ありと判定されたイメージについては、パブリックの本番環境に対しては配布せず、ローカルの本番環境に対してのみ配布することができる。
【００９０】
以上の実施の形態１では、コンテナイメージ検証装置の各部を独立した機能ブロックとして説明した。しかし、コンテナイメージ検証装置の構成は、上述した実施の形態のような構成でなくてもよい。コンテナイメージ検証装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、コンテナイメージ検証装置は、１つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態１のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態１では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【００９１】
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
【符号の説明】
【００９２】
３０  インターネット、５０  開発環境、７０  ファイアウォール、８０  本番環境（パブリック）、９０  本番環境（ローカル）、１００  コンテナイメージ検証装置、１２０  簡易検証部、１２１  簡易情報取得部、１２３  簡易照合部、１２２  脆弱性情報取得部、１３０  詳細検証部、１３１  詳細情報取得部、１３２  詳細照合部、１５０  コンテナイメージ選択部、１６０  コンテナイメージデータベース、１７０  脆弱性情報、２００  ローカルレジストリ、２１０  コンテナイメージ、２２０  パッケージ管理システム、３００  コンテナイメージ配布装置、３１０  ローカル向けレジストリ、３２０  パブリック向けレジストリ、５００  コンテナイメージ検証システム、９１０  プロセッサ、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、９５０  通信装置。
【図１】
2020154861.tif 000003
【図２】
2020154861.tif 000004
【図３】
2020154861.tif 000005
【図４】
2020154861.tif 000006
【図５】
2020154861.tif 000007
【図６】
2020154861.tif 000008
【図７】
2020154861.tif 000009
【図８】
2020154861.tif 000010
【図９】
2020154861.tif 000011
【図１０】
2020154861.tif 000012
【図１１】
2020154861.tif 000013
【図１２】
2020154861.tif 000014
【図１３】
2020154861.tif 000015
【図１４】
2020154861.tif 000016
【図１５】
2020154861.tif 000017
【図１６】
2020154861.tif 000018
【図１７】
2020154861.tif 000019
【図１８】
2020154861.tif 000020
【図１９】
2020154861.tif 000021
【図２０】
2020154861.tif 000022
【図２１】
2020154861.tif 000023
【図２２】
2020154861.tif 000024
【図２３】
2020154861.tif 000025
【図２４】
2020154861.tif 000026
【図２５】
2020154861.tif 000027
【図２６】
2020154861.tif 000028