(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023087980
(43)【公開日】2023-06-26
(54)【発明の名称】脆弱性管理システム、及び脆弱性管理方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20230619BHJP
【FI】
G06F21/57 370
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021202570
(22)【出願日】2021-12-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】高橋 孝文
(57)【要約】 (修正有)
【課題】アプリケーション実行基盤(実行基盤)の複数のコンテナに脆弱性が存在する場合に、脆弱性を効率良く解消させる脆弱性管理システム及び方法を提供する。
【解決手段】アプリケーション管理システム1は、重み付け判定サーバとスケジューリングサーバを備える。重み付け判定サーバは、実行基盤内のコンテナ11の脆弱性が実行基盤に与える影響の大きさを示す影響度係数を、脆弱性とその評価値とを対応づけた脆弱性情報に基づき算出する。また、コンテナのデータのアクセス頻度情報に基づき、コンテナが行う通信の形態に由来する脆弱性の評価値であるアクセス頻度係数を算出する。更に、影響度係数及びアクセス頻度係数に基づき、コンテナの脆弱性に対する対策の優先度を示す重み付け判定値を算出する。スケジューリングサーバは、各コンテナの重み付け判定値に基づき、各コンテナへの対策の順序を決定し、その順序に従って各コンテナへの対策を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサ及びメモリを有し、
1又は複数のコンテナによりアプリケーションが実行されるアプリケーション実行システムにおけるコンテナが有する脆弱性が前記アプリケーション実行システムに与える影響の大きさを示すパラメータである影響度係数を、脆弱性と当該脆弱性の評価値とを対応づけた情報である脆弱性情報に基づき算出する影響度係数算出部と、
前記コンテナが送信又は受信するデータの送信範囲又は受信範囲及び送信頻度又は受信頻度に関する情報であるアクセス頻度情報に基づき、前記コンテナが行う通信の形態に由来する脆弱性の評価値であるアクセス頻度係数を算出するアクセス頻度係数算出部と、
算出した前記影響度係数及び前記アクセス頻度係数に基づき、前記コンテナが有する脆弱性に対する対策の優先度を示す重み付け判定値を算出する重み付け判定値算出部と、
複数のコンテナについて算出した前記重み付け判定値に基づき、前記複数のコンテナのそれぞれに対する対策の順序を決定し、決定した順序に従って前記複数のコンテナのそれぞれに対する対策を実行するスケジューリング処理部と
を備える脆弱性管理システム。
【請求項2】
前記スケジューリング処理部は、前記複数のコンテナのそれぞれのデータアクセス頻度に基づき、当該コンテナが実行する処理の優先度を算出し、算出した前記処理の優先度が所定の閾値以下であるか否かを判定し、前記算出した処理の優先度が前記所定の閾値以下であると判定した場合に、当該処理の優先度に係るコンテナのプロセスを縮退させ、縮退させた後に、前記決定した対策の順序に従って前記複数のコンテナのそれぞれに対する対策を実行する、
請求項1に記載の脆弱性管理システム。
【請求項3】
前記アクセス頻度係数算出部は、前記コンテナのデータ送信及びデータ受信に優先順位を設定すると共に、前記コンテナが送信又は受信するデータの範囲が同一アプリケーション内であるか、他のアプリケーションであるか、又は他のアプリケーション実行システムであるかに従って優先順位を設定することにより、前記アクセス頻度係数を算出する、
請求項1に記載の脆弱性管理システム。
【請求項4】
情報処理装置が、
1又は複数のコンテナによりアプリケーションが実行されるアプリケーション実行システムにおけるコンテナが有する脆弱性が前記アプリケーション実行システムに与える影響の大きさを示すパラメータである影響度係数を、脆弱性と当該脆弱性の評価値とを対応づけた情報である脆弱性情報に基づき算出する影響度係数算出処理と、
前記コンテナが送信又は受信するデータの送信範囲又は受信範囲及び送信頻度又は受信頻度に関する情報であるアクセス頻度情報に基づき、前記コンテナが行う通信の形態に由来する脆弱性の評価値であるアクセス頻度係数を算出するアクセス頻度係数算出処理と、
算出した前記影響度係数及び前記アクセス頻度係数に基づき、前記コンテナが有する脆弱性に対する対策の優先度を示す重み付け判定値を算出する重み付け判定値算出処理と、
複数のコンテナについて算出した前記重み付け判定値に基づき、前記複数のコンテナのそれぞれに対する対策の順序を決定し、決定した順序に従って前記複数のコンテナのそれぞれに対する対策を実行するスケジューリング処理と
を実行する脆弱性管理方法。
【請求項5】
前記情報処理装置が、
前記スケジューリング処理において、前記複数のコンテナのそれぞれのデータアクセス頻度に基づき、当該コンテナが実行する処理の優先度を算出し、算出した前記処理の優先度が所定の閾値以下であるか否かを判定し、前記算出した処理の優先度が前記所定の閾値
以下であると判定した場合に、当該処理の優先度に係るコンテナのプロセスを縮退させ、縮退させた後に、前記決定した対策の順序に従って前記複数のコンテナのそれぞれに対する対策を実行する、
請求項4に記載の脆弱性管理方法。
【請求項6】
前記情報処理装置が、
前記アクセス頻度係数算出処理において、前記コンテナのデータ送信及びデータ受信に優先順位を設定すると共に、前記コンテナが送信又は受信するデータの範囲が同一アプリケーション内であるか、他のアプリケーションであるか、又は他のアプリケーション実行システムであるかに従って優先順位を設定することにより、前記アクセス頻度係数を算出する、
請求項4に記載の脆弱性管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、脆弱性管理システム、及び脆弱性管理方法に関する。
【背景技術】
【0002】
コンテナ技術を使用したアプリケーション実行基盤(例えば、kubernetes)が広く利用されており、アプリケーション実行基盤では複数のアプリケーションが連携して動作する。さらに近年では、セキュリティ対策に対する関心の高まりにより、アプリケーション実行基盤に既存の継続的インテグレーション/継続的デリバリー(CI/CD:Continuous Integration/Continuous Delivery)を組み込むことで、サービスを安定稼働させながらコンテナのセキュリティアップデートさせる運用を行う試みがなされている(いわゆるDevSecOps)。
【0003】
コンテナのアップデートに関する技術としては、例えば特許文献1に、検証装置のバッチジョブ解析部が、本番サーバに配備されたバッチジョブの実行前に、バッチジョブを解析し、利用するコンテナイメージを特定し、コンテナイメージ情報収集部は、コンテナイメージレジストリを参照して、コンテナイメージのバージョン情報を収集し、コンテナイメージ検証管理部は、バッチジョブが利用するコンテナイメージの新しいバージョンがリリースされている場合に、バッチジョブを検証用サーバで実行し、監視検証部は、検証用サーバで実行されるバッチジョブの実行中のパフォーマンス情報の監視及び実行結果の検証の少なくとも一方を行うといった構成が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、このようなアプリケーション実行基盤では、複数のコンテナに脆弱性が発見されそれらにセキュリティアップデートを行う必要があるにも関わらず、アプリケーション実行基盤のリソースに余裕がない場合がある。この場合、セキュリティ管理者は、各コンテナのアップデートのスケジュール調整を行わなければならず、各コンテナのアップデートの開始に待ち時間が生じる。これにより、脆弱性に対する対策が遅れて、セキュリティインシデントが起きるおそれがある。
【0006】
本発明は、このような背景に鑑みてなされたものであり、その目的は、アプリケーション実行システムの複数のコンテナに脆弱性が存在する場合に、それらの脆弱性を効率良く解消させることが可能な脆弱性管理システム、及び脆弱性管理方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するための本発明の一つは、プロセッサ及びメモリを有し、1又は複数のコンテナによりアプリケーションが実行されるアプリケーション実行システムにおけるコンテナが有する脆弱性が前記アプリケーション実行システムに与える影響の大きさを示すパラメータである影響度係数を、脆弱性と当該脆弱性の評価値とを対応づけた情報である脆弱性情報に基づき算出する影響度係数算出部と、前記コンテナが送信又は受信するデータの送信範囲又は受信範囲及び送信頻度又は受信頻度に関する情報であるアクセス頻度情報に基づき、前記コンテナが行う通信の形態に由来する脆弱性の評価値であるアクセス
頻度係数を算出するアクセス頻度係数算出部と、算出した前記影響度係数及び前記アクセス頻度係数に基づき、前記コンテナが有する脆弱性に対する対策の優先度を示す重み付け判定値を算出する重み付け判定値算出部と、複数のコンテナについて算出した前記重み付け判定値に基づき、前記複数のコンテナのそれぞれに対する対策の順序を決定し、決定した順序に従って前記複数のコンテナのそれぞれに対する対策を実行するスケジューリング処理部とを備える脆弱性管理システム、とする。
【0008】
また、上記課題を解決するための本発明の一つは、情報処理装置が、1又は複数のコンテナによりアプリケーションが実行されるアプリケーション実行システムにおけるコンテナが有する脆弱性が前記アプリケーション実行システムに与える影響の大きさを示すパラメータである影響度係数を、脆弱性と当該脆弱性の評価値とを対応づけた情報である脆弱性情報に基づき算出する影響度係数算出処理と、前記コンテナが送信又は受信するデータの送信範囲又は受信範囲及び送信頻度又は受信頻度に関する情報であるアクセス頻度情報に基づき、前記コンテナが行う通信の形態に由来する脆弱性の評価値であるアクセス頻度係数を算出するアクセス頻度係数算出処理と、算出した前記影響度係数及び前記アクセス頻度係数に基づき、前記コンテナが有する脆弱性に対する対策の優先度を示す重み付け判定値を算出する重み付け判定値算出処理と、複数のコンテナについて算出した前記重み付け判定値に基づき、前記複数のコンテナのそれぞれに対する対策の順序を決定し、決定した順序に従って前記複数のコンテナのそれぞれに対する対策を実行するスケジューリング処理とを実行する脆弱性管理方法、とする。
【発明の効果】
【0009】
本発明によれば、アプリケーション実行システムの複数のコンテナに脆弱性が存在する場合に、それらの脆弱性を効率良く解消させることができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】本実施形態に係るアプリケーション管理システムの構成の一例を示す図である。
【
図2】重み付け判定サーバが備える機能の一例を説明する図である。
【
図3】スケジューリングサーバが備える機能の一例を説明する図である。
【
図4】アプリケーション管理システムの各情報処理装置が備えるハードウェアの一例を示す図である。
【
図5】アプリケーション管理システムが行う処理の概要を説明するフローチャートである。
【
図6】重み付け判定値決定処理の一例を説明するフロー図である。
【
図8】トラフィック管理DBの一例を示す図である。
【
図9】カテゴリ別リスク影響度係数DBの一例を示す図である。
【
図11】アクセス頻度管理DBの一例を示す図である。
【
図12】アクセス頻度係数管理DBの一例を示す図である。
【
図15】プロセス優先度係数決定処理の一例を説明するフロー図である。
【
図18】スケジューリング処理の一例を説明するフロー図である。
【
図19】縮退を実行させるためのAPIコマンドの一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の一実施形態について説明する。
図1は、本実施形態に係るアプリケーション管理システム1の構成の一例を示す図である。アプリケーション管理システム1は、アプリケーション実行基盤10、アプリケーション監視システム20、CDサーバ30、脆弱性管理システム40、CIシステム50、ホスト装置60、及び脆弱性情報提供システム70の各情報処理装置を含んで構成される。
【0012】
アプリケーション実行基盤10は、各種のアプリケーションがコンテナ技術によって実行されるアプリケーション実行システムである。すなわち、アプリケーション実行基盤10は、1又は複数のコンテナ11で構成される、1又は複数のアプリケーション12と、各アプリケーション12の負荷を分散させるためのロードバランサ13とを含む各プログラムを備える。また、アプリケーション実行基盤10は、これらのアプリケーション(プログラム)を実行するためのオペレーティングシステム14(OS:Operating System)を記憶している。アプリケーション実行基盤10は、例えば、Kubernetesである。なお、ここでコンテナとは、アプリケーション(プログラム)の実行環境を記憶したデータ一般を指す。
【0013】
アプリケーション監視システム20は、アプリケーション実行基盤10におけるアプリケーション12及びコンテナ11の状態を監視する。アプリケーション監視システム20は、トラフィック管理サーバ21、統計管理サーバ22、及びアクセス記録管理サーバ23を備える。
【0014】
トラフィック管理サーバ21は、各アプリケーション12及びコンテナ11が行う通信(データの送受信)の内容、例えばアプリケーション12内若しくはアプリケーション12間で行われる通信、及びアプリケーション実行基盤10以外の他のアプリケーション実行システムとの間で行われる通信を監視し、これらの通信の履歴の情報(以下、トラフィック情報という)を蓄積している。統計管理サーバ22は、アプリケーション監視システム20における各種の統計処理を行う。アクセス記録管理サーバ23は、所定のタイミング(例えば、所定の時刻又は所定の時間間隔)で繰り返し、所定期間における各コンテナのアクセス数の合計(以下、単にコンテナアクセス数という)の履歴を蓄積している。
【0015】
CDサーバ30(CD:Continuous Delivery)は、CIシステム50により作成され
たリソースに基づきアプリケーション実行基盤10にコンテナ11(アプリケーション12)をデプロイする。
【0016】
脆弱性管理システム40は、アプリケーション12(コンテナ11)の脆弱性に対する管理を行う。脆弱性管理システム40は、重み付け判定サーバ41及びスケジューリングサーバ42を備える。重み付け判定サーバ41は、アプリケーション12(コンテナ11)にて発見された脆弱性に対する対策の優先順位を判断するためのパラメータである重み付け判定値を算出する。スケジューリングサーバ42は、重み付け判定値に従って、各コンテナ11への脆弱性解消の対策処理を行う。脆弱性管理システム40の詳細は後述する。
【0017】
CIシステム50(CI:Continuous Integration)は、アプリケーション12を構成するリソースを作成すると共に、ホスト装置60の各コンテナ11の脆弱性の監視が可能な情報処理システムである。CIシステム50は、ソースコードライブラリ管理サーバ51及びCIサーバ52を備える。ソースコードライブラリ管理サーバ51は、コンテナのリソース(ソースコード、ライブラリ等)を記憶している。CIサーバ52は、ホスト装
置60の各コンテナの脆弱性の有無を監視する。また、CIサーバ52は、ソースコードライブラリ管理サーバ51からリソースを取得し、取得したリソースに基づき、コンテナのイメージを作成(ビルド)する。なお、CIシステム50によるコンテナのビルドは、
管理者がCIシステム50を操作することによって行われてもよいし、自動的に行われてもよい。
【0018】
ホスト装置60は、アプリケーション実行基盤10におけるアプリケーション12を利用するユーザが使用する装置である。ホスト装置60は、アプリケーション実行基盤10が提供するアプリケーションのコンテナ61を記憶している。ホスト装置60は、複数存在してもよい。
【0019】
脆弱性情報提供システム70は、コンテナに関する様々な脆弱性の情報を蓄積し管理している。脆弱性情報提供システム70は、脆弱性公開サーバ71及び脆弱性管理サーバ72を備える。脆弱性公開サーバ71は、コンテナが有する脆弱性に関する情報(以下、脆弱性公開情報という)を記憶している。また、脆弱性管理サーバ72は、脆弱性管理システム40に脆弱性公開情報を送信することができる。なお、脆弱性公開サーバ71は、アプリケーション管理システム1の外部の情報処理システムに脆弱性公開情報を提供するものであってもよい。
【0020】
以上のアプリケーション管理システム1における各情報処理装置の間は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、又は専用
線等の有線又は無線の通信ネットワークにより通信可能となっている。
【0021】
次に、脆弱性管理システム40の詳細を説明する。
<重み付け判定サーバ>
図2は、重み付け判定サーバ41が備える機能の一例を説明する図である。重み付け判定サーバ41は、影響度係数算出部411、アクセス頻度係数算出部412、及び重み付け判定値算出部413を備える。
【0022】
影響度係数算出部411は、1又は複数のコンテナ11によりアプリケーションを実行するアプリケーション実行基盤10におけるコンテナ11が有する脆弱性がアプリケーション実行基盤10に与える影響の大きさを示すパラメータである影響度係数を、脆弱性と当該脆弱性の所定の評価値とを対応づけた情報である脆弱性情報(後述する脆弱性情報管理DB100)に基づき算出する。影響度係数は、後述する影響度係数DB130に記録される。
【0023】
アクセス頻度係数算出部412は、コンテナ11が送信又は受信するデータの送信範囲又は受信範囲及び送信頻度又は受信頻度に関する情報であるアクセス頻度情報(後述するアクセス頻度管理DB140に記録される)に基づき、コンテナ11が行う通信の形態に由来する脆弱性の評価値であるアクセス頻度係数を算出する。アクセス頻度係数は、後述するアクセス頻度係数DB160に記録される。なお、アクセス頻度情報は、トラフィック管理サーバ21のトラフィック情報により作成される。トラフィック情報は、後述するトラフィック管理DB120に記録される。
【0024】
重み付け判定値算出部413は、影響度係数及びアクセス頻度係数に基づき、コンテナ11が有する脆弱性に対する対策の優先度を示す重み付け判定値を算出する。重み付け判定値は、後述する重み付け判定DB150に記録される。
【0025】
また、重み付け判定サーバ41は、カテゴリ別リスク影響度係数DB110、及び深刻度管理DB170の各データベースを記憶している。
【0026】
カテゴリ別リスク影響度係数DB110は、影響度係数を算出するための重みパラメータ(以下、カテゴリ別リスク影響度係数という)を記憶している。深刻度管理DB170は、影響度係数をカテゴリ化した情報(以下、深刻度という)を記憶している。カテゴリ別リスク影響度係数DB110及び深刻度管理DB170の詳細は後述する。
【0027】
<スケジューリングサーバ>
図3は、スケジューリングサーバ42が備える機能の一例を説明する図である。スケジューリングサーバ42は、プロセス優先度係数決定部421、スケジューリング処理部422を備える。
【0028】
プロセス優先度係数決定部421は、アクセス記録管理サーバ23のコンテナアクセス数に基づき、各コンテナ11がアプリケーション実行基盤10において行うプロセスの優先順位の情報であるプロセス優先度を決定する。
【0029】
スケジューリング処理部422は、複数のコンテナ11について算出した重み付け判定値に基づき、複数のコンテナ11のそれぞれに対する対策の順序を決定し、決定した順序に従って複数のコンテナ11のそれぞれに対する対策を実行する
【0030】
また、スケジューリングサーバ42は、アクセス記録DB200、及び優先度記録DB210の各データベースを記憶する。
【0031】
アクセス記録DB200は、アプリケーション実行基盤10の各アプリケーション12のコンテナ11による各プロセスのアクセスの履歴を記憶する。また、優先度記録DB210は、各アプリケーション12のコンテナ11により実行されるプロセスの優先度を記憶する。アクセス記録DB200及び優先度記録DB210の詳細は後述する。
【0032】
ここで、
図4は、アプリケーション管理システム1の各情報処理装置が備えるハードウェアの一例を示す図である。各情報処理装置は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)等の処理装置91(プロセッサ)と、ROM(Read Only Memory)、RAM(Random Access Memory)等の主記憶装置92(メモリ)と、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの補助記憶装置93と、マウスやキーボード等で構成される入力装置94
と、液晶ディスプレイまたは有機EL(Electro-Luminescence)ディスプレイ等で構成される出力装置95と、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール、又はシリアル通信モジュール等で構成される通信装置96とを備える。
【0033】
各情報処理装置の各機能は、処理装置91が、主記憶装置92又は補助記憶装置93に格納されているプログラムを読み出して実行することにより実現される。また上記のプログラムは、例えば、記録媒体に記録して配布することができる。なお、各情報処理装置は、その全部または一部が、例えば、クラウドシステムによって提供される仮想サーバのように、仮想化技術やプロセス空間分離技術等を用いて提供される仮想的な情報処理資源を用いて実現されるものであってもよい。また、各情報処理装置によって提供される機能の全部または一部は、例えば、クラウドシステムがAPI(Application Programming Interface)等を介して提供するサービスによって実現してもよい。
次に、アプリケーション管理システム1が行う処理の概要を説明する。
【0034】
図5は、アプリケーション管理システム1が行う処理の概要を説明するフローチャートである。
【0035】
まず、脆弱性管理システム40は、各コンテナ11(アプリケーション12)の脆弱性に関する重み付け判定値を決定する重み付け判定値決定処理s1を随時実行する。また、脆弱性管理システム40は、各コンテナ11のプロセスのプロセス優先度係数を決定するプロセス優先度係数決定処理s3を随時実行する。
【0036】
1又は複数のコンテナ11に脆弱性が発見された場合、脆弱性管理システム40は、スケジューリング処理s5を実行する。すなわち、脆弱性管理システム40は、重み付け判定値決定処理s1で決定した重み付け判定値により脆弱性の解消の処理順序を決定し、必要に応じて重み付け判定値及びプロセス優先度係数決定処理s3で決定されたプロセス優先度係数に基づき空きリソースを増加させた上で、各コンテナ11の脆弱性への対策(セキュリティアップデート)を行う。
なお、以上に説明した処理は繰り返し実行される。
次に、これらの処理について説明する。
【0037】
<重み付け判定値決定処理>
図6は、重み付け判定値決定処理s1の一例を説明するフロー図である。重み付け判定値決定処理s1は、ユーザにより指定されたタイミング又は所定のタイミング(例えば、所定の時刻、所定の時間間隔)で実行される。
まず、重み付け判定サーバ41は、脆弱性情報管理DB100を作成する(s11)。
【0038】
具体的には、まず、重み付け判定サーバ41は、脆弱性管理サーバ72から、脆弱性公開情報を受信する。そして、重み付け判定サーバ41は、受信した脆弱性公開情報を脆弱性情報管理DB100に記憶する。
【0039】
脆弱性公開情報は、例えば、各脆弱性の評価値(本実施形態では、所定の共通脆弱性評価システム(CVSS:Common Vulnerability Scoring System)により算出された脆弱
性の評価値であるCVSSスコア(CVSS:Common Vulnerability Scoring System)であるものとする)と、その脆弱性がアプリケーション実行基盤10に与える影響の大きさの指標であるホストカテゴリ別影響度(後述するようにホスト装置60のカテゴリごとに異なる)と、その脆弱性に対する対処方法の情報とを含む。
【0040】
重み付け判定サーバ41は、脆弱性管理サーバ72から受信した脆弱性公開情報を所定の画面に表示しユーザから脆弱性情報管理DB100に係るデータの入力を受け付けるようにしてもよいし、受信した脆弱性公開情報に基づき所定のアルゴリズムにより自動的に脆弱性情報管理DB100を作成してもよい。
【0041】
(脆弱性情報管理DB)
ここで、
図7は、脆弱性情報管理DB100の一例を示す図である。脆弱性情報管理DB100は、脆弱性公開情報に基づく作成される脆弱性情報を記憶している。すなわち、脆弱性情報管理DB100は、脆弱性101、CVSSスコア102、ホストカテゴリ別影響度103、及び対処方法104の各データ項目を有する。
【0042】
脆弱性101には、脆弱性の種類の情報が設定される。CVSSスコア102には、その脆弱性のCVSSスコアの情報が設定される。ホストカテゴリ別影響度103には、その脆弱性のホストカテゴリ別影響度が設定される。対処方法104には、その脆弱性に対して行う対処方法(アップデートの方法)を特定する情報が設定される。
【0043】
ホストカテゴリ別影響度103には、1又は複数のホストカテゴリ別影響度が設定される。ホストカテゴリ影響別影響度は、脆弱性がアプリケーション実行基盤10に与える影
響の大きさを段階的に表した情報である。また、このホストカテゴリ影響別影響度は、ホスト装置60のカテゴリごとに設定される。カテゴリは、例えば、アプリケーション実行基盤10以外のコンテナシステムとデータの送受信を行う「公開サーバ」、アプリケーション実行基盤10内のアプリケーション又はコンテナのみとデータの送受信を行う「内部サーバ」である。
【0044】
次に、
図6に示すように、重み付け判定サーバ41は、トラフィック管理DB120を作成する(s13)。
【0045】
具体的には、重み付け判定サーバ41は、アクセス記録管理サーバ23から、アプリケーション実行基盤10の各コンテナ11に関する通信の履歴(トラフィック情報)を受信
し、受信したトラフィック情報に基づき、トラフィック管理DB120を作成する。
【0046】
(トラフィック管理DB)
ここで、
図8は、トラフィック管理DB120の一例を示す図である。トラフィック管理DB120は、アプリケーション121、インバウンド通信122、及びアウトバウンド通信123の各データ項目を有する。
【0047】
アプリケーション121には、各アプリケーションの各コンテナを特定する情報が設定される。
【0048】
インバウンド通信122には、アプリケーション121が示すコンテナが社外(アプリケーション実行基盤10以外のコンテナシステム)からのデータを受信するインバウンド通信を行っている場合に、各種情報が設定される。すなわち、インバウンド通信122は、社外1221、社内1222、クラスター1223、及びローカル1224の各小データ項目を有する。社外1221には、アプリケーション121が示すコンテナがインバウンド通信として、社外からのデータを受信する社外通信を行っている場合には「○」が設定される。社内1222には、アプリケーション121が示すコンテナがインバウンド通信として、社内(アプリケーション実行基盤10内)の他アプリケーションからのデータを受信する社内通信を行っている場合には「○」が設定される。クラスター1223には、アプリケーション121が示すコンテナがインバウンド通信として、社内の他のアプリケーションからのデータを受信するクラスター内通信を行っている場合には「○」が設定される。ローカル1224には、アプリケーション121が示すコンテナがインバウンド通信として、同一アプリケーションからのデータを受信するローカル通信を行っている場合には「○」が設定される。
【0049】
アウトバウンド通信123には、アプリケーション121が示すコンテナがアウトバウンド通信を行っている場合に、各種情報が設定される。すなわち、アウトバウンド通信123は、社外1231、社内1232、クラスター1233、及びローカル1234の各小データ項目を有する。社外1231には、アプリケーション121が示すコンテナがアウトバウンド通信として、社外通信を行っている場合には「○」が設定される。社内1232には、アプリケーション121が示すコンテナがアウトバウンド通信として、社内通信を行っている場合には「○」が設定される。クラスター1233には、アプリケーション121が示すコンテナがアウトバウンド通信として、クラスター内通信を行っている場合には「○」が設定される。ローカル1234には、アプリケーション121が示すコンテナがアウトバウンド通信として、ローカル通信を行っている場合には「○」が設定される。
【0050】
次に、
図6に示すように、重み付け判定サーバ41は、s13で作成したトラフィック管理DB120、及びs11で作成した脆弱性情報管理DB100に基づき、各コンテナ
の影響度係数を算出する(s15)。
【0051】
具体的には、重み付け判定サーバ41は、トラフィック管理DB120に基づき、各コンテナが行っている通信の形態を特定することで、ホスト装置60のカテゴリを特定する。そして、重み付け判定サーバ41は、脆弱性情報管理DB100及び後述するカテゴリ別リスク影響度係数DB110に基づき、ホストカテゴリ別影響度係数を特定する。重み付け判定サーバ41は、脆弱性情報管理DB100を参照することで、各コンテナの各脆弱性のCVSSスコアと、前記で算出した各コンテナのカテゴリ別リスク影響度係数とを乗算することにより、各コンテナの影響度係数を算出する(s17)。重み付け判定サーバ41は、算出した影響度係数の情報を影響度係数DB130に設定する。
【0052】
例えば、重み付け判定サーバ41は、トラフィック管理DB120を参照し、あるコンテナに係る各レコードのインバウンド通信122の社外1221及びアウトバウンド通信123の社外1231の各データを参照し、そのコンテナは社外通信を行っていることを特定する。そして、重み付け判定サーバ41は、脆弱性情報管理DB100のある脆弱性Aに係るレコードのホストカテゴリ別影響度103の内容を取得することで、当該コンテナに係るホスト装置60のカテゴリが社外通信を行う「公開サーバ」でありそのホストカテゴリ別影響度は「高」であることを特定する。重み付け判定サーバ41は、カテゴリ別リスク影響度係数DB110(次述)を参照することで、ホストカテゴリ別影響度「高」に対応するホストカテゴリ別影響度係数は「1.5」であることを特定する。そして、重み付け判定サーバ41は、上記脆弱性情報管理DB100のレコードのCVSSスコア102からCVSSスコア「6.3」を取得する。重み付け判定サーバ41は、カテゴリ別リスク影響度係数「1.5」と、CVSSスコア「6.3」とを乗算することで、当該コンテナの脆弱性Aに関する影響度係数を算出する。
【0053】
(カテゴリ別リスク影響度係数DB)
ここで、
図9は、カテゴリ別リスク影響度係数DB110の一例を示す図である。カテゴリ別リスク影響度係数DB110は、番号111、リスク影響度112、及び係数113の各データ項目を有する。番号111には、各レコード番号が設定される。リスク影響度112には、ホストカテゴリ別影響度が設定される。係数113は、そのホストカテゴリ別影響度に対応するカテゴリ別リスク影響度係数の情報が設定される。
【0054】
(影響度係数DB)
図10は、影響度係数DB130の一例を示す図である。影響度係数DB130は、アプリケーション131及び脆弱性132の各データ項目を有する。
【0055】
アプリケーション131には、各アプリケーションにおける各コンテナを特定する情報が設定される。脆弱性132は、合計1321及びカテゴリ1322の各小データ項目を有する。合計1321には、そのコンテナが有する全脆弱性の影響度係数の合計が設定される。カテゴリ1322には、そのコンテナの各脆弱性に関する影響度係数が設定される。
【0056】
次に、
図6に示すように、重み付け判定サーバ41は、アクセス頻度係数管理DB160を作成する(s17)。
【0057】
具体的には、まず、重み付け判定サーバ41は、アクセス記録管理サーバ23から、アプリケーション実行基盤10の各コンテナ11に関する通信の履歴(コンテナアクセス数
)を受信し、受信したコンテナアクセス数に基づき、アクセス頻度管理DB140を作成する。
【0058】
(アクセス頻度管理DB)
図11は、アクセス頻度管理DB140の一例を示す図である。アクセス頻度管理DB140は、トラフィック管理DB120と同様の、アプリケーション141、インバウンド通信142、及びアウトバウンド通信143のデータ項目とこれらに対するデータ小項目とを有する。ただし、アクセス頻度管理DB140の各データ項目には、インバウンド通信又はアウトバウンド通信のアクセス頻度情報が設定される。例えば、各データ項目には、過去7日間に発生した通信の頻度の平均値が設定される。
【0059】
そして、重み付け判定サーバ41は、作成したアクセス頻度管理DB140を参照することで、各コンテナが行う通信の形態を特定し、その形態の通信及びアクセス頻度情報に基づき、各コンテナのアクセス頻度係数を算出する。
【0060】
例えば、重み付け判定サーバ41は、各コンテナを、インバウンド通信を行うコンテナのカテゴリとアウトバウンド通信を行うコンテナのカテゴリとに区分し、インバウンド通信を行うコンテナのアクセス頻度係数がアウトバウンド通信を行うコンテナのアクセス頻度係数より小さくなるように各アクセス頻度係数を設定する(順位を高くする)。また、重み付け判定サーバ41は、各カテゴリにおけるコンテナをさらに、社外通信を行うコンテナのカテゴリと、社内通信を行うサブカテゴリと、クラスター内通信を行うカテゴリと、ローカル通信を行うサブカテゴリとに区分し、これらの順序でアクセス頻度係数を小さくする(順位を高くする)。重み付け判定サーバ41は、各サブカテゴリにおいて、アクセス頻度が高い順に、アクセス頻度係数を小さくする(順位を高くする)。このように、1.「インバウンド通信>アウトバンド通信」、2.「社外通信>社内通信>クラスター内通信>ローカル通信」、3.アクセス頻度順、といった優先順位を設定する。
【0061】
(アクセス頻度係数管理DB)
図12は、アクセス頻度係数管理DB160の一例を示す図である。アクセス頻度係数管理DB160は、アクセス頻度管理DB140と同様の、アプリケーション161、インバウンド通信162、及びアウトバウンド通信163のデータ項目とこれらに対するデータ小項目とを有する。アクセス頻度係数管理DB160の各データ項目には、アクセス頻度係数の情報が設定される。本実施形態では、アクセス頻度係数は、優先順位の数値として表され、その値が小さいほど脆弱性に対する対策を優先的に行うべきことを示すものとする。
【0062】
次に、
図6に示すように、重み付け判定サーバ41は、各コンテナについて、s15で算出した影響度係数とs17で算出したアクセス頻度係数とに基づき、各コンテナの重み付け判定値を算出する(s19)。重み付け判定サーバ41は、各コンテナの重み付け判定値の情報を、重み付け判定DB150に記録する。
【0063】
具体的には、まず、重み付け判定サーバ41は、各コンテナについて、深刻度管理DB170を参照することにより、s15で算出した影響度係数(各コンテナの全脆弱性に関する影響度係数)に対応する深刻度のカテゴリを特定する。そして、重み付け判定サーバ41は、各コンテナを深刻度ごとに区分し、深刻度がより高いコンテナの重み付け判定値がより小さくなるように(優先順位が高くなるように)設定する。
【0064】
そして、重み付け判定サーバ41は、アクセス頻度係数DB160を参照し、各深刻度のコンテナにおいて、アクセス頻度係数がより小さい(優先順位が高い)カテゴリの重み付け判定値がより小さくなるように(優先順位が高くなるように)設定する。
【0065】
(深刻度管理DB)
ここで、
図13は、深刻度管理DB170の一例を示す図である。深刻度管理DB17
0は、深刻度171及びスコア172の各データ項目を有する。深刻度171には、深刻度のカテゴリの情報が設定される。スコア172には、深刻度171に対応する影響度係数の範囲の情報が設定される。なお、本実施形態では、深刻度171には、深刻度が高い(脆弱性に対する対策の優先度が高い)順に、「緊急」、「重要」、「警告」、「注意」、「なし」のいずれかが設定されているものとする。
【0066】
(重み付け判定DB)
図14は、重み付け判定DB150の一例を示す図である。重み付け判定DB150は、アプリケーション151、重み付け判定値152、及びカテゴリ153の各データ項目を有する。
【0067】
アプリケーション151には、各アプリケーションにおける各コンテナを特定する情報が設定される。重み付け判定値152には、そのコンテナの重み付け判定値が設定される。カテゴリ153には、そのコンテナの深刻度のカテゴリの情報が設定される。本実施形態では、各コンテナの重み付け判定値は、深刻度が高いカテゴリほど小さい値(優先度が高い)であって、かつ各カテゴリにおいてはアクセス頻度係数が大きいコンテナほど小さい値が設定される。重み付け判定値は、複数のコンテナに脆弱性が存在している場合に、その解消の処理順序として反映される。
次に、スケジューリングサーバが行う処理について説明する。
【0068】
<プロセス優先度係数決定処理>
図15は、プロセス優先度係数決定処理s3の一例を説明するフロー図である。プロセス優先度係数決定処理s3は、ユーザにより指定されたタイミング又は所定のタイミング(例えば、所定の時刻、所定の時間間隔)で実行される。
【0069】
スケジューリングサーバ42のプロセス優先度係数決定部421は、アクセス記録管理サーバ23が記憶しているコンテナアクセス数の情報を取得し、取得した情報に基づきアクセス記録DB200を作成又は更新する(s31)。
【0070】
(アクセス記録DB)
図16は、アクセス記録DB200の一例を示す図である。アクセス記録DB200は、レコード番号201、プロセス202、及びアクセス数203の各データ項目を有する1又は複数のレコードからなる。
【0071】
レコード番号201には、レコードの番号が設定される。プロセス202には、各コンテナのプロセスを特定する情報が設定される。アクセス数203には、そのプロセスに係るアクセス数の履歴が設定される。具体的には、アクセス記録管理サーバ23が各タイミングで記録したコンテナアクセス数のうち、過去直近所定回数分のコンテナアクセス数が設定される。
【0072】
そして、
図15に示すように、プロセス優先度係数決定部421は、s31で作成又は更新したアクセス記録サーバ200に基づき、優先度記録DB210を作成又は更新する(s33)。以上でプロセス優先度係数決定処理s3は終了する。
【0073】
具体的には、プロセス優先度係数決定部421は、統計的に現時点又は直近の将来でアクセス数が大きいコンテナのプロセスのプロセス優先度係数を高くし、統計的に現時点又は直近の将来でアクセス数が少ないコンテナのプロセスのプロセス優先度係数を低くすることで、優先度記録DB210を作成又は更新する。
【0074】
例えば、プロセス優先度係数決定部421は、アクセス記録管理サーバ23に記録され
ている直近所定回数分のアクセス記録のそれぞれの回について、アクセス数が最大であったプロセス及びアクセス数が最小であったプロセスを特定することで、上記アクセス記録においてアクセス数が最大であった回数が最も多かったプロセス(以下、最大頻度プロセスという)と、過去所定回分においてアクセス数が最小であった回数が最も多かったプロセス(以下、最小頻度プロセスという)とを特定する。プロセス優先度係数決定部421は、特定した最大頻度プロセスのプロセス優先度係数と、前回の同処理で特定したの最大頻度プロセスのプロセス優先度係数とを交換する。また、プロセス優先度係数決定部421は、特定した最小頻度プロセスのプロセス優先度係数と、前回の最小頻度プロセスのプロセス優先度係数とを交換する。
【0075】
(優先度記録DB)
図17は、優先度記録DB210の一例を示す図である。優先度記録DB210は、レコード番号211、プロセス212、及び優先度213の各データ項目を有する。レコード番号211には、レコードの番号の情報が設定される。プロセス212には、各コンテナの各プロセスを特定する情報が設定される。優先度213には、そのプロセスのプロセス優先度係数の履歴の情報が設定される。
【0076】
<スケジューリング処理>
次に、
図18は、スケジューリング処理s5の一例を説明するフロー図である。スケジューリング処理s5は、例えば、アプリケーションの1又は複数のコンテナに脆弱性が検出された場合に実行される。なお、ここで、スケジューリングサーバ42は、重み付け判定値処理s1で作成した重み付け判定DB150を参照することで、脆弱性を解消すべきコンテナの優先度(処理順序)を特定しているものとする。
【0077】
スケジューリングサーバ42のスケジューリング処理部422は、アプリケーション実行基盤10の現在の空きリソースに、コンテナ(アプリケーション)の脆弱性を解消する処理をするための充分な余裕があるか否かを判定する(s51)。例えば、スケジューリング処理部422は、現在のアプリケーション実行基盤10のリソースの情報を取得し、そのリソースが所定の閾値を超えているか否かを判定する。なお、この閾値は、常に一定の値としてもよいし、アプリケーション実行基盤10で現在稼動しているリソース又は脆弱性があるコンテナの数等の各種要素に応じて異なる値としてもよい。
【0078】
空きリソースに充分な余裕がある場合は(s51:YES)、スケジューリング処理部422はs53の処理を実行し、空きリソースに充分な余裕がない場合は(s51:NO)、スケジューリング処理部422はs57の処理を実行する。
【0079】
s57においてスケジューリング処理部422は、優先度記録DB210から、各コンテナの各プロセスのプロセス優先度係数を取得する。
【0080】
そして、スケジューリング処理部422は、s57で取得したプロセス優先度係数に基づき、各プロセスについて、そのプロセスを縮退させる(冗長化数を削減する)か否かを判定する(s59)。具体的には、スケジューリング処理部422は、s57で取得したプロセス優先度係数が所定の閾値(例えば、30)以下であるか否かを、各プロセスについて判定する。
【0081】
縮退させる(冗長化数を削減する)プロセスがある場合は(s59:YES)、スケジューリング処理部422はそのプロセスについて、s61の処理を実行し、縮退させる(冗長化数を削減する)プロセスがない場合は(s59:NO)、スケジューリング処理部422はs51の処理を繰り返す。
【0082】
s61においてスケジューリング処理部422は、縮退を実現させるべく、プロセスの冗長化数を削減する。なお、
図19に、アプリケーション実行基盤10に縮退を実行させるためのAPI(Application Programming Interface)コマンドの一例を示す。これに
より、アプリケーション実行基盤10におけるリソースの空きが増加する。なお、スケジューリング処理部422は、その後脆弱性の解消が終了した場合に、縮退させたプロセスの冗長化数を元に戻してもよい。
【0083】
そして、スケジューリング処理部422は、プロセスを縮退させたコンテナの構成をアプリケーション実行基盤10に反映させる(s63)。例えば、CDサーバ30は、スケジューリング処理部422からの指示に基づき、アプリケーション実行基盤10へのコンテナのデプロイ、デプロイされたコンテナに係るアプリケーションの試験実行、及び、試験実行に成功したアプリケーションの、元のアプリケーションとの入れ替えの各処理を実行する。コンテナのデプロイ、試験実行、及び入れ換えの各処理の手順は、次述するs53の処理において説明する。その後は、s51の処理が繰り返される。
【0084】
一方、s53においてスケジューリング処理部422は、以下に説明するように、脆弱性を有するアプリケーションのコンテナについて、デプロイ、試験実行、及び入れ替えの各処理を実行する。
【0085】
すなわち、まず、スケジューリング処理部422は、アプリケーションのコンテナが有する脆弱性を解消するためのアップデート処理の内容(対処方法)を、脆弱性情報管理DB100から取得する。
【0086】
そして、スケジューリング処理部422は、その対処方法の実現に必要なリソースを取得をCIサーバ52に指示する。CIサーバ52は、ソースコードライブラリ管理サーバ51からリソースを取得し、取得したリソースに基づきコンテナのイメージをビルドする(作成する)。なお、この処理は、スケジューリング処理s5の実行前に(例えば脆弱性が検出されたときに)、予め実行されていてもよい。
【0087】
CDサーバ30は、ビルドされたコンテナのイメージをアプリケーション実行基盤10にデプロイする。例えば、CDサーバ30は、アップデートするOS上で動作しているアプリケーション(例えば、Pod)を一時的に他のOSに移動させた上で、OSのアップデ
ートを実行する。これにより、アプリケーション実行基盤10のサービスを停止せずにアップデートを実行することができる。
【0088】
このデプロイの完了後、CDサーバ30は、所定時間、アプリケーション実行基盤10の各アプリケーションを試験実行する。CDサーバ30は、試験実行後、この試験実行が成功したと判定した場合には、アプリケーション実行基盤10にデプロイしたコンテナのイメージと、これまで存在していたコンテナのイメージとを入れ替える。
【0089】
その後、スケジューリング処理部422は、次に脆弱性を解消すべき(次の優先順位の)コンテナのイメージがあるか否かを判定する(s55)。次に脆弱性を解消すべきコンテナのイメージがある場合は(s55:YES)、スケジューリング処理部422はs51の処理を繰り返し、次に脆弱性を解消すべきコンテナのイメージがない場合は(s55:NO)、スケジューリング処理s5は終了する(s65)。
【0090】
なお、アプリケーション実行基盤10のコンテナ11のアップデート、デプロイ、及びリリースの方法は特に限定されないが、本実施形態では、CDサーバ30は、DCR(Dark Canary Release)及びPD(Progressive Delivery)に基づき、試験実行及びデプロ
イを実行するものとする。DCRは、所定の開発者のみに対してアップデート及びリリー
スを行う手法である。これにより、アプリケーション実行基盤10に対する影響を与えず確実かつ安全にリリースを行うことができる。PDは、継続的デリバリ(CD:Continuous Deliverty)の次のステップとして、全てのユーザにリリースする前に、所定の分析(正解率及びパフォーマンスの検証等)を行いその結果(一部のユーザによる検証の結果)に応じて自動ロールバックを行うデプロイの方法である。なお、
図20に、DCRの一例を示す。なお、アップデート及びリリースの方法は、他の手法、例えばA/Bテスト又はCR(Canary Release)であってもよい。
【0091】
以上に説明したように、本実施形態の脆弱性管理システム40は、アプリケーション実行基盤10におけるコンテナ11が有する脆弱性がアプリケーション実行基盤10に与える影響の大きさを示す影響度係数を脆弱性情報に基づき算出し、各コンテナのアクセス頻度情報に基づきアクセス頻度係数を算出し、影響度係数及びアクセス頻度係数に基づき、コンテナが有する脆弱性に対する対策の優先度を示す重み付け判定値を算出し、複数のコンテナについて算出した重み付け判定値に基づき、複数のコンテナのそれぞれに対する対策の順序を決定し、決定した順序に従って複数のコンテナのそれぞれに対する対策を実行する。
【0092】
すなわち、本実施形態の脆弱性管理システム40は、各コンテナ(アプリケーション)の脆弱性の解消の優先度を、システムに与える影響及びプロセスの優先度の観点から決定し(重み付け判定値)、その重み付け判定値による順序に従って各コンテナの脆弱性を解消する。
【0093】
このように、本実施形態の脆弱性管理システム40によれば、複数の脆弱性がアプリケーション実行システムに存在する場合に、それらの脆弱性を効率良く解消させることができる。
【0094】
また、本実施形態の脆弱性管理システム40は、各コンテナのデータアクセス頻度に基づき各コンテナのプロセス優先度を算出し、算出したプロセス優先度が所定の閾値以下である場合に、そのプロセス優先度に係るコンテナのプロセスを縮退させ、縮退させた後に、重み付け判定値により上記で決定した順序に従って各コンテナに対する対策を実行する。
【0095】
このように、優先度が低いプロセスを縮退させる(冗長化数を減少させる)ことでアプリケーション実行基盤10の空きリソースを増加させることで、各コンテナの脆弱性解消の処理を迅速に行うことができるようになる。
【0096】
また、本実施形態の脆弱性管理システム40は、コンテナのデータ送信及びデータ受信に優先順位を設定すると共に(インバウンド通信とアウトバウンド通信の優先順位)、コンテナが送信又は受信するデータの範囲が同一アプリケーション内であるか(ローカル通信)、アプリケーション実行基盤10の他のアプリケーションであるか(クラスター内通信)、又は他のアプリケーション実行システム(社外通信)であるかに従って優先順位を設定することにより、アクセス頻度係数を算出する。
【0097】
このように、アプリケーション実行基盤10及びアプリケーションにおける通信の形態に基づいてアクセス頻度係数を算出することで、データ通信のリスクの大小に従った脆弱性対策の優先順位を決定することができる。
【0098】
本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない
。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【0099】
また、本実施形態の各装置が備える各機能の一部は他の装置に設けてもよいし、別装置が備える機能を同一の装置に設けてもよい。
【0100】
また、本実施形態で説明した影響度係数やアクセス頻度係数の算出式は一例であり、任意の数式やパラメータを追加し又は変形してもよい。また、脆弱性の評価値は、CVSSスコア以外の評価値であってもよい。
【符号の説明】
【0101】
10 アプリケーション実行基盤
11 コンテナ
40 脆弱性管理システム