6.4 iManagerを介したXMLでのエンタイトルメントの記述

エンタイトルメントで何が必要なのかを理解するために、有効化されたエンタイトルメントがある、事前設定済みのドライバのひとつであるActive Directoryのエンタイトルメントおよびポリシーを確認できます。これには、NovellのエンタイトルメントDTD (Document Type Definition)の調査が含まれています。また、DTDに基づいてエンタイトルメントを記述するXMLの例も見てみます。

この節では、次の項目について説明します。

6.4.1 エンタイトルメントが有効になっている場合に、Active Directoryドライバによって何が追加されるか

エンタイトルメントが有効なActive Directoryドライバには、構造に次の変更が含まれています。

  • ドライバフィルタにDirXML-EntitlementRef属性を追加します。DirXML-EntitlementRef属性により、ドライバフィルタはエンタイトルメントアクティビティをリッスンできます。

  • ユーザアカウントのエンタイトルメントを作成します。ユーザアカウントのエンタイトルメントにより、ユーザのActive Directoryのアカウントが付与または取り消されます。アカウントが付与されると、ユーザは有効なログオンアカウントを取得できます。アカウントが取り消されると、ドライバがどのように設定されているのかに応じて、ログオンアカウントは無効になるか、削除されます。

  • グループメンバーシップのエンタイトルメントを作成します。グループのエンタイトルメントにより、Active Directoryのグループのメンバーシップが付与または取り消されます。グループは識別ボールト内のグループと関連付けられている必要があります。メンバーシップが取り消されると、グループからユーザが削除されます。外部ツールによってActive Directory内の制御されているグループにユーザが追加され、ユーザがドライバによって削除されない場合、グループメンバーシップエンタイトルメントは発行者チャネルには適用されません。また、エンタイトルメントが取り消されるのではなく、ユーザオブジェクトから削除された場合、Active Directoryドライバではアクションは実行されません。

  • Exchangeメールボックスエンタイトルメントを作成します。グループのエンタイトルメントにより、Microsoft ExchangeのユーザのExchangeメール\'83\'7bックスが付与または取り消されます。

  • エンタイトルメント情報を多くのポリシーに追加します。

