(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023166473
(43)【公開日】2023-11-21
(54)【発明の名称】マルチテナントアイデンティクラウドサービスのデータレプリケーション競合の検出および解決
(51)【国際特許分類】
G06F 16/27 20190101AFI20231114BHJP
G06F 21/41 20130101ALI20231114BHJP
【FI】
G06F16/27
G06F21/41
【審査請求】有
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023138968
(22)【出願日】2023-08-29
(62)【分割の表示】P 2019572182の分割
【原出願日】2019-04-02
(31)【優先権主張番号】62/651,367
(32)【優先日】2018-04-02
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/108,315
(32)【優先日】2018-08-22
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】メダム,ベンカテスワラ・レディ
(72)【発明者】
【氏名】ホー,ファニー
(72)【発明者】
【氏名】シー,クアン-ユー
(72)【発明者】
【氏名】バルー,バラクマール
(72)【発明者】
【氏名】スリニバサン,スディール・クマール
(57)【要約】 (修正有)
【課題】マルチテナントクラウドベースのシステムにおけるアプリケーションの管理を提供する。
【解決手段】第1のデータセンターと第2の遠隔データセンターとを有するマルチテナントクラウドシステムであって、第1のデータセンターは、第1のクライアントを認証し、第1のクライアントに対応するリソースを格納し、第2のデータセンターと通信する。第2のデータセンターは、第1のクライアントを認証しリソースをリプリケートする。第1のデータセンターは、第1のクライアントの書込要求を受け、書込要求を書き込みと変更イベントメッセージを第1の順序で生成する。第1のデータセンターは、REST APIコールを介して変更イベントメッセージを第2のデータセンターにプッシュする1451。第2のデータセンターは、変更イベントメッセージを受けたことに応じて変更イベントメッセージをそのローカルデータベースに第1の順序で書き込む。
【選択図】
図14
【特許請求の範囲】
【請求項1】
マルチテナントクラウドシステムを動作させる方法であって、前記方法は、
第1のデータセンターで、第1のクライアントを認証し前記第1のクライアントに対応するリソースを格納するステップを含み、前記第1のデータセンターは、前記第1のクライアントを認証し前記リソースをレプリケートするように構成された第2のデータセンターと通信し、
前記第1のデータセンターが、前記第1のクライアントの書込要求を受け、前記書込要求を書き込み、変更イベントメッセージを第1の順序で生成するステップと、
前記第1のデータセンターが、REST APIコールを介して前記変更イベントメッセージを前記第2のデータセンターにプッシュするステップとを含み、
前記第2のデータセンターは、前記変更イベントメッセージを受けたことに応じて前記変更イベントメッセージをそのローカルデータベースに前記第1の順序で書き込むように構成されている、方法。
【請求項2】
前記変更イベントメッセージは、前記第1のデータセンターの1つ以上の第1のシャードキューに書き込まれる、請求項1に記載の方法。
【請求項3】
第1のテナントに対応付けられたすべての前記変更イベントメッセージが同じシャードキューに書き込まれる、請求項2に記載の方法。
【請求項4】
前記変更イベントメッセージは、前記第2のデータセンターの1つ以上の第2のシャードキューに書き込まれる、請求項2に記載の方法。
【請求項5】
前記第2のデータセンターは、前記第2のデータセンターにおける適用ハンドラとともに構成され、前記適用ハンドラは、レプリケートされたリソースが既に存在する場合、作成動作に応じて、前記変更イベントメッセージを無視することまたは前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項1に記載の方法。
【請求項6】
前記適用ハンドラは、前記レプリケートされたリソースが存在しない場合、更新動作に応じて、前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項5に記載の方法。
【請求項7】
前記第1のデータセンターは、各々が対応するパーティションを有する複数のテナントを含み、前記方法は、前記第1のクライアントの対応するパーティションに対応するハッシュを計算するステップをさらに含む、請求項1に記載の方法。
【請求項8】
複数のプロセッサのうちの少なくとも1つのプロセッサによって実行されると前記プロセッサにマルチテナントクラウドシステムを動作させる命令を格納する非一時的なコンピュータ読取可能媒体であって、前記動作は、
第1のデータセンターで、第1のクライアントを認証し前記第1のクライアントに対応するリソースを格納することを含み、前記第1のデータセンターは、前記第1のクライアントを認証し前記リソースをレプリケートするように構成された第2のデータセンターと通信し、前記動作はさらに、
前記第1のデータセンターが、前記第1のクライアントの書込要求を受け、前記書込要求を書き込み、変更イベントメッセージを第1の順序で生成することと、
前記第1のデータセンターが、REST APIコールを介して前記変更イベントメッセージを前記第2のデータセンターにプッシュすることとを含み、
前記第2のデータセンターは、前記変更イベントメッセージを受けたことに応じて前記
変更イベントメッセージをそのローカルデータベースに前記第1の順序で書き込むように構成されている、非一時的なコンピュータ読取可能媒体。
【請求項9】
前記変更イベントメッセージは、前記第1のデータセンターの1つ以上の第1のシャードキューに書き込まれる、請求項8に記載の非一時的なコンピュータ読取可能媒体。
【請求項10】
第1のテナントに対応付けられたすべての前記変更イベントメッセージが同じシャードキューに書き込まれる、請求項9に記載の非一時的なコンピュータ読取可能媒体。
【請求項11】
前記変更イベントメッセージは、前記第2のデータセンターの1つ以上の第2のシャードキューに書き込まれる、請求項9に記載の非一時的なコンピュータ読取可能媒体。
【請求項12】
前記第2のデータセンターは、前記第2のデータセンターにおける適用ハンドラとともに構成され、前記適用ハンドラは、レプリケートされたリソースが既に存在する場合、作成動作に応じて、前記変更イベントメッセージを無視することまたは前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項8に記載の非一時的なコンピュータ読取可能媒体。
【請求項13】
前記適用ハンドラは、前記レプリケートされたリソースが存在しない場合、更新動作に応じて、前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項12に記載の非一時的なコンピュータ読取可能媒体。
【請求項14】
前記第1のデータセンターは、各々が対応するパーティションを有する複数のテナントを含み、前記動作は、前記第1のクライアントの対応するパーティションに対応するハッシュを計算することをさらに含む、請求項8に記載の非一時的なコンピュータ読取可能媒体。
【請求項15】
マルチテナントクラウドシステムデータセンターであって、
第1のクライアントを認証し前記第1のクライアントに対応するリソースを格納するようにされた管理サービスを備え、前記データセンターは、前記第1のクライアントを認証し前記リソースをレプリケートするように構成された第2のデータセンターと通信し、
前記管理サービスに結合されたデータストアを備え、
前記管理サービスは、前記第1のクライアントの書込要求を受け、前記書込要求を書き込み、変更イベントメッセージを第1の順序で生成するようにされ、
REST APIコールを介して前記変更イベントメッセージを前記第2のデータセンターにプッシュするようにされたレプリケーションサービスを備え、
前記第2のデータセンターは、前記変更イベントメッセージを受けたことに応じて前記変更イベントメッセージをそのローカルデータベースに前記第1の順序で書き込むように構成されている、マルチテナントクラウドシステムデータセンター。
【請求項16】
1つ以上の第1のシャードキューをさらに備え、前記変更イベントメッセージは前記第1のシャードキューに書き込まれる、請求項15に記載のマルチテナントクラウドシステムデータセンター。
【請求項17】
第1のテナントに対応付けられたすべての前記変更イベントメッセージが同じシャードキューに書き込まれる、請求項16に記載のマルチテナントクラウドシステムデータセンター。
【請求項18】
前記変更イベントメッセージは、前記第2のデータセンターの1つ以上の第2のシャー
ドキューに書き込まれる、請求項16に記載のマルチテナントクラウドシステムデータセンター。
【請求項19】
前記第2のデータセンターは、前記第2のデータセンターにおける適用ハンドラとともに構成され、前記適用ハンドラは、レプリケートされたリソースが既に存在する場合、作成動作に応じて、前記変更イベントメッセージを無視することまたは前記データセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項15に記載のマルチテナントクラウドシステムデータセンター。
【請求項20】
前記適用ハンドラは、前記レプリケートされたリソースが存在しない場合、更新動作に応じて、前記データセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項19に記載のマルチテナントクラウドシステムデータセンター。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2018年4月2日出願の米国仮特許出願第62/651,367号に基づく優先権を主張し、その開示を本明細書に引用により援用する。
【0002】
分野
一実施形態は、概してアイデンティティ管理に関し、特にクラウドシステムにおけるアイデンティ管理に関する。
【背景技術】
【0003】
背景情報
一般的に、多様なデバイス(たとえばデスクトップおよびモバイルデバイス)および多様なユーザ(たとえば被雇用者、パートナー、顧客など)からアクセスされる、クラウドベースのアプリケーション(たとえば企業パブリッククラウドアプリケーション、第三者クラウドアプリケーションなど)の使用が、急激に増加している。クラウドベースのアプリケーションは、その多様性およびアクセシビリティが高いので、アイデンティティの管理およびアクセスのセキュリティが中心的な関心事になっている。クラウド環境における典型的なセキュリティの問題は、不正アクセス、アカウントのハイジャック、悪意のあるインサイダーなどである。したがって、クラウドベースのアプリケーションであっても、どこに存在するアプリケーションであっても、アプリケーションにアクセスするデバイスの種類またはユーザの種類にかかわらず、安全なアクセスが必要とされている。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
実施形態は、第1のデータセンターと第2の遠隔データセンターとを有するマルチテナントクラウドシステムを含む。第1のデータセンターは、第1のクライアントを認証し、第1のクライアントに対応するリソースを格納し、第2のデータセンターと通信する。第2のデータセンターは、第1のクライアントを認証しリソースをリプリケートする。第1のデータセンターは、第1のクライアントの書込要求を受け、書込要求を書き込み、変更イベントメッセージを第1の順序で生成する。第1のデータセンターは、REST APIコールを介して変更イベントメッセージを第2のデータセンターにプッシュする。第2のデータセンターは、変更イベントメッセージを受けたことに応じて変更イベントメッセージをそのローカルデータベースに第1の順序で書き込むように構成されている。
【図面の簡単な説明】
【0005】
【
図1】クラウドベースのアイデンティティ管理を提供する実施形態の一例のブロック図である。
【
図2】クラウドベースのアイデンティティ管理を提供する実施形態の一例のブロック図である。
【
図3】クラウドベースのアイデンティティ管理を提供する実施形態の一例のブロック図である。
【
図4】クラウドベースのアイデンティティ管理を提供する実施形態の一例のブロック図である。
【
図5】クラウドベースのアイデンティティ管理を提供する実施形態の一例のブロック図である。
【
図6】ある実施形態のシステムビューを提供するブロック図である。
【
図6A】ある実施形態の機能ビューを提供するブロック図である。
【
図7】クラウドゲートを実現するある実施形態のブロック図である。
【
図8】一実施形態における複数のテナンシーを実現するシステムの一例を示す図である。
【
図9】ある実施形態のネットワークビューのブロック図である。
【
図10】一実施形態におけるシングルサインオン(「SSO」)機能のシステムアーキテクチャビューのブロック図である。
【
図11】一実施形態におけるSSO機能のメッセージシーケンスフローの図である。
【
図12】一実施形態における分散型データグリッドの一例を示す図である。
【
図13】本発明の実施形態に係る、各々が「地域」を形成するデプロイされた複数のデータセンター(「DC」で示される)を示す図である。
【
図14】本発明の実施形態に係る、マスターIDCSデプロイメントとレプリカIDCSデプロイメントとの間におけるレプリケーション変更イベント/ログの処理フローを示す図である。
【
図15】本発明の実施形態に係る、マスターIDCSデプロイメントとレプリカIDCSデプロイメントとの間における競合解決の処理フローを示す図である。
【
図16】本発明の実施形態に係る、マスターIDCSデプロイメントおよびレプリカIDCSデプロイメントの詳細をさらに示すブロック図である。
【
図17】本発明の実施形態に係る、レプリケーションに応じた競合解決のフロー図である。
【発明を実施するための形態】
【0006】
詳細な説明
実施形態は、マルチテナントクラウドシステム内における異なる地理的領域の複数のアイデンティティ管理システムデプロイメント間のデータのレプリケーションを提供する。このため、ある地理的領域のあるデプロイメントのテナントは、第2の地理的領域の同じリソースにアクセスすることができる。実施形態は、このデータを、変更イベントの逐次処理を用いてレプリケートする。実施形態はさらに、データレプリケーション中に生じ得るいかなるデータ競合に対しても解決を提供する。
【0007】
実施形態は、マルチテナントクラウドベースのシステムにおけるアプリケーションの管理を提供する。各アプリケーションは、当該アプリケーションの挙動を定めるファセットを含む。1つの管理インターフェイスにより、ユーザはすべてのアプリケーションを構成することができ、1つの統合データモデルにより、すべてのランタイムサービスは同じデータコピーに対して動作することができる。
【0008】
実施形態が提供するアイデンティティクラウドサービスは、マイクロサービスベースのアーキテクチャを実現するとともに、マルチテナントアイデンティティおよびデータセキュリティの管理ならびにクラウドベースのアプリケーションへの安全なアクセスを提供する。実施形態は、ハイブリッドクラウドのデプロイメント(すなわちパブリッククラウドとプライベートクラウドとを組み合わせたものを含むクラウドのデプロイメント)について安全なアクセスをサポートする。実施形態は、クラウド内およびオンプレミス双方におけるアプリケーションおよびデータを保護する。実施形態は、ウェブ、モバイル機器、およびアプリケーションプログラミングインターフェイス(application programming interface)(「API」)を介したマルチチャネルアクセスをサポートする。実施形態は、
顧客、パートナー、および被雇用者など、さまざまなユーザのアクセスを管理する。実施形態は、クラウドを通じたアクセスおよびオンプレミスのアクセス双方を管理、制御、および監査する。実施形態は、新たなおよび既存のアプリケーションおよびアイデンティと
統合される。実施形態は横方向にスケーラブルである。
【0009】
一実施形態は、ステートレスな中間層環境において多数のマイクロサービスを実現することによりクラウドベースのマルチテナントアイデンティティおよびアクセス管理サービスを提供するシステムである。一実施形態において、要求された各アイデンティティ管理サービスは、リアルタイムタスクとニア・リアルタイムタスクとに分割される。リアルタイムタスクは中間層のマイクロサービスによって処理されるのに対し、ニア・リアルタイムタスクはメッセージキューにオフロードされる。実施形態は、ルーティング層および中間層によって消費されるアクセストークンを実現することにより、マイクロサービスにアクセスするためのセキュリティモデルを強化する。したがって、実施形態は、マルチテナントのマイクロサービスアーキテクチャに基づいてクラウドスケールのアイデンティティおよびアクセス管理(Identity and Access Management)(「IAM」)プラットフォームを提供する。
【0010】
一実施形態は、組織が、その新たなビジネス構想のために高速で信頼性が高くかつ安全なサービスを迅速に開発できるようにするアイデンティティクラウドサービスを提供する。一実施形態において、アイデンティティクラウドサービスは多数のコアサービスを提供する。各コアサービスは、多くの企業が直面する固有の課題を解決する。一実施形態において、アイデンティティクラウドサービスは、たとえば、最初にユーザのオンボード/インポートを行うとき、ユーザメンバとともにグループをインポートするとき、ユーザを作成/更新/ディスエーブル/イネーブル/削除するとき、ユーザをグループに割り当てる/グループへのユーザ割当を解除するとき、グループを作成/更新/削除するとき、パスワードをリセットするとき、ポリシーを管理するとき、アクティベーションを送信するときなどの、アドミニストレータをサポートする。
【0011】
統一されたアクセスセキュリティ
一実施形態は、クラウド環境およびオンプレミス環境双方におけるアプリケーションおよびデータを保護する。本実施形態は、どのデバイスからの誰によるどのアプリケーションへのアクセスも安全にする。本実施形態は、これらの環境双方にわたる保護を提供する。なぜなら、これら2つの環境の間でセキュリティに矛盾があればリスクが高くなる可能性があるからである。たとえば、このような矛盾があった場合、販売員は、離反して競合他社に移った後であっても、その顧客関係管理(Customer Relationship Management)(「CRM」)アカウントへのアクセス権を有し続ける場合がある。したがって、実施形態は、オンプレミス環境においてプロビジョニングされたセキュリティ制御をクラウド環境に拡張する。たとえば、ある人物が会社を辞めた場合、実施形態は、そのアカウントがオンプレミスおよびクラウド双方においてディスエーブルされることを保証する。
【0012】
一般的に、ユーザは、ウェブブラウザ、デスクトップ、携帯電話、タブレット、スマートウォッチ、その他のウェアラブル機器などの多種多様なチャネルを通してアプリケーションおよび/またはデータにアクセスし得る。したがって、一実施形態は、これらすべてのチャネルについて、これらを通るアクセスを安全なものにする。たとえば、ユーザは、その携帯電話を用いて、自身のデスクトップ上で開始したトランザクションを完了させることができる。
【0013】
一実施形態はさらに、顧客、パートナー、被雇用者など、さまざまなユーザのアクセスを管理する。一般的に、アプリケーションおよび/またはデータは、被雇用者だけでなく、顧客または第三者によってもアクセスされる場合がある。既知の多くのシステムは、被雇用者のオンボード時に安全対策を講じるが、この安全対策は通常、顧客、第三者、パートナーなどにアクセス権を付与するときの安全対策と同じレベルではないので、結果として、適切に管理されていない者によってセキュリティが破られる可能性がある。しかしな
がら、実施形態は、被雇用者だけでなく各タイプのユーザのアクセスについて十分な安全対策が提供されることを保証する。
【0014】
アイデンティティクラウドサービス
実施形態は、マルチテナントでクラウドスケールのIAMプラットフォームであるアイデンティティクラウドサービス(Identity Cloud Service)(「IDCS」)を提供する。IDCSは、認証、認可、監査、および連携(federation)を提供する。IDCSは、パブリッククラウドおよびオンプレミスシステム上で実行されているカスタムアプリケーションおよびサービスへのアクセスを管理する。これに代わるまたはこれに加えられる実施形態において、IDCSは、パブリッククラウドサービスへのアクセスも管理し得る。たとえば、IDCSを用いて、このような多様なサービス/アプリケーション/システムにまたがるシングルサインオン(Single Sign On)(「SSO」)機能を提供することができる。
【0015】
実施形態は、クラウドスケールのソフトウェアサービスを設計、構築、および配信するためのマルチテナントマイクロサービスアーキテクチャに基づく。マルチテナンシーとは、あるサービスを物理的に実現したものがありこのサービスが当該サービスを購入した複数の顧客を安全にサポートするサービスであることを言う。サービスは、異なるクライアントが異なる目的のために再使用できるソフトウェア機能またはソフトウェア機能のセット(指定された情報を取り出すことまたは一組の動作を実行することなど)に、(たとえばサービスを要求しているクライアントのアイデンティティに基づく)その使用を管理するポリシーを合わせたものである。一実施形態において、サービスは、1つ以上の機能へのアクセスを可能にするメカニズムであり、このアクセスは、所定のインターフェイスを用いて提供され、サービスの記述によって明記された制約およびポリシーに従って実行される。
【0016】
一実施形態において、マイクロサービスは独立してデプロイ可能なサービスである。一実施形態において、マイクロサービスという用語は、言語に依存しないAPIを用いて相互に通信する小さな独立したプロセスから複雑なアプリケーションが構成されている、ソフトウェアアーキテクチャ設計パターンを意図している。一実施形態において、マイクロサービスは、細かく分離された小さなサービスであり、各サービスは、小さなタスクの実行に集中し得る。一実施形態において、マイクロサービスアーキテクチャスタイルは、単一のアプリケーションを小さなサービス一式として開発する手法であり、各サービスは、自身のプロセスにおいて実行され、軽量のメカニズム(たとえばハイパーテキスト・トランスファー・プロトコル(Hypertext Transfer Protocol)(「HTTP」)リソースA
PI)と通信する。一実施形態において、マイクロサービスは、同一機能すべてをまたは同一機能のうちの多くを実行するモノリシックサービスと比較すると、交換がより簡単である。加えて、マイクロサービスは各々、その他のマイクロサービスに悪影響を与えることなく更新し得る。これに対し、モノリシックサービスの一部を更新すると、当該モノリシックサービスの他の部分に望ましくないまたは意図せぬ悪影響が及ぶ可能性がある。一実施形態において、マイクロサービスはその機能を中心として有益に編成し得る。一実施形態において、マイクロサービスのコレクションのうち各マイクロサービスのスタートアップ時間は、これらのマイクロサービスのうちのすべてのサービスをまとめて実行する単一のアプリケーションのスタートアップ時間よりも遥かに短い。いくつかの実施形態において、このようなマイクロサービス各々のスタートアップ時間は約1秒以下であるのに対し、このような単一のアプリケーションのスタートアップ時間は約1分、数分、またはそれよりも長い場合がある。
【0017】
一実施形態において、マイクロサービスアーキテクチャとは、フレキシブルで、独立してデプロイ可能なソフトウェアシステムを構築するための、サービス指向アーキテクチャ
(service oriented architecture(「SOA」))の専門化(すなわちシステム内にお
けるタスクの分離)および実現の手法のことである。マイクロサービスアーキテクチャにおけるサービスは、目的を達成するためにネットワークを通して相互に通信するプロセスである。一実施形態において、これらのサービスは、技術に依存しないプロトコルを使用する。一実施形態において、サービスは、細分性が小さく軽量であるプロトコルを使用する。一実施形態において、サービスは独立してデプロイ可能である。システムの機能を異なる小さなサービスに分散させることにより、システムの結束性は向上し、システムのカップリングは減少する。それにより、システム変更が容易になり、任意の時点でシステムに機能および品質を追加することが容易になる。また、それによって、個々のサービスのアーキテクチャが、絶え間ないリファクタリングを通して出現することが可能になり、したがって、大規模な事前の設計の必要性は低下しソフトウェアを早期に連続してリリースすることが可能になる。
【0018】
一実施形態において、マイクロサービスアーキテクチャでは、アプリケーションがサービスのコレクションとして開発され、各サービスはそれぞれのプロセスを実行し軽量のプロトコルを用いて通信する(たとえばマイクロサービスごとの固有API)。マイクロサービスアーキテクチャにおいて、1つのソフトウェアを個々のサービス/機能に分解することは、提供するサービスに応じて異なるレベルの粒度で行うことができる。サービスはランタイムコンポーネント/プロセスである。各マイクロサービスは、他のモジュール/マイクロサービスに対してトークすることができる内蔵モジュールである。各マイクロサービスは、他からコンタクトできる無名ユニバーサルポートを有する。一実施形態において、マイクロサービスの無名ユニバーサルポートは、従来マイクロサービスがエクスポーズする標準通信チャネルであり(たとえば従来のHTTPポートのような)、同一サービス内の他のモジュール/マイクロサービスがそれに対してトークできるようにする標準通信チャネルである。マイクロサービスまたはその他の内蔵機能モジュールを包括的に「サービス」と呼ぶことができる。
【0019】
実施形態は、マルチテナントアイデンティティ管理サービスを提供する。実施形態は、さまざまなアプリケーションとの容易な統合を保証するオープン標準に基づいており、標準ベースのサービスを通してIAM機能を提供する。
【0020】
実施形態は、アイデンティティがアクセスできる対象、このようなアクセスを付与できる者、このようなアクセスを管理できる者などを判断し施行することを伴うユーザアイデンティティのライフサイクルを管理する。実施形態は、クラウド内でアイデンティティ管理ワークロードを実行し、このクラウド内に存在するとは限らないアプリケーションのセキュリティ機能をサポートする。これらの実施形態が提供するアイデンティティ管理サービスはクラウドから購入されてもよい。たとえば、企業は、このようなサービスをクラウドから購入してその被雇用者の当該企業のアプリケーションに対するアクセスを管理してもよい。
【0021】
実施形態は、システムセキュリティ、大規模なスケーラビリティ、エンドユーザのユーザビリティ、およびアプリケーションのインターオペラビリティを提供する。実施形態は、クラウドの成長と、顧客によるアイデンティティサービスの使用とを扱っている。マイクロサービスに基づく基礎は、横方向のスケーラビリティ条件を扱うのに対し、サービスの綿密な調整は機能条件を扱う。これらの目標双方を達成するには、ビジネスロジックを(可能な限り)分解することにより、最終的には一貫性のあるステートレスを達成する一方で、リアルタイム処理を受けない動作論理のほとんどが、配信と処理が保証されたスケーラビリティが高い非同期イベント管理システムに、オフロードされることにより、ニア・リアルタイムにシフトする。実施形態は、コスト効率を実現しシステム管理を容易にするために、ウェブ層からデータまで完全にマルチテナントである。
【0022】
実施形態は、さまざまなアプリケーションと統合し易くするために、業界の標準(たとえば、OpenID Connect、OAuth2、セキュリティ・アサーション・マークアップ言語(Security Assertion Markup Language)2(「SAML2」)、クロス
ドメインアイデンティティ管理用システム(System for Cross-domain Identity Management)(「SCIM」)、レプレゼンテーショナル・ステート・トランスファー(Representational State Transfer)(「REST」)など)に従う。一実施形態は、クラウドスケールAPIプラットフォームを提供し、エラスティックスケーラビリティのために横方向にスケーラブルなマイクロサービスを実現する。本実施形態は、クラウド原理を強化し、テナントごとにデータを分離したマルチテナントアーキテクチャを提供する。本実施形態はさらに、テナントセルフサービスを介してテナントごとのカスタマイズを提供する。本実施形態は、他のアイデンティサービスとのオンデマンドの統合の際にはAPIを介して利用することができ、連続したフィーチャーリリースを提供する。
【0023】
一実施形態は、インターオペラビリティを提供し、クラウドおよびオンプレミスにおけるアイデンティティ管理(identity management)(「IDM」)機能への投資を強化す
る。本実施形態は、オンプレミスの軽量ディレクトリアクセスプロトコル(Lightweight Directory Access Protocol)(「LDAP」)データからクラウドデータへの、および
その逆の、自動化されたアイデンティティ同期化を提供する。本実施形態は、クラウドと企業との間にSCIMアイデンティティバスを提供し、ハイブリッドクラウドのデプロイの各種オプションを可能にする(たとえば、アイデンティティ連携および/または同期化、SSOエージェント、ユーザプロビジョニングコネクタなど)。
【0024】
したがって、一実施形態は、ステートレスな中間層において多数のマイクロサービスを実現することによりクラウドベースのマルチテナントアイデンティティおよびアクセス管理サービスを提供するシステムである。一実施形態において、要求された各アイデンティティ管理サービスは、リアルタイムタスクとニア・リアルタイムタスクとに分割される。リアルタイムタスクは中間層のマイクロサービスによって処理されるのに対し、ニア・リアルタイムタスクはメッセージキューにオフロードされる。実施形態は、ルーティング層によって消費されて、マイクロサービスにアクセスするためのセキュリティモデルを実施するトークンを実現する。したがって、実施形態は、マルチテナントのマイクロサービスアーキテクチャに基づくクラウドスケールのIAMプラットフォームを提供する。
【0025】
一般的に、周知のシステムは、たとえば、企業クラウドアプリケーション、パートナークラウドアプリケーション、第三者クラウドアプリケーション、および顧客アプリケーションなど、各種環境によって提供されるアプリケーションに対するサイロ化されたアクセスを提供する。このようなサイロ化されたアクセスは、複数のパスワード、異なるパスワードポリシー、異なるアカウントプロビジョニングおよびデプロビジョニング手法、異種の監査などを必要とする場合がある。しかしながら、一実施形態は、IDCSを実現することにより、このようなアプリケーションに対し統一されたIAM機能を提供する。
図1は、ユーザおよびアプリケーションをオンボードするための統一されたアイデンティティプラットフォーム126を提供する、IDCS118を用いる実施形態の一例のブロック
図100である。本実施形態は、企業クラウドアプリケーション102、パートナークラウドアプリケーション104、第三者クラウドアプリケーション110、および顧客アプリケーション112などのさまざまなアプリケーションにまたがるシームレスなユーザ体験を提供する。アプリケーション102、104、110、112は、異なるチャネルを通してアクセスされてもよく、たとえば、携帯電話ユーザ108が携帯電話106を介して、デスクトップコンピュータのユーザ116がブラウザ114を介して、アクセスしてもよい。ウェブブラウザ(一般的にブラウザと呼ばれる)は、ワールドワイドウェブ上で情報リソースを取得、提示、およびトラバースするためのソフトウェアアプリケーション
である。ウェブブラウザの例としては、Mozilla(登録商標) Firefox(登録商標)、Google Chrome(登録商標)、Microsoft(登録商標) Internet Explorer(登録商標)、お
よびApple(登録商標) Safari(登録商標)が挙げられる。
【0026】
IDCS118は、ユーザのアプリケーションの統一されたビュー124、(アイデンティティプラットフォーム126を介する)デバイスおよびアプリケーションにまたがる統一された安全なクレデンシャル、および(管理コンソール122を介する)統一された管理方法を、提供する。IDCSサービスは、IDCS API142にコールすることによって取得されてもよい。このようなサービスは、たとえば、ログイン/SSOサービス128(たとえばOpenID Connect)、連携サービス130(たとえばSAML)、トークンサービス132(たとえばOAuth)、ディレクトリサービス134(たとえばSCIM)、プロビジョニングサービス136(たとえばSCIMまたはAny Transport over Multiprotocol(「AToM」))、イベントサービス138(たとえばREST)、およびロールベースアクセス制御(role-based access control)(「R
BAC」)サービス140(たとえばSCIM)を含み得る。IDCS118はさらに、提供されるサービスに関するレポートおよびダッシュボード120を提供し得る。
【0027】
統合ツール
通常、大企業では、そのオンプレミスのアプリケーションへの安全なアクセスのために、IAMシステムを適所に設けるのが一般的である。ビジネス手法は通常オラクル社の「Oracle IAM Suite」などのインハウスIAMシステムを中心として成熟し標準化される。小~中規模組織でも、通常は、そのビジネスプロセスを、Microsoft Active Directory(「AD」)などの単純なディレクトリソリューションを通してユーザアクセスを管理することを中心として設計されている。オンプレミス統合を可能にするために、実施形態は、顧客がそのアプリケーションをIDCSと統合できるようにするツールを提供する。
【0028】
図2は、オンプレミス206のAD204との統合を提供する、クラウド環境208内のIDCS202を用いる実施形態の一例のブロック
図200である。本実施形態は、たとえば、クラウドサービス210、クラウドアプリケーション212、パートナーアプリケーション214、および顧客アプリケーション216などのクラウド208内のさまざまなアプリケーション/サービスならびにオンプレミスアプリケーション218などのオンプレミスアプリケーションおよび第三者アプリケーションを含むすべてのアプリケーションにまたがる、シームレスなユーザ体験を提供する。クラウドアプリケーション212は、たとえば、ヒューマン・キャピタル・マネージメント(Human Capital Management)(「HCM」)、CRM、タレント取得(たとえばオラクル社のOracle Taleoクラウドサービス)、構成、価格設定、および見積もり(Configure Price and Quote「CPQ」)
などを含み得る。クラウドサービス210は、たとえば、サービスとしてのプラットフォーム(Platform as a Service)(「PaaS」)、Java(登録商標)、データベー
ス、ビジネスインテリジェンス(business intelligence)(「BI」)、文書などを含
み得る。
【0029】
アプリケーション210、212、214、216、218は、異なるチャネルを通してアクセスされてもよく、たとえば、携帯電話ユーザ220が携帯電話222を介して、デスクトップコンピュータのユーザ224がブラウザ226を介して、アクセスしてもよい。本実施形態は、クラウド208と企業206との間のSCIMアイデンティティバス234を介して、オンプレミスのADデータからクラウドデータに、アイデンティティの同期化を自動的に行う。本実施形態はさらに、クラウド208からオンプレミスAD204への、(たとえばパスワード232を用いて)認証を連携させるためのSAMLバス228を提供する。
【0030】
一般的に、アイデンティティバスは、アイデンティティ関連サービスのためのサービスバスである。サービスバスは、メッセージをあるシステムから別のシステムに伝えるためのプラットフォームを提供する。これは、たとえばサービス指向アーキテクチャ(service oriented architecture)(「SOA」)において、信頼されているシステム間で情報
を交換するための制御されたメカニズムである。アイデンティティバスは、ウェブサービス、ウェブサーバプロキシなどの標準的なHTTPベースのメカニズムに従って構築された論理バスである。アイデンティティバスにおける通信は、各プロトコル(たとえばSCIM、SAML、OpenID Connectなど)に従って実行されてもよい。たとえば、SAMLバスは、SAMLサービスに関するメッセージを伝えるための、2つのシステム間のHTTPベースの接続である。同様に、SCIMバスを用い、SCIMプロトコルに従って、SCIMメッセージを伝える。
【0031】
図2の実施形態は、顧客のAD204とともにオンプレミス206でダウンロードおよびインストールすることができる小バイナリ(たとえば大きさが1MB)のアイデンティティ(「ID」)ブリッジ230を実現する。IDブリッジ230は、顧客によって選択された組織ユニット(organizational unit)(「OU」)のユーザおよびグループ(た
とえばユーザのグループ)をリッスンし、これらのユーザをクラウド208に対して同期させる。一実施形態において、ユーザのパスワード232はクラウド208に対して同期されていない。顧客は、IDCSユーザのグループを、IDCS208において管理されているクラウドアプリケーションにマッピングすることにより、ユーザのアプリケーションアクセスを管理することができる。ユーザのグループメンバーシップがオンプレミス206で変更されるたびに、対応するクラウドアプリケーションアクセスは自動的に変更される。
【0032】
たとえば、技術部門から販売部門に異動した被雇用者は、販売クラウドへのアクセスをほぼ瞬間的に取得することができ、開発者クラウドへのアクセスは失う。この変化がオンプレミスAD204に反映されると、クラウドアプリケーションのアクセスの変更がニア・リアルタイムで実現される。同様に、IDCS208で管理されているクラウドアプリケーションへの、この企業から去るユーザのアクセスは、取消される。完全自動化のために、顧客は、たとえばAD連携サービス(「AD/FS」またはSAML連携を実現するその他の何らかのメカニズム)を通して、オンプレミスAD204とIDCS208との間のSSOをセットアップして、エンドユーザが、単一の企業パスワード332を用いて、クラウドアプリケーション210、212、214、216およびオンプレミスアプリケーション218にアクセスできるようにしてもよい。
【0033】
図3は、
図2と同一のコンポーネント202、206、208、210、212、214、216、218、220、222、224、226、228、234を含む実施形態の一例のブロック
図300である。しかしながら、
図3の実施形態において、IDCS202は、オラクルIDMのようなオンプレミスIDM304との統合を提供する。オラクルIDM304は、IAM機能を提供するための、オラクル社のソフトウェアスイートである。本実施形態は、オンプレミスアプリケーションおよび第三者アプリケーションを含むすべてのアプリケーションにまたがるシームレスなユーザ体験を提供する。本実施形態は、クラウド202と企業206との間のSCIMアイデンティティバス234を介したオンプレミスIDM304からIDCS208へのユーザアイデンティティをプロビジョニングする。本実施形態はさらに、クラウド208からオンプレミス206への認証の連携のためのSAMLバス228(またはOpenID Connectバス)を提供する。
【0034】
図3の実施形態において、オラクル社のオラクルアイデンティティマネージャ(Oracle
Identity Manager)(「OIM」)コネクタ302およびオラクル社のオラクルアクセ
スマネージャ(Oracle Access Manager)(「OAM」)連携モジュール306は、オラ
クルIDM304の拡張モジュールとして実現される。コネクタは、システムに話しかける方法について物理的な認識があるモジュールである。OIMは、ユーザアイデンティティを管理するように構成されたアプリケーションである(たとえば、ユーザがアクセス権を持つべき対象とアクセス権を持つべきでない対象に基づいて異なるシステムのユーザアカウントを管理する)。OAMは、ウェブSSO、アイデンティコンテキスト、認証および認可、ポリシー管理、テスト、ロギング、監査などのアクセス管理機能を提供するセキュリティアプリケーションである。OAMはSAMLに対するビルトイン(built-in)サポートを有する。ユーザがIDCS202のアカウントを有する場合、OIMコネクタ302およびOAM連携306をオラクルIDM304とともに使用することにより、このアカウントを作成/削除し、このアカントからのアクセスを管理することができる。
【0035】
図4は、
図2および
図3と同一のコンポーネント202、206、208、210、212、214、216、218、220、222、224、226、234を含む実施形態の一例のブロック
図400である。しかしながら、
図4の実施形態において、IDCS202は、クラウドアイデンティをオンプレミスアプリケーション218に拡張するための機能を提供する。本実施形態は、オンプレミスアプリケーションおよび第三者アプリケーションを含むすべてのアプリケーションにまたがるアイデンティティのシームレスなビューを提供する。
図4の実施形態において、SCIMアイデンティティバス234を用いることにより、IDCS202のデータを「クラウドキャッシュ」402と呼ばれるオンプレミスLDAPデータと同期させる。クラウドキャッシュ402は以下でより詳細に開示される。
【0036】
一般的に、LDAPに基づいて通信するように構成されたアプリケーションは、LDAP接続を必要とする。このようなアプリケーションはLDAP接続をURLを用いて構築しないかもしれない(たとえばGoogle(登録商標)に接続する「www.google.com」とは違って)。なぜなら、LDAPはローカルネットワーク上になければならないからである。
図4の実施形態において、LDAPベースのアプリケーション218は、クラウドキャッシュ402に接続し、クラウドキャッシュ402は、IDCS202に接続してから、要求されているデータをIDCS202から引出す。IDCS202とクラウドキャッシュ402との間の通信は、SCIMプロトコルに従って実現されてもよい。たとえば、クラウドキャッシュ402はSCIMバス234を用いてSCIM要求をIDCS202に送信し、それに対応するデータを受信してもよい。
【0037】
一般的に、あるアプリケーションの完全な実現は、コンシューマポータルを構築することと、外部ユーザ集団に対してマーケティングキャンペーンを実行することと、ウェブおよびモバイルチャネルをサポートすることと、ユーザ認証、セッション、ユーザプロファイル、ユーザグループ、アプリケーションロール、パスワードポリシー、セルフサービス/登録、社会的統合、アイデンティ連携などを処理することとを含む。一般的に、アプリケーションの開発者はアイデンティティ/セキュリティの専門家ではない。このため、オンデマンドのアイデンティティ管理サービスが望ましいのである。
【0038】
図5は、
図2~
図4と同一のコンポーネント202、220、222、224、226、234、402を含む実施形態の一例のブロック
図500である。しかしながら、
図5の実施形態において、IDCS202は、オンデマンドで安全なアイデンティティ管理を提供する。本実施形態は、オンデマンドの、IDCS202のアイデンティサービスとの統合を提供する(たとえばOpenID Connect、OAuth2、SAML2、またはSCIMなどの標準に基づいて)。(オンプレミスであってもパブリッククラウド内またはプライベートクラウド内にあってもよい)アプリケーション505は、IDCS202のアイデンティティサービスAPI504をコールしてもよい。IDCS202が
提供するサービスは、たとえば、セルフサービス登録506、パスワード管理508、ユーザプロファイル管理510、ユーザ認証512、トークン管理514、社会的統合516などを含み得る。
【0039】
本実施形態において、SCIMアイデンティティバス234を用いることにより、IDCS202内のデータを、オンプレミスのLDAPクラウドキャッシュ402内のデータと同期させる。さらに、ウェブサーバ/プロキシ(たとえばNGINX、Apacheなど)上で実行している「クラウドゲート」502を、アプリケーション505が用いて、IDCS202からユーザウェブSSOおよびREST APIセキュリティを取得してもよい。クラウドゲート502は、クライアントアプリケーションが有効なアクセストークンを提供すること、および/またはユーザがSSOセッション構築のために正常に認証することを保証することによって、マルチテナントIDCSマイクロサービスへのアクセスを安全なものするコンポーネントである。クラウドゲート502は以下でさらに開示される。クラウドゲート502(webgate/webagentと同様の実施ポイント)は、サポートされて
いるウェブサーバの背後で実行されているアプリケーションがSSOに参加することを可能にする。
【0040】
一実施形態は、SSOおよびクラウドSSO機能を提供する。多くの組織において、オンプレミスIAMおよびIDCSいずれにおいても一般的なエントリポイントはSSOである。クラウドSSOは、ユーザが、1回のユーザサイン・インで複数のクラウドリソースにアクセスできるようにする。組織はそのオンプレミスアイデンティティの連携を希望することが多い。したがって、実施形態は、オープン標準を利用することで、既存のSSOとの統合を実現することにより、投資の節約と拡大を可能にする(たとえば、アイデンティティクラウドサービス手法への最終的な完全移行まで)。
【0041】
一実施形態は以下の機能を提供し得る。
・アイデンティティストアを維持することにより、既に認可されているユーザアカウント、所有権、アクセス、および許可を追跡する。
・ワークフローとの統合により、アプリケーションのアクセスに必要なさまざまな承認(たとえば管理、IT、人的資源、法律、およびコンプライアンス)を簡単にする。
・選択的装置(たとえばモバイルおよびパーソナルコンピュータ(「PC」))に対するSaaSユーザアカウントをプロビジョニングする。ユーザポータルへのアクセスは、多数のプライベートおよびパブリッククラウドリソースを含む。
・規則および現在の職責へのコンプライアンスのための定期的な管理立証を容易にする。
【0042】
これらの機能に加えて、実施形態はさらに、
・クラウドアプリケーションにおけるアカウントライフサイクルの管理のためのクラウドアカウントのプロビジョニング、
・よりロバストなマルチファクタ認証(multifactor authentication)(「MFA」)の統合、
・拡張モバイルセキュリティ機能、および
・動的認証オプション
を提供し得る。
【0043】
一実施形態は、適応認証およびMFAを提供する。一般的に、パスワードおよび確認のための質問は、不十分でありフィッシングなどのよくある攻撃に晒され易いとみなされてきた。現代の大半の企業体は、リスクを下げるために何らかの形態のMFAに注目している。しかしながら、ソリューションが首尾よくデプロイされるためには、ソリューションをエンドユーザが簡単にプロビジョニング、維持、および理解する必要がある。なぜなら、エンドユーザは通常、そのデジタル体験を妨害するものに対し、それが何であろうと抵
抗するからである。企業は、MFAを、シームレスなユーザアクセス体験のほぼトランスペアレントなコンポーネントにしつつ、私物の業務利用(bring your own device)(「
BYOD」)、社会的アイデンティティ、遠隔ユーザ、顧客、および契約者を安全に組込む方法を探している。MFAのデプロイにおいて、OAuthおよびOpenID Connectなどの産業標準は、既存のマルチファクタソリューションの統合と、より新しい適応認証技術の導入とを保証するのに不可欠である。したがって、実施形態は、動的(または適応)認証を、利用できる情報(すなわちIPアドレス、場所、時刻、およびバイオメトリクス)の評価として定義することにより、ユーザセッション開始後のアイデンティを証明する。適切な標準(たとえばオープン認証(open authentication)(「OAT
H」)および高速オンライン認証(fast identity online)(「FIDO」)の統合と、拡張可能なアイデンティティ管理フレームワークとを用いて、実施形態は、エンド・ツー・エンドの安全なIAMデプロイの一部としてIT組織内で簡単に採用、アップグレード、および統合できるMFAソリューションを提供する。MFAおよび適応ポリシーを検討する場合、組織は、ハイブリッドのIDCSおよびオンプレミスIAM環境においてシステム間の統合を必要とするオンプレミスリソースおよびクラウドリソースにわたって一貫したポリシーを実現しなければならない。
【0044】
一実施形態は、ユーザプロビジョニングおよび証明を提供する。一般的に、IAMソリューションの基本機能は、ユーザプロビジョニングライフサイクル全体を可能にしかつサポートすることである。これは、ユーザに対し、組織内におけるそのアイデンティティおよびロール(role)に適したアプリケーションアクセスを与えること(たとえば、ユーザのロールまたはそのロールの中で使用されるタスクもしくはアプリケーションは時間の経過に伴って変化するので)と、ユーザが組織から脱退するときに必要な、素早いユーザデプロビジョニングとを含む。これは、さまざまなコンプライアンス条件を満たすために重要であるだけでなく、不適切なインサイダーアクセスがセキュリティ侵害および攻撃の主要な原因であるので、重要である。アイデンティティクラウドソリューションにおける、自動化されたユーザプロビジョニング機能は、それ自身の権利において重要になり得るだけでなく、ハイブリッドIAMソリューションの一部としても重要であり、したがって、IDCSプロビジョニングは、企業が縮小、拡大、合併する、または既存のシステムをIaaS/PaaS/SaaS環境と統合しようとする場合、移行時において、オンプレミスソリューションよりも高い柔軟性を提供し得る。IDCS手法は、一度限りのアップグレードにおいて時間と労力を節約することができ、必要な部門、事業部、およびシステムの適切な統合を保証する。企業ではこの技術をスケーリングする必要性が密かに発生することが多く、企業体系全体にスケーラブルなIDCS機能を迅速に提供することは、柔軟性、コスト、および制御の点で利益をもたらし得る。
【0045】
一般的に、被雇用者は、長年にわたり、職種の変化に応じて追加の権限が付与される(すなわち「権限のクリープ」)。規制が緩やかな企業は一般的に「立証」プロセスが欠落している。このプロセスは、企業の被雇用者の権限(たとえばネットワーク、サーバ、アプリケーション、およびデータへのアクセス権)を定期的に監査して、過剰な権限が付与されたアカウントの原因となる権限のクリープを止めるまたは減速させる管理者を必要とする。したがって、一実施形態は、定期的に実施される(少なくとも1年に一度)立証プロセスを提供し得る。さらに、合併および買収に伴い、これらのツールおよびサービスの必要性は急激に増す。ユーザが、SaaSシステムに存在する、オンプレミス上に存在する、異なる部門にまたがっている、および/またはデプロビジョニングされているもしくは再度割り当てられているからである。クラウドへの動きはこの状況をさらに混乱させる可能性があり、事態は、既存の手動管理されることが多い証明方法を超えて急速にエスカレートする可能性がある。したがって、一実施形態は、これらの機能を自動化し、高度な分析を、ユーザプロファイル、アクセス履歴、プロビジョニング/デプロビジョニング、および細分化された権利に適用する。
【0046】
一実施形態はアイデンティティ分析を提供する。一般的に、アイデンティティ分析を、包括的な証明および立証のためにIAMエンジンと統合する機能は、組織のリスクプロファイルを安全にするためには不可欠となる可能性がある。適切にデプロイされたアイデンティティ分析は、内部ポリシー全体の施行を要求する可能性がある。クラウドおよびオンプレミス全体で統一された単一管理ビューを提供するアイデンティティ分析は、予防的ガバナンス、リスク、およびコンプライアンス(governance, risk, and compliance)(「GRC」)企業環境における必要性が高く、リスクを低減しコンプライアンス規則を満たすための閉ループプロセスを提供するのに役立ち得る。したがって、一実施形態はアイデンティティ分析を提供する。アイデンティティ分析は、管理者、幹部職員、および監査役が必要とするレポートおよび分析のために、クライアントが簡単にカスタマイズすることで特定の産業条件および政府規則に適合する。
【0047】
一実施形態は、セルフサービスおよびアクセス要求機能を提供することにより、エンドユーザの体験および効率を改善するとともに、ヘルプデスクコールに要するコストを低減する。一般的に、多数の企業はその従業員のためにオンプレミスのセルフサービスアクセス要求をデプロイするが、多くは、これらのシステムを正式な企業の壁の外側まで適切に拡張していない。従業員の用途の範囲外の、ポジティブなデジタル顧客体験が、ビジネスの信頼性を高め最終的には収入の増加に貢献し、企業は、顧客ヘルプデスクコールを減じるだけでなく顧客の満足度を高める。したがって、一実施形態は、オープン標準に基づいておりかつ必要に応じて既存のアクセス制御ソフトウェアおよびMFAメカニズムとシームレスに統合される、アイデンティティクラウドサービス環境を提供する。SaaS配信モデルは、以前はシステムのアップグレードおよびメンテナンスに費やされていた時間と労力を省き、IT専門スタッフを解放してより中心的なビジネスアプリケーションに集中できるようにする。
【0048】
一実施形態は、特権アカウント管理(privileged account management)(「PAM」
)を提供する。一般的に、すべての組織は、SaaS、PaaS、IaaSまたはオンプレミスアプリケーションいずれを使用しても、システムアドミニストレータ、幹部職員、人事担当役員、契約者、システムインテグレータなどのスーパーユーザのアクセスクレデンシャルを用いたインサイダーによる特権アカウントの不正使用に弱い。加えて、外部の脅威は一般的に、先ず低レベルユーザアカウントを侵害し、最終的には企業システム内の特権ユーザアクセス制御に到達してこれを利用する。したがって、一実施形態は、PAMを提供することにより、このような不正なインサイダーによるアカウントの使用を防止する。PAMソリューションの主要コンポーネントはパスワードボールト(password vault)であり、これはさまざまなやり方で供給し得る。たとえば、企業サーバ上にインストールされるソフトウェアとして、これも企業サーバ上の仮想アプライアンスとして、パッケージングされたハードウェア/ソフトウェアアプライアンスとして、または、クラウドサービスの一部として、さまざまなやり方で供給し得る。PAM機能は、エンベロープ内で保持されサインインおよびサイン・アウトのためのマニフェストで定期的に変更されるパスワードを格納するために使用される物理的な安全場所と同様である。一実施形態は、パスワードのチェックアウトだけでなく、タイムリミットの設定、強制的な期間変更、自動的なチェックアウトの追跡、およびすべてのアクティビティに関する報告を、可能にする。一実施形態は、要求されたリソースに、ユーザがパスワードを知らない状態で、直接接続する方法を提供する。この機能はまた、セッション管理およびその他の機能の方法に道を開く。
【0049】
一般的に、ほとんどのクラウドサービスは、APIおよび管理インターフェイスを利用している。これらは、侵入者がセキュリティを迂回する機会を与える。したがって、一実施形態は、PAMの実施におけるこれらの欠陥を埋める。クラウドへの移行によってPA
Mに新たな課題が発生するからである。小規模から中規模の多くのビジネスは現在自身のSaaSシステム(たとえばOffice 365)を管理しているが、大企業は自身のSaaSおよびIaaSサービスの回転数を上げる個々のビジネス単位を持つことが増えている。これらの顧客は、PAM機能がアイデンティティクラウドサービスソリューションに含まれるかまたはそのIaaS/PaaSプロバイダから得られるが、この責務を扱った経験がほとんどない。加えて、場合によっては、多くの異なる地理的に分散したビジネス単位が、同じSaaSアプリケーションの管理責任を分離しようとする。したがって、一実施形態は、こういった状況にある顧客が、既存のPAMをアイデンティティクラウドサービスの全体的なアイデンティティフレームワークの中にリンクさせ、より高い安全性とコンプライアンスに向けて、ビジネスニーズが要求するクラウドロード条件に合わせて確実に調整することを、可能にする。
【0050】
APIプラットフォーム
実施形態が提供するAPIプラットフォームは、機能のコレクションをサービスとしてエクスポーズする。APIはマイクロサービスに集約され、各マイクロサービスは、APIのうちの1つ以上をエクスポーズする。すなわち、各マイクロサービスは異なる種類のAPIをエクスポーズし得る。一実施形態において、各マイクロサービスはそのAPIを通してしか通信しない。一実施形態において、各APIはマイクロサービスであってもよい。一実施形態において、複数のAPIが1つのサービスに、このサービスが提供するターゲット機能に基づいて集約される(たとえばOAuth、SAML、Adminなど)。結果として、同様のAPIは別々のランタイムプロセスとしてエクスポーズされない。APIは、IDCSが提供するサービスを使用するためにサービス消費者が利用できるようにされたものである。
【0051】
一般的に、IDCSのウェブ環境において、URLは、3つの部分として、ホストと、マイクロサービスと、リソースとを含む(たとえばホスト/マイクロサービス/リソース)。一実施形態において、マイクロサービスは、特定のURLプレフィックスを有することを特徴とし(たとえば「host/oauth/v1」)、実際のマイクロサービスは「oauth/v1」
である。「oauth/v1」の下で複数のAPIが存在し、たとえば、トークン(token)を要
求するためのAPI:「host/oauth/v1/token」、ユーザを認証する(authorize)ためのAPI:「host/oauth/v1/authorize」などである。すなわち、URLはマイクロサービ
スを実現し、URLのリソース部分はAPIを実現する。したがって、同じマイクロサービスの下で複数のAPIが集約される。一実施形態において、URLのホスト部分はテナントを特定する(たとえば、https://tenant3.identity.oraclecloud.com:/oauth/v1/token)。
【0052】
必要なエンドポイントを有する外部サービスと統合するアプリケーションを構成し当該構成を最新状態に保つことは、一般的に難題である。この難題を克服するために、実施形態は、パブリックディスカバリAPIを周知の場所にエクスポーズし、そこから、アプリケーションは、ADCS APIを消費するために必要なIDCSに関する情報を発見する(discover)ことができる。一実施形態において、2つのディスカバリ文献がサポートされ、それらは、IDCS構成(たとえば、<IDCS-URL>/.well-known/idcs-configurationのIDCS、SAML、SCIM、OAuth、およびOpenID Connect
構成を含む)と、(たとえば<IDCS-URL>/.well-known/openid-configurationの)産業標
準OpenID Connect構成とである。アプリケーションは、単一のIDCS URLで構成されることにより、ディスカバリ文献を取り出すことができる。
【0053】
図6は、一実施形態におけるIDCSのシステムビュー600を提供するブロック部である。
図6において、さまざまなアプリケーション/サービス602のうちのいずれも、IDCS APIに対してHTTPコールを行うことにより、IDCSサービスを使用す
ることができる。このようなアプリケーション/サービス602の例は、ウェブアプリケーション、ネイティブアプリケーション(たとえばWindows(登録商標)アプリケーショ
ン、iOS(登録商標)アプリケーション、アンドロイド(登録商標)アプリケーションなど、特定のオペレーティングシステム上で走るように構築されたアプリケーション)、ウェブサービス、顧客アプリケーション、パートナーアプリケーション、または、サービスとしてのソフトウェア(Software as a Service)(「SaaS」)、PaaS、およ
びサービスとしてのインフラストラクチャ(Infrastructure as a Service)(「Iaa
S」)など、パブリッククラウドによって提供されるサービスである。
【0054】
一実施形態において、IDCSサービスを要求するアプリケーション/サービス602のHTTP要求は、オラクルパブリッククラウドBIG-IPアプライアンス604およびIDCS BIG-IPアプライアンス606(またはロードバランサなどの同様の技術、または、適切なセキュリティルールを実現してトラフィックを保護するサービスとしてのクラウドロードバランサ(Cloud Load Balancer as a Service)(「LBaaS」)と呼ばれているコンポーネント)を通る。しかしながら、この要求はどのようなやり方で受信されてもよい。IDCS BIG-IPアプライアンス606(または、適用できる場合は、ロードバランサまたはクラウドLBaaSなどの同様の技術)において、クラウドプロビジョニングエンジン608は、テナントおよびサービスの調整を実行する。一実施形態において、クラウドプロビジョニングエンジン608は、クラウドにオンボードされている新たなテナントに対応付けられた内部セキュリティアーティファクト、または、顧客が購入した新たなサービスインスタンスを管理する。
【0055】
このHTTP要求は次にIDCSウェブルーティング層610によって受信される。このルーティング層は、セキュリティゲート(すなわちクラウドゲート)を実現し、サービスルーティングならびにマイクロサービス登録および発見612を提供する。要求されるサービスに応じて、HTTP要求は、IDCS中間層614のIDCSマイクロサービスに転送される。IDCSマイクロサービスは、外部および内部HTTP要求を処理する。IDCSマイクロサービスは、プラットフォームサービスおよびインフラストラクチャサービスを実現する。IDCSプラットフォームサービスは、IDCSのビジネスを実現する、別々にデプロイされたJavaベースのランタイムサービスである。IDCSインフラストラクチャサービスは、IDCSに対してインフラストラクチャサポートを提供する、別々にデプロイされたランタイムサービスである。IDCSはさらに、IDCSサービスによって使用される共有ライブラリとしてパッケージングされた共通コードであるインフラストラクチャライブラリと、共有ライブラリとを含む。インフラストラクチャサービスおよびライブラリは、プラットフォームサービスがその機能を実現するために要求するサポート機能を提供する。
【0056】
プラットフォームサービス
一実施形態において、IDCSは標準認証プロトコルをサポートし、したがって、IDCSマイクロサービスは、OpenID Connect、OAuth、SAML2、クロスドメインアイデンティティ管理のためのシステム(System for Cross-domain Identity Management++:「SCIM++」)などのプラットフォームサービスを含む。
【0057】
OpenID Connectプラットフォームサービスは、標準OpenID Connectログイン/ログアウトフローを実現する。対話型のウェブベースおよびネイティブアプリケーションは、標準のブラウザベースのOpenID Connectフローを推進することによりユーザ認証を要求し、ユーザの認証されたアイデンティティを伝達するJavaScript(登録商標)オブジェクト表記法(JavaScript Object Notation(「JSON」)ウェブトークン(Web Token「JWT」)である標準アイデンティテ
ィトークンを受信する。内部において、ランタイム認証モデルはステートレスであり、ユ
ーザの認証/セッション状態をホストHTTPクッキー(JWTアイデンティティトークンを含む)の形態で維持する。OpenID Connectプロトコルを介して開始された認証対話は、ローカルおよび連携ログインのためにユーザのログイン/ログアウトセレモニーを実現する信頼できるSSOサービスに委任される。この機能のさらなる詳細は以下において
図10および
図11を参照しながら開示される。一実施形態において、OpenID Connect機能は、たとえばOpenID Foundation標準に従って実現される。
【0058】
OAuth2プラットフォームサービスは、トークン認可サービスを提供する。これは、ユーザの権利を伝達するアクセストークンを作成し検証してAPIコールを行うためのリッチなAPIインフラストラクチャを提供する。これは、ある範囲の有用なトークン付与タイプをサポートし、顧客がクライアントをそのサービスに安全に接続することを可能にする。これは、標準の2者間および3者間OAuth2トークン付与タイプを実現する。OpenID Connect(「OIDC」)をサポートすることにより、コンプライアントなアプリケーション(OIDCリレーパーティ(「RP」))が、アイデンティティプロバイダとしてのIDCSと統合されることを可能にする(OIDC OpenIDプロバイダ(「OP」)。同様に、OIDC RPとしてのIDCSをソーシャルOIDC OP(たとえばFacebook(登録商標)、Google(登録商標)など)と統合することにより、顧客は、アプリケーションに対する社会的アイデンティのポリシーベースアクセスを可能にする。一実施形態において、OAuth機能は、たとえば、インターネットエンジニアリングタスクフォース(Internet Engineering Task Force)(「IETF」)
、コメント要求(Request for Comments)(「RFC」)6749に従って実現される。
【0059】
SAML2プラットフォームサービスは、アイデンティティ連携サービスを提供する。これは、顧客が、SAMLアイデンティティプロバイダ(identity provider)(「ID
P」)およびSAMLサービスプロバイダ(service provider)(「SP」)関係モデルに基づいて、そのパートナーとの連携合意を設定することを可能にする。一実施形態において、SAML2プラットフォームサービスは、標準SAML2ブラウザポストログインおよびログアウトプロファイルを実現する。一実施形態において、SAML機能は、たとえばIETF、RFC7522に従って実現される。
【0060】
SCIMは、ユーザアイデンティ情報を、たとえばIETF、RFC 7642、7643、7644によって提供される、アイデンティティドメインまたは情報技術(「IT」)システム間でのユーザアイデンティティ情報の交換を自動化するためのオープン標準である。SCIM++プラットフォームサービスは、アイデンティティ管理サービスを提供し、顧客がIDCSのIDPフィーチャー(feature)にアクセスすることを可能にす
る。管理サービスは、アイデンティティライフサイクル、パスワード管理、グループ管理などをカバーするステートレスなRESTインターフェイス(すなわちAPI)のセットをエクスポーズし、ウェブアクセス可能なリソースのようなアーティファクトをエクスポーズする。
【0061】
すべてのIDCS構成アーティファクトはリソースであり、管理サービスのAPIは、IDCSリソース(たとえばユーザ、ロール、パスワードポリシー、アプリケーション、SAML/OIDCアイデンティティプロバイダ、SAMLサービスプロバイダ、キー、証明、通知テンプレートなど)の管理を可能にする。管理サービスは、SCIM標準を強化および拡張することにより、すべてのIDCSリソースに対する作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)、および問合せ(Query)(「CRUD
Q」)動作のためにスキーマベースのREST APIを実現する。加えて、IDCS自体の管理および構成に使用されるIDCSのすべての内部リソースは、SCIMベースのREST APIとしてエクスポーズされる。アイデンティティストア618へのアクセ
スはSCIM++APIに分離される。
【0062】
一実施形態において、たとえば、SCIM標準は、SCIM規格によって規定されるユーザおよびグループリソースを管理するように実現されるのに対し、SCIM++は、SCIM規格によって規定される言語を用いてさらに他のIDCS内部リソース(たとえばパスワードポリシー、ロール、設定など)をサポートするように構成される。
【0063】
管理サービスは、SCIM2.0標準エンドポイントを、標準SCIM2.0コアスキーマと、必要に応じてスキーマ拡張とを用いてサポートする。加えて、管理サービスは、いくつかのSCIM2.0準拠エンドポイント拡張をサポートすることにより、その他のIDCリソースを、たとえばユーザ、グループ、アプリケーション、設定などを、管理する。管理サービスはまた、CRUDQ動作は実行しないがその代わりに機能サービスを、たとえば「UserPasswordGenerator」、「UserPasswordValidator」などを提供する、リモートプロシージャコールスタイル(remote procedure call-style)(「RPCスタイル
」)RESTインターフェイスのセットをサポートする。
【0064】
IDCS管理APIは、OAuth2プロトコルを認証および認可に使用する。IDCSは、ウェブサーバ、モバイル、およびJavaScriptアプリケーションのためのシナリオといった共通のOAuth2シナリオをサポートする。IDCS APIへのアクセスはアクセストークンによって保護される。IDCS管理APIにアクセスするために、アプリケーションは、IDCS管理コンソールを通してOAuth2クライアントとしてまたはIDCSアプリケーションとして(この場合OAuth2クライアントは自動的に作成される)登録される必要があり、また、所望のIDCS管理ロールを与えられる必要がある。IDCS管理APIコールを行うとき、アプリケーションは先ず、IDCS
OAuth2サービスにアクセストークンを要求する。このトークンを取得した後に、このアプリケーションはアクセストークンを、そこにHTTP認可ヘッダを含めて送信する。アプリケーションは、IDCS管理REST APIを直接使用することができる、または、IDCSJavaクライアントAPIライブラリを使用することができる。
【0065】
インフラストラクチャサービス
IDCSインフラストラクチャサービスは、IDCSプラットフォームサービスの機能をサポートする。これらのランタイムサービスは、(ユーザ通知、アプリケーション申込、およびデータベースに対する監査を非同期的に処理するための)イベント処理サービスと、(ジョブをスケジューリングして実行するため、たとえば、ユーザの介入が不要な長時間実行タスクを直ちに実行するまたは設定時間に実行するための)ジョブスケジューラサービスと、キャッシュ管理サービスと、(パブリッククラウドストレージサービスと統合するための)ストレージ管理サービスと、(レポートおよびダッシュボードを生成するための)レポートサービスと、(内部ユーザ認証およびSSOを管理するための)SSOサービスと、(異なる種類のユーザインターフェイス(user interface)(「UI」)クライアントをホストするための)ユーザインターフェイス(「UI」)サービスと、サービスマネージャサービスとを含む。サービスマネージャは、オラクルパブリッククラウドとIDCSとの間の内部インターフェイスである。サービスマネージャは、オラクルパブリッククラウドによって発行されたコマンドを管理し、このコマンドはIDCSによって実現される必要がある。たとえば、顧客が、何かを購入できる状態になる前にクラウドストア内のアカウントに対してサインアップした場合、クラウドは、テナントを作成することを依頼するための要求をIDCSに送信する。この場合、サービスマネージャは、IDCSがサポートするとクラウドが予測するクラウド固有の動作を実現する。
【0066】
IDCSマイクロサービスは、ネットワークインターフェイスを通して別のIDCSマイクロサービスをコールしてもよい(すなわちHTTP要求)。
【0067】
一実施形態において、IDCSはまた、データベーススキーマを使用できるようにするスキーマサービス(またはパーシステンス(persistence)サービス)を提供し得る。ス
キーマサービスは、データベーススキーマを管理する責任をIDCSに委任することを可能にする。したがって、IDCSのユーザはデータベースを管理する必要がない。なぜなら、この機能を提供するIDCSサービスが存在するからである。たとえば、ユーザは、データベースを用いてテナントごとにスキーマをパーシストしてもよく、データベース内にスペースがなくなったときにはスキーマサービスが、ユーザがデータベースを自身で管理しなくてもよいように、別のデータベースを取得し上記空間を拡大するという機能を管理する。
【0068】
IDCSはさらに、IDCSが必要とする/生成するデータリポジトリであるデータストアを含む。これは、(ユーザ、グループなどを格納する)アイデンティティストア618、(IDCSが自身を構成するために使用する構成データを格納する)グローバルデータベース620、(テナントごとにスキーマを分離し顧客ごとに顧客データを格納する)オペレーショナルスキーマ622、(監査データを格納する)監査スキーマ624、(キャッシュされたオブジェクトを格納することにより実施速度を高める)キャッシングクラスタ626などを含む。内部および外部のすべてのIDCSコンシューマは、標準ベースのプロトコルに従ってアイデンティティサービスと統合される。これにより、ドメインネームシステム(domain name system)(「DNS」)を用いて、どこに要求をルーティングすべきかを決定することができ、アプリケーションを消費することをアイデンティティサービスの内部実現を理解することから切離す。
【0069】
リアルタイムおよびニア・リアルタイムタスク
IDCSは、要求されたサービスのタスクを、同期リアルタイムタスクと非同期ニア・リアルタイムタスクとに分離する。リアルタイムタスクは、ユーザが進むのに必要なオペレーションのみを含む。一実施形態において、リアルタイムタスクは、最少の遅延で実行されるタスクであり、ニア・リアルタイムタスクは、バックグラウンドにおいて、ユーザが待つことなく実行されるタスクである。一実施形態において、リアルタイムタスクは、実質的に遅延なしでまたはごくわずかな遅延で実行されるタスクであり、ユーザには、ほぼ瞬時に実行されているように見えるタスクである。
【0070】
リアルタイムタスクは、特定のアイデンティティサービスの主要なビジネス機能を実行する。たとえば、ログインサービスを要求するとき、アプリケーションは、メッセージを送信してユーザのクレデンシャルを認証しそれに対するセッションクッキーを取得する。ユーザが体験するのは、システムへのログインである。しかしながら、ユーザのログインに関しては、ユーザが誰であるかの検証、監査、通知の送信など、その他いくつかのタスクが実行されるであろう。したがって、クレデンシャルの検証は、ユーザがHTTPクッキーを与えられてセッションを開始するように、リアルタイムで実行されるタスクであるが、通知(たとえば電子メールを送信してアカウント作成を通知すること)、監査(たとえば追跡/記録)などに関連するタスクは、ユーザが最少の遅延で進むことができるよう非同期的で実行することができるニア・リアルタイムタスクである。
【0071】
マイクロサービスを求めるHTTP要求が受信されると、対応するリアルタイムタスクが中間層のマイクロサービスによって実行され、必ずしもリアルタイム処理を受けない演算ロジック/イベントなどの残りのニア・リアルタイムタスクは、メッセージキュー628にオフロードされる。メッセージキュー628は、配信および処理が保証された状態でスケーラビリティが高い非同期イベント管理システム630をサポートする。したがって、特定の挙動は、フロントエンドからバックエンドにプッシュされることにより、IDCSが、応答時間のレイテンシを少なくすることにより、ハイレベルサービスを顧客に提供
することを、可能にする。たとえば、ログインプロセスは、クレデンシャルの検証、ログレポートの提出、最後のログイン時間の更新などを含み得るが、これらのタスクは、メッセージキューにオフロードして、リアルタイムではなくニア・リアルタイムで実行することができる。
【0072】
一例において、システムが新たなユーザを登録または作成する必要がある場合がある。システムは、IDCS SCIM APIをコールしてユーザを作成する。最終結果として、ユーザがアイデンティティストア618において作成されたときにこのユーザがそのパスワードをリセットするためのリンクを含む通知電子メールを得る。IDCSが、新たなユーザを登録または作成することを求める要求を受けると、対応するマイクロサービスは、オペレーショナルデータベース(
図6のグローバルデータベース620内に位置する)にある構成データに注目し、「ユーザ作成」という動作が「ユーザ作成」イベントでマーキングされていると判断する。この動作は、構成データにおいて非同期動作であることが識別される。マイクロサービスは、クライアントに戻り、ユーザの作成が正常に行われたことを示すが、通知電子メールの実際の送信は延期されバックエンドにプッシュされる。そうするために、マイクロサービスは、メッセージングAPI616を用いてこのメッセージを、ストアであるキュー628に入れる。
【0073】
キュー628から出すために、インフラストラクチャマイクロサービスであるメッセージングマイクロサービスは、バックグラウンドにおいて継続的に実行され、キュー628の中にあるイベントを探してキュー628をスキャンする。キュー628の中にあるイベントは、監査、ユーザ通知、アプリケーション申込、データ解析などのイベントサブスクライバ630によって処理される。イベントによって示されるタスクに応じて、イベントサブスクライバ630は、たとえば、監査スキーマ624、ユーザ通知サービス634、アイデンティティイベントサブスクライバ632などと通信し得る。たとえば、メッセージングマイクロサービスは、キュー628の中に「ユーザ作成」イベントを発見した場合、対応する通知ロジックを実行し対応する電子メールをユーザに送信する。
【0074】
一実施形態において、キュー628は、マイクロサービス614によってパブリッシュされたオペレーショナルイベントと、IDCSリソースを管理するAPI616によってパブリッシュされたリソースイベントとをキューの中に入れる。
【0075】
IDCSは、リアルタイムキャッシング構造を用いてシステムパフォーマンスおよびユーザ体験を向上させる。キャッシュそのものは、マイクロサービスとしても提供される。IDCSは、IDCSによってサポートされている顧客の数の増加に伴って増大するエラスティック・キャッシュクラスタ626を実現する。キャッシュクラスタ626は、以下でより詳細に開示される分散型データグリッドで実現されてもよい。一実施形態において、書込専用リソースがキャッシュをバイパスする。
【0076】
一実施形態において、IDCSランタイムコンポーネントは、ヘルスおよびオペレーショナルメトリクスを、オラクル社のオラクルパブリッククラウドなどのパブリッククラウドのこのようなメトリクスを収集するパブリッククラウドモニタリングモジュール636に対してパブリッシュする。
【0077】
一実施形態において、IDCSを用いてユーザを作成してもよい。たとえば、クライアントアプリケーション602は、REST APIコールを発行してユーザを作成してもよい。管理サービス(614のプラットフォームサービス)は、このコールをユーザマネージャ(614のインフラストラクチャライブラリ/サービス)に委任する。そうすると、ユーザマネージャは、このユーザを、IDストア618内の特定テナント用IDストアストライプにおいて作成する。「ユーザ作成成功(User Create Success)」の場合、ユ
ーザマネージャは、オペレーションを監査することにより監査スキーマ624内のテーブルを監査し、メッセージキュー628に対して「identity.user.create.success」をパブリッシュする。アイデンティティサブスクライバ632は、このイベントをピックアップし、新たに作成されたログイン詳細を含む「ウェルカム」電子メールを、新たに作成されたユーザに送信する。
【0078】
一実施形態において、IDCSを用いてロールをユーザに与えて、その結果ユーザがアクションをプロビジョニングしてもよい。たとえば、クライアントアプリケーション602は、REST APIコールを発行してユーザにロールを付与してもよい。管理サービス(614のプラットフォームサービス)は、このコールをロールマネージャ(614のインフラストラクチャライブラリ/サービス)に委任してもよい。このロールマネージャは、IDストア618内の特定テナント用IDストアストライプにおけるロールを付与する。「ロール付与成功(Role Grant Success)」の場合、ロールマネージャは、監査スキーマ624における監査テーブルに対するオペレーションを監査し、メッセージキュー628に対して「identity.user.role.grant.success」をパブリッシュする。アイデンティティサブスクライバ632は、このイベントをピックアップしプロビジョニング付与ポリシーを評価する。付与されているロールに対するアクティブなアプリケーション付与があった場合、プロビジョニングサブスクライバは、何らかの検証を実行し、アカウント作成を開始し、ターゲットシステムをコールアウトし、ターゲットシステムにアカウントを作成し、アカウント作成が成功したとマーキングする。これらの機能各々の結果として、「prov.account.create.initiate」、「prov.target.create.initiate」、「prov.target.create.success」または「prov.account.create.success」などの対応するイベントがパブリッシュされることになり得る。これらのイベントは、直近N日間でターゲットシステムにおいて作成されたアカウントの数を合計する自身のビジネスメトリクスを有し得る。
【0079】
一実施形態において、IDCSはユーザのログインのために使用することができる。たとえば、クライアントアプリケーション602は、サポートされている認証フローのうちの1つを用いてユーザのログインを要求してもよい。IDCSは、ユーザを認証し、成功すると、監査スキーマ624における監査テーブルに対するオペレーションを監査する。失敗すると、IDCSは、監査スキーマ624における失敗を監査し、メッセージキュー628の「login.user.login.failure」イベントをパブリッシュする。ログインサブスクライバは、このイベントをピックアップし、ユーザに対するそのメトリクスを更新し、ユーザのアクセス履歴についての追加分析を実行する必要があるか否かを判断する。
【0080】
したがって、「制御の反転」機能を実現する(たとえば実行の流れを変更することにより、後の時点におけるオペレーションの実行を、当該オペレーションが別のシステムの支配下になるように、スケジュールする)ことにより、実施形態は、その他のイベントキューおよびサブスクライバを動的に追加して、小さなユーザサンプルに対する新たな特徴を、より広いユーザベースにデプロイする前にテストする、または、特定の内部または外部の顧客のための特定のイベントを処理することができる。
【0081】
ステートレス機能
IDCSマイクロサービスはステートレスである。これは、マイクロサービスそのものはステートを保持しないことを意味する。「ステート」とは、アプリケーションがその機能を果たすために使用するデータのことを言う。IDCSは、マルチテナント機能を、すべてのステートを、IDCSデータ層内の特定テナント向けリポジトリにパーシストすることによって提供する。中間層(すなわち要求を処理するコード)は、アプリケーションコードと同じ場所に格納されているデータを有しない。したがって、IDCSは横方向および縦方向双方においてスケーラビリティが高い。
【0082】
縦方向のスケーリング(またはスケールアップ/ダウン)は、システム内の1つのノードにリソースを追加する(またはこのノードからリソースを削除する)ことを意味し、1つのコンピュータにCPUまたはメモリを追加することを伴うのが一般的である。縦方向のスケーラビリティによって、アプリケーションはそのハードウェアの限界までスケールアップすることができる。横方向のスケーリング(またはスケールアウト/イン)は、新たなコンピュータを分散型ソフトウェアアプリケーションに追加するといったように、より多くのノードをシステムに追加する(またはシステムからノードを削除する)ことを意味する。横方向のスケーラビリティにより、アプリケーションはほぼ無限にスケーリング可能であり、ネットワークによって提供される帯域幅の量のみの制約を受ける。
【0083】
IDCSの中間層がステートレスであることにより、CPUをさらに追加するだけで横方向にスケーラブルになり、アプリケーションの仕事を実行するIDCSコンポーネントは、特定なアプリケーションが走っている指定された物理的インフラストラクチャを持つ必要がない。IDCSの中間層がステートレスであることにより、非常に多くの顧客/テナントにアイデンティティサービスを提供しているときであっても、IDCSの可用性が高くなる。IDCSアプリケーション/サービスを通る各パスは、専らアプリケーショントランザクションを実行するためにCPU用途に集中するが、データの格納にハードウェアを使用しない。スケーリングは、必要に応じてより多くのコピーを追加できるパーシステンス層にトランザクション用のデータが格納される一方で、アプリケーションが走っているときにより多くのスライスを追加することによって実現される。
【0084】
IDCSウェブ層、中間層、およびデータ層は各々独立してかつ別々にスケーリング可能である。ウェブ層をスケーリングすることにより、より多くのHTTP要求を扱うことができる。中間層をスケーリングすることにより、より多くのサービス機能をサポートすることができる。データ層をスケーリングすることにより、より多くのテナントをサポートすることができる。
【0085】
IDCS機能ビュー
図6Aは、一実施形態におけるIDCSの機能ビューのブロック図の一例600bである。ブロック
図600bにおいて、IDCS機能スタックは、サービスと、共有ライブラリと、データストアとを含む。サービスは、IDCSプラットフォームサービス640bと、IDCSプレミアムサービス650bと、IDCSインフラストラクチャサービス662bとを含む。一実施形態において、IDCSプラットフォームサービス640bおよびIDCSプレミアムサービス650bは、別々にデプロイされたJavaベースのランタイムサービスであり、IDCSのビジネスを実現する。IDCSインフラストラクチャサービス662bは、別々にデプロイされたランタイムサービスであり、IDCSに対するインフラストラクチャサポートを提供する。共有ライブラリは、IDCSサービスによって使用される共有ライブラリとしてパッケージングされた共通コードであるIDCSインフラストラクチャライブラリ680bと、共有ライブラリとを含む。データストアは、IDCSが必要とする/生成するデータリポジトリであり、アイデンティティストア698b、グローバル構成700b、メッセージストア702b、グローバルテナント704b、パーソナライゼーション設定706b、リソース708b、ユーザ一時データ710b、システム一時データ712b、テナントごとのスキーマ(管理されたExaData)714b、オペレーショナルストア(図示せず)、キャッシングストア(図示せず)などを含む。
【0086】
一実施形態において、IDCSプラットフォームサービス640bは、たとえばOpenID Connectサービス642b、OAuth2サービス644b、SAML2サービス646b、およびSCIM++サービス648bを含む。一実施形態において、IDCSプレミアムサービスは、たとえば、クラウドSSOおよびガバナンス652b、
企業ガバナンス654b、AuthNブローカー656b、連携ブローカー658b、およびプライベートアカウント管理660bを含む。
【0087】
IDCSインフラストラクチャサービス662bおよびIDCSインフラストラクチャライブラリ680bは、IDCSプラットフォームサービス640bがその仕事を実行するのに必要とする機能のサポートを提供する。一実施形態において、IDCSインフラストラクチャサービス662bは、ジョブスケジューラ664b、UI666b、SSO668b、レポート670b、キャッシュ672b、ストレージ674b、サービスマネージャ676b(パブリッククラウド制御)、およびイベントプロセッサ678b(ユーザ通知、アプリケーション申込、監査、データ解析)を含む。一実施形態において、IDCSインフラストラクチャライブラリ680bは、データマネージャAPI682b、イベントAPI684b、ストレージAPI686b、認証API688b、認可API690b、クッキーAPI692b、キーAPI694b、およびクレデンシャルAPI696bを含む。一実施形態において、クラウド計算サービス602b(内部Nimbula)は、
IDCSインフラストラクチャサービス662bおよびIDCSインフラストラクチャライブラリ680bの機能をサポートする。
【0088】
一実施形態において、IDCSは、顧客エンドユーザUI604b、顧客管理UI606b、DevOps管理UI608b、およびログインUI610bなど、IDCSサービスのコンシューマのためのさまざまなUI602bを提供する。一実施形態において、IDCSは、アプリケーション(たとえば顧客アプリケーション614b、パートナーアプリケーション616b、およびクラウドアプリケーション618b)の統合612bならびにファームウェア統合620bを可能にする。一実施形態において、さまざまな環境がIDCSと統合されてそのアクセス制御のニーズをサポートしてもよい。このような統合は、たとえば、アイデンティティブリッジ622b(AD統合、WNA、およびSCIMコネクタを提供)、アパッチエージェント624b、またはMSFTエージェント626bによって提供される。
【0089】
一実施形態において、内部および外部のIDCSコンシューマは、OpenID Connect630b、OAuth2 632b、SAML2 634b、SCIM636b、およびREST/HTTP638bなどの標準ベースのプロトコル628bに対するIDCSのアイデンティティサービスと統合される。これにより、ドメインネームシステム(domain name system)(「DNS」)を用いて、要求をどこにルーティングするかを判断することができ、アプリケーションの消費を、アイデンティティサービスの内部実現を理解することから切離す。
【0090】
図6AのIDCS機能ビューはさらに、IDCSが、ユーザ通知(クラウド通知サービス718b)、ファイルストレージ(クラウドストレージサービス716b)、およびDevOPsのためのメトリクス/警告(クラウドモニタサービス(EM)722bおよびクラウドメトリクスサービス(グラファイト)720b)のために依存する共通機能を提供する、パブリッククラウドインフラストラクチャサービスを含む。
【0091】
クラウドゲート
一実施形態において、IDCSはウェブ層において「クラウドゲート」を実現する。クラウドゲートは、ウェブアプリケーションがユーザSSOをアイデンティティ管理システム(たとえばIDCS)に外部化することを可能にするウェブサーバプラグインであり、これは、企業IDMスタックと協力するWebGateまたはWebAgent技術と同様である。クラウドゲートは、IDCS APIに対するアクセスを安全にするセキュリティゲートキーパの役割を果たす。一実施形態において、クラウドゲートは、OAuthに基づいてHTTPリソースを保護するためにウェブポリシー施行点(Policy Enforceme
nt Point)(「PEP」)を提供するウェブ/プロキシサーバプラグインによって実現される。
【0092】
図7は、クラウドゲート702を実現する実施形態のブロック
図700である。クラウドゲート702は、ウェブサーバ712内で実行され、ポリシー施行点(「PEP」)の役割を果たす。ポリシー施行点は、オープン標準(たとえばOAuth2、OpenID
Connectなど)を用いるIDCSポリシー決定点(Policy Decision Point)(
「PDP」)と統合され、一方でウェブブラウザおよびアプリケーションのREST APIリソース714へのアクセスを安全にするように構成されている。いくつかの実施形態において、PDPは、OAuthおよび/またはOpenID Connectマイクロサービス704で実現される。たとえば、ユーザブラウザ706がユーザ710のログインを求める要求をIDCSに送信すると、対応するIDCS PDPは、クレデンシャルを検証した後に、このクレデンシャルが十分であるか否か(たとえば第2のパスワードなどのその他のクレデンシャルを要求するか否か)を判断する。
図7の実施形態において、クラウドゲート702は、ローカルポリシーを有するので、PEPとしてもPDPとしてもその役割を果たし得る。
【0093】
ワンタイム・デプロイメントの一部として、クラウドゲート702には、OAuth2クライアントとしてのIDCSが登録され、これが、IDCSに対してOIDCおよびOAuth2オペレーションを要求することを可能にする。その後、これは、要求マッチングルール(URLをたとえばワイルドカード、通常表現などに対して如何にしてマッチングするか)の適用を受ける、アプリケーションの保護されたリソースおよび保護されていないリソースに関する構成情報を保持する。クラウドゲート702をデプロイすることにより、異なるセキュリティポリシーを有する異なるアプリケーションを保護することができ、保護されるアプリケーションはマルチテナントであってもよい。
【0094】
ブラウザベースのユーザアクセス中、クラウドゲート702は、ユーザ認証フローを開始するOIDC RP718として機能する。ユーザ710が有効なローカルユーザセッションを有していない場合、クラウドゲート702は、ユーザをSSOマイクロサービスにリダイレクトし、SSOマイクロサービスとともにOIDC「認証コード」フローに参加する。このフローは、アイデンティティトークンとしてのJWTの配信で終了する。クラウドゲート708は、JWTを検証し(たとえば署名、満了、宛先/オーディエンスなどに注目し)、ユーザ710に関するローカルセッションクッキーを発行する。これは、保護されているリソースへのウェブブラウザのアクセスを安全にしかつローカルセッションクッキーを発行、更新、および検証するセッションマネージャ716として機能する。これはまた、そのローカルセッションクッキーの削除のためのログアウトURLを提供する。
【0095】
クラウドゲート702はまた、HTTPベーシックAuth認証者の役割を果たし、IDCSに対するHTTPベーシックAuthクレデンシャルを検証する。この行動は、セッションレスおよびセッションベースの(ローカルセッションクッキー)モードでサポートされる。この場合、サーバ側IDCSセッションは生成されない。
【0096】
REST APIクライアント708によるプログラムアクセス中、クラウドゲート702は、アプリケーションの保護されているREST API714のためのOAuth2リソースサーバ/フィラー720の役割を果たし得る。これは、認証ヘッダおよびアクセストークンに対して要求が存在するか否かを検査する。クライアント708(たとえばモバイル、ウェブアプリケーション、JavaScriptなど)が(IDCSによって発行された)アクセストークンを、保護されているREST API714とともに使用するために示すと、クラウドゲート702は、APIへのアクセスを許可する前にアクセ
ストークンを検証する(たとえば署名、満了、オーディエンスなど)。元のアクセストークンは修正なしで送られる。
【0097】
一般的に、OAuthを用いてクライアントアイデンティティ伝播トークン(たとえばクライアントが誰であるかを示す)またはユーザアイデンティティ伝播トークン(たとえばユーザが誰であるかを示す)を生成する。本実施形態において、クラウドゲートにおけるOAuthの実現は、たとえばIETF、RFC7519によって提供されるようなウェブトークンのフォーマットを定めるJWTに基づく。
【0098】
ユーザがログインすると、JWTが発行される。JWTは、IDCSによって署名され、IDCSにおけるマルチテナント機能をサポートする。クラウドゲートは、IDCSが発行したJWTを検証することにより、IDCSにおけるマルチテナント機能を可能にする。したがって、IDCSは、物理構造においても、セキュリティモデルを支持する論理ビジネスプロセスにおいてもマルチテナンシーを提供する。
【0099】
テナンシーの種類
IDCSは3種類のテナンシーとして、顧客テナンシー、クライアントテナンシー、およびユーザテナンシーを特定する。顧客またはリソーステナンシーは、IDCSの顧客が誰であるか(すなわち作業が誰に対して実行されているか)を特定する。クライアントテナンシーは、どのクライアントアプリケーションがデータにアクセスしようとしているか(すなわちどのアプリケーションが作業を実行しているか)を特定する。ユーザテナンシーは、どのユーザがアプリケーションを用いてデータにアクセスしているか(すなわち誰によって作業が実行されているか)を特定する。たとえば、専門サービス企業が大型ディスカウントショップを対象とするシステム統合機能を提供しこの大型ディスカウントショップのシステムのアイデンティティ管理を提供するためにIDCSを使用するとき、ユーザテナンシーは、この専門サービス企業に相当し、クライアントテナンシーはシステム統合機能を提供するために使用されるアプリケーションに相当し、顧客テナンシーは大型ディスカウントショップである。
【0100】
これら3つのテナンシーを分離および統合することによってクラウドベースのサービスにおけるマルチテナント機能が可能になる。一般的に、オンプレミスの物理的なマシンにインストールされているオンプレミスソフトウェアの場合、これら3つのテナンシーを特定する必要はない。なぜなら、ユーザはログインするのに物理的にマシン上にいなければならないからである。しかしながら、クラウドベースのサービス構造の場合、実施形態は、トークンを持いて、誰がどのアプリケーションを使用してどのリソースにアクセスするかを判断する。3つのテナンシーは、トークンによってコーディファイ(codify)され、クラウドゲートによって施行され、中間層のビジネスサービスによって使用される。一実施形態において、OAuthサーバがトークンを生成する。さまざまな実施形態において、このトークンは、OAuth以外のセキュリティプロトコルとともに使用されてもよい。
【0101】
ユーザ、クライアント、およびリソーステナンシーを分離することにより、IDCSが提供するサービスのユーザには実質的なビジネス上の利点が与えられる。たとえば、そうすることにより、ビジネス(たとえば健康ビジネス)のニーズおよびそのアイデンティティ管理の問題を理解するサービスプロバイダは、IDCSが提供するサービスを購入し、IDCSのサービスを消費する自身のバックエンドアプリケーションを開発し、このバックエンドアプリケーションをターゲットビジネスに提供することができる。したがって、サービスプロバイダは、IDCSのサービスを拡張してその所望の機能を提供するとともにそれらを特定のターゲットビジネスに対して差出すことができる。サービスプロバイダは、ソフトウェアを構築し実行してアイデンティサービスを提供する必要はないが、その
代わりに、IDCSのサービスを拡張しカスタマイズしてターゲットビジネスのニーズに合うようにすることができる。
【0102】
周知のシステムの中には、顧客テナンシーである単一のテナンシーしか説明しないものがある。しかしながら、そのようなシステムは、顧客ユーザ、顧客のパートナー、顧客のクライアント、クライアント自身、または、アクセスが顧客から委任されたクライアントなどのユーザの組み合わせによるアクセスを処理するときには不十分である。本実施形態において複数のテナンシーを規定し施行することにより、これらの多様なユーザに対して管理機能を特定することが容易になる。
【0103】
一実施形態において、IDCSの1エンティティは、複数のテナントに同時に属しているのではなく、1つのテナントのみに属し、「テナンシー」はアーティファクトが存在する場所である。一般的に、特定の機能を実現するコンポーネントは複数存在し、これらのコンポーネントは複数のテナントに属することが可能であるまたはインフラストラクチャに属することが可能である。インフラストラクチャは、テナントの代わりに機能する必要があるとき、テナントの代わりにエンティティサービスと対話する。この場合、インフラストラクチャそのものは自身のテナンシーを有し、顧客は自身のテナンシーを有する。要求がサブミットされたとき、この要求に関わる複数のテナンシーが存在する。
【0104】
たとえば、「テナント1」に属するクライアントが、「テナント3」におけるユーザを指定する「テナント2」のためのトークンを取得することを求める要求を実行する場合がある。別の例として、「テナント1」に存在するユーザが、「テナント2」が所有するアプリケーションにおけるアクションを実行する必要がある場合がある。よって、ユーザは、「テナント2」のリソースネームスペースに行きそのためのトークンを要求する必要がある。したがって、権限の委任は、「誰が」「何を」「誰」に対して行うことができるかを特定することによって実現される。もう1つの例として、第1の組織(「テナント1」)のために働く第1のユーザが、第2の組織(「テナント2」)のために働く第2のユーザが第3の組織(「テナント3」)がホストする文書にアクセスすることを、許可してもよい。
【0105】
一例において、「テナント1」のクライアントは、「テナント3」のアプリケーションにアクセスするために「テナント2」のユーザのためのアクセストークンを要求してもよい。クライアントは、「http://tenant3/oauth/token」に行きこのトークンを求めるOAuth要求を呼び出すことによって当該トークンを要求してもよい。クライアントは、「クライアントアサーション」を要求に含めることにより、自身が「テナント1」に在住するクライアントであることを明らかにする。このクライアントアサーションは、クライアントID(たとえば「クライアント1」)とクライアントテナンシー(「テナント1」)とを含む。「テナント1」の「クライアント1」として、クライアントは、「テナント3」に対するトークンを求める要求を呼び出す権利を有し、「テナント2」のユーザのためのトークンを所望する。したがって、「ユーザアサーション」も同じHTTP要求の一部として送られる。生成されるアクセストークンは、アプリケーションテナンシー(「テナント3」)であるターゲットテナンシーのコンテキストにおいて発行され、ユーザテナンシー(「テナント2」)を含む。
【0106】
一実施形態において、データ層における各テナントは、独立したストライプとして実現される。データ管理の観点からすると、アーティファクトはテナントに存在する。サービスの観点からすると、サービスは、異種のテナントとどのようにして協力するかを知っており、複数のテナンシーは、サービスのビジネス機能における異なるディメンションである。
図8は、ある実施形態において複数のテナンシーを実現するシステムの一例800を示す。システム800はクライアント802を含み、クライアント802は、如何にして
データベース806のデータ用いて作業するかを理解しているマイクロサービス804が提供するサービスを要求する。このデータベースは複数のテナント808を含み、各テナントは対応するテナンシーのアーティファクトを含む。一実施形態において、マイクロサービス804は、トークンを得ようとしてhttps://tenant3/oauth/tokenを通して要求さ
れるOAuthマイクロサービスである。OAuthマイクロサービスの機能が、マイクロサービス804において、データベース806からのデータを用いて実行されることにより、クライアント802の要求が正当であるか否かが検証され、正当である場合は、異なるテナンシー808からのデータが使用されてトークンが構成される。したがって、システム800は、各テナンシーに与えられるサービスをサポートするだけでなく各種テナントに代わって機能し得るサービスをサポートすることによりクロステナント環境において作業できるという点において、マルチテナントである。
【0107】
システム800は好都合である。理由は次の通りである。マイクロサービス804はデータベース806のデータから物理的に切離されており、クライアントにより近い場所を通ってデータを複製することにより、マイクロサービス804をクライアントに対するローカルサービスとして提供することができ、システム800はサービスのアベイラビリティを管理しそれをグローバルに提供することができる。
【0108】
一実施形態において、マイクロサービス804はステートレスである。これは、マイクロサービス804を走らせるマシンが、特定のテナントに対するサービスを示すマーカを保持していないことを意味する。その代わりに、テナンシーは、たとえば、入ってくる要求のURLのホスト部分にマーキングされてもよい。このテナンシーはデータベース806のテナント808のうちの1つを示す。多数のテナント(たとえば何百万ものテナント)をサポートする場合、マイクロサービス804は、データベース806への同数の接続を有することはできない。マイクロサービス804はその代わりに、データベースユーザというコンテキストにおいてデータベース806への実際の物理接続を提供する接続プール810を使用する。
【0109】
一般的に、接続は、基礎をなすドライバまたはプロバイダに接続ストリングを提供することによって構築される。接続ストリングは、特定のデータベースまたはサーバをアドレス指定するために、かつ、インスタンスおよびユーザ認証クレデンシャルを与えるために使用される(たとえば「Server=sql_box;Database=Common;User ID=uid;Pwd=password;」)。接続は、一旦構築されると、開閉が可能であり、プロパティ(たとえばコマンドタイムアウト長さ、または存在するのであればトランザクション)を設定することができる。接続ストリングは、データプロバイダのデータアクセスインターフェイスによって指示されるキーと値とのペアのセットを含む。接続プールは、データベースに対する未来の要求が必要なときに接続を再使用できるように保持されるデータベース接続のキャッシュである。接続プーリングにおいて、接続は、作成後にプールに置かれ、新たな接続を確立しなくてもよいように、再使用される。たとえば、マイクロサービス804とデータベース808との間に10の接続が必要な場合、接続プール810には、すべてデータベースユーザというコンテキストにおいて(たとえば特定のデータベースユーザに関連して、たとえば、誰がこの接続の所有者か、誰のクレデンシャルが検証中なのか、それはデータベースユーザか、それはシステムクレデンシャルかなどに関連して)開いている10の接続があるであろう。
【0110】
接続プール810内の接続は、何にでもアクセスできるシステムユーザのために作成される。したがって、テナントに代わって要求を処理するマイクロサービス804による監査および特権を正しく扱うために、データベース動作は、特定のテナントに割り当てられたスキーマ所有者に関連する「プロキシユーザ」812というコンテキストで実行される。このスキーマ所有者は、このスキーマ作成の目的であったテナンシーにのみアクセスで
き、このテナンシーの値はこのスキーマ所有者の値である。データベース806内のデータを求める要求がなされると、マイクロサービス804は、接続プール810内の接続を用いてこのデータを提供する。したがって、マルチテナンシーは、リソーステナンシーに対応付けられたデータストアプロキシユーザというコンテキストにおいて(たとえばそれに関連して)作成されたデータ接続のトップにある要求ごとに構築された特定テナント向けデータストアバインディングというコンテキストにおいて(たとえばそれに関連して)入ってくる要求を処理するステートレスでエラスティックな中間層サービスを持つことによって得られ、データベースは、サービスとは無関係にスケーリングできる。
【0111】
以下は、プロキシユーザ812を実現するための機能の例を提供する。
【0112】
【0113】
この機能において、マイクロサービス804は、接続プール810内のデータベース接続を使用する一方で、接続プール810から引出された接続に対する「プロキシユーザ(Proxy User)」設定を、「テナント(Tenant)」にセットし、テナントというコンテキストにおいてデータオペレーションを実行する。
【0114】
すべてのテーブルをストライピングすることにより同じデータベースにおいて異なるテナント用に異なるコラムを構成するとき、1つのテーブルは、混合されたすべてのテナントのデータを含み得る。これに対し、一実施形態は、テナント駆動のデータ層を提供する。本実施形態は、異なるテナント用に同一データベースをストライピングするのではなく、テナントごとに異なる物理データベースを提供する。たとえば、マルチテナンシーは、プラガブルデータベース(たとえばオラクル社のOracle Database 12c)を用いて実現さ
れてもよく、この場合、各テナントには別々のパーティションが割り当てられる。データ層では、リソースマネージャが要求を処理し、その後、その要求のデータソースを求める(メタデータとは別)。本実施形態は、要求ごとに各データソース/ストアへのランタイムスイッチを実行する。各テナントのデータをその他のテナントから分離することにより、本実施形態は改善されたデータセキュリティを提供する。
【0115】
一実施形態において、互いに異なるトークンは、異なるテナンシーをコーディファイする。URLトークンは、サービスを要求するアプリケーションのテナンシーを特定し得る。アイデンティティトークンは、認証すべきユーザのアイデンティティをコーディファイし得る。アクセストークンは複数のテナンシーを特定し得る。たとえば、アクセストークンは、このようなアクセスのターゲットであるテナンシー(たとえばアプリケーションテナンシー)と、アクセス権が付与されたユーザのユーザテナンシーとをコーディファイし得る。クライアントアサーショントークンは、クライアントIDおよびクライアントテナンシーを特定し得る。ユーザアサーショントークンは、ユーザおよびユーザテナンシーを特定し得る。
【0116】
一実施形態において、アイデンティティトークンは、少なくとも、ユーザテナント名(すなわちユーザが在住している場所)を示す「クレーム/ステートメント」を含む。認証トークンに関連する「クレーム」(セキュリティ分野の当業者が使用)は、ある主体が自身または別の主体に関して作成するステートメントである。ステートメントは、たとえば名称、アイデンティティ、キー、グループ、権限、または能力に関するものであってもよ
い。クレームは、プロバイダによって発行され、1つ以上の値が与えられた後に、セキュリティトークンサービス(security token service)(「STS」)として一般的に知られている発行者が発行したセキュリティトークンにパッケージングされる。
【0117】
一実施形態において、アクセストークンは、少なくとも、アクセストークンを求める要求がなされた時点のリソーステナント名(たとえば顧客)を示すクレーム/ステートメントと、ユーザテナント名を示すクレームと、要求しているOAuthクライアントの名称を示すクレームと、クライアントテナント名を示すクレームとを含む。一実施形態において、アクセストークンは、以下のJSON機能に従って実現されてもよい。
【0118】
【0119】
一実施形態において、クライアントアサーショントークンは、少なくとも、クライアントテナント名を示すクレームと、要求しているOAuthクライアントの名称を示すクレームとを含む。
【0120】
本明細書に記載のトークンおよび/または複数のテナンシーは、IDCS以外の任意のマルチテナントクラウドベースサービスによって実現されてもよい。たとえば、本明細書に記載のトークンおよび/または複数のテナンシーは、SaaSまたは企業リソースプランニング(Enterprise Resource Planning)(「ERP」)サービスにおいて実現されてもよい。
【0121】
図9は、一実施形態におけるIDCSのネットワークビュー900のブロック図である。
図9は、一実施形態においてアプリケーション「ゾーン」904間で行われるネットワーク対話を示す。アプリケーションは、要求される保護レベルと、その他さまざまなシステムへの接続の実現に基づいてゾーンに分割される(たとえばSSLゾーン、no SSLゾーンなど)。アプリケーションゾーンのうち、いくつかはIDCS内部からのアクセスを要するサービスを提供するアプリケーションゾーンであり、いくつかはIDCS外部からのアクセスを要するサービスを提供するアプリケーションゾーンであり、いくつかはオープンアクセスである。したがって、各保護レベルは各ゾーンに対して強化される。
【0122】
図9の実施形態において、サービス間の通信は、HTTP要求を用いて行われる。一実施形態において、IDCSは、本明細書に記載のアクセストークンを用いて、サービスを提供するだけでなく、IDCSへのアクセスおよびIDCS自身の内部におけるアクセスを安全なものにする。一実施形態において、IDCSマイクロサービスは、RESTfulインターフェイスを通してエクスポーズされ、本明細書に記載のトークンによって安全なものにされる。
【0123】
図9の実施形態において、さまざまなアプリケーション/サービス902のうちのいずれか1つが、IDCS APIに対してHTTPコールすることにより、IDCSサービスを使用してもよい。一実施形態において、アプリケーション/サービス902のHTTP要求は、オラクルパブリッククラウドロードバランシング外部仮想IPアドレス(「VIP」)906(またはその他同様の技術)、パブリッククラウドウェブルーティング層908、およびIDCSロードバランシング内部VIPアプライアンス910(またはその他同様の技術)を通って、IDCSウェブルーティング層912により受信されてもよい。IDCSウェブルーティング層912は、IDCSの外部または内部からの要求を受信し、IDCSプラットフォームサービス層914またはIDCSインフラストラクチャサービス層916を通してルーティングする。IDCSプラットフォームサービス層914は、OpenID Connect、OAuth、SAML,SCIMなどのIDCSの外部から呼び出されたIDCSマイクロサービスを含む。IDCSインフラストラクチャサービス層916は、その他のIDCSマイクロサービスの機能をサポートするためにIDCSの内部から呼び出されたサポートマイクロサービスを含む。IDCSインフラストラクチャマイクロサービスの例は、UI、SSO、レポート、キャッシュ、ジョブスケジューラ、サービスマネージャ、キーを作るための機能などである。IDCSキャッシュ層926は、IDCSプラットフォームサービス層914およびIDCSインフラストラクチャサービス層916のためのキャッシング機能をサポートする。
【0124】
IDCSへの外部アクセスおよびIDCS内部アクセス双方のセキュリティを強化することにより、IDCSの顧客に、それが実行するアプリケーションのための傑出したセキュリティコンプライアンスを与えることができる。
【0125】
図9の実施形態において、構造化照会言語(Structured Query Language)(「SQL
」)に基づいて通信するデータ層918およびLDAPに基づいて通信するIDストア層920以外については、OAuthプロトコルを使用することにより、IDCS内のIDCSコンポーネント(たとえばマイクロサービス)間の通信を保護し、IDCS外部からのアクセスを安全なものにするために使用される同じトークンをIDCS内のセキュリティのためにも使用する。すなわち、ウェブルーティング層912は、要求がIDCSの外部から受けたものであろうとIDCSの内部から受けたものであろうと、受信した要求を処理するための同じトークンおよびプロトコルを使用する。したがって、IDCSは、システム全体を保護するために1つの一貫したセキュリティモデルを提供することにより、傑出したセキュリティコンプライアンスを可能にする。なぜなら、システム内に実現されるセキュリティモデルが少ないほど、システムの安全性は高くなるからである。
【0126】
IDCSクラウド環境において、アプリケーションは、ネットワークコールを行うことによって通信する。ネットワークコールは、HTTP、伝送制御プロトコル(Transmission Control Protocol)(「TCP」)、ユーザデータグラムプロトコル(User Datagram
Protocol)(「UDP」)などの適用可能なネットワークプロトコルに基づいていれば
よい。たとえば、アプリケーション「X」は、アプリケーション「Y」と、HTTPに基づいて、アプリケーション「Y」をHTTPユニフォーム・リソース・ロケータ(Uniform Resource Locator)(「URL」)としてエクスポーズすることにより、通信し得る。一実施形態において、「Y」は、各々がある機能に対応する多数のリソースをエクスポーズするIDCSマイクロサービスである。「X」(たとえば別のIDCSマイクロサービス)は、「Y」をコールする必要があるとき、「Y」と、呼び出す必要があるリソース/機能とを含むURLを構成し(たとえばhttps:/host/Y/resource)、ウェブルーティング層912を通って「Y」に導かれる対応するRESTコールを行う。
【0127】
一実施形態において、IDCS外部の呼出元は、「Y」がどこにあるかを知る必要がな
い場合があるが、ウェブルーティング層912はアプリケーション「Y」がどこで走っているかを知る必要がある。一実施形態において、IDCSは、発見機能を実現する(OAuthサービスによって実現される)ことにより、各アプリケーションがどこで走っているかを判断し、スタティックなルーティング情報の可用性が必要ではなくなるようにする。
【0128】
一実施形態において、企業マネージャ(enterprise manager)(「EM」)922は、オンプレミスおよびクラウドベース管理をIDCSに拡張する「一枚のガラス」を提供する。一実施形態において、Chef Software社の構成管理ツールである「シェフ(Chef)」
サーバ924は、さまざまなIDCS層のための構成管理機能を提供する。一実施形態において、サービスデプロイメントインフラストラクチャおよび/または永続格納モジュール928は、テナントライフサイクル管理動作、パブリッククラウドライフサイクル管理動作、またはその他の動作のために、OAuth2 HTTPメッセージをIDCSウェブルーティング層912に送信してもよい。一実施形態において、IDCSインフラストラクチャサービス層916は、ID/パスワードHTTPメッセージを、パブリッククラウド通知サービス930またはパブリッククラウドストレージサービス932に送信してもよい。
【0129】
クラウドアクセス制御‐SSO
一実施形態は、クラウドスケールSSOサービスを実現するために軽量クラウド標準をサポートする。軽量クラウド標準の例としては、HTTP、REST、および、ブラウザを通してアクセスを提供する標準(ウェブブラウザは軽量であるため)が挙げられる。逆に、SOAPは、クライアントを構築するためにより多くの管理、構成、およびツールを必要とする重いクラウド標準の一例である。本実施形態は、アプリケーションのためにOpenID Connectセマンティックスを使用することにより、IDCSに対してユーザ認証を要求する。本実施形態は、軽量HTTPクッキーベースのユーザセッション追跡を用いて、ステートフルなサーバ側セッションサポートなしで、IDCSにおけるユーザのアクティブなセッションを追跡する。本実施形態は、使用するアプリケーションに対して、認証されたアイデンティティを自身のローカルセッションに戻すマッピングを行うときに、JWTベースのアイデンティティトークンを使用する。本実施形態は、連携されているアイデンティティ管理システムとの統合をサポートし、IDCSに対してユーザ認証を要求するために企業デプロイメントのSAML IDPサポートをエクスポーズする。
【0130】
図10は、一実施形態におけるIDCS内のSSO機能のシステムアーキテクチャビューのブロック
図1000である。本実施形態は、クライアントアプリケーションが標準ベースのウェブプロトコルを推進してユーザ認証フローを開始することを可能にする。クラウドシステムとSSOの統合を要求するアプリケーションは、企業データセンターにあってもよく、遠隔パートナーデータセンターにあってもよく、またはオンプレミスの顧客によって操作されてもよい。一実施形態において、異なるIDCSプラットフォームサービスが、接続されているネイティブなアプリケーション(すなわちIDCSと統合するためにOpenID Connectを利用するアプリケーション)からのログイン/ログアウト要求を処理するためのOpenID Connect、接続されているアプリケーションからのブラウザベースのログイン/ログアウト要求を処理するためのSAML IDPサービス、外部SAML IDPに対してユーザ認証を調整するためのSAML SPサービス、および、ローカルなまたは連携されたログインフローを含みIDCSホストセッションクッキーを管理するためのエンドユーザログインセレモニーを調整するための内部IDCS SSOサービスなどの、SSOのビジネスを実現する。一般的に、HTTPは、フォームありでまたはフォームなしで機能する。フォームありで機能するとき、このフォームはブラウザ内で見えるフォームである。フォームなしで機能するとき、これはク
ライアントからサーバへの通信として機能する。OpenID ConnectもSAMLも、フォームをレンダリングする能力を必要とするが、これは、ブラウザの存在によって実現される、または、ブラウザが存在しているかのように機能するアプリケーションによって仮想的に実行される。一実施形態において、ユーザ認証/SSOをIDCSを通して実現するアプリケーションクライアントは、IDCSにおいて、OAuth2クライアントとして登録される必要があり、クライアント識別子およびクレデンシャル(たとえばID/パスワード、ID/証明書など)を取得する必要がある。
【0131】
図10の実施形態の例は、2つのプラットフォームマイクロサービスとしてのOAuth2 1004およびSAML2 1006と、1つのインフラストラクチャマイクロサービスとしてのSSO1008とを含む、ログイン機能をまとめて提供する3つのコンポーネント/マイクロサービスを含む。
図10の実施形態において、IDCSは「アイデンティティメタシステム」を提供する。このメタシステムにおいて、SSOサービス1008は、異なる種類のアプリケーションに対して提供される。これらのアプリケーションは、3者間OAuthフローを必要としOpenID Connectリレーパーティ(relaying party)(「RP」、そのユーザ認証機能をIDPにアウトソーシングするアプリケーション)として機能するブラウザベースのウェブまたはネイティブアプリケーション1010、2者間OAuthフローを必要としOpenID Connect RPとして機能するネイティブアプリケーション1011、およびSAML SPとして機能するウェブアプリケーション1012などである。
【0132】
一般的に、アイデンティティメタシステムは、デジタルアイデンティティのための相互運用可能なアーキテクチャであり、複数の基礎となる技術、実装、およびプロバイダの集合体を用いることを可能にする。LDAP、SAML、およびOAuthは、アイデンティティ機能を提供する異なるセキュリティ標準の例であり、アプリケーションを構築するための基礎となることが可能であり、アイデンティティメタシステムは、このようなアプリケーションに対して統一されたセキュリティシステムを提供するように構成されてもよい。LDAPセキュリティモデルは、アイデンティティを扱うための特定のメカニズムを指定し、システムを通るすべてのパスは厳密に保護されねばならない。SAMLは、一組のアプリケーションが、異なるセキュリティドメインの異なる組織に属する別の一組のアプリケーションとの間で安全に情報を交換できるようにするために開発されたものである。これら2つのアプリケーションの間に信頼はないので、SAMLは、一方のアプリケーションが、同じ組織に属していない別のアプリケーションを認証できるように開発された。OAuthは、ウェブベースの認証を実行するための軽量プロトコルであるOpenID Connectを提供する。
【0133】
図10の実施形態において、OpenIDアプリケーション1010がIDCS内のOpenIDサーバに接続すると、その「チャネル」はSSOサービスを要求する。同様に、SAMLアプリケーション1012がIDCS内のSAMLサーバに接続すると、その「チャネル」もSSOサービスを要求する。IDCSにおいて、各マイクロサービス(たとえばOpenIDマイクロサービス1004およびSAMLマイクロサービス1006)はアプリケーション各々を処理し、これらのマイクロサービスはSSOマイクロサービス1008からのSSO機能を要求する。プロトコルごとにマイクロサービスを追加してからSSO機能のためにSSOマイクロサービス1008を用いることにより、このアーキテクチャを拡張して任意の数のその他のセキュリティプロトコルをサポートすることができる。SSOマイクロサービス1008は、セッションを発行し(すなわちSSOクッキー1014が提供される)、このアーキテクチャにおいてセッションを発行する権限を有する唯一のシステムである。IDCSセッションは、ブラウザ1002がSSOクッキー1014を使用することによって実現される。ブラウザ1002はまた、ローカルセッションクッキー1016を用いてそのローカルセッションを管理する。
【0134】
一実施形態において、たとえば、ブラウザ内で、ユーザは、SAMLに基づいて第1のアプリケーションを使用してログインし、その後、OAuthなどの異なるプロトコルを用いて構築された第2のアプリケーションを使用してもよい。ユーザには、同じブラウザ内の第2のアプリケーション上のSSOが与えられる。したがって、ブラウザは、ステートまたはユーザエージェントであり、クッキーを管理する。
【0135】
一実施形態において、SSOマイクロサービス1008は、ログインセレモニー1018、ID/パスワードリカバリ1020、第1回ログインフロー1022、認証マネージャ1024、HTTPクッキーマネージャ1026、およびイベントマネージャ1028を提供する。ログインセレモニー1018は、顧客設定および/またはアプリケーションコンテキストに基づいてSSO機能を実現し、ローカルフォーム(たとえばベーシックAuth)、外部SAML IDP、外部OIDC IDPなどに従って構成されてもよい。ID/パスワードリカバリ1020は、ユーザのIDおよび/またはパスワードの回復のために使用される。第1回ログインフロー1022は、ユーザが1回目にログインしたときに実現される(すなわちSSOセッションはまだ存在しない)。認証マネージャ1024は、認証に成功すると認証トークンを発行する。HTTPクッキーマネージャ1026は認証トークンをSSOクッキーに保存する。イベントマネージャ1028はSSO機能に関連するイベントをパブリッシュする。
【0136】
一実施形態において、OAuthマイクロサービス1004とSSOマイクロサービス1008との間の対話は、ブラウザリダイレクトに基づいており、SSOマイクロサービス1008は、HTMLフォームを用いてユーザに問いかけ、クレデンシャルを検証し、セッションクッキーを発行する。
【0137】
一実施形態において、たとえば、OAuthマイクロサービス1004は、ブラウザ1002から認証要求を受け、3者間OAuthフローに従ってアプリケーションのユーザを認証する。よって、OAuthマイクロサービス1004は、OIDCプロバイダ1030として機能し、ブラウザ1002をSSOマイクロサービス1008にリダイレクトし、アプリケーションコンテキストに沿って進む。ユーザが有効なSSOセッションを有するか否かに応じて、SSOマイクロサービス1008は、既存のセッションを検証するかまたはログインセレモニーを実行する。認証または検証に成功すると、SSOマイクロサービス1008は、認証コンテキストをOAuthマイクロサービス1004に返す。そうすると、OAuthマイクロサービス1004はブラウザ1002を認証(「AZ」コードを有するコールバックURLにリダイレクトする。ブラウザ1002は、AZコードをOAuthマイクロサービス1004に送信し、必要なトークン1032を要求する。また、ブラウザ1002は、HTTP認証ヘッダにおいてそのクライアントクレデンシャル(IDCSをOAuth2クライアントとして登録したときに取得)を含む。これに対し、OAuthマイクロサービス1004は、要求されたトークン1032をブラウザ1002に与える。一実施形態において、ブラウザ1002に与えられるトークン1032は、JWアイデンティティと、IDCS OAuth2サーバによって署名されたアクセストークンとを含む。この機能のさらなる詳細は、以下で
図11を参照しながら開示される。
【0138】
一実施形態において、たとえば、OAuthマイクロサービス1004は、ネイティブアプリケーション1011から認可要求を受け、2者間OAuthフローに従ってユーザを認証する。この場合、OAuthマイクロサービス1004の認証マネージャ1034は対応する認証を(たとえばクライアント1011から受けたID/パスワードに基づいて)実行し、トークンマネージャ1036は、認証に成功すると、対応するアクセストークンを発行する。
【0139】
一実施形態において、たとえば、SAMLマイクロサービス1006は、ブラウザからSSO POST要求を受け、SAML SPとして機能するウェブアプリケーション1012のユーザを認証する。SAMLマイクロサービス1006は次に、SAML IDP1038として機能し、ブラウザ1002をSSOマイクロサービス1008にリダイレクトし、アプリケーションコンテキストに沿って進む。ユーザが有効なSSOセッションを有しているか否かに応じて、SSOマイクロサービス1008は、既存のセッションを検証するか、またはログインセレモニーを実行する。認証または検証に成功すると、SSOマイクロサービス1008は、認証コンテキストをSAMLマイクロサービス1006に返す。そうすると、SAMLマイクロサービスは、必要なトークンでSPにリダイレクトする。
【0140】
一実施形態において、たとえば、SAMLマイクロサービス1006は、SAML SP1040として機能してもよく、遠隔SAML IDP1042(たとえばアクティブディレクトリ連携サービス(active directory federation service)(「ADFS」)
に進んでもよい。一実施形態は、標準SAML/ADフローを実現する。一実施形態において、SAMLマイクロサービス1006とSSOマイクロサービス1008との間の対話は、ブラウザのリダイレクトに基づいており、SSOマイクロサービス1008は、HTMLフォームを用いてユーザに問いかけ、クレデンシャルを検証し、セッションクッキーを発行する。
【0141】
一実施形態において、IDCS内部のコンポーネント(たとえば1004、1006、1008)と、IDCS外部のコンポーネント(たとえば1002、1011、1042)との間の対話は、ファイアウォール1044を通して行われる。
【0142】
ログイン/ログアウトフロー
図11は、一実施形態における、IDCSによって提供されるSSO機能のメッセージシーケンスフロー1100である。ユーザがブラウザ1102を用いてクライアント1106(たとえばブラウザベースのアプリケーションまたはモバイル/ネイティブアプリケーション)にアクセスするとき、クラウドゲート1104は、アプリケーション施行点として機能し、ローカルポリシーテキストファイルに規定されているポリシーを施行する。クラウドゲート1104は、ユーザがローカルアプリケーションセッションを有していないことを検出した場合、ユーザの認証を要求する。そうするために、クラウドゲート1104は、ブラウザ1102をOAuth2マイクロサービス1110にリダイレクトすることにより、OAuth2マイクロサービス1110に対するOpenID Connectログインフローを開始する(3者間AZ Grantフローであり、範囲=「openid
profile」)。
【0143】
ブラウザ1102の要求は、IDCSルーティング層ウェブサービス1108およびクラウドゲート1104を横断してOAuth2マイクロサービス1110に到達する。OAuth2マイクロサービス1110は、アプリケーションコンテキスト(すなわちアプリケーションを記述するメタデータ、たとえば接続するアプリケーションのアイデンティティ、クライアントID、構成、アプリケーションは何ができるかなど)を構成し、ブラウザ1102をログインのためにSSOマイクロサービス1112にリダイレクトする。
【0144】
ユーザが有効なSSOセッションを有する場合、SSOマイクロサービス1112は、ログインセレモニーを開始することなく既存のセッションを検証する。ユーザが有効なSSOセッションを有していない場合(すなわちセッションクッキーが存在しない)、SSOマイクロサービス1112は、顧客のログインプリファレンスに従ってユーザログインセレモニーを開始する(たとえば商標付ログインページを表示する)。そうするために、
SSOマイクロサービス1112は、ブラウザ1102を、JavaScriptで実現されるログインアプリケーションサービス1114にリダイレクトする。ログインアプリケーションサービス1114はブラウザ1102にログインページを提供する。ブラウザ1102はログインクレデンシャルを含むREST POSTをSSOマイクロサービス1112に送信する。SSOマイクロサービス1112は、アクセストークンを生成し、REST POSTのクラウドゲート1104に送信する。クラウドゲート1104は、認証情報を管理SCIMマイクロサービス1116に送信することによりユーザのパスワードを検証する。管理SCIMマイクロサービス1116は、認証が成功したと判断し、対応するメッセージをSSOマイクロサービス1112に送信する。
【0145】
一実施形態において、ログインセレモニー中、ログインページは同意ページを表示しない。「ログイン」オペレーションはさらなる同意を要しないからである。代わりに、アプリケーションに対してエクスポーズされている特定のプロファイル属性についてユーザに知らせるプライバシーポリシーが、ログインページ上に記載される。ログインセレモニー中、SSOマイクロサービス1112は顧客のIDPプリファレンスを尊重し、構成され次第、構成されたIDPに対する認証のためにIDPにリダイレクトする。
【0146】
認証または検証が成功すると、SSOマイクロサービス1112は、ブラウザ1102を、ユーザの認証トークンを含む、新たに作成/更新されたSSOホストHTTPクッキー(たとえば「HOSTURL」が示すホストのコンテキストで作成されたクッキー)を用いて、OAuth2マイクロサービス1110に戻るようにブラウザ1102をリダイレクトする。OAuth2マイクロサービス1110は、AZコード(たとえばOAuthコンセプト)をブラウザ1102に戻しクラウドゲート1104にリダイレクトする。ブラウザ1102はAZコードをクラウドゲート1104に送信し、クラウドゲート1104はREST POSTをOAuth2マイクロサービス1110に送信してアクセストークンおよびアイデンティティトークンを要求する。これらのトークンはどちらも、OAuthマイクロサービス1110にスコーピングされる(オーディエンストークンクレームによって示される)。クラウドゲート1104はこれらのトークンをOAuth2マイクロサービス1110から受ける。
【0147】
クラウドゲート1104は、アイデンティティトークンを用いて、認証されたユーザのアイデンティティをその内部アカウント表現にマッピングし、これは、このマッピングを自身のHTTPクッキーに保存してもよい。クラウドゲート1104は次に、ブラウザ1102をクライアント1106にリダイレクトする。すると、ブラウザ1102は、クライアント1106に到達し、対応するレスポンスをクライアント1106から受ける。この時点以降、ブラウザ1102は、アプリケーションのローカルクッキーが有効である限り、アプリケーション(すなわちクライアント1106)にシームレスにアクセスすることができる。ローカルクッキーが無効になると、認証プロセスは繰返される。
【0148】
クラウドゲート1104はさらに、要求に含められたアクセストークンを用いて、「userinfo」をOAuth2マイクロサービス1110からまたはSCIMマイクロサービスから取得する。このアクセストークンは、「プロファイル」スコープによって与えられる属性の「userinfo」リソースにアクセスするには十分である。これは、SCIMマイクロサービスを介して「/me」リソースにアクセスするのにも十分である。一実施形態において、デフォルトで、含まれているアクセストークンは、「プロファイル」スコープの下で与えられるユーザプロファイル属性に対してのみ十分である。他のプロファイル属性へのアクセスは、クラウドゲート1104によって発行されたAZグラントログイン要求において提示された追加の(任意の)スコープに基づいて認可される。
【0149】
ユーザがOAuth2が統合された別のアプリケーションにアクセスする場合、同じプ
ロセスが繰返される。
【0150】
一実施形態において、SSO統合アーキテクチャは、ブラウザベースのユーザログアウトに対し、同様のOpenID Connectユーザ認証フローを使用する。一実施形態において、既存のアプリケーションセッションを有するユーザは、クラウドゲート1104にアクセスしてログアウトを開始する。その代わりに、ユーザは、IDCS側でログアウトを開始している場合がある。クラウドゲート1104は、特定用途向けのユーザセッションを終了し、OAuth2マイクロサービス1110に対しOAuth2 OpenID プロバイダ(「OP」)ログアウト要求を開始する。OAuth2マイクロサービス1110は、ユーザのホストSSOクッキーを削除するSSOマイクロサービス1112にリダイレクトする。SSOマイクロサービス1112は、ユーザのSSOクッキーにおいて追跡された既知のログアウトエンドポイントに対し一組のリダイレクト(OAuth2 OPおよびSAML IDP)を開始する。
【0151】
一実施形態において、クラウドゲート1104がSAMLプロトコルを用いてユーザ認証(たとえばログイン)を要求する場合、同様のプロセスが、SAMLマイクロサービスとSSOマイクロサービス1112との間で開始される。
【0152】
クラウドキャッシュ
一実施形態は、クラウドキャッシュと呼ばれるサービス/機能を提供する。クラウドキャッシュは、IDCSに与えられて、LDAPベースのアプリケーション(たとえば電子メールサーバ、カレンダーサーバー、何らかのビジネスアプリケーションなど)との通信をサポートする。なぜなら、IDCSはLDAPに従って通信するのではないが、このようなアプリケーションはLDAPに基づいてのみ通信するように構成されているからである。典型的には、クラウドディレクトリは、REST APIを介してエクスポーズされ、LDAPプロトコルに従って通信するのではない。一般的に、企業ファイアウォオールを通してLDAP接続を管理するには、セットアップおよび管理が難しい特殊な構成が必要である。
【0153】
LDAPベースのアプリケーションをサポートするために、クラウドキャッシュは、LDAP通信を、クラウドシステムとの通信に適したプロトコルに変換する。一般的に、LDAPベースのアプリケーションは、LDAPを介してデータベースを使用する。代わりに、アプリケーションは、SQLのような異なるプロトコルを介してデータベースを使用するように構成されてもよい。しかしながら、LDAPはツリー構造のリソースの階層表現を提供するのに対し、SQLはデータをテーブルとフィールドとして表現する。したがって、LDAPは検索機能用であることがより望ましいであろう。一方、SQLはトランザクション機能用であることがより望ましいであろう。
【0154】
一実施形態において、IDCSが提供するサービスを、LDAPベースのアプリケーションで使用して、たとえば、アプリケーションのユーザを認証する(すなわちアイデンティティサービス)、またはアプリケーションのセキュリティポリシーを施行する(すなわちセキュリティサービス)ことができる。一実施形態において、IDCSとのインターフェイスは、ファイアウォールを通り、HTTP(たとえばREST)に基づく。典型的に、企業ファイアウォールは、内部LDAP通信へのアクセスを、当該通信がセキュア・ソケット・レイヤ(Secure Sockets Layer)(「SSL」)を実現する場合であっても許可しない。また、企業ファイアウォールは、TCPポートがファイアウォールを通してエクスポーズされることを許可しない。しかしながら、クラウドキャッシュは、LDAPとHTTPとの間の変換を行って、LDAPベースのアプリケーションが、IDCSが提供するサービスに到達できるようにし、ファイアウォールはHTTPに対してオープンである。
【0155】
一般的に、LDAPディレクトリは、マーケティングおよび開発などのビジネスライン(line of business)で使用されてもよく、ユーザ、グループ、業務などを規定する。一例において、マーケティングおよび開発ビジネスは、多様な顧客を対象としている場合があり、顧客ごとに、独自のアプリケーション、ユーザ、グループ、業務などを有し得る。LDAPキャッシュディレクトリを実行し得るビジネスラインの別の例は、無線サービスプロバイダである。この場合、無線サービスプロバイダのユーザが行う各コールは、LDAPディレクトリに対してユーザのデバイスを認証し、LDAPディレクトリ内の対応する情報の一部は課金システムと同期させてもよい。これらの例において、LDAPは、実行時に探索されるコンテンツを物理的に分離するための機能を提供する。
【0156】
一例において、無線サービスプロバイダは、短期マーケティングキャンペーンを支援するIDCSが提供するサービスを使用する一方で、自身のアイデンティティ管理サービスをそのコアビジネス(たとえば通常のコール)のために扱ってもよい。この場合、クラウドキャッシュは、LDAPを、クラウドに対して実行する一組のユーザおよび一組のグループを有する場合は「平坦にする」。一実施形態において、IDCSにおいて実現されるクラウドキャッシュの数はいくつであってもよい。
【0157】
分散型データグリッド
一実施形態において、IDCSにおけるキャッシュクラスタは、たとえばその開示を本明細書に引用により援用する米国特許公開第2016/0092540号に開示されている分散型データグリッドに基づいて実現される。分散型データグリッドは、分散環境またはクラスタ環境内で1つ以上のクラスタにおいてコンピュータサーバの集合体が、一緒に作業することにより情報を管理し計算などの関連動作を管理するシステムである。分散型データグリッドを用いることで、サーバ間で共有されるアプリケーションオブジェクトおよびデータを管理することができる。分散型データグリッドは、短いレスポンスタイム、高いスループット、予測可能なスケーラビリティ、継続的なアベイラビリティ、および情報の信頼性を提供する。具体的な例として、たとえばオラクル社のOracle Coherenceのデータグリッドのような分散型データグリッドは、情報をインメモリに格納することによりさらに高いパフォーマンスを達成し、複数のサーバにわたって同期が取られた情報のコピーを保持するにあたって冗長性を用いることにより、サーバ故障イベント時におけるシステムの回復力とデータの継続的なアベイラビリティとを保証する。
【0158】
一実施形態において、IDCSは、Coherenceなどの分散型データグリッドを実現して
、すべてのマイクロサービスがブロックされることなく共有キャッシュオブジェクトへのアクセスを要求できるようにする。Coherenceは、従来のリレーショナルデータベース管
理システムと比較して、より高い信頼性、スケーラビリティ、およびパフォーマンスが得られるように設計された、所有権を主張できるJavaベースのインメモリデータグリッドである。Coherenceは、ピアトゥピア(すなわち中央マネージャがない)インメモリ分
散型キャッシュを提供する。
【0159】
図12は、データを格納しデータアクセス権をクライアント1250に与え本発明の実施形態を実現する分散型データグリッド1200の一例を示す。「データグリッドクラスタ」または「分散型データグリッド」は、分散環境またはクラスタ環境内で1つ以上のクラスタ(たとえば1200a、1200b、1200c)において一緒に作業することにより情報を格納し関連する計算などの動作を管理する複数のコンピュータサーバ(たとえば1220a、1220b、1220c、および1220d)を含むシステムである。分散型データグリッド1200は、クラスタ1200aにおいて5つのデータノード1230a、1230b、1230c、1230d、および1230eとともに4つのサーバ1220a、1220b、1220c、1220dを含むものとして示されているが、分散
型データグリッド1200は、任意の数のクラスタおよび各クラスタにおける任意の数のサーバおよび/またはノードを含み得る。ある実施形態において、分散型データグリッド1200は本発明を実現する。
【0160】
図12に示されるように、分散型データグリッドは、一緒に作業する多数のサーバ(たとえば1220a、1220b、1220c、および1220d)にデータを分散させることによってデータ格納および管理機能を提供する。データグリッドクラスタの各サーバは、たとえば、1つから2つのプロセッサソケットと1プロセッサソケット当たり2つから4つのCPUコアとを有する「コモディティ(commodity)x86」サーバハードウェ
アプラットフォームのような、従来のコンピュータシステムであってもよい。各サーバ(たとえば1220a、1220b、1220c、および1220d)は、1つ以上のCPUと、ネットワークインターフェイスカード(Network Interface Card)(「NIC」)と、たとえば最小で4GBのRAM最大で64GB以上のRAMを含むメモリとで構成されている。サーバ1220aは、CPU1222aと、メモリ1224aと、NIC1226aとを有するものとして示されている(これらの要素は他のサーバ1220b、1220c、1220d上にもあるが図示されていない)。任意で、各サーバにフラッシュメモリ(たとえばSSD 1228a)を設けることで過剰な記憶容量を提供してもよい。提供時、SSD容量は、好ましくはRAMのサイズの10倍である。データグリッドクラスタ1200aのサーバ(たとえば1220a、1220b、1220c、1220d)は、高帯域幅のNIC(たとえばPCI-XまたはPCIe)を用いて高性能ネットワークスイッチ1220(たとえばギガビット以上のイーサネット(登録商標))に接続されている。
【0161】
クラスタ1200aは、故障中にデータが失われる可能性を避けるために最小で4つの物理サーバを含むことが好ましいが、典型的な設備はより多くのサーバを有する。各クラスタに存在するサーバが多いほど、フェイルオーバーおよびフェイルバックの効率は高く、サーバの故障がクラスタに与える影響は小さくなる。サーバ間の通信時間を最短にするために、各データグリッドクラスタは、サーバ間の単一ホップ通信を提供する単一のスイッチ1202に限定されることが理想的である。このように、クラスタは、スイッチ1202上のポートの数によって制限される。したがって、典型的なクラスタは4~96の物理サーバを含む。
【0162】
分散型データグリッド1200のほとんどの広域ネットワーク(Wide Area Network)
(「WAN」)構成において、WAN内の各データセンターは、独立しているが相互に接続されているデータグリッドクラスタ(たとえば1200a、1200b、および1200c)を有する。WANは、たとえば
図12に示されるクラスタよりも多くのクラスタを含み得る。加えて、相互接続されているが独立しているクラスタ(たとえば1200a、1200b、1200c)を用いることにより、および/または相互接続されているが独立しているクラスタを、互いに離れているデータセンター内に配置することにより、分散型データグリッドは、自然災害、火災、洪水、長期停電などによって生じる、1つのクラスタのすべてのサーバの同時損失を防止すべく、クライアント1250に対するデータおよびサービスを保証することができる。
【0163】
1つ以上のノード(たとえば1230a、1230b、1230c、1230dおよび1230e)は、クラスタ1200aの各サーバ(たとえば1220a、1220b、1220c、1220d)上で動作する。分散型データグリッドにおいて、ノードは、たとえばソフトウェアアプリケーション、仮想マシンなどであってもよく、サーバは、ノードがその上で動作するオペレーティングシステム、ハイパーバイザなど(図示せず)を含み得る。Oracle Coherenceのデータグリッドでは、各ノードはJava仮想マシン(Java virtual machine)(「JVM」)である。CPUの処理能力およびサーバ上で利用できる
メモリに応じて、各サーバ上に多数のJVM/ノードを設けてもよい。JVM/ノードは、分散型データグリッドの要求に応じて、追加、起動、停止、および削除されてもよい。Oracle Coherenceを実行するJVMは、起動時に自動的に参加しクラスタ化する。クラスタに加わるJVM/ノードは、クラスタメンバまたはクラスタノードと呼ばれる。
【0164】
各クライアントまたはサーバは、情報伝達のためにバスまたはその他の通信機構を含み、情報処理のためにバスに結合されたプロセッサを含む。プロセッサは、どのタイプの汎用または専用プロセッサであってもよい。各クライアントまたはサーバはさらに、プロセッサによって実行される命令および情報を格納するためのメモリを含み得る。メモリは、ランダムアクセスメモリ(「RAM」)、読出専用メモリ(「ROM」)、磁気もしくは光ディスクなどのスタティックストレージ、またはその他任意の種類のコンピュータ読取可能媒体を組み合わせたもので構成することができる。各クライアントまたはサーバはさらに、ネットワークへのアクセス提供のためにネットワークインターフェイスカードなどの通信デバイスを含み得る。したがって、ユーザは、各クライアントまたはサーバに対して、直接、またはネットワークを通して遠隔から、またはその他任意の手段で、インターフェイスすることができる。
【0165】
コンピュータ読取可能な媒体は、プロセッサからアクセスすることが可能な利用可能な媒体であればどのようなものでもよく、揮発性媒体および不揮発性媒体、リムーバブルおよび非リムーバブル媒体、ならびに通信媒体を含む。通信媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュール、または、たとえば搬送波もしくはその他の搬送機構などの変調されたデータ信号内のその他のデータを含んでいてもよく、任意の情報伝達媒体を含む。
【0166】
プロセッサはさらに、液晶ディスプレイ(「LCD」)などのディスプレイにバスを介して結合されてもよい。キーボード、およびコンピュータマウスなどのカーソル制御デバイスが、さらにバスに結合されることにより、ユーザが各クライアントまたはサーバに対してインターフェイスできるようにしてもよい。
【0167】
一実施形態において、メモリは、プロセッサが実行すると機能を提供するソフトウェアモジュールを格納する。モジュールは、各クライアントまたはサーバにオペレーティングシステム機能を提供するオペレーティングシステムを含む。モジュールはさらに、クラウドアイデンティティ管理機能を提供するためのクラウドアイデンティティ管理モジュールと、本明細書に開示されているその他すべての機能とを含み得る。
【0168】
クライアントは、クラウドサービスなどのウェブサービスにアクセスし得る。一実施形態において、ウェブサービスは、オラクル社のWebLogicサーバ上で実現されてもよい。他の実施形態ではウェブサービスの他の実装形態を使用してもよい。ウェブサービスは、クラウドデータを格納しているデータベースにアクセスする。
【0169】
レプリケーション競合の検出および解決
一般的に、オラクルパブリッククラウド(Oracle Public Cloud)(「OPC」)のよ
うなパブリッククラウドは、仮想マシン(virtual machine)(「VM」)、アプリケー
ション、またはストレージ等のリソースを一般大衆がインターネットを通じて利用できるようにすることにより、世界中の顧客にIaaS、PaaSおよびSaaSサービスを提供しこれらをサポートすることを意図している。パブリッククラウドは、異なる地理的地域にそれぞれが存在する複数のデータセンターを有することにより、各データセンターの最も近くに位置する顧客に対してサービスを最小の遅延で提供するものとして知られている。実施形態において、パブリッククラウドサービスは、「地域」と呼ぶ物理的境界によって分離されている顧客をカバーする異なるデータセンターにデプロイされてもよい。
【0170】
図13は、一実施形態に係る、各々が「地域」を形成するデプロイされた複数のデータセンター(「DC」で示される)を有するパブリッククラウド1300を示す。たとえば、データセンター1301はカナダの一都市に位置し、データセンター1302はドイツの一都市に位置し、データセンター1303はオーストラリアの一都市に位置する。実施形態において、1つ以上のデータセンターが、1つ以上の「コントロールプレーン」デプロイメント(「CP」で示される)が管理する1つの「アイランド」に統合される。アイランドは、1つの「クラウド」に統合された地域の集まりであり、1つのコントロールプレーンによって管理される。たとえば、コントロールプレーン1310はデータセンター1301、1304、1305、1306および1307を管理し、コントロールプレーン1311はデータセンター1308および1309を管理する。スケーラビリティ要求とそれぞれの地域における顧客負荷とに基づいて、典型的なコントロールプレーンデプロイメントは1つ以上の地域に対応することができる。一実施形態において、あるコントロールプレーンコンポーネントが2つ以上の地域に対応するという状況において、このコンポーネントは1つのアイデンティティですべての地域とやり取りする権限を必要とする。
【0171】
顧客アカウントは、各種パブリッククラウドサービスを購入/取得する各ユーザ/顧客ごとに、クラウド1300によって管理される。顧客が利用できる一種のサービスとして、上で開示したマルチテナントアイデンティティ管理サービス、またはIDCSを挙げることができ、このサービスを、コントロールプレーンコンポーネントとして実現しすべての地域(すなわちすべてのデータセンター)において別々にデプロイすることにより、その地域のリソースを保護することができる。上述のように、一実施形態において、特定の地域でデプロイされていないコントロールプレーンは、これがデプロイされていない地域のコンポーネントまたはテナントとやり取りするためには固有の権限を必要とする。たとえば、ある地域に指定されたコントロールプレーンコンポーネントが、別の地域に位置する(すなわち異なるIDCSデプロイメントでホストされている)IDCS顧客テナンシーにアクセスすることを所望する場合がある。そのためには、一方の地域のIDCSに割り当てられたコンポーネント/顧客が他方の地域のIDCSに対してIDCS APIを呼び出す(たとえば
図6のIDCSマイクロサービス614のうちの特定のマイクロサービスにアクセスする)ことができるように、これらのデプロイメント間で信頼が確立されている必要がある。周知の解決策では、ある地域に指定されこの地域に割り当てられたユーザは、この地域のリソースのみにアクセスでき、その他の地域のリソースにはアクセスできず、この地域のみから認証を受けることができ、その他の地域から認証を受けることはできない。
【0172】
これに対し、実施形態の場合、ある地域の「グローバルアクセストークン」または「トークン」と呼ばれる新規のアクセストークンを有するユーザは、このトークンを用いて別の地域(すなわち遠隔地域)のリソースにアクセスすることができる。実施形態は、ユーザ/顧客がどこにいようとリソースおよび認証機能を提供すべくさまざまなIDCS地域を管理するために、如何にして地域間で信頼を確立するかに向けらている。一般的に、地域間信頼機能を可能にするためにはグローバルアクセストークンをユーザに与える必要がある。そうすると、このトークンは宛先セキュリティセンターによって消費される。
【0173】
たとえば、「クライアント」(すなわちユーザまたはサービスにアクセスするための任意のアプリケーションもしくはプログラム的アプローチ)が、シカゴのデータセンター1307(シカゴはこのデータセンターが最初に構築された場所)のみに存在する場合がある。各クライアントは、自身のアイデンティティを有しており、それを検証してトークンを取得する必要がある。クライアントが、たとえばシドニーに位置するデータセンター1303等の、クラウド1300の他のデータセンター(すなわち他のデータセンターのIDCSデプロイメント)のうちのいずれにも存在していないまたはフットプリントを有し
ていないと仮定する。そのため、クライアントは、シドニーの近くに物理的に位置していても、シドニーには存在していないので、シドニーのデータセンターから認証を受けることはできない。この問題を解決するために、実施形態は、グローバルアクセストークンを生成することにより、必要な地域間の信頼を提供する。よって、クライアントは、シカゴでの認証後に、シドニーにおけるグローバルアクセストークンの回復を要求することになる。シカゴDC1307は、トークンを生成しグローバル秘密鍵を用いてトークンに署名する。グローバル秘密鍵はすべてのDCで入手できる。実施形態において、グローバルアクセストークンを使用してIDCS REST APIのみにアクセスし、そのため、このトークンを用いて複数地域にまたがる非IDCS REST APIにアクセスするとエラーが生じるであろう。
【0174】
シドニーDC1303のIDCSデプロイメントは、トークンが提示されると、このトークンを消費し検証する。そうすると、クライアントは、シドニーでは指定されていないものの、シドニーのリソースにアクセスできる。実施形態の場合、クライアントは、1つのIDCSデプロイメントで指定されるだけでよいが、それでもなお他のデプロイメントのリソースにアクセスできる。
【0175】
しかしながら、クライアントが別の地域のリソースにアクセスすること以上を所望する場合がある。たとえば、周知のシステムにおいて、クライアントがアイデンティティクラウドアカウントまたはIDCSデプロイメントをある地域(たとえばシカゴまたは「マスター」データセンター)で作成することを所望する場合、顧客はそのアカウントを作成する。しかしながら、同じ顧客がそのアイデンティティを別の地域(たとえばアムステルダム)で用いてその地域の作業負荷を使用することを所望する場合、この顧客は先ずアムステルダムで新たなアイデンティティクラウドアカウントを作成しなければならないが、そうすると、同じ顧客に対して別々の2つのアイデンティティアカウントが作成されることになる。そうでなければ、顧客は第1の地域とは通信を続けることができるものの、顧客がアムステルダムにいてシカゴの作業負荷の使用を強いられた場合は大きな遅延が生じることになる。
【0176】
これに対し、本発明の実施形態は、シカゴ(すなわち「マスター」データセンター)における顧客のアイデンティティクラウドアカウントを、アムステルダム(すなわち「レプリカ」データセンター)またはその他任意の地域に自動的にレプリケートする。一実施形態において、顧客/テナントは、シカゴの既存のアカウントをアムステルダムから使用するという選択肢が与えられ、その場合、情報がアムステルダムにブートストラップされ、その後は変更が絶えず取り込まれてレプリケートされる。
【0177】
しかしながら、複数の地域にまたがるレプリケーションまたはブートストラップはいくつかの問題を引き起こす。たとえば、変更ログはマスターで作成されてレプリカに送信される。
図14は、本発明の実施形態に係る、マスターIDCSデプロイメント1401(「IDCS1」)とレプリカIDCSデプロイメント1402(「IDCS2」)との間におけるレプリケーション変更イベント/ログの処理フローを示す。一実施形態において、
図14(ならびに以下の
図15および
図17)のフロー図の機能は、メモリまたはその他のコンピュータ読取可能なもしくは有形の媒体に格納されたソフトウェアによって実現され、プロセッサによって実行される。その他の実施形態において、この機能は、ハードウェアによって(たとえば特定用途向け集積回路(「ASIC])、プログラマブルゲートアレイ(「PGA」)、フィールドプログラマブルゲートアレイ(「FPGA」)などの使用を通して)、または、ハードウェアとソフトウェアの任意の組み合わせによって実現されてもよい。
【0178】
マスター1401は、管理サービス1405(すなわち
図11の管理SCIMマイクロ
サービス1116のような管理SCIMマイクロサービス)と、レプリケーションサービス1408(実施形態ではマイクロサービスとしても実現される)とを含む。同様に、レプリカ1402も、管理SCIMマイクロサービス(図示せず)と、レプリケーションサービス1407とを含む。データストア1406および1412は、リソースのうちのいくつかとその他の関連データとを格納する。一実施形態において、各リソースはIDCS
REST APIリソースである。
【0179】
実施形態において、各IDCSデプロイメント1401、1402はそれぞれ1つ以上のシャードキュー(sharded queue)1430、1431を含む。シャードキューは、シ
ステムパーティショニングによって複数の独立した物理キューにトランスペアレントに分割される1つの論理キューである。一実施形態において、シャードキューはJavaメッセージングサービス(Java Messaging Service)(「JMS」)シャードキューである。
【0180】
1420で、レプリケート可能なリソースのうちの1つに対するSCIM書込要求が、マスター1401の管理サービス1405に届く。
【0181】
1421で、管理サービス1405は、この要求を処理しデータストア1406にリソースを書き込む。一実施形態において、リソースを「書き込む」ことは、SQLステートメントを使用しJavaデータベース接続(Java Database Connection)(「JDBC」)を介してリソースをデータベースに「パーシストする(persist)」ことを含む。
【0182】
1422で、管理サービス1405は、(データストア1406にリソースを書き込んだ結果として)変更イベントを生成し、複数のシャードキュー1430のうちの1つに書き込む。一実施形態において、テナントに関する変更イベントは常に、計算されたハッシュに基づいて同じシャードにエンキュー(enqueue)される。
【0183】
1423で、各シャードキュー1430におけるレプリケーション変更イベントが、レプリケーションサービス1408の専用トランスポートハンドラ1435により、キュー1430にエンキューされたときと同じ順序でデキュー(dequeue)される。
【0184】
1451で、トランスポートハンドラ1435は、バルクメッセージの形態の変更イベントを、REST APIコールを介してレプリカ1402のレプリケーションサービス1407にプッシュする。一実施形態において、メッセージは、RFC7644に準拠する標準SCIM「バルク動作」に記載されているヘッダが追加された変更イベントを含むJSONフォーマットである。
【0185】
1452で、レプリケーションサービス1407は、ローカルシャードキュー1431にバルクメッセージを同時に書き込む。一実施形態において、1452で与えられる、マスター1401からトランスポートされた変更イベントは常に、1402の対応する同じシャードにエンキューされる。たとえば、1422にで変更イベントがシャードQ1に挿入された場合、同じ変更ログがレプリカ(1402)に入り1452でシャードQ1に入る。
【0186】
1453で、専用適用ハンドラ1430が、シャードキュー1431からメッセージをデキューする。
【0187】
1454で、適用ハンドラ1430は、メッセージをデキューしたときと同じ順序でメッセージをローカルデータストア1412に書き込む。
【0188】
一般的に、
図14のレプリケーション機能により、すなわち、テナントからのメッセー
ジをマスター地域の同じシャードキューにエンキューし、トランスポートハンドラがデキューされたメッセージを同じ順序で処理し、テナントに関するトランスポートされたメッセージをレプリカ地域の同じシャードにエンキューし、適用ハンドラがデキューされたメッセージを同じ順序で処理することにより、マスターにおけるすべての変更イベントがデータの競合なしで順次処理されることを保証する。
【0189】
しかしながら、1つのマスターで変更イベントがマスター地域(マスター1401)からレプリカ地域(レプリカ1402)へと順次処理されるにもかかわらず、データ競合が発生し得るシナリオはなおもいくつか存在する。たとえば、データ競合が発生し得る理由として、(1)テナントデータブートストラップ中、エクスポートされたブートストラップデータと進行中の変更イベントとがオーバーラップする場合があり、テナントブートストラップ後にこれらのオーバーラップしている変更イベントを適用するとデータ競合が生じる可能性があること、または(2)先ずレプリカ地域に書き込みその後レプリカ地域におけるテナントサービスプロビジョニングのサービス水準合意(service-level agreements)(「SLA」)の向上のためにマスターに逆同期(reverse sync)するとデータ競合が生じる可能性があることが、挙げられる。しかしながら、実施形態において、これらのシナリオの競合回避はまた、レプリカにおいて、マスターにおける同じシーケンスに従うので、回避される。
【0190】
図15は、本発明の実施形態に係る、マスターIDCSデプロイメント1401とレプリカIDCSデプロイメント1402との間における競合解決の処理フローを示す。
【0191】
1501で、専用適用ハンドラ1470が、変更イベントを各シャードキュー1431からデキューする。
【0192】
1502で、適用ハンドラ1470は、変更をローカルデータストア1412において適用しようと試み、次にデータ競合があるか否かを判断する。以下の表1は、さまざまな種類の動作(すなわち、すべてのIDCSリソースに対する、作成(Create)、読出(Read)、更新(Update)、削除(Delete)、およびクエリ(Query)(「CRUDQ」)動
作についてのスキーマベースのREST APIの結果としての動作)と、起こり得るデータ競合の種類を示している。
【0193】
表1の競合解決ロジックの1つは、データ競合に応じて実現される。表1の競合解決ロジック1b、2aまたは4aが実現される場合、1503でリソースがマスター1401からフェッチされる。
【0194】
1504で、適用ハンドラ1470はレプリカ1402においてリソースをリコンサイルする。
【0195】
【0196】
本発明の実施形態における機能は、(データベースレベル、キャッシュレベルなどではなく)アプリケーションレベル/レイヤで実行される。具体的には、機能は、データベースではなく、1つ以上のマイクロサービス(たとえば管理サービス1405および/またはレプリケーションサービス1408、1407)によって実行される。そのため、実施形態は他の解決策よりも遥かに高速で実行し、実施形態はオンデマンドで自動的にリコンサイルすることができる。実施形態は、シングルマスターレプリケーションフローにおけるデータ競合を回避する。なぜなら、テナントについてのすべての変更イベントは、トランスポートハンドラおよび適用ハンドラ双方によって逐次的に処理されるからである。
【0197】
図16は、本発明の実施形態に係る、マスターIDCSデプロイメント1401およびレプリカIDCSデプロイメント1402の詳細をさらに示すブロック図である。マスター1401で、テナントDB1604(すなわちデータストア)に接続された管理サービ
ス1602、1603が、REST API要求1601を受ける。
【0198】
マスター1401およびレプリカ1402は各々、ハッシュに基づいてメッセージ(一実施形態ではオラクルのアドバンスト・キューイング(Advanced Queuing)(「AQ」)メッセージ、またはアパッチ・カフカ(Apache Kafka)メッセージ)をパーティションに対して発行するシャードキュー1610、1620を含む。マスター1401において、メッセージングトランスポートハンドラ1622は、1シャード当たり1つのスレッドトランスポートを与えることによってシーケンスを維持する。各々が1度につき1つのバッファを保持するワーカースレッドが、レプリケーションサービス1625に与えられる。レプリケーションサービス1625は、1度につき1つのバッファを受け適用キュー(すなわちシャードキュー1620)に対して発行することによりシーケンスを維持するエンドポイントとして機能する。メッセージング適用ハンドラ1630は、1シャード当たり1つのスレッド適用を与えることによってシーケンスを維持する。レプリケーションサービス1625も、テナントDB1640(すなわちデータストア)に変更を適用するためのエンドポイントとして機能する。実施形態において、IDCSデプロイメントの各レプリケーションサービスは、「マスター」および/または「レプリカ」として働く機能を有する。
【0199】
図16は、
図14をより詳細にした図であり、パーティション、キュー、およびワーカースレッドを含む。
図16は、キューイングシステムを介した変更ログの実際のフローを示す。「マスター」側では、2つの管理サービスとしての1602および1603が並列に動作する。1610、1622、1620および1630は、一実施形態ではオラクル社の「アドバンスト・キューイング」(「AQ」)として実現される「pub-sub」(出版-購読(publish-subscribe))システムを形成し、
図14の1430、1435
、1407および1452の内部をさらに詳細に示す。たとえば、1602または1603が1610に対してメッセージを発行すると直ちにテナントIDに対応する変更ログについてハッシュが計算される。このことは、特定のテナントに対応する変更ログが常に同一の「パーティション」にハッシュされることを意味する。受信側(すなわちレプリカ)では、同じロジックが適用され、テナントに対応する変更ログは常にレプリカ上の同じパーティションを介して進む(1620)。また、パーティションの数は固定されているので、計算されたハッシュは、「modテナントID」を用いてパーティションのうちの1つに割り当てられることに注意されたい(1610)。
【0200】
図17は、本発明の実施形態に係る、レプリケーションに応じた競合解決のフロー図である。先に説明したように、競合解決は、シングルマスターレプリケーションモデル(すなわち
図14に関連して説明したモデル)を使用する場合であってもデータに関連する変更アプリケーションの障害を解決するために必要である。なぜなら、レプリカIDCSインスタンスに対する変更は、マルチスレッドレプリケーション処理フローロジックが原因で、または過去失敗した変更を再度適用するときに、順不同で適用される可能性があるからである。実施形態は、更新タイムスタンプを用いることによってデータ競合を解決し、この場合、各変更エントリの動作タイムスタンプを、既存のターゲットエントリの更新タイムスタンプと比較することにより、変更を適用すべきかまたはスキップすべきかを判断する。
【0201】
既存のターゲットエントリを用いて更新タイムスタンプに基づく競合解決をサポートすることに加えて、実施形態はまた、削除されたエントリに対するツームストン(tombstone)を管理する。これらのツームストンエントリは、既に削除されたターゲットエントリに対して順不同の修正変更を適用するときの競合を解決するために使用される。
【0202】
計画された競合解決ロジックに基づいて、実施形態は、変更をスキップする/適用する
か否か、または、変更リトライのために変更をメッセージキューに戻すか否かを、判断する。競合解決ロジックに基づいてスキップされたまたは適用された変更はパージすることができる。
【0203】
変更アプリケーションは、以下の理由により失敗する可能性がある。
1.ネットワーク、ターゲットDBもしくはIDCSレプリケートサービスがダウンするというようなシステム/リソースの問題またはその過渡的安定性の問題、
2.レプリケートサービス処理が順不同で変化すること、または、
3.前の変更を適用するときの管理エラーまたはIDCSにおけるソフトウェアバグを原因とするレプリカIDCSインスタンスに関するデータ問題。
【0204】
ケース(1)および(2)は、競合解決ロジックに加え、設定されたリトライ試み数当たりの適切な変更リトライによって解決されるであろう。ケース(3)は、恒久的な変更アプリケーション障害を生じさせる可能性がある。したがって、一実施形態において、失敗した変更は、人間による介入のために例外キューに移動させる必要がある。
【0205】
IDCSメッセージングサービスは、レプリケーション処理フローにリトライ変更を適用するために強化された指数関数的遅延機能とともに、ビルトインメッセージリトライロジックを有する。これはまた、(1構成当たりの)適用されなかった回数があまりにも多い変更メッセージを保持するために使用される例外キューを有する。
【0206】
上記エラーハンドリング方法の結果、実施形態は、以下のレプリケーション競合回避設計の保証を得る。
・メッセージは失われない。
・メッセージは順不同で到来しない。
・ネットワーク/DBエラー/タイムアウトのため、二重メッセージの可能性がある。
・リコンサイル/ブートストラップの結果、これも二重メッセージとして機能する失効メッセージが生じ得る。
【0207】
図17の機能について、一実施形態では以下の必要条件が存在する。
・DB生成システム時間を、リソースが最後に修正された時間として設定。これは、全リソースリコンシリエーションによって生じた二重変更ログおよび失効変更ログをドロップするために、データ比較のためのタイムスタンプ/クロックの1つのソースを維持するのに必要である。
・マスターIDCSインスタンスにおいて、リソースが最後に修正された時間をDBから読み戻して変更ログ時間として捕捉。
・レプリカIDCSインスタンスにおいて、リソースが最後にレプリケートされた時間は、変更ログおよび全リソースのリコンシリエーションを適用すると更新される。マスターからの変更ログ時間を、最後にレプリケートされた時間として用いることにより、1つのクロックソースを維持する。
【0208】
一般的なエラーは以下を含む。
・1702において、テナントが存在しない(または)DB関連エラー(または)接続エラー(または)タイムアウト。適用ハンドラは成功するまでリトライする。
・1704において、サービスアイソレーション/リスタートは、ヘルスチェックフレームワークの一部として処理される。
【0209】
動作およびエラーハンドリング処理は以下を含む。
●作成(1706)
〇リソースが既に存在(1708)
●ペイロードの最後に修正された時間をレプリカDBの最後にレプリケートされた時間と比較
●タイムスタンプが同一であれば、変更ログをドロップ
●そうでなければ全リソースリコンシリエーションを実行
●置換/更新(1710)
〇リソースが存在しない(1712)
●全リソースリコンシリエーションを実行(1714)
〇リソースデータ不整合/破損によるエラー(1712)
●全リソースリコンシリエーションを実行(1714)
〇二重更新属性レベル(結果としてMVAの場合二重エントリになる可能性)
●ペイロードの最後に修正された時間をレプリカDBの最後にレプリケートされた時間と比較
●タイムスタンプが同一または小さい場合、変更ログをドロップ
●そうでなければ変更ログを適用
〇CMVAを追加/置換/削除-これは、メッセージが失われた場合に限り可能。生じてはならないこと。
●削除(1716)
〇リソースは存在しない(1718)
●メッセージを複製:変更ログをドロップ
●lostを作成:生じてはならないこと。
●リコンサイル(1714)
〇マスターIDCSインスタンスから全リソースを取得しレプリカに適用。レプリカの最後にレプリケートされた時間をマスターからのリソースが最後に修正された時間と比較し、既にキューにある失効変更ログをドロップ。
【0210】
開示されているように、実施形態は、マルチテナントクラウドシステムを用いて、異なる地理的領域の複数のアイデンティティ管理システムデプロイメント間のデータのレプリケーションを提供する。したがって、ある地理的領域のあるデプロイメントのテナントは、第2の地理的領域の同じリソースにアクセスできる。実施形態は、変更イベントの逐次処理を用いてこのデータをレプリケートする。実施形態はさらに、データレプリケーション中に発生し得るいかなるデータ競合についても解決を提供する。
【0211】
本明細書ではいくつかの実施形態が具体的に例示および/または記載されている。しかしながら、開示されている実施形態の修正および変形は、本発明の精神および意図する範囲から逸脱することなく、上記教示によってカバーされ以下の請求項の範囲に含まれることが、理解されるであろう。
【手続補正書】
【提出日】2023-09-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
マルチテナントクラウドシステムを動作させる方法であって、前記方法は、
第1のデータセンターで、第1のテナントIDに対応する第1のクライアントを認証して前記第1のクライアントに対応するリソースを格納するステップを含み、前記第1のデータセンターは、前記第1のクライアントを認証して前記リソースをレプリケートするように構成された第2のデータセンターと通信し、
前記第1のデータセンターが、前記リソースの変更に対応する、前記第1のクライアントについてのアプリケーションプログラミングインターフェイス(API)要求を受信して、前記API要求に応答して変更ログおよび対応する変更イベントメッセージを生成するステップと、
前記変更ログの前記第1のテナントIDに対応する第1のハッシュを計算して、前記第1のデータセンターにおける第1のキューの第1のパーティションを求めるステップと、
前記第1のデータセンターが、APIコールを介して前記変更イベントメッセージを前記第2のデータセンターにプッシュするステップとを含み、
前記変更イベントメッセージを受信したことに応じて、前記第2のデータセンターは、前記変更ログの前記第1のテナントIDに対応する第2のハッシュを計算して、前記第2のデータセンターにおける第2のキューの第2のパーティションを求めるように構成されており、前記第1のキューの前記第1のパーティションは前記第2のキューの前記第2のパーティションに等しい、方法。
【請求項2】
前記第1のキューは第1のシャードキューである、請求項1に記載の方法。
【請求項3】
前記第2のデータセンターは、前記第2のデータセンターにおける適用ハンドラとともに構成され、前記適用ハンドラは、レプリケートされたリソースが既に存在する場合、作成動作に応答して、前記変更イベントメッセージを無視することまたは前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項1または2に記載の方法。
【請求項4】
前記適用ハンドラは、前記レプリケートされたリソースが存在しない場合、更新動作に応答して、前記第1のデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項3に記載の方法。
【請求項5】
前記第1のデータセンターは、各々が前記第1のキューにおける対応するパーティションを有する複数のテナントを含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記適用ハンドラは、前記変更ログの動作タイムスタンプをターゲットエントリの更新タイムスタンプと比較することによって競合を解決する、請求項3に記載の方法。
【請求項7】
前記適用ハンドラは、既に削除されたターゲットエントリに対する順不同の修正変更を適用するときに、削除されたエントリのツームストンを維持することによって競合を解決する、請求項3に記載の方法。
【請求項8】
請求項1~7のいずれか1項に記載の方法を複数のプロセッサのうちの少なくとも1つのプロセッサに実行させる、プログラム。
【請求項9】
マルチテナントクラウドシステムデータセンターであって、
第1のテナントIDに対応する第1のクライアントを認証して前記第1のクライアントに対応するリソースを格納するようにされた管理サービスを備え、前記マルチテナントクラウドシステムデータセンターは、前記第1のクライアントを認証し前記リソースをレプリケートするように構成された第2のデータセンターと通信し、
前記管理サービスに結合されたデータストアを備え、
前記管理サービスは、前記リソースの変更に対応する、前記第1のクライアントについてのアプリケーションプログラミングインターフェイス(API)要求を受信するように構成されており、前記API要求に応答して変更ログおよび対応する変更イベントメッセージを生成して前記変更ログの前記第1のテナントIDに対応する第1のハッシュを計算することにより、前記マルチテナントクラウドシステムデータセンターにおける第1のキューの第1のパーティションを求め、
APIコールを介して前記変更イベントメッセージを前記第2のデータセンターにプッシュするように適合されたレプリケーションサービスを備え、
前記変更イベントメッセージを受けたことに応答して、前記第2のデータセンターは、前記変更ログの前記第1のテナントIDに対応する第2のハッシュを計算することにより、前記第2のデータセンターにおける第2のキューの第2のパーティションを求めるように構成されており、前記第1のキューの前記第1のパーティションは前記第2のキューの前記第2のパーティションに等しい、マルチテナントクラウドシステムデータセンター。
【請求項10】
前記第1のキューは第1のシャードキューである、請求項9に記載のマルチテナントクラウドシステムデータセンター。
【請求項11】
前記第2のデータセンターは、前記第2のデータセンターにおける適用ハンドラとともに構成され、前記適用ハンドラは、レプリケートされたリソースが既に存在する場合、作成動作に応答して、前記変更イベントメッセージを無視することまたは前記マルチテナントクラウドシステムデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項10に記載のマルチテナントクラウドシステムデータセンター。
【請求項12】
前記適用ハンドラは、前記レプリケートされたリソースが存在しない場合、更新動作に応答して、前記マルチテナントクラウドシステムデータセンターから前記リソースをフェッチすることにより、前記第2のデータセンターにおける競合を解決する、請求項11に記載のマルチテナントクラウドシステムデータセンター。
【請求項13】
前記適用ハンドラは、前記変更ログの動作タイムスタンプをターゲットエントリの更新タイムスタンプと比較することによって競合を解決する、請求項11に記載のマルチテナントクラウドシステムデータセンター。
【請求項14】
前記適用ハンドラは、既に削除されたターゲットエントリに対する順不同の修正変更を適用するときに、削除されたエントリのツームストンを維持することによって競合を解決する、請求項11に記載のマルチテナントクラウドシステムデータセンター。
【外国語明細書】