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

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

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

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

エンタイトルメントが有効なADドライバでは、構造に次の変更が加えられました。

  • ドライバフィルタにDirXML-EntitlementRef属性を追加します。DirXML-EntitlementRef属性により、ドライバフィルタはエンタイトルメントアクティビティをリッスンできます。
  • ユーザアカウントのエンタイトルメントを作成します。ユーザアカウントのエンタイトルメントにより、ユーザのActive Directoryのアカウントが付与または取り消されます。アカウントが付与されると、ユーザは有効なログオンアカウントを取得できます。アカウントが取り消されると、ドライバがどのように設定されているのかに応じて、ログオンアカウントは無効になるか、削除されます。
  • グループメンバーシップのエンタイトルメントを作成します。グループのエンタイトルメントにより、Active Directoryのグループのメンバーシップが付与または取り消されます。グループは、アイデンティティボールトのグループと関連付けられている必要があります。メンバーシップが取り消されると、グループからユーザが削除されます。いくつかの外部ツールによってActive Directory内の制御されているグループにユーザが追加され、ユーザがドライバによって削除されない場合、発行者チャネルではグループメンバーシップエンタイトルメントは適用されません。また、エンタイトルメントが取り消されるのではなく、ユーザオブジェクトから削除された場合、ADドライバではアクションは行われません。
  • Exchangeメールボックスエンタイトルメントを作成します。グループのエンタイトルメントにより、Microsoft ExchangeのユーザのExchangeメールボックスが付与または取り消されます。
  • エンタイトルメント情報を多くのポリシーに追加します。

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

  • InputTransform (ドライバレベル)。このポリシーの[Check Target Of Add Association For Group Membership Entitlements (グループメンバーシップエンタイトルメントに対するadd-associationの対象を確認する)]ルールでは、グループメンバーシップエンタイトルメントの「add-association」の対象が確認されます。Active Directoryで作成されるユーザに割り当てられたグループメンバーシップのエンタイトルメントは、ユーザが正常に作成されるまでは処理できません。add-associationは、Active Directoryでドライバによってオブジェクトが作成されたことを示します。オブジェクトにもグループエンタイトルメント処理のタグが付いているる場合、すぐに実行されます。
  • イベント変換(発行者チャネル)。このポリシーの[Disallow User Account Delete (ユーザアカウントの削除を禁止する)]ルールでは、アイデンティティボールトのユーザアカウントの削除は拒否されます。ユーザアカウントのエンタイトルメントを使用した場合、アイデンティティボールトではエンタイトルメントによって管理されているユーザアカウントが制御されます。Active Directoryで削除しても、アイデンティティボールト内の制御オブジェクトは削除されません。アイデンティティボールト内のオブジェクトを今後変更したり、マージ操作を実行すると、Active Directoryでアカウントが再作成される場合があります。
  • コマンド(購読者チャネル)。コマンドポリシーには、エンタイトルメントに関する次のルールが含まれています。
    • [User Account Entitlement Change (Delete Option) (ユーザアカウントエンタイトルメントの変更 ([削除]オプション))]ルール。ユーザアカウントのエンタイトルメントによって、Active Directoryの有効なアカウントがユーザに付与されます。エンタイトルメントを取り消すと、[アカウントのエンタイトルメントが取り消された場合]グローバル変数で選択した値に応じて、Active Directoryアカウントが無効になるか、または削除されます。エンタイトルメントが変更され、[削除]オプションを選択した場合、このルールが実行されます。
    • [User Account Entitlement Change (Disable Option) (ユーザアカウントエンタイトルメントの変更 ([無効]オプション))]ルール。ユーザアカウントのエンタイトルメントによって、Active Directoryの有効なアカウントがユーザに付与されます。エンタイトルメントを取り消すと、[アカウントのエンタイトルメントが取り消された場合]グローバル変数で選択した値に応じて、Active Directoryアカウントが無効になるか、または削除されます。エンタイトルメントが変更され、[無効]オプションを選択した場合、このルールが実行されます。
    • [許可される、または取り消されるグループメンバシップのユーザ変更を確認する]ルール。
    • [Check User Modify for Exchange Mailbox Being Granted or Revoked (許可される、または取り消されるExchangeメールボックスのユーザ変更を確認する)]ルール。
  • 一致(購読者チャネル)。これは、アカウントのエンタイトルメントです。このポリシーの[Do Not Match Existing Accounts (既存のアカウントに一致しない)]ルール。Identity Managerユーザアプリケーションまたは役割ベースエンタイトルメントでユーザアカウントのエンタイトルメントを使用した場合、エンタイトルメントを付与または取り消すことにより、アカウントが作成および削除されます(または無効になります)。ユーザがActive Directoryのアカウントに対する権利を与えられていない場合、デフォルトポリシーはActive Directoryの既存のアカウントに一致しません。一致しているActive Directoryのアカウントにエンタイトルメントポリシーを適用する場合は、このルールを変更または削除します。これにより、Active Directoryアカウントが削除されるか、または無効になります。
  • 作成(購読者チャネル)。作成ポリシーには、エンタイトルメントに関する次のルールが含まれています。
    • アカウントのエンタイトルメント: エンタイトルメントが付与されない場合にアカウント作成をブロックします。Identity Managerユーザアプリケーションまたは役割ベースエンタイトルメントでユーザアカウントのエンタイトルメントを使用した場合、アカウントのエンタイトルメントを明確に付与されたユーザに対してのみアカウントが作成されます。エンタイトルメントが付与されない場合、このルールによりユーザアカウント作成が拒否されます。
    • 無効なログインが存在しない場合、アイデンティティボールトのアカウントが有効になります。
    • 追加後にグループのエンタイトルメントの確認の準備をします。追加されたオブジェクトはグループに追加するために存在する必要があるため、追加が完了した後、グループのエンタイトルメントが処理されます。その追加には、追加処理が完了したときに入力変換で確認された運用プロパティのフラグが付けられます。
    • 追加後にエンタイトルメントの交換を確認する必要があることを示します。
    • ユーザ名をWindowsログオン名にマップします。eDirectoryユーザ名の後にuserPrincipalNameが設定されている場合、eDirectoryオブジェクト名とActive Directoryドメインの名前にuserPrincipalNameを設定します。

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

  1. Identity Manager]>[Identity Managerの概要]の順に選択します。
  2. ドライバがある場所でドライバセットを参照し、[検索]をクリックします。
  3. [Identity Managerの概要]ページで、表示されているドライバセットからドライバオブジェクトを選択します。
    ドライバの選択
  4. [ドライバセット]のドライバをダブルクリックし、ドライバのページを表示します。ドライバの中央で[すべてのポリシーを表示]アイコンをクリックします(赤い丸で示しています)。
    すべてのポリシーの表示の選択
  5. [すべてのポリシーを表示]画面からポリシーを選択すると、ポリシーを構成する条件およびアクションを表示できます。
    ポリシーのルールの表示
  6. ポリシーの背後にある実際のXMLコードを表示するには、ドロップダウンメニューから[XMLの編集]を選択します(このメニューのデフォルトは[Identity Managerポリシー]です)。ポリシーの作成および編集の詳細については、『Policy Builder and Driver Customization Guide』を参照してください。また、そのドライバ固有のポリシーを作成するには、選択したIdentity Managerドライバのガイドを参照してください。
  7. 有効化されたエンタイトルメントを持つ事前設定済みのドライバ(Active Directoryなど)に付属しているエンタイトルメントを表示するには、ステップ1~ステップ4を実行し、ドライバの中央の[すべてのエンタイトルメントを表示]アイコンを選択します(赤い丸で示しています)。
    すべてのエンタイトルメントの表示
  8. [エンタイトルメントの管理]ページでエンタイトルメント名をクリックし、XMLビューアにエンタイトルメントを表示します。エンタイトルメントのコードを編集するには、[XML編集の有効化]をクリックします。

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

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

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

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

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

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

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では、エンタイトルメント定義のヘッダは次のようになります。

