IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

<>
  • 特許-ユニバーサルガバナンス 図1
  • 特許-ユニバーサルガバナンス 図2
  • 特許-ユニバーサルガバナンス 図3
  • 特許-ユニバーサルガバナンス 図4
  • 特許-ユニバーサルガバナンス 図5
  • 特許-ユニバーサルガバナンス 図6
  • 特許-ユニバーサルガバナンス 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-03
(45)【発行日】2024-04-11
(54)【発明の名称】ユニバーサルガバナンス
(51)【国際特許分類】
   G06Q 10/00 20230101AFI20240404BHJP
   G06F 16/25 20190101ALI20240404BHJP
【FI】
G06Q10/00
G06F16/25
【請求項の数】 8
(21)【出願番号】P 2021521178
(86)(22)【出願日】2019-10-18
(65)【公表番号】
(43)【公表日】2022-01-14
(86)【国際出願番号】 US2019056916
(87)【国際公開番号】W WO2020081924
(87)【国際公開日】2020-04-23
【審査請求日】2022-08-18
(31)【優先権主張番号】62/747,896
(32)【優先日】2018-10-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ペッディボトラ,スダカール・スリヤナラヤナ
(72)【発明者】
【氏名】ベンカタクリシュナン,シュリダール
(72)【発明者】
【氏名】ベレザ,パブロ
(72)【発明者】
【氏名】デュガン,マイケル・パトリック
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開2015-072688(JP,A)
【文献】米国特許出願公開第2011/0010379(US,A1)
【文献】特表2014-531076(JP,A)
【文献】特表2016-530646(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
データ処理システムにおいて、ターゲットアプリケーションの一部であるデータのクエリまたは前記データに対するCRUDオペレーションのリクエストを受信することと、
前記データ処理システムが、前記ターゲットアプリケーションと関連付けられたオブジェクトのスキーマを取得することとを備え、前記スキーマは、前記オブジェクト間の関係をモデル化し、前記オブジェクトは、前記ターゲットアプリケーションの前記データの定義を表し、さらに、
前記データ処理システムが、前記スキーマに基づいて、前記クエリまたはCRUDオペレーションを前記オブジェクトに対して実行することと、
前記データ処理システムが、前記オブジェクトに対する前記クエリまたはCRUDオペレーションの実行を説明するために、前記スキーマを更新することと、
前記データ処理システムが、更新された前記スキーマに基づいて、前記クエリまたはCRUDオペレーションを前記データに対して実行することと、
前記データ処理システムが、前記データに対する前記クエリまたはCRUDオペレーションの結果を報告することとを備える、方法。
【請求項2】
前記クエリまたはCRUDオペレーションを前記データに対して実行することは、前記クエリまたはCRUDオペレーションを、前記ターゲットアプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む、請求項1に記載の方法。
【請求項3】
前記呼出しは、前記更新されたスキーマに従って、前記ターゲットアプリケーションの前記データに対して前記クエリまたは前記CRUDオペレーションを実行するように構成される、請求項2に記載の方法。
【請求項4】
前記クエリまたはCRUDオペレーションの結果を報告することは、前記オブジェクトのライフサイクルにわたって、前記オブジェクトと関連付けられた前記データに対して行われるすべてのオブジェクトミューテーションを報告することを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記スキーマは、前記ターゲットアプリケーションのエンリッチバージョンであり、前記ターゲットアプリケーションの前記エンリッチバージョンは、前記ターゲットアプリケーション内の前記データの定義を表す前記オブジェクトを超える前記データ処理システム内の追加のアーティファクトまたはオブジェクトを含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記オブジェクトのスキーマは、前記データ処理システム内の追加のオブジェクトと関連付けられ、前記追加のオブジェクトは、企業内で追跡される情報およびタスクを表す、請求項1~のいずれか1項に記載の方法。
【請求項7】
請求項1~のいずれか1項に記載の方法を1つ以上のプロセッサに実行させるためのプログラム。
【請求項8】
システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに連結されたメモリとを備え、前記メモリは、前記1つ以上のプロセッサによって実行可能な複数の命令を格納し、前記複数の命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1~のいずれか1項に記載の方法を実施させる命令を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本出願は、2018年10月19日に出願された米国仮特許出願第62/747,896号の優先権を主張し、その内容全体はここに引用により援用される。
【0002】
技術分野
本開示は、概してアイデンティティ管理に関し、特に、多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行うための技術に関する。
【背景技術】
【0003】
背景
最近の企業は、雇用者、契約業者、取引先および最終消費者によって用いられる、オンプレミスとクラウドとの両方の多数のアプリケーションを有する。各ユーザは、これらのアプリケーションで行うことができることを規定する、これらのアプリケーション内の特定の特権を有する。これらのシステムのすべてのユーザが有するすべての特権を併せた物が、リスクマネジメントおよびコンプライアンスについての表面領域の全体を形成する。過度な特権および特権の有害な組合わせは、コンプライアンス違反につながることがある。
【0004】
アイデンティティ管理またはガバナンスでは、ライフサイクル管理をサポートすることによって、企業顧客が特権のフットプリント(footprint)を管理し続けるように図られている。ライフサイクル管理オペレーションの例には、(i)新しい権利の作成、変更および削除の承認ならびに証明のサポート(たとえば、権利ライフサイクル管理)と、(ii)特権の作成、変更および削除についての職務の承認/証明および分離のサポート(権利付与としても知られる)(たとえば、アクセスリクエスト管理)と、(iii)新しいアプリケーションの作成、既存のアプリケーションおよび廃止されつつあるアプリケーションの変更の承認および証明サポート(たとえば、アプリケーションライフサイクル管理)とが含まれる。
【0005】
さまざまなアイデンティティおよびアクセス関連エンティティについてこれらおよび他のライフサイクル管理オペレーションをサポートするために、典型的には、フレームワークをサポートしてこれらのアプリケーションの各々と統合するために、アイデンティティ管理またはガバナンスソリューションが必要である。一例として、オラクルアイデンティティガバナンスプロダクトは、顧客がこれらの統合を作成するために用いる多数のコネクタをサポートする。
【発明の概要】
【課題を解決するための手段】
【0006】
簡潔な概要
ユニバーサルガバナンスのための技術(たとえば、方法、システム、1つ以上のプロセッサによって実行可能なコードまたは命令を格納した非一時的なコンピュータ可読媒体)が提供される。
【0007】
さまざまな実施形態では、データ処理システムにおいて、1つ以上の企業アプリケーションのうちの一部であるデータのクエリまたはデータに対するCRUDオペレーションのリクエストを受信することを備える方法が提供される。方法はさらに、データ処理システムが、1つ以上のアプリケーションと関連付けられたオブジェクトのスキーマを取得することを備え、スキーマは、オブジェクト間の関係をモデル化し、オブジェクトは、1つ以上の企業アプリケーションのデータを表す。方法はさらに、データ処理システムが、取得されたスキーマに基づいて、クエリまたはCRUDオペレーションを処理することを備える。いくつかの実施形態では、処理することは、クエリまたはCRUDオペレーションを、1つ以上の企業アプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む。呼出しは、オブジェクトのスキーマに従って、1つ以上の企業アプリケーションのデータに対してクエリまたはCRUDを実行するように構成される。方法はさらに、データ処理システムが、クエリまたはCRUDオペレーションの結果をユーザに報告することを備える。いくつかの実施形態では、クエリまたはCRUDオペレーションを報告することは、オブジェクトのライフサイクルにわたってオブジェクトと関連付けられたデータに対して行われたすべてのオブジェクトミューテーション(mutations)を報告することを含む。
【0008】
さまざまな実施形態では、1つ以上のプロセッサと、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに方法を行わせる命令を格納した非一時的マシン可読記憶媒体とを含むデータ処理システムを備えるシステムが提供される。
【0009】
さまざまな実施形態では、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに方法を行わせる命令を格納した非一時的マシン可読記憶媒体が提供される。
【0010】
さまざまな実施形態では、データ処理システムにおいて、ターゲットアプリケーションの一部であるデータのクエリまたはデータに対するCRUDオペレーションのリクエストを受信することを備える方法が提供される。方法はさらに、データ処理システムが、ターゲットアプリケーションと関連付けられたオブジェクトのスキーマを取得することを備え、スキーマは、オブジェクト間の関係をモデル化し、オブジェクトはターゲットアプリケーションのデータを表す。方法はさらに、データ処理システムが、スキーマに基づいて、クエリまたはCRUDオペレーションをオブジェクトに対して実行することと、データ処理システムが、スキーマに基づいて、クエリまたはCRUDオペレーションをデータに対して実行することと、データ処理システムが、データに対するクエリまたはCRUDオペレーションの結果を報告することとを備える。
【0011】
いくつかの実施形態では、クエリまたはCRUDオペレーションをデータに対して実行することは、クエリまたはCRUDオペレーションを、ターゲットアプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む。
【0012】
いくつかの実施形態では、呼出しは、スキーマに従って、ターゲットアプリケーションのデータに対してクエリまたはCRUDを実行するように構成される。
【0013】
いくつかの実施形態では、クエリまたはCRUDオペレーションの結果を報告することは、オブジェクトのライフサイクルにわたって、オブジェクトと関連付けられたデータに対して行われるすべてのオブジェクトミューテーションを報告することを含む。
【0014】
いくつかの実施形態では、スキーマは、ターゲットアプリケーションのエンリッチバージョンであり、ターゲットアプリケーションのエンリッチバージョンは、ターゲットアプリケーション内のデータを表すオブジェクトを超えるデータ処理システム内の追加のアーティファクトまたはオブジェクトを含む。
【0015】
いくつかの実施形態では、方法はさらに、データ処理システムが、オブジェクトに対するクエリまたはCRUDオペレーションの実行を説明するために、スキーマを更新することを備え、クエリまたはCRUDオペレーションをデータに対して実行することは、更新されたスキーマに基づく。
【0016】
いくつかの実施形態では、オブジェクトのスキーマは、データ処理システム内の追加のオブジェクトと関連付けられ、追加のオブジェクトは、企業内で追跡される情報およびタスクを表す。
【0017】
さまざまな実施形態では、1つ以上のプロセッサによって実行可能な複数の命令を格納するための非一時的コンピュータ可読メモリが提供され、複数の命令は、1つ以上の複数のプロセッサによって実行されると、1つ以上のプロセッサに処理を行わせる命令を含み、処理は、ターゲットアプリケーションの一部であるデータのクエリまたはデータに対するCRUDオペレーションのリクエストを受信することと、ターゲットアプリケーションと関連付けられたオブジェクトのスキーマを取得することとを含み、スキーマは、オブジェクト間の関係をモデル化し、オブジェクトはターゲットアプリケーションのデータを表し、処理はさらに、スキーマに基づいて、クエリまたはCRUDオペレーションをオブジェクトに対して実行することと、スキーマに基づいて、クエリまたはCRUDオペレーションをデータに対して実行することと、データに対するクエリまたはCRUDオペレーションの結果を報告することとを含む。
【0018】
いくつかの実施形態では、クエリまたはCRUDオペレーションをデータに対して実行することは、クエリまたはCRUDオペレーションを、ターゲットアプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む。
【0019】
いくつかの実施形態では、呼出しは、スキーマに従って、ターゲットアプリケーションのデータに対してクエリまたはCRUDを実行するように構成される。
【0020】
いくつかの実施形態では、クエリまたはCRUDオペレーションの結果を報告することは、オブジェクトのライフサイクルにわたって、オブジェクトと関連付けられたデータに対して行われるすべてのオブジェクトミューテーションを報告することを含む。
【0021】
いくつかの実施形態では、スキーマは、ターゲットアプリケーションのエンリッチバージョンであり、ターゲットアプリケーションのエンリッチバージョンは、ターゲットアプリケーション内のデータを表すオブジェクトを超えるデータ処理システム内の追加のアーティファクトまたはオブジェクトを含む。
【0022】
いくつかの実施形態では、オブジェクトに対するクエリまたはCRUDオペレーションの実行を説明するために、スキーマを更新することをさらに備え、クエリまたはCRUDオペレーションをデータに対して実行することは、更新されたスキーマに基づく。
【0023】
いくつかの実施形態では、オブジェクトのスキーマは、データ処理システム内の追加のオブジェクトと関連付けられ、追加のオブジェクトは、企業内で追跡される情報およびタスクを表す。
【0024】
さまざまな実施形態では、1つ以上のプロセッサと、1つ以上のプロセッサに連結されたメモリとを備えるシステムが提供され、メモリは、1つ以上のプロセッサによって実行可能な複数の命令を格納し、複数の命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに処理を行わせる命令を含み、処理は、ターゲットアプリケーションの一部であるデータのクエリまたはデータに対するCRUDオペレーションのリクエストを受信することと、ターゲットアプリケーションと関連付けられたオブジェクトのスキーマを取得することとを含み、スキーマは、オブジェクト間の関係をモデル化し、オブジェクトはターゲットアプリケーションのデータを表し、処理はさらに、スキーマに基づいて、クエリまたはCRUDオペレーションをオブジェクトに対して実行することと、スキーマに基づいて、クエリまたはCRUDオペレーションをデータに対して実行することと、データに対するクエリまたはCRUDオペレーションの結果を報告することとを含む。
【0025】
いくつかの実施形態では、クエリまたはCRUDオペレーションをデータに対して実行することは、クエリまたはCRUDオペレーションを、ターゲットアプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む。
【0026】
いくつかの実施形態では、呼出しは、スキーマに従って、ターゲットアプリケーションのデータに対してクエリまたはCRUDオペレーションを実行するように構成される。
【0027】
いくつかの実施形態では、クエリまたはCRUDオペレーションの結果を報告することは、オブジェクトのライフサイクルにわたって、オブジェクトと関連付けられたデータに対して行われるすべてのオブジェクトミューテーションを報告することを含む。
【0028】
いくつかの実施形態では、スキーマは、ターゲットアプリケーションのエンリッチバージョンであり、ターゲットアプリケーションのエンリッチバージョンは、ターゲットアプリケーション内のデータを表すオブジェクトを超えるデータ処理システム内の追加のアーティファクトまたはオブジェクトを含む。
【0029】
いくつかの実施形態では、処理はさらに、オブジェクトに対するクエリまたはCRUDオペレーションの実行を説明するために、スキーマを更新することをさらに含み、クエリまたはCRUDオペレーションをデータに対して実行することは、更新されたスキーマに基づく。
【0030】
いくつかの実施形態では、オブジェクトのスキーマは、データ処理システム内の追加のオブジェクトと関連付けられ、追加のオブジェクトは、企業内で追跡される情報およびタスクを含む。
【0031】
上述のおよび以下で説明する技術は、複数の方法で複数のコンテキストで実現されてもよい。以下でより詳細に説明するように、実現例およびコンテキストの実現例のいくつかの例が、以下の図面を参照して提供される。しかしながら、以下の実現例およびコンテキストは、数あるなかの一部である。
【図面の簡単な説明】
【0032】
図1】ライフサイクル管理のアプローチを示す図である。
図2】さまざまな実施形態に係る、ライフサイクル管理のユニバーサルアプローチを示す図である。
図3】さまざまな実施形態に係る、アイデンティティガバナンスフレームワークを示す図である。
図4】さまざまな実施形態に係る、ユニバーサルガバナンスのプロセスを示すフローチャートである。
図5】さまざまな実施形態を実現するための分散システムを簡潔に示す図である。
図6】さまざまな実施形態に係る、ある実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスを、クラウドサービスとして提供可能なシステム環境の1つ以上のコンポーネントを示す簡潔なブロック図である。
図7】さまざまな実施形態を実現するために使用可能なコンピュータシステムの例を示す図である。
【発明を実施するための形態】
【0033】
詳細な説明
以下の説明では、さまざまな実施形態について説明する。説明の目的で、実施形態の完全な理解を提供するために、特定の構成および詳細について説明する。しかしながら、これらの特定の詳細がなくても実施形態を実行可能であることは、当業者に明らかであろう。さらに、説明する実施形態を不明瞭にしないために、公知の特徴は省略する、または簡潔に説明する場合がある。
【0034】
はじめに
アプリケーションおよび各アプリケーション内のオブジェクトの種類は、さまざまなアプリケーション間で大きく異なる。たとえば、メインフレーム、さまざまなベンダからの企業資源計画(ERP)/顧客関係管理(CRM)/人的資源管理(HCM)システム、ライトウェイトディレクトリアクセスプロトコル(LDAP)システム、データベースシステム、およびカスタムアプリケーションは、それらのユーザおよびアプリケーション内のユーザの許可を管理するためのさまざまな方法を有する。これらの多様なアプローチは、Box、Sharepointなど、データ指向アプリケーションに拡張されている。ユーザおよびアプリケーション内のユーザの許可を管理するこれらのさまざまな方法を処理するために、これらのオブジェクトについてガバナンスを提供する従来のアプローチは、共通のアプリケーションプログラミングインターフェース(API)を満たすコネクタを構築することである。共通のAPIはその後、ターゲットシステムと通信し、かつ、データミューテーション(基礎データの変化)につながるさまざまな作成、読出し、更新、および削除(CRUD)オペレーションを行うために、ガバナンスシステムによって用いられる。図1に示すように、アイデンティティ管理システム100は、共通のAPI115を含むアイデンティティコネクタフレームワーク110と通信しているアイデンティティ管理またはガバナンスシステム105を備えてもよい。そして、共通のAPI115は、1つ以上のターゲットシステム120と通信し、かつ、1つ以上のコネクタ125によってさまざまな作成、読出し、更新、および削除(CRUD)オペレーションを行うために、ガバナンスシステム105によって用いられる。
【0035】
しかしながら、従来のアプローチでは、ターゲットシステム120の各々は、それ自体のコネクタ125を必要とし、このアイデンティティコネクタフレームワーク110によって提供される機能はCRUDに限定されるため、すべてのライフサイクルオペレーションは依然としてソフトウェアの追加の層を必要とする。さらに、ガバナンス機能の多くは、複数のターゲットクエリを必要とする。たとえば、職務の分離を解析するためのプロセスフローは、複数のアプリケーションにまたがってアクセス情報を調べることを含んでもよい。しかしながら、これらのクエリを行うことは、ターゲットシステム120内のデータをガバナンスシステム105に同期させること、および同期されたデータを保持する際(周期的なデータのリフレッシュ、変化の記録、およびターゲットへのプロビジョニングバック)に複雑性を処理することを意味する。全てがガバナンスシステム105に同期された後でも、ソフトウェアの追加の層は実際のライフサイクル管理サポートを構築する必要がある。
【0036】
そのため、これらの問題に対処するために異なるアプローチが必要である。さまざまな実施形態では、統一した方法でターゲットアプリケーション(たとえば、ターゲットシステム120)のユニバースをモデル化し、統一した態様でこのモデルに対してオペレーションを行い、かつ、このモデルのガバナンス機能を行う異なるアプローチが提供される。このアプローチは、本明細書では「ユニバーサルガバナンス(universal governance)」と呼ばれる。このアプローチは、第1の層またはガバナンス層、第2の層またはガバナンスエンティティの層、および第3の層またはアプリケーションエンティティの層を含む多層アプローチであると考えられ得る。第1の層には、能力のガバナンスセットのすべてが存在する。これらの能力は、下位の層内のいずれかのエンティティについてのオブジェクトライフサイクルを処理することが可能である。第2の層には、ガバナンスのコアエンティティが存在する。ガバナンスエンティティは、アプリケーション特有ではないが、依然として、企業顧客が追跡する必要がある情報およびタスクを表す。たとえば、企業の役割はこの層に存在する場合がある。この役割を作成したのは誰か、この役割が課すのは何か、誰がこの役割を承認したか、および、この役割を最後にレビューしたのは誰かといったパラメータが、ガバナンスエンティティの一部である。第3の層には、アプリケーション特有のエンティティのセットが存在する。これらのエンティティは、ターゲットアプリケーション(複数可)をモデル化する。ターゲットアプリケーション内のオブジェクトは、互いの間で、ならびに第2の層内のオブジェクトと、関係を有する。たとえば、ユーザであるボブ・スミス(第2の層オブジェクト)は、アクティブディレクトリアカウント(第3の層オブジェクト)を有し得る。なお、第2および第3の層のこれらのエンティティは、定義のみを表し、データそのものを表さない。
【0037】
有利なことに、この多層アプローチはすべてのエンティティに適用される。たとえば、SQLステートメントがデータベースにおいて作成された任意のテーブルに対して実行されるために使用可能であるリレーショナルデータベース管理システム(RDBMS)と同様に、ガバナンス特徴のコアセットの第1の層は、第2の層および第3の層内の任意のエンティティで実行可能である。そのようなアプローチによって、ガバナンス能力はすべてのオブジェクトに均一に適用可能になる。オブジェクトおよび関係を第2の層または第3の層において表すことが可能である限り、第1の層内の機能は区別しない。すなわち、第1の層は、ユニバーサルに任意のエンティティを統治可能である。さらに、データ同期化が必要でない。たとえば、アプリケーションオブジェクトはいずれも同期させる必要がない。第2の層および第3の層内のこれらのエンティティにオペレーションが生じると、これらのエンティティは、リアルタイムに、リアルターゲットアプリケーション上でCRUDオペレーションとして変換可能である。
【0038】
また、有利なことに、ターゲットアプリケーションのスキーマの拡張またはエンリッチ化が可能である。たとえば、アプリケーションエンティティはリアルターゲットアプリケーションを表すにすぎないため、アプリケーションエンティティのスキーマをターゲットアプリケーションのエンリッチバージョンとすることが可能である。そこで、このエンリッチ化されたオブジェクトに対する作成オペレーションは、実際のターゲットオブジェクトを作成可能であるだけでなく、ガバナンスシステム内の他のアーティファクトを作成するために用いることも可能である。さらに、このアプローチは、オブジェクトタイムマシンとして機能し得る。たとえば、顧客がガバナンスシステムとやり取りを行い、かつ、オブジェクトがローカルに存在していようとリモートに存在していようと、ガバナンスシステムがすべてのオブジェクトミューテーションの経過を追跡することが可能であると、ガバナンスシステムは、セキュリティおよび監査の観点についてオブジェクトライフサイクル履歴を追跡可能なオブジェクトタイムマシンとして機能できる。このタイムマシンおよびライフサイクルの回りのポリシーは、ターゲットアプリケーションに対して完全に見えなくてもよい。
【0039】
ガバナンスフレームワーク
図2は、ユニバーサルガバナンスのプラットフォーム200を示す図である。プラットフォーム200は、1つ以上の企業システム210(クライアント側)と通信しているアイデンティティガバナンスフレームワーク205(サーバ側)を含む。アイデンティティガバナンスフレームワーク205はサーバ側コンポーネント215を含み、サーバ側コンポーネント215は、図3に関して説明されるように、ガバナンスエンティティ層およびターゲットアプリケーションエンティティ層内のオブジェクト上のガバナンスサービス層内の能力またはオペレーションのガバナンスセットを実現する。ガバナンスエンティティ層は、アプリケーションに特有ではないが依然として企業顧客が追跡する必要がある情報およびタスクを表すエンティティおよびオブジェクトを含む。たとえば、企業の役割がこの層に存在するか、この役割を作成したのは誰か、この役割が課すのは何か、だれがこの役割を承認したか、および、最後に誰がこの役割をレビューしたのかは、ガバナンス必要条件の一部である。ターゲットアプリケーションエンティティ層は、均一な方法で、1つ以上の企業システム210の1つ以上のターゲットアプリケーション220をモデル化するエンティティおよびオブジェクトを含む。エンティティおよびオブジェクトターゲットアプリケーションエンティティ層は、互いの間で、ならびにガバナンスエンティティ層内のエンティティおよびオブジェクトと、関係を有する。たとえば、ユーザであるボブ・スミス(ガバナンスエンティティ層からのオブジェクト)は、アクティブディレクトリアカウント(ターゲットアプリケーションエンティティ層内のオブジェクト)を有してもよい。なお、これらの層内のエンティティおよびオブジェクトは、定義のみを表し、ターゲットアプリケーション220で見つかるデータそのものを表さない。
【0040】
さまざまな実施形態では、サーバ側コンポーネント215は、下位の層内のエンティティもしくはオブジェクトについてオブジェクトライフサイクルを統治または処理するために使用可能である。いくつかの実施形態では、能力またはオペレーションのガバナンスセットには、(i)新しい権利の作成、変更および削除の承認ならびに証明、(ii)特権の作成、変更および削除についての職務の承認/証明および分離(権利付与としても知られる)、および/または(iii)新しいアプリケーションの作成、既存のアプリケーションおよび廃止されつつあるアプリケーションの変更の承認ならびに証明が含まれてもよい。たとえば、ユーザは、ターゲットアプリケーション220に対する構造化クエリ言語(SQL)クエリまたはLDAPオペレーションなどの能力またはオペレーションを実行するために、サーバ側コンポーネント215を用い得る。能力またはオペレーションを実行すると、アイデンティティガバナンスフレームワーク205は、ターゲットアプリケーション220と関連付けられたガバナンス特有スキーマを225を取得する。スキーマ225は、ターゲットアプリケーション220の編成または構造を表す、アイデンティティガバナンスフレームワーク205の層内のエンティティおよびオブジェクト間の階層関係を含む。スキーマ225は、ダイナミックにガバナンスおよびターゲットアプリケーション220のコアエンティティをモデル化するために、層のエンティティおよび/またはオブジェクトの作成、読出し、更新、または削除が行われると、ユーザおよび/またはアイデンティティガバナンスフレームワーク205によって作成されてもよい。ガバナンススキーマ225を用いて、サーバ側コンポーネント215が、ガバナンスエンティティ層およびターゲットアプリケーションエンティティ層内のエンティティおよび/またはオブジェクトに対して、能力またはオペレーションを実行可能である。
【0041】
ガバナンスエンティティ層およびターゲットアプリケーションエンティティ層内のエンティティおよび/またはオブジェクトに対する能力またはオペレーションの実行によって、アイデンティティガバナンスフレームワーク205内でエンティティおよび/またはオブジェクトのクエリ、作成、読出し、更新、または削除が行われると、記録の新しいまたは更新されたスキーマ225が作成される(システム内のすべてのデータのミューテーション(たとえば、CRUD)が、新しいまたは更新されたスキーマを確立している場合がある)。いくつかの例では、新しいまたは更新されたスキーマ225は、ガバナンスエンティティ層およびターゲットアプリケーションエンティティ層内のエンティティおよび/またはオブジェクトに対して能力またはオペレーションを実行するために用いられるオリジナルのスキーマ225と同じである、同様である、または異なる。たとえば、エンティティおよび/もしくはオブジェクトに対する能力またはオペレーションの実行は、基本的な定義もしくはデータの変化に影響を及ぼす、または及ぼさない場合があり(たとえば、クエリオペレーションが変化に影響を及ぼさない場合がある)、そのため、新しいまたは更新されたスキーマ225は、オリジナルのスキーマ225と同じでもよい、同様でもよい、または別でもよい。ターゲットアプリケーション220がアイデンティティガバナンスフレームワーク205に対して接続性を有する場合、記録の新しいまたは更新されたスキーマ225はその後、ターゲットアプリケーション220内の実データのクエリまたは更新を実行するために用いられる。ターゲットアプリケーション220がアイデンティティガバナンスフレームワーク205に接続されていない場合、ターゲットアプリケーション220内の実データのクエリまたは更新を実行するために、オフラインメカニズム(人間の介入など)を用いてもよい。エンティティおよび/またはオブジェクトが表す実データのすべてを、能力またはオペレーションごとにフェッチする必要はなく、サーバ側コンポーネント215がガバナンスエンティティ層およびターゲットアプリケーションエンティティ層内のエンティティおよび/もしくはオブジェクトに対して能力またはオペレーションを実行すると、オペレーションで用いられる実データのみをターゲットアプリケーション220からオンデマンドでフェッチする必要がある。ターゲットアプリケーション220の各々が均一な方法でモデル化され、かつ、能力またはオペレーションがモデルのエンティティおよび/またはオブジェクトに対して均一な方法で実行されると、ターゲットアプリケーション220のユニバーサルガバナンスが可能になる。
【0042】
エンティティおよび/またはオブジェクトはいずれも、ターゲットアプリケーション220と必ずしも同期化される必要はない。能力またはオペレーションがエンティティおよび/またはオブジェクトに対して実行されると、スキーマ225が更新され、能力またはオペレーションは、ターゲットアプリケーション220に対するクエリまたはCRUDオペレーションとしてリアルタイムに変換される。たとえば、能力またはオペレーションが層内のエンティティおよび/またはオブジェクトに対して実行されると、アイデンティティガバナンスフレームワーク205はスキーマ225を更新し、能力またはオペレーションおよびターゲットアプリケーション220について更新されたスキーマ225を、変換層230に伝える。変換層230は、能力またはオペレーションおよび更新されたスキーマ225を読出し、1つ以上のターゲットアプリケーションに対する適切なスキーマ特有呼出し235を作成する。呼出し235は、REST、GraphQL、または他のスキーマ表現言語といった、1つ以上のターゲットアプリケーション220と通信するためのクエリまたは動作言語を用いて構成されてもよい。呼出し235は、クライアント側、たとえばターゲットアプリケーション220において、スキーマ225のエンティティおよび/またはオブジェクトが表すデータ(ターゲットアプリケーション220内の実データ)に対して能力またはオペレーションを行うように構成される。変換層230は、通信ネットワーク240を介してターゲットアプリケーション220と通信している。通信ネットワーク240の例は、携帯電話ネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、他の無線通信ネットワーク、またはこれらの組合わせを含んでもよい。
【0043】
さまざまな実施形態では、エンティティおよび/またはオブジェクトは実際のターゲットアプリケーション220を表すものにすぎないため、各ターゲットアプリケーション220のスキーマ225をターゲットアプリケーション220のエンリッチバージョンにすることが可能である。たとえば、エンリッチオブジェクトに対する作成オペレーションは、実際のターゲットオブジェクトを作成可能であるだけでなく、アイデンティティガバナンスフレームワーク205(アーティファクトは必ずしもターゲットアプリケーションの一部ではない)内の他のアーティファクトも作成可能である。さらに、ユーザがアイデンティティガバナンスフレームワーク205とやり取りするとエンティティおよび/またはオブジェクトに対してオペレーションが行われるため、アイデンティティガバナンスフレームワーク205は、オブジェクトがローカルに存在していようとリモートに存在していようと、すべてのオブジェクトのミューテーションを追跡してもよい。これによって、アイデンティティガバナンスフレームワーク205は、セキュリティおよび監査の観点についてオブジェクトライフサイクル履歴を追跡可能なオブジェクトタイムマシンとして動作可能である。このタイムマシンおよびライフサクルの周りのポリシーは、ターゲットアプリケーション220に対して完全に見えない。
【0044】
図3に示すように、ガバナンスフレームワーク300(たとえば、図2に関連して説明されたようなアイデンティティガバナンスフレームワーク205)は、ガバナンスサービス層305、ガバナンスエンティティ層310、およびターゲットアプリケーションエンティティ層315を含んでもよい。さまざまな実施形態では、各企業ユニット(たとえば、会社)は、ガバナンスサービス層305、ガバナンスエンティティ層310、およびターゲットアプリケーションエンティティ層315の異なるインスタンシエイションを有する。ガバナンスサービス層305は、企業ユニットの能力またはオペレーション320のガバナンスセットを含む。いくつかの実施形態では、能力は、(i)アクセスリクエスト、たとえば、誰が何にいつアクセスしているかを判断する能力、(ii)証明、たとえば、アクセスの承認痕跡を有するか、誰がいつアクセスを承認したか、承認がレビューされたか、アクセスがさらにレビューされるべきであったか、またはアクセスの有効期限が切れたか、など、(iii)職務の分離、たとえば、複数のアプリケーションにわたってアクセスの競合があるか、(iv)データマイニングおよび解析、たとえば、ユーザがどのくらいの頻度でリソースにアクセスしているか、どこからリソースが典型的にアクセスされているか、どのようにリソースがアクセスされているか、認証特権がより多い/少ない特定の期間に付与されたか、など、ならびに(v)オブジェクトタイムマシンが、たとえば、オブジェクトのライフを振り返る、およびセキュリティと監査との目的でオブジェクトライフサイクル履歴を追跡することが可能か、を含む。
【0045】
ガバナンスエンティティ層310は、企業ユニット用のガバナンスエンティティ325a~n(「n」は自然数を表す)のコアセットを含む。ガバナンスエンティティ325a~nは、アプリケーションに特有ではないが、依然として企業顧客が追跡する必要がある情報およびタスクを表す。たとえば、ガバナンスエンティティ325a~nは、企業の役割などのポリシーオブジェクトでもよい。誰が役割を作成したか、この役割が課すのは何か、誰が役割を承認したか、および、誰が最後に役割をレビューしたかなどのパラメータが、ガバナンスエンティティ325a~nの一部である。ターゲットアプリケーションエンティティ層315は、企業ユニットが統治することに関心がある、対応するターゲットアプリケーションa~nをモデル化するエンティティ335a~nのアプリケーション特有のセットが存在する場所である。エンティティ335a~nは、オブジェクト340a~nを用いてターゲットアプリケーション(複数可)をモデル化する。ターゲットアプリケーションエンティティ層315内のオブジェクト340a~nは、互いの間で、かつガバナンスエンティティ層310内のオブジェクト330a~nと、関係を有する。たとえば、企業の役割などのガバナンスエンティティ325a~nに対するミューテーション(たとえば、エンティティまたはオブジェクトに対する操作のCRUDオペレーション)によって、ターゲットアプリケーション(複数可)をモデル化するエンティティ335a~nのオブジェクト340a~nに対するミューテーションが起こり得る。ターゲットアプリケーションエンティティ層315におけるオブジェクトの関係ならびに層ガバナンスエンティティ層310およびターゲットアプリケーションエンティティ層315内のオブジェクト間の関係は、各オブジェクト間のリンク/関係を示すブランチを有する階層ツリーのノードとして表現される。たとえば、オブジェクト205は、アクティブディレクトリグループ220、アクティブディレクトリ編成225、およびアクティブディレクトリグループメンバーシップ230を含む、アクティブディレクトリアプリケーション215のアクティブディレクトリアカウントを有する特定のユーザ210の役割を表してもよい。
【0046】
オブジェクト330、340間の表現は、ガバナンスサービス層305からの能力のガバナンスセットが、エンティティ325、335ならびに/またはガバナンスエンティティ層310およびターゲットアプリケーションエンティティ層315内のオブジェクト330、340に対して動作可能になるような均一な方法で、ターゲットアプリケーションの編成または構造のスキーマを明らかにする。オブジェクト330、340および関係がガバナンスエンティティ層310およびターゲットアプリケーションエンティティ層315で表すことができる限り、ガバナンスサービス層305内の機能は区別しない。すなわち、ガバナンスサービス層305は、任意のエンティティ325、335をユニバーサルに統治可能である。さまざまな実施形態では、オブジェクトモデルは、ターゲットアプリケーションごとに、たとえば各アプリケーションにわたる層として、スキーマに設けられる。いくつかの実施形態では、アプリケーションのコアセットが、階層ツリーに既にマッピングされたオブジェクトを含むアプリケーションごとに、スキーマを有する企業ユニットに設けられる。他の実施形態では、ユーザは、階層ツリーにマッピングされたオブジェクトを含むアプリケーション(たとえば、カスタムアプリケーション)ごとに、スキーマを設計し得る。
【0047】
ガバナンス特有のスキーマを用いて、ガバナンスサービス層305からガバナンスエンティティ層310およびターゲットアプリケーションエンティティ層315内のエンティティ325、335およびオブジェクト330、340に対して能力またはオペレーションを行うことが可能である。オブジェクト330、340が表す実データのすべてを能力またはオペレーションごとにフェッチする必要はなく、ガバナンスサービス層305がガバナンス能力またはオペレーションを行うと、能力またはオペレーションで用いられる実データのみをオンデマンドでフェッチする必要がある。たとえば、役割のある人のみがこのアプリケーションに対するアクセスを有することを許可されるべきであるため、役割を有するすべての人を知りたいということ含む、ガバナンスサービス層305を用いてクエリが実行される場合である。役割オブジェクトが表すデータのすべてがガバナンスフレームワーク300、またはガバナンスフレームワーク300と関連付けられた分散環境(たとえば、クラウド環境)に存在する必要はない。そうではなく、クエリを実行するためにガバナンスサービス層305が用いられる、エンティティ325、335およびオブジェクト330、340に対してクエリを実行するために、変換層は、ターゲットアプリケーションから能力またはオペレーションで用いられる実データをフェッチし、変換層はその後、クエリまたはCRUDオペレーションの実行に基づいてスキーマまたは更新されたスキーマを受信し、変換層は、企業のアプリケーションまたはシステム(たとえば、REST、GraphQL、または他のスキーマ表現言語などのAPI呼出し)に送信された、アプリケーションまたはシステムに特有のクエリもしくはCRUDオペレーションをどのように変換するかが分かる。クエリまたはCRUDオペレーションはガバナンスフレームワーク300外部のデータに対して行うことが可能であるだけでなく、ガバナンスフレームワーク300は、ガバナンスフレームワーク300に対してローカルまたはリモートに、エンティティ325、335およびオブジェクト330、340に対してクエリまたはCRUDオペレーションを実行可能である。
【0048】
図3は、1つ以上のターゲットアプリケーションのエンティティ325、335およびオブジェクト330、340の例示的なスキーマまたは階層編成を示す図である。この編成は、実行時に明示される。実行時とは、ガバナンスフレームワーク300が実行されるときのプログラミングコンポーネントのインスタンシエイションのことである。たとえば、オブジェクト指向プログラミングパラダイムの例示的かつ非制限的な場合、実行時は、必要に応じたクラスの集合からのオブジェクトの作成、メモリヒープへのオブジェクトの格納、必要に応じたオブジェクトの読出しおよび更新、ならびに、もはやオブジェクトが用いられていない場合の除去を含み得る。この場合、エンティティ325、335およびオブジェクト330、340の編成は、ガバナンスフレームワーク300が1つ以上のターゲットアプリケーションを統治するために実行されていると、メモリ内のオブジェクト間の関係で明示される。一般に、エンティティ325、335およびオブジェクト330、340は、任意の種類のアプリケーションについてガバナンスの異なるアスペクトを実現する。たとえば、オブジェクト指向パラダイムでは、オブジェクト330、340は、ターゲットアプリケーション内のさまざまなタスクを行うためのさまざまな方法および関連付けられたプロパティを有する、クラスの別々のオブジェクト(インスタンス)に対応してもよい。従業員名簿サービスを提供するアプリケーションの特定の場合では、別々のオブジェクト330がユーザ(たとえば、ボブ・スミス)を提供してもよく、別々のオブジェクト340が従業員名簿のアプリケーションの異なる特徴(たとえば、アクティブディレクトリアカウント)を提供してもよい。従業員名簿アプリケーションでは、別々のオブジェクト340は、プログラムの課金機能などの異なる特徴を提供し得る。これらは、ガバナンスフレームワーク300が適用可能な膨大な数のアプリケーションの例示的かつ非制限的な例にすぎない。
【0049】
ガバナンスフレームワーク300は、階層構造を有する。すなわち、ガバナンスフレームワーク300内のエンティティ325、335およびオブジェクト330、340は、親と子の関係(同様に、ピアツーピアの関係)で互いに連結される。この編成を実現するために、ガバナンスフレームワーク300はさまざまな種類のオブジェクト330、340を含む。たとえば、オブジェクト340bなどのいくつかのオブジェクトは、葉であり子を有さない一方で、オブジェクト330aまたは340aなどの他のオブジェクトは、枝であり子を有する。エンティティ335nなどの特定のエンティティドメイン内でリンクされた340h~nなどのオブジェクトは、オブジェクトをグループとして機能することを許可する複合機能を含む。つまり、複合機能は、例示的なオブジェクトを含む複合グループ分けを定義する。ガバナンスエンティティ層310における複合機能は、企業顧客がエンティティ内で追跡が必要な階層的情報およびタスクを提供する一方で、ターゲットアプリケーションエンティティ層315では、複合機能はエンティティによって表されるターゲットアプリケーションの実際の機能のミラーリングを行うことができる。理解されるべきであるように、図3は、より包括的なガバナンスフレームワーク300のほんの一部のみを表し得る。たとえば、オブジェクト330f~nによって提供される複合機能は、より高レベル(図示せず)に連結可能であり、オブジェクト340f~hによって提供される複合機能は、さらに低レベル(図示せず)に連結可能である。なお、「より高い」という用語は、より包括的な対象領域(たとえば、親および先祖レベル)の隠喩的な言及を省略したものである一方で、「より低い」という用語は、さらにネストされた領域(たとえば、子レベル)の隠喩的な言及を省略したものであり、厳密に言えば、プログラミング環境は、「上」と「下」との間で区別しない。
【0050】
ユニバーサルガバナンス処理を有するアイデンティティ管理システム
図4は、ユニバーサルガバナンスのプロセスおよびオペレーションを示す図である。個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして記載される場合がある。フローチャートは逐次プロセスとしてオペレーションを記載する場合があるが、オペレーションの多くは、並列にまたは同時に実行されてもよい。さらに、オペレーションの順序を並べ替えてもよい。プロセスはオペレーションが完了すると終了するが、図に含まれていない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーティン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は、当該関数を呼出して当該関数に戻る、または、メインの関数に戻ることに対応し得る。
【0051】
図4に示すプロセスおよび/またはオペレーションは、1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはこれらの組合わせによって実現されてもよい。ソフトウェアは、メモリ(たとえば、メモリデバイス、非一時的コンピュータ可読記憶媒体)に格納可能である。図4の特定の一連の処理ステップは、制限的であることを意図したものではない。ステップの他のシーケンスも、代替的な実施形態に従って行ってもよい。たとえば代替的な実施形態では、上述のステップを異なる順序で行うことができる。さらに、図4に示す個別のステップは、必要に応じて、個別のステップに対してさまざまなシーケンスで行うことが可能な複数のサブステップを含んでもよい。さらに、特定のアプリケーションに応じて、追加のステップを追加または削除可能である。当業者であれば、多くの変形例、修正例、および代替例を認識するであろう。
【0052】
図4は、ユニバーサルガバナンスのプロセスを説明するフローチャート400を示す。いくつかの実施形態では、フローチャート400に示すプロセスは、図2および図3に示すアーキテクチャおよびプロセスフローによって実現可能である。ステップ405において、データのクエリまたはデータに対するCRUDオペレーションのリクエストが受信される。データは、ターゲットアプリケーションの一部である。いくつかの実施形態では、ターゲットアプリケーションは、企業によって実現される。ステップ410において、ターゲットアプリケーションと関連付けられたオブジェクトのスキーマが取得される。スキーマは、オブジェクト間の関係をモデル化し、オブジェクトは、少なくともターゲットのデータを表す。ステップ415において、スキーマに基づいて、クエリまたはCRUDオペレーションがオブジェクトに対して実行される。ステップ420において、オブジェクトに対するクエリまたはCRUDオペレーションを説明するために、スキーマが更新される。本明細書で用いられるように、アクションが何かに「基づいて」いる場合、これは、アクションが少なくとも何かの一部に少なくとも部分的に基づいていることを意味する。
【0053】
ステップ425において、クエリまたはCRUDオペレーションが、スキーマに基づいてデータに対して実行される。いくつかの例では、データに対してクエリまたはCRUDオペレーションを実行するために用いられるスキーマは、オブジェクトに対してクエリまたはCRUDオペレーションを実行するために用いられるスキーマと同じである、同様である、または異なる。特定の例では、データに対してクエリまたはCRUDオペレーションを実行するために用いられるスキーマは、ステップ420で更新されたスキーマである。いくつかの実施形態では、この実行は、クエリまたはCRUDオペレーションを、スキーマまたは更新されたスキーマに基づいて、ターゲットアプリケーションに対する1つ以上のスキーマ特有の呼出しに変換することを含む。呼出しは、オブジェクトのスキーマまたは更新されたスキーマに従って、1つ以上の企業アプリケーションのデータに対してクエリまたはCRUDを実行するように構成される。ステップ430において、クエリまたはCRUDオペレーションの結果がユーザに報告される。いくつかの実施形態では、クエリまたはCRUDオペレーションの報告は、オブジェクトのライフサイクルにわたって、オブジェクトと関連付けられたデータに対して行われるすべてのオブジェクトのミューテーションを報告することを含む。
【0054】
例示的なシステム
図5は、ある実施形態を実現するための分散システム500を簡潔に示す図である。図示された実施形態では、分散システム500は、1つ以上の通信ネットワーク510を介してサーバ512に連結された1つ以上のクライアントコンピューティングデバイス502、504、506、および508を含む。クライアントコンピューティングデバイス502、504、506、および508は、1つ以上のアプリケーションを実行するように構成されてもよい。
【0055】
さまざまな実施形態では、サーバ512は、多種多様なアプリケーションのユニバーサルアイデンティティ管理もしくはガバナンスを行うことが可能な1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。
【0056】
また、特定の実施形態では、サーバ512は、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供してもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、たとえばサービスとしてのソフトウェア(SaaS)モデルの下で、クライアントコンピューティングデバイス502、504、506、および/または508のユーザに対して提供されてもよい。クライアントコンピューティングデバイス502、504、506、および/または508を動作させているユーザは、サーバ512とやり取りを行ってこれらのコンポーネントによって提供されるサービスを利用するために、1つ以上のクライアントアプリケーションを用いてもよい。
【0057】
図5に示す構成では、サーバ512は、サーバ512によって行われる機能を実現する1つ以上のコンポーネント518、520および522を含んでもよい。これらのコンポーネントは、1つ以上のプロセッサによって実現可能なソフトウェアコンポーネント、ハードウェアコンポーネント、またはこれらの組合わせを含んでもよい。なお、分散システム500と異なってもよいさまざまな異なるシステム構成が可能である。図5に示す実施形態はそのため、実施形態のシステムを実現するための分散システムの一例であり、制限的であることを意図したものではない。
【0058】
ユーザは、本開示の教示に従って、多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行うために、クライアントコンピューティングデバイス502、504、506、および/または508を用いてもよい。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスとやり取りすることを可能にするインターフェースを提供してもよい。また、クライアントデバイスは、このインターフェースを介してユーザに情報を出力してもよい。図5では4つのクライアントコンピューティングデバイスのみが示されるが、任意の数のクライアントコンピューティングデバイスをサポートしてもよい。
【0059】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップコンピュータなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲーミングシステム、シンクライアント、さまざまなメッセージ通信デバイス、センサまたは他の検知デバイスなど、さまざまな種類のコンピューティングシステムを含んでもよい。これらのコンピューティングデバイスは、さまざまなモバイルオペレーティングシステム(たとえば、Microsoft Windows(登録商標) Mobile、iOS、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むさまざまな種類およびさまざまなバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIXのようなオペレーティングシステム、Google Chrome(登録商標)OSなどのLinux(登録商標)またはLinuxのようなオペレーティングシステム)を実行してもよい。ポータブルハンドヘルドデバイスは、携帯電話、スマートフォン(たとえば、iPhone(登録商標))、タブレット(たとえば、iPad(登録商標)、パーソナルデジタルアシスタント(PDA)などを含んでもよい。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイ、および他のデバイスを含んでもよい。ゲーミングシステムは、さまざまなハンドヘルドゲーミングデバイス、インターネット対応のゲーミングデバイス(たとえば、Kinect(登録商標)ジェスチャ入力装置付きまたは無しのMicrosoft Xbox(登録商標)ゲーミングコンソール、Sony PlayStation(登録商標)システム、任天堂(登録商標)によって提供されるさまざまなゲーミングシステム、およびその他)を含んでもよい。クライアントデバイスは、さまざまなインターネット関連アプリ、通信アプリケーション(たとえば、Eメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)などのさまざまな異なるアプリケーションを実行可能であり、さまざまな通信プロトコルを用いてもよい。
【0060】
ネットワーク(複数可)510は、これらに限定されないが、TCP/IP(通信制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、およびAppleTalk(登録商標)などを含む、さまざまな利用可能なプロトコルを用いてデータ通信をサポート可能な、当業者にとってなじみのある任意の種類のネットワークでもよい。単に一例として、ネットワーク(複数可)510は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)ベースのネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、ワイヤレスネットワーク(たとえば、Institute of Electrical And Electronics(IEEE)1002.11スイートのプロトコル、Bluetooth(登録商標)、および/またはその他のワイヤレスプロトコルのうちのいずれかの下で動作するネットワーク)、および/またはこれらの任意の組合せおよび/または他のネットワークであり得る。
【0061】
サーバ512は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式のサーバなどを含む)、サーバファーム、サーバクラスタ、もしくはその他の適切な配置および/または組合せから構成されてもよい。サーバ512は、仮想オペレーティングシステムを実行している1つ以上の仮想マシン、または、サーバ用の仮想ストレージデバイスを保持するために仮想化可能なロジカルストレージデバイスの1つ以上のフレキシブルプールなど、仮想化を伴う他のコンピューティングアーキテクチャを含み得る。さまざまな実施形態において、サーバ512は、上記の開示において説明した機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。
【0062】
サーバ512のコンピューティングシステムは、上述のオペレーティングシステムのいずれかおよび任意の市販のサーバオペレーティングシステムを含む1つ以上のオペレーティングシステムを実行してもよい。また、サーバ512は、HTTP(ハイパテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェース)サーバ、JAVA(登録商標)サーバ、およびデータベースサーバなどを含む、さまざまな追加のサーバアプリケーションおよび/またはミッドティアアプリケーションを実行してもよい。例示的なデータベースサーバとして、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(International Business Machines、登録商標)などから市販されているデータベースサーバが挙げられるが、これらに限定されない。
【0063】
いくつかの実現例では、サーバ512は、クライアントコンピューティングデバイス502、504、506、および508のユーザから受信したデータフィードおよび/またはイベント更新を解析および統合するための1つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび/またはイベント更新は、これらに限定されないが、1つ以上のサードパーティ情報ソースおよび連続したデータストリームから受信するTwitter(登録商標)フィード、Facebook(登録商標)更新またはリアルタイム更新を含んでもよく、当該1つ以上のサードパーティ情報ソースおよび連続したデータストリームは、センサデータアプリケーション、金融ティッカー、およびネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通量監視などに関するリアルタイムイベントを含んでもよい。また、サーバ512は、クライアントコンピューティングデバイス502、504、506、および508の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでもよい。
【0064】
また、分散システム500は、1つ以上のデータリポジトリ514および516を含んでもよい。これらのデータリポジトリは、特定の実施形態においてデータおよび他の情報を格納するために用いられてもよい。たとえば、データリポジトリ514および516の1つ以上は、ユニバーサルアイデンティティ管理またはガバナンスを行うための情報を格納するために用いられてもよい。データリポジトリ514、516は、さまざまな場所に存在してもよい。たとえば、サーバ512によって用いられるデータリポジトリは、サーバ512にローカルでもよく、または、サーバ512に対してリモートでもよく、ネットワークベースもしくは専用接続を介してサーバ512と通信している。データリポジトリ514、516は、異なる種類でもよい。特定の実施形態では、サーバ512によって用いられるデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他のベンダによって提供されるデータベースなどのリレーショナルデータベースでもよい。これらのデータベースのうちの1つ以上は、SQLフォーマットのコマンドに応答して、データベースに対するデータの格納、更新、および取出しが可能になるように適合されてもよい。
【0065】
また、特定の実施形態では、データリポジトリ514、516のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションによって用いられるデータリポジトリは、たとえば、キー値格納リポジトリ、オブジェクト格納リポジトリ、またはファイルシステムによってサポートされる一般的な格納リポジトリなど、異なる種類でもよい。
【0066】
特定の実施形態では、本開示で説明される多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行うことは、クラウド環境を介したサービスとして提供されてもよい。図6は、特定の実施形態に係る、ユニバーサルアイデンティティ管理またはガバナンスを行うことがクラウドサービスとして提供されてもよいクラウドベースシステム環境の簡潔なブロック図である。図6に示す実施形態では、クラウドインフラストラクチャシステム602は、1つ以上のクライアントコンピューティングデバイス604、606、および608を用いてユーザがリクエストし得る1つ以上のクラウドサービスを提供してもよい。クラウドインフラストラクチャシステム602は、サーバ512について上述したものを含んでもよい1つ以上のコンピュータおよび/またはサーバを含んでもよい。クラウドインフラストラクチャシステム602内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは他の適切な配列および/または組合わせとして編成されてもよい。
【0067】
ネットワーク(複数可)610は、クライアント604、606、および608とクラウドインフラストラクチャシステム602との間のデータの通信およびやり取りを容易にし得る。ネットワーク(複数可)610は、1つ以上のネットワークを含んでもよい。ネットワークは、同じ種類でも異なる種類でもよい。ネットワーク(複数可)610は、有線および/または無線プロトコルを含む1つ以上の通信プロトコルをサポートして、通信を容易にしてもよい。
【0068】
図6に示す実施形態は、クラウドインフラストラクチャシステムのほんの一例に過ぎず、制限的であることを意図したものではない。なお、いくつかの他の実施形態では、クラウドインフラストラクチャシステム602は、図6に示すものよりも多いまたは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組合わせてもよい、または、コンポーネントの異なる構成または配列を有してもよい。たとえば、図6は3つのクライアントコンピューティングデバイスを示すが、代替的な実施形態では、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。
【0069】
クラウドサービスという用語は一般に、オンデマンドで、サービスプロバイダのシステム(たとえば、クラウドインフラストラクチャシステム602)によるインターネットなどの通信ネットワークを介してユーザが利用可能なサービスのことを言うために用いられる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客所有のオンプレミスサーバおよびシステムと異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。顧客はそのため、サービスについて別個のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを購入する必要はなく、クラウドサービスプロバイダによって提供されるクラウドサービスを利用可能である。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、アプリケーションを実行するためのインフラストラクチャリソースを購入することなく、インターネットを介して、オンデマンドでアプリケーションを注文および使用してもよい。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易かつスケーラブルなアクセスを提供するように設計される。複数のプロバイダは、クラウドサービスを提供する。たとえば、複数のクラウドサービスは、ミドルウェアサービス、データベースサービス、Javaクラウドサービス、および他のサービスなど、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)によって提供される。
【0070】
特定の実施形態では、クラウドインフラストラクチャシステム602は、ハイブリッドサービスモデルを含む異なるモデルを用いて、たとえば、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデル、および他のモデルなどの下で、1つ以上のクラウドサービスを提供してもよい。クラウドインフラストラクチャシステム602は、アプリケーション、ミドルウェア、データベース、およびさまざまなクラウドサービスを提供可能な他のリソース一式を含んでもよい。
【0071】
SaaSモデルによって、顧客が基本的なアプリケーション用にハードウェアまたはソフトウェアを買う必要なしに、サービスとして、インターネットなどの通信ネットワークを介して顧客にアプリケーションまたはソフトウェアを配信可能である。たとえば、SaaSモデルは、クラウドインフラストラクチャシステム602がホストするオンデマンドアプリケーションへのアクセスを顧客に提供するために用いられてもよい。Oracle Corporation(登録商標)によって提供されるSaaSサービスの例は、これらに限定されないが、人材/資本管理、顧客関係管理(CRM)、企業資源計画(ERP)、サプライチェーン管理(SCM)、企業パフォーマンス管理(EPM)、解析サービス、ソーシャルアプリケーション、およびその他を含む。
【0072】
IaaSモデルは一般に、柔軟な計算および格納能力を提供するためのクラウドサービスとして顧客にインフラストラクチャリソース(たとえば、サーバ、記憶装置、ハードウェアおよびネットワーキングリソース)を提供するために用いられる。さまざまなIaaSサービスが、Oracle Corporation(登録商標)によって提供される。
【0073】
PaaSモデルは通常、サービスとして、顧客がそのようなリソースを調達、構築、または維持することなく、アプリケーションおよびサービスを開発、実行、および管理できるプラットフォームならびに環境リソースを提供するために用いられる。Oracle Corporation(登録商標)によって提供されるPaaSサービスの例は、これらに限定されないが、Oracle Java Cloud Service (JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、さまざまなアプリケーション開発ソルーションサービス、およびその他を含む。
【0074】
クラウドサービスは通常、オンデマンドのセルフサービスベースで、サブスクリプションベース、柔軟にスケーラブルで信頼性があり、高可用性および安全な態様で提供される。たとえば、顧客は、サブスクリプション注文を介して、クラウドインフラストラクチャシステム602によって提供される1つ以上のサービスを注文してもよい。クラウドインフラストラクチャシステム602はその後、顧客のサブスクリプション注文でリクエストされたサービスを提供するために、処理を行う。たとえば、多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行う。クラウドインフラストラクチャシステム602は、1つまたはさらには複数のクラウドサービスを提供するように構成されてもよい。
【0075】
クラウドインフラストラクチャシステム602は、異なる展開モデルを介してクラウドサービスを提供してもよい。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム602は、サードパーティクラウドサービスプロバイダによって所有されてもよく、クラウドサービスが一般の顧客に提供され、クラウドサービスは一般の顧客に提供され、顧客は個人または企業であり得る。特定の他の実施形態では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム602は、組織内で(たとえば、企業組織内で)動作されてもよく、サービスは、組織内の顧客に提供される。たとえば、顧客は、人事部、給与部などの企業のさまざまな部、またはさらには企業内の個人でもよい。特定の他の実施形態では、コミュニティクラウドモデルの下で、クラウドインフラストラクチャシステム602および提供されるサービスが、関連するコミュニティ内の複数の組織によって共有されてもよい。上述のモデルのハイブリッドなどのさまざまな他のモデルも使用可能である。
【0076】
クライアントコンピューティングデバイス604、606、および608は異なる種類(図5に示すデバイス502、504、506および508など)でもよく、1つ以上のクライアントアプリケーションを動作可能でもよい。ユーザは、クラウドインフラストラクチャシステム602とやり取りするために、たとえば、クラウドインフラストラクチャシステム602によって提供されるサービスをリクエストするために、クライアントデバイスを用いてもよい。たとえば、ユーザは、本開示で説明されたユニバーサルアイデンティティ管理またはガバナンスを行うためにクライアントデバイスを用いてもよい。
【0077】
いくつかの実施形態では、ユニバーサルアイデンティティ管理またはガバナンスを提供するためにクラウドインフラストラクチャシステム602によって行われる処理は、ビッグデータ分析を含んでもよい。この分析は、データ内のさまざまな傾向、挙動、関係などの検出および視覚化を行うために大きなデータセットの使用、分析、および操作を含んでもよい。この分析は、可能であれば平行してデータの処理、およびデータを用いたシミュレーションなどを行う1つ以上のプロセッサによって行われてもよい。たとえば、ビッグデータ分析は、多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行うためにクラウドインフラストラクチャシステム602によって行われてもよい。この分析に用いられるデータは、構造化データ(たとえば、データベースに格納されたもしくは構造化モデルに従って構成されたデータ)および/または非構造化データ(たとえば、データブロブ(バイナリーラージオブジェクト))を含んでもよい。
【0078】
図6で実施形態に示すように、クラウドインフラストラクチャシステム602は、クラウドインフラストラクチャシステム602によって提供されるさまざまなクラウドサービスの提供を容易にするために用いられるインフラストラクチャリソース630を含んでもよい。インフラストラクチャリソース630はたとえば、処理リソース、記憶またはメモリリソース、およびネットワーキングリソースなどを含んでもよい。
【0079】
特定の他の実施形態では、異なる顧客のためにクラウドインフラストラクチャシステム602によって提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを容易にするために、リソースがリソースのセットまたはリソースモジュール(「ポッド」とも呼ばれる)に束ねられてもよい。各リソースモジュールすなわちポッドは、1つ以上の種類のリソースの事前に統合され最適化された組合わせを含んでもよい。特定の実施形態では、異なるポッドは、異なる種類のクラウドサービス用に事前にプロビジョニングされてもよい。たとえば、ポッドの第1のセットがデータベースサービス用にプロビジョニングされてもよく、ポッドの第1のセット内のポッドと異なるリソースの組合わせを含んでもよいポッドの第2のセットが、Javaサービス用にプロビジョニングされてもよい、などである。複数のサービス用に、サービスのプロビジョニングのために割当てられたリソースがサービス間で共有されてもよい。
【0080】
クラウドインフラストラクチャシステム602そのものは、クラウドインフラストラクチャシステム602の異なるコンポーネントによって共有され、かつ、クラウドインフラストラクチャシステム602によるサービスのプロビジョニングを容易にするサービス632を内部で用いてもよい。これらの内部で共用されるサービスは、これらに限定されないが、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業管理サービス、ウイルススキャンおよびホワイトリストサービス、高可用性バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、eメールサービス、通知サービス、およびファイル転送サービスなどを含んでもよい。
【0081】
クラウドインフラストラクチャシステム602は、複数のサブシステムを含んでもよい。これらのサブシステムは、ソフトウェア、またはハードウェア、またはこれらの組合わせで実現されてもよい。図6に示すように、サブシステムは、クラウドインフラストラクチャシステム602のユーザまたは顧客をクラウドインフラストラクチャシステム602とやり取り可能にするユーザインターフェースサブシステム612を含んでもよい。ユーザインターフェースサブシステム612は、ウェブインターフェース614、クラウドインフラストラクチャシステム602によって提供されるクラウドサービスが、宣伝され、顧客によって購入可能であるオンラインストアインターフェース616、および他のインターフェース618などのさまざまな異なるインターフェースを含んでもよい。たとえば、顧客はクライアントデバイスを用いて、インターフェース614、616、および618のうちの1つ以上を用いてクラウドインフラストラクチャシステム602によって提供される1つ以上のサービスをリクエストしてもよい(サービスリクエスト634)。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム602によって提供されるクラウドサービスをブラウズしてもよく、顧客がサブスクライブを希望する、クラウドインフラストラクチャシステム602によって提供される1つ以上のサービスのサブスクリプションを注文してもよい。サービスリクエストは、顧客および顧客がサブスクライブを希望する1つ以上のサービスを識別する情報を含んでもよい。たとえば、顧客は、クラウドインフラストラクチャシステム602によって提供されるユニバーサルアイデンティティ管理またはガバナンスのサブスクリプションを注文してもよい。注文の一部として、顧客は、複雑で時間的制約のある解決されるべきビジネスシナリオを識別する情報を提供してもよい。
【0082】
図6に示す実施形態などの特定の実施形態では、クラウドインフラストラクチャシステム602は、新しい注文を処理するように構成された注文管理サブシステム(OMS)620を含んでもよい。この処理の一部として、OMS620は、まだ作成されていない場合は顧客用にアカウントを作成し、リクエストされたサービスを顧客に提供するために顧客に請求するために用いられる、顧客からの請求および/または会計情報を受信し、顧客情報を確認し、確認すると、顧客のために注文を予約し、かつ、注文を準備してプロビジョニングするためにさまざまなワークフローを調整するように構成されてもよい。
【0083】
正しく確認されると、OMS620は、処理、メモリ、およびネットワーキングリソースを含む注文についてリソースをプロビジョニングするように構成された注文プロビジョニングサブシステム(OPS)624を呼出してもよい。プロビジョニングは、注文についてリソースを割当てること、および顧客の注文によってリクエストされたサービスを容易にするためにリソースを構成することを含んでもよい。リソースが注文およびプロビジョニングされるリソースの種類についてプロビジョニングされる態様は、顧客が注文したクラウドサービスの種類に応じて決まってもよい。たとえば、1つのワークフローに従って、OPS624は、リクエストされている特定のクラウドサービスを判断し、かつ、この特定のクラウドサービスについて事前に構成された複数のポッドを識別するように構成されてもよい。注文について割当てられたポッドの数は、リクエストされるサービスのサイズ/量/レベル/範囲に応じて決まってもよい。たとえば、割当てられるポッドの数は、サービスによってサポートされるユーザの数、およびサービスがリクエストされる期間などに基づいて判断されてもよい。割当てられたポッドはその後、リクエストされたサービスのプロビジョニングのために特定のリクエストしている顧客用にカスタマイズされてもよい。
【0084】
クラウドインフラストラクチャシステム602は、リクエストされたサービスが使用される準備が整ったときを示すために、リクエストしている顧客に対して応答または通知644を送ってもよい。いくつかの例では、顧客がリクエストされたサービスのメリットの使用および利用が開始可能になる情報(たとえば、リンク)が、顧客に送られてもよい。特定の実施形態では、ユニバーサルアイデンティティ管理またはガバナンスサービスをリクエストしている顧客について、応答は、解決されるべき複雑で時間的制約のあるビジネスシナリオのリクエストを含んでもよい。
【0085】
クラウドインフラストラクチャシステム602は、複数の顧客にサービスを提供してもよい。顧客ごとに、クラウドインフラストラクチャシステム602は、顧客から受信した1つ以上のサブスクリプションの注文に関連する情報の管理、注文に関連する顧客データの保持、およびリクエストされたサービスの顧客への提供を担う。また、クラウドインフラストラクチャシステム602は、サブスクライブされたサービスの顧客の使用に関する利用統計を収集してもよい。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などについて収集されてもよい。この使用情報は、顧客に請求するために用いられてもよい。請求はたとえば、月サイクルで行われてもよい。
【0086】
クラウドインフラストラクチャシステム602は、複数の顧客に平行してサービスを提供してもよい。クラウドインフラストラクチャシステム602は、可能であればプロプライエタリ情報を含む、これらの顧客のための情報を格納してもよい。特定の実施形態では、クラウドインフラストラクチャシステム602は、顧客情報を管理し、かつ、ある顧客に関連する情報が他の顧客によってアクセス可能とならないように管理された情報を分離するように構成されたアイデンティティ管理サブシステム(IMS)628を含む。IMS628は、情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力を管理するためのサービスといった、アイデンティティサービスなどのさまざまなセキュリティ関連サービスを提供するように構成されてもよい。
【0087】
図7は、特定の実施形態を実現するために用いられ得る例示的なコンピュータシステム700を示す図である。たとえば、いくつかの実施形態では、コンピュータシステム700は、ユニバーサルアイデンティティ管理またはガバナンス処理システム、アイデンティティ管理システム、ならびに上述のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現するために用いられてもよい。図7に示すように、コンピュータシステム700は、バスサブシステム702を介して複数の他のサブシステムと通信する処理サブシステム704を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット706、I/Oサブシステム708、ストレージサブシステム718、および通信サブシステム724を含んでもよい。ストレージサブシステム718は、記憶媒体722およびシステムメモリ710を含む非一時的なコンピュータ可読記憶媒体を含んでもよい。
【0088】
バスシステム702は、コンピュータシステム700のさまざまなコンポーネントおよびサブシステムに意図した通りに互いに通信させるためのメカニズムを提供する。バスサブシステム702は1つのバスとして模式的に示されているが、バスサブシステムの代替的な実施形態では、複数のバスが用いられてもよい。バスサブシステム702は、さまざまなバスアーキテクチャのうちのいずれかを用いたメモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含む複数の種類のバス構造のうちいずれかでもよい。たとえば、そのようなアーキテクチャは、IEEE P1386.1標準規格に準拠して製造されるMezzanineバスなどとして実現可能な、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスを含んでもよい。
【0089】
処理サブシステム704は、コンピュータシステム700の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含んでもよい。プロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。コンピュータシステム700の処理リソースは、1つ以上の処理ユニット732、734などに編成可能である。処理ユニットは、1つ以上のプロセッサ、同じもしくは異なるプロセッサからの1つ以上のコア、コアおよびプロセッサの組合わせ、またはコアおよびプロセッサの他の組合わせを含んでもよい。いくつかの実施形態では、処理サブシステム704は、グラフィックスプロセッサ、またはデジタルシグナルプロセッサ(DSP)など、1つ以上の専用コプロセッサを含んでもよい。いくつかの実施形態では、処理サブシステム704の処理ユニットの一部またはすべては、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)など、カスタム回路を使用して実現され得る。
【0090】
いくつかの実施形態では、処理サブシステム704内の処理ユニットは、システムメモリ710に、またはコンピュータ可読記憶媒体722に格納された命令を実行可能である。さまざまな実施形態では、処理ユニットは、さまざまなプログラムまたはコード命令の実行、および複数の同時に実行しているプログラムまたはプロセスの維持が可能である。いつでも、実行されるプログラムコードの一部またはすべては、システムメモリ710に、および/または、1つ以上の記憶装置を潜在的に含む、コンピュータ可読記憶媒体722に存在し得る。好適なプログラミングによって、処理サブシステム704は上述のさまざまな機能を提供可能である。コンピュータシステム700が1つ以上の仮想マシンを実行している例では、1つ以上の処理ユニットを各仮想マシンに割当ててもよい。
【0091】
特定の実施形態では、カスタマイズされた処理を実行するために、または、コンピュータシステム700によって実行される全体的な処理が加速するように、処理サブシステム704によって実行される処理のうちのいくつかの負荷を軽減させるために、処理加速ユニット706が任意に設けられてもよい。
【0092】
I/Oサブシステム708は、コンピュータシステム700に情報を入力するための、および/または、コンピュータシステム700からまたはこれを介して情報を出力するためのデバイスおよびメカニズムを含んでもよい。一般に、入力装置という用語の使用は、コンピュータシステム700に情報を入力するためのあらゆる種類のデバイスおよびメカニズムを含むと意図されている。ユーザインタフェース入力装置は、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、タッチパッドまたはディスプレイに組み込まれたタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、ボイスコマンド認識システムを有する音声入力装置、マイクロホン、および他の種類の入力装置を含んでもよい。また、ユーザインタフェース入力装置は、ユーザが入力装置を制御するおよび入力装置とやり取りすることを可能にするMicrosoft Kinect(登録商標)モーションセンサなどの動き検知デバイスおよび/またはジェスチャ認識デバイス、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャコおよび音声コマンドを使用した入力を受信するためのインタフェースを提供するデバイスを含んでもよい。また、ユーザインタフェース入力装置は、ユーザからの目のアクティビティ(たとえば、写真を撮影しながらおよび/またはメニュー選択を行いながら「まばたきすること」)を検出し、アイジェスチャを入力装置(たとえば、Google Glass(登録商標))への入力として変形させるGoogle Glass(登録商標)まばたき検出装置などのアイジェスチャ認識デバイスを含んでもよい。これに加えて、ユーザインタフェース入力装置は、ユーザが、ボイスコマンドを通して、音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやり取りすることを可能にする音声認識検知デバイスを含んでもよい。
【0093】
ユーザインタフェース入力装置の他の例に、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレーヤ、ウェブカム、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡装置などのオーディオ/ビジュアル装置が挙げられるが、これらに限定されない。これに加えて、ユーザインタフェース入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴イメージング、陽電子放出断層撮影、および超音波検査デバイスなど、医用画像入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、MIDIキーボード、デジタル楽器などの音声入力装置を含んでもよい。
【0094】
一般に、出力装置という用語の使用は、コンピュータシステム700からの情報をユーザまたは他のコンピュータに出力するためのすべての可能な種類の装置およびメカニズムを含むと意図される。ユーザインターフェース出力装置は、表示サブシステム、インジケーターライト、または音声出力装置といった非ビジュアル装置などを含んでもよい。表示サブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル表示装置、投影装置、およびタッチスクリーンなどでもよい。たとえば、ユーザインタフェース出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムなど、視覚的に文字、図形、および音声/映像情報を伝えるさまざまな表示装置を含んでもよいが、これらに限定されない。
【0095】
ストレージサブシステム718は、コンピュータシステム700が使用する情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム718は、いくつかの実施形態の機能を提供する基本プログラミング構造およびデータ構造を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。ストレージサブシステム718は、処理サブシステム704によって実行されると上述の機能を提供するソフトウェア(たとえば、プログラム、コードモジュール、命令)を格納してもよい。ソフトウェアは、処理サブシステム704の1つ以上の処理ユニットによって実行されてもよい。また、ストレージサブシステム718は、本開示の教示に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【0096】
ストレージサブシステム718は、揮発性および不揮発性メモリ素子を含む、1つ以上の非一時的なメモリ素子を含んでもよい。図7に示すように、ストレージサブシステム718は、システムメモリ710と、コンピュータ可読記憶媒体722とを備える。システムメモリ710は、プログラムを実行中に命令およびデータを格納するための揮発性のメインランダムアクセスメモリ(RAM)、および、固定の命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリを含む、複数のメモリを含んでもよい。いくつかの実現例では、起動中などに、コンピュータシステム700内の要素間で情報を転送することを助ける基本ルーチンを含むベーシックインプットアウトプットシステム(BIOS)は典型的に、ROMに格納されてもよい。RAMは典型的に、処理サブシステム704が現在操作および実行していているデータおよび/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ710は、スタティックランダムアクセスメモリ(SRAM)およびダイナミックランダムアクセスメモリ(DRAM)など、複数の異なる種類のメモリを含んでもよい。
【0097】
一例として、限定ではないが、図7に示すように、システムメモリ710は、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)などのさまざまなアプリケーションを含み得る、実行されるアプリケーションプログラム712と、プログラムデータ714と、オペレーティングシステム716とをロードしてもよい。一例として、オペレーティングシステム716は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)もしくはUNIXのようなオペレーティングシステム(いろいろなGNU/LinuxオペレーティングシステムおよびGoogle Chrome(登録商標)OSなどを含むが、これらに限定されない)、および/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、およびPalm(登録商標)OSオペレーティングシステム、およびその他を含んでもよい。
【0098】
コンピュータ可読記憶媒体722は、いくつかの実施形態の機能を提供するプログラミング構造およびデータ構造を格納してもよい。コンピュータ可読媒体722は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータシステム700のための他のデータの格納を提供してもよい。処理サブシステム704によって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム718に格納されてもよい。一例として、コンピュータ可読記憶媒体722は、ハードディスクドライブなどの不揮発性メモリ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、または他の光学媒体を含んでもよい。コンピュータ可読記憶媒体722は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、およびデジタルビデオテープなどを含んでもよいが、これらに限定されない。また、コンピュータ可読記憶媒体722は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、およびソリッドステートROMなど、不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、動的RAM、静的RAMなど、揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMのSSDとフラッシュメモリベースのSSDとの組合せを用いるハイブリッドSSDを含んでもよい。
【0099】
特定の実施形態では、また、ストレージサブシステム718は、コンピュータ可読記憶媒体722にさらに接続され得るコンピュータ可読記憶媒体リーダ720を含んでもよい。読取り装置720は、ディスク、フラッシュドライブなどのメモリデバイスからのデータを受信し、読取るように構成されてもよい。
【0100】
特定の実施形態では、コンピュータシステム700は、処理およびメモリリソースの可視化を含むがこれに限定されない可視化技術をサポートしてもよい。たとえば、コンピュータシステム700は、1つ以上の仮想マシンを実行するためにサポートを提供してもよい。特定の実施形態では、コンピュータシステム700は、仮想マシンの構成および管理を容易にしたハイパーバイザなどのプログラムを実行してもよい。各仮想マシンには、メモリ、コンピュータ(たとえば、プロセッサ、コア)、I/O、およびネットワーキングリソースが割り当てられてもよい。各仮想マシンは通常、他の仮想マシンとは独立して実行される。仮想マシンは典型的に、それ自体のオペレーティングシステムを実行し、このオペレーティングシステムは、コンピュータシステム700が実行する他の仮想マシンによって実行されるオペレーティングシステムと同じでもよい、または異なってもよい。したがって、複数のオペレーティングシステムは、コンピュータシステム700によって同時に実行される可能性があってもよい。
【0101】
通信サブシステム724は、他のコンピュータシステムおよびネットワークへのインタフェースを提供する。通信サブシステム724は、コンピュータシステム700からデータを受信し、コンピュータシステム700から他のシステムにデータを送信するためのインタフェースとして機能する。たとえば、通信サブシステム724は、コンピュータシステム700が、クライアントデバイスに対する情報の送受信を行うために、インターネットを介して1つ以上のクライアントコンピューティングデバイスへの通信チャネルを確立することを可能にしてもよい。たとえば、通信サブシステムは、多種多様なアプリケーションのユニバーサルアイデンティティ管理またはガバナンスを行うためのスキーマを取得するために用いられてもよい。
【0102】
通信サブシステム724は、有線通信プロトコルおよび/または無線通信プロトコルの両方をサポートしてもよい。たとえば、特定の実施形態では、通信サブシステム724は、ワイヤレス音声ネットワークおよび/またはデータネットワークにアクセスするための無線周波数(RF)送受信コンポーネント(たとえば、携帯電話技術、3G、4G、もしくはEDGE(Enhanced data rates for global evolution)などの次世代データネットワークテクノロジー、WiFi(IEEE 802.XXファミリー標準規格)、他のモバイル通信技術、またはそれらの任意の組合せを使用する)、全地球測位システム(GPS)受信コンポーネント、および/または他のコンポーネントを含んでもよい。いくつかの実施形態では、通信サブシステム724は、ワイヤレスインタフェースに加えて、またはワイヤレスインタフェースの代わりに、有線ネットワーク接続性(たとえば、Ethernet)を提供できる。
【0103】
通信サブシステム724は、さまざまな形式でデータを送受信できる。たとえば、いくつかの実施形態では、通信サブシステム724は、他の形式に加えて、入力通信を、構造化および/または非構造化データフィード726、イベントストリーム728、およびイベント更新730などの形式で受信してもよい。たとえば、通信サブシステム724は、Twitter(登録商標)フィード、Facebook(登録商標)の更新、リッチサイトサマリ(RSS)フィードなどのwebフィード、および/または1つ以上のサードパーティ情報ソースからのリアルタイム更新など、ソーシャルメディアネットワークおよび/または他の通信サービスのユーザから、データフィード726をリアルタイムで受信(または送信)するように構成されてもよい。
【0104】
特定の実施形態では、通信サブシステム724は、連続したデータストリームの形式でデータを受信するように構成されてもよく、連続したデータストリームは、本質的にはっきりとした終端がない、連続または無限の場合もある、リアルタイムイベントおよび/またはイベント更新730のイベントストリーム728を含んでもよい。連続データを作成するアプリケーションとして、たとえば、センサデータアプリケーション、金融ティッカー、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量監視などが挙げられてもよい。
【0105】
また、通信サブシステム724は、コンピュータシステム700から他のコンピュータシステムまたはネットワークへデータを伝達するように構成されてもよい。データは、構造化および/または非構造化データフィード726、イベントストリーム728、およびイベント更新730などのさまざまな異なる形式で、コンピュータシステム700に連結された1つ以上のストリーミングデータソースコンピュータと通信可能な1つ以上のデータベースに対して伝達されてもよい。
【0106】
コンピュータシステム700は、ハンドヘルドポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまな種類のうちの1つであり得る。コンピュータおよびネットワークの絶え間なく変化する性質によって、図7に示すコンピュータシステム700の説明は、単に特定の例として意図される。図7に示すシステムよりも多いまたは少ないコンポーネントを有する多くの他の構成も可能である。本明細書で提供された開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他の手段および/または方法を理解するであろう。
【0107】
具体的な実施形態について上述したが、さまざまな変形例、変更例、代替的な構造、および均等物が可能である。実施形態は特定の具体的なデータ処理環境内のオペレーションに限定されないが、複数のデータ処理環境内で自由に動作できる。くわえて、特定の実施形態について特定の一連のトランザクションおよびステップを用いて説明したが、これが制限的であることを意図していないのは当業者にとって明らかである。いくつかのフローチャートはオペレーションを連続したプロセスとして説明したが、オペレーションの多くは、平行してまたは同時に行うことができる。くわえて、オペレーションの順序は並べ替えてもよい。プロセスは、図に含まれない追加のステップを有してもよい。上述の実施形態のさまざまな特徴および側面が、個別にまたは共同で用いられてもよい。
【0108】
さらに、ハードウェアとソフトウェアとの特定の組合せを用いて本開示の実施形態を説明したが、ハードウェアとソフトウェアとの他の組合せも可能であることを認識されたい。特定の実施形態は、ハードウェアのみで、ソフトウェアのみで、またはそれらの組合わせを用いて実現されてもよい。本明細書で説明されたさまざまなプロセスは、任意の組合せで、同じプロセッサまたは異なるプロセッサ上で実現可能である。
【0109】
デバイス、システム、コンポーネントまたはモジュールは特定のオペレーションまたは機能を行うように構成されると説明されているが、そのような構成は、たとえば、電子回路をそのオペレーションを行うように設計することによって、プログラマブル電子回路(マイクロプロセッサなど)をそのオペレーションを行うようにプログラムすることによって、たとえば、非一時的メモリ媒体上に格納されたコードもしくは命令を実行するようにプログラムされたコンピュータ命令またはコード、プロセッサまたはコアを実行することによって、またはそれらの任意の組合せによって、達成できる。プロセスは、プロセス間通信のための従来技術を含む、さまざまな技術を用いて通信できるが、これらに限定されず、プロセスの異なるペアは異なる技術を使用してもよく、プロセスの同じペアは異なる技術を異なる時間に使用してもよい。
【0110】
実施形態の完全な理解を提供するために、本開示において具体的な詳細が与えられている。しかしながら、実施形態は、これらの具体的な詳細がなくても実施可能である。たとえば、公知の回路、プロセス、アルゴリズム、構造、および技術が、実施形態を曖昧にすることを避けるために、不必要に詳細に示されていない。本明細書は、実施形態の例を提供するのみであって、他の実施形態の範囲、適用可能性、または構成を制限するように意図されていない。そうではなく、実施形態の前述の説明は、さまざまな実施形態を実現するための実現説明を当業者に提供する。要素の機能および配列のさまざまな変更が可能である。
【0111】
したがって、明細書および図面は、限定的な意味ではなく例示的な意味であるとみなされるべきである。しかしながら、添付の特許請求の範囲に記載のより広義の趣旨および範囲から逸脱することなく、追加、減算、削除、および他の変更ならびに変形がそれらに対してなされてもよいことは明白であろう。したがって、具体的な実施形態を説明したが、これらは、限定的であると意図されたものではない。さまざまな変更例および均等物は、添付の特許請求の範囲内である。
図1
図2
図3
図4
図5
図6
図7