異種アプリケーションのための統一権限付与
企業システムは、バックエンドアプリケーションに存在する実行可能な機能を分離することができ、分離は、異なるレベルの粒度にあってよい。アプリケーションの分離された機能は、メタデータオブジェクトの形式でカタログ内に登録されることができる。実行可能な機能が登録されると、各粒度の機能オブジェクトの権限付与情報が権限付与情報と関連付けられることができる。このようにして、アプリケーションのサービスの権限付与は、統一された方式で、機能(またはオブジェクト)単位に行われることができる。
【発明の詳細な説明】
【背景技術】
【0001】
組織は、日常業務を実施するために、コンピューティング環境内で、永続的データを使用する汎用データ中心アプリケーションなどの、多くのアプリケーションを使用することができる。例えば、複数のタイプの営業(LOB:line of business)システム(例えば、事業必須データベースアプリケーション)が、開発アプリケーションおよび「独自作成(home−grown)」アプリケーションなどと共に実施されることができる。しかし、1つまたは複数のユーザによるこれらの異種アプリケーションの各々へのアクセスは、フォーマット、言語および/またはセマンティクスを異にする異なる情報による対話、異なるログオンおよび権限付与方法による対話、異なる接続要件による対話、ならびにアプリケーション毎、ユーザ毎に別々の動作スレッドによる対話などを必要とすることがある。
【0002】
【特許文献1】米国特許出願第11/191771号明細書
【特許文献2】米国特許第11/191771号
【発明の開示】
【課題を解決するための手段】
【0003】
以下の説明は、読者に基本的な理解を提供するために、本開示の簡略化された要約を提示する。この要約は、本開示の広範な概説ではなく、本発明の主要/必須要素を識別するものでも、または本発明の範囲を描写するものでもない。その唯一の目的は、後で提示されるより詳細な説明に対する前置きとして、本明細書で開示されるいくつかの概念を簡略化された形式で提示することである。
【0004】
複数のアプリケーションでのユーザエクスペリエンスを統一するため、ユーザと複数のアプリケーションの間の仲介者として機能するデータ格納サービスシステムが実施されることができ、データ格納サービスシステムは、ユーザには簡単かつ統一されたインターフェースを提供し、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成する。親出願である2005年7月28日に出願された特許文献1では、指定されたサービスとどのように対話するかについてのアプリケーション固有の知識をもつことをユーザに求めずに、共通点のない異種のデータストア関連サービスをユーザに提示する、データ格納サービスシステムについて説明している。統一された対話をユーザに提供するため、データストアシステムは、例えば、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどといったサービス対話詳細などのメタデータストア情報を一緒に維持することができる。データ格納サービスシステムは、サービスへのアクセスを求めるユーザ要求を受け取り、関連メタデータにアクセスし、メタデータを使用して、ユーザの簡単で汎用的な統一化かつ/または共通要求をサービスに適した通信に変換する、アプリケーションプログラムインターフェースを提供することができる。
【0005】
一般に、アプリケーションへの接続のプレファブリケーション(prefabrication)およびポーリングを可能にするため、ならびに個人ユーザ情報のパススルー(pass through)を回避するため、アプリケーションは、パフォーマンスを理由として、「スーパーユーザ」のコンテキスト内で、例えば、すべての利用可能なデータへのアクセス権を有するアカウントのコンテキスト内でアクセスされることができる。この方式では、1つまたは複数(例えば、x)の「スーパーユーザ」接続が、同時にオープン状態で保持されて(これは実際のユーザログオンに先立って行われてよい)、ユーザ要求毎に接続のクローズおよび再確立を必要とせずに、xの接続を用いて、1つまたは複数(x)の一意エンドユーザに同時にサービスすることができる。しかし、スーパーユーザアカウントの実施は、個人セキュリティと対立する。具体的には、すべてのデータが匿名で効果的にアクセスされる場合、例えば、アプリケーションへのすべての要求が「スーパーユーザ」アカウントから来る場合、どのユーザがどのデータにアクセスするかを個人許可に基づいて調整することは可能でない。この問題を軽減するため、多くのアプリケーションは、誰がシステムに保存されたどのデータへのアクセス権を有するかを管理者が指定することを可能にする、独自の権限付与モジュールを提供する。しかし、これは、スーパーユーザとしてではなく、特定のエンドユーザとしての、アプリケーションへの語り掛けを必要とする。このソリューションは、スーパーユーザアカウントによって達成されるパフォーマンス向上を妨げる。例えば、ユーザ毎の権限付与情報の通信は、保護される必要があることがあり、権限付与要求パススルーは、サービスとの通信の量および時間を増大させる。加えて、各要求ユーザは個々に権限付与されるので、サービスを求める各要求は、別個の処理スレッドで実行されることがあり、このことは、サービスおよび利用可能な通信接続に過剰な負荷を掛けることがある。また、各アプリケーションは、独自のモデルを有し、このモデルは、ユーザおよび異なるアプリケーション毎に別個の権限付与を必要とし、ユーザ毎に証明書および/またはアカウントの複数の組が設定および維持されることを必要とし、このことは、環境の個人別および運営上の管理を増大させる。さらに、各アプリケーションまたはサービスは、情報を特定の粒度で提示することができる。例えば、SQLアプリケーションは、テーブルレベルでの情報へのアクセスを提示することができるのみで、(以下でさらに説明される)より高いまたは低いレベルでは提示できない。同様に、いくつかのアプリケーションのサービスに対するアクセスは、全体的意味で提供されることがあり、例えば、どのような権利も、アプリケーションのサービスの任意の部分にアクセスできる全体的権利である。これは、識別ユーザに対して許可されたアクセスの粒度を制限することがある。
【0006】
スケーラブルなアカウントアクセスおよびセキュリティ目標の結果として、従来のアプリケーション環境は、個々のアプリケーションのセキュリティモデルを「オフにして」、アプリケーションの「直前で」カスタムコードを書くことができる。この独自作成のコードは、特定のアプリケーションにおけるデータをカタログし、各ユーザに対する許可を綿密に計画する責任を負うことができる。この方式では、エンドユーザは、許可をチェックする中間レイヤと対話することができ、許可が得られた場合、カスタムコードは、スーパーユーザを装って、アプリケーションサービスを呼び出し、取り出されたデータをエンドユーザに転送する。これは、スケーラビリティおよびセキュリティを達成するが、バックエンドシステム毎に、中間レイヤにおける手作りのカスタムコーディングという代償を払っている。さらに、カスタムコーディングは、所望の個々の許可の類似性などにかかわらず、異なるバックエンドアプリケーション毎に個別に達成されなければならない。
【0007】
カスタムコーディングは、バックエンドシステムに保存されるデータ、およびシステムをコールするのに使用されるAPIについての詳しい知識を必要とする。例えば、各アプリケーションは、独自の権限付与モデルを有し、ユーザに与えられる許可を独自の方法で保存してよい。さらに、各アプリケーションは、ユーザの組を異なる方式で識別してよい。例えば、MicrosoftのActive Directoryに基づいたシステムは、ある人をRedmond/personとして識別することができ、オープンソースのLDAP Directoryに基づいた別のシステムは、同じ人をO=Redmond;CN=personとして識別することができる。したがって、これらのユーザが同じユーザであることを見分ける方法が存在しないこともある。その場合、管理者は、多くのアプリケーションに散らばった様々な権限付与モデルおよび許可を学ばなければならない。加えて、各アプリケーションは独自の権限付与技法および/または証明書を有してよいので、各ユーザの権限付与は、ユーザによってアクセスされるすべてのアプリケーションについて繰り返されなければならない。このように、必要とされるカスタムコーディングは、ソフトウェアの保守、コスト、および開発時間などを増大させることがある。
【0008】
親出願のデータ格納サービスシステムは、中間層としてサービスにアクセスするので、各バックエンドアプリケーションのデータサービスをカタログし、ユーザ許可をマップするカスタムコードの保守コスト、開発時間などのため、要求ユーザの権限付与は難しいことがある。ユーザのための統一対話を拡張し、基礎をなすアプリケーションのセマンティクスの詳細をユーザが理解する必要を減らし、アプリケーションのサービスをユーザ定義の粒度で提示し、管理コストを減らし、かつ/またはその他の利点のために、データ格納サービスシステムは、ユーザによって要求されるサービスおよび要求ユーザに関連付けられた権限付与情報に基づいて、ユーザに権限付与することができる。権限付与情報は、要求されたサービス、サービスによって提供されるデータタイプ、サービスのデータタイプ上の個々のメソッド、サーバのデータタイプのメソッドのリターン値の特定のサブ成分、および上記のいずれかのオブジェクトのインスタンス化などを、権限付与されたユーザのユーザ識別子および/または権限付与されたユーザの1つまたは複数の権利もしくは許可された行為と関連付けることなどによって、メタデータデータストアに保存されることができる。別個の(より高い特権の)権利が、任意のオブジェクト上で(管理される権利と類似した)権利を設定/変更することができる人々の組を管理するために使用されてよい。いくつかのケースでは、親オブジェクトのセキュリティ特徴は、要求時に、または他の決められた方式で、子オブジェクトに自動的に伝搬(propagate)されてよい。セキュリティ特徴は、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。ユーザが権限付与されている場合、データ格納サービスシステムは、決められた権限付与および許可された権利に従って、サービスを通してデータ格納サービスシステム権限付与証明書を使用する、単一のスーパーユーザアカウントを介してサービスにアクセスすることができる。
【0009】
付随する特徴の多くは、添付の図面と関連させて考察される以下の詳細な説明を参照することによってよりよく理解されるので、より容易に評価されよう。
【0010】
本発明の説明は、添付の図面に照らして読まれる以下の詳細な説明からよりよく理解されよう。
【発明を実施するための最良の形態】
【0011】
添付の図面中の同様の部分を示すために、同様の参照番号が使用される。
【0012】
添付の図面と関連させて以下で提供される詳細な説明は、本発明の例の説明として意図されており、本発明の例が構成または利用され得る唯一の形態を表すことは意図されていない。説明は、例の機能および例を構成し動作させるステップのシーケンスを説明する。しかし、同じまたは等価の機能およびシーケンスが、異なる例によって達成されてもよい。
【0013】
本発明の例は、ネットワーク接続を介してアクセス可能な複数の営業アプリケーションを有する企業環境で実施されるものとして本明細書では説明および例示されるが、説明される企業環境は、限定ではなく、一例として提供されており、任意の数およびタイプのサービスが、以下でさらに説明される任意の数の特徴および/または特徴の組合せで提供されてよいことを理解されたい。
【0014】
図1および以下の説明は、企業環境内のデータ格納サービスシステムについての簡潔な全般的説明を提供することを意図している。図1に示されるように、1つまたは複数のユーザデバイス120は、雲によって表されるネットワーク133を介して企業システム130に接続してよく、接続135を介して企業システムに直接的に接続してよく、企業システムの一部としてよく、または任意の適切な方式で企業システムにアクセスしてよい。
【0015】
ネットワーク133は、ルータ、ゲートウェイ、およびハブなどの、多くのよく知られた構成要素を含んでよく、ユーザデバイス120が有線および/または無線媒体を介して通信することを可能にする。ネットワーク133は、インターネットなどのワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)を含んでよいが、その他のタイプのWAN、LAN、無線ネットワーク、電話回線、シリアルおよび/またはパレラルケーブル、同軸ケーブル、ならびにそれらの任意の組合せを含む、適切なプロトコルを使用する様々なその他の通信システムおよび/または方法が使用されてもよい。
【0016】
各ユーザデバイス120は、企業システム130から入手可能なサービスへのアクセスを提供するために、適切なコンピューティング環境を提供することができる。図1のユーザデバイス120および企業システム130、ならびに以下の説明は、データストアシステムの全部または一部が実施され得る適切なコンピューティング環境についての簡潔な全般的説明を提供することを意図している。
【0017】
図1のユーザデバイス120および企業システム130の動作環境は、適切な動作環境の一例に過ぎず、動作環境の使用または機能の範囲に関するどのような限定を示唆することも意図されていない。本明細書で説明されるユーザインターフェース編集アプリケーションと共に使用するのに適し得るその他のよく知られたコンピューティングシステム、環境および/または構成は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能消費者家電、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを、それらに限定せずに含む。
【0018】
図1を参照すると、企業システム130へのユーザアクセスを実施するための例示的なシステムは、ユーザコンピューティングデバイス120などのユーザデバイスを含む。その最も基本的な構成では、ユーザデバイス120は一般に、少なくとも1つの処理ユニット102およびメモリ104を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図1においては、ライン106によって示されている。加えて、デバイス120は、追加の特徴および/または機能を有してもよい。例えば、デバイス120は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ(例えば、リムーバブルおよび/またはリムーバブルでない)を含んでもよい。そのような追加のストレージは、図1においては、リムーバブルストレージ108およびリムーバブルでないストレージ110によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法および技術で実施される、揮発性および不揮発性、リムーバブルおよびリムーバブルでない媒体を含む。メモリ104、リムーバブルストレージ108、およびリムーバブルでないストレージ110はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を保存するのに使用され、デバイス120によってアクセスされることができるその他の任意の媒体を、それらに限定せずに含む。そのようなコンピュータ記憶媒体はどれも、デバイス120の部分であってよい。
【0019】
デバイス120は、デバイス120がネットワーク133を介してその他のコンピューティングデバイスなどのその他のデバイスと通信することを可能にする通信接続112も含むことができる。通信接続112は、通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波などの変調データ信号またはその他の転送機構に具現し、任意の情報配送媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するための方式で設定または変更された特徴の1つまたは複数を有する信号を意味する。限定せずに、例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、無線周波、赤外線、およびその他の無線媒体などの無線媒体とを含む。本明細書で使用されるコンピュータ可読命令という用語は、記憶媒体および通信媒体を共に含む。
【0020】
デバイス120は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および/またはその他の入力デバイスなどの入力デバイス114を有してもよい。1つまたは複数のディスプレイ、スピーカ、プリンタ、および/またはその他の任意の出力デバイスなどの出力デバイス116も含まれてよい。
【0021】
一例では、ユーザデバイスは、通信接続112を使用して、ネットワーク133を介して企業システム130にアクセスし、企業システムによってサポートされる複数の企業アプリケーション150の1つまたは複数のサービスを要求することができる。複数の企業アプリケーション150をサポートするため、企業システム130は、ユーザデバイス120を参照して上で説明されたものと同様の、または異なるコンピューティングデバイスとすることができる。
【0022】
図1に示されるように、企業システム130は、企業アプリケーション150から入手可能なサービスを提供するために、適切なコンピューティング環境を提供することができる。必須ではないが、企業システムのデータ格納サービスシステム160およびその他の構成要素は、1つまたは複数のコンピュータまたはその他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的文脈で説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラムモジュールの機能は、様々な環境で望ましいように組み合わせてよく、または分散してもよい。
【0023】
図1を参照すると、企業システム130の企業アプリケーション150からサービスを提供するための例示的なシステムは、コンピューティングデバイス130などのコンピューティングデバイスを含む。その最も基本的な構成では、コンピューティングデバイス130は一般に、少なくとも1つの処理ユニット132およびメモリ134を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ134は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図1においては、ライン136によって示されている。加えて、デバイス130は、追加の特徴および/または機能を有してもよい。例えば、デバイス130は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ(例えば、リムーバブルおよび/またはリムーバブルでない)を含んでもよい。そのような追加のストレージは、図1においては、ストレージ138によって示されている。デバイス130は、デバイス130がネットワーク133を介して、その他のコンピューティングデバイスなど、その他のデバイスと通信することを可能にする通信接続142を含むこともできる。
【0024】
デバイス130は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および/またはその他の入力デバイスなどの入力デバイス144を有してもよい。1つまたは複数のディスプレイ、スピーカ、プリンタ、および/またはその他の任意の出力デバイスなどの出力デバイス146も含まれてよい。
【0025】
当業者であれば、プログラム命令を保存するために利用される記憶装置がネットワーク上に分散され得ることを理解されよう。例えば、リモートコンピュータは、ソフトウェアとして記述されるプロセスの一例を保存することができる。ローカルまたはターミナルコンピュータは、企業システム103を介したものとすることができる、リモートコンピュータへのアクセスを行うことができ、プログラムを実行するためにソフトウェアの一部または全部をダウンロードすることができる。代替として、ローカルコンピュータは、必要に応じてソフトウェアの一部をダウンロードすることができ、またはソフトウェア命令のいくらかをローカル端末で実行し、いくらかをリモートコンピュータ(またはコンピュータネットワーク)で実行することによって、分散的に処理することができる。当業者であれば、当業者に知られた従来の技法を利用することによって、ソフトウェア命令の全部または一部が、DSPまたはプログラマブル論理アレイなどの専用回路によって実施されてよいことも理解されよう。
【0026】
ユーザデバイス120は、複数のアプリケーション150の1つまたは複数のサービスにアクセスするために企業システム130と対話することができ、複数のアプリケーションは、メモリ134、ストレージ138に存在してよく、または通信接続などを介して企業システム130によってリモートにアクセスされてもよい。図1は企業システム130のメモリ150に存在するとしてサービスアプリケーション150を示しているが、アプリケーション150の1つまたは複数が別個のメモリに存在してよいこと、かつ/または通信接続などの接続を介してアクセス可能とすることができる別個のコンピューティングデバイスに存在してよいことを理解されたい。
【0027】
アプリケーション150は、ユーザデバイス120に任意の適切なサービスを提供することができる。アプリケーション例は、SAPまたはSIEBELによって提供されるような営業システムなどの企業アプリケーションを含むことができる。その他の例は、企業の「独自作成」アプリケーション、およびワールドワイドウェブサイトなどのインターネットサービスなどを含むことができる。
【0028】
企業システムとの対話は、図1に示されるポータル170を介したものであってよい。ポータルは、企業システムへの通路として機能することができ、かつ/または企業システムとの対話を円滑化することができる。適切なポータルの一例は、ワシントン州レッドモンドのMicrosoft Corp.から入手可能なSharePoint System(商標)を含むことができる。ポータル170を介したユーザ要求に応答して、プロセッサ132は、1つもしくは複数のアプリケーション150にアクセスし、かつ/または1つもしくは複数のアプリケーション150を実行して、ユーザデバイス120が、企業システムのメモリ134もしくはストレージ138などに保存され得る、またはデータ格納サービスシステム160によってリモートにアクセスされ得る、データにアクセスし、またはメソッドを実行することを可能にすることができる。
【0029】
ユーザデバイス120は、所望のサービスにアクセスするために、所望のアプリケーションを直接実行することができる。しかし、図1に示されるように、企業システム130は、ユーザデバイス120と1つまたは複数のアプリケーション150の間のインターフェースとしてデータ格納サービスシステム160を提供することができる。この方式では、データ格納サービスシステムは、ユーザと複数のアプリケーションの間の仲介者として機能することによって、複数のアプリケーション150でのユーザエクスペリエンスを統一して、ユーザには簡単かつ統一されたインターフェースを提供することができ、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成することができる。
【0030】
任意の適切なデータ格納サービスシステム160が提供されてよい。1つの適切なデータ格納サービスシステムが、2005年7月28日に出願された特許文献2でさらに説明されており、本明細書では明瞭にするために簡潔に説明される。統一された対話をユーザに提供するため、データ格納サービスシステム160は、メタデータストア180を用いてサービス対話詳細を維持するために、サービスシステムモジュール190を含むことができる。データ格納サービスシステム160は、サービスへのアクセスを求めるユーザ要求162を受け取り、関連メタデータストア180にアクセスし、メタデータを使用して、ユーザの簡単な(おそらくは統一された)要求162を、アプリケーション150の特定の要求されたサービスに適した通信164に変換する、アプリケーションプログラムインターフェースを提供することができる。
【0031】
データストア180は、利用可能アプリケーション、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどの表示を提供することができる。
【0032】
利用可能なアプリケーション、サービス、およびデータなどは、特定のタイプのオブジェクトとして表されることができる。例えば、システムオブジェクトにアクセスする要求は、メタデータストアにおいて関連付けられるアプリケーションにアクセスする要求を表すことができる。アプリケーション150の1つなどのアプリケーションは、永続的かつ/または一時的データを使用して実施される計算ロジックの集まりとして表されることができる。別の例では、エンティティオブジェクトにアクセスする要求は、1つまたは複数のアプリケーション150のサービスを介したものとすることができる、関連フィールドまたはデータおよびメソッドまたはロジック定義の集まりにアクセスする要求を表すことができる。別の例では、メソッドオブジェクトにアクセスする要求は、アプリケーションプログラムインターフェースに関連付けられたデータ、またはその他の任意の適切なメソッドにアクセスする要求を表すことができる。別の例では、パラメータにアクセスする要求は、メソッドまたはシステムに関連付けられた単一フィールドまたはデータにアクセスする要求を表すことができる。別の例では、タイプ記述子オブジェクトにアクセスする要求は、特定のシステムに関連する特定のタイプまたはカラム区切り情報内の特定のカラムのすべてのデータなど、特定のタイプのすべてのデータにアクセスする要求を表すことができる。
【0033】
メタデータストア180の一例が、図2のテーブル200に示されている。メタデータストアでは、ユーザが利用可能なサービスを表すオブジェクト表示は、識別情報およびその他の任意の情報に関連付けられることができ、これらの情報は、ユーザからの統一された簡単な要求162をアプリケーション150によって要求されるフォーマットをとる複雑なコール164に変換するために、サービスシステムモジュール190によって使用されることができる。
【0034】
図2に示されるように、メタデータストア180は、システム識別子202をシステム記述子206および/またはその他の任意の適切な情報の1つまたは複数と関連付ける。システム識別子202は、所望システムの任意の適切な識別子であってよい。システムは、アプリケーション150の全体アプリケーションであってよく、または1つまたは複数のアプリケーション150の特定のサービスまたは機能であってよい。システム記述子206は、アプリケーション150のうちの関連アプリケーションのタイプおよび/もしくは汎用機能、目的、または名前についての任意の適切な記述とすることができる。例えば、システムは、SAPおよびSiebelなどのLOBまたはその他のアプリケーションのタイプを識別するシステム記述子に関連付けられた一意の識別子とすることができる。
【0035】
図2に示されるように、メタデータストア180は、システムインスタンス識別子203を、接続情報204、システム識別子202、およびその他の任意の適切な情報の1つまたは複数に関連付けることができる。システム識別子によって識別されるシステムは、接続情報204がシステムインスタンス識別子203およびシステム識別子202に関連付けられるときにインスタンス化されてよい。例えばSAPなどの、単一のシステム識別子によって識別される単一のシステムは、例えば異なる接続を介してアクセス可能な複数のバージョンなどの複数のインスタンスを企業システムにわたって有してよく、または異なる接続を介してアクセス可能な同じシステムを有してよいことを理解されたい。この方式では、各システム識別子は、0以上のシステムインスタンス識別子に関連付けられることができる。接続情報204は、データ格納サービスシステムが、ネットワークロケーション、ホストサーバ名、ポート番号、データ格納サービスシステム証明書、およびシステムにどのように接続するかに関する情報など、関連システムインスタンスと通信および/または対話することを可能にする任意の適切な接続情報であってよい。データ格納サービスシステム証明書は、データ格納サービスシステムが関連システムにアクセスするための認証および/または権限付与を含むことができる。本明細書で使用される場合、認証は、要求デバイスまたはユーザの識別を意味し、権限付与は、要求ユーザまたはデバイスが要求されたサービスにアクセスする許可または権利を有することの確認を意味する。インスタンス化の表示または説明は、接続情報および/またはシステム記述子に含まれることができる。
【0036】
図2のテーブル200に示されるように、メタデータストア180は、エンティティ識別子212を、エンティティタイプ記述子216およびシステム識別子202などの1つまたは複数に関連付けることができる。エンティティ識別子212は、システム識別子202によって識別される関連システムにおいて利用可能な関連フィールドもしくはデータおよび/またはメソッドもしくはロジック定義の特定の集まりを示す、任意の適切な識別子とすることができる。この方式では、各システム識別子202は、0以上のエンティティ識別子212に関連付けられることができる。例えば、SAPシステムは、顧客エンティティ、注文エンティティ、および製品エンティティなどを示す1つまたは複数の関連エンティティ識別子を有することができる。メソッド識別子は、所望データを検索するために実行され得るシステムの1組のロジックまたは命令を示す任意の適切な識別子とすることができる。エンティティタイプ記述子216は、関連メソッドが実行された場合に検索されるデータまたはデータフィールドの任意の適切な表示とすることができる。エンティティのインスタンスは、エンティティオブジェクトで定義されたメソッドの1つを実行することによって獲得され得る、エンティティ定義内の各フィールドの実際の1組の値である。
【0037】
図2のテーブル200に示されるように、メタデータストア180は、メソッド識別子222を、エンティティ識別子212およびパラメータリスト226などの1つまたは複数に関連付けることができる。この方式では、システムのアプリケーションプログラムインターフェースについてのメタデータは、メソッドと呼ばれる。エンティティ識別子212は、特定の情報を検索するために識別されたメソッドを使用することができる関連エンティティを表すことができる。この方式では、各エンティティ識別子212は、0以上のメソッド識別子222に関連付けられることができる。メソッド識別子222は、指示されたエンティティにアクセスし、かつ/または指示されたエンティティを操作するために、アプリケーション150の1つの一部として実行され得る1組のロジックまたは命令を示す任意の適切な識別子とすることができる。メソッド識別子は、読み取り、書き込み、更新、および削除など、メソッドのタイプを示すことができる。例えば、SAPシステムの顧客エンティティは、顧客生成メソッドおよび顧客表示メソッドなどの1つまたは複数を提供することができる。パラメータリスト216は、識別されたメソッドを起動するのに必要なことがあるパラメータならびに/またはその必要構造および/もしくはフォーマットを示す任意の適切なフォーマットの任意の適切なパラメータリストとすることができる。例えば、パラメータリストは、1つもしくは複数のパラメータオブジェクトの識別子ならびに/または必要なパラメータのフォーマットおよびタイプの定義を含むことができる。しかし、パラメータオブジェクト自体が必要なパラメータのフォーマットおよび/またはタイプの定義を提供してもよいことを理解されたい。
【0038】
単一のシステムAPIが、企業システム内で異なるセマンティクスと共に使用されてよい。例えば、同じAPIが、エンティティの特定のインスタンスを見つけるためばかりでなく、(入力としてワイルドカードを使用するなどして)エンティティの多くのインスタンスを見つけるために使用されてもよい。メタデータストア内のキャッシュ空間を節約するため、メソッドインスタンスの概念が、メソッドとメソッドの各パラメータのデフォルト値の組との間の関連の表現として導入されてよい。したがって、同じメソッドに関連付けられた2つのメソッドインスタンスの起動は、2つのまったく異なる結果を生じさせることがある。
【0039】
図2のテーブル200に示されるように、メタデータストア180は、パラメータ識別子232を、パラメータ記述子234およびメソッド識別子222などの1つまたは複数に関連付けることができる。メソッド識別子222は、メソッドの起動中にそのパラメータオブジェクトを使用することができる1つまたは複数のメソッド識別子を示すことができる。この方式では、各メソッド識別子222は、0以上のパラメータ識別子232に関連付けられることができる。パラメータ識別子232は、関連パラメータを識別する任意の適切な識別子とすることができる。パラメータ記述子234は、パラメータタイプ(例えば、文字列、整数、および実数など)およびパラメータフォーマットなど、関連パラメータを記述する任意の適切な情報とすることができる。
【0040】
図2のテーブル200に示されるように、メタデータストア180は、パラメータタイプ識別子242を、タグ244、パラメータ識別子232、およびデフォルト値248などの1つまたは複数に関連付けることができる。パラメータタイプ識別子242は、関連パラメータタイプを識別する任意の適切な識別子とすることができる。一例では、パラメータタイプ識別子は、文字列、整数、および実数などの、パラメータがとることのできる値のタイプを示すことができる。別の例では、パラメータタイプ識別子は、コスト、個人名、製品コード、および連絡先情報など、パラメータ値に関連付けられるデータのタイプを示すことができる。パラメータタイプの任意の適切な組が、環境およびアプリケーションに従って使用されてよいことを理解されたい。例えば、1つまたは複数のパラメータタイプ識別子242は、別のパラメータタイプ識別子242と関連付けられてよく、かつ/または単一のパラメータ識別子232と関連付けられてもよい。この方式では、パラメータタイプ識別子242および関連データは、複雑なパラメータでファイルを表すことができる。タグ244は、関連パラメータタイプが識別子か、フィルタかなど、パラメータタイプのタイプまたはその他の特徴の任意の適切な表示とすることができる。パラメータ識別子246は、例えば1つまたは複数のパラメータ識別子232など、そのパラメータタイプを有するパラメータ識別子を示すことができる。デフォルト値248は、値が保存または指定されていない場合の、パラメータタイプに関連付けられたパラメータのデフォルト値を示す任意の適切なデフォルトまたはヌル値とすることができる。例えば、デフォルト値は、正確な値とすることができ、かつ/またはパラメータの値のフォーマットを示すことができる。
【0041】
図2は、図1のメタデータストア180を単一のテーブル200として示しているが、リレーショナルデータベース、オブジェクト指向データベース、非構造化データベース、メモリ内データベース、またはその他のデータストアの1つまたは複数を含む、任意の適切なフォーマットの任意の適切なデータストアが、メタデータストアなどを保存および伝達するために使用されてよいことを理解されたい。ストレージアレイが、ASCIIテキスト、バイナリファイル、通信ネットワークを介して伝送されるデータ、またはその他の任意のファイルシステムなどのファイルシステムを使用して構成されてよい。上記のデータストアのこれらの可能な実施にもかかわらず、本明細書で使用されるデータストアおよびストレージアレイという用語は、コンピューティングデバイスによってアクセス可能な、任意の方式で収集および保存された任意のデータを指す。
【0042】
図2におけるエントリ項目およびテーブル200が組織される方式は、例示および説明を容易にする目的でのみ提供されており、提供される特定のデータ項目およびそれらが組織される方式は、それらが利用される特定の環境および言語に応じて変化し得ることを理解されたい。一例では、メタデータストアは、シリアル化メタデータオブジェクト定義を含むXMLファイルとして実施されてよい。各アプリケーションは、1つまたは複数のシステムを有することができ、各システムは、例えば、エンティティ、メソッド、パラメータ、およびパラメータタイプなど、1つまたは複数の階層化オブジェクトを含む。
【0043】
メタデータストア180にデータ投入することによって、1つまたは複数のアプリケーション150は、企業システム130に登録されることができ、例えば、システムオブジェクトは、メタデータストア内でインスタンス化され、エンティティ、メソッド、およびパラメータなど、1つまたは複数のより低い階層のオブジェクトに必要に応じて関連付けられることができる。この方式では、ユーザは、図1のサービスシステムモジュール190に、サービスにアクセスするための簡単な要求(例えば、要求162)を提供することができる。メタデータストア180内のオブジェクトおよび関連メタデータを参照することによって、サービスシステムモジュール190は、ユーザが利用可能なサービスを提供するしばしば異種の個々のアプリケーションのフォーマット、言語、およびセマンティクスについての詳細な知識を有するようユーザに要求することなく、統一された要求162を、適切なフォーマットの複雑なアプリケーション固有の要求164に変換することができる。
【0044】
データ格納サービスシステム160は、ユーザ要求162を、フォーマットされたセマンティクス的に正しい要求164に変換することができ、アプリケーション150と対話するので、アプリケーション150は、メタデータストア180に保存される接続情報204のデータ格納サービスシステム証明書などを介して、データ格納サービスシステムを認証し、かつ/または権限付与することができる。しかし、データ格納サービスシステム160が認証され、権限付与されたとしても、これは、要求ユーザ120がサービスにアクセスする権限を付与されたことも意味するわけではない。上で述べられたように、ユーザの識別情報および個人証明書のアプリケーションへの転送は、難点になることがある。さらに、複数のコンピュータにわたって多層システム内でユーザ識別情報を維持することは、技術的に課題が多いものとなり得る。したがって、サービスシステム160は、関連アプリケーション150のサービスにアクセスする前に、要求ユーザの適切な権限付与を決定することができる。この方式では、ユーザ権限付与のための統一された対話が、複数の異種アプリケーションにわたって提供されることができ、統一された対話は、アプリケーション毎に複数のユーザアカウントを管理し、またアプリケーション毎、ユーザ毎に複数のユーザ証明書を管理する必要を軽減することができる。
【0045】
要求されたサービスへのユーザのアクセスに権限付与するため、データ格納サービスシステム160は、権限付与モジュール(図示されず)を提供することができ、または権限付与サービスは、図1に示されたサービスシステムモジュール190の機能の一部とすることができる。より詳細には、サービスシステムモジュールは、識別されたユーザデバイスが要求されたサービスに対する適切な権利を有することを確認することができる。権限付与情報は、サービスのオブジェクト識別子を、1つまたは複数のユーザ識別子および/または権限付与ユーザの1つまたは複数の権利もしくは許可された行為に関連付けことなどによって、メタデータストア180に保存されることができる。
【0046】
図2のテーブル200に示されるように、メタデータストア180は、(システム識別子202、エンティティ識別子212、メソッド識別子222、パラメータ識別子232、およびパラメータタイプ識別子242などの)オブジェクト識別子を、ユーザ識別子250および識別されたユーザの1つまたは複数の権利252または許可された行為などの1つまたは複数に関連付けることができる。ユーザ識別子250は、すべてのユーザ識別子を、または関連サービスにおいて関連する権利を有するユーザ識別子だけを列挙することができる。ユーザ識別子が肯定的権利(例えば、オブジェクトのサービスにアクセスする権利)を有するユーザ識別子だけを含む場合、ユーザ識別子250および関連する権利252は、アクセス制御リスト(ACL:access control list)と呼ばれることができる。このように、メタデータストア内の各保護可能オブジェクトは、関連するACLを有することができ、各ACLは、関連ユーザが何を行うことができるかを詳述する関連する権利の組を有するユーザ識別子のデータ構造または記録である、1つまたは複数のアクセス制御エントリ(ACE:access control entry)を含む。
【0047】
ユーザ識別子は、個人、グループ、デバイス、接続、ロール、ソフトウェアアプリケーション、要求時間、およびユーザデバイスロケーションなどの1つまたは複数を示すユーザコンテキスト記述子などの任意の適切なユーザ識別子とすることができる。簡単な一例では、ユーザ識別子は、ポータル170を用いる個人アカウントとすることができる。より複雑な一例では、ユーザ識別子は、1日の指定時間範囲(例えば業務時間)内における、(必要とされるセキュリティレベルを有し得る)特定の接続を介したポータルを用いるユーザアカウントの組合せとすることができる。この方式では、サービスへのアクセスは、基礎をなすバックエンドアプリケーション150のいずれか1つまたは複数によって利用可能なものよりも細かいものであり得る粒度を用いて制御されることができる。
【0048】
ACE内の各ユーザ識別子は、示されたユーザによって許可された行為、権限、および/または特権を示す関連する1つまたは複数の権利表示252を有することができる。権利表示252は、オブジェクトに関連付けられた権利の任意の適切な表示とすることができる。例えば、オブジェクトに関連付けられた権利は、オブジェクトを見ること(例えば、オブジェクトを実行してデータを獲得することによって実行され得る、オブジェクトによって表されるバックエンドシステムに保存されたデータを見ること)、オブジェクトを編集すること、オブジェクト機能を有効化または無効化すること、オブジェクトの許可を設定すること(例えば、関連ACLを変更すること)、オブジェクトを実行すること(例えば、オブジェクトがメソッドである場合)、およびオブジェクトのコピーを表示することのうちの1つまたは複数を含む。いくつかのケースでは、ACEにおいて列挙された肯定的権利の欠如が、指示ユーザ識別子に権利が提供されないことを示すことができる。その他のケースでは、否定的権利は、NOT editing the objectなどとして、ACEに含まれることができる。この後者の例は、オブジェクトが、関連ACLにおいて別途指定されない限りすべてのユーザに与えられるデフォルトの権利の組を有する場合に役に立つことがある。
【0049】
メソッドなどのオブジェクトが関連ACLを有さなくてもよいことを理解されたい。データ格納サービスシステム160は、任意の適切な方式で、関連ACLの欠如を解釈することができる。例えば、ACLなしは、すべてのユーザがすべての権利または所定もしくはデフォルトの1組の権利を有することができることを示してよく、これは、フィルタオブジェクトの場合に適切なことがある。別の例では、関連ACLなしは、ユーザがどのような権利も有さないことを示してよい。しかし、メタデータストアにおいてオブジェクト自体を変更する権利など、いくつかのデフォルトの権利が、オブジェクト毎に自動的にインスタンス化されてよいことを理解されたい。
【0050】
単一のオブジェクト(例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど)に関連付けられたACL例が、図3のテーブル300に示されている。ACL300は、1つまたは複数のACE302、304、306からなるリストを含む。各ACEは、関連ACEを識別するACE識別子によって表されることができる。一例では、ACE識別子は、ACE自体、すなわち、権限付与ユーザ識別子と各関連ユーザ識別子についての関連権利とからなるリストとすることができる。図3に示されるように、ACE識別子は、ユーザ識別子と権利とからなる関連ACEリストを保存するデータ構造を示す識別子とすることができる。例えば、ACE302は、ユーザ識別子322、324と関連権利識別子326、328とを含むデータ構造320を示すことができる。同様に、ACE306は、ユーザ識別子362、364と関連権利識別子366、368とを含むデータ構造360を示すことができる。要求ユーザに関連付けられた正しいACEの発見を簡単にするため、ACE識別子302、304、306は、ユーザ識別子の少なくとも一部、または要求ユーザから受け取られ、もしくは要求ユーザについて発見されることができる、その他の何らかのユーザ表示を含むことができる。
【0051】
1つまたは複数のオブジェクトが同じACLを共有してよく、かつ/または1つまたは複数のACLが同じACEを共有してよいことを理解されたい。このようにして、ユーザのグローバル権利は、複数のACLおよび/もしくはACEを有する個々のサービスに適合させられることができ、または単一のACEを参照する複数のACLを有するすべてのサービスに対して一括して変更されることができる。
【0052】
オブジェクトがメタデータストアにおいてインスタンス化される場合、サービスシステムモジュール190は、そのオブジェクトに対するデフォルトセキュリティ設定を決定することができる。デフォルトセキュリティ設定は、異なるタイプのオブジェクトに対して同じでも、または異なってもよい。例えば、新しいシステムオブジェクトは、オープン(または無)セキュリティ設定を有することができ、これは、ACLにおいて別途指示されない限り、すべてのユーザがすべての権利を有することを意味する。しかし、エンティティ、およびシステムに関連付けられたメソッドインスタンスは、クローズセキュリティ設定を有することができ、これは、ACLにおいて別途指示されない限り、ユーザがそのオブジェクトにおける権利を有さないことを意味する。デフォルトセキュリティ設定が必要に応じて使用されてよいことを理解されたい。
【0053】
いくつかのケースでは、オブジェクトは、そのオブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否するために、親オブジェクトから得られたデフォルトセキュリティ設定を有することができる。例えば、上で述べられたように、オブジェクト階層は、システム、エンティティ、メソッド、パラメータ、パラメータタイプ、およびその他の任意の適切なオブジェクトタイプの任意の組合せを含むことができる。したがって、インスタンス化されたエンティティオブジェクトは、親システムオブジェクトからセキュリティまたはACLを継承することができる。一例では、セキュリティ設定(例えばACL)は、直接の親からのみ継承されてよい。別の例では、ACLは、オブジェクトの1つまたは複数の任意の祖先(親、親の親など)から継承されてよい。例えば、パラメータなどのより低い階層のオブジェクトは、親オブジェクトからのみ、例えば関連メソッドオブジェクトからのみACLを継承することができる。メソッドオブジェクトは、独自のACLを有してもよく、または親の、例えばエンティティオブジェクトのACLを参照してもよい。別の例では、パラメータなどのより低い階層のオブジェクトは、任意またはすべての祖先オブジェクトからACLを継承することができる。より詳細には、より低い階層のオブジェクトは、親から、例えばメソッドオブジェクトからACLを継承することができ、それを、親の親からの、例えばエンティティオブジェクトからのACLと組み合わせることができ、さらにそれを、親の親の親からの、例えばシステムオブジェクトからのACLと組み合わせることができる。祖先オブジェクトからの複数のACLの組合せは、組み合わされるACLに含まれるすべてのACEの結合(union)、重複ACEを除去した合併(merge)、すべての組み合わされるACLと無矛盾のユーザおよび権利の最小量を選択したACLの共通部分(intersection)などの任意の適切な組合せとすることができる。
【0054】
いくつかのケースでは、ACLおよび/またはACEなどのセキュリティ設定の継承が、オブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否することを可能にするため、追加または代替の階層が提供されてよい。例えば、ACLおよび/またはACEが、所定の方式でオブジェクト階層の外部またはオブジェクト階層の内部において継承されることを可能にする、セキュリティ階層が生成されてよい。
【0055】
一例では、メタデータストア内の各保護オブジェクトは、オブジェクト識別子と関連付けられた独自のACLを有さなくてよい。いくつかのケースでは、オブジェクトは、別のオブジェクトのACLを借りること、または参照することができる。「他のオブジェクト」は、独自のACLを有するほど十分に重要な直近のメタデータオブジェクトとして決定されることができる。直近のメタデータオブジェクトは、任意の適切な方式で定義されることができる。例えば、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の祖先(例えば、親および親の親など)として定義されることができる。別の例では、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の親類(例えば、親、子、および親の親など)として定義されることができる。別の例では、直近のオブジェクトは、そのオブジェクトに最も類似したメタデータストア内の別のオブジェクトとして定義されることができる。例えば、オブジェクトがSAPアプリケーションの顧客リストを示すパラメータである場合、直近のオブジェクトは、別のSAPアプリケーションまたはSIEBELアプリケーションなど類似のシステムからの顧客パラメータとすることができる。
【0056】
1つのオブジェクトから別のオブジェクトへの階層的かつ遺伝的セキュリティを実施するため、セキュリティ階層が生成されることができる。任意の適切な階層が使用されてよい。例えば、図4は、継承を定義するのに使用され得るセキュリティオブジェクトクラスの階層例400を示している。非保護オブジェクト406に加えて、階層400は、アクセス制御メタデータオブジェクト402および個々にセキュアである(individually securable)メタデータオブジェクト404の2つの抽象オブジェクトクラスを導入する。アクセス制御メタデータオブジェクトは、ACLのソースにかかわらず、ACLを介してなど、アクセス制御を必要とするオブジェクトのクラスを表すことができる。それ自体がアクセス制御メタデータオブジェクトである個々にセキュアであるメタデータオブジェクト404は、それが所有するACLを供給する。
【0057】
メタデータオブジェクト406は、セキュリティまたはユーザ権限付与を必要としないオブジェクトを分類するために使用することができる。メタデータオブジェクト406として分類され得るオブジェクトの一例は、フィルタとすることができる。
【0058】
個々にセキュアであるメタデータオブジェクトではないアクセス制御メタデータオブジェクト402は、独自のACLを所有せず、むしろ個々にセキュアであるメタデータオブジェクトなどの別のオブジェクトからのACLに依存する。この方式では、アクセス制御メタデータオブジェクトは、個別に保護可能な(すなわちACLを所有する)直近の祖先へのリンクを提供するメソッドを実施するために、サブクラサ(subclasser)を使用することができる。アクセス制御メタデータオブジェクトとして分類され得るオブジェクトの一例は、動作オブジェクトおよび/またはパラメータオブジェクトとすることができる。
【0059】
一例では、アクセス制御メタデータオブジェクトは、APIとして実施されることができる。アクセス制御メタデータオブジェクト402APIは、1つまたは複数のメソッドまたは関数を提供することができる。メソッドは、直近の個別に保護可能な祖先から適切なACLを取り出すことができるget access control listを含むことができる。アクセス制御メタデータオブジェクト402は、所望ACLのオーナを決定するget nearest individually securable ancestorなどのメソッドを提供することができる。上で述べられたように、直近の祖先は、任意の適切な方式で決定されてよい。例えば、直近の祖先は、個別保護可能オブジェクトである直近の親類(例えば、子、親、および親の親など)とすることができ、またはより高いレベルの階層の直近の祖先(例えば、親および親の親など)とすることができる。アクセス制御メタデータオブジェクトへの近接度は、オブジェクトのタイプまたは「世代」数もしくはオブジェクトタイプ階層(例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど)内での隔たりのレベルなど、任意の適切な方式で決定されてよい。
【0060】
個別保護可能メタデータオブジェクト404は、独自のACLを所有する。個別保護可能メタデータオブジェクトは、直近の個別に保護可能な祖先を要求された場合、その自体を返すことができ、このことは、アクセス制御メタデータオブジェクトの定義を満たすことができる。同様に、個別保護可能メタデータオブジェクトは、個別保護可能オブジェクトが必要に応じて独自のACLを子にコピーまたは伝搬することができるように、個別保護可能メタデータオブジェクトのすべての個別に保護可能な子オブジェクトを供給することを、サブクラスに要求することができる。個別保護可能メタデータオブジェクトとして分類し得るオブジェクトの一例は、システムオブジェクト、エンティティオブジェクト、メソッドオブジェクト、およびメソッドインスタンスオブジェクトなどを含むことができる。
【0061】
アクセス制御メタデータオブジェクトと同様に、個別保護可能メタデータオブジェクトは、APIとして実施されることができる。個別保護可能メタデータオブジェクト404APIは、1つまたは複数のメソッドまたは関数を提供することができる。個別保護可能メタデータオブジェクトは、それ自体でアクセス制御オブジェクトであるので、get access control listおよびget nearest individually securable ancestorなど、アクセス制御メタデータオブジェクトによって提供される関数またはメソッドの1つまたは複数を「継承」することができる。個別保護可能メタデータオブジェクトは、アクセス制御メタデータオブジェクトから継承されるメソッドに加えてまたは代わりに、その他の任意の適切な関数および/またはメソッドを提供することもできる。例えば、メソッドは、ユーザが、個別保護可能オブジェクトに所有または関連付けられたアクセス制御リスト(および関連するアクセス制御エントリ)にデータ投入すること、かつ/またはそれらを変更することを可能にする、set access control listを含むことができる。個別保護可能メタデータオブジェクト404は、個別保護可能メタデータオブジェクトとして分類されるオブジェクトの子にアクセス制御リストを伝搬させることができる、copy access control list to childrenなどのメソッドを提供することができる。ACLの伝搬は、オブジェクトのすべての子に影響を与えることができ、または(パラメータリスト入力などを介するなどして)所定の数の世代、所定の組の子にのみ影響を与えることができる。
【0062】
個別保護可能メタデータオブジェクトの子を決定するため、個別保護可能メタデータオブジェクトは、個別保護可能メタデータオブジェクトの子の子を取得するメソッドを提供することができる。個別保護可能メタデータオブジェクトとして分類されたオブジェクトの子は、任意の適切な方式で決定されてよい。例えば、子は、オブジェクト階層(例えば、システム、エンティティ、メソッド、およびパラメータなど)内で決定されたように、個別保護可能メタデータオブジェクトとして分類されたオブジェクトに依存するオブジェクトとして定義されることができる。
【0063】
図4のセキュリティ階層によって提供されるファクタリング(factoring)は、ACLが個別保護可能メタデータオブジェクト自体の上にあるので、アクセスチェックが、(例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの)オブジェクトメタデータ木を歩く必要なしに、できるだけ迅速に必要とされる場合に、オブジェクトが、個別保護可能メタデータオブジェクトAPIをサブ分類することを可能にすることができる。いくつかのケースでは、ACLに関連するストレージおよびそれを伝搬させる時間が重要となり得るので、オブジェクトは、個別保護可能メタデータオブジェクトの粒度が細かい場合、それをサブ分類するべきではない。加えて、アクセスチェックは、独自のACLを有する直近のオブジェクトを見つけるために、(例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの)メタデータオブジェクト階層を遡るのに費やされる時間を許容することができてもよい。
【0064】
オブジェクトのセキュリティ分類は、任意の適切な方式で示されてよい。例えば、メタデータストア180は、オブジェクトの分類を示すセキュリティタイプ表示を保存することができる。別の例では、オブジェクト識別子が、分類を示すことができる。別の例では、オブジェクト自体(例えば、オブジェクトを定義するコード)が、セキュリティ分類を定義し、かつ/または示すことができる。
【0065】
一例では、ACLおよび/またはACEは、アプリケーションプログラムインターフェースを使用して、企業システムによって実施されてよい。例えば、オブジェクトの各クラスまたはタイプは、関連するACL APIおよび/またはACE APIを有することができる。APIを共有するオブジェクトのクラスまたはタイプは、オブジェクト階層(例えば、システム、エンティティ、メソッド、およびパラメータなど)に関係してもよく、かつ/または保護可能なオブジェクト階層(例えば、アクセス制御メタデータオブジェクトおよび個別保護可能メタデータオブジェクトなど)に関係してもよい。ACLおよびACE APIは、基礎をなすオブジェクトの個別またはグループ特徴のいずれか1つまたは複数に従って生成されてよいことを理解されたい。図5は、ACL API500の一例の表現を示し、図6は、ACE API600の一例の表現を示している。APIは、任意の適切な入力、出力、および/または関数を有することができる。例えば、図5のACL API500の例に示されるように、APIの機能は、アクセスチェック502とすることができる。より詳細には、アクセスをチェックするため、ACL API500は、要求ユーザが関連ACEに載せられていること、および適切な権利に関連付けられていることを確認することができる。アクセスをチェックするため、ACL API500は、図6のACE API600を実施することができる。
【0066】
ACE APIは、実施された場合、識別設定606、識別取得608、権利設定602、および権利取得604などの機能のいずれか1つまたは複数を提供してよい。識別設定606は、ACEに載せられるユーザ識別子を生成するため、かつ/または変更するために実施されることができる。このようにして、特定のオブジェクトに対して権限付与された新しいユーザ識別子が、ACEに対する行もしくはレコードの追加もしくは削除を行うことによって、簡単に追加もしくは削除されることができ、またはACEの全体もしくは一部が、グループとして置き換えられることができる。識別取得608は、ACEに載せられた1つまたは複数のユーザ識別子からなるリストを見るため、かつ/または確認するために実施されることができる。権利設定602は、ACEに載せられた関連ユーザの権利を生成するため、かつ/または変更するために実施されることができる。このようにして、ユーザ識別子に関連付けられた権利機能は、特定のオブジェクトのACE内で所望の権利を追加または削除することによって、簡単かつ/または集中的に操作されることができる。権利取得機能604は、載せられたユーザ識別子に関連付けられた1つまたは複数の権利のリストを見るため、かつ/または確認するために実施されることができる。この方式では、図5のACL API500のアクセスチェック機能502は、何らかの方式でユーザが権限付与されていることを確認するために、識別取得機能608を実施することができる。特に、識別取得機能の結果は、要求ユーザのユーザ識別子と比較され得る権限付与ユーザの完全なリストを返すことができる。別の例では、要求ユーザの識別子が、ACE APIに提供されることができ、識別取得機能が実施されたとき、示されたユーザ識別子がACE内のユーザ識別子のリストに含まれているか、または含まれていないかの確認結果(verifier)が返されることができる。別の例では、要求されたサービスまたはアクセス権が、ACE APIに提供されることができ、ユーザ取得機能は、示されたアクセス権を有するユーザ識別子のリストを返すことができる。ACL API500のアクセスチェック502は、識別されたユーザがサービスにアクセスする適切な権利を有することを確認するために、権利取得機能604を実施することができる。一例では、ユーザ識別子が、ACE APIに提供されることができ、そのユーザの関連する権利が返され、その後、ユーザ要求で要求されたサービスと比較されることができる。別の例では、ユーザ識別子および要求されたサービスが、ACE APIに提供されることができ、権利取得機能は、示されたアクセス権が与えられているか、または与えられていないかの確認結果を返すことができる。ユーザおよび関連する要求されたアクセス権の権限付与は、任意の適切な方式で確認され得ることを理解されたい。
【0067】
図5のACL API500は、ACL APIを記述する1つまたは複数の表示または識別子を含むことができる。例えば、ACL APIは、ACL識別子504、ACLの説明またはACLに関連付けられたオブジェクトの表示とすることができるACL説明、ACLがメモリにキャッシュされているか、またはストレージから取り出さなければならないかなどを示すことができるキャッシュ表示508の1つまたは複数を含むことができる。
【0068】
図6のACE API600は、ACE APIを記述する1つまたは複数の表示または識別子を含むことができる。例えば、ACE APIは、ACE識別子610、メタデータオブジェクト識別子612、ユーザ識別子614、権利識別子616、およびシステムインスタンス識別子618などの1つまたは複数を含むことができる。ACE識別子610は、ACEを識別する任意の適切な識別子とすることができる。メタデータオブジェクト識別子612は、ACEに関連付けられた任意の適切なオブジェクト識別子とすることができる。例えば、メタデータオブジェクト識別子は、システムオブジェクトおよびエンティティオブジェクトなどへの参照を含むことができる。ユーザ識別子614は、権利識別子616によって示される権利の下で関連オブジェクトにアクセスする権限を付与されたユーザのリストを含むことができる。システムインスタンス識別子618は、いくつかのケースで、システムオブジェクトの特定のインスタンスを示すために使用されることができる。例えば、システムの複数のインスタンスが、メソッドインスタンスなどの単一の保護可能オブジェクトのためにインスタンス化されてよい。例えば、製品スタジオシステム(例えば、図1のアプリケーション150の1つ)のシステムインスタンスが100個ある場合、システムの1つまたは複数のメソッドインスタンスオブジェクトは、システムインスタンス毎に別個のACLを有することができる。システムインスタンス識別子は、システムまたはシステムインスタンスではないオブジェクトと関係し得るので、任意選択とすることができる。
【0069】
図7は、図1のメタデータストア180を生成し、データ投入する方法例700を示している。任意の組合せおよび順序の以下で説明される動作が必要に応じて実施されてよいことを理解されたい。
【0070】
メタデータストアを設定するため、開発者などのユーザは、メタデータオブジェクトを生成702するよう要求することができる。メソッド実行(例えば、オブジェクト生成)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定704することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、ユーザがサービスにアクセスする権限を付与されない旨の通知を返すなど、適切な動作をとってもよく708、または代替サービス(例えば、ファイル編集の代わりのファイル表示)が提供されてもよい。ユーザがメソッドを実行する権限を付与される場合、メタデータオブジェクトは、任意の適切な方式で生成されてよい。
【0071】
例えば、ユーザが、新しいメタデータパッケージ(例えば、関係オブジェクトのファミリ)をロードするためのコードを書きたいとする。1つのケースでは、ユーザは、以下のように入力することができる。
【0072】
【表1】
【0073】
新しいシステムが.LoadFromPackage()メソッドを使用して生成されるとき、要求ユーザが、パッケージからロードするメソッドに関連付けられたACE内で、そのユーザ識別子に関連付けられた、パッケージからのロード(または実行)権を有することを確認するために、上の動作704のアクセスチェックが実行されることができる。いくつかのケースでは、実行権は、編集権も伴っていない限り、役に立たないこともある。例えば、メソッドが実行されることができても、オブジェクトの編集権も付与されていない場合、実行の結果(例えば、新しいメタデータオブジェクト)は、インポートされることができない。パッケージがロードされると、子メタデータオブジェクト(例えば、エンティティおよびメソッドなど)が、元の親ACLを正確に反映したACLをデフォルトとして生成されることができる。いくつかのケースでは、パッケージがメタデータオブジェクト階層の任意のレベルで作成されることを可能にするため、すべてのメタデータオブジェクトが、パッケージからのロード(メソッド)を有することができる。
【0074】
親オブジェクトまたはパッケージ内のどのオブジェクトも関連ACLを有さない場合、メタデータオブジェクト上でセキュリティを設定するため、オブジェクトのセキュリティパラメータが生成されることができる。ユーザは、特定のオブジェクトに関連付けられたACLを生成するように要求710することができる。ACLの編集(すなわち、本明細書で使用される編集は、生成、子の生成、削除、および更新などを含む)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定712することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、ACLが生成714され、示されたユーザ識別子および1つまたは複数のユーザ識別子に関連付けられた権利などを投入されることができる。
【0075】
例えば、ユーザが、ACLを生成または編集するためのコードを書きたいとする。1つのケースでは、ユーザは、以下のように入力することができる。
【0076】
【表2】
【0077】
上の例では、アクセスチェック712は、任意のメタデータオブジェクト上の.SetAcl()メソッドで実行されることができる。アクセスチェックは、.SetAcl()メソッドの要求ユーザが、オブジェクト(ここでは、メソッドインスタンスオブジェクトmi)のACLに許可設定権を有さなければならないこと、またはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ACL(ここでは、Acl)は、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも1つのACEを含むことを要求されてよい。
【0078】
オブジェクトのACLおよび/またはACEにデータ投入するため、サービスモジュール190は、ユーザ識別子および権利などの配置および入力を容易にするユーザインターフェースを提供することができる。ユーザインターフェース表示の例が、図9〜図12に示されている。任意の適切なユーザインターフェースおよび関連コントロールが、オブジェクトおよび関連メタデータ値の編集を容易にするために、ユーザに提供されてよい。
【0079】
図9は、エンティティのタイプ902のメタデータオブジェクトを管理するための管理ユーザインターフェース900を示している。オブジェクトのセキュリティパラメータは、セキュリティボタン904を選択することによってアクセスされることができるが、セキュリティパラメータは、管理ユーザインターフェース表示において直接、または任意の適切なユーザインターフェースコントロールを介してアクセス可能であってもよい。現在のユーザが、メタデータオブジェクトおよび/または親のメタデータオブジェクト上でセキュリティを変更する権限を付与されていない(例えば、許可設定権をもたない)場合、セキュリティボタンは、使用不可、グレー表示、また非提供にされるなどしてよい。
【0080】
セキュリティボタン904の選択に応答して、サービスモジュール190は、図10に示された許可管理インターフェース1000などの許可管理インターフェースを表示することができる。許可管理インターフェースは、ユーザをインターフェースページに属させるオブジェクトのためのACLを表すことができる。インターフェース1000では、各行1004は、ACEを表すことができる。新たにインスタンス化されたオブジェクトでは、ACEのリストは空であってよい。オブジェクトおよび関連する権利に対してより多くの権限付与ユーザを生成するため、許可ページ1000は、新しいユーザエントリを直接利用可能にすることができ、または新しいユーザ識別子のエントリが、ユーザ追加ボタン1002など、任意の適切なインターフェースコントロールを介してアクセスされることを可能にすることができる。ACEからのユーザの削除を可能にするユーザ削除ボタン1006、選択ユーザ許可変更ボタン1008、および/またはユーザがオブジェクトにアクセスし、オブジェクトを変更し、かつ/もしくは削除することを可能にする他の任意の適切なインターフェースコントロールなど、その他の適切なインターフェースコントロールが提供されてもよい。
【0081】
新規ユーザボタン1002の選択に応答して、サービスモジュール190は、図11に示されたユーザ追加インターフェース1100など、ユーザ追加インターフェースを表示することができる。ユーザは、任意の適切なコントロールを介してユーザ識別子を提供することができる。例えば、図11に示されるように、ユーザは、ユーザ識別子をusersテキストボックス1102に入力することができ、かつ/またはブラウズボタン1104を介して発見可能なユーザ識別子を選択することによって入力することができる。示された1つまたは複数のユーザに関連付けられた権利は、任意の適切な方式で提供されてよい。例えば、ユーザ識別子の入力時に、デフォルト権利が、ユーザによって変更されない限り、ユーザ識別子に関連付けられてよい。別の例では、ユーザ追加インターフェースは、任意の適切な方式で選択または指示され得る利用可能な権利のリストまたはその他の抜粋を提供することができる。図11のインターフェースは、関連チェックボックスコントロール1108を有する利用可能な権利1106を示している。
【0082】
図11の許可変更ボタン1108の選択に応答して、サービスモジュール190は、図13に表示された許可変更ユーザインターフェース1300など、許可変更ユーザインターフェースを表示することができる。ユーザは、図11のユーザインターフェースで1つまたは複数のユーザを選択することができ、許可変更インターフェースは、それら選択されたユーザに対する許可が変更されることを可能にする。別の例では、許可変更ページが、オブジェクトの既存または新規権限付与ユーザの選択または入力を可能にすることができ、許可が変更または生成されることを可能にすることができる。図13のユーザインターフェース例に示されるように、許可変更インターフェースは、関連オブジェクトについてのユーザ識別子1302を表示することができる。ユーザインターフェースは、表示されたユーザに対する関連許可も表示することができ、かつ/またはそのユーザのために選択され得る利用可能なオプションも表示することができる。例えば、図13を参照すると、関連オブジェクトおよび関連ユーザ1302について利用可能な許可オプション1304が、チェックボックス1306などの関連コントロールと共に表示されており、チェックボックスは、選択(例えば、チェック)または禁止(例えば、チェックなし)として許可の操作を指示し、可能にすることができる。関連コントロール(例えば、チェックボックス1306)を操作することによって、ユーザは、利用可能な許可を選択することができ、かつ/または選択解除することができる。リストボックス、テキストボックス、およびラジオボタンなど、任意の適切なコントロールインターフェースが提供されてよいことを理解されたい。
【0083】
いくつかのケースでは、ユーザ識別子に関連付けられる特定の権利の選択は、当該またはその他のオブジェクトについて、その他の権利がそのユーザ識別子に関連付けられる原因となることができ、またユーザ識別子のロールを変更することなどができる。例えば、新規ユーザのための権利を選択するプロセスにおいて、許可設定または管理権が選択された場合、その新規ユーザは、オブジェクトおよびこのオブジェクトの下のすべてのオブジェクトのための代表管理者となることができる。すなわち、admin ACEは、オブジェクト階層木を下方に辿って自動的に伝搬されることができる。
【0084】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集し、(自動的に行われないのであれば)この情報をすべての子メタデータオブジェクト上を下方に伝搬させたいと思うことがある。開発者などのユーザは、親オブジェクトのACLを編集することを要求716することができる。ユーザは、(変更された)親オブジェクトのセキュリティ情報を、親オブジェクトのすべてまたは指示された子オブジェクトへと下方に伝搬させることを要求718することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定720することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACLが変更722され、その後、親の適切な子へと下方に伝搬されることができる。
【0085】
例えば、ユーザは、以下のようなコードを入力することができる。
【0086】
【表3】
【0087】
上の例では、アクセスチェック720は、オブジェクト上での.SetAclAndPropagate()メソッドの実行に応答して実行されることができる。アクセスチェックは、要求ユーザが、オブジェクトまたはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ACLは、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも1つのACEを含むことを要求されてよい。上のコード例では、ACLは、与えられたオブジェクトのすべての子オブジェクトに自動的に伝搬される。上の例では、ユーザが親オブジェクトで許可設定権を有する場合、子オブジェクトのACLが設定されることができるので、各子オブジェクトについてのACLの編集の実行は、自動的に権限付与される。
【0088】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集したいと思うことがある。開発者などのユーザは、親オブジェクトのACLを編集することを要求724することができる。メソッドの実行(例えば、オブジェクトの変更)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定726することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACLが変更728されることができる。
【0089】
例えば、ユーザは、以下のようなコードを入力することができる。
【0090】
【表4】
【0091】
ACLオブジェクトモデル(「OM」)は、Windows(登録商標)SharePoint Services(商標)(WSS)またはその他の任意の適切なウェブインフラストラクチャとすることができる。OMは、基本認証、持続性、インフラストラクチャおよび/またはその他のセキュリティサービスを、企業システム構成要素に提供することができる。上の例に示されるように、OMは、ACLおよび/またはACEによって参照および実施され得る、権利などのデフォルト値を提供することができる。ACLの設定に応答して、セキュリティ変更は、企業システムのOMのコンテキスト内で、実質的に直ちに変更されることができる。しかし、メタデータオブジェクトはランタイムOMによってキャッシュされ得るので、変更ACLがランタイムOMによってすべての構成要素上で観察される前に、タイムラグが存在することがある。
【0092】
上の例は、オブジェクトのセキュリティパラメータの編集を示しているが、オブジェクトの識別子およびオブジェクトのインスタンスなど、任意のパラメータ、特徴、および設定などが変更されてよい。上で述べられたように、編集は、機能の変更、更新、および削除などを含む。図7に示されるように、ユーザは、オブジェクトを編集することを要求742することができる。オブジェクトの編集を求める要求(例えば、メソッドの実行を求める要求)に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定744することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、オブジェクトが変更746されることができる。
【0093】
一例では、ユーザは、エンティティの名前を更新し、そのエンティティのための新しいオブジェクト識別子を生成し、その後、エンティティオブジェクトを含むシステムを削除するコードを書きたいとする。
【0094】
例えば、ユーザは、以下のようなコードを入力することができる。
【0095】
【表5】
【0096】
上の例に示されるように、2以上のアクセスチェックが、図1のデータ格納サービスシステム160によって実行されてよい。上の例では、要求に応答して、子オブジェクトの生成と、システムオブジェクトの削除と、オブジェクトのACLの更新の、3つのアクセスチェックが実行されることができる。しかし、1つまたは複数のアクセスチェックが同時に実行されてよいことを理解されたい。例えば、上の例では、実行メソッドの各々は、メタデータオブジェクトに対する編集権(例えば、生成、削除、更新)を必要としてよく、したがって、その権利についての単一のアクセスデータチェックと共に、3つのアクセスチェックが実行されてよいが、編集権は、識別子ユーザ、編集される3つの異なるオブジェクト(例えば、子オブジェクト、エンティティオブジェクト、およびシステムオブジェクト)について異なってもよく、したがって、オブジェクト毎に別個のアクセスチェックを必要としてもよい。
【0097】
ユーザは、図1のメタデータストア180に保存したいくつかのメタデータを変更したいことがある。例えば、ユーザは、図2のメタデータストアに示されるような、システムオブジェクトに関連付けられた接続情報204などの、接続文字列を変更したいことがある。いくつかのケースでは、図1のサービスシステム190は、オブジェクトメタデータの編集を容易にするオブジェクト編集ページを提供することができる。アプリケーションオブジェクト編集ページ例1200が図12に示されている。アプリケーション編集ページがユーザに提示されたとき、識別ユーザが適切な編集権を有することを確認するために、アプリケーションオブジェクトに関連付けられたACLに対するアクセスチェックが実行されてよい。アクセスチェックが失敗した場合、ユーザは、オブジェクトページ1200などのオブジェクトページへのアクセスを拒否されてよく、または代替として、オブジェクトページは表示されてよいが、ページ内のフィールドの編集機能はオフにされ、例えば、ページの読み取り専用表示とされることができる。
【0098】
上で述べられたように、オブジェクトは、誰がどの許可を有するかを管理する関連ACLを有することができる。いくつかのケースでは、オブジェクトは、親オブジェクトと同じデフォルトACLを有して生成されてよい。階層の最上部にあるシステムオブジェクトの場合、デフォルトは、オブジェクトの作成者に管理権を生成することができる。しかし、オブジェクトの編集権、(アプリケーションの起動を引き起こし得る)オブジェクトの実行権、および非対称権など、追加または何らかのサブセットの権利が存在してもよい。非対称権の一例は、オブジェクトの管理権に含まれ得る、オブジェクトの権利を変更する権利である。オブジェクトの権利を変更する権利を、別のユーザに代行してもよい。具体的には、オブジェクトの権利を変更する権利を有する人は、別のユーザがオブジェクトの権利を変更する権利を追加的または代替的に有するような割り当てを行うことができる。
【0099】
いくつかのケースでは、ユーザは、そのオブジェクトおよびすべての下位にある(子)オブジェクトの管理権を別のユーザに代行させたいことがある。開発者などのユーザは、オブジェクトおよびその子の管理権を代行することを要求730することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定732することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACEが追加され、ACLが変更734され、その後、親の適切な子へと下方に伝搬されることができる。
【0100】
例えば、ユーザは、以下のようなコードを入力することができる。
【0101】
【表6】
【0102】
オブジェクトのためのACLの新しいACEの結果として、「newAdminDude」によって識別されるユーザは、オブジェクト上で許可を設定する権利を有する。このようにして、「newAdminDude」は、そのオブジェクトおよび任意の下位オブジェクトにおいて許可を設定する旧いadminの権利を削除することができる。しかし、旧いadminが親オブジェクトにおいて「許可設定」権を保持する場合、旧いadminは、その親オブジェクトの子オブジェクトの代表管理のみを有すると考えられてよい。このようにして、旧いadminは、現在「newAdminDude」に代表されている各オブジェクトの親において許可設定権を有するので、「newAdminDude」に与えられた任意の権利を取り戻すことができる。
【0103】
いくつかのケースでは、(例えば、メタデータストア内のすべてのオブジェクト上で許可設定権を有する)メタデータストアの管理者は、別のユーザが、特定のタイプのオブジェクトにおける管理権を有することを可能にしたいことがある。例えば、管理者は、別のユーザが、任意のエンティティオブジェクトにおける管理権を有するようにしたいが、そのエンティティが属するSystemInstanceオブジェクトは除外したいことがある。したがって、管理者は、MethodInstance実行特権は変更するが、例えば、システムインスタンス上の接続文字列は変更しないことができる。開発者などのユーザは、親およびその子の管理を部分的に代行することを要求736することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定738することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッドと類似したメソッド800を使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACEが追加され、ACLが変更740され、その後、親の適切な子へと下方に伝搬されることができる。例えば、ユーザは、以下のようなコードを入力することができる。
【0104】
【表7】
【0105】
上に示されるように、親から子へのACLの自動継承が回避され、かつ/または望まれることができる場合が存在してよい。したがって、自動継承は、いくつかのケースでのみ生じることができ、その他のケースは、ACLを子オブジェクトへと下方に伝搬させるために、コピーまたは明示的な伝搬を必要とすることができる。
【0106】
図8は、オブジェクトへのアクセスをチェックする方法例800を示している。上で述べられたように、セキュリティは、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。オブジェクトへのアクセスをチェックするため、要求が受け取られることができる802。要求または通信のその他の態様は、要求ユーザのユーザ識別子を決定804するために解析されることができる。要求は、権限付与および/または認証で使用されるユーザ識別子を提供することによって、別のユーザの代理によることもできることを理解されたい。要求ユーザは、任意の適切な方式で、認証806されることができ、すなわち、ユーザの識別情報が確認されることができる。いくつかのケースでは、ポータル170および/またはデータ格納サービスシステムは、要求が作成される前に、ユーザを認証してもよい。したがって、どの説明されたステップおよび/または動作も、アプリケーションおよび環境に適した任意の適切な順序で実行されてよい。
【0107】
アクセスされる所望のサービスは、図1のユーザ要求162などのユーザ要求から決定されることができる808。企業システムの任意の適切な部分が、図1のサービスシステムモジュール190またはデータ格納サービスシステム160の認証モジュール(図示されず)など、アクセスされる所望のサービスを決定することができる。所望のサービスにアクセスするのに必要とされる権利は、任意の適切な方式で決定されてよい810。例えば、メタデータストアは、メソッドまたはサービスと必要とされる権利のマッピングなど、権利のデータベースを維持することができ、または上で述べられたように、所望のサービスにアクセスするのに必要とされる権利は、サービス自体の中で関連付けられることができ、例えば、メソッドオブジェクトを実装するときに、メソッドオブジェクトは、サービスに必要とされる権利を提供することができる。
【0108】
アクセスされるオブジェクトは、要求から決定されることができる812。例えば、サービス要求は、オブジェクトを編集すること、オブジェクトを見ること、およびオブジェクトを実行することなどとすることができる。所望のオブジェクトは、オブジェクト名、オブジェクトタイプ、およびオブジェクト識別子など、任意の適切な方式で示されることができる。所望オブジェクトのACLが、取り出されることができ814、ACLの関連ACEが、取り出されることができる816。上で述べられたように、一例では、ACLは、オブジェクトが個別保護可能オブジェクトとして分類される場合、オブジェクト自体から取り出されることができ、またはオブジェクトがアクセス保護可能なオブジェクトとして分類される場合、直近の個別保護可能オブジェクトなど、別のオブジェクトから取り出されることができる。ACLが別のオブジェクトから取り出される場合、直近の個別保護可能オブジェクトを決定することを含む、任意の適切な方法が、ACLを取り出すために使用されてよい。
【0109】
ユーザ識別子が、権限付与ユーザとして提供されているかどうか、例えば、ACE内のユーザ識別子リストに含まれているかどうかを決定するために、ACEが検査されることができる818。含まれていない場合、適切な動作をとることができる820。要求されたサービスへのユーザアクセスを拒否すること、アクセスが拒否された旨のメッセージをユーザに送信すること、拒否されたアクセスについて管理ユーザに通知すること、および図1のストレージ138に保存され得るログデータストアに拒否されたアクセスを記録することなどを含む、任意の数および組合せの適当で適切な動作をとることができる。
【0110】
ユーザがACEに載せられている場合、ユーザ識別子に関連付けられた権利は、上の動作810で決定された必要とされる権利と比較される822。必要とされる権利がユーザ識別子と関連付けられていない場合、適切な動作をとることができる820。上で述べられた適切な動作のいずれかがとられてよい。さらに、ユーザがオブジェクトにおけるいくつかの権利を有するが、所望のアクセスのために必要とされる権利を有さない場合、データ格納サービスシステムは、要求されたサービスの代わりに、ユーザが関連する権利を有する適切な権限付与されたサービスを自動的に選択することができる。例えば、ユーザが、オブジェクトの編集を要求したが、編集権を有さないことがある。それに応答して、データ格納サービスシステムは、要求ユーザのユーザ識別子がオブジェクトを見るための関連する権利を有するかどうか、ACEをチェックすることができる。その後、関連する権利は、以下でさらに説明される要求164など、アプリケーションに対する生成サービス要求の一部となることができる。
【0111】
権利または関連する権利がACE内で示される場合、その他のアクセス制限が確認されることができる824。例えば、サービスへの安全なアクセスは、上で提供されたユーザ識別子に加えてまたは代えて、任意のコンテキストに基づくことができる。例えば、アクセスは、アプリケーション内の機能、ウェブサイト内のロケーション、アクセスの日中時間および/または日付、ならびに企業システムへのユーザ接続に対する接続制限などの確認に基づくことができる。その他の制限が確認されない場合、適切な動作をとることができる820。
【0112】
ユーザが権限付与された場合、データ格納サービスシステムは、適切なアプリケーションの指示されたサービスに対する要求を生成することができる826。要求は、任意の適切な方式で生成されてよい。図1の要求162などのユーザからの要求は、図1のアプリケーション150に送信するために、繰り返されることができ、または適切に変更(例えば、フォーマット化および拡張など)されることができる。別の例では、データ格納サービスシステムは、サービスのオブジェクトおよび/またはサービスオブジェクトの親オブジェクトに基づいて、図1のメタデータストア180から、所望サービスに関する適切な要求情報を取り出すことができる。例えば、図2を参照すると、データ格納サービスシステムは、要求されたサービスを提供するための、アプリケーション150に適した複雑な要求164を生成するために、エンティティ識別子224、パラメータリスト226、またはその他の任意の適切な情報を使用することができる。
【0113】
アプリケーションは、データ格納サービスシステムを認証し、かつ権限付与することを望んでよい。上で述べられたように、認証および/または権限付与は、要求の前に、または要求を実行する一部として行われてよい。図8に示されるように、データ格納サービスシステムは、アプリケーションに適切なアカウント、接続、識別情報、および証明書などを提供することができ、そのいずれもが、図1のメタデータストア180から取り出されることができる。例えば、データ格納サービスシステムは、オブジェクト識別子ならびにメタデータストア内のそのオブジェクトおよび親オブジェクトのいずれかに関連付けられた情報に基づいてメタデータストア180から取り出されることができる、データ格納サービスシステムに固有の認証および/または権限付与情報を有するユーザアカウントまたはサービスアカウントを介して、アプリケーションにアクセスすることができる。データ格納サービスシステムは、証明書を有さないサーバプロセスアカウント、およびデータ格納サービスシステムがシングルサインオン(SSO:single sign−on)個別アカウントの独自の証明書を用いてWINDOWS(登録商標)ユーザを装うことができ、WINDOWS(登録商標)認証を実行する、シングルサインオンからのWINDOWS(登録商標)証明書などを有するサーバプロセスアカウントを含む、1つまたは複数のセキュリティシステムにサインオンし、権限付与されることを可能にしてもよい。
【0114】
ユーザ権限付与を集中化することによって、企業システムの管理は、データ格納サービスシステムがアカウントおよびユーザ証明書などを維持する、図1のアプリケーション150の各々と共に、1つまたは複数のユーザアカウントのみを維持することによって簡略化されることができる。上で述べられたように、接続および/またはセキュリティ情報は、要求ユーザの接続および/またはセキュリティ情報とは異なってよい。データ格納サービスは、上で説明されたように、認証、接続、権限付与情報をメタデータストア180内に維持し、そこから取り出すことができる。さらに、データ格納サービスシステムが同じアプリケーションからのサービスを求める1つまたは複数の要求を処理している場合、それらの要求は、唯一のアカウントおよび接続などを必要とすることができる同じユーザスレッドを介して、一緒に合わされてよい。
【0115】
アプリケーションは、データ格納サービス情報から提供された情報に基づいて、任意の適切な方式で、認証し、権限付与を確認するなどすることができる830。データ格納サービスシステムが、要求されたサービスにアクセスする権限を付与されていることを保証するため、データ格納サービスシステムに関連付けられた権利は、オブジェクトACL内の識別ユーザに許可された権利のすべてと同じとすることができ、または権利のすべてと比べてより大きい(例えば、スーパーユーザ)とすることができる。
【0116】
データ格納サービスシステムが権限を付与されている場合、サービスはアクセスされることができる832。サービスがアクセスされた場合、成功表示が、アプリケーションから受信されてよい834。成功表示は、実行メソッドの結果、サービスが正常に実施されたことの表示、およびアプリケーションの機能へのアクセスが提供されることなど、任意の適切な成功表示とすることができる。データ格納サービスシステムは、任意の適切な方式で、要求ユーザに成功表示を提供してよい836。
【0117】
一例では、ユーザは、自らのコード(例えば、1つまたは複数のアプリケーション150)を使用している現在のユーザが、MethodInstanceを実行する権限を付与されているかどうかを確認するコードを書きたいことがある。ユーザは、以下のコードを書くことができる。
【0118】
【表8】
【0119】
上の例は、典型的なエンドユーザのシナリオではないので、多少潤色されているが、バックエンドAPIまたはその他のアプリケーションへのユーザアクセスを許可または拒否するために、データ格納サービスシステムMethodInstance.Execute()コードに埋め込まれることができるコード例を示している。この例では、ユーザが、与えられた権利(上の例では実行)のためのACL内のACEの1つに載せられているユーザ識別子と同じであるかどうかを、WSSがチェックしている。しかし、権限付与を確認するために任意の適切な方法またはプロセスが使用されてよいことを理解されたい。
【0120】
上記の図7のサービスを求める要求の例、および図8のアクセスに対する権限付与の例は、メタデータストア自体のオブジェクトを使用して上では説明されたが、この方法は、1つまたは複数のアプリケーション150にサービスを要求する図1のユーザ120など、ユーザについても同様に実施されることができる。例えば、図8を参照すると、要求が受け取られ802、メタデータストアに保存されたアプリケーション150のオブジェクトを参照して、情報が決定されてよい804、808、810、812、814。関連するACLおよびACEは、要求されたサービスに関連付けられたオブジェクトのために取り出されることができ、権利およびユーザ識別子が確認される。上で述べられたように、メタデータストアに保存された各オブジェクトは、ACEに関連付けられたACLに関連付けられる。その後、データ格納サービスシステムは、ユーザからの権限付与された要求に応答して、サービスを求める要求を生成し826、サービスを求めてアプリケーション150にアクセスするための、それ自体の認証情報を提供する828。
【0121】
上の例に示されるように、各オブジェクトに関連付けられたACLおよびACEは、データ格納サービスシステム内のその他のオブジェクトの生成および保守において使用されてもよい。具体的には、データ格納サービスシステムのいくつかのタイプのオブジェクトは、バックエンドアプリケーションのオブジェクトを生成し、編集し、かつ/または保守するために使用されてよい。例えば、図14の方法例1400に示されるように、オブジェクトは、バックエンドアプリケーションの1つまたは複数の部分のために生成されてよい1402。上で述べられたように、オブジェクトは、システム、システムインスタンス、エンティティ、メソッド、パラメータ、およびパラメータタイプなどの、1つまたは複数のオブジェクト階層を表すことができる。オブジェクトは、図7の動作702〜706におけるオブジェクトの生成、および動作710〜714におけるセキュリティの生成に関して上で説明されたような、任意の適切な方式で生成されてよい。ユーザデバイスは、企業システムのバックエンドアプリケーションにサービスを要求することができる1404。ユーザ要求は、複数のバックエンドアプリケーションにわたってユーザ用の共通インターフェースを可能にする、簡単で汎用的な統一化かつ/または共通要求とすることができる。図1の例に示されるように、ユーザ要求は、適切な通信接続を介して企業システム130によって受け取られることができ、ポータル170を介して処理されてよい。図14を参照すると、データ格納サービスシステムは、要求によって参照される適切なオブジェクトを決定する1406。その後、データ格納サービスシステムは、指示されたオブジェクトのいずれか1つまたはすべてに要求された方式でアクセスする権限をユーザが付与されているかどうかを決定する1407。任意の適切な権限付与プロセスが使用されてよいが、1つの適切な例が、図8の方法800に関して上で説明された。ユーザが権限付与されていない場合、データ格納サービスシステムは、要求の終了、および要求ユーザへのエラーメッセージの送信などのいずれか1つまたは複数を含むことができる、適切な動作をとることができる1408。ユーザが権限付与されている場合、データ格納サービスシステムは、企業システムの適切なバックエンドアプリケーションの要求されたサービスとの対話用に特別に適合された要求を生成する1410。例えば、オブジェクト内に維持される情報は、メッセージを生成するのに使用され得る、メッセージフォーマット、および必要とされるパラメータなどを含むことができる。その後、データ格納サービスシステムは、ユーザからの要求で識別されたサービスにアクセスするために、適合された要求を使用して、適切なバックエンドアプリケーションと対話することができる1412。例えば、データ格納サービスシステムは、適切なサービスにアクセスするために、バックエンドアプリケーションに適合された要求を送ることができる。バックエンドアプリケーションへの接続は、アプリケーションのスーパーユーザアカウントを介するものでよく、それは事前作成されることができる。サービス結果は、バックエンドアプリケーションによってデータ格納サービスシステムに提供されることができ、データ格納サービスシステムは、ユーザからの特定の要求(例えば、データフォーマットおよび言語など)に従って、ユーザの選好(例えば、ユーザが好むデータフォーマットおよび言語など)に従って、また特定のユーザ要求および/または許可などを満たすのに必要とされる情報忠実度をアプリケーションが有さない場合に生じることがあるユーザ許可(例えば、情報は必要に応じて選別、翻訳、または編集されてよい)に従って、結果を適合させることができる。データ格納サービスシステムは、ステータス情報および要求の結果などを伝達するため、ユーザデバイスと対話することができる141。
【0122】
本発明の好ましい実施形態が例示され、説明されたが、本発明の主旨および範囲から逸脱することなく、様々な変更がそれに施され得ることを理解されたい。例えば、上で述べられたように、企業システムは、バックエンドアプリケーションに存在する実行可能な機能を分離することができ、分離は、異なるレベルの粒度にあってよい。アプリケーションの分離された機能は、メタデータオブジェクトの形式でカタログ内に登録されることができる。実行可能な機能が登録されると、各粒度の機能オブジェクトの権限付与情報が権限付与情報と関連付けられることができる。実行可能な機能の権限付与権の一例は、アプリケーションの情報にアクセスすること、および/またはアプリケーションの情報を変更することができる、実行可能な機能に関連付けられたロジックの部分を「実行」する権利とすることができる。機能の実行についての権限付与に加えて、メタデータストアは、追加的または代替的に、(大規模ポータルアプリケーション内など)実行が行われ得る場所の権限付与を容易にすることができる。実行の権限付与と同様に、実行の場所は、機能(またはオブジェクト)単位に権限付与されることができる。例えば、上記の例は、オブジェクトがシステムおよびエンティティなどとして定義された、1つまたは複数のアプリケーションにアクセスするための、データ格納サービスシステムを使用することを説明しているが、オブジェクトおよびアクセス要求は、任意の適切なメソッド、オブジェクト、およびアプリケーションなどを参照してもよいことを理解されたい。例えば、アプリケーション機能は、Web Partをコールするユーザインターフェースウィジェット(widget)の生成を可能にすることができる。アプリケーションの別の機能は、スコープを有する検索可能/インデックス付け可能な空間の生成を可能にすることができる。メタデータストア内のオブジェクトに関連付けられた権限付与情報は、Web Part機能内で、システムAのデータのみが表示されることを可能にすることができる。同様に、メタデータ権限付与情報は、検索機能内で、システムBの顧客エンティティデータのみがクロール(crawl)されることを可能にすることができる。このようにして、メタデータストア内に保存されたオブジェクトは、検索オブジェクト、ウェブページ接続性およびアクセスなどを参照することができる。同様に、XMLオブジェクトなどのオブジェクトを参照して、安全なデータ格納サービスシステムが上では実施されるが、リストおよびその他のタイプのプログラミング構成が、適当ならば使用されてよいことを理解されたい。
【図面の簡単な説明】
【0123】
【図1】データ格納サービスシステムを実施するのに適した企業環境例の概要図である。
【図2】図1の企業環境と共に使用するのに適したメタデータストア例の表である。
【図3】図2のメタデータストアのアクセス制御リスト(ACL)例の表である。
【図4】図1の企業環境と矛盾しない保護可能オブジェクト階層の概要図である。
【図5】オブジェクトアクセス制御リストを実施するAPI例の概要図である。
【図6】図5のアクセス制御リストのアクセス制御エントリを実施するAPI例の概要図である。
【図7】図1の企業環境のメタデータストアにデータ投入し、それを実施する方法例のフローチャートである。
【図8】アクセスチェックを実施する方法例のフローチャートである。
【図9】オブジェクトの管理ユーザインターフェースの表示例の図である。
【図10】オブジェクトの許可管理ユーザインターフェースの表示例の図である。
【図11】ACL編集ユーザインターフェースの表示例の図である。
【図12】オブジェクト編集ユーザインターフェースの表示例の図である。
【図13】オブジェクトの許可変更ユーザインターフェースの表示例の図である。
【図14】図1の企業環境のメタデータストアを実行する方法例のフローチャートである。
【背景技術】
【0001】
組織は、日常業務を実施するために、コンピューティング環境内で、永続的データを使用する汎用データ中心アプリケーションなどの、多くのアプリケーションを使用することができる。例えば、複数のタイプの営業(LOB:line of business)システム(例えば、事業必須データベースアプリケーション)が、開発アプリケーションおよび「独自作成(home−grown)」アプリケーションなどと共に実施されることができる。しかし、1つまたは複数のユーザによるこれらの異種アプリケーションの各々へのアクセスは、フォーマット、言語および/またはセマンティクスを異にする異なる情報による対話、異なるログオンおよび権限付与方法による対話、異なる接続要件による対話、ならびにアプリケーション毎、ユーザ毎に別々の動作スレッドによる対話などを必要とすることがある。
【0002】
【特許文献1】米国特許出願第11/191771号明細書
【特許文献2】米国特許第11/191771号
【発明の開示】
【課題を解決するための手段】
【0003】
以下の説明は、読者に基本的な理解を提供するために、本開示の簡略化された要約を提示する。この要約は、本開示の広範な概説ではなく、本発明の主要/必須要素を識別するものでも、または本発明の範囲を描写するものでもない。その唯一の目的は、後で提示されるより詳細な説明に対する前置きとして、本明細書で開示されるいくつかの概念を簡略化された形式で提示することである。
【0004】
複数のアプリケーションでのユーザエクスペリエンスを統一するため、ユーザと複数のアプリケーションの間の仲介者として機能するデータ格納サービスシステムが実施されることができ、データ格納サービスシステムは、ユーザには簡単かつ統一されたインターフェースを提供し、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成する。親出願である2005年7月28日に出願された特許文献1では、指定されたサービスとどのように対話するかについてのアプリケーション固有の知識をもつことをユーザに求めずに、共通点のない異種のデータストア関連サービスをユーザに提示する、データ格納サービスシステムについて説明している。統一された対話をユーザに提供するため、データストアシステムは、例えば、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどといったサービス対話詳細などのメタデータストア情報を一緒に維持することができる。データ格納サービスシステムは、サービスへのアクセスを求めるユーザ要求を受け取り、関連メタデータにアクセスし、メタデータを使用して、ユーザの簡単で汎用的な統一化かつ/または共通要求をサービスに適した通信に変換する、アプリケーションプログラムインターフェースを提供することができる。
【0005】
一般に、アプリケーションへの接続のプレファブリケーション(prefabrication)およびポーリングを可能にするため、ならびに個人ユーザ情報のパススルー(pass through)を回避するため、アプリケーションは、パフォーマンスを理由として、「スーパーユーザ」のコンテキスト内で、例えば、すべての利用可能なデータへのアクセス権を有するアカウントのコンテキスト内でアクセスされることができる。この方式では、1つまたは複数(例えば、x)の「スーパーユーザ」接続が、同時にオープン状態で保持されて(これは実際のユーザログオンに先立って行われてよい)、ユーザ要求毎に接続のクローズおよび再確立を必要とせずに、xの接続を用いて、1つまたは複数(x)の一意エンドユーザに同時にサービスすることができる。しかし、スーパーユーザアカウントの実施は、個人セキュリティと対立する。具体的には、すべてのデータが匿名で効果的にアクセスされる場合、例えば、アプリケーションへのすべての要求が「スーパーユーザ」アカウントから来る場合、どのユーザがどのデータにアクセスするかを個人許可に基づいて調整することは可能でない。この問題を軽減するため、多くのアプリケーションは、誰がシステムに保存されたどのデータへのアクセス権を有するかを管理者が指定することを可能にする、独自の権限付与モジュールを提供する。しかし、これは、スーパーユーザとしてではなく、特定のエンドユーザとしての、アプリケーションへの語り掛けを必要とする。このソリューションは、スーパーユーザアカウントによって達成されるパフォーマンス向上を妨げる。例えば、ユーザ毎の権限付与情報の通信は、保護される必要があることがあり、権限付与要求パススルーは、サービスとの通信の量および時間を増大させる。加えて、各要求ユーザは個々に権限付与されるので、サービスを求める各要求は、別個の処理スレッドで実行されることがあり、このことは、サービスおよび利用可能な通信接続に過剰な負荷を掛けることがある。また、各アプリケーションは、独自のモデルを有し、このモデルは、ユーザおよび異なるアプリケーション毎に別個の権限付与を必要とし、ユーザ毎に証明書および/またはアカウントの複数の組が設定および維持されることを必要とし、このことは、環境の個人別および運営上の管理を増大させる。さらに、各アプリケーションまたはサービスは、情報を特定の粒度で提示することができる。例えば、SQLアプリケーションは、テーブルレベルでの情報へのアクセスを提示することができるのみで、(以下でさらに説明される)より高いまたは低いレベルでは提示できない。同様に、いくつかのアプリケーションのサービスに対するアクセスは、全体的意味で提供されることがあり、例えば、どのような権利も、アプリケーションのサービスの任意の部分にアクセスできる全体的権利である。これは、識別ユーザに対して許可されたアクセスの粒度を制限することがある。
【0006】
スケーラブルなアカウントアクセスおよびセキュリティ目標の結果として、従来のアプリケーション環境は、個々のアプリケーションのセキュリティモデルを「オフにして」、アプリケーションの「直前で」カスタムコードを書くことができる。この独自作成のコードは、特定のアプリケーションにおけるデータをカタログし、各ユーザに対する許可を綿密に計画する責任を負うことができる。この方式では、エンドユーザは、許可をチェックする中間レイヤと対話することができ、許可が得られた場合、カスタムコードは、スーパーユーザを装って、アプリケーションサービスを呼び出し、取り出されたデータをエンドユーザに転送する。これは、スケーラビリティおよびセキュリティを達成するが、バックエンドシステム毎に、中間レイヤにおける手作りのカスタムコーディングという代償を払っている。さらに、カスタムコーディングは、所望の個々の許可の類似性などにかかわらず、異なるバックエンドアプリケーション毎に個別に達成されなければならない。
【0007】
カスタムコーディングは、バックエンドシステムに保存されるデータ、およびシステムをコールするのに使用されるAPIについての詳しい知識を必要とする。例えば、各アプリケーションは、独自の権限付与モデルを有し、ユーザに与えられる許可を独自の方法で保存してよい。さらに、各アプリケーションは、ユーザの組を異なる方式で識別してよい。例えば、MicrosoftのActive Directoryに基づいたシステムは、ある人をRedmond/personとして識別することができ、オープンソースのLDAP Directoryに基づいた別のシステムは、同じ人をO=Redmond;CN=personとして識別することができる。したがって、これらのユーザが同じユーザであることを見分ける方法が存在しないこともある。その場合、管理者は、多くのアプリケーションに散らばった様々な権限付与モデルおよび許可を学ばなければならない。加えて、各アプリケーションは独自の権限付与技法および/または証明書を有してよいので、各ユーザの権限付与は、ユーザによってアクセスされるすべてのアプリケーションについて繰り返されなければならない。このように、必要とされるカスタムコーディングは、ソフトウェアの保守、コスト、および開発時間などを増大させることがある。
【0008】
親出願のデータ格納サービスシステムは、中間層としてサービスにアクセスするので、各バックエンドアプリケーションのデータサービスをカタログし、ユーザ許可をマップするカスタムコードの保守コスト、開発時間などのため、要求ユーザの権限付与は難しいことがある。ユーザのための統一対話を拡張し、基礎をなすアプリケーションのセマンティクスの詳細をユーザが理解する必要を減らし、アプリケーションのサービスをユーザ定義の粒度で提示し、管理コストを減らし、かつ/またはその他の利点のために、データ格納サービスシステムは、ユーザによって要求されるサービスおよび要求ユーザに関連付けられた権限付与情報に基づいて、ユーザに権限付与することができる。権限付与情報は、要求されたサービス、サービスによって提供されるデータタイプ、サービスのデータタイプ上の個々のメソッド、サーバのデータタイプのメソッドのリターン値の特定のサブ成分、および上記のいずれかのオブジェクトのインスタンス化などを、権限付与されたユーザのユーザ識別子および/または権限付与されたユーザの1つまたは複数の権利もしくは許可された行為と関連付けることなどによって、メタデータデータストアに保存されることができる。別個の(より高い特権の)権利が、任意のオブジェクト上で(管理される権利と類似した)権利を設定/変更することができる人々の組を管理するために使用されてよい。いくつかのケースでは、親オブジェクトのセキュリティ特徴は、要求時に、または他の決められた方式で、子オブジェクトに自動的に伝搬(propagate)されてよい。セキュリティ特徴は、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。ユーザが権限付与されている場合、データ格納サービスシステムは、決められた権限付与および許可された権利に従って、サービスを通してデータ格納サービスシステム権限付与証明書を使用する、単一のスーパーユーザアカウントを介してサービスにアクセスすることができる。
【0009】
付随する特徴の多くは、添付の図面と関連させて考察される以下の詳細な説明を参照することによってよりよく理解されるので、より容易に評価されよう。
【0010】
本発明の説明は、添付の図面に照らして読まれる以下の詳細な説明からよりよく理解されよう。
【発明を実施するための最良の形態】
【0011】
添付の図面中の同様の部分を示すために、同様の参照番号が使用される。
【0012】
添付の図面と関連させて以下で提供される詳細な説明は、本発明の例の説明として意図されており、本発明の例が構成または利用され得る唯一の形態を表すことは意図されていない。説明は、例の機能および例を構成し動作させるステップのシーケンスを説明する。しかし、同じまたは等価の機能およびシーケンスが、異なる例によって達成されてもよい。
【0013】
本発明の例は、ネットワーク接続を介してアクセス可能な複数の営業アプリケーションを有する企業環境で実施されるものとして本明細書では説明および例示されるが、説明される企業環境は、限定ではなく、一例として提供されており、任意の数およびタイプのサービスが、以下でさらに説明される任意の数の特徴および/または特徴の組合せで提供されてよいことを理解されたい。
【0014】
図1および以下の説明は、企業環境内のデータ格納サービスシステムについての簡潔な全般的説明を提供することを意図している。図1に示されるように、1つまたは複数のユーザデバイス120は、雲によって表されるネットワーク133を介して企業システム130に接続してよく、接続135を介して企業システムに直接的に接続してよく、企業システムの一部としてよく、または任意の適切な方式で企業システムにアクセスしてよい。
【0015】
ネットワーク133は、ルータ、ゲートウェイ、およびハブなどの、多くのよく知られた構成要素を含んでよく、ユーザデバイス120が有線および/または無線媒体を介して通信することを可能にする。ネットワーク133は、インターネットなどのワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)を含んでよいが、その他のタイプのWAN、LAN、無線ネットワーク、電話回線、シリアルおよび/またはパレラルケーブル、同軸ケーブル、ならびにそれらの任意の組合せを含む、適切なプロトコルを使用する様々なその他の通信システムおよび/または方法が使用されてもよい。
【0016】
各ユーザデバイス120は、企業システム130から入手可能なサービスへのアクセスを提供するために、適切なコンピューティング環境を提供することができる。図1のユーザデバイス120および企業システム130、ならびに以下の説明は、データストアシステムの全部または一部が実施され得る適切なコンピューティング環境についての簡潔な全般的説明を提供することを意図している。
【0017】
図1のユーザデバイス120および企業システム130の動作環境は、適切な動作環境の一例に過ぎず、動作環境の使用または機能の範囲に関するどのような限定を示唆することも意図されていない。本明細書で説明されるユーザインターフェース編集アプリケーションと共に使用するのに適し得るその他のよく知られたコンピューティングシステム、環境および/または構成は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能消費者家電、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを、それらに限定せずに含む。
【0018】
図1を参照すると、企業システム130へのユーザアクセスを実施するための例示的なシステムは、ユーザコンピューティングデバイス120などのユーザデバイスを含む。その最も基本的な構成では、ユーザデバイス120は一般に、少なくとも1つの処理ユニット102およびメモリ104を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図1においては、ライン106によって示されている。加えて、デバイス120は、追加の特徴および/または機能を有してもよい。例えば、デバイス120は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ(例えば、リムーバブルおよび/またはリムーバブルでない)を含んでもよい。そのような追加のストレージは、図1においては、リムーバブルストレージ108およびリムーバブルでないストレージ110によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法および技術で実施される、揮発性および不揮発性、リムーバブルおよびリムーバブルでない媒体を含む。メモリ104、リムーバブルストレージ108、およびリムーバブルでないストレージ110はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を保存するのに使用され、デバイス120によってアクセスされることができるその他の任意の媒体を、それらに限定せずに含む。そのようなコンピュータ記憶媒体はどれも、デバイス120の部分であってよい。
【0019】
デバイス120は、デバイス120がネットワーク133を介してその他のコンピューティングデバイスなどのその他のデバイスと通信することを可能にする通信接続112も含むことができる。通信接続112は、通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波などの変調データ信号またはその他の転送機構に具現し、任意の情報配送媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するための方式で設定または変更された特徴の1つまたは複数を有する信号を意味する。限定せずに、例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、無線周波、赤外線、およびその他の無線媒体などの無線媒体とを含む。本明細書で使用されるコンピュータ可読命令という用語は、記憶媒体および通信媒体を共に含む。
【0020】
デバイス120は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および/またはその他の入力デバイスなどの入力デバイス114を有してもよい。1つまたは複数のディスプレイ、スピーカ、プリンタ、および/またはその他の任意の出力デバイスなどの出力デバイス116も含まれてよい。
【0021】
一例では、ユーザデバイスは、通信接続112を使用して、ネットワーク133を介して企業システム130にアクセスし、企業システムによってサポートされる複数の企業アプリケーション150の1つまたは複数のサービスを要求することができる。複数の企業アプリケーション150をサポートするため、企業システム130は、ユーザデバイス120を参照して上で説明されたものと同様の、または異なるコンピューティングデバイスとすることができる。
【0022】
図1に示されるように、企業システム130は、企業アプリケーション150から入手可能なサービスを提供するために、適切なコンピューティング環境を提供することができる。必須ではないが、企業システムのデータ格納サービスシステム160およびその他の構成要素は、1つまたは複数のコンピュータまたはその他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的文脈で説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラムモジュールの機能は、様々な環境で望ましいように組み合わせてよく、または分散してもよい。
【0023】
図1を参照すると、企業システム130の企業アプリケーション150からサービスを提供するための例示的なシステムは、コンピューティングデバイス130などのコンピューティングデバイスを含む。その最も基本的な構成では、コンピューティングデバイス130は一般に、少なくとも1つの処理ユニット132およびメモリ134を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ134は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図1においては、ライン136によって示されている。加えて、デバイス130は、追加の特徴および/または機能を有してもよい。例えば、デバイス130は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ(例えば、リムーバブルおよび/またはリムーバブルでない)を含んでもよい。そのような追加のストレージは、図1においては、ストレージ138によって示されている。デバイス130は、デバイス130がネットワーク133を介して、その他のコンピューティングデバイスなど、その他のデバイスと通信することを可能にする通信接続142を含むこともできる。
【0024】
デバイス130は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および/またはその他の入力デバイスなどの入力デバイス144を有してもよい。1つまたは複数のディスプレイ、スピーカ、プリンタ、および/またはその他の任意の出力デバイスなどの出力デバイス146も含まれてよい。
【0025】
当業者であれば、プログラム命令を保存するために利用される記憶装置がネットワーク上に分散され得ることを理解されよう。例えば、リモートコンピュータは、ソフトウェアとして記述されるプロセスの一例を保存することができる。ローカルまたはターミナルコンピュータは、企業システム103を介したものとすることができる、リモートコンピュータへのアクセスを行うことができ、プログラムを実行するためにソフトウェアの一部または全部をダウンロードすることができる。代替として、ローカルコンピュータは、必要に応じてソフトウェアの一部をダウンロードすることができ、またはソフトウェア命令のいくらかをローカル端末で実行し、いくらかをリモートコンピュータ(またはコンピュータネットワーク)で実行することによって、分散的に処理することができる。当業者であれば、当業者に知られた従来の技法を利用することによって、ソフトウェア命令の全部または一部が、DSPまたはプログラマブル論理アレイなどの専用回路によって実施されてよいことも理解されよう。
【0026】
ユーザデバイス120は、複数のアプリケーション150の1つまたは複数のサービスにアクセスするために企業システム130と対話することができ、複数のアプリケーションは、メモリ134、ストレージ138に存在してよく、または通信接続などを介して企業システム130によってリモートにアクセスされてもよい。図1は企業システム130のメモリ150に存在するとしてサービスアプリケーション150を示しているが、アプリケーション150の1つまたは複数が別個のメモリに存在してよいこと、かつ/または通信接続などの接続を介してアクセス可能とすることができる別個のコンピューティングデバイスに存在してよいことを理解されたい。
【0027】
アプリケーション150は、ユーザデバイス120に任意の適切なサービスを提供することができる。アプリケーション例は、SAPまたはSIEBELによって提供されるような営業システムなどの企業アプリケーションを含むことができる。その他の例は、企業の「独自作成」アプリケーション、およびワールドワイドウェブサイトなどのインターネットサービスなどを含むことができる。
【0028】
企業システムとの対話は、図1に示されるポータル170を介したものであってよい。ポータルは、企業システムへの通路として機能することができ、かつ/または企業システムとの対話を円滑化することができる。適切なポータルの一例は、ワシントン州レッドモンドのMicrosoft Corp.から入手可能なSharePoint System(商標)を含むことができる。ポータル170を介したユーザ要求に応答して、プロセッサ132は、1つもしくは複数のアプリケーション150にアクセスし、かつ/または1つもしくは複数のアプリケーション150を実行して、ユーザデバイス120が、企業システムのメモリ134もしくはストレージ138などに保存され得る、またはデータ格納サービスシステム160によってリモートにアクセスされ得る、データにアクセスし、またはメソッドを実行することを可能にすることができる。
【0029】
ユーザデバイス120は、所望のサービスにアクセスするために、所望のアプリケーションを直接実行することができる。しかし、図1に示されるように、企業システム130は、ユーザデバイス120と1つまたは複数のアプリケーション150の間のインターフェースとしてデータ格納サービスシステム160を提供することができる。この方式では、データ格納サービスシステムは、ユーザと複数のアプリケーションの間の仲介者として機能することによって、複数のアプリケーション150でのユーザエクスペリエンスを統一して、ユーザには簡単かつ統一されたインターフェースを提供することができ、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成することができる。
【0030】
任意の適切なデータ格納サービスシステム160が提供されてよい。1つの適切なデータ格納サービスシステムが、2005年7月28日に出願された特許文献2でさらに説明されており、本明細書では明瞭にするために簡潔に説明される。統一された対話をユーザに提供するため、データ格納サービスシステム160は、メタデータストア180を用いてサービス対話詳細を維持するために、サービスシステムモジュール190を含むことができる。データ格納サービスシステム160は、サービスへのアクセスを求めるユーザ要求162を受け取り、関連メタデータストア180にアクセスし、メタデータを使用して、ユーザの簡単な(おそらくは統一された)要求162を、アプリケーション150の特定の要求されたサービスに適した通信164に変換する、アプリケーションプログラムインターフェースを提供することができる。
【0031】
データストア180は、利用可能アプリケーション、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどの表示を提供することができる。
【0032】
利用可能なアプリケーション、サービス、およびデータなどは、特定のタイプのオブジェクトとして表されることができる。例えば、システムオブジェクトにアクセスする要求は、メタデータストアにおいて関連付けられるアプリケーションにアクセスする要求を表すことができる。アプリケーション150の1つなどのアプリケーションは、永続的かつ/または一時的データを使用して実施される計算ロジックの集まりとして表されることができる。別の例では、エンティティオブジェクトにアクセスする要求は、1つまたは複数のアプリケーション150のサービスを介したものとすることができる、関連フィールドまたはデータおよびメソッドまたはロジック定義の集まりにアクセスする要求を表すことができる。別の例では、メソッドオブジェクトにアクセスする要求は、アプリケーションプログラムインターフェースに関連付けられたデータ、またはその他の任意の適切なメソッドにアクセスする要求を表すことができる。別の例では、パラメータにアクセスする要求は、メソッドまたはシステムに関連付けられた単一フィールドまたはデータにアクセスする要求を表すことができる。別の例では、タイプ記述子オブジェクトにアクセスする要求は、特定のシステムに関連する特定のタイプまたはカラム区切り情報内の特定のカラムのすべてのデータなど、特定のタイプのすべてのデータにアクセスする要求を表すことができる。
【0033】
メタデータストア180の一例が、図2のテーブル200に示されている。メタデータストアでは、ユーザが利用可能なサービスを表すオブジェクト表示は、識別情報およびその他の任意の情報に関連付けられることができ、これらの情報は、ユーザからの統一された簡単な要求162をアプリケーション150によって要求されるフォーマットをとる複雑なコール164に変換するために、サービスシステムモジュール190によって使用されることができる。
【0034】
図2に示されるように、メタデータストア180は、システム識別子202をシステム記述子206および/またはその他の任意の適切な情報の1つまたは複数と関連付ける。システム識別子202は、所望システムの任意の適切な識別子であってよい。システムは、アプリケーション150の全体アプリケーションであってよく、または1つまたは複数のアプリケーション150の特定のサービスまたは機能であってよい。システム記述子206は、アプリケーション150のうちの関連アプリケーションのタイプおよび/もしくは汎用機能、目的、または名前についての任意の適切な記述とすることができる。例えば、システムは、SAPおよびSiebelなどのLOBまたはその他のアプリケーションのタイプを識別するシステム記述子に関連付けられた一意の識別子とすることができる。
【0035】
図2に示されるように、メタデータストア180は、システムインスタンス識別子203を、接続情報204、システム識別子202、およびその他の任意の適切な情報の1つまたは複数に関連付けることができる。システム識別子によって識別されるシステムは、接続情報204がシステムインスタンス識別子203およびシステム識別子202に関連付けられるときにインスタンス化されてよい。例えばSAPなどの、単一のシステム識別子によって識別される単一のシステムは、例えば異なる接続を介してアクセス可能な複数のバージョンなどの複数のインスタンスを企業システムにわたって有してよく、または異なる接続を介してアクセス可能な同じシステムを有してよいことを理解されたい。この方式では、各システム識別子は、0以上のシステムインスタンス識別子に関連付けられることができる。接続情報204は、データ格納サービスシステムが、ネットワークロケーション、ホストサーバ名、ポート番号、データ格納サービスシステム証明書、およびシステムにどのように接続するかに関する情報など、関連システムインスタンスと通信および/または対話することを可能にする任意の適切な接続情報であってよい。データ格納サービスシステム証明書は、データ格納サービスシステムが関連システムにアクセスするための認証および/または権限付与を含むことができる。本明細書で使用される場合、認証は、要求デバイスまたはユーザの識別を意味し、権限付与は、要求ユーザまたはデバイスが要求されたサービスにアクセスする許可または権利を有することの確認を意味する。インスタンス化の表示または説明は、接続情報および/またはシステム記述子に含まれることができる。
【0036】
図2のテーブル200に示されるように、メタデータストア180は、エンティティ識別子212を、エンティティタイプ記述子216およびシステム識別子202などの1つまたは複数に関連付けることができる。エンティティ識別子212は、システム識別子202によって識別される関連システムにおいて利用可能な関連フィールドもしくはデータおよび/またはメソッドもしくはロジック定義の特定の集まりを示す、任意の適切な識別子とすることができる。この方式では、各システム識別子202は、0以上のエンティティ識別子212に関連付けられることができる。例えば、SAPシステムは、顧客エンティティ、注文エンティティ、および製品エンティティなどを示す1つまたは複数の関連エンティティ識別子を有することができる。メソッド識別子は、所望データを検索するために実行され得るシステムの1組のロジックまたは命令を示す任意の適切な識別子とすることができる。エンティティタイプ記述子216は、関連メソッドが実行された場合に検索されるデータまたはデータフィールドの任意の適切な表示とすることができる。エンティティのインスタンスは、エンティティオブジェクトで定義されたメソッドの1つを実行することによって獲得され得る、エンティティ定義内の各フィールドの実際の1組の値である。
【0037】
図2のテーブル200に示されるように、メタデータストア180は、メソッド識別子222を、エンティティ識別子212およびパラメータリスト226などの1つまたは複数に関連付けることができる。この方式では、システムのアプリケーションプログラムインターフェースについてのメタデータは、メソッドと呼ばれる。エンティティ識別子212は、特定の情報を検索するために識別されたメソッドを使用することができる関連エンティティを表すことができる。この方式では、各エンティティ識別子212は、0以上のメソッド識別子222に関連付けられることができる。メソッド識別子222は、指示されたエンティティにアクセスし、かつ/または指示されたエンティティを操作するために、アプリケーション150の1つの一部として実行され得る1組のロジックまたは命令を示す任意の適切な識別子とすることができる。メソッド識別子は、読み取り、書き込み、更新、および削除など、メソッドのタイプを示すことができる。例えば、SAPシステムの顧客エンティティは、顧客生成メソッドおよび顧客表示メソッドなどの1つまたは複数を提供することができる。パラメータリスト216は、識別されたメソッドを起動するのに必要なことがあるパラメータならびに/またはその必要構造および/もしくはフォーマットを示す任意の適切なフォーマットの任意の適切なパラメータリストとすることができる。例えば、パラメータリストは、1つもしくは複数のパラメータオブジェクトの識別子ならびに/または必要なパラメータのフォーマットおよびタイプの定義を含むことができる。しかし、パラメータオブジェクト自体が必要なパラメータのフォーマットおよび/またはタイプの定義を提供してもよいことを理解されたい。
【0038】
単一のシステムAPIが、企業システム内で異なるセマンティクスと共に使用されてよい。例えば、同じAPIが、エンティティの特定のインスタンスを見つけるためばかりでなく、(入力としてワイルドカードを使用するなどして)エンティティの多くのインスタンスを見つけるために使用されてもよい。メタデータストア内のキャッシュ空間を節約するため、メソッドインスタンスの概念が、メソッドとメソッドの各パラメータのデフォルト値の組との間の関連の表現として導入されてよい。したがって、同じメソッドに関連付けられた2つのメソッドインスタンスの起動は、2つのまったく異なる結果を生じさせることがある。
【0039】
図2のテーブル200に示されるように、メタデータストア180は、パラメータ識別子232を、パラメータ記述子234およびメソッド識別子222などの1つまたは複数に関連付けることができる。メソッド識別子222は、メソッドの起動中にそのパラメータオブジェクトを使用することができる1つまたは複数のメソッド識別子を示すことができる。この方式では、各メソッド識別子222は、0以上のパラメータ識別子232に関連付けられることができる。パラメータ識別子232は、関連パラメータを識別する任意の適切な識別子とすることができる。パラメータ記述子234は、パラメータタイプ(例えば、文字列、整数、および実数など)およびパラメータフォーマットなど、関連パラメータを記述する任意の適切な情報とすることができる。
【0040】
図2のテーブル200に示されるように、メタデータストア180は、パラメータタイプ識別子242を、タグ244、パラメータ識別子232、およびデフォルト値248などの1つまたは複数に関連付けることができる。パラメータタイプ識別子242は、関連パラメータタイプを識別する任意の適切な識別子とすることができる。一例では、パラメータタイプ識別子は、文字列、整数、および実数などの、パラメータがとることのできる値のタイプを示すことができる。別の例では、パラメータタイプ識別子は、コスト、個人名、製品コード、および連絡先情報など、パラメータ値に関連付けられるデータのタイプを示すことができる。パラメータタイプの任意の適切な組が、環境およびアプリケーションに従って使用されてよいことを理解されたい。例えば、1つまたは複数のパラメータタイプ識別子242は、別のパラメータタイプ識別子242と関連付けられてよく、かつ/または単一のパラメータ識別子232と関連付けられてもよい。この方式では、パラメータタイプ識別子242および関連データは、複雑なパラメータでファイルを表すことができる。タグ244は、関連パラメータタイプが識別子か、フィルタかなど、パラメータタイプのタイプまたはその他の特徴の任意の適切な表示とすることができる。パラメータ識別子246は、例えば1つまたは複数のパラメータ識別子232など、そのパラメータタイプを有するパラメータ識別子を示すことができる。デフォルト値248は、値が保存または指定されていない場合の、パラメータタイプに関連付けられたパラメータのデフォルト値を示す任意の適切なデフォルトまたはヌル値とすることができる。例えば、デフォルト値は、正確な値とすることができ、かつ/またはパラメータの値のフォーマットを示すことができる。
【0041】
図2は、図1のメタデータストア180を単一のテーブル200として示しているが、リレーショナルデータベース、オブジェクト指向データベース、非構造化データベース、メモリ内データベース、またはその他のデータストアの1つまたは複数を含む、任意の適切なフォーマットの任意の適切なデータストアが、メタデータストアなどを保存および伝達するために使用されてよいことを理解されたい。ストレージアレイが、ASCIIテキスト、バイナリファイル、通信ネットワークを介して伝送されるデータ、またはその他の任意のファイルシステムなどのファイルシステムを使用して構成されてよい。上記のデータストアのこれらの可能な実施にもかかわらず、本明細書で使用されるデータストアおよびストレージアレイという用語は、コンピューティングデバイスによってアクセス可能な、任意の方式で収集および保存された任意のデータを指す。
【0042】
図2におけるエントリ項目およびテーブル200が組織される方式は、例示および説明を容易にする目的でのみ提供されており、提供される特定のデータ項目およびそれらが組織される方式は、それらが利用される特定の環境および言語に応じて変化し得ることを理解されたい。一例では、メタデータストアは、シリアル化メタデータオブジェクト定義を含むXMLファイルとして実施されてよい。各アプリケーションは、1つまたは複数のシステムを有することができ、各システムは、例えば、エンティティ、メソッド、パラメータ、およびパラメータタイプなど、1つまたは複数の階層化オブジェクトを含む。
【0043】
メタデータストア180にデータ投入することによって、1つまたは複数のアプリケーション150は、企業システム130に登録されることができ、例えば、システムオブジェクトは、メタデータストア内でインスタンス化され、エンティティ、メソッド、およびパラメータなど、1つまたは複数のより低い階層のオブジェクトに必要に応じて関連付けられることができる。この方式では、ユーザは、図1のサービスシステムモジュール190に、サービスにアクセスするための簡単な要求(例えば、要求162)を提供することができる。メタデータストア180内のオブジェクトおよび関連メタデータを参照することによって、サービスシステムモジュール190は、ユーザが利用可能なサービスを提供するしばしば異種の個々のアプリケーションのフォーマット、言語、およびセマンティクスについての詳細な知識を有するようユーザに要求することなく、統一された要求162を、適切なフォーマットの複雑なアプリケーション固有の要求164に変換することができる。
【0044】
データ格納サービスシステム160は、ユーザ要求162を、フォーマットされたセマンティクス的に正しい要求164に変換することができ、アプリケーション150と対話するので、アプリケーション150は、メタデータストア180に保存される接続情報204のデータ格納サービスシステム証明書などを介して、データ格納サービスシステムを認証し、かつ/または権限付与することができる。しかし、データ格納サービスシステム160が認証され、権限付与されたとしても、これは、要求ユーザ120がサービスにアクセスする権限を付与されたことも意味するわけではない。上で述べられたように、ユーザの識別情報および個人証明書のアプリケーションへの転送は、難点になることがある。さらに、複数のコンピュータにわたって多層システム内でユーザ識別情報を維持することは、技術的に課題が多いものとなり得る。したがって、サービスシステム160は、関連アプリケーション150のサービスにアクセスする前に、要求ユーザの適切な権限付与を決定することができる。この方式では、ユーザ権限付与のための統一された対話が、複数の異種アプリケーションにわたって提供されることができ、統一された対話は、アプリケーション毎に複数のユーザアカウントを管理し、またアプリケーション毎、ユーザ毎に複数のユーザ証明書を管理する必要を軽減することができる。
【0045】
要求されたサービスへのユーザのアクセスに権限付与するため、データ格納サービスシステム160は、権限付与モジュール(図示されず)を提供することができ、または権限付与サービスは、図1に示されたサービスシステムモジュール190の機能の一部とすることができる。より詳細には、サービスシステムモジュールは、識別されたユーザデバイスが要求されたサービスに対する適切な権利を有することを確認することができる。権限付与情報は、サービスのオブジェクト識別子を、1つまたは複数のユーザ識別子および/または権限付与ユーザの1つまたは複数の権利もしくは許可された行為に関連付けことなどによって、メタデータストア180に保存されることができる。
【0046】
図2のテーブル200に示されるように、メタデータストア180は、(システム識別子202、エンティティ識別子212、メソッド識別子222、パラメータ識別子232、およびパラメータタイプ識別子242などの)オブジェクト識別子を、ユーザ識別子250および識別されたユーザの1つまたは複数の権利252または許可された行為などの1つまたは複数に関連付けることができる。ユーザ識別子250は、すべてのユーザ識別子を、または関連サービスにおいて関連する権利を有するユーザ識別子だけを列挙することができる。ユーザ識別子が肯定的権利(例えば、オブジェクトのサービスにアクセスする権利)を有するユーザ識別子だけを含む場合、ユーザ識別子250および関連する権利252は、アクセス制御リスト(ACL:access control list)と呼ばれることができる。このように、メタデータストア内の各保護可能オブジェクトは、関連するACLを有することができ、各ACLは、関連ユーザが何を行うことができるかを詳述する関連する権利の組を有するユーザ識別子のデータ構造または記録である、1つまたは複数のアクセス制御エントリ(ACE:access control entry)を含む。
【0047】
ユーザ識別子は、個人、グループ、デバイス、接続、ロール、ソフトウェアアプリケーション、要求時間、およびユーザデバイスロケーションなどの1つまたは複数を示すユーザコンテキスト記述子などの任意の適切なユーザ識別子とすることができる。簡単な一例では、ユーザ識別子は、ポータル170を用いる個人アカウントとすることができる。より複雑な一例では、ユーザ識別子は、1日の指定時間範囲(例えば業務時間)内における、(必要とされるセキュリティレベルを有し得る)特定の接続を介したポータルを用いるユーザアカウントの組合せとすることができる。この方式では、サービスへのアクセスは、基礎をなすバックエンドアプリケーション150のいずれか1つまたは複数によって利用可能なものよりも細かいものであり得る粒度を用いて制御されることができる。
【0048】
ACE内の各ユーザ識別子は、示されたユーザによって許可された行為、権限、および/または特権を示す関連する1つまたは複数の権利表示252を有することができる。権利表示252は、オブジェクトに関連付けられた権利の任意の適切な表示とすることができる。例えば、オブジェクトに関連付けられた権利は、オブジェクトを見ること(例えば、オブジェクトを実行してデータを獲得することによって実行され得る、オブジェクトによって表されるバックエンドシステムに保存されたデータを見ること)、オブジェクトを編集すること、オブジェクト機能を有効化または無効化すること、オブジェクトの許可を設定すること(例えば、関連ACLを変更すること)、オブジェクトを実行すること(例えば、オブジェクトがメソッドである場合)、およびオブジェクトのコピーを表示することのうちの1つまたは複数を含む。いくつかのケースでは、ACEにおいて列挙された肯定的権利の欠如が、指示ユーザ識別子に権利が提供されないことを示すことができる。その他のケースでは、否定的権利は、NOT editing the objectなどとして、ACEに含まれることができる。この後者の例は、オブジェクトが、関連ACLにおいて別途指定されない限りすべてのユーザに与えられるデフォルトの権利の組を有する場合に役に立つことがある。
【0049】
メソッドなどのオブジェクトが関連ACLを有さなくてもよいことを理解されたい。データ格納サービスシステム160は、任意の適切な方式で、関連ACLの欠如を解釈することができる。例えば、ACLなしは、すべてのユーザがすべての権利または所定もしくはデフォルトの1組の権利を有することができることを示してよく、これは、フィルタオブジェクトの場合に適切なことがある。別の例では、関連ACLなしは、ユーザがどのような権利も有さないことを示してよい。しかし、メタデータストアにおいてオブジェクト自体を変更する権利など、いくつかのデフォルトの権利が、オブジェクト毎に自動的にインスタンス化されてよいことを理解されたい。
【0050】
単一のオブジェクト(例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど)に関連付けられたACL例が、図3のテーブル300に示されている。ACL300は、1つまたは複数のACE302、304、306からなるリストを含む。各ACEは、関連ACEを識別するACE識別子によって表されることができる。一例では、ACE識別子は、ACE自体、すなわち、権限付与ユーザ識別子と各関連ユーザ識別子についての関連権利とからなるリストとすることができる。図3に示されるように、ACE識別子は、ユーザ識別子と権利とからなる関連ACEリストを保存するデータ構造を示す識別子とすることができる。例えば、ACE302は、ユーザ識別子322、324と関連権利識別子326、328とを含むデータ構造320を示すことができる。同様に、ACE306は、ユーザ識別子362、364と関連権利識別子366、368とを含むデータ構造360を示すことができる。要求ユーザに関連付けられた正しいACEの発見を簡単にするため、ACE識別子302、304、306は、ユーザ識別子の少なくとも一部、または要求ユーザから受け取られ、もしくは要求ユーザについて発見されることができる、その他の何らかのユーザ表示を含むことができる。
【0051】
1つまたは複数のオブジェクトが同じACLを共有してよく、かつ/または1つまたは複数のACLが同じACEを共有してよいことを理解されたい。このようにして、ユーザのグローバル権利は、複数のACLおよび/もしくはACEを有する個々のサービスに適合させられることができ、または単一のACEを参照する複数のACLを有するすべてのサービスに対して一括して変更されることができる。
【0052】
オブジェクトがメタデータストアにおいてインスタンス化される場合、サービスシステムモジュール190は、そのオブジェクトに対するデフォルトセキュリティ設定を決定することができる。デフォルトセキュリティ設定は、異なるタイプのオブジェクトに対して同じでも、または異なってもよい。例えば、新しいシステムオブジェクトは、オープン(または無)セキュリティ設定を有することができ、これは、ACLにおいて別途指示されない限り、すべてのユーザがすべての権利を有することを意味する。しかし、エンティティ、およびシステムに関連付けられたメソッドインスタンスは、クローズセキュリティ設定を有することができ、これは、ACLにおいて別途指示されない限り、ユーザがそのオブジェクトにおける権利を有さないことを意味する。デフォルトセキュリティ設定が必要に応じて使用されてよいことを理解されたい。
【0053】
いくつかのケースでは、オブジェクトは、そのオブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否するために、親オブジェクトから得られたデフォルトセキュリティ設定を有することができる。例えば、上で述べられたように、オブジェクト階層は、システム、エンティティ、メソッド、パラメータ、パラメータタイプ、およびその他の任意の適切なオブジェクトタイプの任意の組合せを含むことができる。したがって、インスタンス化されたエンティティオブジェクトは、親システムオブジェクトからセキュリティまたはACLを継承することができる。一例では、セキュリティ設定(例えばACL)は、直接の親からのみ継承されてよい。別の例では、ACLは、オブジェクトの1つまたは複数の任意の祖先(親、親の親など)から継承されてよい。例えば、パラメータなどのより低い階層のオブジェクトは、親オブジェクトからのみ、例えば関連メソッドオブジェクトからのみACLを継承することができる。メソッドオブジェクトは、独自のACLを有してもよく、または親の、例えばエンティティオブジェクトのACLを参照してもよい。別の例では、パラメータなどのより低い階層のオブジェクトは、任意またはすべての祖先オブジェクトからACLを継承することができる。より詳細には、より低い階層のオブジェクトは、親から、例えばメソッドオブジェクトからACLを継承することができ、それを、親の親からの、例えばエンティティオブジェクトからのACLと組み合わせることができ、さらにそれを、親の親の親からの、例えばシステムオブジェクトからのACLと組み合わせることができる。祖先オブジェクトからの複数のACLの組合せは、組み合わされるACLに含まれるすべてのACEの結合(union)、重複ACEを除去した合併(merge)、すべての組み合わされるACLと無矛盾のユーザおよび権利の最小量を選択したACLの共通部分(intersection)などの任意の適切な組合せとすることができる。
【0054】
いくつかのケースでは、ACLおよび/またはACEなどのセキュリティ設定の継承が、オブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否することを可能にするため、追加または代替の階層が提供されてよい。例えば、ACLおよび/またはACEが、所定の方式でオブジェクト階層の外部またはオブジェクト階層の内部において継承されることを可能にする、セキュリティ階層が生成されてよい。
【0055】
一例では、メタデータストア内の各保護オブジェクトは、オブジェクト識別子と関連付けられた独自のACLを有さなくてよい。いくつかのケースでは、オブジェクトは、別のオブジェクトのACLを借りること、または参照することができる。「他のオブジェクト」は、独自のACLを有するほど十分に重要な直近のメタデータオブジェクトとして決定されることができる。直近のメタデータオブジェクトは、任意の適切な方式で定義されることができる。例えば、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の祖先(例えば、親および親の親など)として定義されることができる。別の例では、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の親類(例えば、親、子、および親の親など)として定義されることができる。別の例では、直近のオブジェクトは、そのオブジェクトに最も類似したメタデータストア内の別のオブジェクトとして定義されることができる。例えば、オブジェクトがSAPアプリケーションの顧客リストを示すパラメータである場合、直近のオブジェクトは、別のSAPアプリケーションまたはSIEBELアプリケーションなど類似のシステムからの顧客パラメータとすることができる。
【0056】
1つのオブジェクトから別のオブジェクトへの階層的かつ遺伝的セキュリティを実施するため、セキュリティ階層が生成されることができる。任意の適切な階層が使用されてよい。例えば、図4は、継承を定義するのに使用され得るセキュリティオブジェクトクラスの階層例400を示している。非保護オブジェクト406に加えて、階層400は、アクセス制御メタデータオブジェクト402および個々にセキュアである(individually securable)メタデータオブジェクト404の2つの抽象オブジェクトクラスを導入する。アクセス制御メタデータオブジェクトは、ACLのソースにかかわらず、ACLを介してなど、アクセス制御を必要とするオブジェクトのクラスを表すことができる。それ自体がアクセス制御メタデータオブジェクトである個々にセキュアであるメタデータオブジェクト404は、それが所有するACLを供給する。
【0057】
メタデータオブジェクト406は、セキュリティまたはユーザ権限付与を必要としないオブジェクトを分類するために使用することができる。メタデータオブジェクト406として分類され得るオブジェクトの一例は、フィルタとすることができる。
【0058】
個々にセキュアであるメタデータオブジェクトではないアクセス制御メタデータオブジェクト402は、独自のACLを所有せず、むしろ個々にセキュアであるメタデータオブジェクトなどの別のオブジェクトからのACLに依存する。この方式では、アクセス制御メタデータオブジェクトは、個別に保護可能な(すなわちACLを所有する)直近の祖先へのリンクを提供するメソッドを実施するために、サブクラサ(subclasser)を使用することができる。アクセス制御メタデータオブジェクトとして分類され得るオブジェクトの一例は、動作オブジェクトおよび/またはパラメータオブジェクトとすることができる。
【0059】
一例では、アクセス制御メタデータオブジェクトは、APIとして実施されることができる。アクセス制御メタデータオブジェクト402APIは、1つまたは複数のメソッドまたは関数を提供することができる。メソッドは、直近の個別に保護可能な祖先から適切なACLを取り出すことができるget access control listを含むことができる。アクセス制御メタデータオブジェクト402は、所望ACLのオーナを決定するget nearest individually securable ancestorなどのメソッドを提供することができる。上で述べられたように、直近の祖先は、任意の適切な方式で決定されてよい。例えば、直近の祖先は、個別保護可能オブジェクトである直近の親類(例えば、子、親、および親の親など)とすることができ、またはより高いレベルの階層の直近の祖先(例えば、親および親の親など)とすることができる。アクセス制御メタデータオブジェクトへの近接度は、オブジェクトのタイプまたは「世代」数もしくはオブジェクトタイプ階層(例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど)内での隔たりのレベルなど、任意の適切な方式で決定されてよい。
【0060】
個別保護可能メタデータオブジェクト404は、独自のACLを所有する。個別保護可能メタデータオブジェクトは、直近の個別に保護可能な祖先を要求された場合、その自体を返すことができ、このことは、アクセス制御メタデータオブジェクトの定義を満たすことができる。同様に、個別保護可能メタデータオブジェクトは、個別保護可能オブジェクトが必要に応じて独自のACLを子にコピーまたは伝搬することができるように、個別保護可能メタデータオブジェクトのすべての個別に保護可能な子オブジェクトを供給することを、サブクラスに要求することができる。個別保護可能メタデータオブジェクトとして分類し得るオブジェクトの一例は、システムオブジェクト、エンティティオブジェクト、メソッドオブジェクト、およびメソッドインスタンスオブジェクトなどを含むことができる。
【0061】
アクセス制御メタデータオブジェクトと同様に、個別保護可能メタデータオブジェクトは、APIとして実施されることができる。個別保護可能メタデータオブジェクト404APIは、1つまたは複数のメソッドまたは関数を提供することができる。個別保護可能メタデータオブジェクトは、それ自体でアクセス制御オブジェクトであるので、get access control listおよびget nearest individually securable ancestorなど、アクセス制御メタデータオブジェクトによって提供される関数またはメソッドの1つまたは複数を「継承」することができる。個別保護可能メタデータオブジェクトは、アクセス制御メタデータオブジェクトから継承されるメソッドに加えてまたは代わりに、その他の任意の適切な関数および/またはメソッドを提供することもできる。例えば、メソッドは、ユーザが、個別保護可能オブジェクトに所有または関連付けられたアクセス制御リスト(および関連するアクセス制御エントリ)にデータ投入すること、かつ/またはそれらを変更することを可能にする、set access control listを含むことができる。個別保護可能メタデータオブジェクト404は、個別保護可能メタデータオブジェクトとして分類されるオブジェクトの子にアクセス制御リストを伝搬させることができる、copy access control list to childrenなどのメソッドを提供することができる。ACLの伝搬は、オブジェクトのすべての子に影響を与えることができ、または(パラメータリスト入力などを介するなどして)所定の数の世代、所定の組の子にのみ影響を与えることができる。
【0062】
個別保護可能メタデータオブジェクトの子を決定するため、個別保護可能メタデータオブジェクトは、個別保護可能メタデータオブジェクトの子の子を取得するメソッドを提供することができる。個別保護可能メタデータオブジェクトとして分類されたオブジェクトの子は、任意の適切な方式で決定されてよい。例えば、子は、オブジェクト階層(例えば、システム、エンティティ、メソッド、およびパラメータなど)内で決定されたように、個別保護可能メタデータオブジェクトとして分類されたオブジェクトに依存するオブジェクトとして定義されることができる。
【0063】
図4のセキュリティ階層によって提供されるファクタリング(factoring)は、ACLが個別保護可能メタデータオブジェクト自体の上にあるので、アクセスチェックが、(例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの)オブジェクトメタデータ木を歩く必要なしに、できるだけ迅速に必要とされる場合に、オブジェクトが、個別保護可能メタデータオブジェクトAPIをサブ分類することを可能にすることができる。いくつかのケースでは、ACLに関連するストレージおよびそれを伝搬させる時間が重要となり得るので、オブジェクトは、個別保護可能メタデータオブジェクトの粒度が細かい場合、それをサブ分類するべきではない。加えて、アクセスチェックは、独自のACLを有する直近のオブジェクトを見つけるために、(例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの)メタデータオブジェクト階層を遡るのに費やされる時間を許容することができてもよい。
【0064】
オブジェクトのセキュリティ分類は、任意の適切な方式で示されてよい。例えば、メタデータストア180は、オブジェクトの分類を示すセキュリティタイプ表示を保存することができる。別の例では、オブジェクト識別子が、分類を示すことができる。別の例では、オブジェクト自体(例えば、オブジェクトを定義するコード)が、セキュリティ分類を定義し、かつ/または示すことができる。
【0065】
一例では、ACLおよび/またはACEは、アプリケーションプログラムインターフェースを使用して、企業システムによって実施されてよい。例えば、オブジェクトの各クラスまたはタイプは、関連するACL APIおよび/またはACE APIを有することができる。APIを共有するオブジェクトのクラスまたはタイプは、オブジェクト階層(例えば、システム、エンティティ、メソッド、およびパラメータなど)に関係してもよく、かつ/または保護可能なオブジェクト階層(例えば、アクセス制御メタデータオブジェクトおよび個別保護可能メタデータオブジェクトなど)に関係してもよい。ACLおよびACE APIは、基礎をなすオブジェクトの個別またはグループ特徴のいずれか1つまたは複数に従って生成されてよいことを理解されたい。図5は、ACL API500の一例の表現を示し、図6は、ACE API600の一例の表現を示している。APIは、任意の適切な入力、出力、および/または関数を有することができる。例えば、図5のACL API500の例に示されるように、APIの機能は、アクセスチェック502とすることができる。より詳細には、アクセスをチェックするため、ACL API500は、要求ユーザが関連ACEに載せられていること、および適切な権利に関連付けられていることを確認することができる。アクセスをチェックするため、ACL API500は、図6のACE API600を実施することができる。
【0066】
ACE APIは、実施された場合、識別設定606、識別取得608、権利設定602、および権利取得604などの機能のいずれか1つまたは複数を提供してよい。識別設定606は、ACEに載せられるユーザ識別子を生成するため、かつ/または変更するために実施されることができる。このようにして、特定のオブジェクトに対して権限付与された新しいユーザ識別子が、ACEに対する行もしくはレコードの追加もしくは削除を行うことによって、簡単に追加もしくは削除されることができ、またはACEの全体もしくは一部が、グループとして置き換えられることができる。識別取得608は、ACEに載せられた1つまたは複数のユーザ識別子からなるリストを見るため、かつ/または確認するために実施されることができる。権利設定602は、ACEに載せられた関連ユーザの権利を生成するため、かつ/または変更するために実施されることができる。このようにして、ユーザ識別子に関連付けられた権利機能は、特定のオブジェクトのACE内で所望の権利を追加または削除することによって、簡単かつ/または集中的に操作されることができる。権利取得機能604は、載せられたユーザ識別子に関連付けられた1つまたは複数の権利のリストを見るため、かつ/または確認するために実施されることができる。この方式では、図5のACL API500のアクセスチェック機能502は、何らかの方式でユーザが権限付与されていることを確認するために、識別取得機能608を実施することができる。特に、識別取得機能の結果は、要求ユーザのユーザ識別子と比較され得る権限付与ユーザの完全なリストを返すことができる。別の例では、要求ユーザの識別子が、ACE APIに提供されることができ、識別取得機能が実施されたとき、示されたユーザ識別子がACE内のユーザ識別子のリストに含まれているか、または含まれていないかの確認結果(verifier)が返されることができる。別の例では、要求されたサービスまたはアクセス権が、ACE APIに提供されることができ、ユーザ取得機能は、示されたアクセス権を有するユーザ識別子のリストを返すことができる。ACL API500のアクセスチェック502は、識別されたユーザがサービスにアクセスする適切な権利を有することを確認するために、権利取得機能604を実施することができる。一例では、ユーザ識別子が、ACE APIに提供されることができ、そのユーザの関連する権利が返され、その後、ユーザ要求で要求されたサービスと比較されることができる。別の例では、ユーザ識別子および要求されたサービスが、ACE APIに提供されることができ、権利取得機能は、示されたアクセス権が与えられているか、または与えられていないかの確認結果を返すことができる。ユーザおよび関連する要求されたアクセス権の権限付与は、任意の適切な方式で確認され得ることを理解されたい。
【0067】
図5のACL API500は、ACL APIを記述する1つまたは複数の表示または識別子を含むことができる。例えば、ACL APIは、ACL識別子504、ACLの説明またはACLに関連付けられたオブジェクトの表示とすることができるACL説明、ACLがメモリにキャッシュされているか、またはストレージから取り出さなければならないかなどを示すことができるキャッシュ表示508の1つまたは複数を含むことができる。
【0068】
図6のACE API600は、ACE APIを記述する1つまたは複数の表示または識別子を含むことができる。例えば、ACE APIは、ACE識別子610、メタデータオブジェクト識別子612、ユーザ識別子614、権利識別子616、およびシステムインスタンス識別子618などの1つまたは複数を含むことができる。ACE識別子610は、ACEを識別する任意の適切な識別子とすることができる。メタデータオブジェクト識別子612は、ACEに関連付けられた任意の適切なオブジェクト識別子とすることができる。例えば、メタデータオブジェクト識別子は、システムオブジェクトおよびエンティティオブジェクトなどへの参照を含むことができる。ユーザ識別子614は、権利識別子616によって示される権利の下で関連オブジェクトにアクセスする権限を付与されたユーザのリストを含むことができる。システムインスタンス識別子618は、いくつかのケースで、システムオブジェクトの特定のインスタンスを示すために使用されることができる。例えば、システムの複数のインスタンスが、メソッドインスタンスなどの単一の保護可能オブジェクトのためにインスタンス化されてよい。例えば、製品スタジオシステム(例えば、図1のアプリケーション150の1つ)のシステムインスタンスが100個ある場合、システムの1つまたは複数のメソッドインスタンスオブジェクトは、システムインスタンス毎に別個のACLを有することができる。システムインスタンス識別子は、システムまたはシステムインスタンスではないオブジェクトと関係し得るので、任意選択とすることができる。
【0069】
図7は、図1のメタデータストア180を生成し、データ投入する方法例700を示している。任意の組合せおよび順序の以下で説明される動作が必要に応じて実施されてよいことを理解されたい。
【0070】
メタデータストアを設定するため、開発者などのユーザは、メタデータオブジェクトを生成702するよう要求することができる。メソッド実行(例えば、オブジェクト生成)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定704することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、ユーザがサービスにアクセスする権限を付与されない旨の通知を返すなど、適切な動作をとってもよく708、または代替サービス(例えば、ファイル編集の代わりのファイル表示)が提供されてもよい。ユーザがメソッドを実行する権限を付与される場合、メタデータオブジェクトは、任意の適切な方式で生成されてよい。
【0071】
例えば、ユーザが、新しいメタデータパッケージ(例えば、関係オブジェクトのファミリ)をロードするためのコードを書きたいとする。1つのケースでは、ユーザは、以下のように入力することができる。
【0072】
【表1】
【0073】
新しいシステムが.LoadFromPackage()メソッドを使用して生成されるとき、要求ユーザが、パッケージからロードするメソッドに関連付けられたACE内で、そのユーザ識別子に関連付けられた、パッケージからのロード(または実行)権を有することを確認するために、上の動作704のアクセスチェックが実行されることができる。いくつかのケースでは、実行権は、編集権も伴っていない限り、役に立たないこともある。例えば、メソッドが実行されることができても、オブジェクトの編集権も付与されていない場合、実行の結果(例えば、新しいメタデータオブジェクト)は、インポートされることができない。パッケージがロードされると、子メタデータオブジェクト(例えば、エンティティおよびメソッドなど)が、元の親ACLを正確に反映したACLをデフォルトとして生成されることができる。いくつかのケースでは、パッケージがメタデータオブジェクト階層の任意のレベルで作成されることを可能にするため、すべてのメタデータオブジェクトが、パッケージからのロード(メソッド)を有することができる。
【0074】
親オブジェクトまたはパッケージ内のどのオブジェクトも関連ACLを有さない場合、メタデータオブジェクト上でセキュリティを設定するため、オブジェクトのセキュリティパラメータが生成されることができる。ユーザは、特定のオブジェクトに関連付けられたACLを生成するように要求710することができる。ACLの編集(すなわち、本明細書で使用される編集は、生成、子の生成、削除、および更新などを含む)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定712することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、ACLが生成714され、示されたユーザ識別子および1つまたは複数のユーザ識別子に関連付けられた権利などを投入されることができる。
【0075】
例えば、ユーザが、ACLを生成または編集するためのコードを書きたいとする。1つのケースでは、ユーザは、以下のように入力することができる。
【0076】
【表2】
【0077】
上の例では、アクセスチェック712は、任意のメタデータオブジェクト上の.SetAcl()メソッドで実行されることができる。アクセスチェックは、.SetAcl()メソッドの要求ユーザが、オブジェクト(ここでは、メソッドインスタンスオブジェクトmi)のACLに許可設定権を有さなければならないこと、またはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ACL(ここでは、Acl)は、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも1つのACEを含むことを要求されてよい。
【0078】
オブジェクトのACLおよび/またはACEにデータ投入するため、サービスモジュール190は、ユーザ識別子および権利などの配置および入力を容易にするユーザインターフェースを提供することができる。ユーザインターフェース表示の例が、図9〜図12に示されている。任意の適切なユーザインターフェースおよび関連コントロールが、オブジェクトおよび関連メタデータ値の編集を容易にするために、ユーザに提供されてよい。
【0079】
図9は、エンティティのタイプ902のメタデータオブジェクトを管理するための管理ユーザインターフェース900を示している。オブジェクトのセキュリティパラメータは、セキュリティボタン904を選択することによってアクセスされることができるが、セキュリティパラメータは、管理ユーザインターフェース表示において直接、または任意の適切なユーザインターフェースコントロールを介してアクセス可能であってもよい。現在のユーザが、メタデータオブジェクトおよび/または親のメタデータオブジェクト上でセキュリティを変更する権限を付与されていない(例えば、許可設定権をもたない)場合、セキュリティボタンは、使用不可、グレー表示、また非提供にされるなどしてよい。
【0080】
セキュリティボタン904の選択に応答して、サービスモジュール190は、図10に示された許可管理インターフェース1000などの許可管理インターフェースを表示することができる。許可管理インターフェースは、ユーザをインターフェースページに属させるオブジェクトのためのACLを表すことができる。インターフェース1000では、各行1004は、ACEを表すことができる。新たにインスタンス化されたオブジェクトでは、ACEのリストは空であってよい。オブジェクトおよび関連する権利に対してより多くの権限付与ユーザを生成するため、許可ページ1000は、新しいユーザエントリを直接利用可能にすることができ、または新しいユーザ識別子のエントリが、ユーザ追加ボタン1002など、任意の適切なインターフェースコントロールを介してアクセスされることを可能にすることができる。ACEからのユーザの削除を可能にするユーザ削除ボタン1006、選択ユーザ許可変更ボタン1008、および/またはユーザがオブジェクトにアクセスし、オブジェクトを変更し、かつ/もしくは削除することを可能にする他の任意の適切なインターフェースコントロールなど、その他の適切なインターフェースコントロールが提供されてもよい。
【0081】
新規ユーザボタン1002の選択に応答して、サービスモジュール190は、図11に示されたユーザ追加インターフェース1100など、ユーザ追加インターフェースを表示することができる。ユーザは、任意の適切なコントロールを介してユーザ識別子を提供することができる。例えば、図11に示されるように、ユーザは、ユーザ識別子をusersテキストボックス1102に入力することができ、かつ/またはブラウズボタン1104を介して発見可能なユーザ識別子を選択することによって入力することができる。示された1つまたは複数のユーザに関連付けられた権利は、任意の適切な方式で提供されてよい。例えば、ユーザ識別子の入力時に、デフォルト権利が、ユーザによって変更されない限り、ユーザ識別子に関連付けられてよい。別の例では、ユーザ追加インターフェースは、任意の適切な方式で選択または指示され得る利用可能な権利のリストまたはその他の抜粋を提供することができる。図11のインターフェースは、関連チェックボックスコントロール1108を有する利用可能な権利1106を示している。
【0082】
図11の許可変更ボタン1108の選択に応答して、サービスモジュール190は、図13に表示された許可変更ユーザインターフェース1300など、許可変更ユーザインターフェースを表示することができる。ユーザは、図11のユーザインターフェースで1つまたは複数のユーザを選択することができ、許可変更インターフェースは、それら選択されたユーザに対する許可が変更されることを可能にする。別の例では、許可変更ページが、オブジェクトの既存または新規権限付与ユーザの選択または入力を可能にすることができ、許可が変更または生成されることを可能にすることができる。図13のユーザインターフェース例に示されるように、許可変更インターフェースは、関連オブジェクトについてのユーザ識別子1302を表示することができる。ユーザインターフェースは、表示されたユーザに対する関連許可も表示することができ、かつ/またはそのユーザのために選択され得る利用可能なオプションも表示することができる。例えば、図13を参照すると、関連オブジェクトおよび関連ユーザ1302について利用可能な許可オプション1304が、チェックボックス1306などの関連コントロールと共に表示されており、チェックボックスは、選択(例えば、チェック)または禁止(例えば、チェックなし)として許可の操作を指示し、可能にすることができる。関連コントロール(例えば、チェックボックス1306)を操作することによって、ユーザは、利用可能な許可を選択することができ、かつ/または選択解除することができる。リストボックス、テキストボックス、およびラジオボタンなど、任意の適切なコントロールインターフェースが提供されてよいことを理解されたい。
【0083】
いくつかのケースでは、ユーザ識別子に関連付けられる特定の権利の選択は、当該またはその他のオブジェクトについて、その他の権利がそのユーザ識別子に関連付けられる原因となることができ、またユーザ識別子のロールを変更することなどができる。例えば、新規ユーザのための権利を選択するプロセスにおいて、許可設定または管理権が選択された場合、その新規ユーザは、オブジェクトおよびこのオブジェクトの下のすべてのオブジェクトのための代表管理者となることができる。すなわち、admin ACEは、オブジェクト階層木を下方に辿って自動的に伝搬されることができる。
【0084】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集し、(自動的に行われないのであれば)この情報をすべての子メタデータオブジェクト上を下方に伝搬させたいと思うことがある。開発者などのユーザは、親オブジェクトのACLを編集することを要求716することができる。ユーザは、(変更された)親オブジェクトのセキュリティ情報を、親オブジェクトのすべてまたは指示された子オブジェクトへと下方に伝搬させることを要求718することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定720することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACLが変更722され、その後、親の適切な子へと下方に伝搬されることができる。
【0085】
例えば、ユーザは、以下のようなコードを入力することができる。
【0086】
【表3】
【0087】
上の例では、アクセスチェック720は、オブジェクト上での.SetAclAndPropagate()メソッドの実行に応答して実行されることができる。アクセスチェックは、要求ユーザが、オブジェクトまたはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ACLは、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも1つのACEを含むことを要求されてよい。上のコード例では、ACLは、与えられたオブジェクトのすべての子オブジェクトに自動的に伝搬される。上の例では、ユーザが親オブジェクトで許可設定権を有する場合、子オブジェクトのACLが設定されることができるので、各子オブジェクトについてのACLの編集の実行は、自動的に権限付与される。
【0088】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集したいと思うことがある。開発者などのユーザは、親オブジェクトのACLを編集することを要求724することができる。メソッドの実行(例えば、オブジェクトの変更)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定726することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACLが変更728されることができる。
【0089】
例えば、ユーザは、以下のようなコードを入力することができる。
【0090】
【表4】
【0091】
ACLオブジェクトモデル(「OM」)は、Windows(登録商標)SharePoint Services(商標)(WSS)またはその他の任意の適切なウェブインフラストラクチャとすることができる。OMは、基本認証、持続性、インフラストラクチャおよび/またはその他のセキュリティサービスを、企業システム構成要素に提供することができる。上の例に示されるように、OMは、ACLおよび/またはACEによって参照および実施され得る、権利などのデフォルト値を提供することができる。ACLの設定に応答して、セキュリティ変更は、企業システムのOMのコンテキスト内で、実質的に直ちに変更されることができる。しかし、メタデータオブジェクトはランタイムOMによってキャッシュされ得るので、変更ACLがランタイムOMによってすべての構成要素上で観察される前に、タイムラグが存在することがある。
【0092】
上の例は、オブジェクトのセキュリティパラメータの編集を示しているが、オブジェクトの識別子およびオブジェクトのインスタンスなど、任意のパラメータ、特徴、および設定などが変更されてよい。上で述べられたように、編集は、機能の変更、更新、および削除などを含む。図7に示されるように、ユーザは、オブジェクトを編集することを要求742することができる。オブジェクトの編集を求める要求(例えば、メソッドの実行を求める要求)に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定744することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、オブジェクトが変更746されることができる。
【0093】
一例では、ユーザは、エンティティの名前を更新し、そのエンティティのための新しいオブジェクト識別子を生成し、その後、エンティティオブジェクトを含むシステムを削除するコードを書きたいとする。
【0094】
例えば、ユーザは、以下のようなコードを入力することができる。
【0095】
【表5】
【0096】
上の例に示されるように、2以上のアクセスチェックが、図1のデータ格納サービスシステム160によって実行されてよい。上の例では、要求に応答して、子オブジェクトの生成と、システムオブジェクトの削除と、オブジェクトのACLの更新の、3つのアクセスチェックが実行されることができる。しかし、1つまたは複数のアクセスチェックが同時に実行されてよいことを理解されたい。例えば、上の例では、実行メソッドの各々は、メタデータオブジェクトに対する編集権(例えば、生成、削除、更新)を必要としてよく、したがって、その権利についての単一のアクセスデータチェックと共に、3つのアクセスチェックが実行されてよいが、編集権は、識別子ユーザ、編集される3つの異なるオブジェクト(例えば、子オブジェクト、エンティティオブジェクト、およびシステムオブジェクト)について異なってもよく、したがって、オブジェクト毎に別個のアクセスチェックを必要としてもよい。
【0097】
ユーザは、図1のメタデータストア180に保存したいくつかのメタデータを変更したいことがある。例えば、ユーザは、図2のメタデータストアに示されるような、システムオブジェクトに関連付けられた接続情報204などの、接続文字列を変更したいことがある。いくつかのケースでは、図1のサービスシステム190は、オブジェクトメタデータの編集を容易にするオブジェクト編集ページを提供することができる。アプリケーションオブジェクト編集ページ例1200が図12に示されている。アプリケーション編集ページがユーザに提示されたとき、識別ユーザが適切な編集権を有することを確認するために、アプリケーションオブジェクトに関連付けられたACLに対するアクセスチェックが実行されてよい。アクセスチェックが失敗した場合、ユーザは、オブジェクトページ1200などのオブジェクトページへのアクセスを拒否されてよく、または代替として、オブジェクトページは表示されてよいが、ページ内のフィールドの編集機能はオフにされ、例えば、ページの読み取り専用表示とされることができる。
【0098】
上で述べられたように、オブジェクトは、誰がどの許可を有するかを管理する関連ACLを有することができる。いくつかのケースでは、オブジェクトは、親オブジェクトと同じデフォルトACLを有して生成されてよい。階層の最上部にあるシステムオブジェクトの場合、デフォルトは、オブジェクトの作成者に管理権を生成することができる。しかし、オブジェクトの編集権、(アプリケーションの起動を引き起こし得る)オブジェクトの実行権、および非対称権など、追加または何らかのサブセットの権利が存在してもよい。非対称権の一例は、オブジェクトの管理権に含まれ得る、オブジェクトの権利を変更する権利である。オブジェクトの権利を変更する権利を、別のユーザに代行してもよい。具体的には、オブジェクトの権利を変更する権利を有する人は、別のユーザがオブジェクトの権利を変更する権利を追加的または代替的に有するような割り当てを行うことができる。
【0099】
いくつかのケースでは、ユーザは、そのオブジェクトおよびすべての下位にある(子)オブジェクトの管理権を別のユーザに代行させたいことがある。開発者などのユーザは、オブジェクトおよびその子の管理権を代行することを要求730することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定732することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッド800と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACEが追加され、ACLが変更734され、その後、親の適切な子へと下方に伝搬されることができる。
【0100】
例えば、ユーザは、以下のようなコードを入力することができる。
【0101】
【表6】
【0102】
オブジェクトのためのACLの新しいACEの結果として、「newAdminDude」によって識別されるユーザは、オブジェクト上で許可を設定する権利を有する。このようにして、「newAdminDude」は、そのオブジェクトおよび任意の下位オブジェクトにおいて許可を設定する旧いadminの権利を削除することができる。しかし、旧いadminが親オブジェクトにおいて「許可設定」権を保持する場合、旧いadminは、その親オブジェクトの子オブジェクトの代表管理のみを有すると考えられてよい。このようにして、旧いadminは、現在「newAdminDude」に代表されている各オブジェクトの親において許可設定権を有するので、「newAdminDude」に与えられた任意の権利を取り戻すことができる。
【0103】
いくつかのケースでは、(例えば、メタデータストア内のすべてのオブジェクト上で許可設定権を有する)メタデータストアの管理者は、別のユーザが、特定のタイプのオブジェクトにおける管理権を有することを可能にしたいことがある。例えば、管理者は、別のユーザが、任意のエンティティオブジェクトにおける管理権を有するようにしたいが、そのエンティティが属するSystemInstanceオブジェクトは除外したいことがある。したがって、管理者は、MethodInstance実行特権は変更するが、例えば、システムインスタンス上の接続文字列は変更しないことができる。開発者などのユーザは、親およびその子の管理を部分的に代行することを要求736することができる。メソッドの実行(例えば、オブジェクトの設定および伝搬)を求める要求に応答して、図1のサービスシステムモジュール190は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定738することができる。例えば、図1のサービスシステムモジュール190は、図8を参照して以下でさらに説明されるメソッドと類似したメソッド800を使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる708。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ACEが追加され、ACLが変更740され、その後、親の適切な子へと下方に伝搬されることができる。例えば、ユーザは、以下のようなコードを入力することができる。
【0104】
【表7】
【0105】
上に示されるように、親から子へのACLの自動継承が回避され、かつ/または望まれることができる場合が存在してよい。したがって、自動継承は、いくつかのケースでのみ生じることができ、その他のケースは、ACLを子オブジェクトへと下方に伝搬させるために、コピーまたは明示的な伝搬を必要とすることができる。
【0106】
図8は、オブジェクトへのアクセスをチェックする方法例800を示している。上で述べられたように、セキュリティは、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。オブジェクトへのアクセスをチェックするため、要求が受け取られることができる802。要求または通信のその他の態様は、要求ユーザのユーザ識別子を決定804するために解析されることができる。要求は、権限付与および/または認証で使用されるユーザ識別子を提供することによって、別のユーザの代理によることもできることを理解されたい。要求ユーザは、任意の適切な方式で、認証806されることができ、すなわち、ユーザの識別情報が確認されることができる。いくつかのケースでは、ポータル170および/またはデータ格納サービスシステムは、要求が作成される前に、ユーザを認証してもよい。したがって、どの説明されたステップおよび/または動作も、アプリケーションおよび環境に適した任意の適切な順序で実行されてよい。
【0107】
アクセスされる所望のサービスは、図1のユーザ要求162などのユーザ要求から決定されることができる808。企業システムの任意の適切な部分が、図1のサービスシステムモジュール190またはデータ格納サービスシステム160の認証モジュール(図示されず)など、アクセスされる所望のサービスを決定することができる。所望のサービスにアクセスするのに必要とされる権利は、任意の適切な方式で決定されてよい810。例えば、メタデータストアは、メソッドまたはサービスと必要とされる権利のマッピングなど、権利のデータベースを維持することができ、または上で述べられたように、所望のサービスにアクセスするのに必要とされる権利は、サービス自体の中で関連付けられることができ、例えば、メソッドオブジェクトを実装するときに、メソッドオブジェクトは、サービスに必要とされる権利を提供することができる。
【0108】
アクセスされるオブジェクトは、要求から決定されることができる812。例えば、サービス要求は、オブジェクトを編集すること、オブジェクトを見ること、およびオブジェクトを実行することなどとすることができる。所望のオブジェクトは、オブジェクト名、オブジェクトタイプ、およびオブジェクト識別子など、任意の適切な方式で示されることができる。所望オブジェクトのACLが、取り出されることができ814、ACLの関連ACEが、取り出されることができる816。上で述べられたように、一例では、ACLは、オブジェクトが個別保護可能オブジェクトとして分類される場合、オブジェクト自体から取り出されることができ、またはオブジェクトがアクセス保護可能なオブジェクトとして分類される場合、直近の個別保護可能オブジェクトなど、別のオブジェクトから取り出されることができる。ACLが別のオブジェクトから取り出される場合、直近の個別保護可能オブジェクトを決定することを含む、任意の適切な方法が、ACLを取り出すために使用されてよい。
【0109】
ユーザ識別子が、権限付与ユーザとして提供されているかどうか、例えば、ACE内のユーザ識別子リストに含まれているかどうかを決定するために、ACEが検査されることができる818。含まれていない場合、適切な動作をとることができる820。要求されたサービスへのユーザアクセスを拒否すること、アクセスが拒否された旨のメッセージをユーザに送信すること、拒否されたアクセスについて管理ユーザに通知すること、および図1のストレージ138に保存され得るログデータストアに拒否されたアクセスを記録することなどを含む、任意の数および組合せの適当で適切な動作をとることができる。
【0110】
ユーザがACEに載せられている場合、ユーザ識別子に関連付けられた権利は、上の動作810で決定された必要とされる権利と比較される822。必要とされる権利がユーザ識別子と関連付けられていない場合、適切な動作をとることができる820。上で述べられた適切な動作のいずれかがとられてよい。さらに、ユーザがオブジェクトにおけるいくつかの権利を有するが、所望のアクセスのために必要とされる権利を有さない場合、データ格納サービスシステムは、要求されたサービスの代わりに、ユーザが関連する権利を有する適切な権限付与されたサービスを自動的に選択することができる。例えば、ユーザが、オブジェクトの編集を要求したが、編集権を有さないことがある。それに応答して、データ格納サービスシステムは、要求ユーザのユーザ識別子がオブジェクトを見るための関連する権利を有するかどうか、ACEをチェックすることができる。その後、関連する権利は、以下でさらに説明される要求164など、アプリケーションに対する生成サービス要求の一部となることができる。
【0111】
権利または関連する権利がACE内で示される場合、その他のアクセス制限が確認されることができる824。例えば、サービスへの安全なアクセスは、上で提供されたユーザ識別子に加えてまたは代えて、任意のコンテキストに基づくことができる。例えば、アクセスは、アプリケーション内の機能、ウェブサイト内のロケーション、アクセスの日中時間および/または日付、ならびに企業システムへのユーザ接続に対する接続制限などの確認に基づくことができる。その他の制限が確認されない場合、適切な動作をとることができる820。
【0112】
ユーザが権限付与された場合、データ格納サービスシステムは、適切なアプリケーションの指示されたサービスに対する要求を生成することができる826。要求は、任意の適切な方式で生成されてよい。図1の要求162などのユーザからの要求は、図1のアプリケーション150に送信するために、繰り返されることができ、または適切に変更(例えば、フォーマット化および拡張など)されることができる。別の例では、データ格納サービスシステムは、サービスのオブジェクトおよび/またはサービスオブジェクトの親オブジェクトに基づいて、図1のメタデータストア180から、所望サービスに関する適切な要求情報を取り出すことができる。例えば、図2を参照すると、データ格納サービスシステムは、要求されたサービスを提供するための、アプリケーション150に適した複雑な要求164を生成するために、エンティティ識別子224、パラメータリスト226、またはその他の任意の適切な情報を使用することができる。
【0113】
アプリケーションは、データ格納サービスシステムを認証し、かつ権限付与することを望んでよい。上で述べられたように、認証および/または権限付与は、要求の前に、または要求を実行する一部として行われてよい。図8に示されるように、データ格納サービスシステムは、アプリケーションに適切なアカウント、接続、識別情報、および証明書などを提供することができ、そのいずれもが、図1のメタデータストア180から取り出されることができる。例えば、データ格納サービスシステムは、オブジェクト識別子ならびにメタデータストア内のそのオブジェクトおよび親オブジェクトのいずれかに関連付けられた情報に基づいてメタデータストア180から取り出されることができる、データ格納サービスシステムに固有の認証および/または権限付与情報を有するユーザアカウントまたはサービスアカウントを介して、アプリケーションにアクセスすることができる。データ格納サービスシステムは、証明書を有さないサーバプロセスアカウント、およびデータ格納サービスシステムがシングルサインオン(SSO:single sign−on)個別アカウントの独自の証明書を用いてWINDOWS(登録商標)ユーザを装うことができ、WINDOWS(登録商標)認証を実行する、シングルサインオンからのWINDOWS(登録商標)証明書などを有するサーバプロセスアカウントを含む、1つまたは複数のセキュリティシステムにサインオンし、権限付与されることを可能にしてもよい。
【0114】
ユーザ権限付与を集中化することによって、企業システムの管理は、データ格納サービスシステムがアカウントおよびユーザ証明書などを維持する、図1のアプリケーション150の各々と共に、1つまたは複数のユーザアカウントのみを維持することによって簡略化されることができる。上で述べられたように、接続および/またはセキュリティ情報は、要求ユーザの接続および/またはセキュリティ情報とは異なってよい。データ格納サービスは、上で説明されたように、認証、接続、権限付与情報をメタデータストア180内に維持し、そこから取り出すことができる。さらに、データ格納サービスシステムが同じアプリケーションからのサービスを求める1つまたは複数の要求を処理している場合、それらの要求は、唯一のアカウントおよび接続などを必要とすることができる同じユーザスレッドを介して、一緒に合わされてよい。
【0115】
アプリケーションは、データ格納サービス情報から提供された情報に基づいて、任意の適切な方式で、認証し、権限付与を確認するなどすることができる830。データ格納サービスシステムが、要求されたサービスにアクセスする権限を付与されていることを保証するため、データ格納サービスシステムに関連付けられた権利は、オブジェクトACL内の識別ユーザに許可された権利のすべてと同じとすることができ、または権利のすべてと比べてより大きい(例えば、スーパーユーザ)とすることができる。
【0116】
データ格納サービスシステムが権限を付与されている場合、サービスはアクセスされることができる832。サービスがアクセスされた場合、成功表示が、アプリケーションから受信されてよい834。成功表示は、実行メソッドの結果、サービスが正常に実施されたことの表示、およびアプリケーションの機能へのアクセスが提供されることなど、任意の適切な成功表示とすることができる。データ格納サービスシステムは、任意の適切な方式で、要求ユーザに成功表示を提供してよい836。
【0117】
一例では、ユーザは、自らのコード(例えば、1つまたは複数のアプリケーション150)を使用している現在のユーザが、MethodInstanceを実行する権限を付与されているかどうかを確認するコードを書きたいことがある。ユーザは、以下のコードを書くことができる。
【0118】
【表8】
【0119】
上の例は、典型的なエンドユーザのシナリオではないので、多少潤色されているが、バックエンドAPIまたはその他のアプリケーションへのユーザアクセスを許可または拒否するために、データ格納サービスシステムMethodInstance.Execute()コードに埋め込まれることができるコード例を示している。この例では、ユーザが、与えられた権利(上の例では実行)のためのACL内のACEの1つに載せられているユーザ識別子と同じであるかどうかを、WSSがチェックしている。しかし、権限付与を確認するために任意の適切な方法またはプロセスが使用されてよいことを理解されたい。
【0120】
上記の図7のサービスを求める要求の例、および図8のアクセスに対する権限付与の例は、メタデータストア自体のオブジェクトを使用して上では説明されたが、この方法は、1つまたは複数のアプリケーション150にサービスを要求する図1のユーザ120など、ユーザについても同様に実施されることができる。例えば、図8を参照すると、要求が受け取られ802、メタデータストアに保存されたアプリケーション150のオブジェクトを参照して、情報が決定されてよい804、808、810、812、814。関連するACLおよびACEは、要求されたサービスに関連付けられたオブジェクトのために取り出されることができ、権利およびユーザ識別子が確認される。上で述べられたように、メタデータストアに保存された各オブジェクトは、ACEに関連付けられたACLに関連付けられる。その後、データ格納サービスシステムは、ユーザからの権限付与された要求に応答して、サービスを求める要求を生成し826、サービスを求めてアプリケーション150にアクセスするための、それ自体の認証情報を提供する828。
【0121】
上の例に示されるように、各オブジェクトに関連付けられたACLおよびACEは、データ格納サービスシステム内のその他のオブジェクトの生成および保守において使用されてもよい。具体的には、データ格納サービスシステムのいくつかのタイプのオブジェクトは、バックエンドアプリケーションのオブジェクトを生成し、編集し、かつ/または保守するために使用されてよい。例えば、図14の方法例1400に示されるように、オブジェクトは、バックエンドアプリケーションの1つまたは複数の部分のために生成されてよい1402。上で述べられたように、オブジェクトは、システム、システムインスタンス、エンティティ、メソッド、パラメータ、およびパラメータタイプなどの、1つまたは複数のオブジェクト階層を表すことができる。オブジェクトは、図7の動作702〜706におけるオブジェクトの生成、および動作710〜714におけるセキュリティの生成に関して上で説明されたような、任意の適切な方式で生成されてよい。ユーザデバイスは、企業システムのバックエンドアプリケーションにサービスを要求することができる1404。ユーザ要求は、複数のバックエンドアプリケーションにわたってユーザ用の共通インターフェースを可能にする、簡単で汎用的な統一化かつ/または共通要求とすることができる。図1の例に示されるように、ユーザ要求は、適切な通信接続を介して企業システム130によって受け取られることができ、ポータル170を介して処理されてよい。図14を参照すると、データ格納サービスシステムは、要求によって参照される適切なオブジェクトを決定する1406。その後、データ格納サービスシステムは、指示されたオブジェクトのいずれか1つまたはすべてに要求された方式でアクセスする権限をユーザが付与されているかどうかを決定する1407。任意の適切な権限付与プロセスが使用されてよいが、1つの適切な例が、図8の方法800に関して上で説明された。ユーザが権限付与されていない場合、データ格納サービスシステムは、要求の終了、および要求ユーザへのエラーメッセージの送信などのいずれか1つまたは複数を含むことができる、適切な動作をとることができる1408。ユーザが権限付与されている場合、データ格納サービスシステムは、企業システムの適切なバックエンドアプリケーションの要求されたサービスとの対話用に特別に適合された要求を生成する1410。例えば、オブジェクト内に維持される情報は、メッセージを生成するのに使用され得る、メッセージフォーマット、および必要とされるパラメータなどを含むことができる。その後、データ格納サービスシステムは、ユーザからの要求で識別されたサービスにアクセスするために、適合された要求を使用して、適切なバックエンドアプリケーションと対話することができる1412。例えば、データ格納サービスシステムは、適切なサービスにアクセスするために、バックエンドアプリケーションに適合された要求を送ることができる。バックエンドアプリケーションへの接続は、アプリケーションのスーパーユーザアカウントを介するものでよく、それは事前作成されることができる。サービス結果は、バックエンドアプリケーションによってデータ格納サービスシステムに提供されることができ、データ格納サービスシステムは、ユーザからの特定の要求(例えば、データフォーマットおよび言語など)に従って、ユーザの選好(例えば、ユーザが好むデータフォーマットおよび言語など)に従って、また特定のユーザ要求および/または許可などを満たすのに必要とされる情報忠実度をアプリケーションが有さない場合に生じることがあるユーザ許可(例えば、情報は必要に応じて選別、翻訳、または編集されてよい)に従って、結果を適合させることができる。データ格納サービスシステムは、ステータス情報および要求の結果などを伝達するため、ユーザデバイスと対話することができる141。
【0122】
本発明の好ましい実施形態が例示され、説明されたが、本発明の主旨および範囲から逸脱することなく、様々な変更がそれに施され得ることを理解されたい。例えば、上で述べられたように、企業システムは、バックエンドアプリケーションに存在する実行可能な機能を分離することができ、分離は、異なるレベルの粒度にあってよい。アプリケーションの分離された機能は、メタデータオブジェクトの形式でカタログ内に登録されることができる。実行可能な機能が登録されると、各粒度の機能オブジェクトの権限付与情報が権限付与情報と関連付けられることができる。実行可能な機能の権限付与権の一例は、アプリケーションの情報にアクセスすること、および/またはアプリケーションの情報を変更することができる、実行可能な機能に関連付けられたロジックの部分を「実行」する権利とすることができる。機能の実行についての権限付与に加えて、メタデータストアは、追加的または代替的に、(大規模ポータルアプリケーション内など)実行が行われ得る場所の権限付与を容易にすることができる。実行の権限付与と同様に、実行の場所は、機能(またはオブジェクト)単位に権限付与されることができる。例えば、上記の例は、オブジェクトがシステムおよびエンティティなどとして定義された、1つまたは複数のアプリケーションにアクセスするための、データ格納サービスシステムを使用することを説明しているが、オブジェクトおよびアクセス要求は、任意の適切なメソッド、オブジェクト、およびアプリケーションなどを参照してもよいことを理解されたい。例えば、アプリケーション機能は、Web Partをコールするユーザインターフェースウィジェット(widget)の生成を可能にすることができる。アプリケーションの別の機能は、スコープを有する検索可能/インデックス付け可能な空間の生成を可能にすることができる。メタデータストア内のオブジェクトに関連付けられた権限付与情報は、Web Part機能内で、システムAのデータのみが表示されることを可能にすることができる。同様に、メタデータ権限付与情報は、検索機能内で、システムBの顧客エンティティデータのみがクロール(crawl)されることを可能にすることができる。このようにして、メタデータストア内に保存されたオブジェクトは、検索オブジェクト、ウェブページ接続性およびアクセスなどを参照することができる。同様に、XMLオブジェクトなどのオブジェクトを参照して、安全なデータ格納サービスシステムが上では実施されるが、リストおよびその他のタイプのプログラミング構成が、適当ならば使用されてよいことを理解されたい。
【図面の簡単な説明】
【0123】
【図1】データ格納サービスシステムを実施するのに適した企業環境例の概要図である。
【図2】図1の企業環境と共に使用するのに適したメタデータストア例の表である。
【図3】図2のメタデータストアのアクセス制御リスト(ACL)例の表である。
【図4】図1の企業環境と矛盾しない保護可能オブジェクト階層の概要図である。
【図5】オブジェクトアクセス制御リストを実施するAPI例の概要図である。
【図6】図5のアクセス制御リストのアクセス制御エントリを実施するAPI例の概要図である。
【図7】図1の企業環境のメタデータストアにデータ投入し、それを実施する方法例のフローチャートである。
【図8】アクセスチェックを実施する方法例のフローチャートである。
【図9】オブジェクトの管理ユーザインターフェースの表示例の図である。
【図10】オブジェクトの許可管理ユーザインターフェースの表示例の図である。
【図11】ACL編集ユーザインターフェースの表示例の図である。
【図12】オブジェクト編集ユーザインターフェースの表示例の図である。
【図13】オブジェクトの許可変更ユーザインターフェースの表示例の図である。
【図14】図1の企業環境のメタデータストアを実行する方法例のフローチャートである。
【特許請求の範囲】
【請求項1】
ユーザに権限付与するための方法であって、
a)アプリケーションのサービスを求める第1の要求をユーザデバイスから受け取るステップ(802)と、
b)前記ユーザデバイスに関連付けられたユーザ識別子を決定するステップ(804)と、
c)前記サービスにアクセスするのに必要とされるアクセス権を前記アプリケーションにアクセスせずに決定するステップ(812)と、
d)前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップ(818)と、
e)前記ユーザ識別子が前記アクセス権に関連付けられているという決定に応答して、前記第1の要求と異なる、前記アプリケーションの前記サービスを求める第2の要求を生成するステップ(826)と、
f)前記第2の要求を前記アプリケーションに送るステップと、
g)前記ユーザデバイスの1つまたは複数の証明書と異なる1つまたは複数のユーザ証明書を使用して前記アプリケーションにアクセスするステップ(828)と
を含むことを特徴とする方法。
【請求項2】
前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップは、データストアに保存された、前記サービスに関連付けられたオブジェクトにアクセスするステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
オブジェクトにアクセスするステップは、前記オブジェクトに関連付けられたアクセス制御リストにアクセスするステップを含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記アクセス制御リストは、前記オブジェクトによって所有されることを特徴とする請求項3に記載の方法。
【請求項5】
アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項3に記載の方法。
【請求項6】
アクセス制御リストを所有する前記オブジェクトの直近の祖先を決定することによって、別のオブジェクトを決定するステップをさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択されることを特徴とする請求項6に記載の方法。
【請求項8】
システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトの前記群を階層として組織するステップをさらに含み、前記オブジェクトの直近の祖先を決定するステップは、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定するステップを含むことを特徴とする請求項7に記載の方法。
【請求項9】
オブジェクトにアクセスするステップは、前記アクセス制御リストに関連付けられたアクセス制御エントリにアクセスするステップを含み、前記アクセス制御エントリは、少なくとも1つの権限付与アクセス権に関連付けられた少なくとも1つの権限付与ユーザ識別子を含むことを特徴とする請求項3に記載の方法。
【請求項10】
前記少なくとも1つの権限付与アクセス権は、編集する権利、見る権利、および実行する権利を含む群から選択されることを特徴とする請求項9に記載の方法。
【請求項11】
a)1つまたは複数のアプリケーション(150)に関連する情報を保存するためのメタデータストア(180)と、
b)データ格納サービスシステム(160)のマシン命令が保存されるメモリ(138)と、
c)前記メモリおよび前記メタデータストアに結合される処理ユニット(132)であって、前記プロセッサは、複数の機能を実施するために前記データ格納サービスシステムの前記マシン命令を実行し、前記マシン命令は、
i)前記1つまたは複数のアプリケーションのサービスを求める第1の要求(162)をユーザデバイス(120)から受け取るステップであって、前記第1の要求は、前記1つまたは複数のアプリケーションのうちのアプリケーションの利用可能なサービスを示すオブジェクト識別子(202、212、222、232、242)と、前記ユーザデバイスに関連付けられたユーザ識別子とを含むステップ(802)と、
ii)前記メタデータストア内の前記オブジェクト識別子に関連付けられたアクセス制御リスト(300)にアクセスするステップ(814)と、
iii)前記ユーザ識別子が前記メタデータストア内の前記アクセス制御リストに関連付けられていることを確認するステップ(818)と、
iv)確認ステップに応答して、前記第1の要求と異なる、前記サービスを求める第2の要求を生成するステップ(826)と、
v)前記第2の要求を前記アプリケーションに送るステップと
を含む処理ユニットとを含むことを特徴とする企業システム(130)。
【請求項12】
前記アクセス制御リストは、前記オブジェクト識別子によって識別されるオブジェクトによって所有されることを特徴とする請求項11に記載のシステム。
【請求項13】
前記アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項11に記載のシステム。
【請求項14】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択され、前記マシン命令は、前記システムオブジェクト、前記システムインスタンスオブジェクト、前記エンティティオブジェクト、前記メソッドオブジェクト、前記パラメータオブジェクト、および前記パラメータタイプオブジェクトの前記群を階層として組織するステップと、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定することによって、前記オブジェクトの直近の祖先を決定することによって前記別のオブジェクトを決定するステップとをさらに含むことを特徴とする請求項13に記載のシステム。
【請求項15】
実施されたときに、以下のステップを含む方法を実行するコンピュータ可読命令を含む1つまたは複数のコンピュータ可読記憶媒体であって、前記方法は、
a)サービス識別子(202)を、接続情報(204)、権限付与ユーザ識別子(250)、および前記権限付与ユーザ識別子のアクセス権表示(252)に関連付けるステップであって、前記サービス識別子は、サービスを提供する複数の利用可能なアプリケーションのうちの少なくとも1つのサービスに関連付けられるステップと、
b)前記サービスを求める要求をユーザデバイスから受け取るステップ(802)と、
c)前記ユーザデバイスに関連付けられたユーザ識別子が前記権限付与ユーザ識別子と一致することを、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つにアクセスすることなく確認するステップ(818)と、
d)前記アクセス権表示に基づいて、前記サービスを求める前記要求が前記権限付与権利表示によって許可されていることを、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つにアクセスすることなく確認するステップ(822)と、
e)前記ユーザ識別子および前記要求が確認された場合、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つに、前記ユーザデバイスのユーザ証明書と異なる証明書を使用してアクセスするステップ(828)と、
f)前記複数の利用可能なアプリケーションのうちの前記少なくとも1つに前記サービスを要求するステップ(832)と
を含むことを特徴とする1つまたは複数のコンピュータ可読記憶媒体。
【請求項16】
サービス識別子を権限付与ユーザ識別子および前記権限付与ユーザ識別子のアクセス権表示に関連付けるステップは、前記サービス識別子をアクセス制御リストに関連付けるステップと、前記アクセス制御リストを、前記権限付与ユーザ識別子および前記アクセス権表示を関連付けるアクセス制御エントリに関連付けるステップとを含むことを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項17】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記アクセス制御リストを含むサービスオブジェクトを生成するステップを含むことを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項18】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記サービス識別子を、前記アクセス制御リストを含む前記サービス識別子の直近の祖先オブジェクトを発見するためのアプリケーションプログラムインターフェースと関連付けるステップを含むことを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項19】
直近の祖先オブジェクトを発見するステップは、前記サービス識別子に関連する所定のオブジェクト階層を遡るステップと、アクセス制御リストを含む直近のより高いレベルの祖先オブジェクトを決定するステップとを含むことを特徴とする請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項20】
前記権限付与ユーザ識別子およびアクセス権表示を、サービス階層に従って、前記サービス表示に関連付けられた子サービス表示に関連付けるステップ(718、722)をさらに含むことを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項1】
ユーザに権限付与するための方法であって、
a)アプリケーションのサービスを求める第1の要求をユーザデバイスから受け取るステップ(802)と、
b)前記ユーザデバイスに関連付けられたユーザ識別子を決定するステップ(804)と、
c)前記サービスにアクセスするのに必要とされるアクセス権を前記アプリケーションにアクセスせずに決定するステップ(812)と、
d)前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップ(818)と、
e)前記ユーザ識別子が前記アクセス権に関連付けられているという決定に応答して、前記第1の要求と異なる、前記アプリケーションの前記サービスを求める第2の要求を生成するステップ(826)と、
f)前記第2の要求を前記アプリケーションに送るステップと、
g)前記ユーザデバイスの1つまたは複数の証明書と異なる1つまたは複数のユーザ証明書を使用して前記アプリケーションにアクセスするステップ(828)と
を含むことを特徴とする方法。
【請求項2】
前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップは、データストアに保存された、前記サービスに関連付けられたオブジェクトにアクセスするステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
オブジェクトにアクセスするステップは、前記オブジェクトに関連付けられたアクセス制御リストにアクセスするステップを含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記アクセス制御リストは、前記オブジェクトによって所有されることを特徴とする請求項3に記載の方法。
【請求項5】
アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項3に記載の方法。
【請求項6】
アクセス制御リストを所有する前記オブジェクトの直近の祖先を決定することによって、別のオブジェクトを決定するステップをさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択されることを特徴とする請求項6に記載の方法。
【請求項8】
システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトの前記群を階層として組織するステップをさらに含み、前記オブジェクトの直近の祖先を決定するステップは、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定するステップを含むことを特徴とする請求項7に記載の方法。
【請求項9】
オブジェクトにアクセスするステップは、前記アクセス制御リストに関連付けられたアクセス制御エントリにアクセスするステップを含み、前記アクセス制御エントリは、少なくとも1つの権限付与アクセス権に関連付けられた少なくとも1つの権限付与ユーザ識別子を含むことを特徴とする請求項3に記載の方法。
【請求項10】
前記少なくとも1つの権限付与アクセス権は、編集する権利、見る権利、および実行する権利を含む群から選択されることを特徴とする請求項9に記載の方法。
【請求項11】
a)1つまたは複数のアプリケーション(150)に関連する情報を保存するためのメタデータストア(180)と、
b)データ格納サービスシステム(160)のマシン命令が保存されるメモリ(138)と、
c)前記メモリおよび前記メタデータストアに結合される処理ユニット(132)であって、前記プロセッサは、複数の機能を実施するために前記データ格納サービスシステムの前記マシン命令を実行し、前記マシン命令は、
i)前記1つまたは複数のアプリケーションのサービスを求める第1の要求(162)をユーザデバイス(120)から受け取るステップであって、前記第1の要求は、前記1つまたは複数のアプリケーションのうちのアプリケーションの利用可能なサービスを示すオブジェクト識別子(202、212、222、232、242)と、前記ユーザデバイスに関連付けられたユーザ識別子とを含むステップ(802)と、
ii)前記メタデータストア内の前記オブジェクト識別子に関連付けられたアクセス制御リスト(300)にアクセスするステップ(814)と、
iii)前記ユーザ識別子が前記メタデータストア内の前記アクセス制御リストに関連付けられていることを確認するステップ(818)と、
iv)確認ステップに応答して、前記第1の要求と異なる、前記サービスを求める第2の要求を生成するステップ(826)と、
v)前記第2の要求を前記アプリケーションに送るステップと
を含む処理ユニットとを含むことを特徴とする企業システム(130)。
【請求項12】
前記アクセス制御リストは、前記オブジェクト識別子によって識別されるオブジェクトによって所有されることを特徴とする請求項11に記載のシステム。
【請求項13】
前記アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項11に記載のシステム。
【請求項14】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択され、前記マシン命令は、前記システムオブジェクト、前記システムインスタンスオブジェクト、前記エンティティオブジェクト、前記メソッドオブジェクト、前記パラメータオブジェクト、および前記パラメータタイプオブジェクトの前記群を階層として組織するステップと、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定することによって、前記オブジェクトの直近の祖先を決定することによって前記別のオブジェクトを決定するステップとをさらに含むことを特徴とする請求項13に記載のシステム。
【請求項15】
実施されたときに、以下のステップを含む方法を実行するコンピュータ可読命令を含む1つまたは複数のコンピュータ可読記憶媒体であって、前記方法は、
a)サービス識別子(202)を、接続情報(204)、権限付与ユーザ識別子(250)、および前記権限付与ユーザ識別子のアクセス権表示(252)に関連付けるステップであって、前記サービス識別子は、サービスを提供する複数の利用可能なアプリケーションのうちの少なくとも1つのサービスに関連付けられるステップと、
b)前記サービスを求める要求をユーザデバイスから受け取るステップ(802)と、
c)前記ユーザデバイスに関連付けられたユーザ識別子が前記権限付与ユーザ識別子と一致することを、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つにアクセスすることなく確認するステップ(818)と、
d)前記アクセス権表示に基づいて、前記サービスを求める前記要求が前記権限付与権利表示によって許可されていることを、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つにアクセスすることなく確認するステップ(822)と、
e)前記ユーザ識別子および前記要求が確認された場合、前記複数の利用可能なアプリケーションのうちの前記少なくとも1つに、前記ユーザデバイスのユーザ証明書と異なる証明書を使用してアクセスするステップ(828)と、
f)前記複数の利用可能なアプリケーションのうちの前記少なくとも1つに前記サービスを要求するステップ(832)と
を含むことを特徴とする1つまたは複数のコンピュータ可読記憶媒体。
【請求項16】
サービス識別子を権限付与ユーザ識別子および前記権限付与ユーザ識別子のアクセス権表示に関連付けるステップは、前記サービス識別子をアクセス制御リストに関連付けるステップと、前記アクセス制御リストを、前記権限付与ユーザ識別子および前記アクセス権表示を関連付けるアクセス制御エントリに関連付けるステップとを含むことを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項17】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記アクセス制御リストを含むサービスオブジェクトを生成するステップを含むことを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項18】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記サービス識別子を、前記アクセス制御リストを含む前記サービス識別子の直近の祖先オブジェクトを発見するためのアプリケーションプログラムインターフェースと関連付けるステップを含むことを特徴とする請求項16に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項19】
直近の祖先オブジェクトを発見するステップは、前記サービス識別子に関連する所定のオブジェクト階層を遡るステップと、アクセス制御リストを含む直近のより高いレベルの祖先オブジェクトを決定するステップとを含むことを特徴とする請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項20】
前記権限付与ユーザ識別子およびアクセス権表示を、サービス階層に従って、前記サービス表示に関連付けられた子サービス表示に関連付けるステップ(718、722)をさらに含むことを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公表番号】特表2008−547118(P2008−547118A)
【公表日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願番号】特願2008−518258(P2008−518258)
【出願日】平成18年6月16日(2006.6.16)
【国際出願番号】PCT/US2006/023564
【国際公開番号】WO2007/001918
【国際公開日】平成19年1月4日(2007.1.4)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願日】平成18年6月16日(2006.6.16)
【国際出願番号】PCT/US2006/023564
【国際公開番号】WO2007/001918
【国際公開日】平成19年1月4日(2007.1.4)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]