(57)【要約】  企業システムは、バックエンドアプリケーションに存在する実行可能な機能を分離することができ、分離は、異なるレベルの粒度にあってよい。アプリケーションの分離された機能は、メタデータオブジェクトの形式でカタログ内に登録されることができる。実行可能な機能が登録されると、各粒度の機能オブジェクトの権限付与情報が権限付与情報と関連付けられることができる。このようにして、アプリケーションのサービスの権限付与は、統一された方式で、機能（またはオブジェクト）単位に行われることができる。
2008547118.tif 000002
【特許請求の範囲】
【請求項１】
ユーザに権限付与するための方法であって、
ａ）アプリケーションのサービスを求める第１の要求をユーザデバイスから受け取るステップ（８０２）と、
ｂ）前記ユーザデバイスに関連付けられたユーザ識別子を決定するステップ（８０４）と、
ｃ）前記サービスにアクセスするのに必要とされるアクセス権を前記アプリケーションにアクセスせずに決定するステップ（８１２）と、
ｄ）前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップ（８１８）と、
ｅ）前記ユーザ識別子が前記アクセス権に関連付けられているという決定に応答して、前記第１の要求と異なる、前記アプリケーションの前記サービスを求める第２の要求を生成するステップ（８２６）と、
ｆ）前記第２の要求を前記アプリケーションに送るステップと、
ｇ）前記ユーザデバイスの１つまたは複数の証明書と異なる１つまたは複数のユーザ証明書を使用して前記アプリケーションにアクセスするステップ（８２８）と
を含むことを特徴とする方法。
【請求項２】
前記ユーザ識別子が前記アクセス権に関連付けられているかどうかを決定するステップは、データストアに保存された、前記サービスに関連付けられたオブジェクトにアクセスするステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
オブジェクトにアクセスするステップは、前記オブジェクトに関連付けられたアクセス制御リストにアクセスするステップを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記アクセス制御リストは、前記オブジェクトによって所有されることを特徴とする請求項３に記載の方法。
【請求項５】
アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項３に記載の方法。
【請求項６】
アクセス制御リストを所有する前記オブジェクトの直近の祖先を決定することによって、別のオブジェクトを決定するステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択されることを特徴とする請求項６に記載の方法。
【請求項８】
システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトの前記群を階層として組織するステップをさらに含み、前記オブジェクトの直近の祖先を決定するステップは、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
オブジェクトにアクセスするステップは、前記アクセス制御リストに関連付けられたアクセス制御エントリにアクセスするステップを含み、前記アクセス制御エントリは、少なくとも１つの権限付与アクセス権に関連付けられた少なくとも１つの権限付与ユーザ識別子を含むことを特徴とする請求項３に記載の方法。
【請求項１０】
前記少なくとも１つの権限付与アクセス権は、編集する権利、見る権利、および実行する権利を含む群から選択されることを特徴とする請求項９に記載の方法。
【請求項１１】
ａ）１つまたは複数のアプリケーション（１５０）に関連する情報を保存するためのメタデータストア（１８０）と、
ｂ）データ格納サービスシステム（１６０）のマシン命令が保存されるメモリ（１３８）と、
ｃ）前記メモリおよび前記メタデータストアに結合される処理ユニット（１３２）であって、前記プロセッサは、複数の機能を実施するために前記データ格納サービスシステムの前記マシン命令を実行し、前記マシン命令は、
ｉ）前記１つまたは複数のアプリケーションのサービスを求める第１の要求（１６２）をユーザデバイス（１２０）から受け取るステップであって、前記第１の要求は、前記１つまたは複数のアプリケーションのうちのアプリケーションの利用可能なサービスを示すオブジェクト識別子（２０２、２１２、２２２、２３２、２４２）と、前記ユーザデバイスに関連付けられたユーザ識別子とを含むステップ（８０２）と、
ｉｉ）前記メタデータストア内の前記オブジェクト識別子に関連付けられたアクセス制御リスト（３００）にアクセスするステップ（８１４）と、
ｉｉｉ）前記ユーザ識別子が前記メタデータストア内の前記アクセス制御リストに関連付けられていることを確認するステップ（８１８）と、
ｉｖ）確認ステップに応答して、前記第１の要求と異なる、前記サービスを求める第２の要求を生成するステップ（８２６）と、
ｖ）前記第２の要求を前記アプリケーションに送るステップと
を含む処理ユニットとを含むことを特徴とする企業システム（１３０）。
【請求項１２】
前記アクセス制御リストは、前記オブジェクト識別子によって識別されるオブジェクトによって所有されることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記アクセス制御リストにアクセスするステップは、別のオブジェクトのアクセス制御リストにアクセスするステップを含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記オブジェクトは、システムオブジェクト、システムインスタンスオブジェクト、エンティティオブジェクト、メソッドオブジェクト、パラメータオブジェクト、およびパラメータタイプオブジェクトを含む群から選択され、前記マシン命令は、前記システムオブジェクト、前記システムインスタンスオブジェクト、前記エンティティオブジェクト、前記メソッドオブジェクト、前記パラメータオブジェクト、および前記パラメータタイプオブジェクトの前記群を階層として組織するステップと、前記オブジェクトに関連付けられ、かつアクセス制御リストを所有するより高いレベルのオブジェクトを前記階層に基づいて決定することによって、前記オブジェクトの直近の祖先を決定することによって前記別のオブジェクトを決定するステップとをさらに含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
実施されたときに、以下のステップを含む方法を実行するコンピュータ可読命令を含む１つまたは複数のコンピュータ可読記憶媒体であって、前記方法は、
ａ）サービス識別子（２０２）を、接続情報（２０４）、権限付与ユーザ識別子（２５０）、および前記権限付与ユーザ識別子のアクセス権表示（２５２）に関連付けるステップであって、前記サービス識別子は、サービスを提供する複数の利用可能なアプリケーションのうちの少なくとも１つのサービスに関連付けられるステップと、
ｂ）前記サービスを求める要求をユーザデバイスから受け取るステップ（８０２）と、
ｃ）前記ユーザデバイスに関連付けられたユーザ識別子が前記権限付与ユーザ識別子と一致することを、前記複数の利用可能なアプリケーションのうちの前記少なくとも１つにアクセスすることなく確認するステップ（８１８）と、
ｄ）前記アクセス権表示に基づいて、前記サービスを求める前記要求が前記権限付与権利表示によって許可されていることを、前記複数の利用可能なアプリケーションのうちの前記少なくとも１つにアクセスすることなく確認するステップ（８２２）と、
ｅ）前記ユーザ識別子および前記要求が確認された場合、前記複数の利用可能なアプリケーションのうちの前記少なくとも１つに、前記ユーザデバイスのユーザ証明書と異なる証明書を使用してアクセスするステップ（８２８）と、
ｆ）前記複数の利用可能なアプリケーションのうちの前記少なくとも１つに前記サービスを要求するステップ（８３２）と
を含むことを特徴とする１つまたは複数のコンピュータ可読記憶媒体。
【請求項１６】
サービス識別子を権限付与ユーザ識別子および前記権限付与ユーザ識別子のアクセス権表示に関連付けるステップは、前記サービス識別子をアクセス制御リストに関連付けるステップと、前記アクセス制御リストを、前記権限付与ユーザ識別子および前記アクセス権表示を関連付けるアクセス制御エントリに関連付けるステップとを含むことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読記憶媒体。
【請求項１７】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記アクセス制御リストを含むサービスオブジェクトを生成するステップを含むことを特徴とする請求項１６に記載の１つまたは複数のコンピュータ可読記憶媒体。
【請求項１８】
前記サービス識別子をアクセス制御リストに関連付けるステップは、前記サービス識別子を、前記アクセス制御リストを含む前記サービス識別子の直近の祖先オブジェクトを発見するためのアプリケーションプログラムインターフェースと関連付けるステップを含むことを特徴とする請求項１６に記載の１つまたは複数のコンピュータ可読記憶媒体。
【請求項１９】
直近の祖先オブジェクトを発見するステップは、前記サービス識別子に関連する所定のオブジェクト階層を遡るステップと、アクセス制御リストを含む直近のより高いレベルの祖先オブジェクトを決定するステップとを含むことを特徴とする請求項１８に記載の１つまたは複数のコンピュータ可読記憶媒体。
【請求項２０】
前記権限付与ユーザ識別子およびアクセス権表示を、サービス階層に従って、前記サービス表示に関連付けられた子サービス表示に関連付けるステップ（７１８、７２２）をさらに含むことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
組織は、日常業務を実施するために、コンピューティング環境内で、永続的データを使用する汎用データ中心アプリケーションなどの、多くのアプリケーションを使用することができる。例えば、複数のタイプの営業（ＬＯＢ：ｌｉｎｅ  ｏｆ  ｂｕｓｉｎｅｓｓ）システム（例えば、事業必須データベースアプリケーション）が、開発アプリケーションおよび「独自作成（ｈｏｍｅ−ｇｒｏｗｎ）」アプリケーションなどと共に実施されることができる。しかし、１つまたは複数のユーザによるこれらの異種アプリケーションの各々へのアクセスは、フォーマット、言語および／またはセマンティクスを異にする異なる情報による対話、異なるログオンおよび権限付与方法による対話、異なる接続要件による対話、ならびにアプリケーション毎、ユーザ毎に別々の動作スレッドによる対話などを必要とすることがある。
【０００２】
【特許文献１】米国特許出願第１１／１９１７７１号明細書
【特許文献２】米国特許第１１／１９１７７１号
【発明の開示】
【課題を解決するための手段】
【０００３】
以下の説明は、読者に基本的な理解を提供するために、本開示の簡略化された要約を提示する。この要約は、本開示の広範な概説ではなく、本発明の主要／必須要素を識別するものでも、または本発明の範囲を描写するものでもない。その唯一の目的は、後で提示されるより詳細な説明に対する前置きとして、本明細書で開示されるいくつかの概念を簡略化された形式で提示することである。
【０００４】
複数のアプリケーションでのユーザエクスペリエンスを統一するため、ユーザと複数のアプリケーションの間の仲介者として機能するデータ格納サービスシステムが実施されることができ、データ格納サービスシステムは、ユーザには簡単かつ統一されたインターフェースを提供し、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成する。親出願である２００５年７月２８日に出願された特許文献１では、指定されたサービスとどのように対話するかについてのアプリケーション固有の知識をもつことをユーザに求めずに、共通点のない異種のデータストア関連サービスをユーザに提示する、データ格納サービスシステムについて説明している。統一された対話をユーザに提供するため、データストアシステムは、例えば、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどといったサービス対話詳細などのメタデータストア情報を一緒に維持することができる。データ格納サービスシステムは、サービスへのアクセスを求めるユーザ要求を受け取り、関連メタデータにアクセスし、メタデータを使用して、ユーザの簡単で汎用的な統一化かつ／または共通要求をサービスに適した通信に変換する、アプリケーションプログラムインターフェースを提供することができる。
【０００５】
一般に、アプリケーションへの接続のプレファブリケーション（ｐｒｅｆａｂｒｉｃａｔｉｏｎ）およびポーリングを可能にするため、ならびに個人ユーザ情報のパススルー（ｐａｓｓ  ｔｈｒｏｕｇｈ）を回避するため、アプリケーションは、パフォーマンスを理由として、「スーパーユーザ」のコンテキスト内で、例えば、すべての利用可能なデータへのアクセス権を有するアカウントのコンテキスト内でアクセスされることができる。この方式では、１つまたは複数（例えば、ｘ）の「スーパーユーザ」接続が、同時にオープン状態で保持されて（これは実際のユーザログオンに先立って行われてよい）、ユーザ要求毎に接続のクローズおよび再確立を必要とせずに、ｘの接続を用いて、１つまたは複数（ｘ）の一意エンドユーザに同時にサービスすることができる。しかし、スーパーユーザアカウントの実施は、個人セキュリティと対立する。具体的には、すべてのデータが匿名で効果的にアクセスされる場合、例えば、アプリケーションへのすべての要求が「スーパーユーザ」アカウントから来る場合、どのユーザがどのデータにアクセスするかを個人許可に基づいて調整することは可能でない。この問題を軽減するため、多くのアプリケーションは、誰がシステムに保存されたどのデータへのアクセス権を有するかを管理者が指定することを可能にする、独自の権限付与モジュールを提供する。しかし、これは、スーパーユーザとしてではなく、特定のエンドユーザとしての、アプリケーションへの語り掛けを必要とする。このソリューションは、スーパーユーザアカウントによって達成されるパフォーマンス向上を妨げる。例えば、ユーザ毎の権限付与情報の通信は、保護される必要があることがあり、権限付与要求パススルーは、サービスとの通信の量および時間を増大させる。加えて、各要求ユーザは個々に権限付与されるので、サービスを求める各要求は、別個の処理スレッドで実行されることがあり、このことは、サービスおよび利用可能な通信接続に過剰な負荷を掛けることがある。また、各アプリケーションは、独自のモデルを有し、このモデルは、ユーザおよび異なるアプリケーション毎に別個の権限付与を必要とし、ユーザ毎に証明書および／またはアカウントの複数の組が設定および維持されることを必要とし、このことは、環境の個人別および運営上の管理を増大させる。さらに、各アプリケーションまたはサービスは、情報を特定の粒度で提示することができる。例えば、ＳＱＬアプリケーションは、テーブルレベルでの情報へのアクセスを提示することができるのみで、（以下でさらに説明される）より高いまたは低いレベルでは提示できない。同様に、いくつかのアプリケーションのサービスに対するアクセスは、全体的意味で提供されることがあり、例えば、どのような権利も、アプリケーションのサービスの任意の部分にアクセスできる全体的権利である。これは、識別ユーザに対して許可されたアクセスの粒度を制限することがある。
【０００６】
スケーラブルなアカウントアクセスおよびセキュリティ目標の結果として、従来のアプリケーション環境は、個々のアプリケーションのセキュリティモデルを「オフにして」、アプリケーションの「直前で」カスタムコードを書くことができる。この独自作成のコードは、特定のアプリケーションにおけるデータをカタログし、各ユーザに対する許可を綿密に計画する責任を負うことができる。この方式では、エンドユーザは、許可をチェックする中間レイヤと対話することができ、許可が得られた場合、カスタムコードは、スーパーユーザを装って、アプリケーションサービスを呼び出し、取り出されたデータをエンドユーザに転送する。これは、スケーラビリティおよびセキュリティを達成するが、バックエンドシステム毎に、中間レイヤにおける手作りのカスタムコーディングという代償を払っている。さらに、カスタムコーディングは、所望の個々の許可の類似性などにかかわらず、異なるバックエンドアプリケーション毎に個別に達成されなければならない。
【０００７】
カスタムコーディングは、バックエンドシステムに保存されるデータ、およびシステムをコールするのに使用されるＡＰＩについての詳しい知識を必要とする。例えば、各アプリケーションは、独自の権限付与モデルを有し、ユーザに与えられる許可を独自の方法で保存してよい。さらに、各アプリケーションは、ユーザの組を異なる方式で識別してよい。例えば、ＭｉｃｒｏｓｏｆｔのＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙに基づいたシステムは、ある人をＲｅｄｍｏｎｄ／ｐｅｒｓｏｎとして識別することができ、オープンソースのＬＤＡＰ  Ｄｉｒｅｃｔｏｒｙに基づいた別のシステムは、同じ人をＯ＝Ｒｅｄｍｏｎｄ；ＣＮ＝ｐｅｒｓｏｎとして識別することができる。したがって、これらのユーザが同じユーザであることを見分ける方法が存在しないこともある。その場合、管理者は、多くのアプリケーションに散らばった様々な権限付与モデルおよび許可を学ばなければならない。加えて、各アプリケーションは独自の権限付与技法および／または証明書を有してよいので、各ユーザの権限付与は、ユーザによってアクセスされるすべてのアプリケーションについて繰り返されなければならない。このように、必要とされるカスタムコーディングは、ソフトウェアの保守、コスト、および開発時間などを増大させることがある。
【０００８】
親出願のデータ格納サービスシステムは、中間層としてサービスにアクセスするので、各バックエンドアプリケーションのデータサービスをカタログし、ユーザ許可をマップするカスタムコードの保守コスト、開発時間などのため、要求ユーザの権限付与は難しいことがある。ユーザのための統一対話を拡張し、基礎をなすアプリケーションのセマンティクスの詳細をユーザが理解する必要を減らし、アプリケーションのサービスをユーザ定義の粒度で提示し、管理コストを減らし、かつ／またはその他の利点のために、データ格納サービスシステムは、ユーザによって要求されるサービスおよび要求ユーザに関連付けられた権限付与情報に基づいて、ユーザに権限付与することができる。権限付与情報は、要求されたサービス、サービスによって提供されるデータタイプ、サービスのデータタイプ上の個々のメソッド、サーバのデータタイプのメソッドのリターン値の特定のサブ成分、および上記のいずれかのオブジェクトのインスタンス化などを、権限付与されたユーザのユーザ識別子および／または権限付与されたユーザの１つまたは複数の権利もしくは許可された行為と関連付けることなどによって、メタデータデータストアに保存されることができる。別個の（より高い特権の）権利が、任意のオブジェクト上で（管理される権利と類似した）権利を設定／変更することができる人々の組を管理するために使用されてよい。いくつかのケースでは、親オブジェクトのセキュリティ特徴は、要求時に、または他の決められた方式で、子オブジェクトに自動的に伝搬(propagate)されてよい。セキュリティ特徴は、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。ユーザが権限付与されている場合、データ格納サービスシステムは、決められた権限付与および許可された権利に従って、サービスを通してデータ格納サービスシステム権限付与証明書を使用する、単一のスーパーユーザアカウントを介してサービスにアクセスすることができる。
【０００９】
付随する特徴の多くは、添付の図面と関連させて考察される以下の詳細な説明を参照することによってよりよく理解されるので、より容易に評価されよう。
【００１０】
本発明の説明は、添付の図面に照らして読まれる以下の詳細な説明からよりよく理解されよう。
【発明を実施するための最良の形態】
【００１１】
添付の図面中の同様の部分を示すために、同様の参照番号が使用される。
【００１２】
添付の図面と関連させて以下で提供される詳細な説明は、本発明の例の説明として意図されており、本発明の例が構成または利用され得る唯一の形態を表すことは意図されていない。説明は、例の機能および例を構成し動作させるステップのシーケンスを説明する。しかし、同じまたは等価の機能およびシーケンスが、異なる例によって達成されてもよい。
【００１３】
本発明の例は、ネットワーク接続を介してアクセス可能な複数の営業アプリケーションを有する企業環境で実施されるものとして本明細書では説明および例示されるが、説明される企業環境は、限定ではなく、一例として提供されており、任意の数およびタイプのサービスが、以下でさらに説明される任意の数の特徴および／または特徴の組合せで提供されてよいことを理解されたい。
【００１４】
図１および以下の説明は、企業環境内のデータ格納サービスシステムについての簡潔な全般的説明を提供することを意図している。図１に示されるように、１つまたは複数のユーザデバイス１２０は、雲によって表されるネットワーク１３３を介して企業システム１３０に接続してよく、接続１３５を介して企業システムに直接的に接続してよく、企業システムの一部としてよく、または任意の適切な方式で企業システムにアクセスしてよい。
【００１５】
ネットワーク１３３は、ルータ、ゲートウェイ、およびハブなどの、多くのよく知られた構成要素を含んでよく、ユーザデバイス１２０が有線および／または無線媒体を介して通信することを可能にする。ネットワーク１３３は、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）を含んでよいが、その他のタイプのＷＡＮ、ＬＡＮ、無線ネットワーク、電話回線、シリアルおよび／またはパレラルケーブル、同軸ケーブル、ならびにそれらの任意の組合せを含む、適切なプロトコルを使用する様々なその他の通信システムおよび／または方法が使用されてもよい。
【００１６】
各ユーザデバイス１２０は、企業システム１３０から入手可能なサービスへのアクセスを提供するために、適切なコンピューティング環境を提供することができる。図１のユーザデバイス１２０および企業システム１３０、ならびに以下の説明は、データストアシステムの全部または一部が実施され得る適切なコンピューティング環境についての簡潔な全般的説明を提供することを意図している。
【００１７】
図１のユーザデバイス１２０および企業システム１３０の動作環境は、適切な動作環境の一例に過ぎず、動作環境の使用または機能の範囲に関するどのような限定を示唆することも意図されていない。本明細書で説明されるユーザインターフェース編集アプリケーションと共に使用するのに適し得るその他のよく知られたコンピューティングシステム、環境および／または構成は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能消費者家電、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを、それらに限定せずに含む。
【００１８】
図１を参照すると、企業システム１３０へのユーザアクセスを実施するための例示的なシステムは、ユーザコンピューティングデバイス１２０などのユーザデバイスを含む。その最も基本的な構成では、ユーザデバイス１２０は一般に、少なくとも１つの処理ユニット１０２およびメモリ１０４を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図１においては、ライン１０６によって示されている。加えて、デバイス１２０は、追加の特徴および／または機能を有してもよい。例えば、デバイス１２０は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ（例えば、リムーバブルおよび／またはリムーバブルでない）を含んでもよい。そのような追加のストレージは、図１においては、リムーバブルストレージ１０８およびリムーバブルでないストレージ１１０によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の記憶のための任意の方法および技術で実施される、揮発性および不揮発性、リムーバブルおよびリムーバブルでない媒体を含む。メモリ１０４、リムーバブルストレージ１０８、およびリムーバブルでないストレージ１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を保存するのに使用され、デバイス１２０によってアクセスされることができるその他の任意の媒体を、それらに限定せずに含む。そのようなコンピュータ記憶媒体はどれも、デバイス１２０の部分であってよい。
【００１９】
デバイス１２０は、デバイス１２０がネットワーク１３３を介してその他のコンピューティングデバイスなどのその他のデバイスと通信することを可能にする通信接続１１２も含むことができる。通信接続１１２は、通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波などの変調データ信号またはその他の転送機構に具現し、任意の情報配送媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するための方式で設定または変更された特徴の１つまたは複数を有する信号を意味する。限定せずに、例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体と、音響、無線周波、赤外線、およびその他の無線媒体などの無線媒体とを含む。本明細書で使用されるコンピュータ可読命令という用語は、記憶媒体および通信媒体を共に含む。
【００２０】
デバイス１２０は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および／またはその他の入力デバイスなどの入力デバイス１１４を有してもよい。１つまたは複数のディスプレイ、スピーカ、プリンタ、および／またはその他の任意の出力デバイスなどの出力デバイス１１６も含まれてよい。
【００２１】
一例では、ユーザデバイスは、通信接続１１２を使用して、ネットワーク１３３を介して企業システム１３０にアクセスし、企業システムによってサポートされる複数の企業アプリケーション１５０の１つまたは複数のサービスを要求することができる。複数の企業アプリケーション１５０をサポートするため、企業システム１３０は、ユーザデバイス１２０を参照して上で説明されたものと同様の、または異なるコンピューティングデバイスとすることができる。
【００２２】
図１に示されるように、企業システム１３０は、企業アプリケーション１５０から入手可能なサービスを提供するために、適切なコンピューティング環境を提供することができる。必須ではないが、企業システムのデータ格納サービスシステム１６０およびその他の構成要素は、１つまたは複数のコンピュータまたはその他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的文脈で説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラムモジュールの機能は、様々な環境で望ましいように組み合わせてよく、または分散してもよい。
【００２３】
図１を参照すると、企業システム１３０の企業アプリケーション１５０からサービスを提供するための例示的なシステムは、コンピューティングデバイス１３０などのコンピューティングデバイスを含む。その最も基本的な構成では、コンピューティングデバイス１３０は一般に、少なくとも１つの処理ユニット１３２およびメモリ１３４を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ１３４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、または双方の何らかの組合せとしてよい。この最も基本的な構成は、図１においては、ライン１３６によって示されている。加えて、デバイス１３０は、追加の特徴および／または機能を有してもよい。例えば、デバイス１３０は、磁気的または光学的なディスクまたはテープをそれらに限定せずに含む追加のストレージ（例えば、リムーバブルおよび／またはリムーバブルでない）を含んでもよい。そのような追加のストレージは、図１においては、ストレージ１３８によって示されている。デバイス１３０は、デバイス１３０がネットワーク１３３を介して、その他のコンピューティングデバイスなど、その他のデバイスと通信することを可能にする通信接続１４２を含むこともできる。
【００２４】
デバイス１３０は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス、レーザ照準器、赤外線カメラ、ビデオ入力デバイス、および／またはその他の入力デバイスなどの入力デバイス１４４を有してもよい。１つまたは複数のディスプレイ、スピーカ、プリンタ、および／またはその他の任意の出力デバイスなどの出力デバイス１４６も含まれてよい。
【００２５】
当業者であれば、プログラム命令を保存するために利用される記憶装置がネットワーク上に分散され得ることを理解されよう。例えば、リモートコンピュータは、ソフトウェアとして記述されるプロセスの一例を保存することができる。ローカルまたはターミナルコンピュータは、企業システム１０３を介したものとすることができる、リモートコンピュータへのアクセスを行うことができ、プログラムを実行するためにソフトウェアの一部または全部をダウンロードすることができる。代替として、ローカルコンピュータは、必要に応じてソフトウェアの一部をダウンロードすることができ、またはソフトウェア命令のいくらかをローカル端末で実行し、いくらかをリモートコンピュータ（またはコンピュータネットワーク）で実行することによって、分散的に処理することができる。当業者であれば、当業者に知られた従来の技法を利用することによって、ソフトウェア命令の全部または一部が、ＤＳＰまたはプログラマブル論理アレイなどの専用回路によって実施されてよいことも理解されよう。
【００２６】
ユーザデバイス１２０は、複数のアプリケーション１５０の１つまたは複数のサービスにアクセスするために企業システム１３０と対話することができ、複数のアプリケーションは、メモリ１３４、ストレージ１３８に存在してよく、または通信接続などを介して企業システム１３０によってリモートにアクセスされてもよい。図１は企業システム１３０のメモリ１５０に存在するとしてサービスアプリケーション１５０を示しているが、アプリケーション１５０の１つまたは複数が別個のメモリに存在してよいこと、かつ／または通信接続などの接続を介してアクセス可能とすることができる別個のコンピューティングデバイスに存在してよいことを理解されたい。
【００２７】
アプリケーション１５０は、ユーザデバイス１２０に任意の適切なサービスを提供することができる。アプリケーション例は、ＳＡＰまたはＳＩＥＢＥＬによって提供されるような営業システムなどの企業アプリケーションを含むことができる。その他の例は、企業の「独自作成」アプリケーション、およびワールドワイドウェブサイトなどのインターネットサービスなどを含むことができる。
【００２８】
企業システムとの対話は、図１に示されるポータル１７０を介したものであってよい。ポータルは、企業システムへの通路として機能することができ、かつ／または企業システムとの対話を円滑化することができる。適切なポータルの一例は、ワシントン州レッドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐ．から入手可能なＳｈａｒｅＰｏｉｎｔ  Ｓｙｓｔｅｍ（商標）を含むことができる。ポータル１７０を介したユーザ要求に応答して、プロセッサ１３２は、１つもしくは複数のアプリケーション１５０にアクセスし、かつ／または１つもしくは複数のアプリケーション１５０を実行して、ユーザデバイス１２０が、企業システムのメモリ１３４もしくはストレージ１３８などに保存され得る、またはデータ格納サービスシステム１６０によってリモートにアクセスされ得る、データにアクセスし、またはメソッドを実行することを可能にすることができる。
【００２９】
ユーザデバイス１２０は、所望のサービスにアクセスするために、所望のアプリケーションを直接実行することができる。しかし、図１に示されるように、企業システム１３０は、ユーザデバイス１２０と１つまたは複数のアプリケーション１５０の間のインターフェースとしてデータ格納サービスシステム１６０を提供することができる。この方式では、データ格納サービスシステムは、ユーザと複数のアプリケーションの間の仲介者として機能することによって、複数のアプリケーション１５０でのユーザエクスペリエンスを統一して、ユーザには簡単かつ統一されたインターフェースを提供することができ、またアクセス可能な複数のアプリケーションの個々のサービスとの複雑かつ特有の対話を生成することができる。
【００３０】
任意の適切なデータ格納サービスシステム１６０が提供されてよい。１つの適切なデータ格納サービスシステムが、２００５年７月２８日に出願された特許文献２でさらに説明されており、本明細書では明瞭にするために簡潔に説明される。統一された対話をユーザに提供するため、データ格納サービスシステム１６０は、メタデータストア１８０を用いてサービス対話詳細を維持するために、サービスシステムモジュール１９０を含むことができる。データ格納サービスシステム１６０は、サービスへのアクセスを求めるユーザ要求１６２を受け取り、関連メタデータストア１８０にアクセスし、メタデータを使用して、ユーザの簡単な（おそらくは統一された）要求１６２を、アプリケーション１５０の特定の要求されたサービスに適した通信１６４に変換する、アプリケーションプログラムインターフェースを提供することができる。
【００３１】
データストア１８０は、利用可能アプリケーション、利用可能サービス、サービス説明、データタイプ、特定のデータにどのようにアクセスするか、および所望のデータにアクセスするためにサービスとセマンティクス的にどのように通信するかなどの表示を提供することができる。
【００３２】
利用可能なアプリケーション、サービス、およびデータなどは、特定のタイプのオブジェクトとして表されることができる。例えば、システムオブジェクトにアクセスする要求は、メタデータストアにおいて関連付けられるアプリケーションにアクセスする要求を表すことができる。アプリケーション１５０の１つなどのアプリケーションは、永続的かつ／または一時的データを使用して実施される計算ロジックの集まりとして表されることができる。別の例では、エンティティオブジェクトにアクセスする要求は、１つまたは複数のアプリケーション１５０のサービスを介したものとすることができる、関連フィールドまたはデータおよびメソッドまたはロジック定義の集まりにアクセスする要求を表すことができる。別の例では、メソッドオブジェクトにアクセスする要求は、アプリケーションプログラムインターフェースに関連付けられたデータ、またはその他の任意の適切なメソッドにアクセスする要求を表すことができる。別の例では、パラメータにアクセスする要求は、メソッドまたはシステムに関連付けられた単一フィールドまたはデータにアクセスする要求を表すことができる。別の例では、タイプ記述子オブジェクトにアクセスする要求は、特定のシステムに関連する特定のタイプまたはカラム区切り情報内の特定のカラムのすべてのデータなど、特定のタイプのすべてのデータにアクセスする要求を表すことができる。
【００３３】
メタデータストア１８０の一例が、図２のテーブル２００に示されている。メタデータストアでは、ユーザが利用可能なサービスを表すオブジェクト表示は、識別情報およびその他の任意の情報に関連付けられることができ、これらの情報は、ユーザからの統一された簡単な要求１６２をアプリケーション１５０によって要求されるフォーマットをとる複雑なコール１６４に変換するために、サービスシステムモジュール１９０によって使用されることができる。
【００３４】
図２に示されるように、メタデータストア１８０は、システム識別子２０２をシステム記述子２０６および／またはその他の任意の適切な情報の１つまたは複数と関連付ける。システム識別子２０２は、所望システムの任意の適切な識別子であってよい。システムは、アプリケーション１５０の全体アプリケーションであってよく、または１つまたは複数のアプリケーション１５０の特定のサービスまたは機能であってよい。システム記述子２０６は、アプリケーション１５０のうちの関連アプリケーションのタイプおよび／もしくは汎用機能、目的、または名前についての任意の適切な記述とすることができる。例えば、システムは、ＳＡＰおよびＳｉｅｂｅｌなどのＬＯＢまたはその他のアプリケーションのタイプを識別するシステム記述子に関連付けられた一意の識別子とすることができる。
【００３５】
図２に示されるように、メタデータストア１８０は、システムインスタンス識別子２０３を、接続情報２０４、システム識別子２０２、およびその他の任意の適切な情報の１つまたは複数に関連付けることができる。システム識別子によって識別されるシステムは、接続情報２０４がシステムインスタンス識別子２０３およびシステム識別子２０２に関連付けられるときにインスタンス化されてよい。例えばＳＡＰなどの、単一のシステム識別子によって識別される単一のシステムは、例えば異なる接続を介してアクセス可能な複数のバージョンなどの複数のインスタンスを企業システムにわたって有してよく、または異なる接続を介してアクセス可能な同じシステムを有してよいことを理解されたい。この方式では、各システム識別子は、０以上のシステムインスタンス識別子に関連付けられることができる。接続情報２０４は、データ格納サービスシステムが、ネットワークロケーション、ホストサーバ名、ポート番号、データ格納サービスシステム証明書、およびシステムにどのように接続するかに関する情報など、関連システムインスタンスと通信および／または対話することを可能にする任意の適切な接続情報であってよい。データ格納サービスシステム証明書は、データ格納サービスシステムが関連システムにアクセスするための認証および／または権限付与を含むことができる。本明細書で使用される場合、認証は、要求デバイスまたはユーザの識別を意味し、権限付与は、要求ユーザまたはデバイスが要求されたサービスにアクセスする許可または権利を有することの確認を意味する。インスタンス化の表示または説明は、接続情報および／またはシステム記述子に含まれることができる。
【００３６】
図２のテーブル２００に示されるように、メタデータストア１８０は、エンティティ識別子２１２を、エンティティタイプ記述子２１６およびシステム識別子２０２などの１つまたは複数に関連付けることができる。エンティティ識別子２１２は、システム識別子２０２によって識別される関連システムにおいて利用可能な関連フィールドもしくはデータおよび／またはメソッドもしくはロジック定義の特定の集まりを示す、任意の適切な識別子とすることができる。この方式では、各システム識別子２０２は、０以上のエンティティ識別子２１２に関連付けられることができる。例えば、ＳＡＰシステムは、顧客エンティティ、注文エンティティ、および製品エンティティなどを示す１つまたは複数の関連エンティティ識別子を有することができる。メソッド識別子は、所望データを検索するために実行され得るシステムの１組のロジックまたは命令を示す任意の適切な識別子とすることができる。エンティティタイプ記述子２１６は、関連メソッドが実行された場合に検索されるデータまたはデータフィールドの任意の適切な表示とすることができる。エンティティのインスタンスは、エンティティオブジェクトで定義されたメソッドの１つを実行することによって獲得され得る、エンティティ定義内の各フィールドの実際の１組の値である。
【００３７】
図２のテーブル２００に示されるように、メタデータストア１８０は、メソッド識別子２２２を、エンティティ識別子２１２およびパラメータリスト２２６などの１つまたは複数に関連付けることができる。この方式では、システムのアプリケーションプログラムインターフェースについてのメタデータは、メソッドと呼ばれる。エンティティ識別子２１２は、特定の情報を検索するために識別されたメソッドを使用することができる関連エンティティを表すことができる。この方式では、各エンティティ識別子２１２は、０以上のメソッド識別子２２２に関連付けられることができる。メソッド識別子２２２は、指示されたエンティティにアクセスし、かつ／または指示されたエンティティを操作するために、アプリケーション１５０の１つの一部として実行され得る１組のロジックまたは命令を示す任意の適切な識別子とすることができる。メソッド識別子は、読み取り、書き込み、更新、および削除など、メソッドのタイプを示すことができる。例えば、ＳＡＰシステムの顧客エンティティは、顧客生成メソッドおよび顧客表示メソッドなどの１つまたは複数を提供することができる。パラメータリスト２１６は、識別されたメソッドを起動するのに必要なことがあるパラメータならびに／またはその必要構造および／もしくはフォーマットを示す任意の適切なフォーマットの任意の適切なパラメータリストとすることができる。例えば、パラメータリストは、１つもしくは複数のパラメータオブジェクトの識別子ならびに／または必要なパラメータのフォーマットおよびタイプの定義を含むことができる。しかし、パラメータオブジェクト自体が必要なパラメータのフォーマットおよび／またはタイプの定義を提供してもよいことを理解されたい。
【００３８】
単一のシステムＡＰＩが、企業システム内で異なるセマンティクスと共に使用されてよい。例えば、同じＡＰＩが、エンティティの特定のインスタンスを見つけるためばかりでなく、（入力としてワイルドカードを使用するなどして）エンティティの多くのインスタンスを見つけるために使用されてもよい。メタデータストア内のキャッシュ空間を節約するため、メソッドインスタンスの概念が、メソッドとメソッドの各パラメータのデフォルト値の組との間の関連の表現として導入されてよい。したがって、同じメソッドに関連付けられた２つのメソッドインスタンスの起動は、２つのまったく異なる結果を生じさせることがある。
【００３９】
図２のテーブル２００に示されるように、メタデータストア１８０は、パラメータ識別子２３２を、パラメータ記述子２３４およびメソッド識別子２２２などの１つまたは複数に関連付けることができる。メソッド識別子２２２は、メソッドの起動中にそのパラメータオブジェクトを使用することができる１つまたは複数のメソッド識別子を示すことができる。この方式では、各メソッド識別子２２２は、０以上のパラメータ識別子２３２に関連付けられることができる。パラメータ識別子２３２は、関連パラメータを識別する任意の適切な識別子とすることができる。パラメータ記述子２３４は、パラメータタイプ（例えば、文字列、整数、および実数など）およびパラメータフォーマットなど、関連パラメータを記述する任意の適切な情報とすることができる。
【００４０】
図２のテーブル２００に示されるように、メタデータストア１８０は、パラメータタイプ識別子２４２を、タグ２４４、パラメータ識別子２３２、およびデフォルト値２４８などの１つまたは複数に関連付けることができる。パラメータタイプ識別子２４２は、関連パラメータタイプを識別する任意の適切な識別子とすることができる。一例では、パラメータタイプ識別子は、文字列、整数、および実数などの、パラメータがとることのできる値のタイプを示すことができる。別の例では、パラメータタイプ識別子は、コスト、個人名、製品コード、および連絡先情報など、パラメータ値に関連付けられるデータのタイプを示すことができる。パラメータタイプの任意の適切な組が、環境およびアプリケーションに従って使用されてよいことを理解されたい。例えば、１つまたは複数のパラメータタイプ識別子２４２は、別のパラメータタイプ識別子２４２と関連付けられてよく、かつ／または単一のパラメータ識別子２３２と関連付けられてもよい。この方式では、パラメータタイプ識別子２４２および関連データは、複雑なパラメータでファイルを表すことができる。タグ２４４は、関連パラメータタイプが識別子か、フィルタかなど、パラメータタイプのタイプまたはその他の特徴の任意の適切な表示とすることができる。パラメータ識別子２４６は、例えば１つまたは複数のパラメータ識別子２３２など、そのパラメータタイプを有するパラメータ識別子を示すことができる。デフォルト値２４８は、値が保存または指定されていない場合の、パラメータタイプに関連付けられたパラメータのデフォルト値を示す任意の適切なデフォルトまたはヌル値とすることができる。例えば、デフォルト値は、正確な値とすることができ、かつ／またはパラメータの値のフォーマットを示すことができる。
【００４１】
図２は、図１のメタデータストア１８０を単一のテーブル２００として示しているが、リレーショナルデータベース、オブジェクト指向データベース、非構造化データベース、メモリ内データベース、またはその他のデータストアの１つまたは複数を含む、任意の適切なフォーマットの任意の適切なデータストアが、メタデータストアなどを保存および伝達するために使用されてよいことを理解されたい。ストレージアレイが、ＡＳＣＩＩテキスト、バイナリファイル、通信ネットワークを介して伝送されるデータ、またはその他の任意のファイルシステムなどのファイルシステムを使用して構成されてよい。上記のデータストアのこれらの可能な実施にもかかわらず、本明細書で使用されるデータストアおよびストレージアレイという用語は、コンピューティングデバイスによってアクセス可能な、任意の方式で収集および保存された任意のデータを指す。
【００４２】
図２におけるエントリ項目およびテーブル２００が組織される方式は、例示および説明を容易にする目的でのみ提供されており、提供される特定のデータ項目およびそれらが組織される方式は、それらが利用される特定の環境および言語に応じて変化し得ることを理解されたい。一例では、メタデータストアは、シリアル化メタデータオブジェクト定義を含むＸＭＬファイルとして実施されてよい。各アプリケーションは、１つまたは複数のシステムを有することができ、各システムは、例えば、エンティティ、メソッド、パラメータ、およびパラメータタイプなど、１つまたは複数の階層化オブジェクトを含む。
【００４３】
メタデータストア１８０にデータ投入することによって、１つまたは複数のアプリケーション１５０は、企業システム１３０に登録されることができ、例えば、システムオブジェクトは、メタデータストア内でインスタンス化され、エンティティ、メソッド、およびパラメータなど、１つまたは複数のより低い階層のオブジェクトに必要に応じて関連付けられることができる。この方式では、ユーザは、図１のサービスシステムモジュール１９０に、サービスにアクセスするための簡単な要求（例えば、要求１６２）を提供することができる。メタデータストア１８０内のオブジェクトおよび関連メタデータを参照することによって、サービスシステムモジュール１９０は、ユーザが利用可能なサービスを提供するしばしば異種の個々のアプリケーションのフォーマット、言語、およびセマンティクスについての詳細な知識を有するようユーザに要求することなく、統一された要求１６２を、適切なフォーマットの複雑なアプリケーション固有の要求１６４に変換することができる。
【００４４】
データ格納サービスシステム１６０は、ユーザ要求１６２を、フォーマットされたセマンティクス的に正しい要求１６４に変換することができ、アプリケーション１５０と対話するので、アプリケーション１５０は、メタデータストア１８０に保存される接続情報２０４のデータ格納サービスシステム証明書などを介して、データ格納サービスシステムを認証し、かつ／または権限付与することができる。しかし、データ格納サービスシステム１６０が認証され、権限付与されたとしても、これは、要求ユーザ１２０がサービスにアクセスする権限を付与されたことも意味するわけではない。上で述べられたように、ユーザの識別情報および個人証明書のアプリケーションへの転送は、難点になることがある。さらに、複数のコンピュータにわたって多層システム内でユーザ識別情報を維持することは、技術的に課題が多いものとなり得る。したがって、サービスシステム１６０は、関連アプリケーション１５０のサービスにアクセスする前に、要求ユーザの適切な権限付与を決定することができる。この方式では、ユーザ権限付与のための統一された対話が、複数の異種アプリケーションにわたって提供されることができ、統一された対話は、アプリケーション毎に複数のユーザアカウントを管理し、またアプリケーション毎、ユーザ毎に複数のユーザ証明書を管理する必要を軽減することができる。
【００４５】
要求されたサービスへのユーザのアクセスに権限付与するため、データ格納サービスシステム１６０は、権限付与モジュール（図示されず）を提供することができ、または権限付与サービスは、図１に示されたサービスシステムモジュール１９０の機能の一部とすることができる。より詳細には、サービスシステムモジュールは、識別されたユーザデバイスが要求されたサービスに対する適切な権利を有することを確認することができる。権限付与情報は、サービスのオブジェクト識別子を、１つまたは複数のユーザ識別子および／または権限付与ユーザの１つまたは複数の権利もしくは許可された行為に関連付けことなどによって、メタデータストア１８０に保存されることができる。
【００４６】
図２のテーブル２００に示されるように、メタデータストア１８０は、（システム識別子２０２、エンティティ識別子２１２、メソッド識別子２２２、パラメータ識別子２３２、およびパラメータタイプ識別子２４２などの）オブジェクト識別子を、ユーザ識別子２５０および識別されたユーザの１つまたは複数の権利２５２または許可された行為などの１つまたは複数に関連付けることができる。ユーザ識別子２５０は、すべてのユーザ識別子を、または関連サービスにおいて関連する権利を有するユーザ識別子だけを列挙することができる。ユーザ識別子が肯定的権利（例えば、オブジェクトのサービスにアクセスする権利）を有するユーザ識別子だけを含む場合、ユーザ識別子２５０および関連する権利２５２は、アクセス制御リスト（ＡＣＬ：ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔ）と呼ばれることができる。このように、メタデータストア内の各保護可能オブジェクトは、関連するＡＣＬを有することができ、各ＡＣＬは、関連ユーザが何を行うことができるかを詳述する関連する権利の組を有するユーザ識別子のデータ構造または記録である、１つまたは複数のアクセス制御エントリ（ＡＣＥ：ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｅｎｔｒｙ）を含む。
【００４７】
ユーザ識別子は、個人、グループ、デバイス、接続、ロール、ソフトウェアアプリケーション、要求時間、およびユーザデバイスロケーションなどの１つまたは複数を示すユーザコンテキスト記述子などの任意の適切なユーザ識別子とすることができる。簡単な一例では、ユーザ識別子は、ポータル１７０を用いる個人アカウントとすることができる。より複雑な一例では、ユーザ識別子は、１日の指定時間範囲（例えば業務時間）内における、（必要とされるセキュリティレベルを有し得る）特定の接続を介したポータルを用いるユーザアカウントの組合せとすることができる。この方式では、サービスへのアクセスは、基礎をなすバックエンドアプリケーション１５０のいずれか１つまたは複数によって利用可能なものよりも細かいものであり得る粒度を用いて制御されることができる。
【００４８】
ＡＣＥ内の各ユーザ識別子は、示されたユーザによって許可された行為、権限、および／または特権を示す関連する１つまたは複数の権利表示２５２を有することができる。権利表示２５２は、オブジェクトに関連付けられた権利の任意の適切な表示とすることができる。例えば、オブジェクトに関連付けられた権利は、オブジェクトを見ること（例えば、オブジェクトを実行してデータを獲得することによって実行され得る、オブジェクトによって表されるバックエンドシステムに保存されたデータを見ること）、オブジェクトを編集すること、オブジェクト機能を有効化または無効化すること、オブジェクトの許可を設定すること（例えば、関連ＡＣＬを変更すること）、オブジェクトを実行すること（例えば、オブジェクトがメソッドである場合）、およびオブジェクトのコピーを表示することのうちの１つまたは複数を含む。いくつかのケースでは、ＡＣＥにおいて列挙された肯定的権利の欠如が、指示ユーザ識別子に権利が提供されないことを示すことができる。その他のケースでは、否定的権利は、ＮＯＴ  ｅｄｉｔｉｎｇ  ｔｈｅ  ｏｂｊｅｃｔなどとして、ＡＣＥに含まれることができる。この後者の例は、オブジェクトが、関連ＡＣＬにおいて別途指定されない限りすべてのユーザに与えられるデフォルトの権利の組を有する場合に役に立つことがある。
【００４９】
メソッドなどのオブジェクトが関連ＡＣＬを有さなくてもよいことを理解されたい。データ格納サービスシステム１６０は、任意の適切な方式で、関連ＡＣＬの欠如を解釈することができる。例えば、ＡＣＬなしは、すべてのユーザがすべての権利または所定もしくはデフォルトの１組の権利を有することができることを示してよく、これは、フィルタオブジェクトの場合に適切なことがある。別の例では、関連ＡＣＬなしは、ユーザがどのような権利も有さないことを示してよい。しかし、メタデータストアにおいてオブジェクト自体を変更する権利など、いくつかのデフォルトの権利が、オブジェクト毎に自動的にインスタンス化されてよいことを理解されたい。
【００５０】
単一のオブジェクト（例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど）に関連付けられたＡＣＬ例が、図３のテーブル３００に示されている。ＡＣＬ３００は、１つまたは複数のＡＣＥ３０２、３０４、３０６からなるリストを含む。各ＡＣＥは、関連ＡＣＥを識別するＡＣＥ識別子によって表されることができる。一例では、ＡＣＥ識別子は、ＡＣＥ自体、すなわち、権限付与ユーザ識別子と各関連ユーザ識別子についての関連権利とからなるリストとすることができる。図３に示されるように、ＡＣＥ識別子は、ユーザ識別子と権利とからなる関連ＡＣＥリストを保存するデータ構造を示す識別子とすることができる。例えば、ＡＣＥ３０２は、ユーザ識別子３２２、３２４と関連権利識別子３２６、３２８とを含むデータ構造３２０を示すことができる。同様に、ＡＣＥ３０６は、ユーザ識別子３６２、３６４と関連権利識別子３６６、３６８とを含むデータ構造３６０を示すことができる。要求ユーザに関連付けられた正しいＡＣＥの発見を簡単にするため、ＡＣＥ識別子３０２、３０４、３０６は、ユーザ識別子の少なくとも一部、または要求ユーザから受け取られ、もしくは要求ユーザについて発見されることができる、その他の何らかのユーザ表示を含むことができる。
【００５１】
１つまたは複数のオブジェクトが同じＡＣＬを共有してよく、かつ／または１つまたは複数のＡＣＬが同じＡＣＥを共有してよいことを理解されたい。このようにして、ユーザのグローバル権利は、複数のＡＣＬおよび／もしくはＡＣＥを有する個々のサービスに適合させられることができ、または単一のＡＣＥを参照する複数のＡＣＬを有するすべてのサービスに対して一括して変更されることができる。
【００５２】
オブジェクトがメタデータストアにおいてインスタンス化される場合、サービスシステムモジュール１９０は、そのオブジェクトに対するデフォルトセキュリティ設定を決定することができる。デフォルトセキュリティ設定は、異なるタイプのオブジェクトに対して同じでも、または異なってもよい。例えば、新しいシステムオブジェクトは、オープン（または無）セキュリティ設定を有することができ、これは、ＡＣＬにおいて別途指示されない限り、すべてのユーザがすべての権利を有することを意味する。しかし、エンティティ、およびシステムに関連付けられたメソッドインスタンスは、クローズセキュリティ設定を有することができ、これは、ＡＣＬにおいて別途指示されない限り、ユーザがそのオブジェクトにおける権利を有さないことを意味する。デフォルトセキュリティ設定が必要に応じて使用されてよいことを理解されたい。
【００５３】
いくつかのケースでは、オブジェクトは、そのオブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否するために、親オブジェクトから得られたデフォルトセキュリティ設定を有することができる。例えば、上で述べられたように、オブジェクト階層は、システム、エンティティ、メソッド、パラメータ、パラメータタイプ、およびその他の任意の適切なオブジェクトタイプの任意の組合せを含むことができる。したがって、インスタンス化されたエンティティオブジェクトは、親システムオブジェクトからセキュリティまたはＡＣＬを継承することができる。一例では、セキュリティ設定（例えばＡＣＬ）は、直接の親からのみ継承されてよい。別の例では、ＡＣＬは、オブジェクトの１つまたは複数の任意の祖先（親、親の親など）から継承されてよい。例えば、パラメータなどのより低い階層のオブジェクトは、親オブジェクトからのみ、例えば関連メソッドオブジェクトからのみＡＣＬを継承することができる。メソッドオブジェクトは、独自のＡＣＬを有してもよく、または親の、例えばエンティティオブジェクトのＡＣＬを参照してもよい。別の例では、パラメータなどのより低い階層のオブジェクトは、任意またはすべての祖先オブジェクトからＡＣＬを継承することができる。より詳細には、より低い階層のオブジェクトは、親から、例えばメソッドオブジェクトからＡＣＬを継承することができ、それを、親の親からの、例えばエンティティオブジェクトからのＡＣＬと組み合わせることができ、さらにそれを、親の親の親からの、例えばシステムオブジェクトからのＡＣＬと組み合わせることができる。祖先オブジェクトからの複数のＡＣＬの組合せは、組み合わされるＡＣＬに含まれるすべてのＡＣＥの結合（ｕｎｉｏｎ）、重複ＡＣＥを除去した合併（ｍｅｒｇｅ）、すべての組み合わされるＡＣＬと無矛盾のユーザおよび権利の最小量を選択したＡＣＬの共通部分（ｉｎｔｅｒｓｅｃｔｉｏｎ）などの任意の適切な組合せとすることができる。
【００５４】
いくつかのケースでは、ＡＣＬおよび／またはＡＣＥなどのセキュリティ設定の継承が、オブジェクトに関連付けられたサービスまたはリソースへのアクセスを提供または拒否することを可能にするため、追加または代替の階層が提供されてよい。例えば、ＡＣＬおよび／またはＡＣＥが、所定の方式でオブジェクト階層の外部またはオブジェクト階層の内部において継承されることを可能にする、セキュリティ階層が生成されてよい。
【００５５】
一例では、メタデータストア内の各保護オブジェクトは、オブジェクト識別子と関連付けられた独自のＡＣＬを有さなくてよい。いくつかのケースでは、オブジェクトは、別のオブジェクトのＡＣＬを借りること、または参照することができる。「他のオブジェクト」は、独自のＡＣＬを有するほど十分に重要な直近のメタデータオブジェクトとして決定されることができる。直近のメタデータオブジェクトは、任意の適切な方式で定義されることができる。例えば、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の祖先（例えば、親および親の親など）として定義されることができる。別の例では、直近のオブジェクトは、インスタンス化システムのためのオブジェクト階層内で定義された、そのオブジェクトの直近の親類（例えば、親、子、および親の親など）として定義されることができる。別の例では、直近のオブジェクトは、そのオブジェクトに最も類似したメタデータストア内の別のオブジェクトとして定義されることができる。例えば、オブジェクトがＳＡＰアプリケーションの顧客リストを示すパラメータである場合、直近のオブジェクトは、別のＳＡＰアプリケーションまたはＳＩＥＢＥＬアプリケーションなど類似のシステムからの顧客パラメータとすることができる。
【００５６】
１つのオブジェクトから別のオブジェクトへの階層的かつ遺伝的セキュリティを実施するため、セキュリティ階層が生成されることができる。任意の適切な階層が使用されてよい。例えば、図４は、継承を定義するのに使用され得るセキュリティオブジェクトクラスの階層例４００を示している。非保護オブジェクト４０６に加えて、階層４００は、アクセス制御メタデータオブジェクト４０２および個々にセキュアである(individually securable)メタデータオブジェクト４０４の２つの抽象オブジェクトクラスを導入する。アクセス制御メタデータオブジェクトは、ＡＣＬのソースにかかわらず、ＡＣＬを介してなど、アクセス制御を必要とするオブジェクトのクラスを表すことができる。それ自体がアクセス制御メタデータオブジェクトである個々にセキュアであるメタデータオブジェクト４０４は、それが所有するＡＣＬを供給する。
【００５７】
メタデータオブジェクト４０６は、セキュリティまたはユーザ権限付与を必要としないオブジェクトを分類するために使用することができる。メタデータオブジェクト４０６として分類され得るオブジェクトの一例は、フィルタとすることができる。
【００５８】
個々にセキュアであるメタデータオブジェクトではないアクセス制御メタデータオブジェクト４０２は、独自のＡＣＬを所有せず、むしろ個々にセキュアであるメタデータオブジェクトなどの別のオブジェクトからのＡＣＬに依存する。この方式では、アクセス制御メタデータオブジェクトは、個別に保護可能な（すなわちＡＣＬを所有する）直近の祖先へのリンクを提供するメソッドを実施するために、サブクラサ（ｓｕｂｃｌａｓｓｅｒ）を使用することができる。アクセス制御メタデータオブジェクトとして分類され得るオブジェクトの一例は、動作オブジェクトおよび／またはパラメータオブジェクトとすることができる。
【００５９】
一例では、アクセス制御メタデータオブジェクトは、ＡＰＩとして実施されることができる。アクセス制御メタデータオブジェクト４０２ＡＰＩは、１つまたは複数のメソッドまたは関数を提供することができる。メソッドは、直近の個別に保護可能な祖先から適切なＡＣＬを取り出すことができるｇｅｔ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔを含むことができる。アクセス制御メタデータオブジェクト４０２は、所望ＡＣＬのオーナを決定するｇｅｔ  ｎｅａｒｅｓｔ  ｉｎｄｉｖｉｄｕａｌｌｙ  ｓｅｃｕｒａｂｌｅ  ａｎｃｅｓｔｏｒなどのメソッドを提供することができる。上で述べられたように、直近の祖先は、任意の適切な方式で決定されてよい。例えば、直近の祖先は、個別保護可能オブジェクトである直近の親類（例えば、子、親、および親の親など）とすることができ、またはより高いレベルの階層の直近の祖先（例えば、親および親の親など）とすることができる。アクセス制御メタデータオブジェクトへの近接度は、オブジェクトのタイプまたは「世代」数もしくはオブジェクトタイプ階層（例えば、システム、エンティティ、メソッド、パラメータ、およびパラメータタイプなど）内での隔たりのレベルなど、任意の適切な方式で決定されてよい。
【００６０】
個別保護可能メタデータオブジェクト４０４は、独自のＡＣＬを所有する。個別保護可能メタデータオブジェクトは、直近の個別に保護可能な祖先を要求された場合、その自体を返すことができ、このことは、アクセス制御メタデータオブジェクトの定義を満たすことができる。同様に、個別保護可能メタデータオブジェクトは、個別保護可能オブジェクトが必要に応じて独自のＡＣＬを子にコピーまたは伝搬することができるように、個別保護可能メタデータオブジェクトのすべての個別に保護可能な子オブジェクトを供給することを、サブクラスに要求することができる。個別保護可能メタデータオブジェクトとして分類し得るオブジェクトの一例は、システムオブジェクト、エンティティオブジェクト、メソッドオブジェクト、およびメソッドインスタンスオブジェクトなどを含むことができる。
【００６１】
アクセス制御メタデータオブジェクトと同様に、個別保護可能メタデータオブジェクトは、ＡＰＩとして実施されることができる。個別保護可能メタデータオブジェクト４０４ＡＰＩは、１つまたは複数のメソッドまたは関数を提供することができる。個別保護可能メタデータオブジェクトは、それ自体でアクセス制御オブジェクトであるので、ｇｅｔ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔおよびｇｅｔ  ｎｅａｒｅｓｔ  ｉｎｄｉｖｉｄｕａｌｌｙ  ｓｅｃｕｒａｂｌｅ  ａｎｃｅｓｔｏｒなど、アクセス制御メタデータオブジェクトによって提供される関数またはメソッドの１つまたは複数を「継承」することができる。個別保護可能メタデータオブジェクトは、アクセス制御メタデータオブジェクトから継承されるメソッドに加えてまたは代わりに、その他の任意の適切な関数および／またはメソッドを提供することもできる。例えば、メソッドは、ユーザが、個別保護可能オブジェクトに所有または関連付けられたアクセス制御リスト（および関連するアクセス制御エントリ）にデータ投入すること、かつ／またはそれらを変更することを可能にする、ｓｅｔ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔを含むことができる。個別保護可能メタデータオブジェクト４０４は、個別保護可能メタデータオブジェクトとして分類されるオブジェクトの子にアクセス制御リストを伝搬させることができる、ｃｏｐｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔ  ｔｏ  ｃｈｉｌｄｒｅｎなどのメソッドを提供することができる。ＡＣＬの伝搬は、オブジェクトのすべての子に影響を与えることができ、または（パラメータリスト入力などを介するなどして）所定の数の世代、所定の組の子にのみ影響を与えることができる。
【００６２】
個別保護可能メタデータオブジェクトの子を決定するため、個別保護可能メタデータオブジェクトは、個別保護可能メタデータオブジェクトの子の子を取得するメソッドを提供することができる。個別保護可能メタデータオブジェクトとして分類されたオブジェクトの子は、任意の適切な方式で決定されてよい。例えば、子は、オブジェクト階層（例えば、システム、エンティティ、メソッド、およびパラメータなど）内で決定されたように、個別保護可能メタデータオブジェクトとして分類されたオブジェクトに依存するオブジェクトとして定義されることができる。
【００６３】
図４のセキュリティ階層によって提供されるファクタリング（ｆａｃｔｏｒｉｎｇ）は、ＡＣＬが個別保護可能メタデータオブジェクト自体の上にあるので、アクセスチェックが、（例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの）オブジェクトメタデータ木を歩く必要なしに、できるだけ迅速に必要とされる場合に、オブジェクトが、個別保護可能メタデータオブジェクトＡＰＩをサブ分類することを可能にすることができる。いくつかのケースでは、ＡＣＬに関連するストレージおよびそれを伝搬させる時間が重要となり得るので、オブジェクトは、個別保護可能メタデータオブジェクトの粒度が細かい場合、それをサブ分類するべきではない。加えて、アクセスチェックは、独自のＡＣＬを有する直近のオブジェクトを見つけるために、（例えば、パラメータを含む、メソッドを含む、エンティティを含む、システムなどの）メタデータオブジェクト階層を遡るのに費やされる時間を許容することができてもよい。
【００６４】
オブジェクトのセキュリティ分類は、任意の適切な方式で示されてよい。例えば、メタデータストア１８０は、オブジェクトの分類を示すセキュリティタイプ表示を保存することができる。別の例では、オブジェクト識別子が、分類を示すことができる。別の例では、オブジェクト自体（例えば、オブジェクトを定義するコード）が、セキュリティ分類を定義し、かつ／または示すことができる。
【００６５】
一例では、ＡＣＬおよび／またはＡＣＥは、アプリケーションプログラムインターフェースを使用して、企業システムによって実施されてよい。例えば、オブジェクトの各クラスまたはタイプは、関連するＡＣＬ  ＡＰＩおよび／またはＡＣＥ  ＡＰＩを有することができる。ＡＰＩを共有するオブジェクトのクラスまたはタイプは、オブジェクト階層（例えば、システム、エンティティ、メソッド、およびパラメータなど）に関係してもよく、かつ／または保護可能なオブジェクト階層（例えば、アクセス制御メタデータオブジェクトおよび個別保護可能メタデータオブジェクトなど）に関係してもよい。ＡＣＬおよびＡＣＥ  ＡＰＩは、基礎をなすオブジェクトの個別またはグループ特徴のいずれか１つまたは複数に従って生成されてよいことを理解されたい。図５は、ＡＣＬ  ＡＰＩ５００の一例の表現を示し、図６は、ＡＣＥ  ＡＰＩ６００の一例の表現を示している。ＡＰＩは、任意の適切な入力、出力、および／または関数を有することができる。例えば、図５のＡＣＬ  ＡＰＩ５００の例に示されるように、ＡＰＩの機能は、アクセスチェック５０２とすることができる。より詳細には、アクセスをチェックするため、ＡＣＬ  ＡＰＩ５００は、要求ユーザが関連ＡＣＥに載せられていること、および適切な権利に関連付けられていることを確認することができる。アクセスをチェックするため、ＡＣＬ  ＡＰＩ５００は、図６のＡＣＥ  ＡＰＩ６００を実施することができる。
【００６６】
ＡＣＥ  ＡＰＩは、実施された場合、識別設定６０６、識別取得６０８、権利設定６０２、および権利取得６０４などの機能のいずれか１つまたは複数を提供してよい。識別設定６０６は、ＡＣＥに載せられるユーザ識別子を生成するため、かつ／または変更するために実施されることができる。このようにして、特定のオブジェクトに対して権限付与された新しいユーザ識別子が、ＡＣＥに対する行もしくはレコードの追加もしくは削除を行うことによって、簡単に追加もしくは削除されることができ、またはＡＣＥの全体もしくは一部が、グループとして置き換えられることができる。識別取得６０８は、ＡＣＥに載せられた１つまたは複数のユーザ識別子からなるリストを見るため、かつ／または確認するために実施されることができる。権利設定６０２は、ＡＣＥに載せられた関連ユーザの権利を生成するため、かつ／または変更するために実施されることができる。このようにして、ユーザ識別子に関連付けられた権利機能は、特定のオブジェクトのＡＣＥ内で所望の権利を追加または削除することによって、簡単かつ／または集中的に操作されることができる。権利取得機能６０４は、載せられたユーザ識別子に関連付けられた１つまたは複数の権利のリストを見るため、かつ／または確認するために実施されることができる。この方式では、図５のＡＣＬ  ＡＰＩ５００のアクセスチェック機能５０２は、何らかの方式でユーザが権限付与されていることを確認するために、識別取得機能６０８を実施することができる。特に、識別取得機能の結果は、要求ユーザのユーザ識別子と比較され得る権限付与ユーザの完全なリストを返すことができる。別の例では、要求ユーザの識別子が、ＡＣＥ  ＡＰＩに提供されることができ、識別取得機能が実施されたとき、示されたユーザ識別子がＡＣＥ内のユーザ識別子のリストに含まれているか、または含まれていないかの確認結果（ｖｅｒｉｆｉｅｒ）が返されることができる。別の例では、要求されたサービスまたはアクセス権が、ＡＣＥ  ＡＰＩに提供されることができ、ユーザ取得機能は、示されたアクセス権を有するユーザ識別子のリストを返すことができる。ＡＣＬ  ＡＰＩ５００のアクセスチェック５０２は、識別されたユーザがサービスにアクセスする適切な権利を有することを確認するために、権利取得機能６０４を実施することができる。一例では、ユーザ識別子が、ＡＣＥ  ＡＰＩに提供されることができ、そのユーザの関連する権利が返され、その後、ユーザ要求で要求されたサービスと比較されることができる。別の例では、ユーザ識別子および要求されたサービスが、ＡＣＥ  ＡＰＩに提供されることができ、権利取得機能は、示されたアクセス権が与えられているか、または与えられていないかの確認結果を返すことができる。ユーザおよび関連する要求されたアクセス権の権限付与は、任意の適切な方式で確認され得ることを理解されたい。
【００６７】
図５のＡＣＬ  ＡＰＩ５００は、ＡＣＬ  ＡＰＩを記述する１つまたは複数の表示または識別子を含むことができる。例えば、ＡＣＬ  ＡＰＩは、ＡＣＬ識別子５０４、ＡＣＬの説明またはＡＣＬに関連付けられたオブジェクトの表示とすることができるＡＣＬ説明、ＡＣＬがメモリにキャッシュされているか、またはストレージから取り出さなければならないかなどを示すことができるキャッシュ表示５０８の１つまたは複数を含むことができる。
【００６８】
図６のＡＣＥ  ＡＰＩ６００は、ＡＣＥ  ＡＰＩを記述する１つまたは複数の表示または識別子を含むことができる。例えば、ＡＣＥ  ＡＰＩは、ＡＣＥ識別子６１０、メタデータオブジェクト識別子６１２、ユーザ識別子６１４、権利識別子６１６、およびシステムインスタンス識別子６１８などの１つまたは複数を含むことができる。ＡＣＥ識別子６１０は、ＡＣＥを識別する任意の適切な識別子とすることができる。メタデータオブジェクト識別子６１２は、ＡＣＥに関連付けられた任意の適切なオブジェクト識別子とすることができる。例えば、メタデータオブジェクト識別子は、システムオブジェクトおよびエンティティオブジェクトなどへの参照を含むことができる。ユーザ識別子６１４は、権利識別子６１６によって示される権利の下で関連オブジェクトにアクセスする権限を付与されたユーザのリストを含むことができる。システムインスタンス識別子６１８は、いくつかのケースで、システムオブジェクトの特定のインスタンスを示すために使用されることができる。例えば、システムの複数のインスタンスが、メソッドインスタンスなどの単一の保護可能オブジェクトのためにインスタンス化されてよい。例えば、製品スタジオシステム（例えば、図１のアプリケーション１５０の１つ）のシステムインスタンスが１００個ある場合、システムの１つまたは複数のメソッドインスタンスオブジェクトは、システムインスタンス毎に別個のＡＣＬを有することができる。システムインスタンス識別子は、システムまたはシステムインスタンスではないオブジェクトと関係し得るので、任意選択とすることができる。
【００６９】
図７は、図１のメタデータストア１８０を生成し、データ投入する方法例７００を示している。任意の組合せおよび順序の以下で説明される動作が必要に応じて実施されてよいことを理解されたい。
【００７０】
メタデータストアを設定するため、開発者などのユーザは、メタデータオブジェクトを生成７０２するよう要求することができる。メソッド実行（例えば、オブジェクト生成）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定７０４することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、ユーザがサービスにアクセスする権限を付与されない旨の通知を返すなど、適切な動作をとってもよく７０８、または代替サービス（例えば、ファイル編集の代わりのファイル表示）が提供されてもよい。ユーザがメソッドを実行する権限を付与される場合、メタデータオブジェクトは、任意の適切な方式で生成されてよい。
【００７１】
例えば、ユーザが、新しいメタデータパッケージ（例えば、関係オブジェクトのファミリ）をロードするためのコードを書きたいとする。１つのケースでは、ユーザは、以下のように入力することができる。
【００７２】
【表１】
2008547118.tif 000003
【００７３】
新しいシステムが．ＬｏａｄＦｒｏｍＰａｃｋａｇｅ（）メソッドを使用して生成されるとき、要求ユーザが、パッケージからロードするメソッドに関連付けられたＡＣＥ内で、そのユーザ識別子に関連付けられた、パッケージからのロード（または実行）権を有することを確認するために、上の動作７０４のアクセスチェックが実行されることができる。いくつかのケースでは、実行権は、編集権も伴っていない限り、役に立たないこともある。例えば、メソッドが実行されることができても、オブジェクトの編集権も付与されていない場合、実行の結果（例えば、新しいメタデータオブジェクト）は、インポートされることができない。パッケージがロードされると、子メタデータオブジェクト（例えば、エンティティおよびメソッドなど）が、元の親ＡＣＬを正確に反映したＡＣＬをデフォルトとして生成されることができる。いくつかのケースでは、パッケージがメタデータオブジェクト階層の任意のレベルで作成されることを可能にするため、すべてのメタデータオブジェクトが、パッケージからのロード（メソッド）を有することができる。
【００７４】
親オブジェクトまたはパッケージ内のどのオブジェクトも関連ＡＣＬを有さない場合、メタデータオブジェクト上でセキュリティを設定するため、オブジェクトのセキュリティパラメータが生成されることができる。ユーザは、特定のオブジェクトに関連付けられたＡＣＬを生成するように要求７１０することができる。ＡＣＬの編集（すなわち、本明細書で使用される編集は、生成、子の生成、削除、および更新などを含む）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドオブジェクトへのアクセス権を有するかどうかを決定７１２することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００に類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、ＡＣＬが生成７１４され、示されたユーザ識別子および１つまたは複数のユーザ識別子に関連付けられた権利などを投入されることができる。
【００７５】
例えば、ユーザが、ＡＣＬを生成または編集するためのコードを書きたいとする。１つのケースでは、ユーザは、以下のように入力することができる。
【００７６】
【表２】
2008547118.tif 000004
【００７７】
上の例では、アクセスチェック７１２は、任意のメタデータオブジェクト上の．ＳｅｔＡｃｌ（）メソッドで実行されることができる。アクセスチェックは、．ＳｅｔＡｃｌ（）メソッドの要求ユーザが、オブジェクト（ここでは、メソッドインスタンスオブジェクトｍｉ）のＡＣＬに許可設定権を有さなければならないこと、またはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ＡＣＬ（ここでは、Ａｃｌ）は、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも１つのＡＣＥを含むことを要求されてよい。
【００７８】
オブジェクトのＡＣＬおよび／またはＡＣＥにデータ投入するため、サービスモジュール１９０は、ユーザ識別子および権利などの配置および入力を容易にするユーザインターフェースを提供することができる。ユーザインターフェース表示の例が、図９〜図１２に示されている。任意の適切なユーザインターフェースおよび関連コントロールが、オブジェクトおよび関連メタデータ値の編集を容易にするために、ユーザに提供されてよい。
【００７９】
図９は、エンティティのタイプ９０２のメタデータオブジェクトを管理するための管理ユーザインターフェース９００を示している。オブジェクトのセキュリティパラメータは、セキュリティボタン９０４を選択することによってアクセスされることができるが、セキュリティパラメータは、管理ユーザインターフェース表示において直接、または任意の適切なユーザインターフェースコントロールを介してアクセス可能であってもよい。現在のユーザが、メタデータオブジェクトおよび／または親のメタデータオブジェクト上でセキュリティを変更する権限を付与されていない（例えば、許可設定権をもたない）場合、セキュリティボタンは、使用不可、グレー表示、また非提供にされるなどしてよい。
【００８０】
セキュリティボタン９０４の選択に応答して、サービスモジュール１９０は、図１０に示された許可管理インターフェース１０００などの許可管理インターフェースを表示することができる。許可管理インターフェースは、ユーザをインターフェースページに属させるオブジェクトのためのＡＣＬを表すことができる。インターフェース１０００では、各行１００４は、ＡＣＥを表すことができる。新たにインスタンス化されたオブジェクトでは、ＡＣＥのリストは空であってよい。オブジェクトおよび関連する権利に対してより多くの権限付与ユーザを生成するため、許可ページ１０００は、新しいユーザエントリを直接利用可能にすることができ、または新しいユーザ識別子のエントリが、ユーザ追加ボタン１００２など、任意の適切なインターフェースコントロールを介してアクセスされることを可能にすることができる。ＡＣＥからのユーザの削除を可能にするユーザ削除ボタン１００６、選択ユーザ許可変更ボタン１００８、および／またはユーザがオブジェクトにアクセスし、オブジェクトを変更し、かつ／もしくは削除することを可能にする他の任意の適切なインターフェースコントロールなど、その他の適切なインターフェースコントロールが提供されてもよい。
【００８１】
新規ユーザボタン１００２の選択に応答して、サービスモジュール１９０は、図１１に示されたユーザ追加インターフェース１１００など、ユーザ追加インターフェースを表示することができる。ユーザは、任意の適切なコントロールを介してユーザ識別子を提供することができる。例えば、図１１に示されるように、ユーザは、ユーザ識別子をｕｓｅｒｓテキストボックス１１０２に入力することができ、かつ／またはブラウズボタン１１０４を介して発見可能なユーザ識別子を選択することによって入力することができる。示された１つまたは複数のユーザに関連付けられた権利は、任意の適切な方式で提供されてよい。例えば、ユーザ識別子の入力時に、デフォルト権利が、ユーザによって変更されない限り、ユーザ識別子に関連付けられてよい。別の例では、ユーザ追加インターフェースは、任意の適切な方式で選択または指示され得る利用可能な権利のリストまたはその他の抜粋を提供することができる。図１１のインターフェースは、関連チェックボックスコントロール１１０８を有する利用可能な権利１１０６を示している。
【００８２】
図１１の許可変更ボタン１１０８の選択に応答して、サービスモジュール１９０は、図１３に表示された許可変更ユーザインターフェース１３００など、許可変更ユーザインターフェースを表示することができる。ユーザは、図１１のユーザインターフェースで１つまたは複数のユーザを選択することができ、許可変更インターフェースは、それら選択されたユーザに対する許可が変更されることを可能にする。別の例では、許可変更ページが、オブジェクトの既存または新規権限付与ユーザの選択または入力を可能にすることができ、許可が変更または生成されることを可能にすることができる。図１３のユーザインターフェース例に示されるように、許可変更インターフェースは、関連オブジェクトについてのユーザ識別子１３０２を表示することができる。ユーザインターフェースは、表示されたユーザに対する関連許可も表示することができ、かつ／またはそのユーザのために選択され得る利用可能なオプションも表示することができる。例えば、図１３を参照すると、関連オブジェクトおよび関連ユーザ１３０２について利用可能な許可オプション１３０４が、チェックボックス１３０６などの関連コントロールと共に表示されており、チェックボックスは、選択（例えば、チェック）または禁止（例えば、チェックなし）として許可の操作を指示し、可能にすることができる。関連コントロール（例えば、チェックボックス１３０６）を操作することによって、ユーザは、利用可能な許可を選択することができ、かつ／または選択解除することができる。リストボックス、テキストボックス、およびラジオボタンなど、任意の適切なコントロールインターフェースが提供されてよいことを理解されたい。
【００８３】
いくつかのケースでは、ユーザ識別子に関連付けられる特定の権利の選択は、当該またはその他のオブジェクトについて、その他の権利がそのユーザ識別子に関連付けられる原因となることができ、またユーザ識別子のロールを変更することなどができる。例えば、新規ユーザのための権利を選択するプロセスにおいて、許可設定または管理権が選択された場合、その新規ユーザは、オブジェクトおよびこのオブジェクトの下のすべてのオブジェクトのための代表管理者となることができる。すなわち、ａｄｍｉｎ  ＡＣＥは、オブジェクト階層木を下方に辿って自動的に伝搬されることができる。
【００８４】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集し、（自動的に行われないのであれば）この情報をすべての子メタデータオブジェクト上を下方に伝搬させたいと思うことがある。開発者などのユーザは、親オブジェクトのＡＣＬを編集することを要求７１６することができる。ユーザは、（変更された）親オブジェクトのセキュリティ情報を、親オブジェクトのすべてまたは指示された子オブジェクトへと下方に伝搬させることを要求７１８することができる。メソッドの実行（例えば、オブジェクトの設定および伝搬）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定７２０することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ＡＣＬが変更７２２され、その後、親の適切な子へと下方に伝搬されることができる。
【００８５】
例えば、ユーザは、以下のようなコードを入力することができる。
【００８６】
【表３】
2008547118.tif 000005
【００８７】
上の例では、アクセスチェック７２０は、オブジェクト上での．ＳｅｔＡｃｌＡｎｄＰｒｏｐａｇａｔｅ（）メソッドの実行に応答して実行されることができる。アクセスチェックは、要求ユーザが、オブジェクトまたはオブジェクトの親に許可設定権を有さなければならないことを規定することができる。ＡＣＬは、管理され得ないオブジェクトの生成を防ぐために、いくつかのユーザ識別子に許可設定権を提供する少なくとも１つのＡＣＥを含むことを要求されてよい。上のコード例では、ＡＣＬは、与えられたオブジェクトのすべての子オブジェクトに自動的に伝搬される。上の例では、ユーザが親オブジェクトで許可設定権を有する場合、子オブジェクトのＡＣＬが設定されることができるので、各子オブジェクトについてのＡＣＬの編集の実行は、自動的に権限付与される。
【００８８】
いくつかのケースでは、ユーザは、メタデータオブジェクトに関連付けられたセキュリティ情報を編集したいと思うことがある。開発者などのユーザは、親オブジェクトのＡＣＬを編集することを要求７２４することができる。メソッドの実行（例えば、オブジェクトの変更）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定７２６することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ＡＣＬが変更７２８されることができる。
【００８９】
例えば、ユーザは、以下のようなコードを入力することができる。
【００９０】
【表４】
2008547118.tif 000006
【００９１】
ＡＣＬオブジェクトモデル（「ＯＭ」）は、Ｗｉｎｄｏｗｓ（登録商標）ＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｉｃｅｓ（商標）（ＷＳＳ）またはその他の任意の適切なウェブインフラストラクチャとすることができる。ＯＭは、基本認証、持続性、インフラストラクチャおよび／またはその他のセキュリティサービスを、企業システム構成要素に提供することができる。上の例に示されるように、ＯＭは、ＡＣＬおよび／またはＡＣＥによって参照および実施され得る、権利などのデフォルト値を提供することができる。ＡＣＬの設定に応答して、セキュリティ変更は、企業システムのＯＭのコンテキスト内で、実質的に直ちに変更されることができる。しかし、メタデータオブジェクトはランタイムＯＭによってキャッシュされ得るので、変更ＡＣＬがランタイムＯＭによってすべての構成要素上で観察される前に、タイムラグが存在することがある。
【００９２】
上の例は、オブジェクトのセキュリティパラメータの編集を示しているが、オブジェクトの識別子およびオブジェクトのインスタンスなど、任意のパラメータ、特徴、および設定などが変更されてよい。上で述べられたように、編集は、機能の変更、更新、および削除などを含む。図７に示されるように、ユーザは、オブジェクトを編集することを要求７４２することができる。オブジェクトの編集を求める要求（例えば、メソッドの実行を求める要求）に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定７４４することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、オブジェクトが変更７４６されることができる。
【００９３】
一例では、ユーザは、エンティティの名前を更新し、そのエンティティのための新しいオブジェクト識別子を生成し、その後、エンティティオブジェクトを含むシステムを削除するコードを書きたいとする。
【００９４】
例えば、ユーザは、以下のようなコードを入力することができる。
【００９５】
【表５】
2008547118.tif 000007
【００９６】
上の例に示されるように、２以上のアクセスチェックが、図１のデータ格納サービスシステム１６０によって実行されてよい。上の例では、要求に応答して、子オブジェクトの生成と、システムオブジェクトの削除と、オブジェクトのＡＣＬの更新の、３つのアクセスチェックが実行されることができる。しかし、１つまたは複数のアクセスチェックが同時に実行されてよいことを理解されたい。例えば、上の例では、実行メソッドの各々は、メタデータオブジェクトに対する編集権（例えば、生成、削除、更新）を必要としてよく、したがって、その権利についての単一のアクセスデータチェックと共に、３つのアクセスチェックが実行されてよいが、編集権は、識別子ユーザ、編集される３つの異なるオブジェクト（例えば、子オブジェクト、エンティティオブジェクト、およびシステムオブジェクト）について異なってもよく、したがって、オブジェクト毎に別個のアクセスチェックを必要としてもよい。
【００９７】
ユーザは、図１のメタデータストア１８０に保存したいくつかのメタデータを変更したいことがある。例えば、ユーザは、図２のメタデータストアに示されるような、システムオブジェクトに関連付けられた接続情報２０４などの、接続文字列を変更したいことがある。いくつかのケースでは、図１のサービスシステム１９０は、オブジェクトメタデータの編集を容易にするオブジェクト編集ページを提供することができる。アプリケーションオブジェクト編集ページ例１２００が図１２に示されている。アプリケーション編集ページがユーザに提示されたとき、識別ユーザが適切な編集権を有することを確認するために、アプリケーションオブジェクトに関連付けられたＡＣＬに対するアクセスチェックが実行されてよい。アクセスチェックが失敗した場合、ユーザは、オブジェクトページ１２００などのオブジェクトページへのアクセスを拒否されてよく、または代替として、オブジェクトページは表示されてよいが、ページ内のフィールドの編集機能はオフにされ、例えば、ページの読み取り専用表示とされることができる。
【００９８】
上で述べられたように、オブジェクトは、誰がどの許可を有するかを管理する関連ＡＣＬを有することができる。いくつかのケースでは、オブジェクトは、親オブジェクトと同じデフォルトＡＣＬを有して生成されてよい。階層の最上部にあるシステムオブジェクトの場合、デフォルトは、オブジェクトの作成者に管理権を生成することができる。しかし、オブジェクトの編集権、（アプリケーションの起動を引き起こし得る）オブジェクトの実行権、および非対称権など、追加または何らかのサブセットの権利が存在してもよい。非対称権の一例は、オブジェクトの管理権に含まれ得る、オブジェクトの権利を変更する権利である。オブジェクトの権利を変更する権利を、別のユーザに代行してもよい。具体的には、オブジェクトの権利を変更する権利を有する人は、別のユーザがオブジェクトの権利を変更する権利を追加的または代替的に有するような割り当てを行うことができる。
【００９９】
いくつかのケースでは、ユーザは、そのオブジェクトおよびすべての下位にある（子）オブジェクトの管理権を別のユーザに代行させたいことがある。開発者などのユーザは、オブジェクトおよびその子の管理権を代行することを要求７３０することができる。メソッドの実行（例えば、オブジェクトの設定および伝搬）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定７３２することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッド８００と類似したメソッドを使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ＡＣＥが追加され、ＡＣＬが変更７３４され、その後、親の適切な子へと下方に伝搬されることができる。
【０１００】
例えば、ユーザは、以下のようなコードを入力することができる。
【０１０１】
【表６】
2008547118.tif 000008
【０１０２】
オブジェクトのためのＡＣＬの新しいＡＣＥの結果として、「ｎｅｗＡｄｍｉｎＤｕｄｅ」によって識別されるユーザは、オブジェクト上で許可を設定する権利を有する。このようにして、「ｎｅｗＡｄｍｉｎＤｕｄｅ」は、そのオブジェクトおよび任意の下位オブジェクトにおいて許可を設定する旧いａｄｍｉｎの権利を削除することができる。しかし、旧いａｄｍｉｎが親オブジェクトにおいて「許可設定」権を保持する場合、旧いａｄｍｉｎは、その親オブジェクトの子オブジェクトの代表管理のみを有すると考えられてよい。このようにして、旧いａｄｍｉｎは、現在「ｎｅｗＡｄｍｉｎＤｕｄｅ」に代表されている各オブジェクトの親において許可設定権を有するので、「ｎｅｗＡｄｍｉｎＤｕｄｅ」に与えられた任意の権利を取り戻すことができる。
【０１０３】
いくつかのケースでは、（例えば、メタデータストア内のすべてのオブジェクト上で許可設定権を有する）メタデータストアの管理者は、別のユーザが、特定のタイプのオブジェクトにおける管理権を有することを可能にしたいことがある。例えば、管理者は、別のユーザが、任意のエンティティオブジェクトにおける管理権を有するようにしたいが、そのエンティティが属するＳｙｓｔｅｍＩｎｓｔａｎｃｅオブジェクトは除外したいことがある。したがって、管理者は、ＭｅｔｈｏｄＩｎｓｔａｎｃｅ実行特権は変更するが、例えば、システムインスタンス上の接続文字列は変更しないことができる。開発者などのユーザは、親およびその子の管理を部分的に代行することを要求７３６することができる。メソッドの実行（例えば、オブジェクトの設定および伝搬）を求める要求に応答して、図１のサービスシステムモジュール１９０は、要求ユーザが要求されたメソッドへのアクセス権を有するかどうかを決定７３８することができる。例えば、図１のサービスシステムモジュール１９０は、図８を参照して以下でさらに説明されるメソッドと類似したメソッド８００を使用することができる。ユーザがメソッドを実行する権限を付与されない場合、適切な動作をとることができる７０８。ユーザがメソッドを実行する権限を付与される場合、任意の適切な方式で、ＡＣＥが追加され、ＡＣＬが変更７４０され、その後、親の適切な子へと下方に伝搬されることができる。例えば、ユーザは、以下のようなコードを入力することができる。
【０１０４】
【表７】
2008547118.tif 000009
【０１０５】
上に示されるように、親から子へのＡＣＬの自動継承が回避され、かつ／または望まれることができる場合が存在してよい。したがって、自動継承は、いくつかのケースでのみ生じることができ、その他のケースは、ＡＣＬを子オブジェクトへと下方に伝搬させるために、コピーまたは明示的な伝搬を必要とすることができる。
【０１０６】
図８は、オブジェクトへのアクセスをチェックする方法例８００を示している。上で述べられたように、セキュリティは、保護可能オブジェクト上の主要メソッドにおいて様々な権利のためのアクセスチェックコールを差し挟むことによって、表面化されることができる。オブジェクトへのアクセスをチェックするため、要求が受け取られることができる８０２。要求または通信のその他の態様は、要求ユーザのユーザ識別子を決定８０４するために解析されることができる。要求は、権限付与および／または認証で使用されるユーザ識別子を提供することによって、別のユーザの代理によることもできることを理解されたい。要求ユーザは、任意の適切な方式で、認証８０６されることができ、すなわち、ユーザの識別情報が確認されることができる。いくつかのケースでは、ポータル１７０および／またはデータ格納サービスシステムは、要求が作成される前に、ユーザを認証してもよい。したがって、どの説明されたステップおよび／または動作も、アプリケーションおよび環境に適した任意の適切な順序で実行されてよい。
【０１０７】
アクセスされる所望のサービスは、図１のユーザ要求１６２などのユーザ要求から決定されることができる８０８。企業システムの任意の適切な部分が、図１のサービスシステムモジュール１９０またはデータ格納サービスシステム１６０の認証モジュール（図示されず）など、アクセスされる所望のサービスを決定することができる。所望のサービスにアクセスするのに必要とされる権利は、任意の適切な方式で決定されてよい８１０。例えば、メタデータストアは、メソッドまたはサービスと必要とされる権利のマッピングなど、権利のデータベースを維持することができ、または上で述べられたように、所望のサービスにアクセスするのに必要とされる権利は、サービス自体の中で関連付けられることができ、例えば、メソッドオブジェクトを実装するときに、メソッドオブジェクトは、サービスに必要とされる権利を提供することができる。
【０１０８】
アクセスされるオブジェクトは、要求から決定されることができる８１２。例えば、サービス要求は、オブジェクトを編集すること、オブジェクトを見ること、およびオブジェクトを実行することなどとすることができる。所望のオブジェクトは、オブジェクト名、オブジェクトタイプ、およびオブジェクト識別子など、任意の適切な方式で示されることができる。所望オブジェクトのＡＣＬが、取り出されることができ８１４、ＡＣＬの関連ＡＣＥが、取り出されることができる８１６。上で述べられたように、一例では、ＡＣＬは、オブジェクトが個別保護可能オブジェクトとして分類される場合、オブジェクト自体から取り出されることができ、またはオブジェクトがアクセス保護可能なオブジェクトとして分類される場合、直近の個別保護可能オブジェクトなど、別のオブジェクトから取り出されることができる。ＡＣＬが別のオブジェクトから取り出される場合、直近の個別保護可能オブジェクトを決定することを含む、任意の適切な方法が、ＡＣＬを取り出すために使用されてよい。
【０１０９】
ユーザ識別子が、権限付与ユーザとして提供されているかどうか、例えば、ＡＣＥ内のユーザ識別子リストに含まれているかどうかを決定するために、ＡＣＥが検査されることができる８１８。含まれていない場合、適切な動作をとることができる８２０。要求されたサービスへのユーザアクセスを拒否すること、アクセスが拒否された旨のメッセージをユーザに送信すること、拒否されたアクセスについて管理ユーザに通知すること、および図１のストレージ１３８に保存され得るログデータストアに拒否されたアクセスを記録することなどを含む、任意の数および組合せの適当で適切な動作をとることができる。
【０１１０】
ユーザがＡＣＥに載せられている場合、ユーザ識別子に関連付けられた権利は、上の動作８１０で決定された必要とされる権利と比較される８２２。必要とされる権利がユーザ識別子と関連付けられていない場合、適切な動作をとることができる８２０。上で述べられた適切な動作のいずれかがとられてよい。さらに、ユーザがオブジェクトにおけるいくつかの権利を有するが、所望のアクセスのために必要とされる権利を有さない場合、データ格納サービスシステムは、要求されたサービスの代わりに、ユーザが関連する権利を有する適切な権限付与されたサービスを自動的に選択することができる。例えば、ユーザが、オブジェクトの編集を要求したが、編集権を有さないことがある。それに応答して、データ格納サービスシステムは、要求ユーザのユーザ識別子がオブジェクトを見るための関連する権利を有するかどうか、ＡＣＥをチェックすることができる。その後、関連する権利は、以下でさらに説明される要求１６４など、アプリケーションに対する生成サービス要求の一部となることができる。
【０１１１】
権利または関連する権利がＡＣＥ内で示される場合、その他のアクセス制限が確認されることができる８２４。例えば、サービスへの安全なアクセスは、上で提供されたユーザ識別子に加えてまたは代えて、任意のコンテキストに基づくことができる。例えば、アクセスは、アプリケーション内の機能、ウェブサイト内のロケーション、アクセスの日中時間および／または日付、ならびに企業システムへのユーザ接続に対する接続制限などの確認に基づくことができる。その他の制限が確認されない場合、適切な動作をとることができる８２０。
【０１１２】
ユーザが権限付与された場合、データ格納サービスシステムは、適切なアプリケーションの指示されたサービスに対する要求を生成することができる８２６。要求は、任意の適切な方式で生成されてよい。図１の要求１６２などのユーザからの要求は、図１のアプリケーション１５０に送信するために、繰り返されることができ、または適切に変更（例えば、フォーマット化および拡張など）されることができる。別の例では、データ格納サービスシステムは、サービスのオブジェクトおよび／またはサービスオブジェクトの親オブジェクトに基づいて、図１のメタデータストア１８０から、所望サービスに関する適切な要求情報を取り出すことができる。例えば、図２を参照すると、データ格納サービスシステムは、要求されたサービスを提供するための、アプリケーション１５０に適した複雑な要求１６４を生成するために、エンティティ識別子２２４、パラメータリスト２２６、またはその他の任意の適切な情報を使用することができる。
【０１１３】
アプリケーションは、データ格納サービスシステムを認証し、かつ権限付与することを望んでよい。上で述べられたように、認証および／または権限付与は、要求の前に、または要求を実行する一部として行われてよい。図８に示されるように、データ格納サービスシステムは、アプリケーションに適切なアカウント、接続、識別情報、および証明書などを提供することができ、そのいずれもが、図１のメタデータストア１８０から取り出されることができる。例えば、データ格納サービスシステムは、オブジェクト識別子ならびにメタデータストア内のそのオブジェクトおよび親オブジェクトのいずれかに関連付けられた情報に基づいてメタデータストア１８０から取り出されることができる、データ格納サービスシステムに固有の認証および／または権限付与情報を有するユーザアカウントまたはサービスアカウントを介して、アプリケーションにアクセスすることができる。データ格納サービスシステムは、証明書を有さないサーバプロセスアカウント、およびデータ格納サービスシステムがシングルサインオン（ＳＳＯ：ｓｉｎｇｌｅ  ｓｉｇｎ−ｏｎ）個別アカウントの独自の証明書を用いてＷＩＮＤＯＷＳ（登録商標）ユーザを装うことができ、ＷＩＮＤＯＷＳ（登録商標）認証を実行する、シングルサインオンからのＷＩＮＤＯＷＳ（登録商標）証明書などを有するサーバプロセスアカウントを含む、１つまたは複数のセキュリティシステムにサインオンし、権限付与されることを可能にしてもよい。
【０１１４】
ユーザ権限付与を集中化することによって、企業システムの管理は、データ格納サービスシステムがアカウントおよびユーザ証明書などを維持する、図１のアプリケーション１５０の各々と共に、１つまたは複数のユーザアカウントのみを維持することによって簡略化されることができる。上で述べられたように、接続および／またはセキュリティ情報は、要求ユーザの接続および／またはセキュリティ情報とは異なってよい。データ格納サービスは、上で説明されたように、認証、接続、権限付与情報をメタデータストア１８０内に維持し、そこから取り出すことができる。さらに、データ格納サービスシステムが同じアプリケーションからのサービスを求める１つまたは複数の要求を処理している場合、それらの要求は、唯一のアカウントおよび接続などを必要とすることができる同じユーザスレッドを介して、一緒に合わされてよい。
【０１１５】
アプリケーションは、データ格納サービス情報から提供された情報に基づいて、任意の適切な方式で、認証し、権限付与を確認するなどすることができる８３０。データ格納サービスシステムが、要求されたサービスにアクセスする権限を付与されていることを保証するため、データ格納サービスシステムに関連付けられた権利は、オブジェクトＡＣＬ内の識別ユーザに許可された権利のすべてと同じとすることができ、または権利のすべてと比べてより大きい（例えば、スーパーユーザ）とすることができる。
【０１１６】
データ格納サービスシステムが権限を付与されている場合、サービスはアクセスされることができる８３２。サービスがアクセスされた場合、成功表示が、アプリケーションから受信されてよい８３４。成功表示は、実行メソッドの結果、サービスが正常に実施されたことの表示、およびアプリケーションの機能へのアクセスが提供されることなど、任意の適切な成功表示とすることができる。データ格納サービスシステムは、任意の適切な方式で、要求ユーザに成功表示を提供してよい８３６。
【０１１７】
一例では、ユーザは、自らのコード（例えば、１つまたは複数のアプリケーション１５０）を使用している現在のユーザが、ＭｅｔｈｏｄＩｎｓｔａｎｃｅを実行する権限を付与されているかどうかを確認するコードを書きたいことがある。ユーザは、以下のコードを書くことができる。
【０１１８】
【表８】
2008547118.tif 000010
【０１１９】
上の例は、典型的なエンドユーザのシナリオではないので、多少潤色されているが、バックエンドＡＰＩまたはその他のアプリケーションへのユーザアクセスを許可または拒否するために、データ格納サービスシステムＭｅｔｈｏｄＩｎｓｔａｎｃｅ．Ｅｘｅｃｕｔｅ（）コードに埋め込まれることができるコード例を示している。この例では、ユーザが、与えられた権利（上の例では実行）のためのＡＣＬ内のＡＣＥの１つに載せられているユーザ識別子と同じであるかどうかを、ＷＳＳがチェックしている。しかし、権限付与を確認するために任意の適切な方法またはプロセスが使用されてよいことを理解されたい。
【０１２０】
上記の図７のサービスを求める要求の例、および図８のアクセスに対する権限付与の例は、メタデータストア自体のオブジェクトを使用して上では説明されたが、この方法は、１つまたは複数のアプリケーション１５０にサービスを要求する図１のユーザ１２０など、ユーザについても同様に実施されることができる。例えば、図８を参照すると、要求が受け取られ８０２、メタデータストアに保存されたアプリケーション１５０のオブジェクトを参照して、情報が決定されてよい８０４、８０８、８１０、８１２、８１４。関連するＡＣＬおよびＡＣＥは、要求されたサービスに関連付けられたオブジェクトのために取り出されることができ、権利およびユーザ識別子が確認される。上で述べられたように、メタデータストアに保存された各オブジェクトは、ＡＣＥに関連付けられたＡＣＬに関連付けられる。その後、データ格納サービスシステムは、ユーザからの権限付与された要求に応答して、サービスを求める要求を生成し８２６、サービスを求めてアプリケーション１５０にアクセスするための、それ自体の認証情報を提供する８２８。
【０１２１】
上の例に示されるように、各オブジェクトに関連付けられたＡＣＬおよびＡＣＥは、データ格納サービスシステム内のその他のオブジェクトの生成および保守において使用されてもよい。具体的には、データ格納サービスシステムのいくつかのタイプのオブジェクトは、バックエンドアプリケーションのオブジェクトを生成し、編集し、かつ／または保守するために使用されてよい。例えば、図１４の方法例１４００に示されるように、オブジェクトは、バックエンドアプリケーションの１つまたは複数の部分のために生成されてよい１４０２。上で述べられたように、オブジェクトは、システム、システムインスタンス、エンティティ、メソッド、パラメータ、およびパラメータタイプなどの、１つまたは複数のオブジェクト階層を表すことができる。オブジェクトは、図７の動作７０２〜７０６におけるオブジェクトの生成、および動作７１０〜７１４におけるセキュリティの生成に関して上で説明されたような、任意の適切な方式で生成されてよい。ユーザデバイスは、企業システムのバックエンドアプリケーションにサービスを要求することができる１４０４。ユーザ要求は、複数のバックエンドアプリケーションにわたってユーザ用の共通インターフェースを可能にする、簡単で汎用的な統一化かつ／または共通要求とすることができる。図１の例に示されるように、ユーザ要求は、適切な通信接続を介して企業システム１３０によって受け取られることができ、ポータル１７０を介して処理されてよい。図１４を参照すると、データ格納サービスシステムは、要求によって参照される適切なオブジェクトを決定する１４０６。その後、データ格納サービスシステムは、指示されたオブジェクトのいずれか１つまたはすべてに要求された方式でアクセスする権限をユーザが付与されているかどうかを決定する１４０７。任意の適切な権限付与プロセスが使用されてよいが、１つの適切な例が、図８の方法８００に関して上で説明された。ユーザが権限付与されていない場合、データ格納サービスシステムは、要求の終了、および要求ユーザへのエラーメッセージの送信などのいずれか１つまたは複数を含むことができる、適切な動作をとることができる１４０８。ユーザが権限付与されている場合、データ格納サービスシステムは、企業システムの適切なバックエンドアプリケーションの要求されたサービスとの対話用に特別に適合された要求を生成する１４１０。例えば、オブジェクト内に維持される情報は、メッセージを生成するのに使用され得る、メッセージフォーマット、および必要とされるパラメータなどを含むことができる。その後、データ格納サービスシステムは、ユーザからの要求で識別されたサービスにアクセスするために、適合された要求を使用して、適切なバックエンドアプリケーションと対話することができる１４１２。例えば、データ格納サービスシステムは、適切なサービスにアクセスするために、バックエンドアプリケーションに適合された要求を送ることができる。バックエンドアプリケーションへの接続は、アプリケーションのスーパーユーザアカウントを介するものでよく、それは事前作成されることができる。サービス結果は、バックエンドアプリケーションによってデータ格納サービスシステムに提供されることができ、データ格納サービスシステムは、ユーザからの特定の要求（例えば、データフォーマットおよび言語など）に従って、ユーザの選好（例えば、ユーザが好むデータフォーマットおよび言語など）に従って、また特定のユーザ要求および／または許可などを満たすのに必要とされる情報忠実度をアプリケーションが有さない場合に生じることがあるユーザ許可（例えば、情報は必要に応じて選別、翻訳、または編集されてよい）に従って、結果を適合させることができる。データ格納サービスシステムは、ステータス情報および要求の結果などを伝達するため、ユーザデバイスと対話することができる１４１。
【０１２２】
本発明の好ましい実施形態が例示され、説明されたが、本発明の主旨および範囲から逸脱することなく、様々な変更がそれに施され得ることを理解されたい。例えば、上で述べられたように、企業システムは、バックエンドアプリケーションに存在する実行可能な機能を分離することができ、分離は、異なるレベルの粒度にあってよい。アプリケーションの分離された機能は、メタデータオブジェクトの形式でカタログ内に登録されることができる。実行可能な機能が登録されると、各粒度の機能オブジェクトの権限付与情報が権限付与情報と関連付けられることができる。実行可能な機能の権限付与権の一例は、アプリケーションの情報にアクセスすること、および／またはアプリケーションの情報を変更することができる、実行可能な機能に関連付けられたロジックの部分を「実行」する権利とすることができる。機能の実行についての権限付与に加えて、メタデータストアは、追加的または代替的に、（大規模ポータルアプリケーション内など）実行が行われ得る場所の権限付与を容易にすることができる。実行の権限付与と同様に、実行の場所は、機能（またはオブジェクト）単位に権限付与されることができる。例えば、上記の例は、オブジェクトがシステムおよびエンティティなどとして定義された、１つまたは複数のアプリケーションにアクセスするための、データ格納サービスシステムを使用することを説明しているが、オブジェクトおよびアクセス要求は、任意の適切なメソッド、オブジェクト、およびアプリケーションなどを参照してもよいことを理解されたい。例えば、アプリケーション機能は、Ｗｅｂ  Ｐａｒｔをコールするユーザインターフェースウィジェット（ｗｉｄｇｅｔ）の生成を可能にすることができる。アプリケーションの別の機能は、スコープを有する検索可能／インデックス付け可能な空間の生成を可能にすることができる。メタデータストア内のオブジェクトに関連付けられた権限付与情報は、Ｗｅｂ  Ｐａｒｔ機能内で、システムＡのデータのみが表示されることを可能にすることができる。同様に、メタデータ権限付与情報は、検索機能内で、システムＢの顧客エンティティデータのみがクロール（ｃｒａｗｌ）されることを可能にすることができる。このようにして、メタデータストア内に保存されたオブジェクトは、検索オブジェクト、ウェブページ接続性およびアクセスなどを参照することができる。同様に、ＸＭＬオブジェクトなどのオブジェクトを参照して、安全なデータ格納サービスシステムが上では実施されるが、リストおよびその他のタイプのプログラミング構成が、適当ならば使用されてよいことを理解されたい。
【図面の簡単な説明】
【０１２３】
【図１】データ格納サービスシステムを実施するのに適した企業環境例の概要図である。
【図２】図１の企業環境と共に使用するのに適したメタデータストア例の表である。
【図３】図２のメタデータストアのアクセス制御リスト（ＡＣＬ）例の表である。
【図４】図１の企業環境と矛盾しない保護可能オブジェクト階層の概要図である。
【図５】オブジェクトアクセス制御リストを実施するＡＰＩ例の概要図である。
【図６】図５のアクセス制御リストのアクセス制御エントリを実施するＡＰＩ例の概要図である。
【図７】図１の企業環境のメタデータストアにデータ投入し、それを実施する方法例のフローチャートである。
【図８】アクセスチェックを実施する方法例のフローチャートである。
【図９】オブジェクトの管理ユーザインターフェースの表示例の図である。
【図１０】オブジェクトの許可管理ユーザインターフェースの表示例の図である。
【図１１】ＡＣＬ編集ユーザインターフェースの表示例の図である。
【図１２】オブジェクト編集ユーザインターフェースの表示例の図である。
【図１３】オブジェクトの許可変更ユーザインターフェースの表示例の図である。
【図１４】図１の企業環境のメタデータストアを実行する方法例のフローチャートである。
【図１】
2008547118.tif 000011
【図２】
2008547118.tif 000012
【図３】
2008547118.tif 000013
【図４】
2008547118.tif 000014
【図５】
2008547118.tif 000015
【図６】
2008547118.tif 000016
【図７】
2008547118.tif 000017
【図８】
2008547118.tif 000018
【図９】
2008547118.tif 000019
【図１０】
2008547118.tif 000020
【図１１】
2008547118.tif 000021
【図１２】
2008547118.tif 000022
【図１３】
2008547118.tif 000023
【図１４】
2008547118.tif 000024
【国際調査報告】
2008547118.tif 000025