(57)【要約】【課題】ハードウェアのリソース、サービスの更新、データのセキュリティを、テナント毎に独立したサービスとして保証し得る管理装置及びプログラムを提供する。【解決手段】マルチテナントサービス用の管理装置は、複数テナントのテナント毎のジョブ要求に応じて構築され、ジョブ要求を処理するテナント毎のリクエスト処理部１６２〜１６４と、リクエスト処理部１６２〜１６４毎にユーザプール１６６のユーザを割り当てて、ユーザにテナント毎のデータのアクセス権限を付与し、かつ、テナント毎の更新要求に対してリクエスト処理部１６２〜１６４毎にバージョンを更新するマネージャ部１６１を備える。【選択図】図２
2017004235.tif 000002
【特許請求の範囲】
【請求項１】
複数テナントのテナント毎のジョブ要求に応じて構築され、前記ジョブ要求を処理するテナント毎のリクエスト処理部と、
前記リクエスト処理部毎にユーザを割り当てて前記ユーザにテナント毎のデータのアクセス権限を付与し、かつ、テナント毎の更新要求に対して前記リクエスト処理部毎にバージョンを更新するマネージャ部と、
を備える管理装置。
【請求項２】
前記マネージャ部は、テナント毎の前記更新要求に対して前記リクエスト処理部毎にバージョンを更新し、更新後のリクエスト処理部に対応する仮想マシンイメージファイルを記憶部に記憶する請求項１に記載の管理装置。
【請求項３】
コンピュータに、
複数テナントのテナント毎のジョブ要求に応じてテナント毎のリクエスト処理部を構築させ、ジョブ要求を処理させるステップと、
前記リクエスト処理部毎にユーザを割り当てて前記ユーザにテナント毎のデータのアクセス権限を付与するステップと、
テナント毎の更新要求に対して前記リクエスト処理部毎にバージョンを更新するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置及びプログラムに関する。  
【背景技術】
【０００２】
近年、マルチテナントサービスが開発されている。マルチテナントサービスとは、SaaS（Software as a Service：ソフトウェアを通信ネットワークを通じて提供し、利用者が必要なものを必要なときに呼び出して使うような利用形態のこと）やクラウドコンピューティングなどで、機材やソフトウェア、データベースなどを複数の顧客企業で共有する事業モデルをいう。マルチテナントサービスは、顧客ごとに専用のコンピュータやソフトウェアなどを用意するシングルテナントに比べて、安価にサービスを提供できる利点がある。サービスの内容によって共有のレベルには様々な段階があるが、一例として、ハードウェアのみを共有して仮想マシン上で顧客ごとに異なるソフトウェアを用意する方式がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２３８６３７号公報
【特許文献２】特開２０１３−１２０２８号公報
【特許文献３】特開２０１１−１７０７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチテナントサービスでは、複数の顧客企業（テナント）との契約の下でサービスを提供するため、特に、特定テナントにおけるハードウェアのリソース、サービスの更新、データのセキュリティを、テナント毎に独立したサービスとして保証する仕組みを提供する必要がある。
【０００５】
本発明の目的は、ハードウェアのリソース、サービスの更新、データのセキュリティを、テナント毎に独立したサービスとして保証し得る管理装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載の発明は、複数テナントのテナント毎のジョブ要求に応じて構築され、前記ジョブ要求を処理するテナント毎のリクエスト処理部と、前記リクエスト処理部毎にユーザを割り当てて前記ユーザにテナント毎のデータのアクセス権限を付与し、かつ、テナント毎の更新要求に対して前記リクエスト処理部毎にバージョンを更新するマネージャ部とを備える管理装置である。
【０００７】
請求項２に記載の発明は、前記マネージャ部は、テナント毎の前記更新要求に対して前記リクエスト処理部毎にバージョンを更新し、更新後のリクエスト処理部に対応する仮想マシンイメージファイルを記憶部に記憶する請求項１に記載の管理装置である。
【０００８】
請求項３に記載の発明は、コンピュータに、複数テナントのテナント毎のジョブ要求に応じてテナント毎のリクエスト処理部を構築させ、ジョブ要求を処理させるステップと、前記リクエスト処理部毎にユーザを割り当てて前記ユーザにテナント毎のデータのアクセス権限を付与するステップと、テナント毎の更新要求に対して前記リクエスト処理部毎にバージョンを更新するステップとを実行させるためのプログラムである。
【発明の効果】
【０００９】
請求項１、３に記載の発明によれば、テナント毎に独立してハードウェアのリソース、サービス更新やセキュリティを提供できる。
【００１０】
請求項２に記載の発明によれば、さらに、テナント毎のサービス更新要求を効率的に処理できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態のシステム構成図である。
【図２】中継サーバ（ＣＳＢ）の機能ブロック図である。
【図３】実施形態の処理フローチャート（その１）である。
【図４】実施形態の処理フローチャート（その２）である。
【図５】サービス更新処理の説明図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づき本発明の実施形態について説明する。
【００１３】
図１は、本実施形態におけるマルチテナントサービスのシステム構成図である。「マルチテナントサービス」とは、既述したように、クラウドコンピューティング等で、機材やソフトウェア、データベースなどを複数の顧客企業で共有する事業モデルをいう。テナントＡ１０、テナントＢ１２、テナントＣ１４の複数のテナントと、マルチテナントサービス用の管理装置としての中継サーバ（ＣＳＢ：Cloud Service Bridgeクラウドサービスブリッジ）１６と、クラウドａ１８、クラウドｂ２０の複数のクラウドがインターネット等により相互に接続される。テナントＡ１０は、コンピュータやタブレット端末、スマートフォン、画像形成装置等から構成され、他のテナントＢ１２、テナントＣ１４についても同様である。画像形成装置は、プリント、スキャン、コピー、ＦＡＸ等の複数の機能を有する複合機であってもよい。クラウドａ１８は、サーバコンピュータから構成され、文書や写真、音声等の各種データを格納するサービス等を提供する。クラウドｂ２０についても同様である。クラウドａ１８及びクラウドｂ２０は、同一内容のサービスを提供してもよく、異なる内容のサービスを提供してもよい。
【００１４】
中継サーバ１６は、複数のテナントから受信したデータを、複数のクラウドに転送することによりデータの中継を行う。複数のクラウドは、それぞれクラウド毎に異なるＡＰＩ（Application Programming Interface）を用いており、各テナントが各クラウドのサービスを利用する場合には、各クラウドのＡＰＩを予め知らなければならない。中継サーバ１６は、各クラウドのＡＰＩを隠蔽して統一したＡＰＩのみを各テナントに提供することで、各テナントがクラウド毎に異なるＡＰＩを知らなくても、複数のクラウドのサービスを利用可能とする。
【００１５】
中継サーバ１６は、ＣＰＵ、メモリ、通信インタフェース（Ｉ／Ｆ）及び記憶装置を備える。
【００１６】
ＣＰＵは、メモリあるいは記憶装置に記憶された処理プログラムに基づいて所定の処理を実行し、複数のテナントに対してクラウドサービスを提供する。すなわち、テナントＡ１０からの要求（ジョブ要求）に対して該当するクラウド（例えばクラウドａ１８）にアクセスし、要求された処理を実行し、その結果をテナントＡ１０に返信する。また、テナントＢ１２からの要求（ジョブ要求）に対しても該当するクラウド（例えばクラウドｂ２０）にアクセスし、要求された処理を実行し、その結果をテナントＢ１２に返信する。テナントＡ１０及びテナントＢは、同一クラウド（例えばクラウドａ１８）に対してジョブ要求を行う場合もあり得る。また、テナントＡ１０、テナントＢ１２、テナントＣ１４は、個別にサービスの更新要求、具体的にはソフトウェアのバージョンアップを要求する場合もあり得る。ＣＰＵは、テナント毎のジョブ要求やテナント毎の更新要求に対し、テナント毎にソフトウェアで仮想的にモジュールを構築してテナント毎に処理する。
【００１７】
通信Ｉ／Ｆは、ＣＰＵによる処理に基づいて、クラウド毎に異なるＡＰＩを処理することにより、テナントとクラウドの間のデータを中継する。
【００１８】
記憶装置は、複数のテナントに共通する共通データと、テナント毎の固有データを記憶する。
【００１９】
以下、中継サーバ１６の処理内容について詳しく説明する。
【００２０】
図２は、中継サーバ１６の機能ブロック図である。中継サーバ１６は、機能ブロックとして、リクエストマネージャ部１６１、リクエスト処理部１６２〜１６４、リクエスト処理プール１６５、ユーザプール１６６、及びデータベース１６７を備える。
【００２１】
リクエストマネージャ部１６１は、テナント共通のマネージャ部であり、複数のテナントからのジョブリクエストを受け付ける。リクエストマネージャ部１６１は、リクエスト処理部１６２〜１６４のインスタンスを管理する。インスタンスについては後述する。
【００２２】
リクエスト処理部１６２〜１６４は、テナント毎に設けられ、テナントＡ用リクエスト処理部１６２，テナントＢ用リクエスト処理部１６３、テナントＣ用リクエスト処理部１６４から構成される。リクエスト処理部１６２〜１６４は、各テナントからのジョブリクエストをテナント毎に処理する。すなわち、テナントＡ１０からのジョブリクエストをテナントＡ用リクエスト処理部１６２で処理し，テナントＢ１２からのジョブリクエストをテナントＢ用リクエスト処理部１６３で処理し、テナントＣ１４からのジョブリクエストをテナントＣ用リクエスト処理部１６４で処理する。
【００２３】
リクエストマネージャ部１６１及びリクエスト処理部１６２〜１６４は、仮想マシン（ＶＭ）インスタンスであり、物理的な中継サーバ１６上で起動され稼動状態にある、ソフトウェアによって構築された仮想的なモジュールである。その実体は、中継サーバ１６のメモリ上に展開されたプログラム及びデータである。テナント毎にリクエスト処理部１６２〜１６４とインスタンスを分けて、各インスタンスのリソースを独立させることで、特定のテナントがリソースを占有する事態を防止し得る。
【００２４】
リクエスト処理プール１６５は、複数のバージョンのリクエスト処理部の仮想マシンイメージを記憶する。例えば、図に示すように、リクエスト処理プール１６５は、バージョン１．０．０、バージョン１．０．１、バージョン１．１．０の３つのバージョンのリクエスト処理部の仮想マシンイメージを記憶する。リクエスト処理部のモジュールは、テナントＡ用リクエスト処理部１６２、テナントＢ用リクエスト処理部１６３、テナントＣ用リクエスト処理部１６４と別個に存在しており、それぞれのバージョンもテナント毎に別個に管理され、バージョンの更新もテナント毎に実行される。
【００２５】
ユーザプール１６６は、データベース１６７にアクセスする際のアクセス権限を有するユーザを記憶する。リクエスト処理部１６２〜１６４がジョブリクエストを処理する際には、テナント共通データに加えてテナント毎の固有データを参照する必要があり、このとき、テナントＡ用リクエスト処理部１６２はテナントＡ用固有データにアクセスできてもテナントＢ用固有データ及びテナントＣ用固有データにアクセスしてはならず、テナントＢ用リクエスト処理部１６３はテナントＢ用固有データにアクセスできてもテナントＡ用固有データ及びテナントＣ用固有データにアクセスしてはならず、テナントＣ用リクエスト処理部１６４はテナントＣ用固有データにアクセスできてもテナントＡ用固有データ及びテナントＢ用固有データにアクセスしてはならない。そこで、リクエスト処理部１６２〜１６４がデータベース１６７にアクセスする際に、アクセス権限を有するユーザを動的に割り当てる。ユーザプール１６６には、例えばユーザＸ，ユーザＹ、ユーザＺが記憶されており、テナントＣ用リクエスト処理部１６４がジョブリクエストを処理する際には、テナントＣ用リクエスト処理部１６４のユーザとしてユーザＸを動的に割り当て、このユーザＸに対してデータベース１６７のテナントＣ用固有データにアクセスする権限を付与する。
【００２６】
より詳細には、ユーザプール１６６に記憶されたユーザは、データベース１６７にアクセスする権限だけを有するユーザであり、そのままではデータベース１６７のデータに実際にアクセスすることはできない。ユーザプール１６６に記憶されたユーザは、リクエスト処理部１６２〜１６４のインタンス化時に、該当するテナントの固有データへのアクセス権限が付与された上で、リクエスト処理部１６２〜１６４に割り当てられる。リクエスト処理部１６２〜１６４は、割り当てられたユーザを用いて該当テナントの固有データにアクセスし、必要なデータを取得する。
【００２７】
データベース１６７は、テナント共通データ及びテナント毎の固有データを記憶する。テナント共通データ及びテナント毎の固有データは、サービスの管理上必要なデータ及び仮想マシンインスタンスに関わるデータである。リクエスト処理部１６２〜１６４からは、割り当てられたユーザを用いて、テナント共通のテーブルからテナント毎のデータだけが見えるようにしたビューだけにアクセスできる。すなわち、リクエスト処理部１６２にユーザＸが割り当てられ、ユーザＸにはテナントＡ用固有データにアクセスする権限が付与されているとすると、リクエスト処理部１６２は、ユーザＸによりデータベース１６７にアクセスしてもテナントＡ用固有データしか参照することができず、テナントＢ及びテナントＣの固有データは参照できない。リクエスト処理部１６３にユーザＹが割り当てられ、ユーザＹにはテナントＢ用固有データにアクセスする権限が付与されているとすると、リクエスト処理部１６３は、ユーザＹによりデータベース１６７にアクセスしてもテナントＢ用固有データしか参照することができず、テナントＡ用及びテナントＣ用の固有データは参照できない。リクエスト処理部１６４にユーザＺが割り当てられ、ユーザＺにはテナントＣ用固有データにアクセスする権限が付与されているとすると、リクエスト処理部１６４は、ユーザＺによりデータベース１６７にアクセスしてもテナントＣ用固有データしか参照することができず、テナントＡ用及びテナントＢ用の固有データは参照できない。
【００２８】
図２において、中継サーバ１６がテナントＣ１４からジョブ要求（ジョブリクエスト）を入力した場合、リクエストマネージャ部１６１がこのジョブリクエストを受け付け、複数のテナントのうちのどのテナントからの要求であるかを確定する。この場合、テナントＣ１４からのジョブリクエストであるので、データベース１６７のうちテナントＣ用固有データにアクセスできるユーザとしてユーザＸを割り当て、ユーザＸの権限でデータベース１６７にアクセスしてテナントＣ用固有データを参照し、テナントＣ用リクエスト処理部１６４をインスタンス化する。また、テナントＣのバージョン情報があればそれを参照し、リクエスト処理プール１６５にある各バージョンから該当するバージョンを読み出してインスタンス化する。テナントＣ用リクエスト処理部１６４をインスタンス化すると、テナントＣ用リクエスト処理部１６４でテナントＣ１４からのジョブリクエストを処理し、その結果をテナントＣ１４に返信する。
【００２９】
図３は、本実施形態におけるジョブリクエスト処理のフローチャートであり、テナント１０〜１４、リクエストマネージャ部１６１、リクエスト処理部１６２〜１６４での処理の流れである。
【００３０】
テナント１０〜１４からジョブリクエストを入力すると、リクエストマネージャ部１６１は、ジョブリクエストに含まれるテナント識別情報に基づいてテナントを確定する（Ｓ１０１）。例えば、テナントＣ１４からのリクエストであると確定する。
【００３１】
次に、リクエストマネージャ部１６１は、ユーザプール１６６からデータベース（ＤＢ）にアクセスするためのユーザを読み出し、読み出したユーザに対し、Ｓ１０１で確定したテナントの固有データを参照する権限を付与する（Ｓ１０２）。
【００３２】
次に、リクエストマネージャ部１６１は、リクエスト処理プール１６５から、Ｓ１０１で確定したテナントに応じたバージョンの仮想マシンイメージを取得し、テナントＣ用リクエスト処理部１６４をインスタンス化する。
【００３３】
テナントＣ用リクエスト処理部１６４をインスタンス化、つまりソフトウェアによって仮想的なモジュールを構築すると、リクエストマネージャ部１６１は、テナントＣ用リクエスト処理部１６４にジョブリクエストを送付する。
【００３４】
リクエスト処理部１６４は、リクエストマネージャ部１６１からのジョブリクエストを処理し（Ｓ１０４）、該当するクラウドとデータを送受し、ジョブリクエスト結果をテナントに通知する。
【００３５】
図４は、本実施形態におけるサービス更新処理のフローチャートであり、システム管理者及びリクエストマネージャ部１６１での処理の流れである。
【００３６】
システム管理者は、テナントからの要求に基づき、リクエスト処理部１６２〜１６４のモジュール更新リクエストをリクエストマネージャ部１６１に送付する。
【００３７】
リクエストマネージャ部１６１は、リクエスト処理プール１６５から該当するバージョンの仮想マシンイメージを取得してインスタンス化する（Ｓ２０１）。
【００３８】
次に、リクエストマネージャ部１６１は、インスタンス化したリクエスト処理部に対して、モジュール更新を実行する（Ｓ２０２）。例えば、インスタンス化したリクエスト処理部のバージョンがVer.1.0.0であり、モジュール更新によりバージョンアップしてVer.2.0.0とする。
【００３９】
次に、リクエストマネージャ部１６１は、モジュール更新したリクエスト処理部を仮想マシンイメージに戻し、リクエスト処理プール１６５に記憶する。仮想マシンイメージ化は、リクエスト処理部のインスタンス化の逆操作である。モジュール更新したリクエスト処理部を仮想マシンイメージに戻してリクエスト処理プール１６５に記憶するのは、他のテナントから同様の更新要求があった場合に、リクエスト処理プール１６５に記憶された仮想マシンイメージを取得してインスタンス化することで容易に対応できるようにするためである。
【００４０】
次に、リクエストマネージャ部１６１は、モジュール更新した仮想マシンイメージをリクエスト処理プール１６５から取得し、モジュール更新の要求元のテナント用リクエスト処理部をインスタンス化する（Ｓ２０４）。
【００４１】
次に、リクエストマネージャ部１６１は、インスタンス化したテナント用リクエスト処理部と現在の該当テナント用リクエスト処理部を交換する（Ｓ２０５）。該当テナントのリクエスト処理部の更新処理が完了すると、要求元のテナントに要求リクエスト完了通知を送付する。
【００４２】
図５は、サービス更新処理の模式的説明図である。テナントＣ用リクエスト処理部１６４の現在のバージョンがVer.1.0.0であり、テナントＣ１４からバージョンアップが要求され、Ver.2.0.0にバージョンアップする場合の例である。
【００４３】
リクエストマネージャ部１６１により、リクエスト処理プール１６５に記憶されたVer1.0.0の仮想マシンイメージを取得し、テナントＣ用リクエスト処理部１６４をインスタンス化する。このときのバージョンはVer1.0.0である。
【００４４】
そして、インスタンス化されたテナントＣ用リクエスト処理部１６４に対して更新処理を実行し、バージョンをVer2.0.0とする。更新処理は、特定機能の追加やバグの修正などである。
【００４５】
更新処理をこれで終了してもよいが、仮に、テナントＡ１０から同様なバージョンアップ要求がその後に生じた場合、再びテナント用リクエスト処理部１６２をインスタンス化し、これに対して更新処理を実行しなければならず非効率である。そこで、モジュール更新されたVer.2.0.0のリクエスト処理部１６４を一旦、仮想マシンイメージに変換してリクエスト処理プール１６５に記憶する。これにより、リクエスト処理プール１６５には、Ver1.0.0、Ver1.0.1、Ver1.1.0に加えて、新たにVer2.0.0が追加記憶されることになる。なお、仮想マシンイメージへの変換は、P2V （Physical to Virtual）として知られており、リクエスト処理部モジュールのデータを吸い上げて、仮想マシンのためのイメージファイルを作成することを意味する。
【００４６】
最後に、リクエストマネージャ部１６１は、テナントＣからの更新要求に応じ、リクエスト処理プール１６５に記憶されているVer2.0.0の仮想マシンイメージを取得してインスタンス化し、現在のインスタンスと交換する。
【００４７】
ここで、リクエスト処理プール１６５に記憶されている仮想マシンイメージから該当するバージョンの仮想マシンイメージを取得してインスタンス化する際には、既述したように、要求元のテナントを確定し、データベース１６７にアクセスするためのユーザを割り当ててテナントＣ用の固有データを参照できる権限を付与する。従って、テナントＣからバージョンアップが要求された場合、テナントＣ用リクエスト処理部１６４のみをバージョンアップし、他のテナント用リクエスト処理部１６２，１６３は現在のバージョンのまま維持され、かつ、バージョンアップの際に他のテナントのデータが漏れることもない。
【００４８】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、種々の変更が可能である。
【００４９】
例えば、本実施形態では、図４に示すように、システム管理者からリクエストマネージャ部１６１に対して更新リクエストを送付しているが、リクエストマネージャ部１６１がシステム管理者の端末にテナント毎のリクエスト処理部のバージョン情報の一覧を表示し、この一覧を視認しつつシステム管理者が更新要求をリクエストマネージャ部１６１に送付するようにしてもよい。例えば、システム管理者の端末に、
テナントＡ：Ver1.0.0
テナントＢ：Ver1.0.1
テナントＣ：Ver1.1.0
などと表示し、システム管理者がテナントＣからバージョンアップの要求を受けると、端末を操作してテナントＣのバージョンアップをリクエストマネージャ部１６１に送付する。バージョンアップが完了すると、システム管理者の端末には、
テナントＡ：Ver1.0.0
テナントＢ：Ver1.0.1
テナントＣ：Ver2.0.0
と表示される。
【００５０】
また、本実施形態では、テナントＡ１０、テナントＢ１２，テナントＣ１４に対応してテナント毎にリクエスト処理部１６２〜１６４をインスタンス化しているが、必要に応じてこれらのインスタンスを増減してもよい。インスタンスを増減することで、急激な高負荷状態に対応でき、負荷に応じたリソース配分が可能となる。但し、特定テナントがリソースを占有する事態を防止するために、増減の上限を設定するのが好ましい。
【符号の説明】
【００５１】
１０  テナントＡ、１２  テナントＢ、１４  テナントＣ、１６  中継サーバ（ＣＳＢ）、１８  クラウドａ、２０  クラウドｂ、１６１  リクエストマネージャ部、１６２  リクエスト処理部（テナントＡ用）、１６３  リクエスト処理部（テナントＢ用）、１６４  リクエスト処理部（テナントＣ用）、１６５  リクエスト処理プール、１６６  ユーザプール、１６７  データベース。
【図１】
2017004235.tif 000003
【図２】
2017004235.tif 000004
【図３】
2017004235.tif 000005
【図４】
2017004235.tif 000006
【図５】
2017004235.tif 000007