次のポリシーには、エンタイトルメントが適切に機\'94\'5cするように追加的なルールが含まれています。

  • InputTransform (ドライバレベル)。このポリシーの[Check Target Of Add Association For Group Membership Entitlements (グループメンバーシップエンタイトルメントに対するadd-associationの対象を確認する)]ルールでは、グループメンバーシップエンタイトルメントの「add-association」の対象が確認されます。Active Directoryで作成されるユーザに割り当てられたグループメンバーシップのエンタイトルメントは、ユーザが正常に作成されるまでは処理できません。Add-associationは、Active Directoryでドライバによってオブジェクトが作成されたことを示します。オブジェクトもグループエンタイトルメント処理に対してタグ付きである場合、すぐに実行されます。

  • イベント変換(発行者チャネル)。このポリシーの[ユーザアカウントの削除を許可しない]ルールでは、識別ボールトのユーザアカウントの削除は拒否されます。ユーザアカウントのエンタイトルメントを使用する場合、管理対象のユーザアカウントは識別ボールト内のエンタイトルメントで制御されます。Active Directoryで削除しても、識別ボールト内の制御オブジェクトは削除されません。識別\'83\'7bールト内のオブジェクトを今後変更したり、\'83\'7dージ操作を実行すると、Active Directoryでアカウントが再作成される場合があります。

  • コマンド(購読者チャネル)。コ\'83\'7dンドポリシーには、エンタイトルメントに関する次のルールが含まれています。

    • ユーザアカウントのエンタイトルメント変更(削除オプション)ルール。ユーザアカウントのエンタイトルメントによって、Active Directoryの有効なアカウントがユーザに付与されます。エンタイトルメントを取り消すと、[アカウントのエンタイトルメントが取り消された場合]グローバル変数で選択した値に応じて、Active Directoryアカウントが無効になるか、削除されます。エンタイトルメントが変更され、[Delete]オプションを選択した場合、このルールが実行されます。

    • ユーザアカウントエンタイトルメントの変更(無効オプション)ルール。ユーザアカウントのエンタイトルメントによって、Active Directoryの有効なアカウントがユーザに付与されます。エンタイトルメントを取り消すと、[アカウントのエンタイトルメントが取り消された場合]グローバル変数で選択した値に応じて、Active Directoryアカウントが無効になるか、削除されます。エンタイトルメントが変更され、[Disable]オプションを選択した場合、このルールが実行されます。

    • [Check User Modify for Group Membership Being Granted or Revoked]ルール。

    • [Check User Modify for Exchange Mailbox Being Granted or Revoked]ルール。

  • 一致(購読者チャネル)。これはアカウントのエンタイトルメントです。このポリシーの既存のアカウントルールとは一致しません。Identity Managerユーザアプリケーションまたは役割ベースエンタイトルメントでユーザアカウントのエンタイトルメントを使用する場合、エンタイトルメントを付与または取り消すことにより、アカウントが作成または削除されます(または無効になります)。ユーザがActive Directoryのアカウントに対する権利を与えられていない場合、デフォルトポリシーはActive Directoryの既存のアカウントとは一致しません。るActive Directoryの一致していアカウントにエンタイトルメントポリシーを適用する場合は、このルールを変更または削除します。これにより、Active Directoryアカウントが削除されるか、または無効になります。

  • 作成(購読者チャネル)。Create Policy (作成ポリシー)には、エンタイトルメントに関する次のルールが含まれています。

    • アカウントエンタイトルメント: エンタイトルメントが付与されない場合にアカウント作成をブロックします。Identity Managerユーザアプリケーションまたは役割ベースエンタイトルメントでユーザアカウントのエンタイトルメントを使用する場合、アカウントのエンタイトルメントを明確に付与されたユーザに対してのみアカウントが作成されます。エンタイトルメントが付与されない場合、このルールによりユーザアカウント作成が拒否されます。

    • 無効なログインが存在しない場合、識別\'83\'7bールトのアカウントが有効になります。

    • 追加後にグループエンタイトルメントのチェックの準備をします。追加されたオブジェクトはグループに追加するために終了する必要があるので、グループエンタイトルメントは追加処理が完了した後で処理されます。追加処理が完了したときに入力変換で確認された運用プロパティとともに、追加がフラグ\'95\'5c示されます。

    • 追加後にエンタイトルメントの交換を確認する必要があることを示します。

    • ユーザ名をWindowsログオン名にマップします。eDirectoryユーザ名の後にuserPrincipalNameが設定されている場合、eDirectoryオブジェクト名とActive Directoryドメインの名前にuserPrincipalNameを設定します。

iManagerで次のステップを実行すると、各ポリシーの実際のXMLコードを\'95\'5c示できます。

  1. Identity Manager]>[Identity Manager Overview]の順に選択します。

  2. ドライバがある場所でドライバセットを参照し、[検索]をクリックします。

  3. [Identity Managerの概要]ページで、ドライバオブジェクトをクリックします。

    ドライバを選択する
  4. [ドライバの概要]ページで、[詳細]をクリックし、[エンタイトルメント]をクリックします。

    [エンタイトルメント]タブを選択する
  5. エンタイトルメント名をクリックして、ポリシーをXMLで表示します。

    エンタイトルメントをXMLで表示する

    ポリシーの作成および編集の詳細については、「Identity Manager 3.5.1のポリシーの理解」を参照してください。また、そのドライバ固有のポリシーを作成するには、選択した『Identity Managerドライバガイド』を参照してください。

有効化されたエンタイトルメントを持つActive Directoryドライバには、3つのエンタイトルメント(ユーザアカウント、グループ、およびExchangeメール)が付属しています。

図 6-1 Active Driverドライバに付属しているエンタイトルメント

の記述サンプルの一部として、これらのエンタイトルメントのXMLコードを\'95\'5c示できます。セクション 6.4.6, 独自のエンタイトルメントを作成するためのエンタイトルメントの例

6.4.2 Novellのエンタイトルメントのドキュメントタイプ定義(DTD)の使用

一部のエンタイトルメントは、エンタイトルメントが有効になっているドライバで事前定義されています。これらのエンタイトルメントを使用するか、iManagerまたはDesignerで独自のエンタイトルメントを作成できます。独自のエンタイトルメントを作成するには、エンタイトルメントを作成する例として、次のNovellエンタイトルメントDTDを使用します。

このDTDの説明では、iManagerを介してこのXML形式でエンタイトルメントを記述する方法の4つの例を示します。XML形式について詳しくない場合は、より簡単にエンタイトルメントを作成できるDesignerのEntitlement Wizardを使用してください。

NovellのエンタイトルメントDTD

