(57)【要約】【課題】サイバー攻撃が標的に届くことを前提としたとき、当該サイバー攻撃によるユーザへの影響を抑制するための技術を提供することである。【解決手段】本発明の一態様は、ユーザから受信したトラヒックをコンテナに振り分けるトラヒック振り分け装置と、前記トラヒックを処理するコンテナを管理するコンテナマネージャ装置と、前記コンテナマネージャ装置からの指示に従ってコンテナを配備するコンテナ配備サーバとを有する通信システムであって、前記コンテナマネージャ装置は、所定のコンテナ収容方式に従って前記トラヒックを処理するコンテナを決定し、前記トラヒック振り分け装置は、前記決定されたコンテナに前記トラヒックを振り分ける通信システムに関する。【選択図】図１
2018028764.tif 000002
【特許請求の範囲】
【請求項１】
ユーザから受信したトラヒックをコンテナに振り分けるトラヒック振り分け装置と、
前記トラヒックを処理するコンテナを管理するコンテナマネージャ装置と、
前記コンテナマネージャ装置からの指示に従ってコンテナを配備するコンテナ配備サーバと、
を有する通信システムであって、
前記コンテナマネージャ装置は、所定のコンテナ収容方式に従って前記トラヒックを処理するコンテナを決定し、前記トラヒック振り分け装置は、前記決定されたコンテナに前記トラヒックを振り分ける通信システム。
【請求項２】
前記コンテナマネージャ装置は、１ユーザに１つのコンテナを割り当てるユーザ単位割当方式に従って、前記ユーザから受信したトラヒックを処理するコンテナを決定する、請求項１記載の通信システム。
【請求項３】
前記コンテナマネージャ装置は、複数ユーザに１つのコンテナを割り当てる複数ユーザ単位割当方式に従って、前記ユーザから受信したトラヒックを処理するコンテナを決定する、請求項１記載の通信システム。
【請求項４】
前記コンテナマネージャ装置は、一定時間内にアクセスしたユーザに１つのコンテナを割り当てる時間単位割当方式に従って、前記ユーザから受信したトラヒックを処理するコンテナを決定する、請求項１記載の通信システム。
【請求項５】
前記コンテナマネージャ装置は更に、各コンテナのリソース使用状況に応じて収容するユーザ数を動的に調整する収容ユーザ数変動方式に従って、各コンテナに収容するユーザ数を動的に調整する、請求項３又は４記載の通信システム。
【請求項６】
前記コンテナ配備サーバに配備されたコンテナの個数が所定の閾値以上になると、前記コンテナマネージャ装置は、各コンテナに収容可能なユーザ数の上限値までユーザが収容されるように前記配備されたコンテナに収容されるユーザを整理し、収容ユーザ数が０になったコンテナを削除する、請求項３乃至５何れか一項記載の通信システム。
【請求項７】
前記コンテナマネージャ装置は、ユーザと該ユーザを収容するコンテナとの間の通信が一定時間以上行われなかったとき、前記コンテナを削除する、請求項２乃至６何れか一項記載の通信システム。
【請求項８】
ユーザからトラヒックを受信するステップと、
所定のコンテナ収容方式に従って前記トラヒックを処理するコンテナを決定するステップと、
前記決定されたコンテナに前記トラヒックを振り分けるステップと、
を有するトラヒック制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トラヒックを制御する通信システムに関し、Webサーバに対して行われるサーバリソース消費型DDoS (Distributed Denial of Service attack)攻撃とゼロデイ攻撃等のサーバ脆弱性をついた攻撃の対処のためのWebサーバコンテナ制御技術及びネットワーク制御技術に関する。
【背景技術】
【０００２】
近年、ネットワークを通したサイバー攻撃が増加及び多様化している。その中で、標的型攻撃、ゼロデイ攻撃等の未知の脆弱性をついた攻撃、Slow DoS攻撃といった、既知の手法ではない、もしくは閾値や振る舞い分析での検知が困難なために、従来のセキュリティ製品では検知困難な攻撃が問題となっている。
【０００３】
こういった攻撃を対象に、さまざまな対策が考えられている。主な対策方法としては、通信トラヒックをフォレンジック製品に転送し、長期且つ詳細に通信を分析することで攻撃を発見する方法や、サンドボックスにメール等の通信トラヒックを転送し、挙動を監視することで攻撃を検知する方法がある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"複数台のおとりマシンによるHTTP-GET Flood攻撃対策",吉田祥真, 三上烈史, 小林良太郎, 金岡晃, 加藤雅彦, FIT2012（第１１回情報科学技術フォーラム）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
フォレンジック製品によるこれらの攻撃の検知では、分析までは行うが、結局人が攻撃トラヒックかどうかの判断を行う。従って、そのためのスキルが必要となり、またトラヒックの規模によってはトラヒックの精査に多大なコストがかかってしまう。また、サンドボックスのような手法についても、サンドボックス環境を検知して攻撃を止めてしまうマルウェアがあるなど、ハッカーが対策を施している場合がある。また、これらの対策をとっても、結局検知するまで防御は行わないため、一度は攻撃が成功してしまう。
【０００６】
この課題を解決するために、攻撃の無害化という方法がある。これは、攻撃対象となる端末を仮想化技術等で細分化することで、攻撃の影響を抑制し、攻撃を受けた端末を素早く削除することで攻撃をなかったことにし、攻撃を無害化するというものである。例えば、クライアント端末で攻撃の感染経路となり得るWebブラウザやメーラを仮想化し、それぞれのアプリケーションのみを実行する１つのマシンとしてリソースを分離し、クライアント端末自体に攻撃が届かないようにするリソース分離方法がある。このような方法には、クライアント端末に負荷をなるべくかけずに迅速に仮想端末を生成・削除する技術が必要であり、そのための技術としてコンテナ技術が考えられている。
【０００７】
一方、サーバ側では、あらかじめ攻撃者用のサーバのバーチャルマシーン（VM）を設定し、攻撃トラヒックをそのVMに送ることで、通常ユーザ向けのサーバを守る技術がある（非特許文献１）。しかしながら、この方法では、検知できない攻撃を防ぐことはできない。また、先に述べたリソース分離方法を用いても、複数のユーザがサーバにアクセスするため、サーバ自体は攻撃を無害化できるが、クライアント側への攻撃影響は抑制されない。例えば、DoS攻撃により一部の情報のみが攻撃されても、すべてのクライアントが利用できなくなったり、ゼロデイ攻撃によりデータが書き換えられて、すべてのクライアントが感染してしまう等の問題がある。
【０００８】
上述した問題を鑑み、本発明の課題は、サイバー攻撃が標的に届くことを前提としたとき、当該サイバー攻撃によるユーザへの影響を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明の一態様は、ユーザから受信したトラヒックをコンテナに振り分けるトラヒック振り分け装置と、前記トラヒックを処理するコンテナを管理するコンテナマネージャ装置と、前記コンテナマネージャ装置からの指示に従ってコンテナを配備するコンテナ配備サーバとを有する通信システムであって、前記コンテナマネージャ装置は、所定のコンテナ収容方式に従って前記トラヒックを処理するコンテナを決定し、前記トラヒック振り分け装置は、前記決定されたコンテナに前記トラヒックを振り分ける通信システムに関する。
【発明の効果】
【００１０】
本発明によると、サイバー攻撃が標的に届くことを前提としたとき、当該サイバー攻撃によるユーザへの影響を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の一実施例による通信システムの構成を示すブロック図である。
【図２】図２は、本発明の一実施例によるトラヒック振り分け処理を示す概略図である。
【図３】図３は、本発明の一実施例によるユーザ単位割当方式を示す概略図である。
【図４】図４は、本発明の一実施例による複数ユーザ単位割当方式を示す概略図である。
【図５】図５は、本発明の一実施例による時間単位割当方式を示す概略図である。
【図６】図６は、本発明の一実施例による時間単位割当方式によるコンテナ管理処理を示すフローチャートである。
【図７】図７は、本発明の一実施例による収容ユーザ数変動方式を示す概略図である。
【図８】図８は、本発明の一実施例による収容ユーザ数変動方式によるコンテナ管理処理を示すフローチャートである。
【図９】図９は、本発明の一実施例によるトラヒック制御処理を示すシーケンス図である。
【図１０】図１０は、本発明の一実施例によるトラヒック制御処理を示すシーケンス図である。
【図１１】図１１は、本発明の一実施例による収容ユーザ整理処理を示す概略図である。
【図１２】図１２は、本発明の一実施例による収容ユーザ整理処理を示すシーケンス図である。
【図１３】図１３は、本発明の一実施例による収容ユーザ整理処理を示すシーケンス図である。
【図１４】図１４は、本発明の一実施例によるコンテナ削除処理を示す概略図である。
【図１５】図１５は、本発明の一実施例によるコンテナ削除処理を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１３】
以下の実施例では、トラヒックを制御する通信システム及び方法が開示される。後述される実施例によると、通信システムは、コンテナ技術を利用してWebサーバを複数のWebサーバコンテナに分離し、Webサーバのリソースを少数のユーザ毎に分離する。これにより、Webサーバにおいて他のユーザに対して影響を及ぼす攻撃が発生した場合、当該攻撃が検知できない場合であっても、影響を及ぼすユーザの範囲を極小化することが可能であり、ユーザのサービス利用の可用性及びサービスの完全性を向上させることができる。
【００１４】
まず、本発明の一実施例による通信システムの構成を説明する。図１は、本発明の一実施例による通信システムの構成を示すブロック図である。
【００１５】
図１に示されるように、通信システム１０は、トラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００を有する。トラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００は、典型的には、サーバにより実現されてもよく、例えば、バスを介し相互接続されるドライブ装置、補助記憶装置、メモリ装置、プロセッサ、インタフェース装置及び通信装置から構成される。トラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００について後述される各種機能及び処理を実現するプログラムは、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、フラッシュメモリなどの記録媒体によって提供されてもよく、プログラムを記憶した記録媒体がドライブ装置にセットされると、プログラムが記録媒体からドライブ装置を介して補助記憶装置にインストールされる。但し、プログラムのインストールは必ずしも記録媒体により行う必要はなく、ネットワークなどを介し何れかの外部装置からダウンロードするようにしてもよい。補助記憶装置は、インストールされたプログラムを格納すると共に、必要なファイルやデータなどを格納する。メモリ装置は、プログラムの起動指示があった場合に、補助記憶装置からプログラムやデータを読み出して格納する。プロセッサは、メモリ装置に格納されたプログラムやプログラムを実行するのに必要なパラメータなどの各種データに従って、トラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００の各種機能及び処理を実行する。インタフェース装置は、ネットワーク又は外部装置に接続するための通信インタフェースとして用いられる。通信装置は、インターネットなどのネットワークと通信するための各種通信処理を実行する。しかしながら、上述したハードウェア構成は単なる一例であり、トラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００は、上述したハードウェア構成に限定されるものでなく、他の何れか適切なハードウェア構成により実現されてもよい。
【００１６】
トラヒック振り分け装置５０は、コンテナマネージャ１００により決定されたコンテナにユーザから受信したトラヒックを振り分ける。図示されるように、トラヒック振り分け装置５０は、以降において詳細に説明されるトラヒック振り分け部５１及びトラヒック変換設定記憶部５２を有する。
【００１７】
コンテナマネージャ１００は、トラヒックを処理するコンテナを管理すると共に、所定のコンテナ収容方式に従ってトラヒックを処理するコンテナを決定する。具体的には、コンテナマネージャ１００は、後述されるユーザ単位割当方式、複数ユーザ単位割当方式、時間単位割当方式、収容ユーザ数変動方式などの何れかのコンテナ収容方式に従って、Webサーバにアクセスするユーザを収容するWebサーバコンテナ２１０を決定し、各ユーザのトラヒックをWebサーバコンテナ２１０に振り分けるためのトラヒック変換設定をトラヒック振り分け装置５０に通知する。また、コンテナマネージャ１００は、コンテナ配備サーバ２００に対してWebサーバコンテナ２１０の生成、整理及び削除を要求すると共に、コンテナマネージャ１００は、コンテナ配備サーバ２００に配備された各Webサーバコンテナ２１０のリソース（CPU使用率、メモリ使用率等）をポーリング等によって監視する。図示されるように、コンテナマネージャ１００は、以降において詳細に説明されるコンテナ収容ユーザデータベース（DB）１１０、コンテナ収容計算エンジン１２０及びWebサーバコンテナイメージ格納部１３０を有する。
【００１８】
コンテナ配備サーバ２００は、コンテナマネージャ１００からの指示に従ってコンテナを配備する。具体的には、コンテナ配備サーバ２００は、Webサーバコンテナ２１０を有し、コンテナマネージャ１００からの指示に従ってWebサーバコンテナ２１０を生成及び削除する。
【００１９】
Webサーバコンテナ２１０は、Webサーバのサービスをユーザに提供する。各Webサーバコンテナ２１０には、他のWebサーバコンテナ２１０から分離されたリソース（CPU、メモリ等）が割り当てられる。従って、各Webサーバコンテナ２１０は、コンテナ技術によって他のWebサーバコンテナ２１０における処理状況による影響を受けることなく、収容されたユーザに対してサービスを提供することができる。
【００２０】
共有ストレージサーバ３００は、動画ファイル等の大容量データを格納する。共有ストレージサーバ３００を備えることによって、Webサーバが大容量ファイルを提供する場合、各Webサーバコンテナ２１０が当該ファイルを複製してファイルを重複して格納し、コンテナ配備サーバ２００におけるリソースを逼迫させる事態を回避することができる。なお、共有ストレージサーバ３００は、Webサーバコンテナ２１０からは読み込みのみ可能とされ、コンテンツの変更はコンテナマネージャ１００の管理者のみ許可されてもよい。これにより、Webサーバコンテナ２１０経由の攻撃を防ぐことができる。
【００２１】
ユーザは、Webサーバ又はWebサーバコンテナ２１０にアクセスするユーザ端末を操作する。ユーザには攻撃者も含まれる。
【００２２】
次に、トラヒック振り分け装置５０の各構成要素を説明する。
【００２３】
トラヒック振り分け部５１は、トラヒック変換設定記憶部５２に保持されるトラヒック変換設定情報に基づき各ユーザのWebサーバ宛のトラヒックを当該ユーザに割り当てられたコンテナに転送する。具体的には、新規ユーザからWebサーバへのアクセス要求を受信すると、トラヒック振り分け部５１は、トラヒック情報として当該ユーザのユーザ識別子をコンテナマネージャ１００に通知する。コンテナマネージャ１００によって当該ユーザにコンテナが割り当てられると、トラヒック振り分け部５１は、ユーザに割り当てられたコンテナを示すトラヒック変換設定情報に基づき、当該ユーザからのWebサーバ宛のトラヒックを当該ユーザに割り当てられたコンテナに転送する。なお、トラヒック振り分け部５１は、トラヒック情報として、当該ユーザのパケットが最後に通過した時間を更に通知してもよい。
【００２４】
トラヒック変換設定記憶部５２は、トラヒック送信元のユーザの識別子と当該ユーザとの間で送受信されるトラヒックの送信先アドレス及び／又は送信元アドレスに対する変換設定とを規定するトラヒック変換設定情報を格納する。当該トラヒック変換設定情報は、コンテナマネージャ１００によって設定される。
【００２５】
例えば、トラヒック変換設定記憶部５２が、図２に示されるようなテーブル形式のトラヒック変換設定情報を保持している場合、トラヒック振り分け部５１は、ユーザから受信したトラヒックのユーザ識別子を特定すると、トラヒック変換設定情報を参照して特定したユーザ識別子に対応する変換設定に従って当該トラヒックの送信先アドレスを変換し、変換後の送信先アドレス（Webサーバコンテナ２１０）に当該トラヒックを転送する。また、Webサーバコンテナ２１０からユーザ宛のトラヒックを受信すると、トラヒック振り分け部５１は、トラヒック変換設定情報に従って送信元アドレスを送信元のWebサーバコンテナ２１０のアドレスからWebサーバのグローバルIPアドレス等に変換し、送信先アドレスに当該トラヒックを転送する。
【００２６】
次に、コンテナマネージャ１００の各構成要素を説明する。
【００２７】
コンテナ収容ユーザデータベース１１０は、各Webサーバコンテナ２１０と当該Webサーバコンテナ２１０に収容されるユーザとの関連付けを示すコンテナ収容ユーザ情報を保持する。当該コンテナ収容ユーザ情報は、コンテナ収容計算エンジン１２０による計算結果に基づき設定される。
【００２８】
コンテナ収容計算エンジン１２０は、コンテナ収容ユーザデータベース１１０におけるコンテナ収容ユーザ情報に従って、Webサーバにアクセスするユーザを収容するコンテナを決定する。具体的には、新規ユーザがWebサーバにアクセスすると、トラヒック振り分け装置５０は、当該ユーザからのトラヒックのトラヒック情報（ユーザ識別子等）をコンテナマネージャ１００に通知する。当該通知の受信に応答して、コンテナ収容計算エンジン１２０は、ユーザ単位割当方式、複数ユーザ単位割当方式、時間単位割当方式、収容ユーザ数変動方式などの何れかのコンテナ収容方式に従って当該ユーザを収容するWebサーバコンテナ２１０を決定し、決定したWebサーバコンテナ２１０と当該ユーザとの関連付けをトラヒック振り分け装置５０に通知する。また、コンテナ収容計算エンジン１２０は、必要に応じてWebサーバコンテナ２１０を生成、整理又は削除するようコンテナ配備サーバ２００に指示する。
【００２９】
一実施例では、コンテナ収容計算エンジン１２０は、１ユーザに１つのコンテナを割り当てるユーザ単位割当方式に従って、ユーザから受信したトラヒックを処理するコンテナを決定してもよい。ユーザ単位割当方式によると、トラヒック振り分け装置５０（スイッチ）から新規ユーザのトラヒック情報を受信すると、コンテナ収容計算エンジン１２０は、図３に示されるように、例えば、新たなWebサーバコンテナ２１０を生成することによって各ユーザを当該Webサーバコンテナ２１０に割り当てると共に、当該ユーザに割り当てられたWebサーバコンテナ２１０をトラヒック振り分け装置５０に通知する。また、コンテナ収容計算エンジン１２０は、図３に示されるようなコンテナ収容ユーザ情報をコンテナ収容ユーザデータベース１１０に格納する。図示されたコンテナ収容ユーザ情報では、Webサーバコンテナ２１０を示すコンテナIDと、当該Webサーバコンテナ２１０に割り当てられたユーザを示すユーザ識別子とが関連付けされて格納される。また、図示されるように、コンテナ収容ユーザ情報は、Webサーバコンテナ２１０とユーザとの間で最後にやりとりされたトラヒックに関する最終通信日時を保持してもよい。ユーザ単位割当方式によると、サイバー攻撃された場合、他のユーザは当該サイバー攻撃による影響を受けることなくWebサービスを利用することができる。
【００３０】
他の実施例では、コンテナ収容計算エンジン１２０は、複数ユーザに１つのコンテナを割り当てる複数ユーザ単位割当方式に従って、ユーザから受信したトラヒックを処理するコンテナを決定してもよい。複数ユーザ単位割当方式によると、トラヒック振り分け装置５０（スイッチ）から新規ユーザのトラヒック情報を受信すると、コンテナ収容計算エンジン１２０は、図４に示されるように、例えば、新たなWebサーバコンテナ２１０を生成することによって、又は既存のWebサーバコンテナ２１０を使用することによって、所定数nのユーザを１つのWebサーバコンテナ２１０に割り当てると共に、当該n人のユーザに割り当てられたWebサーバコンテナ２１０をトラヒック振り分け装置５０に通知する。また、コンテナ収容計算エンジン１２０は、図４に示されるようなコンテナ収容ユーザ情報をコンテナ収容ユーザデータベース１１０に格納する。図示されたコンテナ収容ユーザ情報では、Webサーバコンテナ２１０を示すコンテナIDと、当該Webサーバコンテナ２１０に割り当てられた複数のユーザを示すユーザ識別子とが関連付けされて格納される。また、図示されるように、コンテナ収容ユーザ情報は、Webサーバコンテナ２１０とユーザとの間で最後にやりとりされたトラヒックに関する最終通信日時を保持してもよい。複数ユーザ単位割当方式によると、収容可能なユーザ数を調整することによってコンテナ数を調整することが可能である。また、サイバー攻撃された場合、被攻撃コンテナに収容されたユーザのみに被害が限定され、他のコンテナに収容されたユーザは当該サイバー攻撃による影響を受けることなくWebサービスを利用することができる。
【００３１】
他の実施例では、コンテナ収容計算エンジン１２０は、一定時間内にアクセスしたユーザに１つのコンテナを割り当てる時間単位割当方式に従って、ユーザから受信したトラヒックを処理するコンテナを決定してもよい。時間単位割当方式によると、トラヒック振り分け装置５０（スイッチ）から新規ユーザのトラヒック情報を受信すると、コンテナ収容計算エンジン１２０は、図５に示されるように、期間T内に新規にアクセスした全てのユーザを当該期間Tに対して用意された１つのWebサーバコンテナ２１０に割り当てると共に、当該ユーザに割り当てられたWebサーバコンテナ２１０をトラヒック振り分け装置５０に通知する。また、コンテナ収容計算エンジン１２０は、図５に示されるようなコンテナ収容ユーザ情報をコンテナ収容ユーザデータベース１１０に格納する。図示されたコンテナ収容ユーザ情報では、Webサーバコンテナ２１０を示すコンテナIDと、当該Webサーバコンテナ２１０に割り当てられたユーザを示すユーザ識別子とが関連付けされて格納される。また、図示されるように、コンテナ収容ユーザ情報は、コンテナの生成日時、収容されたユーザ数及び／又はWebサーバコンテナ２１０とユーザとの間で最後にやりとりされたトラヒックに関する最終通信日時を保持してもよい。
【００３２】
時間単位割当方式によると、収容期間を調整することによってコンテナ数を調整することが可能であり、例えば、DDoS攻撃に好適である。また、サイバー攻撃された場合、被攻撃コンテナに収容された同時期にアクセスしたユーザのみに被害が限定され、他のコンテナに収容されたユーザは当該サイバー攻撃による影響を受けることなくWebサービスを利用することができる。
【００３３】
なお、時間単位割当方式によると、１コンテナあたりに異なるユーザ数が収容される可能性があり、アクセスが少ない期間と多い期間とで収容ユーザ数に大きな差が生じうる。このため、コンテナ収容計算エンジン１２０は、図６に示される手順に従って、収容ユーザ数を調整してもよい。
【００３４】
図示されるように、ステップＳ１０１において、コンテナ収容計算エンジン１２０は、コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有しているか判断する。例えば、コンテナ収容計算エンジン１２０は、コンテナ配備サーバ２００に設定されているコンテナ数が所定の閾値（収容限界コンテナ数：Cmax）以下である場合、十分なリソースがあると判断してもよい。
【００３５】
コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有している場合（Ｓ１０１：Ｙｅｓ）、ステップＳ１０２において、コンテナ収容計算エンジン１２０は、現在期間のためのWebサーバコンテナ２１０を生成する。他方、コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有していない場合（Ｓ１０１：Ｎｏ）、ステップＳ１０３において、コンテナ収容計算エンジン１２０は、後述される収容ユーザ整理処理又はコンテナ削除処理を実行し、新たなコンテナを追加するためのリソースを確保する。
【００３６】
ステップＳ１０４において、コンテナ収容計算エンジン１２０は、当該期間が経過するまで、新規にアクセスしたユーザを生成したWebサーバコンテナ２１０に収容する。
【００３７】
期間Tが経過すると、ステップＳ１０５において、コンテナ収容計算エンジン１２０は、Webサーバコンテナ２１０に収容されたユーザ数が所定数n以上であるか判断する。収容されたユーザ数が所定数n以上である場合（Ｓ１０５：Ｙｅｓ）、コンテナ収容計算エンジン１２０は、次の期間のための新たなWebサーバコンテナ２１０を生成するため、ステップＳ１０１に戻る。他方、収容されたユーザ数が所定数n未満である場合（Ｓ１０５：Ｎｏ）、コンテナ収容計算エンジン１２０は、収容ユーザ数がnに達するまで、更なる新規ユーザをステップＳ１０２で生成したWebサーバコンテナ２１０に収容し続ける。
【００３８】
上述した調整処理によると、収容ユーザ数が少ないWebサーバコンテナ２１０が設定されることを回避でき、リソースを効率的に使用することが可能になる。
【００３９】
他の実施例では、上述した複数ユーザ単位割当方式又は時間単位割当方式を利用している場合、コンテナ収容計算エンジン１２０は更に、各コンテナのリソース使用状況に応じて収容するユーザ数を動的に調整する収容ユーザ数変動方式に従って、各コンテナに収容するユーザ数を動的に調整してもよい。すなわち、複数ユーザ単位割当方式及び時間単位割当方式では、ユーザがWebサーバコンテナ２１０に一旦収容されると、当該ユーザのトラヒックは、リソース使用状況に関わらず当該Webサーバコンテナ２１０によって処理され続ける。従って、複数ユーザ単位割当方式又は時間単位割当方式に収容ユーザ数変動方式を組み合わせることによって、コンテナ収容計算エンジン１２０は、各Webサーバコンテナ２１０のリソース使用状況に応じてユーザを再振り分けし、リソース使用状況に適応してトラヒックを振り分けることが可能になる。
【００４０】
収容ユーザ数変動方式によると、コンテナ収容計算エンジン１２０は、図７に示されるように、複数ユーザ単位割当方式又は時間単位割当方式に従って設定されたWebサーバコンテナ２１０のリソース使用状況を定期的に監視する。リソースが不足しているWebサーバコンテナ２１０を検出すると、コンテナ収容計算エンジン１２０は、Webサーバコンテナ２１０を追加し、検出されたWebサーバコンテナ２１０に収容されているユーザの一部を追加したWebサーバコンテナ２１０に振り分けると共に、当該ユーザに再割り当てられたWebサーバコンテナ２１０をトラヒック振り分け装置５０に通知する。
【００４１】
例えば、コンテナ収容計算エンジン１２０は、図８に示される手順に従ってユーザを再振り分けしてもよい。
【００４２】
図示されるように、ステップＳ２０１において、コンテナ収容計算エンジン１２０は、各Webサーバコンテナ２１０のCPU使用率及び／又はメモリ使用率を定期的に監視し、検出したCPU使用率及び／又はメモリ使用率が所定のCPU使用率閾値及び／又はメモリ使用率閾値以上であるか判断する。検出したCPU使用率及び／又はメモリ使用率がCPU使用率閾値及び／又はメモリ使用率閾値以上である場合、コンテナ収容計算エンジン１２０は、当該Webサーバコンテナ２１０が被攻撃コンテナであると判断する。他方、検出したCPU使用率及び／又はメモリ使用率がCPU使用率閾値及び／又はメモリ使用率閾値未満である場合、コンテナ収容計算エンジン１２０は、当該Webサーバコンテナ２１０が被攻撃コンテナでないと判断する。
【００４３】
被攻撃コンテナが検出された場合（Ｓ２０１：Ｙｅｓ）、ステップＳ２０２において、コンテナ収容計算エンジン１２０は、コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有しているか判断する。例えば、コンテナ収容計算エンジン１２０は、コンテナ配備サーバ２００に設定されているコンテナ数が所定の閾値（収容限界コンテナ数：Cmax）以下である場合、十分なリソースがあると判断してもよい。他方、被攻撃コンテナが検出されなかった場合（Ｓ２０１：Ｎｏ）、コンテナ収容計算エンジン１２０は、各Webサーバコンテナ２１０のCPU使用率及び／又はメモリ使用率を定期的に監視し続ける。
【００４４】
コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有している場合（Ｓ２０２：Ｙｅｓ）、ステップＳ２０３において、コンテナ収容計算エンジン１２０は、Webサーバコンテナ２１０を生成する。他方、コンテナ配備サーバ２００が新たなコンテナを追加するのに十分なリソースを有していない場合（Ｓ２０２：Ｎｏ）、ステップＳ２０４において、コンテナ収容計算エンジン１２０は、後述される収容ユーザ整理処理又はコンテナ削除処理を実行し、新たなコンテナを追加するためのリソースを確保する。
【００４５】
ステップＳ２０５において、コンテナ収容計算エンジン１２０は、被攻撃コンテナに収容されているユーザの一部を生成されたWebサーバコンテナ２１０に再振り分けする。例えば、コンテナ収容計算エンジン１２０は、被攻撃コンテナに収容されているユーザをランダムに２等分し、一方を被攻撃コンテナに残し、他方を追加したWebサーバコンテナ２１０に振り分けてもよい。
【００４６】
また、コンテナ収容計算エンジン１２０は、図７に示されるようなコンテナ収容ユーザ情報をコンテナ収容ユーザデータベース１１０に格納する。図示されたコンテナ収容ユーザ情報では、Webサーバコンテナ２１０を示すコンテナIDと、リソース不足が検出されたコンテナを示す被攻撃コンテナフラグとが関連付けされて格納される。また、コンテナ収容ユーザ情報は、コンテナIDに基づき複数ユーザ単位割当方式又は時間単位割当方式によるコンテナ収容ユーザ情報と連結されてもよい。なお、上述したコンテナ収容ユーザ情報では、ユーザ識別子としてIPアドレスが使用されているが、本発明はこれに限定されず、ユーザを一意的に識別可能な何れか適切な識別子が利用されてもよい。
【００４７】
Webサーバコンテナイメージ格納部１３０は、Webサーバコンテナ２１０を生成する際に使用されるイメージファイルを格納する。コンテナ収容計算エンジン１２０は、当該イメージファイルに基づきWebサーバコンテナ２１０を生成するようコンテナ配備サーバ２００に指示する。なお、格納されているイメージファイルの変更はコンテナマネージャ１００の管理者のみに許可されてもよい。
【００４８】
次に、本発明の一実施例による通信システムにおけるトラヒック制御処理を説明する。図９及び１０は、本発明の一実施例によるトラヒック制御処理を示すシーケンス図である。
【００４９】
図９に示されるように、ステップＳ３０１において、トラヒック振り分け装置５０は、ユーザからパケットを受信する。
【００５０】
ステップＳ３０２において、トラヒック振り分け装置５０は、受信したパケットからトラヒック情報を抽出し、抽出したトラヒック情報をコンテナマネージャ１００に通知する。例えば、トラヒック情報は、送信元IPアドレス、通信日時であってもよい。
【００５１】
ステップＳ３０３において、コンテナマネージャ１００は、受信したトラヒック情報に基づきコンテナ収容ユーザデータベース１１０のコンテナ収容ユーザ情報を更新する。
【００５２】
ステップＳ３０４において、コンテナ収容ユーザデータベース１１０は、コンテナマネージャ１００からの更新指示に従って、コンテナ収容ユーザ情報を更新する。例えば、コンテナ収容ユーザデータベース１１０は、送信元IPアドレスがコンテナ収容ユーザ情報のユーザ識別子に登録済みである場合、最終通信日時を更新してもよい。
【００５３】
ステップＳ３０５において、コンテナ収容計算エンジン１２０は、コンテナ収容ユーザデータベース１１０にコンテナ収容ユーザ情報を要求し、ステップＳ３０６において、要求したコンテナ収容ユーザ情報を取得する。
【００５４】
ステップＳ３０７において、送信元IPアドレスがコンテナ収容ユーザ情報のユーザ識別子に登録されているか判断する。新規ユーザであり、所定のコンテナ収容方式に従って当該ユーザに新規のコンテナを割り当てる場合、ステップＳ３０８において、コンテナ収容計算エンジン１２０は、当該ユーザに新規のコンテナを割り当てることをコンテナマネージャ１００に通知する。
【００５５】
ステップＳ３０９において、コンテナマネージャ１００は、新規のコンテナと当該コンテナに収容されるユーザのユーザ識別子とを関連付けてコンテナ収容ユーザ情報に格納する。コンテナ収容ユーザデータベース１１０は、ステップＳ３１０において、コンテナ収容ユーザ情報を更新すると、ステップＳ３１１において、コンテナ収容ユーザ情報の更新が完了したことをコンテナマネージャ１００に通知する。
【００５６】
ステップＳ３１２において、コンテナマネージャ１００は、新規のコンテナを生成するようコンテナ配備サーバ２００に要求する。ステップＳ３１３において、コンテナ配備サーバ２００は、新規のコンテナを生成し、ステップＳ３１４において、生成されたコンテナが起動する。
【００５７】
なお、ステップＳ３０８〜Ｓ３１４は、ステップＳ３０７において既存のコンテナに新規ユーザを収容する場合には実行される必要はない。
【００５８】
図１０に示されるように、ステップＳ３０７において既存のコンテナに新規ユーザを収容する場合、ステップＳ３１５において、コンテナ収容計算エンジン１２０は、新規ユーザの収容先コンテナをコンテナマネージャ１００に通知する。ステップＳ３１６において、コンテナマネージャ１００は、通知されたコンテナと当該コンテナに収容されるユーザのユーザ識別子とを関連付けてコンテナ収容ユーザ情報に格納する。コンテナ収容ユーザデータベース１１０は、ステップＳ３１７において、コンテナ収容ユーザ情報を更新すると、ステップＳ３１８において、コンテナ収容ユーザ情報の更新が完了したことをコンテナマネージャ１００に通知する。
【００５９】
ステップＳ３１９において、コンテナマネージャ１００は、当該ユーザからのトラヒックの送信先を収容先コンテナに変換するためのトラヒック変換設定をトラヒック振り分け装置５０に通知する。ステップＳ３２０において、トラヒック振り分け装置５０は、当該通知に従ってトラヒック変換設定情報を更新し、トラヒック変換設定記憶部５２は、ステップＳ３２１において、トラヒック変換設定情報を更新すると、ステップＳ３２２において、トラヒック変換設定情報の更新が完了したことをトラヒック振り分け装置５０に通知する。
【００６０】
ステップＳ３２３において、トラヒック振り分け装置５０は、トラヒック変換設定情報の更新があったことをトラヒック振り分け部５１に通知する。ステップＳ３２４において、トラヒック振り分け部５１は、更新されたトラヒック変換設定情報を読み込み、ステップＳ３２５において、更新されたトラヒック変換設定情報を取得する。
【００６１】
ステップＳ３２６において、トラヒック振り分け部５１は、ユーザから受信したトラヒックの送信先アドレスを取得したトラヒック変換設定情報に規定されたコンテナのアドレスに変換し、ステップＳ３２７において、当該トラヒックを変換後のアドレスに転送する。
【００６２】
また、一実施例では、コンテナ配備サーバ２００に配備されたコンテナの個数が所定の閾値以上になると、コンテナマネージャ１００は、各コンテナに収容可能なユーザ数の上限値までユーザが収容されるように配備されたコンテナに収容されるユーザを整理し、収容ユーザ数が０になったコンテナを削除してもよい。
【００６３】
図１１に示されるように、Webサーバコンテナ２１０を生成し続ければ、コンテナ配備サーバ２００のリソース不足が発生する。そこで、コンテナ配備サーバ２００に予めコンテナ数の上限値Cmaxを設定し、コンテナ数がCmax以上になった場合、収容可能なユーザ数に余裕のあるWebサーバコンテナ２１０にユーザを集約してもよい。さらに、集約によって収容ユーザ数が０となったWebサーバコンテナ２１０は削除されてもよい。
【００６４】
具体的には、収容ユーザ整理処理は、図１２及び図１３に示される手順により実行されてもよい。ここで、ステップＳ４０１〜Ｓ４０６は、上述したステップＳ３０１〜Ｓ３０６と同様であり、これらの説明は割愛する。
【００６５】
ステップＳ４０７において、コンテナ収容計算エンジン１２０が、コンテナ数が上限値Cmaxを超過すると判断し、収容ユーザ整理処理を開始する。ステップＳ４０８において、何れかのコンテナに収容されるユーザを他のコンテナに再振り分けすることをコンテナマネージャ１００に通知する。ステップＳ４０９において、コンテナマネージャ１００は、当該再振り分けに従ってコンテナ収容ユーザ情報を更新し、コンテナ収容ユーザデータベース１１０は、ステップＳ４１０において、コンテナ収容ユーザ情報を更新すると、ステップＳ４１１において、コンテナ収容ユーザ情報の更新が完了したことをコンテナマネージャ１００に通知する。
【００６６】
ステップＳ４１２において、コンテナマネージャ１００は、当該ユーザからのトラヒックの送信先アドレスを再振り分けしたコンテナに変換するためのトラヒック変換設定をトラヒック振り分け装置５０に通知する。ステップＳ４１３において、トラヒック振り分け装置５０は、当該通知に従ってトラヒック変換設定情報を更新し、トラヒック変換設定記憶部５２は、ステップＳ４１４において、トラヒック変換設定情報を更新する。
【００６７】
さらに、図１２に示されるように、ステップＳ４１５において、トラヒック振り分け装置５０は、トラヒック変換設定情報の更新の完了通知を受信すると、ステップＳ４１６において、当該完了通知をトラヒック振り分け部５１に転送する。
【００６８】
ステップＳ４１７において、トラヒック振り分け部５１は、更新されたトラヒック変換設定情報を読み込み、ステップＳ４１８において、更新されたトラヒック変換設定情報を取得する。
【００６９】
ステップＳ４１９において、トラヒック振り分け部５１は、ユーザから受信したトラヒックの送信先アドレスを取得したトラヒック変換設定情報に規定されたコンテナのアドレスに変換し、ステップＳ４２０において、当該トラヒックを変換後のアドレスに転送する。
【００７０】
ステップＳ４２１において、トラヒック振り分け装置５０は、コンテナマネージャ１００にトラヒック変換設定情報の更新が完了したことを通知し、ステップＳ４２２において、コンテナマネージャ１００は、収容ユーザ数が０となったコンテナを削除するようコンテナ配備サーバ２００に指示する。ステップＳ４２３において、コンテナ配備サーバ２００は、指示されたコンテナを削除し、ステップＳ４２４において、当該コンテナが削除される。
【００７１】
また、一実施例では、コンテナマネージャ１００は、ユーザと当該ユーザを収容するコンテナとの間の通信が一定時間以上行われなかったとき、当該コンテナを削除してもよい。図１４に示されるように、Webサーバコンテナにアクセスするユーザのトラヒックが一定時間以上観測されない場合、コンテナマネージャ１００は、ユーザがWebサーバのサービスをすでに利用していないとみなし、コンテナ収容ユーザデータベース１１０から当該ユーザに関する情報を削除してもよい。
【００７２】
具体的には、コンテナ削除処理は、図１５に示される手順により実行されてもよい。ここで、ステップＳ５０１〜Ｓ５０６は、上述したステップＳ３０１〜Ｓ３０６と同様であり、これらの説明は割愛する。
【００７３】
図１５に示されるように、ステップＳ５０７において、コンテナ収容計算エンジン１２０は、収容ユーザ数が０であるコンテナがあると判断し、コンテナ削除処理を開始する。ステップＳ５０８において、コンテナ収容計算エンジン１２０は、削除対象のコンテナをコンテナマネージャ１００に通知する。
【００７４】
ステップＳ５０９において、コンテナマネージャ１００は、当該通知に従ってコンテナ収容ユーザ情報を更新し、コンテナ収容ユーザデータベース１１０は、ステップＳ５１０において、コンテナ収容ユーザ情報を更新すると、ステップＳ５１１において、コンテナ収容ユーザ情報の更新が完了したことをコンテナマネージャ１００に通知する。
【００７５】
ステップＳ５１２において、コンテナマネージャ１００は、コンテナを削除するようコンテナ配備サーバ２００に指示する。ステップＳ５１３において、コンテナ配備サーバ２００は、指示されたコンテナを削除し、ステップＳ５１４において、当該コンテナが削除される。
【００７６】
なお、上述した通信システム１０におけるトラヒック振り分け装置５０、コンテナマネージャ１００、コンテナ配備サーバ２００及び共有ストレージサーバ３００の各機能部及び各ステップは、コンピュータのメモリ装置に記憶されたプログラムをプロセッサが実行することによって実現されてもよい。
【００７７】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７８】
１０  通信システム
５０  トラヒック振り分け装置
１００  コンテナマネージャ
２００  コンテナ配備サーバ
３００  共有ストレージサーバ
【図１】
2018028764.tif 000003
【図２】
2018028764.tif 000004
【図３】
2018028764.tif 000005
【図４】
2018028764.tif 000006
【図５】
2018028764.tif 000007
【図６】
2018028764.tif 000008
【図７】
2018028764.tif 000009
【図８】
2018028764.tif 000010
【図９】
2018028764.tif 000011
【図１０】
2018028764.tif 000012
【図１１】
2018028764.tif 000013
【図１２】
2018028764.tif 000014
【図１３】
2018028764.tif 000015
【図１４】
2018028764.tif 000016
【図１５】
2018028764.tif 000017