(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】コンテナベース環境のための統合型認証
(51)【国際特許分類】
G06F 21/45 20130101AFI20231220BHJP
G06F 9/455 20180101ALI20231220BHJP
G06F 21/33 20130101ALI20231220BHJP
【FI】
G06F21/45
G06F9/455 150
G06F21/33
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023537584
(86)(22)【出願日】2021-10-20
(85)【翻訳文提出日】2023-06-20
(86)【国際出願番号】 CN2021124865
(87)【国際公開番号】W WO2022134792
(87)【国際公開日】2022-06-30
(32)【優先日】2020-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ラジャデヴァ、アヒラン
(72)【発明者】
【氏名】チャクラ、アル
(72)【発明者】
【氏名】カシミス、コンスタンティノス
(72)【発明者】
【氏名】マイヤー、クリストファー
(57)【要約】
コンテナベース環境のための統合型認証を行うための技術が、本明細書で説明される。一態様は、ホストシステム上のハイパーバイザによってホストされるコンテナ環境内のコンテナ内で実行されているアプリケーションによって、コンテナ環境内に配置されている認証モジュールにアクセスすることを含む。別の態様は、認証モジュールへのアクセスに基づいて、コンテナ環境内の認証ハンドラを呼び出すことを含む。別の態様は、認証ハンドラからハイパーバイザに制御を渡すことを含む。別の態様は、ハイパーバイザによって、ホストシステムのセキュリティデータベースからセキュリティアーティファクトを取得することを含む。別の態様は、取得したセキュリティアーティファクトを、認証ハンドラを介してアプリケーションに提供することを含む。別の態様は、セキュリティアーティファクトを使用して、アプリケーションによって認証操作を実行することを含む。
【特許請求の範囲】
【請求項1】
ホストシステム上のハイパーバイザによってホストされるコンテナ環境内のコンテナ内で実行されているアプリケーションによって、当該コンテナ環境内に配置されている認証モジュールにアクセスすることと、
前記認証モジュールへの前記アクセスに基づき、前記コンテナ環境内の認証ハンドラを呼び出すことと、
前記認証ハンドラから前記ハイパーバイザに制御を渡すことと、
前記ハイパーバイザによって、前記ホストシステムのセキュリティデータベースからセキュリティアーティファクトを取得することと、
取得した前記セキュリティアーティファクトを、前記認証ハンドラを介して前記アプリケーションに提供することと、
前記セキュリティアーティファクトを使用して、前記アプリケーションによって認証操作を実行することと、
を含む、コンピュータ実装方法。
【請求項2】
前記認証モジュールは、前記認証操作を実行するために前記アプリケーションによってアクセスされる認証ファイルを含み、前記コンテナ環境における当該認証ファイルの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項1に記載の方法。
【請求項3】
前記認証ハンドラは、前記認証ファイルのファイル拡張子に基づいて呼び出される、請求項2に記載の方法。
【請求項4】
前記認証モジュールは、前記コンテナ環境のゲストオペレーティングシステム(OS)にマウントされる認証ファイルシステムを含み、当該認証ファイルシステムは、前記認証操作を実行するために前記アプリケーションによってアクセスされるプレースホルダファイルを含む、請求項1に記載の方法。
【請求項5】
前記プレースホルダファイルは、前記ゲストOSの通常のファイルシステム内のシンボリックリンクに基づいてアクセスされ、当該シンボリックリンクの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項4に記載の方法。
【請求項6】
前記認証ハンドラは、前記認証ファイルシステム内に配置される、請求項4に記載の方法。
【請求項7】
取得した前記セキュリティアーティファクトを前記認証ハンドラを介して前記アプリケーションに提供することは、当該認証ハンドラによって当該セキュリティアーティファクトを、前記セキュリティデータベースへの格納に使用される第1のフォーマットから、当該アプリケーションで使用するために必要な第2のフォーマットに変換することを含む、請求項1に記載の方法。
【請求項8】
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つ以上のプロセッサと、を備えるシステムであって、当該コンピュータ可読命令は当該1つ以上のプロセッサを制御して、
ホストシステム上のハイパーバイザによってホストされるコンテナ環境内のコンテナ内で実行されているアプリケーションによって、当該コンテナ環境内に配置されている認証モジュールにアクセスすることと、
前記認証モジュールへの前記アクセスに基づき、前記コンテナ環境内の認証ハンドラを呼び出すことと、
前記認証ハンドラから前記ハイパーバイザに制御を渡すことと、
前記ハイパーバイザによって、前記ホストシステムのセキュリティデータベースからセキュリティアーティファクトを取得することと、
取得した前記セキュリティアーティファクトを、前記認証ハンドラを介して前記アプリケーションに提供することと、
前記セキュリティアーティファクトを使用して、前記アプリケーションによって認証操作を実行することと、
を含む動作を実行させる、システム。
【請求項9】
前記認証モジュールは、前記認証操作を実行するために前記アプリケーションによってアクセスされる認証ファイルを含み、前記コンテナ環境における当該認証ファイルの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項8に記載のシステム。
【請求項10】
前記認証ハンドラは、前記認証ファイルのファイル拡張子に基づいて呼び出される、請求項9に記載のシステム。
【請求項11】
前記認証モジュールは、前記コンテナ環境のゲストオペレーティングシステム(OS)にマウントされる認証ファイルシステムを含み、当該認証ファイルシステムは、前記認証操作を実行するために前記アプリケーションによってアクセスされるプレースホルダファイルを含む、請求項8に記載のシステム。
【請求項12】
前記プレースホルダファイルは、前記ゲストOSの通常のファイルシステム内のシンボリックリンクに基づいてアクセスされ、当該シンボリックリンクの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項11に記載のシステム。
【請求項13】
前記認証ハンドラは、前記認証ファイルシステム内に配置される、請求項11に記載のシステム。
【請求項14】
取得した前記セキュリティアーティファクトを前記認証ハンドラを介して前記アプリケーションに提供することは、当該認証ハンドラによって当該セキュリティアーティファクトを、前記セキュリティデータベースへの格納に使用される第1のフォーマットから、当該アプリケーションで使用するために必要な第2のフォーマットに変換することを含む、請求項8に記載のシステム。
【請求項15】
プログラム命令を実装したコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、当該プログラム命令は1つ以上のプロセッサによって実行可能であり、当該1つ以上のプロセッサに、
ホストシステム上のハイパーバイザによってホストされるコンテナ環境内のコンテナ内で実行されているアプリケーションによって、当該コンテナ環境内に配置されている認証モジュールにアクセスすることと、
前記認証モジュールへの前記アクセスに基づき、前記コンテナ環境内の認証ハンドラを呼び出すことと、
前記認証ハンドラから前記ハイパーバイザに制御を渡すことと、
前記ハイパーバイザによって、前記ホストシステムのセキュリティデータベースからセキュリティアーティファクトを取得することと、
取得した前記セキュリティアーティファクトを、前記認証ハンドラを介して前記アプリケーションに提供することと、
前記セキュリティアーティファクトを使用して、前記アプリケーションによって認証操作を実行することと、
を含む動作を実行させる、コンピュータプログラム製品。
【請求項16】
前記認証モジュールは、前記認証操作を実行するために前記アプリケーションによってアクセスされる認証ファイルを含み、前記コンテナ環境における当該認証ファイルの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記認証ハンドラは、前記認証ファイルのファイル拡張子に基づいて呼び出される、請求項16に記載のコンピュータプログラム製品。
【請求項18】
前記認証モジュールは、前記コンテナ環境のゲストオペレーティングシステム(OS)にマウントされる認証ファイルシステムを含み、当該認証ファイルシステムは、前記認証操作を実行するために前記アプリケーションによってアクセスされるプレースホルダファイルを含む、請求項15に記載のコンピュータプログラム製品。
【請求項19】
前記プレースホルダファイルは、前記ゲストOSの通常のファイルシステム内のシンボリックリンクに基づいてアクセスされ、当該シンボリックリンクの場所は、前記セキュリティアーティファクトのタイプに対応する、請求項18に記載のコンピュータプログラム製品。
【請求項20】
前記認証ハンドラは、前記認証ファイルシステム内に配置される、請求項18に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータシステムに関し、より具体的には、コンテナベース環境(container-based environment)のための統合型認証(integrated authentication)に関する。
【背景技術】
【0002】
クラウドコンピューティング環境では、コンピューティングは製品ではなくサービスとして提供される。これにより、共有のリソース、ソフトウェア、および情報が、インターネットなどのネットワークを介した従量制サービス(metered service)としてコンピュータおよび他のデバイスに提供される。このような環境において、計算、ソフトウェア、データアクセス、およびストレージサービスがユーザに提供され、ユーザは、サービスを提供するシステムの物理的な場所や構成に関する知識を必要としない。
【0003】
仮想化コンピュータ環境の一部である物理コンピュータは、ホストと呼ばれることがある。クラウドコンピューティング環境の物理的なクラウドコンピューティングノード内に実装されるような仮想化コンピュータ環境は、ホストオペレーティングシステム(OS)および1つ以上のゲストOSを含むことができる。ホストオペレーティングシステムは、物理コンピュータ上で実行される仮想化コンテナ環境のセットをサポートする共通ベース部分(common base portion)を含むことができる。共通ベース部分は、ハイパーバイザ(hypervisor)と呼ばれる場合もある。各コンテナ環境は、ゲストオペレーティングシステムを実行することができ、複数のコンテナをサポートすることができる。各コンテナは、1つ以上のアプリケーションをサポートすることができる。
【発明の概要】
【0004】
本発明の実施形態は、コンテナベース環境のための統合型認証を行うことに関する。非限定的な一例としてのコンピュータ実装方法は、ホストシステム上のハイパーバイザによってホストされるコンテナ環境内のコンテナ内で実行されているアプリケーションによって、コンテナ環境内に配置されている認証モジュールにアクセスすることを含む。方法はまた、認証モジュールへのアクセスに基づいて、コンテナ環境内の認証ハンドラを呼び出すことを含む。方法はまた、認証ハンドラからハイパーバイザに制御を渡すことを含む。方法はまた、ハイパーバイザによって、ホストシステムのセキュリティデータベースからセキュリティアーティファクトを取得することを含む。方法はまた、取得したセキュリティアーティファクトを、認証ハンドラを介してアプリケーションに提供することを含む。方法はまた、セキュリティアーティファクトを使用して、アプリケーションによって認証操作を実行することを含む。
【0005】
本発明の他の実施形態は、コンピュータシステムおよびコンピュータプログラム製品において、上述の方法の特徴を実装する。
【0006】
さらなる技術的特徴および利点が、本発明の技術によって実現される。本発明の実施形態および態様は、本明細書において詳細に説明され、特許請求される主題の一部とみなされる。より良い理解のために、詳細な説明および図面を参照されたい。
【図面の簡単な説明】
【0007】
本明細書に記載の排他的権利の詳細は、本明細書の末尾の特許請求の範囲において具体的に指摘され、明確に請求される。本発明の実施形態の上述および他の特徴および利点は、添付図面とともに以下の詳細な説明を読むことで明らかになる。
【0008】
【
図1A】本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うためのシステムのコンポーネントを示すブロック図である。
【
図1B】本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うためのシステムのコンポーネントを示すブロック図である。
【
図2A】本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うためのプロセスを示すフローチャートである。
【
図2B】本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うためのプロセスを示すフローチャートである。
【
図3】本発明の一実施形態に係るクラウドコンピューティング環境を示す図である。
【
図4】本発明の一実施形態に係る抽象化モデルレイヤを示す図である。
【
図5】コンテナベース環境のための統合型認証の1つ以上の実施形態において使用するための例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0009】
本発明の1つ以上の実施形態は、コンテナベース環境のために統合型認証を提供する。仮想化コンテナ環境において認証操作を実行するためには、公開および非公開の証明書セキュリティアーティファクト(certificate security artifact)(例えば、証明書もしくは秘密鍵またはその両方)の複製が必要とされる場合がある。複製されたセキュリティアーティファクトは、ゲストOS内部の周知のディレクトリおよびファイル位置にコピーすることができ、これにより、仮想化コンテナ環境内のゲストOSおよび関連するコンテナは、これらのセキュリティアーティファクトを証明書の検証および認証に使用することができる。仮想環境の提供中に、任意の証明書のコピーを仮想環境に投入することができ、仮想環境はこれらの証明書を適切なディレクトリ位置に配置することができる。しかしながら、ゲストOSの複数のインスタンスを含むクラウドシステムの場合、セキュリティアーティファクトは、各インスタンスに別々にコピーされる場合がある。この場合、コピーされたセキュリティアーティファクトがクラウドシステムのオペレーションを通じて最新であることを保証するために、コピーされたセキュリティアーティファクトのアクティブ管理が必要な場合がある。このようなセキュリティアーティファクトの管理は、特に、不変のアプライアンス形態(immutable appliance form)の仮想化コンテナ環境の場合、比較的複雑となる可能性がある。
【0010】
コンテナベース環境のための統合型認証の実施形態では、ゲストOSを含む仮想化コンテナ環境のための認証操作を、仮想化コンテナ環境内にセキュリティアーティファクトを複製することなく、セキュリティアーティファクトを格納している基礎となるホストOSセキュリティデータベース(DB)に直接統合することができる。認証操作は、特に限定されないが、トランスポートレイヤセキュリティ/セキュアソケットレイヤ(TLS/SSL)接続、ライトウェイトディレクトリアクセスプロトコル(LDAP)接続、ハイパーテキスト転送プロトコルセキュア(HTTPS)プロキシサーバ接続を含むことができる。ゲストOSおよびホストOSはそれぞれ、任意の適切なOSとすることができ、本発明のいくつかの実施形態において、ホストOSはz/OS(登録商標)とすることができ、ゲストOSはLinux(登録商標)とすることができる。
【0011】
コンテナベース環境のための統合型認証の実施形態は、認証ファイルまたは認証ファイルシステムと、認証ハンドラとを含む認証モジュールを含むことができる。認証ファイルまたは認証ファイルシステムは、ゲストOS内の任意の適切なディレクトリ位置のプレースホルダとして提供される、セキュリティアーティファクト(特に限定されないが、証明書や鍵束(key ring)(例えば、リソースアクセス制御ファシリティ(RACF:resource access control facility)鍵束)など)のマッピングを含むことができる。認証ファイルまたは認証ファイルシステムが、仮想化コンテナ環境内のコンテナで実行中のアプリケーションによってアクセスされると、認証ハンドラが呼び出されて、基礎となるホストOSとローカルに通信し、当該アクセスに対応するセキュリティアーティファクトを、基礎となるホストセキュリティデータベース(DB)に対して要求する。ゲストOSの複数のインスタンスは、各インスタンスのそれぞれの認証ハンドラを介してセキュリティDB内のセキュリティアーティファクトにアクセスすることができる。これにより、システム全体にわたってセキュリティアーティファクトのコピーを提供することが不要とすることができる。いくつかの実施形態において、認証ハンドラは、ゲストOSがネットワークアクセスを必要とせずにホストOS環境と直接通信できるようにする、ストアハイパーバイザ情報(STHYI:store hypervisor information)命令を実装することができる。仮想化コンテナ環境は、ホスト環境上のユーザ識別子(ID)の下で開始タスク(started task)として実行することができる。そして、ユーザIDをセキュリティDBとの認証に使用して、要求されたセキュリティアーティファクトにアクセスし、当該セキュリティアーティファクトを仮想化コンテナ環境によって必要とされる任意のフォーマットに変換することができる。
【0012】
本発明の実施形態は、ハイパーバイザ(すなわち、ホストオペレーティングシステム)に属するとともにハイパーバイザのネイティブストレージフォーマットに格納されている、証明書および鍵ストアを含む安全な集中型セキュリティDBに対して、ゲストOSの複数のインスタンスがゲストOSのネイティブインタフェースを介してリアルタイムで透過的にアクセスできるようにする。これにより、鍵および証明書を、ゲストOSが使用するフォーマットに静的にエクスポートおよび格納する必要がなくなる。ハイパーバイザのネイティブフォーマットとゲストOSが使用するフォーマットとの間でのセキュリティアーティファクトの変換は、認証ハンドラによってリアルタイムで実行することができ、セキュリティアーティファクトは、セキュリティDBで使用される任意のストレージフォーマットから、ゲストOSのインスタンスが必要とする任意の適切なフォーマットに変換することができる。セキュリティDBは、ゲストOSからの要求に関連付けられる識別情報(例えば、ユーザID)に基づいて集中型証明書・鍵ストアへのアクセスを制限するために、ハイパーバイザによってアクセス制御を行うことができる。
【0013】
次に、
図1Aは、本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を含むシステム100Aの概略図である。システム100Aの実施形態は、
図3および
図4を参照して後述するようなクラウドコンピューティング環境に対応することができ、任意の適切なコンピュータシステム(特に限定されないが、
図5のコンピュータシステム500など)とともに実装することができる。システム100Aは、ホストシステムを含む。ホストシステムは、ホストOS仮想化レイヤ110(ハイパーバイザとも呼ばれる)を実行する、アドレス空間101、中央処理装置(CPU)プール102、データセット111、およびネットワーク112などのリソースを含む。ホストOS仮想化レイヤ110の実施形態は、任意の適切なOS(特に限定されないが、z/OSなど)を含むことができる。ホストOS仮想化レイヤ110は、複数の仮想化コンテナ環境103A~Nをサポートする。仮想化コンテナ環境103A~Nの各仮想化コンテナ環境は、仮想化コンテナ環境103Aに示されているように、ゲストOS106などのゲストOSを実行する。ゲストOS106は、任意の適切なOS(特に限定されないが、Linuxなど)を含むことができる。コンテナ環境103Aに示されているように、コンテナ環境103A~Nの各コンテナ環境は、コンテナ104A~Nなどのそれぞれのコンテナセットをホストする。コンテナ104A~Nの各コンテナは、1つ以上のアプリケーションをホストすることができる。コンテナ104A~Nは、コンテナランタイム環境105によってサポートされる。本発明のいくつかの実施形態において、コンテナランタイム環境105は、Docker(登録商標)を含むことができる。コンテナランタイム環境105は、ゲストOS106およびゲストOS仮想化レイヤ108によってホストされる。コンテナ環境103A~Nの各コンテナ環境は、コンテナ環境103Aに示されているように、コンテナランタイム環境105、ゲストOS106、およびゲストOS仮想化レイヤ108のそれぞれのインスタンスを含むことができる。コンテナ環境103A~Nは、ゲストOS仮想化レイヤ108およびホストOS仮想化レイヤ110を介して、ホストシステムのリソースにアクセスすることができる。
【0014】
セキュリティDB113は、認証操作に使用するためのセキュリティアーティファクト(特に限定されないが、証明書および鍵など)の格納されたセットを含むことができる。
図1Aに示すように、コンテナ環境103A内のコンテナ104A~Nでホストされるアプリケーションは、認証ファイル107Aおよび認証ハンドラ109Aを含む認証モジュールを介して、セキュリティDB113内のセキュリティアーティファクトにアクセスすることができる。コンテナ環境103A~Nの各々は、セキュリティDB113との通信を行うために、認証ファイル107Aなどのそれぞれの認証ファイル、および認証ハンドラ109Aなどの認証ハンドラを含むことができる。システム100Aの実施形態において認証ファイル107Aおよび認証ハンドラ109Aを介して実行可能な認証操作は、特に限定されないが、仮想環境Dockerデーモン(例えば、コンテナランタイム環境105)から外部Dockerレジストリ、ユーザ認証用のLDAPサーバ、またはHTTP/HTTPSプロキシサーバへのTLS/SSL接続を含む。認証ファイル107Aおよび認証ハンドラ109Aの動作は、
図2Aの方法200Aを参照して以下でさらに後述する。
【0015】
本発明のいくつかの実施形態において、セキュリティDB113内のセキュリティアーティファクトの名前は、認証ファイル107Aを介してコンテナ環境103Aに提供することができる。コンテナ環境103Aの提供(provision)中に、任意のセキュリティアーティファクトの名前を、ゲストOS106に提供することができる。コンテナ環境103Aは、セキュリティDB113から認証ファイル107Aなどの1つ以上の認証ファイルへの、セキュリティアーティファクトのマッピングを作成し、認証ファイル107Aなどの1つ以上の認証ファイルを適切なディレクトリ位置にプレースホルダとして配置することができる。例えば、本発明のいくつかの実施形態において、プライベートDockerレジストリの場合、認証ファイル107Aを/etc/docker/certs.dディレクトリの下に配置することができ、LDAPサーバの場合、認証ファイル107Aを/etc/ldap/ldap-caの下に配置することができ、HTTP/HTTPSプロキシサーバの場合、認証ファイル107Aを/etc/certs.d/docker-proxy-caの下に配置することができる。認証ファイル107Aなどの認証ファイルがコンテナ104A~Nのいずれかによってアクセスされると、認証ハンドラ109Aが当該アクセスによって呼び出されて、基礎となるホストOS仮想化レイヤ110とローカルで通信して、当該アクセスに対応するセキュリティアーティファクトを、基礎となるセキュリティDB113に対して要求することができる。認証ファイル107Aは、予め定義された特別なファイル拡張子を有することができ、認証ハンドラ109Aの呼び出しは、認証ファイル107Aの予め定義されたファイル拡張子に基づいてゲストOS106によって実行することができる。認証ハンドラ109Aは、ゲストOS106がネットワークアクセスを必要とせずにホストOS仮想化レイヤ110と直接通信できるようにする拡張STHYI命令(extended STHYI instruction)を含むことができる。コンテナ環境103Aは、ホストOS仮想化レイヤ110上のユーザIDに関連付けられた開始タスクとして実行することができ、認証ハンドラ109AはユーザIDを使用して、セキュリティDB113に対して認証を行い、要求されたCA証明書を適切な鍵束から取得することができる。認証ハンドラ109Aは、要求された証明書を、セキュリティDB113で使用されるフォーマットから、コンテナ環境103Aで必要とされる任意の適切なフォーマットに変換することができる。
【0016】
システム100Aのいくつかの実施形態において、セキュリティDB113内のセキュリティアーティファクトは、仮想環境内に展開されたサーバ側アプリケーション、およびゲストOS106によってサポートされるコンテナ104A~Nの内部で実行されるアプリケーションが使用するための、証明書および平文(cleartext)秘密鍵または暗号化秘密鍵(例えば、統合暗号サービスファシリティ(ICSF:Integrated Cryptographic Service Facility)が使用するものなど)を含むことができる。システム100Aのいくつかの実施形態において、RACFは、セキュリティDB113に実装される、基礎となるホストOSのセキュリティ製品(security product)とすることができ、証明書および秘密鍵の保管に実鍵束(real key ring)および仮想鍵束を使用することができる。実鍵束は、一のユーザIDに対応する特定の証明書および秘密鍵を含むように明示的に定義および構成される。RACF仮想鍵束は、ホストOS仮想化レイヤ110に対応するホスト環境における一のユーザIDが所有するすべての証明書および秘密鍵のセットである。RACF鍵束内の証明書のセットは、ユーザまたはサーバアプリケーションがクライアントまたはピアの信頼性を判断するために使用することができる。各RACFユーザIDは、仮想鍵束と関連付けることができる。専用の認証局(CERTAUTH)仮想鍵束は、セキュリティDB113を構成するRACFデータベース内のすべての信頼済みCA証明書を含むことができ、任意のユーザIDによってアクセスすることができる。鍵束に関連付けられた証明書は、ユーザIDに関連付けられ、セキュリティDB113に格納され、認証ファイル107Aおよび認証ハンドラ109Aを介して、アプリケーション利用およびピア検証のために取得することができる。
【0017】
セキュリティDB113の実施形態を構成することができるRACFデータベースは、プライバシー拡張メール(PEM:privacy-enhanced mail)フォーマットおよびBase64符号化X.509証明書などの内部バイナリフォーマット(internal binary format)で証明書を格納することができる。PEMフォーマットおよびBase64フォーマットはテキストフォーマットであり、認証ハンドラ109Aによってテキストとして伝送されてもよい。本発明のいくつかの実施形態において、認証ハンドラ109Aは、証明書パッケージフォーマットのタイプおよびゲストOS106に基づいて、拡張2進化10進コード(EBCDIC:extended binary coded decimal interchange code)から情報交換用米国標準コード(ASCII:American standard code for information exchange)への変換を実行することができる。認証ハンドラ109Aは、RACFバイナリフォーマットから、仮想化コンテナ環境103Aが必要とする任意のフォーマットに自動的に変換することができる。証明書は、認証ハンドラ109Aによって、ゲストOS106で使用するための任意の適切なフォーマットに変換することができる。フォーマットは、特に限定されないが、PEMフォーマット、公開鍵暗号標準(PKCS:public key cryptography standards)#12パッケージ、または実装固有のフォーマット(特に限定されないが、Java(登録商標)鍵ストアまたはOpenSSL鍵データベースなど)を含む。認証ハンドラ109Aは、証明書のタイプおよび仮想化環境ゲストOS106に基づいて、必要なゲストOS証明書フォーマットで証明書を提供することができる。
【0018】
なお、
図1Aのブロック図は、システム100Aが
図1Aに示すコンポーネントのすべてを含むことを示すことを意図したものではない。むしろ、システム100Aは、
図1Aに示したものよりも少ない数の適切なコンポーネントを有してもよいし、
図1Aに示していない適切な追加のコンポーネント(例えば、追加のメモリコンポーネント、組み込みコントローラ、機能ブロック、機能ブロック間の接続、モジュール、入力、出力、アドレス空間、CPU、仮想化コンテナ環境、コンテナランタイム環境、ゲストOS、ゲストOS仮想化レイヤ、認証ファイル、認証ハンドラ、コンテナ、アプリケーション、セキュリティデータベースなど)を有してもよい。さらに、システム100Aに関して本明細書で説明する実施形態は、任意の適切なロジックを使用して実装してもよい。本明細書で言及するロジックとは、種々の実施形態において、任意の適切なハードウェア(特に例えば、プロセッサ、組み込みコントローラ、もしくは特定用途向け集積回路)、ソフトウェア(特に例えば、アプリケーション)、ファームウェア、または、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせを含むことができる。
【0019】
次に、
図1Bは、本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を含むシステム100Bの概略図である。システム100Bの実施形態は、
図3および
図4を参照して後述するようなクラウドコンピューティング環境に対応することができ、任意の適切なコンピュータシステム(特に限定されないが、
図5のコンピュータシステム500など)とともに実装することができる。システム100Bは、ホストシステムを含む。ホストシステムは、ホストOS仮想化レイヤ110(ハイパーバイザとも呼ばれる)を実行する、アドレス空間101、中央処理装置(CPU)プール102、データセット111、およびネットワーク112などのリソースを含む。ホストOS仮想化レイヤ110の実施形態は、任意の適切なOS(特に限定されないが、z/OSなど)を含むことができる。ホストOS仮想化レイヤ110は、複数の仮想化コンテナ環境103A~Nをサポートする。仮想化コンテナ環境103A~Nの各仮想化コンテナ環境は、仮想化コンテナ環境103Aに示されているように、ゲストOS106などのゲストOSを実行する。ゲストOS106は、任意の適切なOS(特に限定されないが、Linuxなど)を含むことができる。コンテナ環境103Aに示されているように、コンテナ環境103A~Nの各コンテナ環境は、コンテナ104A~Nなどのそれぞれのコンテナセットをホストする。コンテナ104A~Nの各コンテナは、1つ以上のアプリケーションをホストすることができる。コンテナ104A~Nは、コンテナランタイム環境105によってサポートされる。本発明のいくつかの実施形態において、コンテナランタイム環境105は、Dockerを含むことができる。コンテナランタイム環境105は、ゲストOS106およびゲストOS仮想化レイヤ108によってホストされる。コンテナ環境103A~Nの各コンテナ環境は、コンテナ環境103Aに示されているように、コンテナランタイム環境105、ゲストOS106、およびゲストOS仮想化レイヤ108のそれぞれのインスタンスを含むことができる。コンテナ環境103A~Nは、ゲストOS仮想化レイヤ108およびホストOS仮想化レイヤ110を介して、ホストシステムのリソースにアクセスすることができる。
【0020】
セキュリティDB113は、認証操作に使用するためのセキュリティアーティファクト(特に限定されないが、証明書および鍵など)の格納されたセットを含むことができる。
図1Bに示すように、コンテナ環境103A内のコンテナ104A~Nでホストされるアプリケーションは、認証ファイルシステム107Bを含む認証モジュールを介して、セキュリティDB113内のセキュリティアーティファクトにアクセスすることができる。認証ファイルシステム107Bは、認証ハンドラ109Bを含む。コンテナ環境103A~Nの各々は、セキュリティDB113との通信を行うために、認証ハンドラ109Bなどのそれぞれの認証ハンドラを含む、認証ファイルシステム107Bなどのそれぞれの認証ファイルシステムを含むことができる。システム100Bの実施形態において認証ファイルシステム107Bおよび認証ハンドラ109Bを介して実行可能な認証操作は、特に限定されないが、仮想環境Dockerデーモン(例えば、コンテナランタイム環境105)から外部Dockerレジストリ、ユーザ認証用のLDAPサーバ、またはHTTP/HTTPSプロキシサーバへのTLS/SSL接続を含む。認証ファイルシステム107Bおよび認証ハンドラ109Bの動作は、
図2Bの方法200Bを参照して以下でさらに後述する。
【0021】
本発明のいくつかの実施形態において、セキュリティDB113内のセキュリティアーティファクトの名前は、認証ファイルシステム107B内のプレースホルダファイル(placeholder file)を介してコンテナ環境103Aに提供することができる。認証ファイルシステム107Bは、セキュリティDB113から認証ファイルシステム107B内の1つ以上のプレースホルダファイルへの、セキュリティアーティファクトのマッピングを含むことができる。認証ファイルシステム107B内のプレースホルダファイルは、ゲストOS106の通常のファイルシステム内の適切な場所にマウントされるシンボリックリンクに対応することができる。例えば、本発明のいくつかの実施形態において、プライベートDockerレジストリの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクを、/etc/docker/certs.dディレクトリに含めることができる。LDAPサーバの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクを、/etc/ldap/ldap-caディレクトリに含めることができる。HTTP/HTTPSプロキシサーバの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクを、ゲストOS106の通常のファイルシステム内の/etc/certs.d/docker-proxy-caディレクトリに含めることができる。認証操作を実行するためにシンボリックリンクにアクセスするアプリケーションに基づいて、ファイルアクセス要求は、ゲストOS106によって、当該シンボリックリンクに対応する認証ファイルシステム107B内のプレースホルダファイルにリダイレクトすることができる。認証ファイルシステム107B内のいずれかのプレースホルダファイルがコンテナ104A~Nのいずれかによってアクセスされると、認証ファイルシステム107B内の認証ハンドラ109Bが呼び出されて、基礎となるホストOS仮想化レイヤ110とローカルで通信して、当該アクセスに対応するセキュリティアーティファクトを、基礎となるセキュリティDB113に対して要求することができる。認証ハンドラ109Bは、ゲストOS106がネットワークアクセスを必要とせずにホストOS仮想化レイヤ110と直接通信できるようにする拡張STHYI命令を含むことができる。コンテナ環境103Aは、ホストOS仮想化レイヤ110上のユーザIDに関連付けられた開始タスクとして実行することができ、認証ハンドラ109BはユーザIDを使用して、セキュリティDB113に対して認証を行い、要求されたCA証明書を適切な鍵束から取得することができる。認証ハンドラ109Bは、要求された証明書を、セキュリティDB113で使用されるフォーマットから、コンテナ環境103Aで必要とされる任意の適切なフォーマットに変換することができる。システム100Bのいくつかの実施形態において、認証ファイルシステム107Bは、ユーザ空間ファイルシステム(FUSE:file system in user space)を含むことができる。認証ファイルシステム107Bを含むシステム100Bの実施形態では、ゲストOS106に対するカーネルの変更を必要としない場合がある。コンテナ環境103Aにおいて必要となり得る任意の追加のメタデータを、認証ファイルシステム107B内に維持することができる。
【0022】
システム100Bのいくつかの実施形態において、セキュリティDB113内のセキュリティアーティファクトは、仮想環境内に展開されたサーバ側アプリケーション、およびゲストOS106によってサポートされるコンテナ104A~Nの内部で実行されるアプリケーションが使用するための、証明書および平文秘密鍵または暗号化秘密鍵(例えば、ICSFが使用するものなど)を含むことができる。システム100Bのいくつかの実施形態において、RACFは、セキュリティDB113に実装される、基礎となるホストOSのセキュリティ製品とすることができ、証明書および秘密鍵の保管に実鍵束および仮想鍵束を使用することができる。実鍵束は、一のユーザIDに対応する特定の証明書および秘密鍵を含むように明示的に定義および構成される。RACF仮想鍵束は、ホストOS仮想化レイヤ110に対応するホスト環境における一のユーザIDが所有するすべての証明書および秘密鍵のセットである。RACF鍵束内の証明書のセットは、ユーザまたはサーバアプリケーションがクライアントまたはピアの信頼性を判断するために使用することができる。各RACFユーザIDは、仮想鍵束と関連付けることができる。専用の認証局(CERTAUTH)仮想鍵束は、セキュリティDB113を構成するRACFデータベース内のすべての信頼済みCA証明書を含むことができ、任意のユーザIDによってアクセスすることができる。鍵束に関連付けられた証明書は、ユーザIDに関連付けられ、セキュリティDB113に格納され、認証ファイルシステム107Bおよび認証ハンドラ109Bによって、アプリケーション利用およびピア検証のために取得することができる。
【0023】
セキュリティDB113の実施形態を構成することができるRACFデータベースは、プライバシー拡張メール(PEM)フォーマットおよびBase64符号化X.509証明書などの内部バイナリフォーマットで証明書を格納することができる。PEMフォーマットおよびBase64フォーマットはテキストフォーマットであり、認証ハンドラ109Bによってテキストとして伝送されてもよい。本発明のいくつかの実施形態において、認証ハンドラ109Bは、証明書パッケージフォーマットのタイプおよびゲストOS106に基づいて、拡張2進化10進コード(EBCDIC)から情報交換用米国標準コード(ASCII)への変換を実行することができる。認証ハンドラ109Bは、RACFバイナリフォーマットから、仮想化コンテナ環境103Aが必要とする任意のフォーマットに自動的に変換することができる。認証ハンドラ109Bによる一部の変換は、認証ファイルシステム107B内に格納されたメタデータを必要とする場合もあれば、認証ファイルシステム107Bのマウント時に設定される設定パラメータに基づいて実行することもできる。証明書は、認証ハンドラ109Bによって、ゲストOS106で使用するための任意の適切なフォーマットに変換することができる。フォーマットは、特に限定されないが、PEMフォーマット、公開鍵暗号標準(PKCS)#12パッケージ、または実装固有のフォーマット(特に限定されないが、Java鍵ストアまたはOpenSSL鍵データベースなど)を含む。認証ハンドラ109Bは、証明書のタイプおよび仮想化環境ゲストOS106に基づいて、必要なゲストOS証明書フォーマットで証明書を提供することができる。
【0024】
なお、
図1Bのブロック図は、システム100Bが
図1Bに示すコンポーネントのすべてを含むことを示すことを意図したものではない。むしろ、システム100Bは、
図1Bに示したものよりも少ない数の適切なコンポーネントを有してもよいし、
図1Bに示していない適切な追加のコンポーネント(例えば、追加のメモリコンポーネント、組み込みコントローラ、機能ブロック、機能ブロック間の接続、モジュール、入力、出力、アドレス空間、CPU、仮想化コンテナ環境、コンテナランタイム環境、ゲストOS、ゲストOS仮想化レイヤ、認証ファイルシステム、認証ハンドラ、コンテナ、アプリケーション、セキュリティデータベースなど)を有してもよい。さらに、システム100Bに関して本明細書で説明する実施形態は、任意の適切なロジックを使用して実装してもよい。本明細書で言及するロジックとは、種々の実施形態において、任意の適切なハードウェア(特に例えば、プロセッサ、組み込みコントローラ、もしくは特定用途向け集積回路)、ソフトウェア(特に例えば、アプリケーション)、ファームウェア、または、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせを含むことができる。
【0025】
図2Aは、本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うための方法200Aのプロセスフローチャートである。方法200Aの実施形態は、
図1Aのシステム100Aに実装することができる。方法200Aの実施形態を、
図1Aのシステム100Aを参照しながら説明する。方法200Aのブロック201にて、認証ファイル107Aなどの1つ以上の認証ファイルが、コンテナ環境103A内の予め定義された場所に提供される。例えば、プライベートDockerレジストリを含むコンテナランタイム環境を含むコンテナ環境103Aの場合、認証ファイル107Aを/etc/docker/certs.dディレクトリの下に配置することができ、LDAPサーバの場合は、認証ファイル107Aを/etc/ldap/ldap-caの下に配置することができ、HTTP/HTTPSプロキシサーバの場合は、認証ファイル107Aを/etc/certs.d/docker-proxy-caの下に配置することができる。認証ファイル107Aなどの認証ファイルは、コンテナ環境103Aなどのコンテナ環境内の任意の適切な場所に配置することができる。認証ファイル107Aなどの認証ファイルは、予め定義されたファイル拡張子を有することができる。予め定義されたファイル拡張子は、任意の適切なフォーマット(例えば、シンボリックリンク、キャラクタスペシャル(character special)、パイプ、またはソケットファイルタイプ)を有することができる。ブロック202にて、認証ハンドラ109Aがコンテナ環境103Aに提供される。認証ハンドラ109Aを提供することは、ゲストOS106のカーネルを修正することを含んでもよい。
【0026】
方法200Aのブロック203にて、コンテナ環境103Aのコンテナ104A内のアプリケーションは、認証操作を実行するためのセキュリティアーティファクトを要求するために、認証ファイル107Aにアクセスする。ブロック204にて、ブロック203で行われた認証ファイル107Aへのアクセスにより、認証ハンドラ109Aが呼び出される。認証ハンドラ109Aは、アクセスされた認証ファイル107Aのファイル拡張子に基づいて、ゲストOS106によって呼び出すことができる。ブロック205にて、呼び出された認証ハンドラ109Aは、要求されたセキュリティアーティファクトをセキュリティDB113から取得するために、ホストOS仮想化レイヤ110に制御を渡す。本発明のいくつかの実施形態において、認証ハンドラ109Aは、ブロック205にてホストOS仮想化レイヤ110と通信するために、STHYIインタフェースコールを実装することができる。ブロック205のいくつかの実施形態において、要求されたセキュリティアーティファクトをセキュリティDB113から取得することは、要求元アプリケーションに関連付けられたユーザIDに基づいて実行することができる。ブロック206にて、要求されたセキュリティアーティファクトが、認証ハンドラ109Aを介して、セキュリティDB113およびホストOS仮想化レイヤ110から要求元アプリケーションに提供される。ブロック206のいくつかの実施形態において、認証ハンドラ109Aは、セキュリティDB113で使用されるフォーマットからコンテナ104A内の要求元アプリケーションによって使用可能なフォーマットに、セキュリティアーティファクトを自動的に変換することができる。ブロック206でのフォーマット変換は、セキュリティアーティファクトのファイル拡張子に基づいて実行することができる。方法200Aのブロック203~206は、コンテナ環境103A~Nにおいて動作するアプリケーションがセキュリティDB113内のセキュリティアーティファクトにアクセスするために、システム100Aの動作を通じて繰り返すことができる。
【0027】
図2Aのプロセスフローチャートは、方法200Aの工程が特定の順序で実行されること、または方法200Aの工程のすべてがいかなる場合にも含まれることを示すことを意図したものではない。さらに、方法200Aは、任意の適切な数の追加の工程を含むことができる。
【0028】
図2Bは、本発明の1つ以上の実施形態に係る、コンテナベース環境のための統合型認証を行うための方法200Bのプロセスフローチャートである。方法200Bの実施形態は、
図1Bのシステム100Bに実装することができる。方法200Bの実施形態を、
図1Bのシステム100Bを参照しながら説明する。方法200Bのブロック211にて、認証ファイルシステム107Bが、コンテナ環境103A内の予め定義された場所にてゲストOS106にマウントされる。認証ファイルシステム107Bは、1つ以上のプレースホルダファイルと、認証ハンドラ109Bとを含む。プレースホルダファイルは、認証ファイルシステム107Bの任意の適切な場所に配置することができる。プレースホルダファイルは、ゲストOS106の通常のファイルシステム内の適切な場所に配置されたシンボリックリンクに対応することができる。例えば、本発明のいくつかの実施形態において、プライベートDockerレジストリの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクは、/etc/docker/certs.dディレクトリに含めることができる。LDAPサーバの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクは、/etc/ldap/ldap-caディレクトリに含めることができる。HTTP/HTTPSプロキシサーバの場合、認証ファイルシステム107B内のプレースホルダファイルへのシンボリックリンクは、ゲストOS106の通常のファイルシステム内の/etc/certs.d/docker-proxy-caディレクトリに含めることができる。本発明のいくつかの実施形態において、コンテナ環境103Aにおいて認証ハンドラ109Bを含む認証ファイルシステム107Bをマウントすることは、ゲストOS106のカーネルの変更を必要としなくてもよい。
【0029】
方法200Bのブロック212にて、コンテナ環境103Aのコンテナ104A内のアプリケーションは、認証操作を実行するためのセキュリティアーティファクトを要求するために、認証ファイルシステム107B内のプレースホルダファイルにアクセスする。アプリケーションは、セキュリティアーティファクトを要求するために、ゲストOS106の通常のファイルシステム内のシンボリックリンクにアクセスすることができ、当該アクセスは、ゲストOS106によって、認証ファイルシステム107B内のアクセスされたシンボリックリンクに対応するプレースホルダファイルにリダイレクトされる。ブロック213にて、ブロック212で行われた認証ファイルシステム107B内のプレースホルダファイルへのアクセスにより、認証ハンドラ109Bが呼び出される。ブロック214にて、認証ハンドラ109Bは、要求されたセキュリティアーティファクトをセキュリティDB113から取得するために、ホストOS仮想化レイヤ110に制御を渡す。本発明のいくつかの実施形態において、認証ハンドラ109Bは、ブロック214にてホストOS仮想化レイヤ110と通信するために、STHYIインタフェースコールを実装することができる。ブロック214のいくつかの実施形態において、要求されたセキュリティアーティファクトをセキュリティDB113から取得することは、要求元アプリケーションに関連付けられたユーザIDに基づいて実行することができる。ブロック215にて、セキュリティアーティファクトが、認証ハンドラ109Bを介して、セキュリティDB113およびホストOS仮想化レイヤ110から要求元アプリケーションに提供される。ブロック215のいくつかの実施形態において、認証ハンドラ109Bは、セキュリティDB113で使用されるフォーマットから要求元アプリケーションによって使用可能なフォーマットに、セキュリティアーティファクトを自動的に変換することができる。ブロック215でのフォーマット変換は、セキュリティアーティファクトのファイル拡張子に基づいて実行することができる。方法200Bのブロック212~215は、コンテナ環境103A~Nにおいて動作するアプリケーションがセキュリティDB113のセキュリティアーティファクトにアクセスするために、システム100Bの動作を通じて繰り返すことができる。
【0030】
図2Bのプロセスフローチャートは、方法200Bの工程が特定の順序で実行されること、または方法200Bの工程のすべてがいかなる場合にも含まれることを示すことを意図したものではない。さらに、方法200Bは、任意の適切な数の追加の工程を含むことができる。
【0031】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0032】
クラウドコンピューティングは、設定可能なコンピューティングリソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)の共有プールへの簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことができる。
【0033】
特性は以下の通りである。
【0034】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0035】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0036】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0037】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0038】
サービスの測定:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの計量機能(metering capability)を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0039】
サービスモデルは以下の通りである。
【0040】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0041】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0042】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0043】
展開モデルは以下の通りである。
【0044】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0045】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0046】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0047】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0048】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0049】
ここで、
図3に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図3に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0050】
ここで、クラウドコンピューティング環境50(
図3)によって提供される機能的抽象化レイヤのセットを
図4に示す。なお、
図4に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0051】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0052】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75などの仮想エンティティを提供することができる。
【0053】
一例として、管理レイヤ80は本明細書に記載の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0054】
ワークロードレイヤ90は、クラウドコンピューティング環境の利用が可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、モバイルデスクトップ96が含まれる。
【0055】
次に、
図5は、一実施形態に係るコンピュータシステム500の概略図である。コンピュータシステム500は、本明細書に記載するように、様々な通信技術を利用する任意の数および組み合わせのコンピューティングデバイスおよびネットワークを含む、もしくは採用する、またはその両方である電子コンピュータフレームワークとすることができる。コンピュータシステム500は、容易にスケーリングおよび拡張可能なモジュール式のものとすることができ、異なるサービスに変化したり、一部の特徴を他の特徴とは独立して再構成したりする能力を有する。コンピュータシステム500は、例えば、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、またはスマートフォンであってもよい。いくつかの例では、コンピュータシステム500は、クラウドコンピューティングノードであってもよい。コンピュータシステム500は、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータシステム実行可能命令との一般的な関連において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでもよい。コンピュータシステム500は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散クラウドコンピューティング環境において実施されてもよい。分散クラウドコンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモート両方のコンピュータシステム記憶媒体に配置されてもよい。
【0056】
図5に示すように、コンピュータシステム500は、1つ以上の中央処理装置(CPU)501a、501b、501cなどを有する(まとめてまたは総称してプロセッサ501と呼ぶ)。プロセッサ501は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または任意の数の他の構成とすることができる。処理回路とも呼ばれるプロセッサ501は、システムバス502を介してシステムメモリ503および他の様々なコンポーネントに結合される。システムメモリ503は、読み取り専用メモリ(ROM)504およびランダムアクセスメモリ(RAM)505を含むことができる。ROM504は、システムバス502に結合される。ROM504は、コンピュータシステム500の特定の基本機能を制御する基本入出力システム(BIOS)を含んでもよい。RAMは、プロセッサ501によって使用するためにシステムバス502に結合された読み出し/書き込みメモリである。システムメモリ503は動作中に、上述した命令の動作のための一時的なメモリ空間を提供する。システムメモリ503は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ、フラッシュメモリ、または任意の他の適切なメモリシステムを含むことができる。
【0057】
コンピュータシステム500は、システムバス502に結合された入出力(I/O)アダプタ506および通信アダプタ507を含む。I/Oアダプタ506は、ハードディスク508もしくは任意の他の同様のコンポーネントまたはその両方と通信するスモールコンピュータシステムインタフェース(SCSI)アダプタであってもよい。I/Oアダプタ506およびハードディスク508を、本明細書ではまとめてマスストレージ510と呼ぶ。
【0058】
コンピュータシステム500上で実行されるソフトウェア511は、マスストレージ510に記憶されてもよい。マスストレージ510は、プロセッサ501によって読み出し可能な有形の記憶媒体の一例であり、ソフトウェア511は、プロセッサ501によって実行される命令であって、例えば、様々な図面を参照して本明細書で説明するようにコンピュータシステム500を動作させるための命令として記憶される。コンピュータプログラム製品の例およびこのような命令の実行については、本明細書でより詳細に説明している。通信アダプタ507は、システムバス502をネットワーク512(外部ネットワークであってもよい)と相互接続して、コンピュータシステム500が他のこのようなシステムと通信できるようにする。一実施形態において、システムメモリ503の一部およびマスストレージ510は、集合的にオペレーティングシステムを記憶する。オペレーティングシステムは、
図5に示す様々なコンポーネントの機能を調整するための任意の適切なオペレーティングシステム、例えば、IBM Corporationのz/OSまたはAIXオペレーティングシステムなどであってもよい。
【0059】
ディスプレイアダプタ515およびインタフェースアダプタ516を介してシステムバス502に接続される追加の入出力デバイスが示されている。一実施形態において、アダプタ506、507、515、および516は、中間のバスブリッジ(不図示)を介してシステムバス502に接続される1つ以上のI/Oバスに接続されてもよい。ディスプレイ519(例えば、スクリーンまたはディスプレイモニタ)が、ディスプレイアダプタ515によってシステムバス502に接続される。ディスプレイアダプタ515は、グラフィックスを多用するアプリケーションの性能を向上させるためのグラフィックスコントローラ、およびビデオコントローラを含んでもよい。インタフェースアダプタ516を介して、キーボード521、マウス522、スピーカ523などをシステムバス502に相互接続することができる。インタフェースアダプタ516は、例えば、複数のデバイスアダプタを単一の集積回路に統合したスーパーI/Oチップを含んでもよい。ハードディスクコントローラ、ネットワークアダプタ、およびグラフィックアダプタなどの周辺デバイスを接続するための適切なI/Oバスは、通常、周辺機器相互接続(PCI)などの一般的なプロトコルを含む。このため、
図5に構成されるように、コンピュータシステム500は、プロセッサ501としての処理機能と、システムメモリ503およびマスストレージ510を含むストレージ機能と、キーボード521およびマウス522などの入力手段と、スピーカ523およびディスプレイ519を含む出力機能と、を含む。
【0060】
いくつかの実施形態において、通信アダプタ507は、任意の適切なインタフェースまたはプロトコル(特に、インターネットスモールコンピュータシステムインタフェースなど)を使用してデータを送信することができる。ネットワーク512は、特に、セルラーネットワーク、無線ネットワーク、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、またはインターネットであってもよい。ネットワーク512を介して、外部コンピューティングデバイスがコンピュータシステム500に接続されてもよい。いくつかの例では、外部コンピューティングデバイスは、外部ウェブサーバまたはクラウドコンピューティングノードであってもよい。
【0061】
なお、
図5のブロック図は、コンピュータシステム500が
図5に示すコンポーネントのすべてを含むことを示すことを意図したものではない。むしろ、コンピュータシステム500は、
図5に示したものよりも少ない数の適切なコンポーネントを有してもよいし、
図5に示していない適切な追加のコンポーネント(例えば、追加のメモリコンポーネント、組み込みコントローラ、モジュール、追加のネットワークインタフェースなど)を有してもよい。さらに、コンピュータシステム500に関して本明細書で説明する実施形態は、任意の適切なロジックを使用して実装してもよい。本明細書で言及するロジックとは、種々の実施形態において、任意の適切なハードウェア(特に例えば、プロセッサ、組み込みコントローラ、もしくは特定用途向け集積回路)、ソフトウェア(特に例えば、アプリケーション)、ファームウェア、または、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせを含むことができる。
【0062】
本明細書では、本発明の様々な実施形態について、関連する図面を参照して説明している。本発明の範囲から逸脱することなく、本発明の代替的な実施形態を考案することができる。以下の説明および図面では、要素間の様々な接続および位置関係(たとえば、上(over)、下(below)、隣接(adjacent)など)を記載している。これらの接続もしくは位置関係またはその両方は、別段の指定がない限り、直接的または間接的なものとすることができ、本発明はこの点について限定するものではない。したがって、エンティティの結合は、直接的または間接的な結合を指すことができ、エンティティ間の位置関係は、直接的または間接的な位置関係とすることができる。また、本明細書に記載の様々なタスクおよび処理ステップは、本明細書に詳細に記載していない追加のステップまたは機能を有する、より包括的な手順またはプロセスに組み込むことができる。
【0063】
本明細書に記載の方法の1つ以上は、当技術分野で周知の以下の技術のいずれかまたは組み合わせを用いて実施することができる。すなわち、データ信号に対して論理関数を実施するための論理ゲートを有するディスクリート論理回路、適切な組み合わせの論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などである。
【0064】
簡潔にするために、本発明の態様の形成および使用に関連する従来技術は、本明細書では詳細に説明する場合もしない場合もある。具体的には、本明細書に記載の様々な技術的特徴を実装するためのコンピューティングシステムおよび特定のコンピュータプログラムの様々な態様は、周知である。したがって、簡潔にするために、多くの従来の実装の詳細については、本明細書では簡単に言及するに留めるかまたは完全に省略し、周知のシステムもしくはプロセスまたはその両方の詳細は提供しない。
【0065】
いくつかの実施形態では、様々な機能または動作は、所与の場所において、もしくは1つ以上の装置もしくはシステムの動作に関連して、またはその両方にて行うことができる。いくつかの実施形態では、所与の機能または動作の一部は、第1のデバイスまたは場所において実行することができ、当該機能または動作の残りの部分は、1つ以上の追加のデバイスまたは場所において実行することができる。
【0066】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図するものではない。本明細書において、単数形「ある(a)」、「ある(an)」および「その(the)」は、文脈上そうではないことが明らかでない限り、複数形も含むことを意図している。さらに、本明細書において、「備える(comprises)」もしくは「備える(comprising)」またはその両方の用語が用いられる場合、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせが存在することを規定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではない。
【0067】
以下の特許請求の範囲におけるすべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、具体的に特許請求された他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことを意図している。本開示は、例示および説明を目的として提示されたものであり、網羅的であることや、開示した形態に限定することを意図したものではない。本開示の範囲から逸脱することなく、多くの変更および変形が当業者には明らかである。本実施形態は、本開示の原理および実際の応用例を最もよく説明するために、かつ他の当業者が、企図している特定の用途に適した各種の変更を伴う各種の実施形態について本開示を理解できるように選択され記載されたものである。
【0068】
本明細書に示す図面は例示的なものである。本開示の範囲から逸脱することなく、本明細書に記載の図面またはステップ(もしくは動作)に対して多くの変形を行うことができる。例えば、アクションを異なる順序で実行してもよいし、アクションを追加したり、削除したり、変更したりしてもよい。また、「結合された(coupled)」という用語は、2つの要素間に信号経路を有することを説明するものであり、それらの間に要素/接続が介在しない、要素間の直接的な接続を含意するものではない。これらの変形はすべて、本開示の一部と考えられる。
【0069】
特許請求の範囲および本明細書の解釈のために以下の定義および略語を使用するものとする。本明細書で使用する「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「含有する(contains)」、もしくは「含有する(containing)」という用語またはこれらのその他の変形は、非排他的包含を対象とすることが意図されている。例えば、要素の列挙を含む組成物、混合物、プロセス、方法、物、または装置は、必ずしもそれらの要素のみには限定されず、明示的に記載されていないかまたはそのような組成物、混合物、プロセス、方法、物または装置に固有の他の要素を含むことができる。
【0070】
さらに、「例示的(exemplary)」という用語は、本明細書において「例、事例、または例示としての役割を果たすこと」を意味するために使用している。「例示的」なものとして本明細書に記載される実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利なものであると解釈すべきではない。「少なくとも1つ(at least one)」および「1つ以上(one or more)」という用語は、1以上の任意の整数、すなわち、1つ、2つ、3つ、4つなどを含むものと理解される。「複数(a plurality)」という用語は、2以上の任意の整数、すなわち、2つ、3つ、4つ、5つなどを含むものと理解される。「接続(connection)」という用語は、間接的な「接続」および直接的な「接続」の両方を含むことができる。
【0071】
「約(about)」、「略/実質的に(substantially)」、「およそ(approximately)」という用語およびこれらの変形は、本出願時点で利用可能な機器に基づく特定の数量の測定に関連する誤差の程度を含むことが意図される。例えば、「約」は、所与の値から±8%、5%、または2%の範囲を含むことができる。
【0072】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでもよい。
【0073】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、一例として、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたはこれらの適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0074】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロード可能である。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくはワイヤレスネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
【0075】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0076】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0077】
これらのコンピュータ可読プログラム命令は、機械を生産するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供することができる。これにより、このようなコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。これらのコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶することができる。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0078】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他のデバイスにロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0079】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行されてもよい。例えば、関係する機能に応じて、連続して示される2つのブロックが、実際には、略同時に実行されてもよいし、ブロックが場合により逆順で実行されてもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行可能である。
【0080】
本発明の種々の実施形態を例示として説明してきたが、網羅的であることや、これらの実施形態に限定することを意図したものではない。当業者には明らかなように、記載した各実施形態の範囲から逸脱することなく、多くの変更および変形が可能である。本明細書で用いられる用語は、各実施形態の原理、実際の用途、または市場で確認される技術に対する技術的な改善を最もよく説明するために、または、他の当業者が本明細書に記載する各実施形態を理解できるように選択されたものである。
【国際調査報告】