<!-*****************************************************************->
<!-- DirXML Entitlements DTD 
<!-- Novell Inc.
<!-- 1800 South Novell Place
<!-- Provo, UT 84606-6194
<!-- Version=1.0.0
<!-- Copyright 2005 Novell, Inc. All rights reserved -->
<!--************************************************************* -->
<!--
	Entitlement definition stored in the XmlData attribute of a
      DirXML-Entitlement object.
-->
<!ELEMENT entitlement (values?)>
<!ATTLIST entitlement
	conflict-resolution (priority | union) "priority"
	display-name CDATA #REQUIRED
	description CDATA #REQUIRED
>
<!ELEMENT values (query-app | value+)?>
<!ATTLIST values
	multi-valued (true | false) "true"
>
<!ELEMENT value (#PCDATA)>
<!ELEMENT query-app (query-xml, result-set)>
<!ELEMENT query-xml ANY>
<!ELEMENT result-set (display-name, description, ent-value)>
<!ELEMENT display-name(token-attr | token-src-dn | token-association)>
<!ELEMENT ent-value (token-association | token-src-dn | token-attr)>
<!ELEMENT description (token-association | token-src-dn | token-attr)>
<!ELEMENT token-association EMPTY>
<!ELEMENT token-attr EMPTY>
<!ATTLIST token-attr
	attr-name CDATA #REQUIRED
>
<!ELEMENT token-src-dn EMPTY>
<!--
	Entitlement reference stored in the DirXML-EntitlementRef attribute 	of a DirXML-EntitlementRecipient or a DirXML-SharedProfile object.
-->
<!ELEMENT ref (src?, id?, param?)>
<!ELEMENT param (#PCDATA)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT src (#PCDATA)>
<!--
    Entitlement result stored in the DirXML-EntitlementResult attribute of a DirXML-EntitlementRecipient object.
-->
<!ELEMENT result(dn, src, id?, param?, state, status, msg?,timestamp)>
<!ELEMENT dn (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT status (#PCDATA)>
<!ELEMENT msg ANY>
<!ELEMENT timestamp (#PCDATA)>
<!--
   Cached query results stored in the DirXML-SPCachedQuery attribute of a DirXML-Entitlement object.
-->
<!ELEMENT items (item*)>
<!ELEMENT item (item-display-name?, item-description?, item-value)>
<!ELEMENT item-display-name (#PCDATA)>
<!ELEMENT item-description (#PCDATA)>
<!ELEMENT item-value (#PCDATA)>
<!--
   Representation of a DirXML-EntitlementRef within the DirXML Script and within the operation-data of an operation in an XDS document.
-->
<!ELEMENT entitlement-impl (#PCDATA)>
<!ATTLIST entitlement-impl
	name CDATA #REQUIRED
	src CDATA #REQUIRED
	id CDATA #IMPLIED
	state (0 | 1) #REQUIRED
	src-dn CDATA #REQUIRED
	src-entry-id CDATA #IMPLIED
>

6.4.3 エンタイトルメントDTDの説明

エンタイトルメントDTDは、定義、参照、結果、キャッシュされたクエリ、および内部の参照情報の5つの部分に分けられます。ヘッダは単なるコメントであり、必須ではありません。DTDでは、エンタイトルメント定義のヘッダは次のようになります。

<!-- DirXML-EntitlementオブジェクトのXmlData属性に格納されているエレメント定義 -->

ヘッダの次に要素(ELEMENT)および属性リスト(ATTLIST)が続きます。以下は、エンタイトルメント定義ヘッダの下にある要素および属性の詳しい説明です。これは、エンタイトルメントを作成するときに重点を置く必要があるメインヘッダです。

<!ELEMENT entitlement (values?)>

ルートレベルの要素は、<entitlement>です。これには、単一、オプション、子の<values>要素を含めることができます。この後には属性リストが続きます。属性リストには、conflict-resolution、display-name、およびdescriptionが含まれています。衝突解決では、Priority属性またはUnion属性の値を使用します。

conflict-resolution (priority | union) "priority"

役割ベースエンタイトルメントでは、衝突の解決を使用して、値のあるエンタイトルメントが同じオブジェクトに複数回適用された場合に行うアクションを決定します。たとえば、ユーザUがエンタイトルメントポリシーAおよびエンタイトルメントポリシーBのメンバーであるとします。それぞれが同じ値のあるエンタイトルメントEを参照していますが、異なる値を持っています。エンタイトルメントポリシーAのエンタイトルメントEには、値(a、b、c)が設定されています。Entitlement Policy (エンタイトルメントポリシー) BのエンタイトルメントEは、一連の値を持っています(c、d、e)。

衝突の解決の属性により、どの値がユーザUに適用されるかが決まります。unionに設定されている場合、ユーザUには両方の値のセット(a、b、c、d、e)が割り当てられます。priorityに設定されている場合、どのEntitlement Policy (エンタイトルメントポリシー)がより高い優先度を持っているのかに応じて、ユーザUは1つの値のみを取得します。

エンタイトルメントが単一の値である場合、優先度によって衝突を解決する必要があります。値を結合すると複数の値が適用されるからです。現在では、Role-Based Entitlement (役割ベースのエンタイトルメント)がこの属性を使用していますが、今後はワークフローのエンタイトルメントも使用する場合があります。

display-name CDATA #REQUIRED description CDATA #REQUIRED

リテラルのエンタイトルメント名は、エンタイトルメントで表示される文字である必要はありません。Display-nameおよびDescriptionの属性は、エンドユーザの表示用のものです。(Designerでは、実際のエンタイトルメント名を使用する代わりに、エンタイトルメントの\'95\'5c示名を選択するオプションがあります。)

<!ELEMENT values (query-app | value+)?> <!ATTLIST values multi-valued (true | false) "true"

<values>要素は必須ではありません。これは、エンタイトルメントに値があることを示します。この要素を使用しない場合、エンタイトルメントには値がないことを意味します。値のあるエンタイトルメントの例としては、配布リストを付与するエンタイトルメントがあります。値のないエンタイトルメントの例としては、Active Directoryドライバに付属しているユーザアカウントのエンタイトルメントなど、アプリケーションでアカウントを付与するエンタイトルメントがあります。

値のあるエンタイトルメントは、値を3つのソ-スから受け取ります。1つのソ-スは、(<query-app>要素によって設計された)外部アプリケーションです。もう1つは、値が列挙されている事前定義されたリストからです(1つ以上の<value>要素)。3番目のソ-スは、エンタイトルメントのクライアントからです(<value>子を持たない<values>要素)。例を使用して、値が機\'94\'5cする様子を説明します。

値のあるエンタイトルメントはsingle-valuedまたはmulti-valuedの場合があり、デフォルトはmulti-valuedです。この制限を適用するのは、エンタイトルメントのクライアントの作業です。

<!ELEMENT value (#PCDATA)>

エンタイトルメント値は、入力されない文字列です。

<!ELEMENT query-app (query-xml, result-set)>

値が(電子メール配布リストなどの)外部アプリケーションから生成された場合、<query-xml>要素を介してアプリケーションクエリを指定する必要があります。<result-set>要素を介してクエリから結果を抽出します。では、この2つの例を示しています。例2: アプリケーションクエリエンタイトルメント: 外部クエリ

<!ELEMENT query-xml ANY>

XMLクエリはXDS形式です。<query-xml>コマンドは、接続されたアプリケーションからオブジェクトを検索したり読み取るために使用されます。DirXMLルール、オブジェクトの移行などの機能は、ドライバのクエリコマンドの実装内容に依存します。XMLクエリの詳細については、Novellのクエリに関する開発者用ドキュメントを参照してください。

<!ELEMENT result-set (display-name, description, ent-value)> <!ELEMENT display-name(token-attr | token-src-dn | token-association)> <!ELEMENT ent-value (token-association | token-src-dn | token-attr)> <!ELEMENT description (token-association | token-src-dn | token-attr)> <!ELEMENT token-association EMPTY> <!ELEMENT token-attr EMPTY> <!ATTLIST token-attr attr-name CDATA #REQUIRED

外部アプリケーションクエリの結果を解釈するには、結果セットの要素を使用します。対象となるデータは、値の表示名(display-name子要素)、値の説明(description子要素)、および文字列のエンタイトルメント値(ent-value子要素。これは表示されません)の3つです。

token要素の<token-src-dn><token-association><token-attr>は、実際は、src-dn属性値、関連付けの値、または任意の属性値を、XDS形式のXMLドキュメントからそれぞれ抽出する、XPATH式のプレースホルダです。DTDでは、クエリ結果がXDSであることが想定されています。

DTDの他のヘッダ

エンタイトルメントDTDの残りのエンタイトルメントのヘッダは異なる機\'94\'5cを持っていますが、エンタイトルメントを作成するときに注目する必要がある項目ではありません。

<!-- DirXML-EntitlementRecipientまたはDirXML-SharedProfileオブジェクトのDirXML-EntitlementRef属性に格納されているエンタイトルメント参照。 -->

DTDのエンタイトルメント参照の部分に保存された情報は、エンタイトルメントオブジェクトを指します。この情報は、(役割ベースエンタイトルメントドライバ、Entitlement.xml、または認証フロードライバ、UserApplication.xmlなどの)管理エージェントによって配置されます。これは、接続システムで発生するアクションのトリガイベントです。このヘッダのDTDでは何もする必要はありませんが、エンタイトルメントオブジェクトが参照されることを確認するためにこの情報を使用できます。

<!-- DirXML-EntitlementRecipientオブジェクトのDirXML-EntitlementResult属性に格納されているエンタイトルメントの結果。 -->

エンタイトルメントの結果部分は、エンタイトルメントが付与されたかまたは取り消されたかに関する結果をレポートします。情報には、イベントの状態またはステータス、およびいつイベントが付与または取り消されたのか(タイムスタンプで表示)が含まれています。このヘッダの要素および属性では、何もする必要はありません。

<!-- DirXML-EntitlementオブジェクトのDirXML-SPCachedQuery属性に格納されているキャッシュされたクエリの結果。 -->

エンタイトルメントのクエリ部分には、外部アプリケーションから収集されたエンタイトルメント値が含まれています。エンタイトルメントのクライアントでこの情報を表示する必要がある場合、この情報は再度使用できます。これらの値は、エンタイトルメントオブジェクトのDirXML-SPCachedQuery属性に保存されています。このヘッダの要素および属性では、何もする必要はありません。

<!-- DirXMLスクリプト内、およびXDSドキュメントの操作のoperation-data内のDirXML-EntitlementRef表現。 -->

DTDでは複数のドキュメントの値が定義されるため、このEntitlementRef部分は、実際にはエンタイトルメント定義の一部ではありません。このヘッダの要素および属性では、何もする必要はありません。

6.4.4 Designerを介したエンタイトルメントの作成

セクション 6.4.5, iManagerでのエンタイトルメントの作成および編集の例ではエンタイトルメントを記述するための実際のXMLコードを示していますが、Identity Managerに付属しているDesignerユーティリティを使用すると、エンタイトルメントをより簡単に記述できます。DesignerモデラでIdentity Managerドライバを識別ボールトに追加した後、アウトラインビューでドライバを右クリックし、[エンタイトルメントの追加]を選択します。Entitlement Wizardでエンタイトルメントのタイプを指定するように\'95\'5c示され、ウィザードによりステップごとに作成できます。

エンタイトルメントウィザードの使用の詳細については、『Designer for Identity Manager: Administration Guide』を参照してください。

6.4.5 iManagerでのエンタイトルメントの作成および編集

エンタイトルメントの作成にはDesignerのEntitlement Wizardを使用することをお勧めしますが、iManagerを介してエンタイトルメントを作成できます。

  1. Identity Manager]>[Identity Manager Overview]の順に選択します。

  2. ドライバがある場所でドライバセットを参照し、[検索]をクリックします。

  3. [Identity Managerの概要]ページで、ドライバオブジェクトをクリックします。

    ドライバを選択する
  4. [ドライバの概要]ページで、[詳細]をクリックし、[エンタイトルメント]をクリックします。

    [エンタイトルメント]タブ
  5. 挿入]をクリックして、エンタイトルメントを作成します。

  6. エンタイトルメントの名前を指定します。

    メモ:エンタイトルメントの名前は変更しないでください。エンタイトルメント名を後で変更する場合、そのエンタイトルメントを実装しているポリシー内のすべての参照も変更する必要があります。エンタイトルメント名は、ポリシー内のRef属性およびResult属性に保存されます。

    ドライバオブジェクトが選択されているため、エンタイトルメントのコンテキストはすでに取り込まれています。

    エンタイトルメントを作成する
  7. 作成後に詳細を設定]がオンになっていることを確認し、[OK]をクリックします。

  8. XML編集の有効化]をオンにして、エンタイトルメントを作成します。

    XMLでエンタイトルメントを作成する
  9. エンタイトルメントの作成に関する情報メッセージを読み、[閉じる]をクリックします。

    エンタイトルメントの作成メッセージ

6.4.6 独自のエンタイトルメントを作成するためのエンタイトルメントの例

値なしと値ありの2種類のエンタイトルメントを作成できます。値のあるエンタイトルメントは、外部クエリ、管理者が定義したリストから、または自由形式で値を取得できます。作成できる4つのタイプのエンタイトルメントの例を以下に示します。

メモ:右向きの不等号(<)の付いていない行がある場合、行はラップされており、情報が2行(または3行)ではなく、通常は1行に表示されていることを意味します。これらは、アカウントのエンタイトルメント以外は、それぞれのタイプの値のあるエンタイトルメント用に作成できる単なる例です。

例1: アカウントのエンタイトルメント: 値なし

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="priority"
    description="This is an Account Entitlement"
    display-name="Account Entitlement"/>

この例では、値のないエンタイトルメントの名前は「Account」です。この後ろには、デフォルト設定の優先度を持つconflict-resolution行があります。これはたいていの場合、エンタイトルメントが役割ベースエンタイトルメントに使用されている場合、優先度を持つRBEによって値が設定されることを意味します。(しかし、これは値のないエンタイトルメントの例であるため、値のある設定には適用されません)。エンタイトルメントの説明は「This is an Account Entitlement」であり、表示名は「Account Entitlement」です。これが、アカウントのエンタイトルメントを作成するために必要なすべての情報です。これは、アプリケーションでアカウントを付与するために使用できます。

有効化されたエンタイトルメントを持つActive Directoryドライバには、ユーザアカウントの付与または取り消しのためにActive Directoryによって使用されるUserAccountエンタイトルメントがあります。

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
	description="The User Account entitlement grants or denies an
	account in Active	Directory for the user. When granted, the user
	is given an enabled logon account.	When revoked, the logon
	account is either disabled or deleted depending on how the drive
	is configured."	display-name="User Account Entitlement" name="UserAccount">
</entitlement>

この例では、衝突の解決はUnionです。これにより、エンタイトルメントで割り当てられた値をマージできます。(繰り返しますが、値のある設定は値のないエンタイトルメントには適用されません)。[Description]フィールドでは、このエンタイトルメントの使用目的、および作成理由を説明します。これは、エンタイトルメントを今後変更するユーザにとっては役立つ情報です。管理エージェントには、ユーザアカウントのエンタイトルメントとして<display-name>が\'95\'5c示されますが、エンタイトルメントの実際の名前はUserAccountです。

例2: アプリケーションクエリエンタイトルメント: 外部クエリ

有効なエンタイトルメントが設定されているActive Directoryドライバが付属しているGroupおよびExchangeメールボックスのエンタイトルメントでは、アプリケーションクエリの例が提供されています。イベントを実行するために接続システムからの外部情報が必要な場合、このエンタイトルメントのタイプを使用します。

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
   description="The Group Entitlement grants or denies membership in
   a group in Active Directory. The group must be associated with a
   group in the Identity Vault. When revoked, the user is removed from
   the group. The group membership entitlement is not enforced on the
   publisher channel: If a user is added to a controlled group in
   Active Directory by some external tool, the user is not removed by
   the driver. Further, if the entitlement is removed from the user
   object instead of being simply revoked, the driver takes no action."   display-name="Group Membership Entitlement" name="Group">
   <values>
	<query-app>
	   <query-xml>
		<nds dtd-version="2.0">
		   <input>
			<query class-name="Group"
			   scope="subtree">
			   <search-class class-name="Group"/>
			   <read-attr attr-name="Description"/>
			</query>
		   </input>
		</nds>
	   </query-xml>
	   <result-set>
		<display-name>
		    <token-src-dn/>
		</display-name>
		<description>
		   <token-attr attr-name="Description"/>
		</description>
		<ent-value>
		   <token-association/>
		</ent-value>
	   </result-set>
	</query-app>
   </values>
</entitlement>

この例では、エンタイトルメントが複数回同じオブジェクトに適用された場合、グループのエンタイトルメントではUnionを使用して衝突が解決されます。Union属性により、関連するすべてのRole-Based Entitlement (役割ベースのエンタイトルメント)ポリシーのエンタイトルメントが\'83\'7dージされます。したがって、1つのポリシーがエンタイトルメントを取り消し、その他のポリシーがエンタイトルメントを付与した場合、最終的にはエンタイトルメントが付与されます。

グループの説明は、ドライバのポリシーのルールを介して何が設定されたかが詳細に説明されているため役立ちます。この説明は、最初にエンタイトルメントを定義するときに、どの程度詳しく説明するのかを知るための良い例です。

<display-name>はグループメンバーシップのエンタイトルメントです。これは役割ベースのエンタイトルメントのiManagerなどの管理エージェントに表示されます。名前はエンタイトルメントの相対識別名(RDN)です。\'95\'5c示名を定義しない場合、エンタイトルメントの名前はそのRDNです。

初期のクエリ値により、ツリーのトップでグループのクラス名が検索され、サブツリーも検索されます。これらの値は接続されているActive Directoryサーバから取得したものであり、<nds>タグでアプリケーションクエリが開始されます。<query-xml>タグで、次に類似した情報をこのクエリが受信します。

<instance class-name="Group" src-dn="o=Blanston,cn=group1">
   <association>o=Blanston,cn=group1</association>
   <attr attr-name="Description"> the description for group1</attr>
</instance>
<instance class-name="Group" src-dn="o=Blanston,cn=group2">
   <association>o=Blanston,cn=group2</association>
   <attr attr-name="Description"> the description for group2</attr>
</instance>
<instance class-name="Group" src-dn="o=Blanston,cn=group3">
   <association>o=Blanston, cn=group3</association>
   <attr attr-name="Description"> the description for group3</attr>
</instance>
<!-- ... ->

次に、<result-set>タグで、クエリから受け取った情報が、さまざまなフィールドに入力されます。たとえば、<display-name>フィールドはo=Blanston,cn=group1を受け取ります。<description>フィールドはthe description for group1を受け取り、<ent-value>フィールドはo=Blanston,cn=group1を受け取ります。複数のグループが存在し、クエリの条件を満たしたため、この情報も収集され、他のインスタンスとして\'95\'5c示されました。

メモ:関連付け形式の値はすべての外部システムで一意であるため、問い合わせが行われた各外部システムで形式および\'8d\'5c文は異なります。

その他の例としてはExchange Mailboxエンタイトルメントがあります。

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
  description="The Exchange Mailbox Entitlement grants or denies an
  Exchange mailbox for the user in Microsoft Exchange."
  display-name="Exchange Mailbox Entitlement" name="ExchangeMailbox">
  <values>
	<query-app>
	   <query-xml>
		<nds dtd-version="2.0">
		   <input>
			<query class-name="msExchPrivateMDB"
			   dest-dn="CN=Configuration," scope="subtree">
			   <search-class class-name="msExchPrivateMDB"/>
			   <read-attr attr-name="Description"/>
			   <read-attr attr-name="CN"/>
			</query>
		   </input>
		</nds>
	    </query-xml>
	    <result-set>
		<display-name>
		   <token-attr attr-name="CN"/>
		</display-name>
		<description>
		   <token-attr attr-name="Description"/>
		</description>
		<ent-value>
		  <token-src-dn/>
		</ent-value>
	    </result-set>
	</query-app>
   </values>
</entitlement>

この例では、エンタイトルメントが複数回同じオブジェクトに適用された場合、ExchangeメールボックスのエンタイトルメントではUnionを使用して衝突が解決されます。Union属性により、関連するすべてのRole-Based Entitlement (役割ベースのエンタイトルメント)ポリシーのエンタイトルメントが\'83\'7dージされます。したがって、1つのポリシーがエンタイトルメントを取り消し、その他のポリシーがエンタイトルメントを付与した場合、最終的にはエンタイトルメントが付与されます。

説明には、エンタイトルメントがMicrosoft ExchangeのユーザのExchangeメールボックスを付与または取り消すことが示されています。エンタイトルメントの詳細としてはこれで十分です。display-nameはExchangeメールボックスのエンタイトルメントです。これは役割ベースエンタイトルメントのiManagerなどの管理エージェントに表示されます。名前はエンタイトルメントの相対識別名(RDN)です。\'95\'5c示名を定義しない場合、エンタイトルメントの名前はそのRDNです。

初期のクエリ値によってmsExchPrivateMDBのクラス名が検索されます。これは、Configurationのコンテナを検索し始め、サブツリーを検索し続けるMicrosoft Exchangeの機能呼び出しです。これらの値は接続されているActive Directoryデータベースから取得したものであり、アプリケーションクエリは<nds>タグで開始されます。eDirectoryにはmsExchPrivateMDBのクラスと同等のものがありません。したがって、そのようなクエリを実行するMicrosoft Exchangeの機能呼び出しに精通している必要があります。しかし、Active Directoryドライバで見つかったルールおよびポリシーがあるため、クエリは完了します。

エンタイトルメントコンシューマでは、クエリによって取得された情報が使用されます。たとえば、エンタイトルメント値(ent-value)は、DirXML-EntitlementRef属性を介してIdentity Managerポリシーに渡されます。iManagerまたはユーザアプリケーションによって\'95\'5c示名および説明情報が\'95\'5c示され、DirXML-SPCachedQuery属性に保存されます。

例3: 管理者定義のエンタイトルメント: リスト付き

3番目の例は、リストエントリを選択した後に付与または取り消しのイベントを作成する管理者定義のエンタイトルメントです。

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="union"
    description="This will show Administrator-defined Values">
	   <display-name="Admin-defined Entitlement"/>
	   <values multi-valued="true">
		<value>Building A</value>
		<value>Building B</value>
		<value>Building C</value>
		<value>Building D</value>
		<value>Building E</value>
		<value>Building F</value>
	</values>
</entitlement>

この例では、エンタイトルメント名は、管理者が定義しエンタイトルメントの定義済み表示名を持つ管理者定義です。(エンタイトルメントのRDNとは異なる表示名にする場合のみ、表示名を設定する必要があります)。conflict-resolutionの行はUnionの設定を表します。これにより、エンタイトルメントは割り当てられた値をマージできます。

エンタイトルメントの説明は「This will show Administrator-defined Values」です。multi-value属性はtrueに設定されます。これにより、エンタイトルメントで値を複数回割り当てられるようになります。この例では、値は会社のビルの文字「Building A」から「Building F」です。次に、iManager RBEタスクなどのエンタイトルメントのクライアント、またはユーザアプリケーションを介して、ユーザまたは定義されたタスクマネージャはビルの情報を指定できます。これは、Novell eDirectoryなどの外部アプリケーションに含まれます。

例4: 管理者定義のエンタイトルメント: リストなし

4番目の例は、エンタイトルメントでイベントを付与または取り消す前に、値の入力を管理者に強制する管理者定義のエンタイトルメントです。初期の設定ですべての情報を持っていないためにタスクリストを作成できない場合、この種類のエンタイトルメントを使用できます。

<?xml version="1.0" encoding="UTF-8"?>
<entitlement conflict-resolution="priority"
    description="There will be no pre-defined list">
    <values multi-valued="false"/>
</entitlement>

この例では、エンタイトルメント名は管理者定義(リストなし)であり、表示名のエントリがないため、表示名としてエンタイトルメント名が使用されます。衝突の解決がデフォルトである優先度に再度設定されます。つまり、役割ベースのエンタイトルメントによってエンタイトルメントが使用された場合、優先度があるRBEによって値が設定されます。iManager RBEタスクなどのエンタイトルメントのクライアントを介して、またはユーザアプリケーションを介して、ビルの情報を指定します。これは、eDirectoryなどの外部アプリケーションに含まれます。

6.4.7 エンタイトルメントの作成のステップの完了

セクション 6.2, エンタイトルメントを作成する: 概要で説明されているように、エンタイトルメントの作成例には、エンタイトルメントの作成および使用方法についての最初の2つのステップが紹介してあります。これには、ステップ1であるエンタイトルメントで実行することのチェックリストの作成と、ステップ2であるチェックリスト内の項目に対するエンタイトルメントの記述が含まれています。ステップ3である、Identity Managerドライバのポリシーの作成はこの章の範囲外です。ポリシーの作成および編集の詳細については、「Identity Manager 3.5.1のポリシーの理解」、および適切な『Identity Managerドライバガイド』を参照してください。

エンタイトルメントを作成した後、または、特定のIdentity Managerドライバで事前設定済みのエンタイトルメントを使用した後は、それらを管理する必要があります。これはステップ4です。エンタイトルメントは、2つのパッケージまたはエージェントによって、つまり役割ベースエンタイトルメントポリシーとしてのiManagerを介して、またはワークフローベースのプロビジョニングのユーザアプリケーションを介して管理されます。ワークフローベースのプロビジョニングで使用されるエンタイトルメントについては、『 Identity Manager 3.5.1User Application: Administration Guide 』の「プロビジョニング要求定義の設定 」を参照してください。この章の残りの部分では、Role-Based Entitlement (役割ベースのエンタイトルメント)に重点を置きます。