<!-- Entitlement definition stored in the XmlData attribute of a DirXML-Entitlement object.-->

ヘッダの次に要素(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)。エンタイトルメントポリシーBのエンタイトルメントEは、一連の値を持っています(c、d、e)。

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

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

display-name CDATA #REQUIRED description CDATA #REQUIRED

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

<!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>要素)。例を使用して、値が機能する様子を説明します。

値のあるエンタイトルメントは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の残りのエンタイトルメントのヘッダは異なる機能を持っていますが、エンタイトルメントを作成するときに注目する必要がある項目ではありません。

<!-- Entitlement reference stored in the DirXML-EntitlementRef attribute of a DirXML-EntitlementRecipient or a DirXML-SharedProfile object.-->

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

<!-- Entitlement result stored in the DirXML-EntitlementResult attribute of a DirXML-EntitlementRecipient object.-->

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

<!-- Cached query results stored in the DirXML-SPCachedQuery attribute of a DirXML-Entitlement object.-->

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

<!-- Representation of a DirXML-EntitlementRef within the DirXML Script and within the operation-data of an operation in an XDS document.-->

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

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

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

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

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

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

  1. Identity Managerユーティリティのヘッダの[Create Entitlements (エンタイトルメントの作成)]オプションを選択します。
  2. [Create Entitlements (エンタイトルメントの作成)]ページで、エンタイトルメントの名前を入力し、オブジェクトブラウザを使用してエンタイトルメントが属しているIdentity Managerドライバオブジェクトを検索します。
    エンタイトルメントの作成
  3. [作成後に詳細を設定]がオンになっている場合、このエンタイトルメントの要素を定義する[XMLエディタ]ページが表示されます。
    エンタイトルメントの定義
  4. エンタイトルメントに要素を追加するには、[XML編集の有効化]をオンにします。

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

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

