為協助您更加瞭解授權的相關內容,可在其中一個預先設定組態的驅動程式 (即已啟用授權的 Active Directory (AD)) 中查看授權和規則。 這包含檢查 Novell 的授權文件類型定義 (Document Type Definition,DTD),然後查看根據 DTD 寫入授權的 XML 範例。
本節內容:
已啟用授權的 AD 驅動程式包含下列結構變更:
下列規則 (Policy) 包含可使授權正常運作的其他規則 (Rule):
藉由在 iManager 中執行下列步驟,您可以查看每個規則實際的 XML 碼:
已啟用授權的 Active Directory 驅動程式附帶三種授權: 「使用者帳戶」、「群組」和「Exchange 郵件」。
圖 6-1 AD 驅動程式附帶的授權
您可以查看這些授權的 XML 碼,做為節 6.4.6, 協助您建立自己授權的範例授權中書面範例的一部份。
部份授權在已啟用授權的驅動程式上預先定義。 您可以使用這些授權,或者可以在 iManager 或 Designer 中建立自己的授權。 使用下列 Novell 的授權文件類型定義 (DTD) 做為建立授權的範例,可以協助您建立自己的授權。
此文件類型定義 (DTD) 說明之後是四個範例,說明如何透過 iManager 使用此 XML 格式寫入授權。 如果您不想要擔心 XML 格式的相關問題,請使用 Designer 的「授權精靈」以一種更簡單的方式建立授權。
<!-*****************************************************************-> <!-- 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 >
授權文件類型定義 (DTD) 分為五個部份: 定義、參考、結果、快取查詢和內部參考資訊。 標題僅是備註,且是選擇性的。 在文件類型定義 (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,則會將兩個值集 (a、b、c、d、e) 都指定給使用者 U。 如果設為 priority,則根據優先程度較高的「授權規則」而定,使用者 U 僅會取得一個值集。
因為值的集合會導致套用多個值,所以如果授權是單一值,則必須依 priority 解析衝突。 目前,「角色授權」使用此屬性,而在以後,「工作流程授權」可能也會使用該屬性。
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 驅動程式附帶的「使用者帳戶」授權。
具值授權從三個來源接收值。 一個來源是外部應用程式 (由 <query-app> 元素指定)。. 另一個來源是列舉值預先定義的清單 (一或多個 <value> 元素)。 第三個來源是授權用戶端 (不具有 <value> 子代的 <values> 元素)。 這些範例對於說明值的工作方式而言很有用。
具值授權可以是單一值的或多值的,預設值是多值的。 強制執行此限制是授權用戶端的職責。
<!ELEMENT value (#PCDATA)>
授權值是不具類型的字串。
<!ELEMENT query-app (query-xml, result-set)>
如果值來自外部應用程式 (例如,電子郵件配送清單),則您必須透過 < query-xml> 元素指定應用程式查詢。 並透過 <result-set> 元素從查詢中擷取結果。 我們在範例 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 子元素)。
記號元素 <token-src-dn>、<token-association> 和 <token-attr> 實際上是 XPATH 運算式的預留位置,它們分別從 XDS 格式的 XML 文件擷取 src-dn 屬性值、關聯值或任何屬性值。 文件類型定義 (DTD) 假設查詢結果是 XDS。
授權文件類型定義 (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.5, 在 iManager 中建立和編輯授權中的範例顯示用於寫入授權的實際 XML 碼,但是寫入授權的一種更簡單的方法是使用 Identity Manager 隨附的 Designer 公用程式。 將 Identity Manager 驅動程式新增至 Designer 模擬器中的 Identity Vault 之後,您可以從「大綱檢視」中,在驅動程式上按一下滑鼠右鍵,並選取「新增授權」。 「授權精靈」會提示您指定想要的授權類型,然後精靈會指引您逐步完成建立程序。
如需使用「授權精靈」的相關資訊,請參閱《Designer for Identity Manager 3:管理指南》。
雖然建議您使用 Designer 的「授權精靈」來建立授權,但是您仍可以透過 iManager 建立授權。
附註:不建議您變更授權的名稱。如果您稍後變更授權名稱,還需要變更規則中實作授權的所有參考。 授權名稱儲存在規則內的 Ref 和 Result 屬性中。
您可以建立兩種類型的授權: 無值授權和具值授權。 具值授權可以從外部查詢、管理員定義的清單或自由格式取得值。 下面是您可以建立的四種授權範例。
附註:如果您看到某行中沒有「小於號 (<)」,這表示此行已換行,資訊通常顯示在一行,而不是兩行 (或三行)。 另請注意,這些只是您可以針對每種具值授權建立的範例,而不是「帳戶授權」。
<?xml version="1.0" encoding="UTF-8"?> <entitlement conflict-resolution="priority" description="This is an Account Entitlement" display-name="Account Entitlement"/>
在此範例中,無值授權的名稱是 Account。 其後接衝突解析行,預設設定為 Priority,表示在大部份情況下,如果授權用於「角色授權」,則會由優先程度高的 RBE 設定其值 (然而,因為這是無值授權的範例,所以不會套用值設定)。「授權」描述是 This is an Account Entitlement,顯示名稱是 Account Entitlement。 這是您建立「帳戶授權」所需的全部資訊,之後您可以使用該資訊來在應用程式中授予帳戶。
啟用授權的 Active Directory 驅動程式具有 UserAccount 授權,Active Directory 會使用該授權來授予或撤銷使用者帳戶。
<?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,這可讓授權合併已指定的值 (同樣,值設定也不會套用至無值授權)。「描述」欄位說明此授權的用途及其建立的原因。 此資訊對於以後要修改授權的人員很有用。 授權的實際名稱是 UserAccount,然而 <display-name> 在管理代辦中顯示為「使用者帳戶授權」。
已啟用授權之 Active Directory 驅動程式附帶的「群組」和「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 屬性會合併所有相關「角色授權」規則的授權,因此,如果一個規則撤銷授權,而其他規則授予授權,則最終會授予授權。
因為「群組」描述很詳細,所以很有用,它會說明透過驅動程式規則 (Policy) 中的規則 (Rule) 所設定的項目。 此描述是您在定義授權時首先需要瞭解之詳細資料很好的範例。
<display-name> 是「群組成員資格授權」,顯示在管理代辦中,例如「角色授權」的 iManager 中。 該名稱是授權的相對可辨識名稱 (Relative Distinguished Name,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 屬性會合併所有相關「角色授權」規則的授權,因此,如果一個規則撤銷授權,而另一個規則授予授權,則最終會授予授權。
description 指出授權會針對 Microsoft Exchange 中的使用者授予或撤銷 Exchange 信箱,並會足夠詳細地說明授權作業。 display-name 是「Exchange 信箱授權」,顯示在管理代辦中,例如「角色授權」的 iManager 中。 該名稱是授權的相對可辨識名稱 (Relative Distinguished Name,RDN)。 如果您未定義顯示名稱,則授權的名稱是它的相對可辨識名稱 (RDN)。
啟始查詢值會尋找 msExchPrivateMDB 的類別名稱,這是 Microsoft Exchange 函式呼叫,它會在容器「組態」中開始尋找,並會繼續搜尋其子網路樹。 這些值來自已連接的 Active Directory 資料庫,以及從 <nds> 標籤開始的應用程式查詢。 類別 msExchPrivateMDB 在 eDirectory 中沒有等同項目,因此您需要熟悉 Microsoft Exchange 函式呼叫,以進行此類查詢。 但是因為在 Active Directory 驅動程式中找到規則 (Rule) 和規則 (Policy),所以查詢完成。
授權消費者使用由查詢擷取的資訊。 例如,授權值 (ent-value) 透過 DirXML-EntitlementRef 屬性傳遞至 Identity Manager 規則。 顯示名稱和描述資訊由 iManager 或「使用者應用程式」顯示,並儲存在 DirXML-SPCachedQuery 屬性中。
第三個範例是管理員定義的授權,它會在您選取清單項目之後建立授予或撤銷事件。
<?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) 不同,只需輸入顯示名稱)。衝突解析行顯示 Union 的設定,可讓授權合併已指定的值。
「授權」描述是「
」。多值屬性設為 true,可讓授權多次指定值。 在此範例中,values 是公司建築字母: Building A 到 Building F。然後,使用者或定義任務的管理員可以透過授權用戶端 (例如 iManager RBE 任務) 或透過「使用者應用程式」,指定建築資訊,然後將此資訊包含在外部應用程式 (例如 Novell eDirectory) 中。第四個範例是管理員定義的授權,它會強制管理員輸入值,然後授權才可以授予或撤銷事件。 如果您不具有啟始設定的所有資訊,而因此無法建立任務清單,則可以使用此類型的授權。
<?xml version="1.0" encoding="UTF-8"?> <entitlement conflict-resolution="priority" description="There will be no pre-defined list"> <values multi-valued="false"/> </entitlement>
在此範例中,授權名稱是「管理員定義的 (不含清單)」,因為沒有顯示名稱項目,所以它會使用授權名稱做為顯示名稱。 衝突解析會重新設為預設值 Priority,這表示如果授權用於「角色授權」,則會由優先程度高的 RBE 設定值。 您可以透過授權用戶端 (例如 iManager RBE 任務) 或透過「使用者應用程式」,指定建築資訊,然後將此資訊包含在外部應用程式 (例如 eDirectory) 中。
授權建立範例已顯示如何執行建立和使用授權的前兩個步驟,如節 6.2, 建立授權: 綜覽中所述。 這包含步驟 1:針對您想要使用授權達成的項目製作核對清單,以及步驟 2:撰寫授權,以處理核對清單中的項目。 步驟 3:建立 Identity Manager 驅動程式的規則;這已超出本章的範圍。 如需建立和編輯規則的相關資訊,請參閱《規則產生器和驅動程式自訂指南》和適當的 Identity Manager 驅動程式指南。
在建立授權 (或使用某些 Identity Manager 驅動程式預先設定的授權) 之後,您現在需要對它們進行管理,此為步驟 4。授權由兩個套件或代辦進行管理: 透過 iManager 做為「角色授權規則」,或透過工作流程提供中的「使用者應用程式」。 如需工作流程提供中使用的授權,請參閱「工作流程提供簡介」。 本章的其餘部份重點放在「角色授權」上。