(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】シングルログアウト
(51)【国際特許分類】
G06F 21/41 20130101AFI20241016BHJP
【FI】
G06F21/41
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024519655
(86)(22)【出願日】2022-09-30
(85)【翻訳文提出日】2024-05-08
(86)【国際出願番号】 US2022045370
(87)【国際公開番号】W WO2023056009
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シャルマ,ショブハンク
(72)【発明者】
【氏名】エバーニ,ベンカタ・サブバラオ
(72)【発明者】
【氏名】パンディリ,クランティ・キラン
(72)【発明者】
【氏名】ナガラジャ,ギリシュ
(72)【発明者】
【氏名】ファン・デン・ダンゲン,マルティヌス・ペトルス・ランベルトゥス
(72)【発明者】
【氏名】スッバイヤン,アショク・クマール
(72)【発明者】
【氏名】ケルマイヤー,アリ・エム
(57)【要約】
本明細書には、2つの独立したシステム間でのシングルログアウトのためのシステムおよび方法が記載される。システムは、第1のログインプロトコルを有する第1のアクセス制御システムを含む。第1のアクセス制御システムは、少なくとも1つの第1のプロセッサと、少なくとも1つの第1のプロセッサによって実行可能な複数の命令を含むメモリとを含む。システムは第2のアクセス制御システムを含む。第2のアクセス制御システムは、第1のログインプロトコルとは独立した第2のログインプロトコルを有する。第1のアクセス制御システムは、第1のアクセス制御システムでユーザからログアウト要求を受信し、ユーザを第1のアクセス制御システムからログアウトし、信頼機構を利用してユーザを第2のアクセス制御システムからログアウトすることができる。
【特許請求の範囲】
【請求項1】
2つのシステムのうちの第1のシステムでユーザからログアウト要求を受信することと、
前記2つのシステムのうちの前記第1のシステムから前記ユーザをログアウトすることと、
信頼機構を利用して前記2つのシステムのうちの第2のシステムから前記ユーザをログアウトすることと、
を含む方法。
【請求項2】
前記信頼機構が少なくとも1つのトークンを含む、請求項1に記載の方法。
【請求項3】
前記ログアウト要求は、前記2つのシステムのうちの前記第1のシステムからの前記ユーザのログアウトを指示する、請求項1に記載の方法。
【請求項4】
前記2つのシステムのうちの前記第1のシステムから前記ユーザをログアウトすることは、前記第1のシステム上での前記ユーザのセッションを期限切れにすることを含む、請求項3に記載の方法。
【請求項5】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、前記ユーザを前記2つのシステムのうちの前記第2のシステムにリダイレクトすることを含む、請求項4に記載の方法。
【請求項6】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、ユーザブラウザから前記2つのシステムのうちの前記第2のシステムにJSONウェブトークン(JWT)を送信することを含む、請求項5に記載の方法。
【請求項7】
前記JWTは、ログアウト後のリダイレクトURLを含む、請求項6に記載の方法。
【請求項8】
前記JWTは、IAMログイン秘密鍵をさらに含む、請求項7に記載の方法。
【請求項9】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、前記2つのシステムのうちの前記第2のシステムのクッキーおよび/またはトークンを前記ユーザブラウザからクリアすることを含む、請求項6に記載の方法。
【請求項10】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、前記2つのシステムのうちの前記第2のシステムのアプリケーションから前記ユーザをログアウトすることを含む、請求項9に記載の方法。
【請求項11】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、前記2つのシステムのうちの前記第2のシステムからユーザブラウザにログアウトの確認を送信することを含み、前記ログアウトの確認が前記JWTを含む、請求項10に記載の方法。
【請求項12】
前記信頼機構を利用して前記2つのシステムのうちの前記第2のシステムから前記ユーザをログアウトすることは、前記2つのシステムのうちの前記第2のシステムからのログアウトの完了の確認として前記JWTを前記ユーザブラウザから前記第1のシステムに送信することを含む、請求項11に記載の方法。
【請求項13】
フロントチャネルログアウトURLの通信を介して前記第1のシステムの他のアプリケーションをログアウトすることをさらに含む、請求項12に記載の方法。
【請求項14】
前記2つのシステムのうちの前記第1のシステムは、属性ベースのアクセス制御(ABAC)システムを備え、前記2つのシステムのうちの前記第2のシステムは、役割ベースのアクセス制御(RBAC)システムを備える、請求項1に記載の方法。
【請求項15】
前記2つのシステムのうちの前記第1のシステムは、役割ベースのアクセス制御(RBAC)システムを備え、前記2つのシステムのうちの前記第2のシステムは、属性ベースのアクセス制御(ABAC)システムを備える、請求項1に記載の方法。
【請求項16】
前記2つのシステムのうちの前記第1のシステムは、前記ユーザがログインされる前記第1のシステムの他のアプリケーションを識別するとともに、前記ユーザをそれらの他のアプリケーションからログアウトする、請求項15に記載の方法。
【請求項17】
前記2つのシステムのうちの前記第2のシステムは、
前記ユーザがログインされる前記第2のシステムの他のアプリケーションを識別し、
前記ユーザがログインされる前記第2のシステムの前記他のアプリケーションにおけるフロントチャネルログアウトURLを受け、
前記ユーザがログインされる前記第2のシステムの前記他のアプリケーションによる前記フロントチャネルログアウトURLのロードを指示する、
請求項16に記載の方法。
【請求項18】
システムであって、
第1のログインプロトコルを有する第1のアクセス制御システムを備え、前記第1のアクセス制御システムは、
少なくとも1つの第1のプロセッサと、
前記少なくとも1つの第1のプロセッサによって実行可能な複数の命令を含むメモリと、
を備え、前記システムは、
第2のアクセス制御システムを備え、前記第2のアクセス制御システムは、前記第1のログインプロトコルとは独立した第2のログインプロトコルを有し、
前記第1のアクセス制御システムは、
前記第1のアクセス制御システムでユーザからログアウト要求を受信し、
前記ユーザを前記第1のアクセス制御システムからログアウトし、
信頼機構を利用して前記ユーザを前記第2のアクセス制御システムからログアウトする、
ように構成される、
システム。
【請求項19】
前記ログアウト要求は、前記第1のアクセス制御システムからの前記ユーザのログアウトを指示し、前記第1のアクセス制御システムからの前記ユーザのログアウトは、前記第1のアクセス制御システム上の前記ユーザのセッションを期限切れにし、前記信頼機構を利用して前記ユーザを前記第2のアクセス制御システムからログアウトすることは、前記ユーザを前記第2のアクセス制御システムにリダイレクトすることを含み、前記信頼機構を利用して前記ユーザを前記第2のアクセス制御システムからログアウトすることは、JSONウェブトークン(JWT)をユーザブラウザから前記第2のアクセス制御システムに送信することを含む、請求項18に記載のシステム。
【請求項20】
1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
2つのシステムのうちの第1のシステムでユーザからログアウト要求を受信させ、
前記2つのシステムのうちの前記第1のシステムから前記ユーザをログアウトさせ、
信頼機構を利用して前記2つのシステムのうちの第2のシステムから前記ユーザをログアウトさせる、
非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
この出願は、その全体が参照により本明細書に組み込まれる2021年9月30日に出願された「シングルログアウト」という名称の米国仮出願第63/250,713号の利益を主張する。
【0002】
背景
最近、クラウドサービスの導入が急速に進んでいる。現在、さまざまなタイプのクラウドサービスがさまざまなクラウドサービスプロバイダ(CSP)によって提供される。クラウドサービスという用語は、一般に、CSPが提供するシステムとインフラストラクチャ(一般にクラウドインフラストラクチャと呼ばれる)とを使用して、一般にサブスクリプションモデルを使用する、加入している顧客にオンデマンドでCSPにより利用可能にするサービスまたは機能を指すために使用される。一般に、加入している顧客にクラウドサービスを提供するために使用されるCSPが提供するクラウドインフラストラクチャに含まれるサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは別のものである。CSPが提供するインフラストラクチャとしては、コンピューティング、ストレージ、およびネットワーキングリソースを挙げることができる。したがって、顧客は、サービス用に独自のハードウェアおよびソフトウェアリソースを購入する必要なく、CSPが提供するクラウドサービスを利用できる。クラウドサービスは、サービスまたは機能を提供するためのインフラストラクチャの調達に顧客が投資する必要なく、加入している顧客がアプリケーションおよびコンピューティングリソースに簡単かつスケーラブルにオンデマンドでアクセスできるように設計される。サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのインフラストラクチャ(IaaS)など、さまざまなタイプまたはモデルのクラウドサービスが提供される場合がある。顧客は、CSPが提供する1つまたは複数のクラウドサービスに加入できる。顧客は、個人、組織、企業などの任意のエンティティとなり得る。
【0003】
CSPが提供するサービスが異なれば、ログアウト手順および/またはログアウト要件も異なる場合がある。いくつかの例では、これらの異なる手順および/または要件により、顧客体験が満足できない結果になる可能性がある。したがって、さらなる改良が望まれている。
【発明の概要】
【0004】
概要
本開示の態様は、2つの独立したシステム間でシングルログアウトを行うための方法に関する。方法は、2つのシステムのうちの第1のシステムでユーザからログアウト要求を受信すること、2つのシステムのうちの第1のシステムからユーザをログアウトすること、および信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることを含む。いくつかの実施形態では、信頼機構が少なくとも1つのトークンを含むことができる。
【0005】
いくつかの実施形態では、信頼機構が少なくとも1つのトークンを含む。いくつかの実施形態では、ログアウト要求は、2つのシステムのうちの第1のシステムからのユーザのログアウトを指示する。いくつかの実施形態では、2つのシステムのうちの第1のシステムからユーザをログアウトすることは、第1のシステム上のユーザのセッションを期限切れにすることを含む。いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、ユーザを第2のシステムにリダイレクトすることを含む。
【0006】
いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、ユーザブラウザから第2のシステムにJSONウェブトークン(JWT)を送信することを含む。いくつかの実施形態では、JWTは、ログアウト後のリダイレクトURLとなり得る。いくつかの実施形態では、JWTは、IAMログイン秘密鍵をさらに含む。
【0007】
いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、第2のシステムのクッキーおよび/またはトークンをユーザブラウザからクリアすることを含む。いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、第2のシステムのアプリケーションからユーザをログアウトすることを含む。いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、第2のシステムからユーザブラウザにログアウトの確認を送信することを含み、ログアウトの確認はJWTを含む。いくつかの実施形態では、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることは、第2のシステムからのログアウトの完了の確認としてJWTをユーザブラウザから第1のシステムに送信することを含む。いくつかの実施形態では、方法は、フロントチャネルログアウトURLの通信を介して第1のシステムの他のアプリケーションをログアウトすることを含む。
【0008】
いくつかの実施形態では、2つのシステムのうちの第1のシステムは、属性ベースのアクセス制御(ABAC)システムである。いくつかの実施形態では、2つのシステムのうちの第2のシステムは役割ベースのアクセス制御(RBAC)システムである。いくつかの実施形態では、2つのシステムのうちの第1のシステムは、役割ベースのアクセス制御(RBAC)システムである。いくつかの実施形態では、2つのシステムのうちの第2のシステムは、属性ベースのアクセス制御(ABAC)システムである。いくつかの実施形態では、2つのシステムのうちの第1のシステムは、ユーザがログインされる第1のシステムの他のアプリケーションを識別し、ユーザをそれらの他のアプリケーションからログアウトする。いくつかの実施形態では、2つのシステムのうちの第2のシステムは、ユーザがログインされる第2のシステムの他のアプリケーションを識別し、ユーザがログインされる第2のシステムの他のアプリケーションにおけるフロントチャネルログアウトURLを受信し、ユーザがログインされる第2のシステムの他のアプリケーションによるフロントチャネルログアウトURLのロードを指示する。
【0009】
一態様は、第1のログインプロトコルを有する第1のアクセス制御システムと、第1のログインプロトコルとは独立した第2のログインプロトコルを有する第2のアクセス制御システムとを含むシステムに関する。第1のアクセス制御システムは、少なくとも1つの第1のプロセッサと、少なくとも1つの第1のプロセッサによって実行可能な複数の命令を含むメモリとを含む。第1のアクセス制御システムは、第1のアクセス制御システムでユーザからログアウト要求を受信し、ユーザを第1のアクセス制御システムからログアウトし、信頼機構を利用してユーザを第2のアクセス制御システムからログアウトすることができる。
【0010】
いくつかの実施形態では、ログアウト要求は、第1のアクセス制御システムからのユーザのログアウトを指示する。いくつかの実施形態では、第1のアクセス制御システムからユーザをログアウトすることは、第1のアクセス制御システム上のユーザのセッションを期限切れにすることを含む。いくつかの実施形態では、信頼機構を利用して第2のアクセス制御システムからユーザをログアウトすることは、ユーザを第2のアクセス制御システムにリダイレクトすることを含む。いくつかの実施形態では、信頼機構を利用して第2のアクセス制御システムからユーザをログアウトすることは、ユーザブラウザから第2のアクセス制御システムにJSONウェブトークン(JWT)を送信することを含む。
【0011】
一態様は、1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体に関する。複数の命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、2つのシステムのうちの第1のシステムでユーザからログアウト要求を受信させ、2つのシステムのうちの第1のシステムからユーザをログアウトさせ、信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトさせる。
【図面の簡単な説明】
【0012】
【
図1】典型的な実施形態を組み込む分散型マルチ領域環境の簡略化されたブロック図である。
【
図2】統合識別情報管理のためのシステムの一実施形態の概略図である。
【
図3】シングルログアウトのためのプロセスの一実施形態を示すフローチャートである。
【
図4】シングルログアウトのためのプロセスの他の実施形態を示すフローチャートである。
【
図5】少なくとも1つの実施形態に係る、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図6】少なくとも1つの実施形態に係る、サービスシステムとしてのクラウドインフラストラクチャを実装するための他のパターンを示すブロック図である。
【
図7】少なくとも1つの実施形態に係る、サービスシステムとしてのクラウドインフラストラクチャを実装するための他のパターンを示すブロック図である。
【
図8】少なくとも1つの実施形態に係る、サービスシステムとしてのクラウドインフラストラクチャを実装するための他のパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態に係る、コンピュータシステムの一例を示すブロック図である。
【発明を実施するための形態】
【0013】
詳細な説明
以下の説明では、説明の目的で、特定の実施形態の完全な理解をもたらすために特定の詳細が記載される。しかしながら、これらの特定の詳細を伴うことなく、さまざまな実施形態を実施できることは明らかである。図および説明は、限定することを意図したものではない。「典型的な」という言葉は、本明細書では「例、実例、または例示としての役割を果たす」という意味で使用される。本明細書で「典型的」として説明される実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0014】
本開示は、一般にクラウドコンピューティングに関し、具体的には、独立して認証されたシステムへのログアウトに関し、より具体的には、独立して認証されたシステムへのシングルログアウトに関する。
【0015】
CSPは、加入している顧客にクラウドサービスを提供するために使用されるインフラストラクチャおよびリソースを提供する。CSPが提供するリソースとしては、ハードウェアリソースおよびソフトウェアリソースを挙げることができる。これらのリソースとしては、たとえば、コンピューティングリソース(たとえば、コンピュータシステム、仮想マシン、コンテナ、アプリケーション、プロセッサ)、メモリリソース(たとえば、データベース、データストア)、ネットワーキングリソース(たとえば、ルーター、ロードバランサ)、識別情報およびアクセス管理リソース、およびその他のリソースを挙げることができる。クラウドサービスのセットを加入している顧客に提供するためにCSPによって提供されるリソースは、一般に、データセンタに編成され、各データセンタは1つまたは複数のコンピューティングシステムまたはホストマシンを備える。データセンタは、クラウドサービスの特定のセットを提供するように構成されてもよい。CSPは、クラウドサービスの特定のセットを提供するために使用されるコンピューティング、メモリ、ネットワーキングとリソースをデータセンタに装備して構成することに関与する。CSPは、加入している顧客の数に応じておよび顧客の所在地に基づいて1つまたは複数のデータセンタを提供してもよい。
【0016】
CSPが提供するデータセンタは、地理的に異なる領域でホストされてもよい。領域は、特定の地理的エリアを指し、領域名によって識別されてもよい。領域は、一般に、互いに独立しており、国または大陸さえもまたぐなど、非常に離れた場所にあってもよい。CSPの領域の例としては、米国西部、米国東部、オーストラリア東部、オーストラリア南東部などが挙げられる。特定の実施態様では、領域の集合がレルムと呼ばれる。レルムは1つまたは複数の領域を含むことができる。したがって、CSPは、1つまたは複数の領域を含むレルムを提供することができ、この場合、各領域は1つまたは複数のデータセンタを含む。
【0017】
したがって、各データセンタは領域と関連付けられる。CSPは、領域内に1つまたは複数のデータセンタを展開することができ、データセンタは、その領域内の特定の地理的エリア(たとえば、都市)内に位置される。たとえば、特定のCSPは、米国西部領域、米国東部領域、オーストラリア東部領域、オーストラリア南東部領域などの複数の領域を有してもよい。CSPは、領域内の都市など、各領域に1つまたは複数のデータセンタを展開してもよい。たとえば、米国西部領域の1つまたは複数のデータセンタがカリフォルニア州サンノゼにあってもよく、米国東部領域のデータセンタがバージニア州アッシュバーンにあってもよく、オーストラリア東部領域の1つまたは複数のデータセンタがオーストラリアのシドニーにあってもよく、オーストラリア南東部領域の1つまたは複数のデータセンタがオーストラリアのメルボルンにあってもよいなどである。2つの異なる領域にあるデータセンタは、クラウドサービスおよびリソースの同じまたは異なるセットを加入している顧客に提供してもよい。
【0018】
特定の実施態様では、顧客に高い可用性を提供するため、および災害復旧の目的で、領域内のデータセンタがさらに1つまたは複数の可用性ドメインに編成されてもよく、この場合、可用性ドメインは1つまたは複数のデータセンタを含む。領域内の可用性ドメインは、相互に分離され、フォールトトレラントになっており、領域内の複数の可用性ドメインにあるデータセンタが同時に障害を起こす可能性が非常に低いように設計される。たとえば、領域内の1つの可用性ドメインで障害が発生しても、同じ領域内の他の可用性ドメインにあるデータセンタの可用性に影響を与えにくいように、領域内の可用性ドメインが構造化されてもよい。
【0019】
クラウドサービスプロバイダ(CSP)は、加入している顧客に複数のクラウドサービスを提供してもよい。これらのサービスは、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルで提供されてもよい。
【0020】
クラウド環境では、一般に、クラウドサービスによって提供または使用されるリソースへのユーザアクセスを制御するために、CSPによって識別情報管理システムが提供される。識別情報管理システムによって提供される一般的なサービスまたは機能としては、ユーザのシングルサインオン機能、認証および認可サービス、その他の識別情報ベースのサービスが挙げられるが、これらに限定されない。
【0021】
識別情報管理システムによって保護されるリソースは、コンピューティングインスタンス、ブロックストレージボリューム、仮想クラウドネットワーク(VCN)、サブネット、ルートテーブル、さまざまな呼び出し可能なAPI、内部アプリケーションまたはレガシーアプリケーションなどのさまざまなタイプを成すことができる。これらのリソースとして、クラウドに保存されているリソースおよび/または顧客のオンプレミスリソースが挙げられる。各リソースは、一般に、リソースの作成時にリソースに割り当てられる固有の識別子(たとえば、ID)によって識別される。
【0022】
CSPは、それらのクラウド製品に2つ以上の個別の独立した識別情報管理システムを提供してもよい。これは、たとえば、第1の識別情報管理システムまたはプラットフォーム(たとえば、インフラストラクチャ識別情報およびアクセス管理(IAM))が、CSPによって提供されるIaaSアプリケーションおよびサービスのためのクラウドリソースへのアクセスを制御するために提供され得る場合に行われてもよい。別途、第2の識別情報管理システムまたはプラットフォーム(たとえば、識別情報クラウドサービス(IDCS))が、CSPによって提供されるSaaSおよびPaaSサービスのセキュリティおよび識別情報管理のために提供されてもよい。
【0023】
このような2つの別個のプラットフォームを提供する結果、CSPが提供するSaaSまたはPaaSサービスとIaaSサービスとの両方にCSPの顧客が加入する場合、その顧客は現在2つの別個のアカウント-IaaSサブスクリプション用のIAMを伴う1つのアカウント、PaaS/SaaSサブスクリプション用のIDCSを伴う別個のアカウント-を所有することになる。各アカウントには、ユーザログイン、パスワードなどの独自の資格情報がある。したがって、同じ顧客は2つの別個の資格情報セットを有する。この結果、顧客体験は満足のいくものではなくなり、顧客は2つの異なる資格情報セットを維持する必要があり、資格情報が2つのシステムで維持されるため、セキュリティリスクが増大する可能性がある。さらに、2つの個別の識別情報管理システムがあると、SaaS/PaaSサービスとIaaSサービスとの間の相互作用にも障害が生じる。
【0024】
このアプリケーションの目的のため、例として、2つのプラットフォームをIAMおよびIDCSと称する。これらの名前および用語は、いかなる形でも限定することを意図したものではない。本明細書で説明される開示は、統合される任意の2つ(またはそれ以上)の識別情報管理システムに適用される。識別情報管理システムまたはプラットフォームは、1つまたは複数のCSPによって提供されてもよい。
【0025】
特定の実施形態では、2つの別個のプラットフォーム(たとえば、IAMおよびIDCS)によって提供されるさまざまな特徴および機能を保持して提供しつつクラウドサービスのユーザまたは顧客に対して透過的な態様でCSPによって提供される複数の識別情報管理プラットフォーム(たとえば、IAMおよびIDCSプラットフォーム)を統合する、統合識別情報管理プラットフォームが提供される。したがって、統合により、よりシームレスで強化されたユーザ体験が提供される。
【0026】
しかしながら、2つのプラットフォームは識別情報関連機能の実装に異なる手順およびプロトコルを使用する場合があるため、この統合は技術的に非常に困難である。たとえば、IAMは、アクセス制御パラダイムを定義する、ポリシーベースのアクセス制御システムとしても知られている属性ベースのアクセス制御(ABAC)システムであり、これにより、多くの異なる属性を評価できる複雑なブール規則セットを表現するポリシーを使用してユーザにアクセス権が付与される。ABACの目的は、データ、ネットワークデバイス、ITリソースなどのオブジェクトを、組織のセキュリティポリシーで定義されている「承認された」特性を持たない不正なユーザおよびアクションから保護することである。一方、IDCSは、役割と特権を中心に定義されたポリシー中立のアクセス制御機構である役割ベースのアクセス制御(RBAC)システムであってもよい。役割-権限、ユーザ-役割、役割-役割の関係などのRBACの構成要素により、ユーザ割り当ての実行が簡単になる。さらに別の例として、2つのプラットフォームによって使用される認証および認可フレームワークまたはワークフロー(たとえば、使用されるトークンのタイプ、OAUTHなどの異なる認証フレームワークなど)が異なる場合がある。したがって、統合ソリューションを提供することは技術的に非常に困難である。
【0027】
ユーザがIAMおよびIDCSにサインオンすると、これらの複数のシステムからのサインオフに関連してさらに問題が発生する可能性がある。この問題を解決するために、シングルログアウトが開発される。ユーザは複数のアプリケーションにログインしている可能性があるが、シングルログアウトはそれらすべてのアプリケーションからユーザをログアウトする。これは、ユーザがIDCSを使用してユーザを直接ログアウトし、トークンの形式で信頼機構を利用してIAMからログアウトすることによって実現される。
【0028】
ユーザがIAMアプリケーション経由でログアウトしようとするか、IDCSアプリケーション経由でログアウトしようとするかに応じて、バックエンドワークフローは変わるが、ユーザ体験は同じままである。
【0029】
本開示で使用される「データセンタ」という用語は、データセンタを実装するために一緒に使用される1つまたは複数のコンピュータシステムを指す。たとえば、ホーム領域データセンタは、ホーム領域にデータセンタを実装するために使用される1つまたは複数のコンピュータシステムを指す。たとえば、グローバル領域データセンタは、グローバル領域データセンタを実装するために使用される1つまたは複数のコンピュータシステムを指す。データセンタを構成するコンピュータシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行される命令を記憶できる1つまたは複数のメモリとを含むことができる。このようなコンピュータシステムの一例を
図11に示して以下で説明する。
【0030】
図1は、典型的な実施形態を組み込んだ分散型マルチ領域環境100の簡略化されたブロック図である。分散型環境100は、通信ネットワーク130を介して互いに通信可能に接続される複数の領域のデータセンタを示す。例示を目的として、
図1に示される領域は、グローバル領域102、特定のテナンシーのホーム領域である領域112、およびそのテナンシーの非ホーム領域(すなわち、テナンシーのホーム領域ではない領域)である領域122を含む。さまざまな特徴を説明する目的で、非ホーム領域122は米国のフェニックス(ラベル「PHX」によって識別される)であり、ホーム領域112は米国のアッシュバーン(ラベル「ASH」によって識別される)であると仮定する。
【0031】
図1に示される各領域は、加入している顧客に加入ベースで1つまたは複数のクラウドサービスを提供するためにCSPによって提供されるインフラストラクチャを備える1つまたは複数のデータセンタを含むことができる。データセンタのインフラストラクチャは、CSPによって提供されるコンピューティング、メモリ、およびネットワーキングリソースを含むことができる。たとえば、
図1では、グローバル領域102はデータセンタ104(グローバル領域データセンタ104とも呼ばれる)を含み、ホーム領域112はデータセンタ114(ホーム領域データセンタ114とも呼ばれる)を含み、非ホーム領域122はデータセンタ124(非ホーム領域データセンタ124とも呼ばれる)を含む。
【0032】
さまざまな領域のデータセンタは、さまざまなコンピューティングシステム間の通信を容易にする通信ネットワーク130を介して、互いに、またユーザデバイス140に通信可能に結合され得る。通信ネットワーク130は、さまざまなタイプのものとすることができ、1つまたは複数の公衆ネットワークなどの1つまたは複数の通信ネットワークを含むことができる。通信ネットワーク130の例としては、制限なく、インターネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)ネットワーク、有線ネットワーク、無線ネットワークなど、およびそれらの組み合わせが挙げられる。IEEE802.XXプロトコルスイート、TCP/IP、IPX、SAN、AppleTalk(登録商標)、Bluetooth(登録商標)、およびさまざまな他のプロトコルなどの有線および無線プロトコルの両方を含む、通信ネットワーク130を介した通信を容易にするために、異なる通信プロトコルが使用されてもよい。一般に、通信ネットワーク130は、
図1に示されるさまざまなシステム間の通信を容易にする任意のインフラストラクチャを含むことができる。
【0033】
図1に示される実施形態において、各データセンタは、ログイン処理、セッション作成、認証/許可操作などの識別情報およびアクセス管理機能を実行するように構成される識別情報およびアクセス管理(IAM)アプリケーション(
図1ではログインアプリケーションと呼ばれる)をホストする。
図1において、グローバル領域データセンタ104は、ログインアプリケーション106(グローバルログインアプリケーション106とも呼ばれる)を含み、ホーム領域データセンタ114は、ログインアプリケーション116(ホーム領域ログインアプリケーション116とも呼ばれる)を含み、非ホーム領域データセンタ124はログインアプリケーション126を含む。
【0034】
前述したように、顧客に対してテナンシーアカウントが開設されると、ホーム領域がそのテナンシーに関連付けられる。一般に、そのテナンシー用に構成された識別情報およびアクセス管理(IAM)アーティファクトは、そのテナンシーのホーム領域のデータセンタに保存される。これらのIAMアーティファクトは、たとえば、ログイン資格情報、証明書、キーなどを含んでもよい。これらのアーティファクトは、たとえば、新しいセッション、認証または認可機能、そのテナンシーのための他の識別情報およびアクセス管理関連機能の作成時のログイン処理の実行に使用される。たとえば、テナンシーと関連付けられたユーザが保護されたリソースへのアクセスを要求する場合、ユーザがリソースにアクセスできるようにするための処理は、そのテナンシーのために構成されてテナンシーのホーム領域のホーム領域データセンタに保存されるIAMアーティファクトを使用して実行できる処理(たとえば、テナンシーログイン処理およびセッションの作成)を伴ってもよい。
【0035】
図1では、領域112がテナンシーT1のホーム領域であると仮定され、したがって、テナンシーT1におけるIAMリソース118および/またはIDCSリソース119は、ホーム領域データセンタ114によって格納される。レルム内の領域は、複数のテナンシーのためのホーム領域であり得る。また、レルム内では、1つの領域が第1のテナンシーのためのホーム領域となることができ、第2の異なる領域が第2のテナンシーのためのホーム領域になることができる、というようになる。前述したように、一般に、テナンシーにおけるIAMアーティファクトおよびリソース、および/またはIDCSアーティファクトおよびリソースは、そのテナンシーと関連付けられたホーム領域内のデータセンタに格納される。
【0036】
特定の実施態様では、テナンシーからホーム領域へのマッピング情報を使用して、テナンシーをそれらの対応するホーム領域にマッピングする。テナンシーからホーム領域へのマッピング情報は、異なるテナンシーにおけるホーム領域およびホーム領域データセンタを識別することができる。いくつかの実施形態では、任意の領域をグローバル領域とすることができ、したがって、すべての領域がテナンシーからホーム領域へのマッピングに関する情報を含むことができる。
図1の実施形態では、テナンシーからホーム領域へのマッピング情報108は、
図1に示される他のデータセンタによってではなくグローバル領域データセンタ104によって格納されるものとして示される。
【0037】
1つまたは複数のリソース(たとえばアプリケーション)は、異なるデータセンタによってホストされてもよい。これらのアプリケーションは、CSPが提供する1つまたは複数のクラウドサービスに加入している顧客と関連付けられたユーザによって使用されてもよい。たとえば、
図1では、アプリケーション「AppA」128が、領域122の非ホーム領域データセンタ124に展開される。
図1に示される例示のため、領域122がテナンシーT1に関して非ホーム領域であると仮定する。
【0038】
顧客テナンシーと関連付けられたユーザ142は、ユーザデバイス140を介して、
図1に示されるさまざまなデータセンタによって提供される1つまたは複数のサービスまたはリソース(たとえば、AppA128)にアクセスすることができる。ユーザデバイス140は、ラップトップ、デスクトップ、モバイルデバイスなどのコンピューティングデバイスであり得る。ユーザ142などのユーザがAppA128などのリソースにアクセスできるさまざまな方法がある。特定の使用例では、ユーザ142は、リソースにアクセスするためにユーザデバイス140上で実行されるアプリケーション(たとえば、ブラウザ)を使用することができる。たとえば、
図1では、ユーザ142は、ブラウザ144を使用してAppA128にアクセスすることができる。ユーザ142は、AppA128に対応するURLエンドポイントをブラウザ144に提供することによって、またはAppA128に対応するリンクをクリックすることなどによって、AppA128にアクセスすることができる。API呼び出しを行ってAppA128にアクセスすることもできる。
【0039】
AppA128は「保護された」リソースであってもよく、この場合、AppA128へのアクセスはIAMアプリケーションによって制御される。顧客テナンシーと関連付けられたユーザ(ユーザ142など)は、一般に、ユーザと関連付けられたユーザカウントまたはユーザプリンシパルによって識別される。ユーザ142は、このユーザカウントまたはユーザプリンシパルを通じて、AppA128などの保護されたリソースにアクセスできる。
【0040】
ブラウザ144は異なるタイプであってもよい。一般的に使用されるブラウザとしては、Google Chrome(登録商標)、Mozilla Firefox(登録商標)、Microsoft Edge、Internet Explorer(登録商標)、Apple Safari(登録商標)、および他が挙げられる。特定のブラウザ実装は、関連するストレージ機能を有してもよい。たとえば、ブラウザ144は、データベース145によって表されるブラウザ内ストレージを有する。ブラウザ144を使用してアクセスされるさまざまなエンドポイント、またはブラウザ144を使用してアクセスされるアプリケーションに関連する情報は、ユーザデバイス140上のデータベース145(ユーザデバイスに保存されるため、クライアント側ストレージと呼ばれる)。
【0041】
ここで
図2を参照すると、本明細書では統合識別情報管理プラットフォーム200とも呼ばれる、統合識別情報管理のためのシステム200の一実施形態の概略図が示される。システム200は、ユーザデバイス140となり得るユーザデバイス202、1つまたはいくつかのIAMサーバ204、および1つまたはいくつかのIDCSサーバ206を含む。いくつかの実施形態では、ユーザデバイス202は、ラップトップ、デスクトップ、モバイルデバイスなどのコンピューティングデバイスを備えることができる。1つまたはいくつかのIAMサーバ204および/または1つまたはいくつかのIDCSサーバ206はそれぞれ、たとえば1つまたはいくつかのサーバまたはサーバラックを含む1つまたはいくつかのコンピューティングリソースを備えることができる。1つまたはいくつかのIAMサーバ204および/または1つまたはいくつかのICDSサーバ206は、グローバル領域102、ホーム領域112、および/または非ホーム領域122のうちの1つまたはいくつかに位置することができる。
【0042】
いくつかのIAMサーバ204のうちの1つは、本明細書ではIAMログアウト208とも呼ばれる、IAMログイン208のインスタンスを含むことができる。いくつかの実施形態では、IAMログイン208のインスタンスは、ログインおよび/またはログアウトプロセスのすべてまたは一部の間にユーザと対話することができる。これらのインスタンスとしては、たとえば、ローカルインスタンス、グローバルインスタンス、および/またはホームインスタンスを挙げることができる。いくつかの実施形態では、ローカルインスタンスは、IAMアプリが実行されているサーバと同じ領域内のサーバ上で実行することができ、グローバルインスタンスは、共通のグローバルエンドポイントを含むサーバ上で実行することができ、ホームインスタンスは、ユーザがアクセスしようとしているテナンシーのホーム領域で実行することができる。
【0043】
いくつかのIAMサーバ204のうちの1つは、IAMによって保護されるアプリケーションであり得るIAMアプリケーション210をさらに含むことができる。いくつかの実施形態では、ユーザは、ログインしてIAMアプリケーション210にアクセスすることができ、IAMアプリケーション210の使用が完了すると、ログアウトすることができる。
【0044】
IDCSサーバ206の1つまたはいくつかのインスタンスは、IDCSによって保護されたアプリケーションとなり得るIDCSアプリケーション212を含むことができる。いくつかの実施形態では、ユーザは、ログインしてIDCSアプリケーション212にアクセスすることができ、IDCSアプリケーション212の使用が完了すると、ログアウトすることができる。
【0045】
ユーザは、ユーザデバイス202を用いて、1つまたはいくつかのIAMアプリケーション210を介してログインすることができ、または1つまたはいくつかのIDCSアプリケーション212を介してログインすることができる。同様に、ユーザは、1つまたはいくつかのIAMサーバ204上で実行される1つまたはいくつかのIAMアプリケーション210を介してログアウトすることができる、または、1つまたはいくつかのIDCSサーバ206上で実行される1つまたはいくつかのIDCSアプリケーション212を介してログアウトすることができる。
【0046】
いくつかの実施形態では、ユーザデバイス202は、たとえば通信ネットワーク130を介した有線または無線接続を介して、少なくとも1つのIAMサーバ204および少なくとも1つのIDCSサーバ206のうちの一方または両方に直接接続することができる。いくつかの実施形態では、ユーザデバイス202は、たとえば、1つまたはいくつかの通信ネットワークおよび/または1つまたはいくつかのコンピュータネットワークを介して、少なくとも1つのIAMサーバ204および少なくとも1つのIDCSサーバ206の一方または両方に直接接続することができる。いくつかの実施形態では、ユーザデバイス202は、たとえばインターネットを介して、少なくとも1つのIAMサーバ204および少なくとも1つのIDCSサーバ206の一方または両方に直接接続することができる。
【0047】
いくつかの実施形態では、IAMサーバ204およびIDCSサーバ206の一部またはすべては、同じ場所または異なる場所に配置することができる。いくつかの実施形態では、IAMサーバ204およびIDCSサーバ206の一部またはすべては、異なるコンピューティングネットワーク、異なるデータセンタ、異なる領域などに配置することができる。いくつかの実施形態では、本明細書で開示されるように独立したシステム間にシングルログアウトを適用すると、ユーザがIAMサーバ204およびIDCSサーバ206の一方からログアウトするときに、ユーザは、IAMサーバまたはIDCSサーバ206の他方からも自動的にログアウトされる。
【0048】
いくつかの実施形態では、方法は、2つのシステムのうちの第1のシステムでユーザからログアウト要求を受信することを含むことができる。これらの2つのシステムは、たとえば、IAMまたはIDCSを含むことができる。いくつかの実施形態では、ログアウト要求は、たとえばIAM保護アプリケーションまたはIDCS保護アプリケーションなどの保護アプリケーションを介してユーザから受信することができる。方法は、2つのシステムのうちの第1のシステムからユーザをログアウトし、次に信頼機構を利用して2つのシステムのうちの第2のシステムからユーザをログアウトすることを含む。信頼機構は少なくとも1つのトークンを含むことができる。
【0049】
いくつかの実施形態では、方法は、ユーザからログアウト要求を受信することを含むことができる。このログアウト要求は、2つのシステムのうちの第1のシステムからのユーザのログアウトを指示できる。これら2つのシステムは、たとえば、IAMまたはIDCSを含むことができる。方法は、第1のシステム上のユーザのセッションを期限切れにすることと、ユーザを第2のシステムにリダイレクトすることを含むことができる。したがって、いくつかの実施形態では、IAMおよびIDCSのうちの一方でセッションを期限切れにすることができ、その後、ユーザをIAMおよびIDCSのうちの他方にリダイレクトすることができる。方法は、ユーザブラウザから第2のシステムにJSONウェブトークン(JWT)を送信することと、ユーザブラウザから第2のシステムのクッキーおよび/またはトークンをクリアすることを含むことができる。ユーザを第2のシステムのアプリケーションからログアウトすることができ、第2のシステムからのログアウトの確認は第2のシステムからユーザブラウザに送信され得る。このログアウトの確認は、JWTを含むことができ、第2のシステムからのログアウトの完了の確認として、ユーザブラウザから第1のシステムにJWTを送信することを含むことができる。いくつかの実施形態では、JWTは、ログアウト後のリダイレクトURLを含む。方法は、フロントチャネルログアウトURLの通信を介して、第1のシステムの他のアプリケーションをログアウトすることを含むことができる。
【0050】
いくつかの実施形態では、2つのシステムのうちの第1のシステムは、属性ベースのアクセス制御(ABAC)システムを含み、2つのシステムのうちの第2のシステムは、役割ベースのアクセス制御(RBAC)システムを含む。いくつかの実施形態では、2つのシステムのうちの第1のシステムが役割ベースのアクセス制御(RBAC)システムを含み、2つのシステムのうちの第2のシステムが属性ベースのアクセス制御(ABAC)システムを含む。いくつかの実施形態では、2つのシステムのうちの第1のシステムは、ユーザがログインされる第1のシステムの他のアプリケーションを識別し、ユーザをそれらの他のアプリケーションからログアウトする。いくつかの実施形態では、2つのシステムのうちの第2のシステムは、ユーザがログインされる第2のシステムの他のアプリケーションを識別し、ユーザがログインされる第2のシステムの他のアプリケーションのフロントチャネルログアウトURLを受信し、ユーザがログインされる第2のシステムの他のアプリケーションによるフロントチャネルログアウトURLのロードを指示する。
【0051】
IAMアプリケーションから
ここで
図3を参照すると、シングルログアウトのプロセス300の一実施形態を示すフローチャートが示される。プロセス300は、システム200のすべてまたは一部によって実行することができる。プロセス300は、ステップ402に示すように、ユーザ142がユーザデバイス140を介して、IAM保護アプリケーション210からログアウトを選択するときに開始する。いくつかの実施形態では、ユーザは、たとえば、ログアウトボタンの操作、および/またはログアウトを指示する1つまたはいくつかのキーの押下など、ユーザインタフェース内の機能の操作を介して、ログアウトを選択することができる。ユーザは、IAM保護アプリケーション内で、および/またはIAM保護アプリケーション内からログアウトを選択できる。
【0052】
ステップ304で、アプリケーションドメイン内のブラウザストレージからトークンがクリアされる。いくつかの実施形態では、これらのトークンは、ユーザがログアウトを選択したことに応答して、ユーザブラウザによってクリアされる。いくつかの実施形態では、これらのトークンはアプリケーションドメイン内のトークンであり得る。ステップ306で、ユーザブラウザはユーザをIAMログイン、具体的にはIAMログイン208のインスタンスにリダイレクトする。ステップ308で、ユーザはIAMログインでログアウトするように指示される。
【0053】
ステップ310で、ユーザブラウザ内のユーザ情報がユーザブラウザのインデックス付きデータベース内でクリアされ、それによってセッションが期限切れになる。具体的には、IAMログイン208は、ユーザブラウザにユーザ情報をクリアするように指示する。これにより、ユーザブラウザのIAMログインドメインからのセッションが期限切れになり得る。
【0054】
ユーザブラウザは、ステップ312でIDCSログアウトにリダイレクトする。このリダイレクトの一部として、ユーザブラウザは、JSONウェブトークン(JWT)であり得るIAMトークンを送信する。このトークンは、たとえば、ユーザブラウザおよび/またはIAMログインの秘密キーを使用して署名できるログアウト後のリダイレクトURLを含むことができる。いくつかの実施形態では、このトークンは、IAMログインによってスタンプされるときに、ログアウト後のリダイレクトURLの信頼性を確保することができる。
【0055】
ステップ314で、IDCSは、ユーザブラウザ内のログイン関連クッキーおよび/またはトークンをクリアする。いくつかの実施形態では、これには、ユーザブラウザ内のIDCSドメインからのセッショントークンのクリアが含まれ得る。ステップ316で、IDCSはユーザブラウザをIAMログアウトにリダイレクトする。これには、IDCSからユーザブラウザへ、ユーザブラウザが移動すべき次のURLを送信することが含まれ得る。
【0056】
ステップ318で、ユーザブラウザは、ステップ312で既にIDCSに送信されたJWTをIAMログインに送信する。これには、ユーザブラウザがログインしているテナントおよび/またはドメインをIDCSに送信するユーザブラウザがさらに含まれ得る。IAMログインは、JWTを認識し、リダイレクト要求を信頼する。ステップ320で、IAMログインは、ユーザブラウザにフロントチャネルログアウトURLをロードするように指示する。これらのフロントチャネルは、ログインされる他のIAMアプリケーションのiframeを介してロードされ得る。いくつかの実施形態では、iframeは、ユーザおよび/またはユーザブラウザがログインしている他のアプリケーションのフロントチャネルログアウトURLをロードすることができる。ステップ322で、ユーザブラウザは他のアプリケーションにフロントチャネルログアウトURLをロードするように指示する。いくつかの実施形態では、フロントチャネルログアウトURLは、ログイン中に保存され得る。ステップ324で、ユーザブラウザは、JWT内に含まれるログアウト後のリダイレクトURLにリダイレクトする。
【0057】
IDCS側アプリケーションからのログアウト
ここで
図4を参照すると、シングルログアウトにおけるプロセス400の一実施形態を示すフローチャートが示される。プロセス400は、システム200のすべてまたは一部によって実行することができる。プロセス400は、IDCS保護アプリケーション212からのログアウトを開始するために実行され、その後、そのログアウトは、他のシステム、具体的にはユーザがログインされる任意のIAMアプリケーション210に伝播され得る。
【0058】
プロセス400は、ステップ402に示されるように、ユーザ142が、ユーザデバイス140を介して、IDCS保護アプリケーション212からログアウトすることを選択すると開始する。いくつかの実施形態では、ユーザは、ユーザインタフェース内の機能の操作を介して、たとえば、ログアウトボタンの操作を介しておよび/またはログアウトを指示する1つまたはいくつかのキーの押下を介して、ログアウトを選択することができる。ユーザは、IAM保護アプリケーション内で、および/またはIAM保護アプリケーション内からログアウトを選択できる。
【0059】
ステップ404で、アプリケーションドメイン内のブラウザストレージからトークンがクリアされる。いくつかの実施形態では、これらのトークンは、ユーザがログアウトを選択したことに応答して、ユーザブラウザによってクリアされる。いくつかの実施形態では、これらのトークンはアプリケーションドメイン内のトークンであり得る。ステップ406で、ブラウザはIDCSログアウトにリダイレクトする。ステップ408で、ユーザはIDCSでログアウトするように指示される。これには、ユーザブラウザとIDCSログアウトとの間でOauthプロトコルを開始すること、および/またはユーザブラウザからIDCSログアウトにトークンを送信することが含まれ得る。このトークンは、たとえば、ログアウト後のリダイレクトURLを含めることができるJWTトークンとなり得る。いくつかの実施形態では、JWTは、要求とコールバックとの間の状態を維持できる不透明な値となり得る値を含むことができる。
【0060】
ステップ410で、ユーザブラウザ内のユーザ情報がユーザブラウザのインデックス付きデータベース内でクリアされ、それによってセッションが期限切れになる。これには、たとえば、ユーザブラウザによって保存され得るトークンおよび/またはクッキーのクリアが含まれ得る。いくつかの実施形態では、このステップは、ユーザがログインされる他のIDCS保護アプリケーション212からユーザをログアウトすることをさらに含むことができる。いくつかの実施形態では、これは、ユーザが他のIDCS保護アプリケーション212にログインされるかどうかを決定するIDCSログアウトを含むことができ、ログインされる他のIDCS保護アプリケーション212が識別される場合、ユーザはそれらの他のIDCS保護アプリケーション212からログアウトされる。
【0061】
IDCSログアウトは、ステップ412でユーザブラウザをIAMログアウトにリダイレクトする。このリダイレクトの一部として、ユーザブラウザは、JSONウェブトークン(JWT)であり得るトークンを送信する。いくつかの実施形態では、JWTは、IDCS秘密鍵によって署名され得る。いくつかの実施形態では、このJWTを送信して、IDCSを検証できるようにすることができる。具体的には、ユーザブラウザはJWTトークンをIAMログアウトに送信し、IAMログインがIDCSにリダイレクトするときに、IDCSがJWTをユーザブラウザに送り返してIDCSを検証できるようにする。ステップ414で、テナント、ドメインなどを識別する情報を含み得るログアウト要求がIAMログインに送信される。いくつかの実施形態では、JWTをIAMログインに設定することもできる。ログアウト要求は、ユーザブラウザからIAMログインに送信され得る。いくつかの実施形態では、ログアウト要求は、要求間の状態を維持するために使用される不透明な値および/または文字列をさらに含むことができる。いくつかの実施形態では、このログアウト要求は、たとえば、不透明な値および/または文字列を含むことができるトークンを含むことができる。ステップ416で、IAMログインは、セッションを期限切れに設定するようにユーザブラウザに指示し、IAMを介してログインしたすべてのアプリのフロントチャネルログアウトURLが呼び出される。いくつかの実施形態では、これには、ユーザがログインしているIAM保護アプリケーションを識別することが含まれ得る、および/またはこれは、データリポジトリおよび/またはそれらが保存されているデータベースからフロントチャネルログアウトURLをクエリすることを含み得る。どの要求かに応じて、ユーザがログインされるIAMアプリケーションのフロントチャネルログアウトURLを取得して提供できる。
【0062】
ステップ418で、ログイン中に保存されたフロントチャネルログアウトURLがロードされる。いくつかの実施形態では、これには、取得されて提供されたフロントチャネルログアウトURLをロードすることが含まれ得る。ステップ420で、IAMログインはユーザブラウザをIDCSにリダイレクトする。ステップ422で、ユーザブラウザはトークンを送信し、ユーザブラウザ内のトークンにおけるログイン関連クッキーのクリアを引き起こす。いくつかの実施形態では、これは、ステップ414からJWTを送信し、最初にステップ408でIDCSログインに送信されたブラウザを含むことができる。いくつかの実施形態では、JWTの送信、および識別情報を検証するためのJWTの使用は、要求を通信し、通信情報が操作されないようにする安全な方法を提供することができる。IDCSログインは、受信したトークンに基づいて、IAMのログアウトの成功を信頼することができ、ステップ424に示すように、ユーザブラウザをログアウト後のリダイレクトURLにリダイレクトすることができる。いくつかの実施形態では、ログアウト後のリダイレクトURLは、たとえば、トークンに含まれ得る。ステップ426で、ログアウト後のリダイレクトURLがブラウザからユーザアプリケーションに提供される。
【0063】
典型的な実施形態
上で述べたように、サービスとしてのインフラストラクチャ(IaaS)は、クラウドコンピューティングの特定のタイプの1つである。IaaSは、パブリックネットワーク(たとえば、インターネット)経由で仮想化されたコンピューティングリソースを提供するように構成できる。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(たとえば、サーバ、ストレージデバイス、ネットワークノード(たとえば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(たとえば、ハイパーバイザ層)など)をホストすることができる。いくつかの例では、IaaSプロバイダは、これらのインフラストラクチャ構成要素に付随するさまざまなサービス(たとえば、請求、監視、ログ記録、負荷分散、クラスタリング)を提供する場合もある。したがって、これらのサービスはポリシー駆動型であるため、IaaSユーザは負荷分散を推進するポリシーを実装して、アプリケーションの可用性とパフォーマンスを維持できる可能性がある。
【0064】
いくつかの例では、IaaS顧客はインターネットなどのワイドエリアネットワーク(WAN)経由でリソースおよびサービスにアクセスし、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールできる。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)の作成、各VMへのオペレーティングシステム(OS)のインストール、データベースなどのミドルウェアの展開、ワークロードとバックアップ用のストレージバケットの作成、さらにはそのVMへのエンタープライズソフトウェアのインストールを行うことができる。その後、顧客は、プロバイダのサービスを使用して、ネットワークトラフィックのバランス、アプリケーションの問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などのさまざまな機能を実行できる。
【0065】
ほとんどの場合、クラウドコンピューティングモデルにはクラウドプロバイダの関与が必要である。クラウドプロバイダは、IaaSの供給(たとえば、提供、レンタル、販売)を専門とするサードパーティサービスであってもよいが、必ずしもそうである必要はない。企業は、プライベートクラウドを導入して、独自のインフラストラクチャサービスプロバイダになることも選択できる。
【0066】
いくつかの例では、IaaS展開は、新しいアプリケーションまたはアプリケーションの新しいバージョンを、準備されたアプリケーションサーバなどに配置するプロセスである。これには、サーバを準備するプロセス(たとえば、ライブラリ、デーモンなどのインストール)が含まれ得る。これは、多くの場合、ハイパーバイザ層(たとえば、サーバ、ストレージ、ネットワークハードウェア、仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、(OS)、ミドルウェア、および/またはアプリケーション展開(たとえば、セルフサービス仮想マシン(たとえば、オンデマンドでスピンアップできる))などの処理に関与することがある。
【0067】
いくつかの例では、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得し、それらに必要なライブラリまたはサービスをインストールすることさえも指す。ほとんどの場合、展開にはプロビジョニングが含まれていないため、最初にプロビジョニングを実行する必要がある場合がある。
【0068】
いくつかの例では、IaaSプロビジョニングには2つの異なる課題がある。まず、何かを実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させるという課題がある(たとえば、新しいサービスの追加、サービスの変更、サービスの削除)。いくつかの例では、インフラストラクチャの構成を宣言的に定義できるようにすることで、これら2つの課題に対処できる場合がある。言い換えれば、インフラストラクチャ(たとえば、どの構成要素が必要か、どのように相互作用するか)は1つまたは複数の構成ファイルによって定義できる。したがって、インフラストラクチャの全体的なトポロジ(たとえば、どのリソースがどのリソースに依存するか、およびそれぞれがどのように連携するか)を宣言的に記述することができる。いくつかの例では、トポロジが定義されると、構成ファイルに記述されているさまざまな構成要素を作成および/または管理するワークフローを生成できる。
【0069】
いくつかの例では、インフラストラクチャは相互接続された多数の要素を有することができる。たとえば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC)(たとえば、構成可能および/または共有コンピューティングリソースの潜在的にオンデマンドのプール)が存在する場合がある。いくつかの例では、ネットワークの受信トラフィックおよび/または送信トラフィックがどのように設定されるかを定義するためにプロビジョニングされた1つまたは複数の受信/送信トラフィックグループルールと1つまたは複数の仮想マシン(VM)が存在する場合もある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングできる。より多くのインフラストラクチャ要素が望まれたり追加されたりするにつれて、インフラストラクチャは段階的に進化する可能性がある。
【0070】
いくつかの例では、さまざまな仮想コンピューティング環境全体にインフラストラクチャコードを展開できるようにするために、継続的な展開手法が使用される場合がある。さらに、説明されている技術により、これらの環境内でのインフラストラクチャ管理が可能になる。いくつかの例では、サービスチームは、1つまたは複数の、しかし多くの場合、多くの異なる製造環境(たとえば、さまざまな地理的位置にまたがり、全世界に及ぶことがある)に展開されることが望ましいコードを書き込むことができる。しかしながら、いくつかの例では、コードを展開するインフラストラクチャを最初にセットアップする必要がある。いくつかの例では、プロビジョニングは手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、および/または展開ツールを利用して、インフラストラクチャがプロビジョニングされた後にコードを展開することができる。
【0071】
図5は、少なくとも1つの実施形態に係る、IaaSアーキテクチャのパターン例を示すブロック
図500である。サービスオペレータ502は、仮想クラウドネットワーク(VCN)506およびセキュアホストサブネット508を含むことができるセキュアホストテナンシー504に通信可能に結合することができる。いくつかの例では、サービスオペレータ502は、1つまたは複数のクライアントコンピューティングデバイスを使用することができ、クライアントコンピューティングデバイスは、Microsoft Windows Mobile(登録商標)、および/またはiOS、Windows Phone、Android、BlackBerry 8、Palm OSなどのさまざまなモバイルオペレーティングシステムなどのソフトウェアを実行するとともに、インターネット、電子メール、ショートメッセージサービス(SMS)、BlackBerry(登録商標)、または有効な他の通信プロトコルである、ポータブルハンドヘルドデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。あるいは、クライアントコンピューティングデバイスは、たとえば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。あるいは、またはさらに、クライアントコンピューティングデバイスは、シンクライアントコンピュータ、インターネット対応ゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスの有無にかかわらずMicrosoft Xboxゲームコンソール)および/または、VCN506および/またはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージングデバイスなどの他の電子デバイスであってもよい。
【0072】
VCN506は、セキュアシェル(SSH)VCN512に含まれるローカルピアリングゲートウェイ(LPG)510を介してSSH VCN512に通信可能に結合できるLPG510を含むことができる。SSH VCN512は、SSHサブネット514を含むことができ、そしてSSH VCN512は、コントロールプレーンVCN516に含まれるLPG510を介してコントロールプレーンVCN516に通信可能に結合することができる。また、SSH VCN512は、LPG510を介してデータプレーンVCN518に通信可能に結合することができる。コントロールプレーンVCN516およびデータプレーンVCN518は、IaaSプロバイダによって所有および/または運営され得るサービステナンシー519に含まれ得る。
【0073】
コントロールプレーンVCN516は、境界ネットワーク(たとえば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として機能するコントロールプレーン非武装地帯(DMZ)層520を含むことができる。DMZベースのサーバは責任が制限されており、侵害を阻止するのに役立つ。さらに、DMZ層520は、1つまたは複数のロードバランサ(LB)サブネット522、アプリサブネット526を含むことができるコントロールプレーンアプリ層524、データベース(DB)サブネット530(たとえば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができるコントロールプレーンデータ層528を含むことができる。コントロールプレーンDMZ層520に含まれるLBサブネット522は、コントロールプレーンアプリ層524に含まれるアプリサブネット526およびコントロールプレーンVCN516に含まれ得るインターネットゲートウェイ534に通信可能に結合することができ、アプリサブネット526は、コントロールプレーンデータ層528に含まれるDBサブネット530、サービスゲートウェイ536、およびネットワークアドレス変換(NAT)ゲートウェイ538に通信可能に結合することができる。コントロールプレーンVCN516は、サービスゲートウェイ536およびNATゲートウェイ538を含むことができる。
【0074】
コントロールプレーンVCN516は、アプリサブネット526を含むことができるデータプレーンミラーアプリ層540を含むことができる。データプレーンミラーアプリ層540に含まれるアプリサブネット526は、コンピューティングインスタンス544を実行できる仮想ネットワークインタフェースコントローラ(VNIC)542を含むことができる。コンピューティングインスタンス544は、データプレーンミラーアプリ層540のアプリサブネット526を、データプレーンアプリ層546に含まれることができるアプリサブネット526に通信可能に結合することができる。
【0075】
データプレーンVCN518は、データプレーンアプリ層546、データプレーンDMZ層548、およびデータプレーンデータ層550を含むことができる。データプレーンDMZ層548は、データプレーンアプリ層546のアプリサブネット526およびデータプレーンVCN518のインターネットゲートウェイ534に通信可能に接続することができるLBサブネット522を含むことができる。アプリサブネット526は、データプレーンVCN518のサービスゲートウェイ536およびデータプレーンVCN518のNATゲートウェイ538に通信可能に接続することができる。データプレーンデータ層550は、データプレーンアプリ層546のアプリサブネット526に通信可能に結合できるDBサブネット530を含むこともできる。
【0076】
コントロールプレーンVCN516およびデータプレーンVCN518のインターネットゲートウェイ534は、パブリックインターネット554に通信可能に接続できるメタデータ管理サービス552に通信可能に接続することができる。パブリックインターネット554は、コントロールプレーンVCN516およびデータプレーンVCN518のNATゲートウェイ538に通信可能に接続できる。コントロールプレーンVCN516およびデータプレーンVCN518のサービスゲートウェイ536は、クラウドサービス556に通信可能に結合することができる。
【0077】
いくつかの例では、コントロールプレーンVCN516またはデータプレーンVCN518のサービスゲートウェイ536は、パブリックインターネット554を経由せずにクラウドサービス556へのアプリケーションプログラミングインタフェース(API)呼び出しを行うことができる。サービスゲートウェイ536からクラウドサービス556へのAPI呼び出しは一方向であり得る。すなわち、サービスゲートウェイ536は、クラウドサービス556に対してAPI呼び出しを行うことができ、クラウドサービス556は、要求されたデータをサービスゲートウェイ536に送信することができる。しかし、クラウドサービス556は、サービスゲートウェイ536に対してAPI呼び出しを開始しなくてもよい。
【0078】
いくつかの例では、セキュアホストテナンシー504は、サービステナンシー519に直接接続することができるが、そうでなければ分離されてもよい。セキュアホストサブネット508は、LPG510を介してSSHサブネット514と通信することができ、LPG510は、そうでなければ分離されたシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット508をSSHサブネット514に接続すると、セキュアホストサブネット508にサービステナンシー519内の他のエンティティへのアクセスを与えることができる。
【0079】
コントロールプレーンVCN516は、サービステナンシー519のユーザが所望のリソースをセットアップまたはプロビジョニングできるようにすることができる。コントロールプレーンVCN516内にプロビジョニングされた所望のリソースは、データプレーンVCN518内で展開または使用され得る。いくつかの例では、コントロールプレーンVCN516は、データプレーンVCN518から分離可能であり、コントロールプレーンVCN516のデータプレーンミラーアプリ層540は、データプレーンミラーアプリ層540およびデータプレーンアプリ層546に含まれることができるVNIC542を介して、データプレーンVCN518のデータプレーンアプリ層546と通信することができる。
【0080】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス552に通信できるパブリックインターネット554を介して、たとえば作成、読み取り、更新、または削除(CRUD)操作などの要求を行うことができる。メタデータ管理サービス552は、インターネットゲートウェイ534を介してコントロールプレーンVCN516に要求を通信することができる。要求は、コントロールプレーンDMZ層520に含まれるLBサブネット522によって受信され得る。LBサブネット522は、要求が有効であると決定することができ、この決定に応答して、LBサブネット522は、コントロールプレーンアプリ層524に含まれるアプリサブネット526に要求を送信することができる。要求が検証され、パブリックインターネット554への呼び出しが必要な場合、パブリックインターネット554への呼び出しは、パブリックインターネット554への呼び出しを行うことができるNATゲートウェイ538に送信され得る。要求によって保存されることが望まれるメタデータは、DBサブネット530に保存され得る。
【0081】
いくつかの例では、データプレーンミラーアプリ層540は、コントロールプレーンVCN516とデータプレーンVCN518との間の直接通信を容易にすることができる。たとえば、構成に対する変更、更新、または他の適切な修正をデータプレーンVCN518に含まれるリソースに適用することが望ましい場合がある。VNIC542を介して、コントロールプレーンVCN516は、データプレーンVCN518に含まれるリソースと直接通信することができ、それにより、データプレーンVCN518に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0082】
いくつかの実施形態では、コントロールプレーンVCN516およびデータプレーンVCN518は、サービステナンシー519に含めることができる。この場合、システムのユーザまたは顧客は、コントロールプレーンVCN516またはデータプレーンVCN518のいずれも所有または運用することができない可能性がある。代わりに、IaaSプロバイダは、コントロールプレーンVCN516およびデータプレーンVCN518を所有または運用してもよく、これらは両方ともサービステナンシー519に含まれてもよい。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止できるネットワークの分離を可能にし得る。また、この実施形態により、システムのユーザまたは顧客は、所望のレベルの脅威防止を備えていない可能性があるパブリックインターネット554に記憶を依存する必要なく、データベースをプライベートに記憶することができる。
【0083】
他の実施形態では、コントロールプレーンVCN516に含まれるLBサブネット522は、サービスゲートウェイ536から信号を受信するように構成され得る。この実施形態では、コントロールプレーンVCN516およびデータプレーンVCN518は、パブリックインターネット554を呼び出すことなくIaaSプロバイダの顧客によって呼び出されるように構成され得る。IaaSプロバイダの顧客は、顧客が使用するデータベースがIaaSプロバイダによって制御されてパブリックインターネット554から分離される得るサービステナンシー519に格納され得るため、この実施形態を望む可能性がある。
【0084】
図6は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別のパターン例を示すブロック
図600である。サービスオペレータ602(たとえば、
図5のサービスオペレータ502)は、仮想クラウドネットワーク(VCN)606(たとえば、
図5のVCN506)およびセキュアホストサブネット608(たとえば、
図5のセキュアホストサブネット508)を含むことができるセキュアホストテナンシー604(たとえば、
図5のセキュアホストテナンシー504)に通信可能に結合することができる。VCN606は、セキュアシェル(SSH)VCN612に含まれるLPG510を介してSSH VCN612(たとえば、
図5のSSH VCN512)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)610(たとえば、
図5のLPG510)を含むことができる。SSH VCN612は、SSHサブネット614(たとえば、
図5のSSHサブネット514)を含むことができ、SSH VCN612は、コントロールプレーンVCN616に含まれるLPG610を介してコントロールプレーンVCN616(たとえば、
図5のコントロールプレーンVCN516)に通信可能に結合することができる。コントロールプレーンVCN616は、サービステナンシー619(たとえば、
図5のサービステナンシー519)に含めることができ、データプレーンVCN618(たとえば、
図5のデータプレーンVCN518)は、システムのユーザまたは顧客によって所有または運営され得る顧客テナンシー621に含めることができる。
【0085】
コントロールプレーンVCN616は、LBサブネット622(たとえば、
図5のLBサブネット522)を含むことができるコントロールプレーンDMZ層620(たとえば、
図5のコントロールプレーンDMZ層520)、アプリサブネット626(たとえば、
図5のアプリサブネット526)を含むことができるコントロールプレーンアプリ層624(たとえば、
図5のコントロールプレーンアプリ層524)、データベース(DB)サブネット630(たとえば、
図5のDBサブネット530と同様)を含むことができるコントロールプレーンデータ層628(たとえば、
図5のコントロールプレーンデータ層528)を含むことができる。コントロールプレーンDMZ層620に含まれるLBサブネット622は、コントロールプレーンアプリ層624に含まれるアプリサブネット626およびコントロールプレーンVCN616に含まれ得るインターネットゲートウェイ634(たとえば、
図5のインターネットゲートウェイ534)に通信可能に結合することができ、アプリサブネット626は、コントロールプレーンデータ層628に含まれるDBサブネット630およびサービスゲートウェイ636(たとえば、
図5のサービスゲートウェイ536)およびネットワークアドレス変換(NAT)ゲートウェイ638(たとえば、
図5のNATゲートウェイ538)に通信可能に結合され得る。コントロールプレーンVCN616は、サービスゲートウェイ636およびNATゲートウェイ638を含むことができる。
【0086】
コントロールプレーンVCN616は、アプリサブネット626を含むことができるデータプレーンミラーアプリ層640(たとえば、
図5のデータプレーンミラーアプリ層540)を含むことができる。データプレーンミラーアプリ層640に含まれるアプリサブネット626は、コンピューティングインスタンス644(たとえば、
図5のコンピューティングインスタンス544と同様)を実行することができる仮想ネットワークインタフェースコントローラ(VNIC)642(たとえば、542のVNIC)を含むことができる。コンピューティングインスタンス644は、データプレーンミラーアプリ層640に含まれるVNIC642とデータプレーンアプリ層646に含まれるVNIC642とを介した、データプレーンミラーアプリ層640のアプリサブネット626と、データプレーンアプリ層646(たとえば、
図5のデータプレーンアプリ層546)に含まれ得るアプリサブネット626との間の通信を容易にすることができる。
【0087】
コントロールプレーンVCN616に含まれるインターネットゲートウェイ634は、パブリックインターネット654(たとえば、
図5のパブリックインターネット554)に通信可能に結合され得るメタデータ管理サービス652(たとえば、
図5のメタデータ管理サービス552)に通信可能に結合することができる。パブリックインターネット654は、コントロールプレーンVCN616に含まれるNATゲートウェイ638に通信可能に結合することができる。コントロールプレーンVCN616に含まれるサービスゲートウェイ636は、クラウドサービス656(たとえば、
図5のクラウドサービス556)に通信可能に結合することができる。
【0088】
いくつかの例では、データプレーンVCN618は顧客テナンシー621に含めることができる。この場合、IaaSプロバイダは顧客ごとにコントロールプレーンVCN616を提供し、IaaSプロバイダは、客ごとに、サービステナンシー619に含まれる一意のコンピューティングインスタンス644を設定することができる。各コンピューティングインスタンス644は、サービステナンシー619に含まれるコントロールプレーンVCN616と、顧客テナンシー621に含まれるデータプレーンVCN618との間の通信を可能にすることができる。コンピューティングインスタンス644は、サービステナンシー619に含まれるコントロールプレーンVCN616にプロビジョニングされるリソースを、顧客テナンシー621に含まれるデータプレーンVCN618に展開できる、そうでなければ使用できるようにし得る。
【0089】
他の例では、IaaSプロバイダの顧客は、顧客テナンシー621内に存在するデータベースを有し得る。この例では、コントロールプレーンVCN616は、アプリサブネット626を含むことができるデータプレーンミラーアプリ層640を含むことができる。データプレーンミラーアプリ層640はデータプレーンVCN618内に存在することができるが、データプレーンミラーアプリ層640はデータプレーンVCN618内に存在しなくてもよい。つまり、データプレーンミラーアプリ層640は顧客テナンシー621にアクセスでき得るが、データプレーンミラーアプリ層640は、データプレーンVCN618に存在しなくてもよく、IaaSプロバイダの顧客によって所有または運用されなくてもよい。データプレーンミラーアプリ層640は、データプレーンVCN618への呼び出しを行うように構成されてもよいが、コントロールプレーンVCN616に含まれるエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、コントロールプレーンVCN616においてプロビジョニングされるデータプレーンVCN618内のリソースを展開するか、さもなければ使用することを望む場合があり、データプレーンミラーアプリ層640は、顧客のリソースの所望の展開または他の使用を容易にすることができる。
【0090】
いくつかの実施形態では、IaaSプロバイダの顧客はデータプレーンVCN618にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN618が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN618からパブリックインターネット654へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用したり、外部ネットワークまたはデータベースへのデータプレーンVCN618のアクセスを制御したりできない場合がある。顧客によるフィルタおよび制御を顧客テナンシー621に含まれるデータプレーンVCN618に適用することは、データプレーンVCN618を他の顧客およびパブリックインターネット654から隔離するのに役立つことができる。
【0091】
いくつかの実施形態では、クラウドサービス656は、パブリックインターネット654、コントロールプレーンVCN616、またはデータプレーンVCN618上に存在しなくてもよいサービスにアクセスするために、サービスゲートウェイ636によって呼び出すことができる。クラウドサービス656とコントロールプレーンVCN616またはデータプレーンVCN618との間の接続は、ライブまたは継続的でなくてもよい。クラウドサービス656は、IaaSプロバイダが所有または運営する異なるネットワーク上に存在してもよい。クラウドサービス656は、サービスゲートウェイ636から呼び出しを受信するように構成されてもよく、パブリックインターネット654から呼び出しを受信しないように構成されてもよい。一部のクラウドサービス656は、他のクラウドサービス656から分離されてもよく、コントロールプレーンVCN616は、コントロールプレーンVCN616と同じ領域内になくてもよいクラウドサービス656から分離されてもよい。たとえば、コントロールプレーンVCN616は「領域1」に位置されてもよく、クラウドサービス「展開5」は領域1および「領域2」に位置されてもよい。展開5への呼び出しが領域1に位置されるコントロールプレーンVCN616に含まれるサービスゲートウェイ636によって行われる場合、その呼び出しは、領域1の展開5に送信される。この例では、コントロールプレーンVCN616、または領域1内の展開5は、領域2内の展開5に通信可能に結合されなくてもよく、さもなければ領域2内の展開5と通信されなくてもよい。
【0092】
図7は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別のパターン例を示すブロック
図700である。サービスオペレータ702(たとえば、
図5のサービスオペレータ502)は、仮想クラウドネットワーク(VCN)706(たとえば、
図5のVCN506)およびセキュアホストサブネット708(たとえば、
図5のセキュアホストサブネット508)を含むことができるセキュアホストテナンシー704(たとえば、
図5のセキュアホストテナンシー504)に通信可能に結合することができる。VCN706は、SSH VCN712に含まれるLPG710を介してSSH VCN712(たとえば、
図5のSSH VCN512)に通信可能に結合できるLPG710(たとえば、
図5のLPG510)を含むことができる。SSH VCN712は、SSHサブネット714(たとえば、
図5のSSHサブネット514)を含むことができ、SSH VCN712は、コントロールプレーンVCN716に含まれるLPG710を介してコントロールプレーンVCN716(たとえば、
図5のコントロールプレーンVCN516)に通信可能に結合することができ、データプレーンVCN718に含まれるLPG710を介してデータプレーンVCN718(たとえば、
図5のデータプレーン518)に通信可能に結合することができる。コントロールプレーンVCN716およびデータプレーンVCN718は、サービステナンシー719(たとえば、
図5のサービステナンシー519)に含めることができる。
【0093】
コントロールプレーンVCN716は、ロードバランサ(LB)サブネット722(たとえば、
図5のLBサブネット522)を含むことができるコントロールプレーンDMZ層720(たとえば、
図5のコントロールプレーンDMZ層520)、アプリサブネット726(たとえば、
図5のアプリサブネット526と同様)を含むことができるコントロールプレーンアプリ層724(たとえば、
図5のコントロールプレーンアプリ層524)、DBサブネット730を含むことができるコントロールプレーンデータ層728(たとえば、
図5のコントロールプレーンデータ層528)を含むことができる。コントロールプレーンDMZ層720に含まれるLBサブネット722は、コントロールプレーンアプリ層724に含まれるアプリサブネット726およびコントロールプレーンVCN716に含まれ得るインターネットゲートウェイ734(たとえば、
図5のインターネットゲートウェイ534)に通信可能に結合することができ、アプリサブネット726は、コントロールプレーンデータ層728に含まれるDBサブネット730に対しておよびサービスゲートウェイ736(たとえば、
図5のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ738(たとえば、
図5のNATゲートウェイ538)に対して通信可能に結合され得る。コントロールプレーンVCN716は、サービスゲートウェイ736およびNATゲートウェイ738を含むことができる。
【0094】
データプレーンVCN718は、データプレーンアプリ層746(たとえば、
図5のデータプレーンアプリ層546)、データプレーンDMZ層748(たとえば、
図5のデータプレーンDMZ層548)、およびデータプレーンデータ層750(たとえば、
図5のデータプレーンデータ層550)を含むことができる。データプレーンDMZ層748はLBサブネット722を含むことができ、LBサブネット722は、データプレーンアプリ層746の信頼できるアプリサブネット760および信頼できないアプリサブネット762と、データプレーンVCN718に含まれるインターネットゲートウェイ734とに通信可能に結合できる。信頼できるアプリサブネット760は、データプレーンVCN718に含まれるサービスゲートウェイ736、データプレーンVCN718に含まれるNATゲートウェイ738、およびデータプレーンデータ層750に含まれるDBサブネット730に通信可能に結合することができる。信頼できないアプリサブネット762は、データプレーンVCN718に含まれるサービスゲートウェイ736およびデータプレーンデータ層750に含まれるDBサブネット730に通信可能に結合することができる。データプレーンデータ層750は、データプレーンVCN718に含まれるサービスゲートウェイ736に通信可能に結合され得るDBサブネット730を含むことができる。
【0095】
信頼できないアプリサブネット762は、テナント仮想マシン(VM)766(1)~(N)に通信可能に結合できる1つまたは複数の一次VNIC764(1)~(N)を含むことができる。各テナントVM766(1)~(N)は、それぞれの顧客テナンシー770(1)~(N)に含まれ得るそれぞれのコンテナ出力VCN768(1)~(N)に含まれることができるそれぞれのアプリサブネット767(1)~(N)に通信可能に結合することができる。それぞれの二次VNIC772(1)~(N)は、データプレーンVCN718に含まれる信頼できないアプリサブネット762と、コンテナ出力VCN768(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出力VCN768(1)~(N)は、パブリックインターネット754(たとえば、
図5のパブリックインターネット554)に通信可能に結合できるNATゲートウェイ738を含むことができる。
【0096】
コントロールプレーンVCN716に含まれるとともにデータプレーンVCN718に含まれるインターネットゲートウェイ734は、パブリックインターネット754に通信可能に結合できるメタデータ管理サービス752(たとえば、
図5のメタデータ管理システム552)に通信可能に結合され得る。パブリックインターネット754は、コントロールプレーンVCN716に含まれるとともにデータプレーンVCN718に含まれるNATゲートウェイ738に通信可能に接続することができる。コントロールプレーンVCN716に含まれるとともにデータプレーンVCN718に含まれるサービスゲートウェイ736は、クラウドサービス756に通信可能に結合される。
【0097】
いくつかの実施形態では、データプレーンVCN718は、顧客テナンシー770と統合することができる。この統合は、コード実行時のサポートを望む場合など、いくつかの例では、IaaSプロバイダの顧客にとって有用または望ましい場合がある。顧客は、破壊的な可能性があるコード、他の顧客リソースと通信する可能性のあるコード、またはその他の望ましくない影響を引き起こす可能性のある実行コードを提供してもよい。これに応じて、IaaSプロバイダは、顧客からIaaSプロバイダに提供されたコードを実行するかどうかを決定できる。
【0098】
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダに一時的なネットワークアクセスを許可し、データプレーンアプリ層746に付加される機能を要求してもよい。機能を実行するコードはVM766(1)~(N)で実行されてもよく、該コードは、データプレーンVCN718上の他の場所で実行されるように構成されなくてもよい。各VM766(1)~(N)は、1つの顧客テナンシー770に接続されてもよい。VM766(1)~(N)に含まれるそれぞれのコンテナ771(1)~(N)はコードを実行するように構成されてもよい。この場合、二重分離が存在する可能性があり(たとえば、コンテナ771(1)~(N)がコードを実行する場合、コンテナ771(1)~(N)は、信頼できないアプリサブネット762に含まれる少なくともVM766(1)~(N)に含まれ得る)、この二重分離は、不正なコードまたはその他の望ましくないコードがIaaSプロバイダのネットワークに損害を与えたり、別の顧客のネットワークに損害を与えたりすることを防ぐのに役立つ。コンテナ771(1)~(N)は、顧客テナンシー770に通信可能に結合されてもよく、顧客テナンシー770からデータを送信または受信するように構成されてもよい。コンテナ771(1)~(N)は、データプレーンVCN718内の任意の他のエンティティからデータを送受信するように構成されなくてもよい。コードの実行が完了すると、IaaSプロバイダは、コンテナ771(1)~(N)を強制終了するか、その他の方法で処分することができる。
【0099】
いくつかの実施形態では、信頼できるアプリサブネット760は、IaaSプロバイダによって所有または運用され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット760は、DBサブネット730に通信可能に結合されるとともに、DBサブネット730内でCRUD操作を実行するように構成され得る。信頼できないアプリサブネット762は、DBサブネット730に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット730内で読み取り操作を実行するように構成され得る。各顧客のVM766(1)~(N)に含めることができるとともに顧客からのコードを実行できるコンテナ771(1)~(N)は、DBサブネット730と通信可能に結合されなくてもよい。
【0100】
他の実施形態では、コントロールプレーンVCN716およびデータプレーンVCN718は、直接通信可能に結合されなくてもよい。この実施形態では、コントロールプレーンVCN716とデータプレーンVCN718との間に直接的な通信が存在しなくてもよい。しかしながら、通信は、少なくとも1つの方法を通じて間接的に行うことができる。LPG710は、コントロールプレーンVCN716とデータプレーンVCN718との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、コントロールプレーンVCN716またはデータプレーンVCN718は、サービスゲートウェイ736を介してクラウドサービス756への呼び出しを行うことができる。たとえば、コントロールプレーンVCN716からクラウドサービス756への呼び出しは、データプレーンVCN718と通信できるサービスに対する要求を含むことができる。
【0101】
図8は、少なくとも1つの実施形態に係る、IaaSアーキテクチャの別のパターン例を示すブロック
図800である。サービスオペレータ802(たとえば、
図5のサービスオペレータ502)は、仮想クラウドネットワーク(VCN)806(
図5のVCN506)およびセキュアホストサブネット808(たとえば、
図5のセキュアホストサブネット508)を含むことができるセキュアホストテナンシー804(たとえば、
図5のセキュアホストテナンシー504)に通信可能に結合することができる。VCN806は、SSH VCN812に含まれるLPG810を介してSSH VCN812(たとえば、
図5のSSH VCN512)に通信可能に結合できるLPG810(たとえば、
図5のLPG510)を含むことができる。SSH VCN812は、SSHサブネット814(たとえば、
図5のSSHサブネット514)を含むことができ、SSH VCN812は、コントロールプレーンVCN816に含まれるLPG810を介してコントロールプレーンVCN816(たとえば、
図5のコントロールプレーンVCN516)に通信可能に結合することができるとともに、データプレーンVCN818に含まれるLPG810を介してデータプレーンVCN818(たとえば、
図5のデータプレーン518)に通信可能に結合することができる。コントロールプレーンVCN816およびデータプレーンVCN818は、サービステナンシー819(たとえば、
図5のサービステナンシー519)に含めることができる。
【0102】
コントロールプレーンVCN816は、LBサブネット822(たとえば、
図5のLBサブネット522)を含むことができるコントロールプレーンDMZ層820(たとえば、
図5のコントロールプレーンDMZ層520)、アプリサブネット826(たとえば、
図5のアプリサブネット526)を含むことができるコントロールプレーンアプリ層824(たとえば、
図5のコントロールプレーンアプリ層524)、DBサブネット830(たとえば、
図7のDBサブネット730)を含むことができるコントロールプレーンデータ層828(たとえば、
図5のコントロールプレーンデータ層528)を含むことができる。コントロールプレーンDMZ層820に含まれるLBサブネット822は、コントロールプレーンアプリ層824に含まれるアプリサブネット826に対しておよびコントロールプレーンVCN816に含まれ得るインターネットゲートウェイ834(たとえば、
図5のインターネットゲートウェイ534)に対して通信可能に結合することができ、アプリサブネット826は、コントロールプレーンデータ層828に含まれるDBサブネット830に対しておよびサービスゲートウェイ836(たとえば、
図5のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ838(たとえば、
図5のNATゲートウェイ538)に対して通信可能に結合され得る。コントロールプレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を含むことができる。
【0103】
データプレーンVCN818は、データプレーンアプリ層846(たとえば、
図5のデータプレーンアプリ層546)、データプレーンDMZ層848(たとえば、
図5のデータプレーンDMZ層548)、およびデータプレーンデータ層850(たとえば、
図5のデータプレーンデータ層550)を含むことができる。データプレーンDMZ層848は、データプレーンアプリ層846の信頼できるアプリサブネット860(たとえば、
図7の信頼できるアプリサブネット760)および信頼できないアプリサブネット862(たとえば、
図7の信頼できないアプリサブネット762)とデータプレーンVCN818に含まれるインターネットゲートウェイ834とに通信可能に結合できるLBサブネット822を含むことができる。信頼できるアプリサブネット860は、データプレーンVCN818に含まれるサービスゲートウェイ836、データプレーンVCN818に含まれるNATゲートウェイ838、およびデータプレーンデータ層850に含まれるDBサブネット830に通信可能に結合することができる。信頼できないアプリサブネット862は、データプレーンVCN818に含まれるサービスゲートウェイ836およびデータプレーンデータ層850に含まれるDBサブネット830に通信可能に結合することができる。データプレーンデータ層850は、データプレーンVCN818に含まれるサービスゲートウェイ836に通信可能に結合され得るDBサブネット830を含むことができる。
【0104】
信頼できないアプリサブネット862は、信頼できないアプリサブネット862内に常駐するテナント仮想マシン(VM)866(1)~(N)に通信可能に結合できる一次VNIC864(1)~(N)を含むことができる。各テナントVM866(1)~(N)は、それぞれのコンテナ867(1)~(N)内でコードを実行することができるとともに、コンテナ出力VCN868に含まれ得るデータプレーンアプリ層846に含めることができるアプリサブネット826に通信可能に結合することができる。それぞれの二次VNIC872(1)~(N)は、データプレーンVCN818に含まれる信頼できないアプリサブネット862とコンテナ出力VCN868に含まれるアプリサブネットとの間の通信を容易にすることができる。コンテナ出力VCNは、パブリックインターネット854(たとえば、
図5のパブリックインターネット554)に通信可能に結合できるNATゲートウェイ838を含むことができる。
【0105】
コントロールプレーンVCN816に含まれるとともにデータプレーンVCN818に含まれるインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合できるメタデータ管理サービス852(たとえば、
図5のメタデータ管理システム552)に通信可能に結合され得る。パブリックインターネット854は、コントロールプレーンVCN816に含まれるとともにデータプレーンVCN818に含まれるNATゲートウェイ838に通信可能に結合することができる。コントロールプレーンVCN816に含まれるとともにデータプレーンVCN818に含まれるサービスゲートウェイ836は、クラウドサービス856に通信可能に結合される。
【0106】
いくつかの例では、
図8のブロック
図800のアーキテクチャによって示されるパターンは、
図7のブロック
図700のアーキテクチャによって示されるパターンの例外であると考えることができ、IaaSプロバイダが顧客と直接通信できない場合(たとえば、切断された領域)にIaaSプロバイダの顧客にとって望ましい場合がある。それぞれの顧客ごとにVM866(1)~(N)に含まれるそれぞれのコンテナ867(1)~(N)には、顧客がリアルタイムでアクセスすることができる。コンテナ867(1)~(N)は、コンテナ出力VCN868に含めることができるデータプレーンアプリ層846のアプリサブネット826に含まれるそれぞれの二次VNIC872(1)~(N)に呼び出しを行うように構成され得る。二次VNIC872(1)~(N)は、パブリックインターネット854に呼び出しを送信できるNATゲートウェイ838に呼び出しを送信することができる。この例では、顧客によってリアルタイムにアクセスできるコンテナ867(1)~(N)は、コントロールプレーンVCN816から分離することができ、データプレーンVCN818に含まれる他のエンティティから分離することができる。コンテナ867(1)~(N)は、他の顧客からのリソースからも分離することができる。
【0107】
他の例では、顧客は、コンテナ867(1)~(N)を使用して、クラウドサービス856を呼び出すことができる。この例では、顧客は、クラウドサービス856からサービスを要求するコンテナ867(1)~(N)内でコードを実行することができる。コンテナ867(1)~(N)は、この要求を二次VNIC872(1)~(N)に送信することができ、二次VNIC872(1)~(N)は、要求をパブリックインターネット854に送信できるNATゲートウェイに要求を送信することができる。パブリックインターネット854は、インターネットゲートウェイ834を介して、コントロールプレーンVCN816に含まれるLBサブネット822に要求を送信することができる。要求が有効であるとの決定に応答して、LBサブネットは、サービスゲートウェイ836を介してクラウドサービス856に要求を送信することができるアプリサブネット826に要求を送信することができる。
【0108】
図示されたIaaSアーキテクチャ500、600、700、800は、示されたもの以外の構成要素を有し得ることを理解すべきである。さらに、図示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図示されているよりも多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有してもよい。
【0109】
特定の実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、サブスクリプションベースの、弾力的に拡張可能な、信頼性が高い、可用性が高い、安全な態様で顧客に提供される一連のアプリケーション、ミドルウェア、およびデータベースサービス製品を含むことができる。このようなIaaSシステムの一例は、本譲受人が提供するOracle Cloud Infrastructure(OCI)である。
【0110】
図9は、さまざまな実施形態が実装され得る例示的なコンピュータシステム900を示す。システム900は、前述のコンピュータシステムのいずれかを実装するために使用することができる。図示のように、コンピュータシステム900は、バスサブシステム902を介して多くの周辺サブシステムと通信する処理ユニット904を含む。これらの周辺サブシステムとしては、処理加速ユニット906、I/Oサブシステム908、記憶サブシステム918および通信サブシステム924を挙げることができる。記憶サブシステム918は、有形のコンピュータ可読記憶媒体922およびシステムメモリ910を含む。
【0111】
バスサブシステム902は、コンピュータシステム900のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム902は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム902は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。たとえば、そのようなアーキテクチャとしては、IEEE P1386.1規格に従って製造されたメザニンバスとして実装され得る、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスを挙げることができる。
【0112】
処理ユニット904は、1つまたは複数の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム900の動作を制御する。1つまたは複数のプロセッサが処理ユニット904に含まれてもよい。これらのプロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット904は、各処理ユニットに含まれるシングルコアプロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理ユニット932および/または934として実装され得る。他の実施形態では、処理ユニット904は、2つのデュアルコアプロセッサを単一のチップに組み込むことによって形成されるクアッドコア処理ユニットとして実装されてもよい。
【0113】
さまざまな実施形態において、処理ユニット904は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ904および/または記憶サブシステム918に常駐することができる。適切なプログラミングを通じて、プロセッサ904は、前述のさまざまな機能を提供することができる。コンピュータシステム900は、デジタルシグナルプロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速ユニット906をさらに含むことができる。
【0114】
I/Oサブシステム908は、ユーザインタフェース入力デバイスおよびユーザインタフェース出力デバイスを含むことができる。ユーザインタフェース入力デバイスとしては、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴うオーディオ入力デバイス、マイク、その他のタイプの入力デバイスを挙げることができる。ユーザインタフェース入力デバイスとしては、たとえば、ジェスチャと音声コマンドとを使用した自然なユーザインタフェースを介してユーザがMicrosoft Xbox(登録商標)360ゲームコントローラなどの入力デバイスを制御して入力デバイスと対話できるようにするMicrosoft Kinect(登録商標)モーションセンサなどのモーションセンシングおよび/またはジェスチャ認識デバイスを挙げることができる。ユーザインタフェース入力デバイスとしては、ユーザからの眼の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出して入力として眼のジェスチャを入力デバイス(たとえば、Google Glass(登録商標))に変換するGoogle Glass(登録商標)まばたき検出器などのアイジェスチャ認識デバイスを挙げることもできる。さらに、ユーザインタフェース入力デバイスとしては、ユーザが音声コマンドを通じて音声認識システム(たとえば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシングデバイスを挙げることができる。
【0115】
ユーザインタフェース入力デバイスとしては、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカ、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤ、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、視線追跡デバイスなどのオーディオ/ビジュアルデバイス、などを挙げることもできるが、これらに限定されない。さらに、ユーザインタフェース入力デバイスとしては、たとえば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査装置などの医療用画像入力装置を挙げることができる。ユーザインタフェース入力デバイスとしては、たとえば、MIDIキーボード、デジタル楽器などのオーディオ入力デバイスを挙げることもできる。
【0116】
ユーザインタフェース出力デバイスとしては、ディスプレイサブシステム、インジケータライト、またはオーディオ出力デバイスなどの非視覚的ディスプレイなどを挙げることができる。ディスプレイサブシステムは、陰極線管(CRT)、フラットパネルデバイス、たとえば、液晶ディスプレイ(LCD)またはプラズマディスプレイ、投影装置、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という用語の使用は、コンピュータシステム900からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプのデバイスおよび機構を含むことを意図している。たとえば、ユーザインタフェース出力デバイスとしては、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示デバイス、たとえば、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッター、音声出力デバイス、およびモデムを挙げることができるが、これらに限定されない。
【0117】
コンピュータシステム900は、本開示で説明される実施形態の機能を提供するソフトウェアおよびデータ構造を記憶するための有形の非一時的コンピュータ可読記憶媒体を提供する記憶サブシステム918を備えることができる。ソフトウェアは、処理ユニット904の1つまたは複数のコアまたはプロセッサによって実行されると、前述の機能を提供するプログラム、コードモジュール、命令、スクリプトなどを含むことができる。記憶サブシステム918はまた、本開示に従って使用されるデータを格納するためのリポジトリを提供することもできる。
【0118】
図9の例に示すように、記憶サブシステム918は、システムメモリ910、コンピュータ可読記憶媒体922、およびコンピュータ可読記憶媒体リーダ920を含むさまざまな構成要素を含むことができる。システムメモリ910は、処理ユニット904によってロード可能および実行可能なプログラム命令を格納することができる。システムメモリ910はまた、命令の実行中に使用されるデータ、および/またはプログラム命令の実行中に生成されるデータを格納することもできる。クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)、仮想マシン、コンテナなどを含むがこれらに限定されない、さまざまな異なる種類のプログラムをシステムメモリ910にロードすることができる。
【0119】
システムメモリ910は、オペレーティングシステム916を記憶することもできる。オペレーティングシステム916の例としては、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョン、市販のさまざまなUNIX(登録商標)またはUNIXに似たオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)および/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを挙げることができる。コンピュータシステム900が1つまたは複数の仮想マシンを実行する特定の実装形態では、仮想マシンは、そのゲストオペレーティングシステム(GOS)とともにシステムメモリ910にロードされ、処理ユニット904の1つまたは複数のプロセッサまたはコアによって実行され得る。
【0120】
システムメモリ910は、コンピュータシステム900のタイプに応じて異なる構成にすることができる。たとえば、システムメモリ910は、揮発性メモリ(ランダムアクセスメモリ(RAM)など)および/または不揮発性メモリ(読み取り専用メモリなど)であってもよい。スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などを含む、さまざまなタイプのRAM構成を提供できる。いくつかの実装形態では、システムメモリ910は、起動中など、コンピュータシステム900内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)を含み得る。
【0121】
コンピュータ可読記憶媒体922は、リモート、ローカル、固定、および/またはリムーバブルストレージデバイスに加えて、コンピュータシステム900の処理ユニット904によって実行可能な命令を含む、コンピュータシステム900によって使用されるコンピュータ可読情報を一時的および/またはより永続的に収容、保存するための記憶媒体に相当し得る。
【0122】
コンピュータ可読記憶媒体922は、限定されないが、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体などの記憶媒体および通信媒体を含む、当技術分野で知られているか使用されている任意の適切な媒体を含むことができる。これには、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリまたはその他のメモリ技術、CD-ROM、デジタルバーサタイルディスク(DVD)またはその他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、またはその他の有形のコンピュータ可読記憶媒体などの有形のコンピュータ可読ストレージ媒体を挙げることができる。
【0123】
一例として、コンピュータ可読記憶媒体922としては、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、および、CD-ROM、DVD、Blu-Ray(登録商標)ディスクなどのリムーバブル不揮発性光ディスク、またはその他の光学媒体の読み取りまたは書き込みを行う光ディスクドライブを挙げることができる。コンピュータ可読記憶媒体922としては、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを挙げることができるが、これらに限定されない。コンピュータ可読記憶媒体922としては、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDなどの揮発性メモリに基づくSSDを挙げることもできる。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージをコンピュータシステム900に提供することができる。
【0124】
処理ユニット904の1つまたは複数のプロセッサまたはコアによって実行可能な機械可読命令は、非一時的コンピュータ可読記憶媒体に記憶され得る。非一時的コンピュータ可読記憶媒体としては、物理的に有形のメモリ、または揮発性メモリストレージデバイスおよび/または不揮発性ストレージデバイスを含むストレージデバイスを挙げることができる。非一時的コンピュータ可読記憶媒体の例としては、磁気記憶媒体(たとえば、ディスクまたはテープ)、光記憶媒体(たとえば、DVD、CD)、さまざまなタイプのRAM、ROM、またはフラッシュメモリ、ハードドライブ、フロッピー(登録商標)ドライブ、取り外し可能なメモリドライブ(たとえば、USBドライブ)、または他のタイプのストレージデバイスが挙げられる。
【0125】
通信サブシステム924は、他のコンピュータシステムおよびネットワークへのインタフェースを提供する。通信サブシステム924は、コンピュータシステム900から他のシステムとの間でデータを送受信するためのインタフェースとして機能する。たとえば、通信サブシステム924は、コンピュータシステム900がインターネットを介して1つまたは複数のデバイスに接続できるようにすることができる。いくつかの実施形態では、通信サブシステム924としては、無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素(たとえば、携帯電話技術、3G、4GまたはEDGE(世界規模の拡張データレート)、WiFi(登録商標)(IEEE802.11ファミリー規格)、または他の移動通信技術、またはそれらの任意の組み合わせなどの高度なデータネットワーク技術を使用する)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を挙げることができる。いくつかの実施形態では、通信サブシステム924は、無線インタフェースに加えてまたは代わりに有線ネットワーク接続(たとえば、イーサネット)を提供することができる。
【0126】
いくつかの実施形態では、通信サブシステム924は、コンピュータシステム900を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード926、イベントストリーム928、イベント更新930などの形式で入力通信を受信することもできる。
【0127】
一例として、通信サブシステム924は、ソーシャルネットワークおよび/またTwitter(登録商標)フィード、Facebook(登録商標)更新、ウェブフィード、たとえばリッチサイトサマリ(RSS)フィード、および/または1つまたは複数のサードパーティ情報ソースからのリアルタイム更新などの他の通信サービスのユーザからリアルタイムでデータフィード926を受信するように構成され得る。
【0128】
さらに、通信サブシステム924は、リアルタイムイベントおよび/またはイベント更新930のイベントストリーム928を含むことができる連続データストリームの形式でデータを受信するように構成することもでき、これらは本質的に連続的または明示的な終了のない無制限であり得る。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融ティッカー、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを挙げることができる。
【0129】
通信サブシステム924は、構造化および/または非構造化データフィード926、イベントストリーム928、イベント更新930などを、コンピュータシステム900に結合された1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0130】
コンピュータシステム900は、ハンドヘルドポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つとなり得る。
【0131】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されたコンピュータシステム900の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。たとえば、カスタマイズされたハードウェアも使用される場合があり、かつ/または特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、もしくはその組み合わせで実装される場合がある。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の方法および/または方法を理解し得る。
【0132】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構造、および均等物も本開示の範囲内に含まれる。実施形態は、特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、本開示の範囲が説明した一連のトランザクションおよびステップに限定されないことは当業者には明らかである。前述の実施形態のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。
【0133】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して実施形態を説明したが、ハードウェアとソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。ここで説明するさまざまなプロセスは、同じプロセッサ上で実装することも、異なるプロセッサを任意に組み合わせて実装することもできる。したがって、構成要素またはモジュールが特定の動作を実行するように構成されていると説明されている場合、そのような構成は、たとえば、動作を実行する電子回路を設計することによって、動作またはそれらの組み合わせを実行するようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、または任意の方法によって達成することができる。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なるペアが異なる技術を使用したり、同じプロセスのペアが異なる時点で異なる技術を使用したりすることがある。
【0134】
したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかしながら、特許請求の範囲に記載のより広い精神および範囲から逸脱することなく、追加、減算、削除、およびその他の修正および変更を行うことができることは明らかである。したがって、特定の開示実施形態について説明してきたが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0135】
開示された実施形態を説明する文脈(特に特許請求の範囲)における用語「a」、「an」、「the」および同様の指示語の使用は、単数形と複数形の両方をカバーすると解釈されるべきである。ただし、本明細書に別段の指示がある場合、または文脈と明らかに矛盾する場合を除く。「備える」、「有する」、「含む」、および「含有する」という用語は、特に断りのない限り、無制限の用語(すなわち、「含むが、これらに限定されない」を意味する)として解釈されるべきである。「接続される」という用語は、たとえ何かが介在している場合でも、部分的または全体的に内部に含まれている、取り付けられている、または結合されていると解釈される。本明細書における値の範囲の記載は、本明細書に別段の記載がない限り、その範囲内にあるそれぞれの個別の値を個別に参照する簡略的な方法として機能することを単に意図しており、個別の各値は、あたかも本明細書に個別に記載されているかのように明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるあらゆる例、または例示的な表現(たとえば、「など」)の使用は、単に実施形態をより良く説明することを意図しており、別段の請求がない限り、本開示の範囲に制限を課すものではない。本明細書のいかなる文言も、特許請求されていない要素が本開示の実施に必須であることを示すものとして解釈されるべきではない。
【0136】
「X、Y、またはZの少なくとも1つ」という語句などの選言的な表現は、特に明記されていない限り、一般に項目、用語などがX、Y、またはZ、またはそれらの任意の組み合わせ(たとえば、X、Y、および/またはZ)であってもよいことを示すために使用される文脈内で理解されることを意図している。したがって、そのような選言的な表現は、一般に、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つがそれぞれ存在することを必要とすることを意味することを意図したものではなく、また、意味するべきではない。
【0137】
本開示の好ましい実施形態が、本開示を実施するための既知の最良のモードを含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読めば当業者には明らかになる。当業者は、そのような変形を必要に応じて採用することができるはずであり、本開示は、本明細書に具体的に記載された以外の方法で実施されてもよい。したがって、本開示には、適用される法律によって許可される、本明細書に添付の特許請求の範囲に記載された主題のすべての修正および均等物が含まれる。さらに、本明細書で別段の指示がない限り、可能なすべての変形例における前述の要素の任意の組み合わせが本開示に包含される。
【0138】
本明細書に引用される出版物、特許出願、および特許を含むすべての参考文献は、あたかも各参考文献が参照により組み込まれることが個別かつ具体的に示され、その全体が本明細書に記載されるのと同じ程度まで、参照により本明細書に組み込まれる。
【0139】
前述の明細書では、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれらに限定されないことを認識し得る。前述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、実施形態は、本明細書のより広範な精神および範囲から逸脱することなく、本明細書に記載されたものを超える任意の数の環境および用途において利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
【国際調査報告】