次の2つのタイプのエンタイトルメントを作成できます。値のないエンタイトルメントと値のあるエンタイトルメントの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>が表示されますが、エンタイトルメントの実際の名前は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属性により、関連するすべての役割ベースエンタイトルメントポリシーのエンタイトルメントがマージされます。したがって、1つのポリシーがエンタイトルメントを取り消し、その他のポリシーがエンタイトルメントを付与した場合、最終的にはエンタイトルメントが付与されます。

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

<display-name>はグループメンバーシップのエンタイトルメントです。これは役割ベースのエンタイトルメントのiManagerなどの管理エージェントに表示されます。名前はエンタイトルメントの相対識別名(RDN)です。表示名を定義しない場合、エンタイトルメントの名前はその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が挿入されます。複数のグループが存在し、クエリの条件を満たしたため、この情報も収集されて他のインスタンスとして表示されました。

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

その他の例としてはExchangeメールボックスエンタイトルメントがあります。

<?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属性により、関連するすべての役割ベースエンタイトルメントポリシーのエンタイトルメントがマージされます。したがって、1つのポリシーがエンタイトルメントを取り消し、その他のポリシーがエンタイトルメントを付与した場合、最終的にはエンタイトルメントが付与されます。

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

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

エンタイトルメントコンシューマでは、クエリによって取得された情報が使用されます。たとえば、DirXML-EntitlementRef属性を介して、エンタイトルメント値(ent-value)がIdentity Managerポリシーに渡されます。iManagerまたはユーザアプリケーションによって表示名および説明情報が表示され、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ドライバのポリシーの作成はこの章の範囲外です。ポリシーの作成および編集の詳細については、『Policy Builder and Driver Customization Guide』および該当するIdentity Managerドライバのガイドを参照してください。

エンタイトルメントを作成した後に(または、特定のIdentity Managerドライバで事前設定済みのエンタイトルメントを使用した後に)、それらを管理する必要があります。これはステップ4です。エンタイトルメントは、2つのパッケージまたはエージェントによって、つまり役割ベースエンタイトルメントポリシーとしてのiManagerを介して、またはワークフローベースのプロビジョニングのユーザアプリケーションを介して管理されます。For entitlements used in workflow-based provisioning, see Introduction to Workflow-Based Provisioning. この章の残りの部分では、役割ベースエンタイトルメントに焦点を当てます。