IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ AI inside株式会社の特許一覧

特許7144819プログラム、コンピュータ、システム及び方法
<>
  • 特許-プログラム、コンピュータ、システム及び方法 図1
  • 特許-プログラム、コンピュータ、システム及び方法 図2
  • 特許-プログラム、コンピュータ、システム及び方法 図3
  • 特許-プログラム、コンピュータ、システム及び方法 図4
  • 特許-プログラム、コンピュータ、システム及び方法 図5
  • 特許-プログラム、コンピュータ、システム及び方法 図6
  • 特許-プログラム、コンピュータ、システム及び方法 図7
  • 特許-プログラム、コンピュータ、システム及び方法 図8
  • 特許-プログラム、コンピュータ、システム及び方法 図9
  • 特許-プログラム、コンピュータ、システム及び方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-09-21
(45)【発行日】2022-09-30
(54)【発明の名称】プログラム、コンピュータ、システム及び方法
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220922BHJP
   G06F 9/455 20060101ALI20220922BHJP
   G06F 21/60 20130101ALI20220922BHJP
   G09C 1/00 20060101ALI20220922BHJP
【FI】
G06F21/62 309
G06F9/455 150
G06F21/60 320
G06F21/60 360
G09C1/00 650Z
【請求項の数】 8
(21)【出願番号】P 2022066736
(22)【出願日】2022-04-14
【審査請求日】2022-04-15
【早期審査対象出願】
(73)【特許権者】
【識別番号】516092005
【氏名又は名称】AI inside株式会社
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】胡 為明
(72)【発明者】
【氏名】後藤 裕策
【審査官】小林 秀和
(56)【参考文献】
【文献】国際公開第2013/151732(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 9/455
G06F 16/182
G06F 21/60
G09C 1/00
H04L 67/1097
(57)【特許請求の範囲】
【請求項1】
コンテナ仮想化環境を提供するコンピュータを動作させるためのプログラムであって、
前記コンピュータはプロセッサを備え、
前記プログラムは、前記プロセッサに、
前記コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、
前記複数のパーツのうち少なくとも1つの前記パーツを暗号化する第2ステップと、
暗号化した前記パーツを含む前記複数のパーツの少なくとも一部を異なる複数のサーバに送信する第3ステップと、
クライアントから前記コンテナイメージの展開要求を受け入れたら前記複数のサーバから前記複数のパーツを取得する第4ステップと、
取得した前記パーツのうち、暗号化された前記パーツを復号化する第5ステップと、
復号化した前記パーツを含む取得した前記複数のパーツから前記コンテナイメージを生成する第6ステップと、
生成した前記コンテナイメージに基づいて前記コンテナを実現する第7ステップと
を実行させ
前記第4ステップにおいて、前記サーバのハードウェアを識別するための情報及び時限情報を含むアクティベーション情報が付された前記複数のパーツを前記複数のサーバから取得する、プログラム。
【請求項2】
前記プログラムは、前記第6ステップにおいて、前記複数のサーバから取得した前記複数のパーツに付された前記アクティベーション情報が正当なものであることを確認してから前記コンテナイメージに復元する
請求項記載のプログラム。
【請求項3】
前記プログラムは、
前記第1ステップにおいて、分割手順を定期的に変更して前記コンテナイメージを前記複数のパーツに分割し、
前記第3ステップにおいて、前記第1ステップにおいて前記コンテナイメージを前記複数のパーツに分割する毎にこれら複数の前記パーツに前記分割手順を特定する情報を付加してこれらパーツを前記複数のサーバに送信する
請求項1記載のプログラム。
【請求項4】
前記プログラムは、前記第1ステップにおいて、前記コンテナイメージの内容とは無関係に前記コンテナイメージを前記複数のパーツに分割する
請求項1記載のプログラム。
【請求項5】
コンテナ仮想化環境を提供するコンピュータであって、
前記コンピュータはプロセッサを備え、
前記プロセッサが、
前記コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、
前記複数のパーツのうち少なくとも1つの前記パーツを暗号化する第2ステップと、
暗号化した前記パーツを含む前記複数のパーツのそれぞれを異なる複数のサーバに送信する第3ステップと、
クライアントから前記コンテナイメージの展開要求を受け入れたら前記複数のサーバから前記複数のパーツを取得する第4ステップと、
取得した前記パーツのうち、暗号化された前記パーツを復号化する第5ステップと、
復号化した前記パーツを含む取得した前記複数のパーツから前記コンテナイメージを生成する第6ステップと、
生成した前記コンテナイメージに基づいて前記コンテナを実現する第7ステップと
を実行し、
前記第4ステップにおいて、前記サーバのハードウェアを識別するための情報及び時限情報を含むアクティベーション情報が付された前記複数のパーツを前記複数のサーバから取得する、コンピュータ。
【請求項6】
コンテナ仮想化環境を提供するコンピュータと、このコンピュータと通信可能に接続された複数のサーバとを有するシステムであって、
前記コンピュータはプロセッサを備え、
前記プロセッサが、
前記コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、
前記複数のパーツのうち少なくとも1つの前記パーツを暗号化する第2ステップと、
暗号化した前記パーツを含む前記複数のパーツのそれぞれを異なる複数のサーバに送信する第3ステップと、
クライアントから前記コンテナイメージの展開要求を受け入れたら前記複数のサーバから前記複数のパーツを取得する第4ステップと、
取得した前記パーツのうち、暗号化された前記パーツを復号化する第5ステップと、
復号化した前記パーツを含む取得した前記複数のパーツから前記コンテナイメージを生成する第6ステップと、
生成した前記コンテナイメージに基づいて前記コンテナを実現する第7ステップと
を実行し、
前記第4ステップにおいて、前記サーバのハードウェアを識別するための情報及び時限情報を含むアクティベーション情報が付された前記複数のパーツを前記複数のサーバから取得する、システム。
【請求項7】
コンテナ仮想化環境を提供する第1コンピュータと、この第1コンピュータと通信可能に接続された第2コンピュータ及び複数のサーバとを有するシステムであって、
前記第1コンピュータは第1プロセッサを備え、
前記第2コンピュータは第2プロセッサを備え、
前記第2プロセッサが、
前記コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、
前記複数のパーツのうち少なくとも1つの前記パーツを暗号化する第2ステップと、
暗号化した前記パーツを含む前記複数のパーツの少なくとも一部を異なる複数のサーバに送信する第3ステップと、
を実行し、
前記第1プロセッサが、
クライアントから前記コンテナイメージの展開要求を受け入れたら前記複数のサーバから前記複数のパーツを取得する第4ステップと、
取得した前記パーツのうち、暗号化された前記パーツを復号化する第5ステップと、
復号化した前記パーツを含む取得した前記複数のパーツから前記コンテナイメージを生成する第6ステップと、
生成した前記コンテナイメージに基づいて前記コンテナを実現する第7ステップと
を実行し、
前記第4ステップにおいて、前記サーバのハードウェアを識別するための情報及び時限情報を含むアクティベーション情報が付された前記複数のパーツを前記複数のサーバから取得する、システム。
【請求項8】
プロセッサを備え、コンテナ仮想化環境を提供するコンピュータの前記プロセッサが、
前記コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、
前記複数のパーツのうち少なくとも1つの前記パーツを暗号化する第2ステップと、
暗号化した前記パーツを含む前記複数のパーツのそれぞれを異なる複数のサーバに送信する第3ステップと、
クライアントから前記コンテナイメージの展開要求を受け入れたら前記複数のサーバから前記複数のパーツを取得する第4ステップと、
取得した前記パーツのうち、暗号化された前記パーツを復号化する第5ステップと、
復号化した前記パーツを含む取得した前記複数のパーツから前記コンテナイメージを生成する第6ステップと、
生成した前記コンテナイメージに基づいて前記コンテナを実現する第7ステップと
を実行し、
前記第4ステップにおいて、前記サーバのハードウェアを識別するための情報及び時限情報を含むアクティベーション情報が付された前記複数のパーツを前記複数のサーバから取得する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム、コンピュータ、システム及び方法に関する。
【背景技術】
【0002】
仮想ソフトウェア単位の1つにコンテナがある。コンテナ仮想環境では、サーバのOS(Operating System)により管理されるメモリ空間が仮想的に分割され、分割されたそれぞれのメモリ空間内において複数のコンテナが実行される。各々のコンテナは、それぞれが他の環境と完全に独立した環境で実行される。よって、コンテナは自身のコンテナ以外のコンテナのファイルにアクセスする可能性がないため、コンテナ仮想環境が実現されたサーバの機密性は、通常のサーバに比べて高い。また、コンテナ仮想環境では全てのコンテナがOSの同じカーネル空間を共用するため、他の仮想化に比べてリソースの利用効率が高い。
【0003】
コンテナは、データを永続的に保持しない一時的なオブジェクトである。すなわちコンテナ仮想環境では、コンテナが起動すると実行中に限りコンテナ内に情報が保持される。また、コンテナの停止と共にコンテナ内に保持されていた情報は破棄される。
【0004】
コンテナ仮想環境を提供するシステム運営者は、例えばシステム運営者が運営するサーバのメモリ区画に1つ以上のコンテナを配備できる。システム運営者は、配備対象のコンテナのコンテナイメージをサーバに与える。なお、コンテナイメージは、実行されているコンテナから生成されたイメージファイルである。
【0005】
コンテナ仮想環境の一例として、Microsoft Azure(登録商標)が知られている(例えば非特許文献1参照)。Azureでは、コンテナイメージは保存前に自動的に暗号化され、アプリケーションやサービスがコンテナイメージをプルするときにその場で復号されている。
【0006】
また、例えば、特許文献1に開示された技術では、ソフトウェア定義インフラストラクチャ内のセキュリティを提供することを目的として、コンテナは計算サブコンテナに分割され、コンテナはメモリ空間を分けることによって分離されており、分離はパーティショニング、暗号化によって実現される。
【先行技術文献】
【特許文献】
【0007】
【文献】特表2018-509717号公報
【非特許文献】
【0008】
【文献】“Azure Container Apps | Microsoft Azure”,[online],Microsoft Corporation,[令和4年3月22日検索],インターネット<URL: https://azure.microsoft.com/ja-jp/services/container-apps/>
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、上述した技術において、クライアントがサーバの管理権限を持っていると、クライアントがコンテナイメージの復号に必要となる復号鍵を持ってしまっている状況が発生する。このため、クライアントがコンテナイメージを取得することができてしまい、クライアントがコンテナイメージを復号し、取得することができてしまう可能性があった。
【0010】
そこで、本開示は、上記課題を解決すべくなされたものであって、その目的は、暗号化されたコンテナイメージの復号に必要となる復号鍵をクライアントが保有する場合であっても、コンテナイメージをクライアントが復号することができないプログラム、コンピュータ、システム及び方法を提供することである。
【課題を解決するための手段】
【0011】
一実施形態によると、コンテナ仮想化環境を提供するコンピュータを動作させるためのプログラムが提供される。ここに、コンピュータはプロセッサとメモリとを備える。このプログラムは、プロセッサに、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツに分割する第1ステップと、複数のパーツのうち少なくとも1つのパーツを暗号化する第2ステップと、暗号化したパーツを含む複数のパーツの少なくとも一部を異なる複数のサーバに送信する第3ステップと、クライアントからコンテナイメージの展開要求を受け入れたら複数のサーバから複数のパーツを取得する第4ステップと、取得したパーツのうち、暗号化されたパーツを復号化する第5ステップと、復号化したパーツを含む取得した複数のパーツからコンテナイメージを生成する第6ステップと、生成したコンテナイメージに基づいてコンテナを実現する第7ステップとを実行させる。
【発明の効果】
【0012】
本開示によれば、暗号化されたコンテナイメージの復号に必要となる復号鍵をクライアントが保有する場合であっても、コンテナイメージをクライアントが復号することができないプログラム、コンピュータ、システム及び方法を提供することができる。
【図面の簡単な説明】
【0013】
図1】実施形態に係るシステムの概要を示す図である。
図2】実施形態に係るシステムのハードウェア構成を示すブロック図である。
図3】実施形態に係る管理サーバの機能的な構成を示す図である。
図4】実施形態に係るコンテナサーバの機能的な構成を示す図である。
図5】実施形態に係るサーバの機能的な構成を示す図である。
図6】実施形態に係るコンテナサーバのプログラム構成を示す図である。
図7】実施形態に係るコンテナサーバに格納されたコンテナ管理DBのデータ構造を示す図である。
図8】実施形態に係るコンテナサーバに格納されたパーツ管理DBのデータ構造を示す図である。
図9】実施形態に係るコンテナサーバの動作の一例を説明するためのフローチャートである。
図10】実施形態に係るシステムの動作の一例を説明するためのシーケンス図である。
【発明を実施するための形態】
【0014】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。また、各図は模式図であり、必ずしも厳密に図示されたものではない。
【0015】
また、以下の説明において、「プロセッサ」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
【0016】
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0017】
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
【0018】
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0019】
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶部及び/又はインタフェース部などを用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。
【0020】
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0021】
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
【0022】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
【0023】
また、以下の説明において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【0024】
以下、本明細書で使用する用語について説明する。但し、これら用語の解釈について、一般的な解釈を排除する意図はない。
・コンテナは、データを永続的に保持しない一時的なオブジェクトである。
・コンテナ仮想化環境は、1台のハードウェア(情報処理装置)上の1つのOSに、コンテナを複数配置して構成した仮想化環境である。
・コンテナイメージは、独立した実行可能なコードを含む静的ファイルである。1台のハードウェア上でコンテナイメージが実行されると、このハードウェア上にコンテナを生成する。
【0025】
<実施形態>
<実施形態の概要>
実施形態に係るシステムは、コンテナサーバにコンテナをデプロイすることによりコンテナ仮想化環境を実現するシステムである。コンテナサーバにコンテナイメージが生成され、生成されたコンテナイメージは所定の手順により複数のパーツに分割される。分割されたパーツの少なくとも一つは暗号化される。暗号化されたパーツを含む複数のパーツは、それぞれ異なるサーバに送信され、このサーバに保管される。クライアントからコンテナ実装(デプロイ)のリクエストが来ると、コンテナサーバは、パーツを送信したサーバに対して保管しているパーツの送信をリクエストする。サーバはこのリクエストに基づいて、保管していたパーツをコンテナサーバに送信する。この際、サーバはパーツに対して時限情報(パーツの有効期限、など)を付加してコンテナサーバに送信する。コンテナサーバは、サーバから送信されてきたパーツに基づいてコンテナイメージを再生成し、このコンテナイメージに基づいてコンテナをデプロイする。その後、クライアントは、コンテナサーバにデプロイされたコンテナを用いて各種情報処理を行う。
【0026】
図1を参照して、実施形態であるシステムの概要について説明する。
【0027】
実施形態に係るシステム1は、管理サーバ2と、コンテナサーバ4と、複数のサーバ3とを有し、これら管理サーバ2、コンテナサーバ4及びサーバ3が、図1において図示を省略しているネットワークを介して互いに通信可能に構成されている。図1及び後述する図2において、システム1は2つのサーバ3を有しているが、システム1において複数のサーバ3を有していれば足り、その個数に制限はない。また、図1及び図2において、サーバ3は直接(つまりネットワークを介さずに)接続されていないが、本実施例において、複数のサーバ3が直接接続される態様を排除する意図はない。加えて、本実施形態のシステム1では管理サーバ2とコンテナサーバ4とで役割を異ならせた2つのサーバを有した構成になっているが、管理サーバ2とコンテナサーバ4とを同一のサーバにより構成してもよい。
【0028】
以下の説明において、サーバ3は広い意味に捉えるべきである。つまり、サーバ3はプロセッサ単位であってもよく、コンピュータ等の情報処理装置単位であってもよく、さらには、複数の情報処理装置をまとめた、例えばサーバ群であってもよい。加えて、サーバ3は、物理的サーバを複数台まとめて1つの論理的サーバとした、いわゆる仮想サーバ(仮想ドライブ)であってもよい。サーバ3と管理サーバ2、コンテナサーバ4との位置関係についても特段の限定はなく、オンプレミス、エッジ、クラウド、いずれの設置態様であってもよい。
【0029】
図1(a)に示すように、管理サーバ2はコンテナイメージ5を複数のパーツ6に分割する。コンテナイメージ5は管理サーバ2が生成してもよいし、後述するクライアントである端末装置7が生成して管理サーバ2に送出してもよい。管理サーバ2によりコンテナイメージ5を複数のパーツ6に分割する手順は任意であり、特段の制限はない。一例として、コンテナイメージ5の内容に無関係に、一定のデータ量(ブロック)毎に複数のパーツ6に分割する、コンテナイメージ5内のコードの内容に基づいて複数のパーツ6に分割する等の手順が挙げられる。好ましくは、コンテナサーバ4は定期的に分割手順を変更して新たに複数のパーツ6に分割し、新たに分割したパーツ6をサーバ3に送信する。この際、パーツ6に分割手順を特定する情報を付加することが好ましい。パーツ6が送信されたサーバ3は、このパーツ6を自身のサーバ3内に格納する。
【0030】
次いで、管理サーバ2は、分割して生成した複数のパーツ6の少なくとも1つを暗号化する。好ましくは、管理サーバ2は、複数のパーツ6の全てについて暗号化をする。暗号化処理が終了したら、管理サーバ2は、暗号化したパーツを含めたパーツ6のうち少なくとも一部のパーツ6を、それぞれ異なるサーバ3に送信する。サーバ3に送信されないパーツ6はコンテナサーバ4に送信される。ここで、管理サーバ2からサーバ3へのパーツ6の送信、及び、後述する、サーバ3からコンテナサーバ4への送信は、ネットワークを介したオンラインによる送信に限定されず、例えば、USBメモリ等の可搬性記憶媒体を用いたオフラインによる送信であってもよい。
【0031】
次いで、図1(b)に示すように、クライアントである端末装置7は、コンテナサーバ4に対してコンテナの実装(デプロイ)のリクエストを送信する。このリクエストを受信したコンテナサーバ4は、パーツ6を送信したサーバ3に対してパーツ6の送信をリクエストする。リクエストを受信したサーバ3は、自身のサーバ3に格納したパーツ6をコンテナサーバ4に送出する。この際、サーバ3は、アクティベーション情報、例えば、パーツ6の有効期限やパーツ6の送信日時に関する情報をパーツ6に付してコンテナサーバ4に送出する。
【0032】
全てのパーツ6がコンテナサーバ4に送出されたとコンテナサーバ4が判断したら、コンテナサーバ4は、これらパーツ6に基づいてコンテナイメージ5を再生成する。この際、コンテナサーバ4は、暗号化されたパーツ6については復号化処理を行い、また、パーツ6に付されたアクティベーション情報を確認して、パーツ6が正しいアクティベーション情報を有するかどうかを確認してコンテナイメージ5を再生成する。
【0033】
そして、図1(c)に示すように、コンテナサーバ4は、再生したコンテナイメージ5をデプロイすることで、コンテナサーバ4にコンテナ8を実装する。その後、端末装置7は、コンテナサーバ4に実装されたコンテナ8を用いて各種情報処理を行う。
【0034】
<システム1の基本構成>
図2を参照して、実施形態であるシステム1の基本構成について説明する。
【0035】
図2は、実施形態のシステム1の全体の構成を示す図である。図2に示すように、本実施形態のシステム1は、ネットワーク80を介して接続された複数の端末装置10(図2では、端末装置10A及び端末装置10Bを示している。以下、総称して「端末装置10」ということもある)、管理サーバ20、コンテナサーバ40及びサーバ30(図2では、サーバ30A及びサーバ30Bを示している。以下、総称して「サーバ30」ということもある)を有する。管理サーバ20の機能構成を図3に、コンテナサーバ40の機能構成を図4に、サーバ30の機能構成を図5に示す。これら管理サーバ20、コンテナサーバ40、サーバ30及び端末装置10は、情報処理装置により構成されている。
【0036】
情報処理装置は演算装置と記憶装置とを備えたコンピュータにより構成されている。コンピュータの基本ハードウェア構成および、当該ハードウェア構成により実現されるコンピュータの基本機能構成は後述する。なお、管理サーバ20、コンテナサーバ40、サーバ30及び端末装置10のそれぞれについて、後述するコンピュータの基本ハードウェア構成およびコンピュータの基本機能構成と重複する説明は繰り返さない。
【0037】
端末装置10は、各ユーザが操作する装置である。ここで、ユーザとは、端末装置10を使用して、コンテナサーバ40に実装されたコンテナを用いて各種情報処理を行う者であり、システム1の利用者である。端末装置10は、例えば移動体通信システムに対応したタブレットや、スマートフォン等の携帯端末であっても、据え置き型のPC(Personal Computer)、ラップトップPC等、さらにはサーバ30とは別体のサーバであってもよい。
【0038】
端末装置10は、ネットワーク80を介して管理サーバ20、サーバ30、コンテナサーバ40と通信可能に接続される。端末装置10は、4G、5G、LTE(Long Term Evolution)等の通信規格に対応した無線基地局81、IEEE(Institute of Electrical and Electronics Engineers)802.11等の無線LAN(Local Area Network)規格に対応した無線LANルータ82等の通信機器と通信することにより、ネットワーク80に接続される。端末装置10と無線LANルータ82等の間を無線で接続する場合、通信プロトコルとして例えば、Z-Wave(登録商標)、ZigBee(登録商標)、Bluetooth(登録商標)等が含まれる。有線で接続する場合は、USB(Universal Serial Bus)ケーブル等により直接接続するものも含む。
【0039】
図2に端末装置10Bとして示すように、端末装置10は、通信IF(Interface)12と、入力装置13と、出力装置14と、メモリ15と、記憶部16と、プロセッサ19とを備える。
【0040】
通信IF12は、端末装置10がコンテナサーバ40などの外部の装置と通信するため、信号を入出力するためのインタフェースである。入力装置13は、ユーザからの入力操作を受け付けるための入力装置(例えば、キーボードや、タッチパネル、タッチパッド、マウス等のポインティングデバイス等)である。出力装置14は、ユーザに対し情報を提示するための出力装置(ディスプレイ、スピーカ等)である。メモリ15は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。記憶部16は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。プロセッサ19は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路等により構成される。
【0041】
管理サーバ20は、コンテナイメージをパーツに分割してサーバ30に送信する機能を有する情報処理装置であり、コンテナサーバ40は、コンテナが実装される情報処理装置であり、いずれもシステム1の運営者により運営される。サーバ30は、管理サーバ20が生成したパーツが格納される情報処理装置である。なお、サーバ30の運営者は管理サーバ20、コンテナサーバ40の運営者と必ずしも同一人物である必要はないが、好ましくは、管理サーバ20及びコンテナサーバ40とサーバ30との運営者は同一人物である。
【0042】
図2では管理サーバ20のハードウェア構成のみ図示しているが、コンテナサーバ40及びサーバ30のハードウェア構成も管理サーバ20と同様であるので、図示を行わない。管理サーバ20は、通信IF22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29とを備える。
【0043】
通信IF22は、管理サーバ20が外部の装置と通信するため、信号を入出力するためのインタフェースである。入出力IF23は、ユーザからの入力操作を受け付けるための図示しない入力装置、及び、ユーザに対し情報を提示するための図示しない出力装置とのインタフェースとして機能する。メモリ25は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。ストレージ26は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。プロセッサ29は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路等により構成される。
【0044】
<管理サーバ20の機能構成>
管理サーバ20のハードウェア構成が実現する機能構成を図3に示す。管理サーバ20は、記憶部220、制御部230、通信部240を備える。通信部240は通信IF22により構成され、記憶部220は管理サーバ20のストレージ26により構成され、制御部230は主に管理サーバ20のプロセッサ29により構成される。
【0045】
通信部240は、ネットワーク80を介して端末装置10、サーバ30等との間での通信を行う。
【0046】
<管理サーバ20の記憶部220の構成>
管理サーバ20の記憶部220は、OS221、アプリケーションプログラム222、コンテナ管理DB(DataBase)223、及びパーツ管理DB224を有する。
【0047】
これらコンテナ管理DB223等のうち、OS221、アプリケーションプログラム222、及び画面データ225を除くものはデータベースである。ここに言うデータベースは、リレーショナルデータベースを指し、行と列によって構造的に規定された表形式のテーブルと呼ばれるデータ集合を、互いに関連づけて管理するためのものである。データベースでは、表をテーブル、表の列をカラム、表の行をレコードと呼ぶ。リレーショナルデータベースでは、テーブル同士の関係を設定し、関連づけることができる。
【0048】
通常、各テーブルにはレコードを一意に特定するための主キーとなるカラムが設定されるが、カラムへの主キーの設定は必須ではない。制御部230は、各種プログラムに従ってプロセッサ29に、記憶部220に記憶された特定のテーブルにレコードを追加、削除、更新を実行させることができる。
【0049】
図7は、コンテナ管理DB223のデータ構造を示す図である。コンテナ管理DB223は、管理サーバ20が、コンテナサーバ40にデプロイされる(された)コンテナを管理するためのデータベースである。
【0050】
コンテナ管理DB223は、コンテナサーバ40に実現されるコンテナを特定するためのコンテナIDを主キーとして、コンテナイメージID、コンテナ名、及び状態のカラムを有するテーブルである。
【0051】
「コンテナイメージID」は、コンテナIDにより特定されるコンテナに対応する(正確にはこのコンテナを生成するための)コンテナイメージを特定するための情報である。「コンテナ名」は、コンテナIDにより特定されるコンテナの名称である。「状態」は、コンテナIDにより特定されるコンテナのコンテナサーバ40における状態を示す情報である。図6に示す例では、「稼働中」とは、コンテナサーバ40においてコンテナが実装され、端末装置10により各種情報処理が行われている状態を示し、「展開中」とは、コンテナサーバ40においてコンテナイメージIDにより特定されるコンテナイメージが展開されてコンテナが生成されている途中の状態を示している。
【0052】
コンテナ管理DB223において、コンテナID、コンテナイメージID及び状態はコンテナサーバ40のコンテナ実行部434が生成してコンテナ管理DB223に格納し、コンテナ名についてはコンテナ実行部434、あるいは、コンテナイメージを管理サーバ20に送出した端末装置10からの入力に基づいてコンテナ実行部434がコンテナ管理DB223に格納する。
【0053】
図7は、パーツ管理DB224のデータ構造を示す図である。パーツ管理DB224は、管理サーバ20がパーツを管理するデータベースである。
【0054】
パーツ管理DB224は、コンテナイメージを特定するためのコンテナイメージIDを主キーとして、パーツID、割当サーバID及び状態のカラムを有するテーブルである。パーツ管理DB224におけるコンテナイメージIDは、コンテナ管理DB223におけるコンテナイメージIDと共通である。
【0055】
「パーツID」は、コンテナイメージIDにより特定されるコンテナイメージに基づいて生成される(生成された)パーツを特定するための情報である。本実施例において、コンテナイメージから複数のパーツが生成されるので、一つのコンテナイメージIDには複数のパーツIDが紐付けられており、割当サーバID及び状態は個々のパーツIDに紐付けられている。「割当サーバID」は、パーツIDにより特定されるパーツが格納されているサーバを特定するための情報である。「状態」は、パーツIDにより特定されるパーツの状態を示す情報である。図7に示す例では、「展開済」とは、パーツIDにより特定されるパーツがサーバ30から送信され、コンテナサーバ40において展開されてコンテナイメージに復号されている状態を示し、「呼出中」とは、端末装置10からのリクエストに応答してパーツIDにより特定されるパーツの送出をサーバ30にリクエストしているが、まだサーバ30からパーツが送信されていない状態を示し、「送信中」とは、管理サーバ20によ分割・生成された、パーツIDにより特定されるパーツをサーバ30に送信した状態を示し、「格納済」とは、パーツIDにより特定されるパーツがサーバ30に格納された状態を示している。
【0056】
パーツ管理DB224において、コンテナイメージIDはコンテナサーバ40のコンテナ実行部434によりパーツ管理DB224に格納され、パーツID及び割当サーバIDはコンテナイメージ分割部233により生成されてパーツ管理DB224に格納され、状態はコンテナイメージ分割部233及びコンテナサーバ40のコンテナイメージ復号部435によりパーツ管理DB224に格納される。
【0057】
OS221は管理サーバ20においてアプリケーションプログラム222を実行する際に用いられるソフトウェアであり、アプリケーションプログラム222は、管理サーバ20において実行されることで、後述する管理サーバ20の各種機能ユニットが実現されるソフトウェアである。
【0058】
<管理サーバ20の制御部230の構成>
管理サーバ20の制御部230は、受信制御部231、送信制御部232、及びコンテナイメージ分割部233を備える。制御部230は、記憶部220に記憶されたアプリケーションプログラム222を実行することにより、これら受信制御部231等の機能ユニットが実現される。
【0059】
受信制御部231は、管理サーバ20が外部の装置から通信プロトコルに従って信号を受信する処理を制御する。
【0060】
送信制御部232は、管理サーバ20が外部の装置に対し通信プロトコルに従って信号を送信する処理を制御する。
【0061】
コンテナイメージ分割部233は、コンテナイメージを複数のパーツに分割する。分割の手順は任意であり、特段の制限はない。一例として、コンテナイメージの内容に無関係に、一定のデータ量(ブロック)毎に複数のパーツに分割する、コンテナイメージ内のコードの内容に基づいて複数のパーツに分割する等の手順が挙げられる。
【0062】
次いで、コンテナイメージ分割部233は、分割したパーツのうち少なくとも1つのパーツを暗号化する。コンテナイメージ分割部233による暗号化手法に特段の限定はなく、既知の暗号化手法が好適に適用可能である。但し、後述するコンテナサーバ40のコンテナイメージ復号部235により復号化処理を行う際に必要とされる暗号鍵は管理サーバ20及びコンテナサーバ40内に格納され、サーバ30には送信されない。これにより、仮にサーバ30の運用者、さらには端末装置10の運用者が管理サーバ20及びコンテナサーバ40の運用者と異なる場合において、これら運用者がパーツの復号化処理を行うことができないので、コンテナイメージに対するセキュリティを担保することができる。さらに、パーツを復号化するための暗号鍵は、個々のパーツで異なることが好ましい。これにより、コンテナイメージに対するセキュリティをさらに担保することができる。なお、コンテナイメージに対するセキュリティ担保という観点からは、少なくとも1つのパーツについて暗号化処理がされていればいいが、さらなるセキュリティ担保のためには全てのパーツについて暗号化処理がされていることが好ましい。
【0063】
この後、コンテナイメージ分割部233は、分割したパーツ6のうち少なくとも一部のパーツ6を、それぞれ異なるサーバ30に送信し、サーバ30は、送信されたパーツ6を記憶部320に格納する(図5参照)。サーバ30に送信されなかったパーツ6はコンテナサーバ40に送出される。
【0064】
好ましくは、コンテナイメージ分割部233は定期的に分割手順を変更して新たに複数のパーツ6に分割し、新たに分割したパーツ6をサーバ30に送信する。この際、パーツに分割手順を特定する情報を付加することが好ましい。
【0065】
以上説明したパーツ分割作業及びパーツ送信作業は、コンテナイメージ分割部233の少なくとも一部の機能を担う、後述するコンテナ仮想化エンジン452(図6参照)により実行される。
【0066】
<コンテナサーバ40の機能構成>
コンテナサーバ40のハードウェア構成が実現する機能構成を図4に示す。コンテナサーバ40は、記憶部420、制御部430、通信部440を備える。通信部440は通信IF42により構成され、記憶部420はコンテナサーバ40のストレージ46により構成され、制御部430は主にコンテナサーバ40のプロセッサ49により構成される。
【0067】
通信部440は、ネットワーク80を介して端末装置10、サーバ30等との間での通信を行う。
【0068】
<コンテナサーバ40の記憶部420の構成>
コンテナサーバ40の記憶部420は、OS421、アプリケーションプログラム422、コンテナ管理DB(DataBase)423、パーツ管理DB424、及び画面データ425を有する。
【0069】
これらコンテナ管理DB423等のうち、OS421、アプリケーションプログラム422、及び画面データ425を除くものはデータベースである。ここに言うデータベースは、リレーショナルデータベースを指し、行と列によって構造的に規定された表形式のテーブルと呼ばれるデータ集合を、互いに関連づけて管理するためのものである。データベースでは、表をテーブル、表の列をカラム、表の行をレコードと呼ぶ。リレーショナルデータベースでは、テーブル同士の関係を設定し、関連づけることができる。
【0070】
通常、各テーブルにはレコードを一意に特定するための主キーとなるカラムが設定されるが、カラムへの主キーの設定は必須ではない。制御部430は、各種プログラムに従ってプロセッサ49に、記憶部420に記憶された特定のテーブルにレコードを追加、削除、更新を実行させることができる。
【0071】
コンテナ管理DB423及びパーツ管理DB424は、管理サーバ20のコンテナ管理DB223及びパーツ管理DB224と共通であるので説明を省略する
OS421はコンテナサーバ40においてアプリケーションプログラム422を実行する際に用いられるソフトウェアであり、アプリケーションプログラム422は、コンテナサーバ40において実行されることで、後述するコンテナサーバ40の各種機能ユニットが実現されるソフトウェアである。
【0072】
画面データ425は、端末装置10がコンテナサーバ40にアクセスする際に、ユーザが有する端末装置10に表示させるための画面データである。
【0073】
<コンテナサーバ40の制御部430の構成>
コンテナサーバ40の制御部430は、受信制御部431、送信制御部432、画面提示部433、コンテナ実行部434、及びコンテナイメージ復号部435を備える。制御部430は、記憶部420に記憶されたアプリケーションプログラム422を実行することにより、これら受信制御部431等の機能ユニットが実現される。
【0074】
受信制御部431及び送信制御部432は、管理サーバ20の受信制御部231及び送信制御部232と同一の動作を行うので、ここでの説明は省略する。
【0075】
画面提示部433は、いわゆるWebサーバとしての機能をコンテナサーバ40に提供する。具体的には、画面提示部433は、ネットワーク80を介してアクセスした端末装置10に対して、画面データ425に格納されたデータ等に基づいて、コンテナサーバ40が提供するサイトを構成する画面のデータを生成し、この画面データを、アクセスをした端末装置10に送出する。さらに、画面提示部433は、端末装置10からの操作入力に基づいて、サイトを構成する画面を動的に(つまりインタラクティブに)変化させ、さらに、必要に応じて、サイトを構成する他の画面に遷移させ、この画面データを端末装置10に送出する。
【0076】
コンテナ実行部434は、コンテナイメージに基づいてコンテナサーバ40に、より詳細にはコンテナサーバ40の記憶部420(メモリ45)にコンテナを実装し、端末装置10がこのコンテナを利用して各種情報処理を行うに当たってこのコンテナを適切に運用する。コンテナイメージの展開先であるコンテナの実装先は、コンテナサーバ40の非永続ストレージであるメモリ45であることが好ましい。これは、コンテナサーバ40に実装されたコンテナを用いて端末装置10が行った各種情報処理は、コンテナの実装が終了したらその情報処理結果をコンテナサーバ40内に残しておくことが好ましくないからである。
【0077】
コンテナ実行部434は、コンテナを実装するに当たって、メモリ45のメモリ空間を複数に区分し、区分されたメモリ空間内においてコンテナを実装する。コンテナ実行部434は、各々のメモリ空間内に実装されたコンテナに対して、例えばコンテナ実装のリクエストを行った端末装置10のみがこのコンテナを用いて各種情報処理を行えるアクセス制限をかける。これにより、個々のコンテナで実行される各種情報処理に対するセキュリティを確保でき、他のコンテナを用いて各種情報処理を行う他の端末装置10からの盗聴を防止することができる。アクセス制限は、コンテナ実行部434の少なくとも一部の機能を担う、後述するコンテナ仮想化エンジン452(図6参照)により実行される。
【0078】
コンテナイメージ復号部435は、端末装置10からコンテナ実装のリクエストを受信し、このリクエストに基づいて、パーツを送信したサーバ30に対して、サーバ30に格納しているパーツの送信をリクエストする。そして、このリクエストに応じてサーバ30から送信されたパーツを一旦記憶部420(メモリ45)に格納する。
【0079】
この際、サーバ30から送信されてきたパーツにアクティベーション情報が付加されていれば、コンテナイメージ復号部436はこのアクティベーション情報を確認し、正当なアクティベーション情報であるか否かを判定する。そして、アクティベーション情報が正当な情報でない場合、このパーツについての復号化処理は行わない。これにより、パーツに対する改竄、盗聴の可能性をできるだけ排除することができる。
【0080】
サーバ30により付加されるアクティベーション情報は、パーツが正当なものであるか否かを判断できる情報であり、一例として、時限情報、サーバ30のハードウェアを識別するための情報(デバイス識別子)などが挙げられる。一例として、アクティベーション情報が時限情報であったら、コンテナイメージ復号部436はパーツに付加されている時限情報及び現在の時刻を確認し、時限情報が有効期限内であるかどうかを判定する。そして、時限情報が有効期限内でない場合、このパーツについての復号化処理は行わない。
【0081】
加えて、パーツに分割手順を特定する情報が付加されている場合、コンテナイメージ復号部436は、この情報に基づいてコンテナイメージへの復号化処理を行う。これにより、コンテナイメージへの復号化処理を正しく行うことができる。
【0082】
さらに、パーツが暗号化処理されている場合、コンテナイメージ復号部436は、パーツの復号化処理を行ってからコンテナイメージの復号化処理を行う。
【0083】
その後、コンテナイメージ復号部436は、全てのパーツが送信されたかどうかを確認し、全てのパーツが送信されていたならば、これらパーツに基づいてコンテナイメージを復号化する。そして、コンテナイメージ復号部436は、復号化したコンテナイメージに基づいてコンテナを実装(デプロイ)する。
【0084】
以上説明したパーツリクエスト作業、パーツ受信作業、パーツ復号化作業、コンテナイメージ復号化作業及びコンテナデプロイ作業は、コンテナイメージ復号部436の少なくとも一部の機能を担う、後述するコンテナ仮想化エンジン452(図6参照)により実行される。
【0085】
<サーバ30の機能構成>
サーバ30のハードウェア構成が実現する機能構成を図5に示す。サーバ30の機能構成は管理サーバ20及びコンテナサーバ40の機能構成と共通する部分があるので、共通する部分については説明を省略し、管理サーバ20及びコンテナサーバ40と異なる部分を中心に説明する。サーバ30は、記憶部320、制御部330、通信部340を備える。
【0086】
<サーバ30の記憶部320の構成>
サーバ30の記憶部320はアプリケーションプログラム321とパーツ322とを有する。パーツ322は、管理サーバ20のコンテナイメージ分割部233により生成され、送付されたものである。
【0087】
<サーバ30の制御部330の構成>
サーバ30の制御部330は、受信制御部331、送信制御部332及びパーツ管理部333を備える。制御部330は、記憶部320に記憶されたアプリケーションプログラム321を実行することにより、これら受信制御部331等の機能ユニットが実現される。受信制御部331、送信制御部332は、管理サーバ20の受信制御部231、送信制御部232とほぼ共通する機能を有する。
【0088】
パーツ管理部333は、管理サーバ20から送信されたパーツ322を記憶部320に格納し、コンテナサーバ40からのリクエストがあると、記憶部320に格納したパーツ322をコンテナサーバ40に送出する。この際、パーツ管理部333は、コンテナサーバ40からのリクエストがあると、記憶部320に格納したパーツ322に対してアクティベーション情報を付加してからコンテナサーバ40に送出する。
<コンテナサーバ40のプログラム構成>
【0089】
図5は、コンテナサーバ40のプログラム構成を示す図である。
【0090】
図5において、コンテナサーバ40は、プロセッサ49等のハードウェア450と、このハードウェア450上で動作するOS451とを有する。既に説明したように、コンテナ仮想化環境において、コンテナサーバ40上には単一のOS451が動作していればよい。
【0091】
OS451上では、アプリケーションプログラム422であるコンテナ仮想化エンジン452及びコンテナ管理ツール453が動作している。コンテナ仮想化エンジン452は、コンテナサーバ40においてコンテナ仮想化環境を実現するためのプログラムであり、例えばDockerエンジン(プロセス)である。また、本実施例のシステム1では使われない機能であるが、コンテナ管理ツール453は、例えばコンテナサーバ40が複数設けられている場合、どのコンテナをどのコンテナサーバ40で処理させるかを決定し、決定したコンテナサーバ40に対してコンテナを配備する。コンテナ管理ツール453は、例えばKubernetesである。
【0092】
コンテナ仮想化エンジン452上では、少なくとも1つのコンテナ454が実装され、稼働されている。コンテナ454は、アプリケーション455及びライブラリ456を有する。なお、ライブラリ456はコンテナ454に必須のプログラムではない。また、必要に応じて、コンテナ454が図略のミドルウェアを備えることもある。これらアプリケーション455、ライブラリ456(及び必要に応じてミドルウェア)を備えるコンテナ454は、それぞれが単体のサーバとみなすことができ、端末装置10は、このコンテナ454を用いて各種情報処理を行うことができる。
【0093】
近年、マイクロサービス技術と呼ばれる、比較的大規模なアプリケーションを細分化し、細分化したマイクロサービスをAPI(Application Programming Interface)を介して疎結合した技術が知られている。このマイクロサービス技術をコンテナ仮想化環境に適用した場合、マイクロサービス毎に1以上のコンテナが割り当てられ、それぞれのコンテナが並列に動作することでアプリケーションとしての動作がされる。従って、マイクロサービス技術を採用する場合、このマイクロサービス技術がコンテナ仮想化環境により実現されるメリットが大きい。
【0094】
<システム1の動作>
以下、図9のフローチャート及び図10のシーケンス図を参照しながら、本実施形態のシステム1の処理について説明する。
【0095】
図8に示すフローチャートは、本実施形態のシステム1の動作のうち、管理サーバ20がコンテナイメージを生成してこれを複数のパーツに分割し、分割したパーツをサーバ30に送出する動作を説明するためのフローチャートである。
【0096】
図8において、管理サーバ20は、コンテナサーバ40のコンテナ実行部434により、記憶部220(メモリ25)にコンテナイメージを生成する(S800)。コンテナイメージは、クライアントである端末装置10からの指示に基づいて生成を開始してもよいし、コンテナサーバ40が自らの判断により生成を開始してもよい。
【0097】
次いで、管理サーバ20は、コンテナイメージ分割部233により、S800で生成したコンテナイメージを複数のパーツに分割する(S801)。さらに、管理サーバ20は、コンテナイメージ分割部233により、S801で分割したパーツの少なくとも1つについて暗号化処理を行う。
【0098】
そして、管理サーバ20は、コンテナイメージ分割部233により、分割し、少なくとも1つが暗号化処理されたパーツの少なくとも一部を、それぞれ異なるサーバ30に送信する(S803)。サーバ30は、パーツ管理部333により、送信されたパーツ322を記憶部320に格納する。
【0099】
図10は、コンテナサーバ40がクライアントである端末装置10からコンテナイメージ展開指示を受けてからコンテナをデプロイするまでのコンテナサーバ40及びサーバ30の動作の一例を示すシーケンス図である。
【0100】
まず、コンテナサーバ40は、通信部440、受信制御部431及びコンテナイメージ復号部435により、端末装置10からコンテナイメージの展開指示を受信したら(S900においてYES)、コンテナイメージ復号部435及び送信制御部432により、展開指示があったコンテナイメージを構成するパーツ322が格納されているサーバ30に対して、自身の記憶部320に格納されているパーツ322の送信を指示する(S901)。
【0101】
サーバ30は、通信部340、受信制御部331及びパーツ管理部333により、コンテナサーバ40からのパーツ送信指示を受信し(S950)、パーツ管理部333により、記憶部320に格納されているパーツ322に対してアクティベーション情報を付加する(S951)。そして、サーバ30は、パーツ管理部333及び送信制御部332により、アクティベーション情報を付加したパーツ322を、パーツ送信指示があったコンテナサーバ40に送出する(S952)。
【0102】
コンテナサーバ40は、受信制御部431及びコンテナイメージ復号部435により、サーバ30から送信されたパーツ322を受信し(S902)、コンテナイメージ復号部435により、送信されてきたパーツ322に付加されているアクティベーション情報を確認する(S903)。そして、コンテナサーバ40は、コンテナイメージ復号部236により、アクティベーション情報が正当なものであれば、コンテナイメージを構成する全てのパーツ322をサーバ30から受信したことを確認して、これらパーツ322に基づいてコンテナイメージを展開する(S904)。
【0103】
そして、コンテナサーバ40は、コンテナイメージ復号部435により、展開したコンテナイメージに基づいてコンテナをデプロイする(S905)。
【0104】
<実施形態の効果>
以上詳細に説明したように、本実施形態のシステム1によれば、暗号化されたコンテナイメージの復号に必要となる復号鍵をクライアントが保有する場合であっても、コンテナイメージをクライアントが復号することができない。
【0105】
また、本実施例のシステム1では、コンテナサーバ40は、アクティベーション情報が付されたパーツをサーバ30から受信し、アクティベーション情報が正当なものであることを確認してからコンテナイメージを展開しているので、パーツに対する盗聴、改竄の可能性を低下させたシステム1を実現することができる。
【0106】
さらに、本実施例のシステム1では、コンテナイメージの分割手順を定期的に変更しているので、この点からも、パーツに対する盗聴、改竄の可能性を低下させたシステム1を実現することができる。
【0107】
そして、本実施例のシステム1では、コンテナイメージの内容とは無関係にコンテナイメージを複数のパーツに分割しているので、この点からも、パーツに対する盗聴、改竄の可能性を低下させたシステム1を実現することができる。
【0108】
<付記>
なお、上記した実施形態は本開示を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施形態の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0109】
一例として、上記した実施形態のシステム1では、管理サーバ20がコンテナイメージの分割手順を定期的に変更しているが、例えば、管理サーバ20、コンテナサーバ40及びサーバ30とは別体の更新サーバをシステム1に設け、この更新サーバがコンテナイメージの分割手順を定期的に変更(指示)し、管理サーバ20は、この更新サーバにより設定された分割手順に基づいてコンテナイメージを複数のパーツに分割してもよい。加えて、複数のパーツに分割した際の分割手順に関する情報を、管理サーバ20、コンテナサーバ40及びサーバ30とは別体の(好ましくは更新サーバとも別体の)認証サーバに格納しておき、複数のパーツからコンテナイメージを復号する際に、この認証サーバから現時点での分割手順に関する情報を入手し、
【0110】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0111】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0112】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0113】
以上の各実施形態で説明した事項を以下に付記する。
【0114】
(付記1)
コンテナ仮想化環境を提供するコンピュータ(20、40)を動作させるためのプログラムであって、コンピュータ(20、40)はプロセッサ(29)を備え、プログラムは、プロセッサ(29)に、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツ(322)に分割する第1ステップ(S801)と、複数のパーツ(322)のうち少なくとも1つのパーツ(322)を暗号化する第2ステップ(S802)と、暗号化したパーツ(322)を含む複数のパーツ(322)の少なくとも一部を異なる複数のサーバ(30)に送信する第3ステップ(S803)と、クライアント(10)からコンテナイメージの展開要求を受け入れたら複数のサーバ(30)から複数のパーツ(322)を取得する第4ステップ(S902)と、取得したパーツ(322)のうち、暗号化されたパーツ(322)を復号化する第5ステップ(S904)と、復号化したパーツ(322)を含む取得した複数のパーツ(322)からコンテナイメージを生成する第6ステップ(S905)と、生成したコンテナイメージに基づいてコンテナを実現する第7ステップ(S906)とを実行させる、プログラム。
(付記2)
プログラムは、第4ステップ(S902)において、アクティベーション情報が付された複数のパーツ(322)を複数のサーバ(30)から取得する付記1記載のプログラム。
(付記3)
プログラムは、第6ステップ(S905)において、複数のサーバ(30)から取得した複数のパーツ(322)に付されたアクティベーション情報が正当なものであることを確認してからコンテナイメージに復元する付記2記載のプログラム。
(付記4)
プログラムは、第1ステップ(S801)において、所定の時間間隔を置いて、コンテナイメージを分割する手法を異ならせてコンテナイメージを複数のパーツ(322)に分割し、第3ステップ(S803)において、第1ステップ(S801)においてコンテナイメージを複数のパーツ(322)に分割する毎にこれら複数のパーツ(322)を複数のサーバ(30)に送信する付記1記載のプログラム。
(付記5)
プログラムは、第1ステップ(S801)において、コンテナイメージの内容とは無関係にコンテナイメージを複数のパーツ(322)に分割する付記1~3のいずれかに記載のプログラム。
(付記6)
コンテナ仮想化環境を提供するコンピュータ(20、40)であって、コンピュータ(20)はプロセッサ(29)を備え、プロセッサ(29)が、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツ(322)に分割する第1ステップ(S801)と、複数のパーツ(322)のうち少なくとも1つのパーツ(322)を暗号化する第2ステップ(S802)と、暗号化したパーツ(322)を含む複数のパーツ(322)の少なくとも一部を異なる複数のサーバ(30)に送信する第3ステップ(S803)と、クライアントからコンテナイメージの展開要求を受け入れたら複数のサーバ(30)から複数のパーツ(322)を取得する第4ステップ(S902)と、取得したパーツ(30)のうち、暗号化されたパーツ(30)を復号化する第5ステップ(S904)と、復号化したパーツ(30)を含む取得した複数のパーツ(30)からコンテナイメージを生成する第6ステップ(S905)と、生成したコンテナイメージに基づいてコンテナを実現する第7ステップ(S906)とを実行する、コンピュータ(20)。
(付記7)
コンテナ仮想化環境を提供するコンピュータ(20、40)と、このコンピュータ(20、40)と通信可能に接続された複数のサーバ(30)とを有するシステム(1)であって、コンピュータ(20、40)はプロセッサ(29)を備え、プロセッサ(29)が、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツ(322)に分割する第1ステップ(S801)と、複数のパーツ(322)のうち少なくとも1つのパーツ(322)を暗号化する第2ステップ(S802)と、暗号化したパーツを含む複数のパーツの少なくとも一部を異なる複数のサーバに送信する第3ステップ(S803)と、クライアントからコンテナイメージの展開要求を受け入れたら複数のサーバ(30)から複数のパーツ(322)を取得する第4ステップ(S902)と、取得したパーツ(322)のうち、暗号化されたパーツ(322)を復号化する第5ステップ(S904)と、復号化したパーツ(322)を含む取得した複数のパーツ(322)からコンテナイメージを生成する第6ステップ(S905)と、生成したコンテナイメージに基づいてコンテナを実現する第7ステップ(S906)とを実行する、システム。
(付記8)
コンテナ仮想化環境を提供する第1コンピュータ(40)と、この第1コンピュータ(40)と通信可能に接続された第2コンピュータ(20)及び複数のサーバ(30)とを有するシステム(1)であって、第1コンピュータ(40)は第1プロセッサを備え、第2コンピュータ(20)は第2プロセッサ(29)を備え、第2プロセッサ(29)が、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツ(322)に分割する第1ステップ(S801)と、複数のパーツ(322)のうち少なくとも1つのパーツ(322)を暗号化する第2ステップ(S802)と、暗号化したパーツ(322)を含む複数のパーツ(322)の少なくとも一部を異なる複数のサーバ(30)に送信する第3ステップ(S803)と、を実行し、第1プロセッサが、クライアント(10)からコンテナイメージの展開要求を受け入れたら複数のサーバ(30)から複数のパーツ(322)を取得する第4ステップ(S902)と、取得したパーツ(322)のうち、暗号化されたパーツ(322)を復号化する第5ステップ(S904)と、復号化したパーツ(322)を含む取得した複数のパーツ(322)からコンテナイメージを生成する第6ステップ(S905)と、生成したコンテナイメージに基づいてコンテナを実現する第7ステップ(S906)とを実行する、システム。
(付記9)
プロセッサ(29)を備え、コンテナ仮想化環境を提供するコンピュータ(20、40)のプロセッサ(29)が、コンテナ仮想化環境におけるコンテナを実現するためのコンテナイメージを複数のパーツ(322)に分割する第1ステップ(S801)と、複数のパーツ(322)のうち少なくとも1つのパーツ(322)を暗号化する第2ステップ(S802)と、暗号化したパーツ(322)を含む複数のパーツ(322)の少なくとも一部を異なる複数のサーバ(30)に送信する第3ステップ(S803)と、クライアント(10)からコンテナイメージの展開要求を受け入れたら複数のサーバ(30)から複数のパーツ(322)を取得する第4ステップ(S902)と、取得したパーツ(322)のうち、暗号化されたパーツ(322)を復号化する第5ステップ(S904)と、復号化したパーツ(322)を含む取得した複数のパーツ(322)からコンテナイメージを生成する第6ステップ(S905)と、生成したコンテナイメージに基づいてコンテナを実現する第7ステップ(S906)とを実行する、方法。
【符号の説明】
【0115】
1…システム 2、20…管理サーバ 3、30、30A、30B…サーバ 4、40…コンテナサーバ、5…コンテナイメージ 6、322…パーツ 7、10、10A、10B…端末装置 8…コンテナ 25…メモリ 26…ストレージ 29…プロセッサ 80…ネットワーク 220、420…記憶部 221…OS 222…アプリケーションプログラム 223、423…コンテナ管理DB 224、424…パーツ管理DB 230、430…制御部 233…コンテナイメージ分割部 434…コンテナ実行部 435…コンテナイメージ復号部
【要約】      (修正有)
【課題】暗号化されたコンテナイメージの復号に必要となる復号鍵をクライアントが保有する場合であってもコンテナイメージをクライアントが復号するプログラム、コンピュータ、システム及び方法を提供する。
【解決手段】システム1のプログラムは、サーバ3に、コンテナイメージ5を複数のパーツ6に分割する第1ステッと、複数のパーツ6を暗号化する第2ステップ、暗号化したパーツ6を含む複数のパーツ6の少なくとも一部を異なる複数のサーバ3に送信する第3ステップ、端末装置7からコンテナイメージ5の展開要求を受け入れたら複数のサーバ3から複数のパーツ6を取得する第4ステップ、取得したパーツ6のうち、暗号化されたパーツ6を復号化する第5ステップ、復号化したパーツ6を含む取得した複数のパーツ6からコンテナイメージ5を生成する第6ステップ及び生成したコンテナイメージ5に基づいてコンテナ8を実現する第7ステップを実行させる。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10