Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 

第 5 章
管理身份和角色

除了在目錄中資料的階層式結構以外,管理代表使用者的項目通常需要建立群組並共用一般的屬性值。Directory Server 透過群組、角色和服務類別 (CoS) 來提供此進階項目管理功能。

群組是指將其他項目命名為成員清單或成員篩選條件的項目。角色能提供相同或更多的功能,它透過一種機制,能在角色中的每一位成員上產生 nsrole 屬性。CoS 也會產生一種虛擬的屬性,允許項目共用一般的屬性值,而不需將屬性值儲存在每個項目中。

Directory Server 提供了一種功能,可以根據角色值和 CoS 虛擬屬性執行搜尋。任何作業中所用的篩選條件字串內可包含 nsRole 屬性,或任何由 CoS 定義所產生的屬性,篩選字串也會執行此屬性值的任何一個比較作業。但是,系統無法為虛擬的 CoS 屬性編製索引,因此任何涉及 CoS 所產生屬性的搜尋都無法被索引。這樣會消耗大量的時間和記憶體資源。

為完全利用角色和服務類別所提供的功能,您應該在目錄部署的規劃階段就決定好目錄拓樸。如需這些機制及它們能夠如何簡化您拓樸的描述,請參閱 Directory Server Deployment Planning Guide

本章包含下列章節:


管理群組

群組可用於讓群組產生關聯以簡化管理作業,例如用於定義 ACI。群組定義是一種特殊項目,它可為靜態清單內的群組成員命名,或指定篩選條件來定義一組動態項目。

群組可能成員的範圍是整個目錄,不論群組定義項目位在什麼位置上。為簡化管理,所有群組定義項目通常都儲存在單一位置中,通常是根尾碼下的 ou=Groups

定義靜態群組的項目是繼承自 groupOfNamesgroupOfUniqueNames 物件類別。群組成員會依照它們的 DN,列示成 memberuniqueMember 屬性的多個值。

定義動態群組的項目是繼承自 groupOfURLs 物件類別。群組成員關係是由多重值 memberURL 屬性中所指定的一或多個篩選條件來定義。動態群組的成員是指每次進行評估時,符合任一篩選條件的項目。

下一節描述如何使用主控台建立和修改靜態與動態群組。

加入新的靜態群組

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,在樹狀目錄內您想要加入新群組的項目上,按一下滑鼠右鍵,並選取 [新增] > [群組] 項目。
  2. 或者,選取項目並選取 [物件] 功能表中的 [新增] > [群組] 項目。

  3. 在 [建立新群組] 對話方塊中,您必須在 [群組名稱] 欄位中輸入新群組名稱,您也可以在 [描述] 欄位中加入該群組的選用描述。群組名稱會成為新群組項目的 cn (一般名稱) 屬性值並出現在其 DN 中。
  4. 在對話方塊的左清單中按一下 [成員]。在右面板中,預設值會選取 [靜態群組] 標籤。
  5. 按一下 [加入] 將新成員加入群組中。顯示一般的 [搜尋使用者和群組] 對話方塊。
  6. 在 [搜尋] 下拉式清單中,選取 [使用者] 並輸入搜尋字串,然後按一下 [搜尋]。按一下 [進階] 按鈕,搜尋特定屬性或特定屬性值。
  7. 請在結果中選取一或多個項目,並按一下 [確定]。重複此步驟加入所有您想加入此靜態群組的成員。


    備註

    靜態群組成員有可能因為鏈接的原因而成為遠端成員。您可以使用參考的完整性外掛程式,來確定被刪除的成員會自動從靜態群組項目中刪除。如需關於參考的完整性與鏈接結合使用的詳細資訊,請參閱配置鏈接策略


  8. 按一下左清單中的 [語言],以其他語言指定您的群組名稱和描述字串。當主控台使用對應地區時,會顯示這些選項。
  9. 按一下 [確定] 建立您的新群組,它會顯示為其建立所在項目內的其中一個子項。

加入新的動態群組

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,在樹狀目錄內您想要加入新群組的項目上,按一下滑鼠右鍵,並選取 [新增] > [群組] 項目。
  2. 或者,選取項目並選取 [物件] 功能表中的 [新增] > [群組] 項目。

  3. 在 [建立新群組] 對話方塊中,在 [群組名稱] 欄位中輸入新群組的名稱。您可以在 [描述] 欄位中,加入該群組的選用描述。群組名稱會成為新群組項目的 cn (一般名稱) 屬性值並出現在其 DN 中。
  4. 在對話方塊的左清單中按一下 [成員],並選取右面板內的 [動態群組] 標籤。
  5. 按一下 [加入],建立包含定義群組成員之篩選條件字串的 LDAP URL。顯示一般的 [建構並測試 LDAP URL] 對話方塊。
  6. 在文字欄位中輸入 LDAP URL 或選取 [建構],在指引下完成含有群組篩選條件的 LDAP URL 建構作業。按一下 [測試] 檢視由此篩選條件傳回的項目清單。
  7. 在完成 URL 的建構後按一下 [確定]。重複此步驟加入所有包含定義動態群組之篩選器的 URL。

  8. 按一下左清單中的 [語言],以其他語言指定您的群組名稱和描述字串。當主控台使用對應地區時,會顯示這些選項。
  9. 按一下 [確定] 建立您的新群組,它會顯示為其建立所在項目內的其中一個子項。

修改群組定義

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,連按兩下代表您要修改的群組項目。
  2. 或者,選取該項目,再選取 [物件] 功能表中的 [開啟]。

  3. 在 [編輯項目] 對話方塊中,變更 [一般]、[成員] 或 [語言] 類別中的群組資訊。您可以加入或移除靜態群組的成員,或加入、編輯或移除含有動態群組篩選條件的 URL。
  4. 完成群組定義的修改後,按一下 [確定]。
  5. 若要在主控台檢視您的變更,請選取 [檢視] 功能表中的 [重新整理]。

移除群組定義

無論要移除哪一種群組類型,只要刪除定義該群組的項目即可。


指派角色

角色是另一種分組機制,設計此機制的目的是讓應用程式更有效率也更容易使用。角色的定義和管理方式類似群組,但除此之外,成員項目也具有產生的屬性,此屬性可表示項目所參與的角色。例如,應用程式只需讀取項目的角色即可,而無需先選取群組然後再瀏覽成員清單。

依預設值,角色的範圍限制在定義角色所在的樹狀子目錄內。Directory Server 5.2 引進巢狀角色延伸範圍的功能,讓巢狀角色能夠巢居在其他樹狀子目錄中,並擁有目錄中任何位置的成員。如需延伸角色範圍的詳細資料,請參閱巢狀角色定義的範例

關於角色

每個角色都有擁有該角色的成員或項目。從目錄中擷取項目後,角色機制會自動在每一個項目中產生 nsRole 屬性,這些項目可以是任何角色的成員。這個多重值屬性包含所有角色定義的 DN,在這些定義中項目是成員。nsRole 屬性是一個計算屬性,它並不與項目本身儲存在一起,而是在作業結果中當作一般屬性傳回給用戶端應用程式。

Directory Server 支援三種角色類型:

角色使用戶端應用程式能夠直接讀取其 nsRole 屬性,以決定項目的所有角色成員。這簡化了用戶端處理最佳化目錄的使用情形。角色可以搭配 CoS 機制一起使用,為角色成員產生其他屬性 (參閱建立以角色為基礎的屬性)。角色可用來定義存取控制 (參閱定義角色存取 - roledn 關鍵字)。角色也支援其他功能,例如同時啟用或停用所有成員 (參閱停用與啟用使用者與角色)。

搜尋 nsRole 屬性

Directory Server 允許在任何搜尋篩選條件中使用 nsRole 屬性。您可以使用任何比較運算子搜尋此屬性的特殊值。搜尋 nsRole 屬性時,請謹記下列考量:

nsRole 屬性的權限

nsRole 屬性只能由角色機制來指派,任何目錄使用者均無法寫入或修改該屬性。但是,您應該謹記下列考量:

如需關於如何在您的目錄中使用角色的詳細資訊,請參閱 Directory Server Deployment Planning Guide

使用主控台指派角色

本節描述透過 Directory Server Console 建立和修改角色的程序。

建立受管理角色

受管理角色擁有角色定義項目,並透過將 nsRoleDN 屬性加入每個成員項目的方式來指定成員。若要使用主控台建立受管理角色並加入成員:

  1. 在 Directory Server Console 的最上層 [目錄] 標籤上,在您想要加入新角色定義的樹狀目錄內項目上,按一下滑鼠右鍵,並選取 [新增] > [角色] 項目。
  2. 或者,請選取項目並選取 [物件] 功能表中 [新增] > [角色] 項目。

  3. 在 [建立新角色] 對話方塊中,您必須在 [角色名稱] 欄位中輸入新角色的名稱,您也可以在 [描述] 欄位中加入該角色的選用描述。群組名稱會成為新角色項目的 cn (一般名稱) 屬性值,並顯示其 DN。
  4. 在對話方塊的左清單中按一下 [成員]。在右窗格中,預設值會選取 [管理的角色] 選項按鈕。
  5. 按一下成員清單下的 [加入] 將新的成員加入角色中。顯示一般的 [搜尋使用者和群組] 對話方塊。
  6. 在 [搜尋] 下拉式清單中,選取 [使用者] 並輸入搜尋字串,然後按一下 [搜尋]。按一下 [進階] 按鈕,搜尋特定屬性或特定屬性值。
  7. 請在結果中選取一或多個項目,並按一下 [確定]。重複此步驟加入所有您想加入此管理角色的成員。

  8. 當完成將項目加入角色後,按一下 [確定]。樹狀目錄中顯示的新角色會有受管理角色的圖示,所有成員項目都會具有屬性 nsRoleDN,其值為這個新角色項目的 DN。
  9. 一旦角色建立後,您也可以將此角色指派給任何項目,方法是將 nsRoleDN 屬性加入具有角色項目之 DN 值的項目。

建立篩選的角色

如果項目擁有角色定義中的 LDAP 篩選條件所選取的屬性或屬性值,該項目便是篩選角色的成員。


備註

篩選角色的篩選字串可以用任何屬性為基礎,但是由 CoS 機制所產生的虛擬屬性除外 (參閱關於 CoS)。


若要使用主控台建立篩選的角色並加入成員:

  1. 在 Directory Server Console 的最上層 [目錄] 標籤上,在您想要加入新角色定義的樹狀目錄內項目上,按一下滑鼠右鍵,並選取 [新增] > [角色] 項目。
  2. 或者,請選取項目並選取 [物件] 功能表中 [新增] > [角色] 項目。

  3. 在 [建立新角色] 對話方塊中,您必須在 [角色名稱] 欄位中輸入新角色的名稱,您也可以在 [描述] 欄位中加入該角色的選用描述。角色名稱會成為新角色項目的 cn (一般名稱) 屬性值並出現在其 DN 中。
  4. 在對話方塊的左清單中按一下 [成員],並選取右面板內的 [篩選的角色] 選項按鈕。
  5. 在文字欄位中輸入 LDAP 篩選條件以定義將決定角色成員的篩選條件。或者,按一下 [建構],在指引下完成 LDAP 篩選條件的建構作業。
  6. 如果按一下 [建構],就會出現 [建構 LDAP 篩選器] 對話方塊。略過 [LDAP 伺服器主機]、[連接埠]、[Base DN] 和 [搜尋範圍] 欄位,因為您無法在篩選角色定義中指定它們。
    1. 只搜尋篩選角色中的使用者。這將會把元件 (objectclass=person) 加入篩選條件中。如果您不要這個元件,您必須在 [建立新角色] 對話方塊的文字欄位中編輯 LDAP 篩選條件。
    2. 從 [位置] 下拉式清單中選取一個屬性,並設定對應條件以優化篩選條件。若要加入其他篩選條件,請按一下 [更多]。若要移除不必要的篩選條件,請按一下 [更少]。
    3. 按一下 [確定] 以使用篩選角色定義中的篩選條件。接下來,您可以在文字欄位中編輯篩選條件以修改任何元件。
  7. 按一下 [測試] 以試用您的篩選條件。[篩選測試結果] 對話方塊中將會顯示目前符合您篩選條件的項目。
  8. 按一下 [確定] 建立新的角色項目。新的角色會出現在樹狀目錄中,並具有篩選角色的圖示。

建立巢狀角色

巢狀角色可讓您建立包含其他角色的角色,以及延伸現有角色的範圍。在建立巢狀角色之前,另一個角色必須是存在的。當您建立巢狀角色時,主控台會顯示可以為 巢狀之角色的清單。巢狀角色可包含其他巢狀角色,最多可達 30 層巢狀。超過這個固定限制後,伺服器在評估角色時將會記錄錯誤。

若要使用主控台建立巢狀角色並加入成員:

  1. 在 Directory Server Console 的最上層 [目錄] 標籤上,在您想要加入新角色定義的樹狀目錄內項目上,按一下滑鼠右鍵,並選取 [新增] > [角色] 項目。
  2. 或者,請選取項目並選取 [物件] 功能表中 [新增] > [角色] 項目。

  3. 在 [建立新角色] 對話方塊中,您必須在 [角色名稱] 欄位中輸入新角色的名稱,您也可以在 [描述] 欄位中加入該角色的選用描述。角色名稱會成為新角色項目的 cn (一般名稱) 屬性值並出現在其 DN 中。
  4. 在對話方塊的左清單中按一下 [成員],並選取右面板內的 [巢狀角色] 選項按鈕。
  5. 按一下 [加入] 將現有的角色加入巢狀角色清單中。在出現的 [角色選取器] 中,從可用的角色清單中選取一或多個角色,並按一下 [確定]。
  6. 按一下 [確定] 建立巢狀角色項目。新的角色會出現在目錄中,並具有巢狀角色的圖示。
  7. 若要修改巢狀角色的範圍,請使用巢狀角色定義的範例中所示的指令行程序。

檢視和編輯項目的角色

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示要檢視或編輯其角色的項目。
  2. 以滑鼠右鍵按一下項目,並選取快顯功能表中的 [設定角色]。或者,以滑鼠左鍵按一下項目以選取項目,再選取 [物件] 功能表中的 [設定角色]。
  3. 顯示 [設定角色] 對話方塊。

  4. 選取 [管理的角色] 標籤,以顯示此項目所屬的受管理角色。您可以執行下列動作:
    • 若要加入新的受管理角色,請按一下 [加入],並從 [角色選取器] 視窗中選取可用的角色。在 [角色選取器] 視窗中按一下 [確定]。
    • 若要移除受管理角色,請選取該角色並按一下 [移除]。
    • 若要編輯與項目相關的受管理角色,請在表格中選取角色,再按一下 [編輯]。角色顯示在 [角色] 的自訂編輯器中。對角色執行任何變更,再按一下 [確定] 以儲存新的角色定義。
  5. 選取 [其他角色] 標籤,以檢視此項目所屬的篩選或巢狀角色。若要變更篩選或巢狀角色的角色成員關係,您必須編輯角色定義:
    • 選取角色,再按一下 [編輯],以顯示 [角色] 的自訂編輯器。對角色執行變更,再按一下 [確定] 以儲存新的角色定義。
  6. 完成修改角色後,按一下 [確定] 以儲存變更。

修改角色項目

  1. 在 Directory Server Console 上,選取 [目錄] 標籤。
  2. 在瀏覽樹狀目錄內瀏覽以找到現有角色的定義項目,角色是其建立所在項目的子項。連按兩下角色。
  3. 顯示 [編輯項目] 對話方塊。

  4. 按一下左窗格中的 [一般] 以變更角色名稱和描述。
  5. 按一下左窗格中的 [成員] 可變更管理和巢狀角色的成員,或變更篩選角色的篩選條件。
  6. 按一下 [確定]儲存您的變更。

刪除角色

刪除角色只會刪除角色定義的項目,而不會刪除其成員。

若要刪除角色:

  1. 在 Directory Server Console 上,選取 [目錄] 標籤。
  2. 在瀏覽樹狀目錄內瀏覽以找到角色的定義項目,角色是其建立所在項目的子項。
  3. 以滑鼠右鍵按一下角色並選取 [刪除]。
  4. 顯示對話方塊要求您確認刪除。按一下 [是]。

  5. 顯示 [刪除的項目] 對話方塊,通知您角色已成功刪除。按一下 [確定]。

  6. 備註

    刪除角色只會刪除角色項目,但不會刪除各角色成員的 nsRoleDN 屬性。若要如此執行,請啟用「參考完整性外掛程式」並進行配置以管理 nsRoleDN 屬性。如需詳細資訊,請參閱維護參考完整性


從指令行管理角色

角色是定義在目錄管理員可以透過指令行公用程式存取的項目中。一旦建立好角色,便要指派該角色的成員,方法如下:

所有角色定義都繼承自 LDAPsubentrynsRoleDefinition 物件類別。下表列出其他的物件類別,以及各角色類型特有的相關屬性。

表 5-1 用於定義角色的物件類別與屬性

角色類型

物件類別

屬性

管理的角色

nsSimpleRoleDefinition
nsManagedRoleDefinition

Description (選用)

篩選的角色

nsComplexRoleDefinition
nsFilteredRoleDefinition

nsRoleFilter
Description
(選用)

巢狀角色

nsComplexRoleDefinition
nsNestedRoleDefinition

nsRoleDN
Description
(選用)

受管理角色定義的範例

若要建立將指派給所有行銷人員的角色,請執行下列 ldapmodify 指令:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Marketing,ou=marketing,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:nsRoleDefinition
objectclass:nsSimpleRoleDefinition
objectclass:nsManagedRoleDefinition
cn:Marketing
description:managed role for marketing staff

請注意,nsManagedRoleDefinition 物件類別繼承自 LDAPsubentrynsRoleDefinitionnsSimpleRoleDefinition 物件類別。

利用下列 ldapmodify 指令更新名為 Bob 之行銷人員成員的項目,將角色指派給他:

ldapmodify -h host -p port -D "cn=Directory Manager" -w secret
dn:cn=Bob Arnold,ou=marketing,ou=People,dc=example,dc=com
changetype:modify
add:nsRoleDN
nsRoleDN:cn=Marketing,
ou=marketing,ou=People,dc=example,dc=com

項目中出現 nsRoleDN 屬性,表示該項目是由其角色定義的 DN 所識別之受管理角色的成員。若要允許使用者修改他們自己的 nsRoleDN 屬性,但要防止使用者加入或移除 nsManagedDisabledRole,請加入下列存取控制指令 (ACI):

aci:(targetattr="nsRoleDN")(targattrfilters="add=nsRoleDN:
 (!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)),
 del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,
 dc=com)
")(version3.0;aci "allow mod of nsRoleDN by self except
 for critical values
"; allow(write) userdn="ldap:///self";)

篩選角色定義的範例

若要為業務經理設定篩選的角色,假設他們都有 isManager 屬性,請執行下列 ldapmodify 指令:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=ManagerFilter,ou=sales,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:nsRoleDefinition
objectclass:nsComplexRoleDefinition
objectclass:nsFilteredRoleDefinition
cn:ManagerFilter
nsRoleFilter:(isManager=True)
Description:filtered role for sales managers

請注意,nsFilteredRoleDefinition 物件類別繼承自 LDAPsubentrynsRoleDefinitionnsComplexRoleDefinition 物件類別。nsRoleFilter 屬性指定一個篩選器,可找出 ou=sales 組織中所有有下屬的員工,例如:

ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "ou=People,dc=example,dc=com" -s sub "(cn=*Fuentes)"
dn:cn=Carla Fuentes,ou=sales,ou=People,dc=example,dc=com
cn:Carla Fuentes
isManager:TRUE
...
nsRole:cn=ManagerFilter,ou=sales,ou=People,dc=example,dc=com


備註

篩選角色的篩選字串可以用任何屬性為基礎,但是由 CoS 機制所產生的虛擬屬性除外 (參閱關於 CoS)。


當篩選角色成員為使用者項目時,您可以用存取控制指令 (ACI) 來保護篩選屬性,以限制篩選角色將他自己加入角色或從角色中移除的能力。

巢狀角色定義的範例

使用 nsRoleDN 屬性來指定巢居於巢狀角色內的角色。若要建立一個角色,此角色同時包含在上述幾個範例中所建立的行銷人員和業務經理角色的成員,請使用下列指令:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=MarketingSales,ou=marketing,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:nsRoleDefinition
objectclass:nsComplexRoleDefinition
objectclass:nsNestedRoleDefinition
cn:MarketingSales
nsRoleDN:cn=ManagerFilter,ou=sales,ou=People,dc=example,dc=com
nsRoleDN:cn=Marketing,ou=marketing,ou=People,dc=example,dc=com
nsRoleScopeDN:ou=sales,ou=People,dc=example,dc=com

請注意,nsNestedRoleDefinition 物件類別繼承自 LDAPsubentrynsRoleDefinitionnsComplexRoleDefinition 物件類別。nsRoleDN 屬性包含行銷的受管理角色和業務經理之篩選角色的 DN。上述幾個範例中的兩個使用者 Bob 和 Carla 成為這個新巢狀角色的成員。

此篩選條件的範圍包括預設的範圍 (即篩選條件所在的樹狀子目錄),以及在任何 nsRoleScopeDN 屬性值之下的樹狀子目錄。在此範例中,ManagerFilter 位於 ou=sales,ou=People,dc=example,dc=com 樹狀子目錄中,而且此樹狀子目錄必須加入範圍內。


定義服務類別 (CoS)

服務類別 (CoS) 機制會在為用戶端應用程式擷取項目時,產生虛擬屬性。CoS 簡化了項目管理作業並減少儲存體的需求。

在使用群組和角色時,CoS 會依賴目錄中的說明項目,此外也可以透過主控台或指令行來配置 CoS。下一節描述 CoS,並說明以這兩種方法管理 CoS 的程序。


備註

任何搜尋作業均可測試 CoS 所產生的屬性是否存在或比較其值。虛擬屬性的名稱可以用在任何篩選字串中,不論是用於用戶端搜尋作業或用於篩選角色的內部篩選條件中。Directory Server 也支援 VLV (虛擬清單檢視) 作業和伺服器端排序控制中的虛擬屬性,如同任何真實屬性一般。


關於 CoS

CoS 可為 CoS 範圍內的任何項目定義虛擬屬性及其值,稱為目標項目。每個 CoS 都包含下列目錄中的項目:

CoS 有三種類型,每一種類型會分別與 CoS 定義和範本項目之間不同的互動方式對應:

CoS 定義項目是 cosSuperDefinition 物件類別的實例,並且也繼承自下列其中一個物件類別以指定 CoS 類型:

CoS 定義項目包含每個 CoS 類型特有的屬性,可視需要用於為目標項目內的虛擬 CoS 屬性、範本 DN 和規範屬性命名。依預設值,CoS 機制不會使用與 CoS 屬性相同的名稱覆寫現有屬性的值。但是,CoS definition entry 的語法可讓您控制此行為。

CoS 範本項目是 cosTemplate 物件類別的實例。CoS 範本項目包含 CoS 機制所產生屬性的值,所指定 CoS 的範本項目儲存在與 CoS 定義同一層的樹狀目錄中。

如果可能的話,定義和範本項目應該位於相同的位置以便於管理。同時,您應該使用能表示其功能的名稱為它們命名。例如,定義項目 DN,如 cn=ClCosGenerateEmployeeType,ou=People,dc=example,dc=com 就比 cn=ClassicCos1,ou=People,dc=example,dc=com 更具描述性。

Directory Server Deployment Planning Guide 更詳細描述每個 CoS 類型,並提供範例和部署考量。如需關於物件類別和與各 CoS 類型相關屬性的詳細資訊,請參閱從指令行管理 CoS

CoS 限制

CoS 定義和範例項目的建立與管理,需符合下列限制:關於部署 CoS 虛擬屬性進一步限制的說明,請參閱 Directory Server Deployment Planning Guide

無法為與 CoS 所產生屬性有關的搜尋編製索引。任何搜尋篩選條件可能會測試虛擬屬性是否存在或比較它的值。但是, 系統無法為虛擬屬性編製索引,且任何與 CoS 所產生屬性相關的篩選條件元件均會導致無法索引的搜尋,這對效能有很大的影響。請注意,Directory Server 5.2 引進雜湊表,以超過十種典型的 CoS 範本項目,加速在結構上的搜尋。預設為啟用此 facility。如需關於如何停用此 facility 的資訊,請參閱 Directory Server Administration Reference

受限制的樹狀子目錄。您無法在 cn=configcn=schema 樹狀子目錄中建立 CoS 定義。因此,這些項目不會包含虛擬屬性。

受限制的屬性類型。您不可以用 CoS 機制產生下列屬性類型,因為它們不會擁有與相同名稱之真實屬性一樣的行為:

不支援屬性子類型。 CoS 機制不會產生含子類型 (如語言或 ;binary) 的屬性。

真實和虛擬的屬性值。CoS 機制永遠不會產生多重值屬性,此屬性同時含有項目中所定義的「真實」屬性值,以及 CoS 範本所定義的「虛擬」屬性值。屬性值可以是儲存在項目中的值,或是 CoS 機制所產生的值,如覆寫真實屬性值多重值 CoS 屬性中所描述。

所有範本都必須在本機上。 範本項目的 DN,不論是在 CoS 定義或目標項目的規範中,都必須參照目錄伺服器中的本機項目。它們所包含的範本和值,無法透過目錄鏈接或參照來擷取。

使用主控台管理 CoS

本節描述如何透過 Directory Server Console 建立和編輯 CoS 定義。

此外,如果您的 CoS 值需要安全性,您應該為 CoS 定義、範本項目、與目標項目中的規範屬性定義存取控制指令 (ACI)。如需 CoS 安全性考量的資訊,請參閱 Directory Server Deployment Planning Guide,如需使用主控台建立 ACI 的程序,請參閱第 6 章「管理存取控制」

建立新的 CoS

使用指標 CoS 和典型 CoS 時,在定義項目之前您必須先建立範本項目:

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,在樹狀目錄內您想要加入新範本項目的項目上,按一下滑鼠右鍵,並選取 [新增] > [其他] 項目。
  2. 或者,選取父項,再從 [物件] 選單中選取 [新增] > [其他] 項目。

  3. 在 [新物件] 對話方塊中,選取物件類別清單中的 costemplate。開啟 [標準編輯器] 對話方塊,顯示新範本中特定屬性的預設值。
  4. 依照下列方式編輯新範本物件:
    1. LDAPsubentryextensibleobject 值加入 objectclass 屬性。
    2. 加入 cn 屬性,並指定可識別範本的值,例如 cosTemplateForHeadquartersFax
    3. 將命名屬性變更為新的 cn 屬性。
    4. 您可以加入其他任何屬性,並改用它作為命名屬性,但一般都使用 cn

    5. 修改 cosPriority 屬性:將它設定成整數值,或移除優先權屬性 (如果不再需要的話)。如需詳細資訊,請參閱 Cos 屬性優先權
    6. 加入您希望用 CoS 機制在目標項目上產生的屬性及其屬性值。
  5. 在 [標準編輯器] 對話方塊中按一下 [確定] 以建立範本項目。
  6. 如您正在定義此範本的指標 CoS,請選取樹狀目錄中的新範本項目,然後選取功能表中的 [編輯] > [複製 DN]。

CoS 所有類型建立定義項目的程序均相同:

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,在樹狀目錄內您想要加入新 CoS 定義的項目上,按一下滑鼠右鍵,並選取快顯功能表上的 [新增] > [服務類別] 項目。
  2. 或者,選取父項,再從 [物件] 選單中選取 [新增] > [服務類別] 項目。

    顯示 [服務類別] 項目的自訂編輯器。

  3. 為新的服務類別輸入名稱和選用描述。該名稱將顯示在 CoS 定義項目的 cn 命名屬性中。
  4. 按一下左清單中的 [屬性] 標籤,對話方塊會顯示將由 CoS 機制在目標項目上產生的屬性清單。
  5. 按一下 [加入] 瀏覽可能屬性的清單,並將它們加入清單中。

  6. 一旦您將屬性加入清單後,[服務類別行為] 欄中會有一個下拉式清單。按一下這個儲存格以選取覆寫行為:
    • 不要覆寫目標項目屬性 - 只有當目標項目的相同屬性中已經沒有儲存對應的屬性值時,才會產生 CoS 屬性值。
    • 覆寫目標項目屬性 - 由 CoS 所產生的屬性值將覆寫目標項目中屬性的任何值。
    • 覆寫目標項目屬性,而且可操作 - 屬性會覆寫任何目標值且操作正常,因此除非明確地要求,否則此屬性對用戶端應用程式而言是隱藏的。

    • 備註

      如果在模式中也將屬性定義為操作性,您就只能讓屬性成為操作性。


  7. 合併欄含有合併結構的核取方塊。選擇此核取方塊,允許此 CoS 屬性與相同屬性的其他 CoS 值合併。但是,CoS 屬性永遠都不會與現有值合併,它不是取代現有值,就是根據前一欄的定義而不產生。
  8. 按一下左清單中的 [範本] 標籤,選取識別範本項目的方式,然後填寫對應的欄位。這將決定您希望定義的 CoS 類型。
    • 依 DN - 此選項將定義指標 CoS:在 [範本 DN] 欄位中輸入範本項目的 DN。按一下 [瀏覽] 從目錄中選取範本 DN,或按 Ctrl-V 貼上您在建立範本項目後所複製的 DN。
    • 使用其中一個目標項目屬性的值 - 此選項將定義間接的 CoS:在 [屬性名稱] 欄位中輸入規範屬性的名稱,一定要選取含 DN 值的屬性。按一下 [變更] 選取清單中的屬性。
    • 使用其中一個目標項目屬性的 DN 和值 - 此選項將定義典型的 CoS:輸入範本的 Base DN 和屬性名稱。按一下 [瀏覽] 選取可能目標項目的父項目,並按一下 [變更] 選取清單中的屬性。
  9. 按一下 [確定] 建立 CoS 定義項目。

編輯現有的 CoS

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,連按兩下 CoS 定義項目,或在 CoS 定義項目上按一下滑鼠右鍵,再從快顯功能表中選取 [用自訂編輯器編輯]。
  2. 顯示 [服務類別] 項目的自訂編輯器。

  3. 依需要編輯名稱和描述欄位。
  4. 按一下左清單中的 [屬性] 標籤,以新增或移除由 CoS 機制產生的虛擬屬性。
  5. 按一下左清單中的 [範本] 標籤,重新定義範本規範屬性的名稱或範本項目 DN。這個對話方塊也可以用來重新定義 CoS 定義的類型。
  6. 按一下 [確定]儲存您的變更。

刪除 CoS

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示 CoS 定義項目。
  2. 在 CoS 項目上按一下滑鼠右鍵,並從快顯功能表中選取 [刪除]。顯示對話方塊要求您確認刪除。按一下 [是]。

從指令行管理 CoS

由於所有配置資訊和範本資料都儲存成目錄中的項目,因此您可以使用 LDAP 指令行工具來配置及管理您的 CoS 定義。本節將示範如何從指令行建立 CoS 定義和範本項目。

此外,如果您的 CoS 值需要安全性,您應該為 CoS 定義、範本項目、與目標項目中的規範屬性定義存取控制指令 (ACI)。如需 CoS 安全性考量的資訊,請參閱 Directory Server Deployment Planning Guide,如需使用指令行建立 ACI 的程序,請參閱第 6 章「管理存取控制」

從指令行建立 CoS 定義項目

所有 CoS 定義項目都有 LDAPsubentry 物件類別,而且繼承自 cosSuperDefinition 物件類別。此外,每一個 CoS 類型均繼承自特定的物件類別,且包含對應的屬性。下表列出與每一類 CoS 定義項目相關的物件類別和屬性:

表 5-2 CoS 定義項目中的物件類別與屬性 

CoS 類型

CoS 定義項目

指標 CoS

objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosPointerDefinition
cosTemplateDN:
DN
cosAttribute:attributeName override merge

間接 CoS

objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosIndirectDefinition
cosIndirectSpecifier:
attributeName
cosAttribute:attributeName override merge

典型 CoS

objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosClassicDefinition
cosTemplateDN:
DN
cosSpecifier: attributeName
cosAttribute:attributeName override merge

在所有情況中,cosAttribute 都是多重值,每個值各定義一個即將由 CoS 機制產生的屬性。

您可以使用下列 CoS 定義項目中的屬性 (如需關於這些屬性的詳細資訊,請參閱 Directory Server Administration Reference

表 5-3 CoS 定義項目屬性 

屬性

CoS 定義項目的目的

cosAttribute:
 attributeName override merge

定義您要產生屬性值之虛擬屬性的名稱。這個屬性有多重值,每個值分別代表其屬性值是由範本產生之屬性的名稱。overridemerge 辨識符號指定在下表所述的特殊案例中計算 CoS 屬性值的方式。

attributeName 不可包含任何子類型。有子類型的屬性名稱會被忽略,但仍會處理 cosAttribute 的其他值。

cosIndirectSpecifier:
 
attributeName

定義目標項目中屬性的名稱,間接 CoS 會使用此屬性值來識別範本項目。命名的屬性稱為規範,且必須在每個目標項目中包含完整的 DN 字串。此屬性為單值,但是規範屬性可以是多值以指定多個範本。

cosSpecifier:
 
attributeName

定義目標項目中屬性的名稱,典型 CoS 會使用此屬性值來識別範本項目。命名的屬性稱為規範,且必須包含可以在 RDN 範本項目中找到的字串。此屬性為單值,但是規範屬性可以是多值以指定多個範本。

cosTemplateDN:
 
DN

請在指標 CoS 定義中輸入範本項目的完整 DN,或在典型 CoS 定義中輸入範本項目的 Base DN。

cosAttribute 屬性允許在 CoS 屬性的名稱後加上兩個辨識符號。override 辨識符號具有下列其中一個值:

下列的值可以包含或不包含 merge 辨識符號:

覆寫真實屬性值

您可以建立含有 override 辨識符號的 CoS 定義項目,方法如下:

dn:cn=pointerCoS,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosPointerDefinition
cosTemplateDn:cn=exampleUS,cn=data
cosAttribute:postalCode override

此指標 CoS 定義項目表示該項目與產生 postalCode 屬性值的範本項目 cn=exampleUS, cn=data 有關聯。覆寫辨識符號表示此值的優先權高於 postalCode 屬性的值 (如果目標項目中有此屬性值的話)。


備註

如果 CoS 屬性是用操作性或覆寫辨識符號來定義的,則您將無法在 CoS 範圍內任何項目中,對該屬性的「真實」值執行寫入作業。


多重值 CoS 屬性

當您指定 merge-schemes 辨識符號時,所產生的 CoS 屬性可能是多重值屬性。CoS 屬性成為多重值的方式有兩種:

這兩種情況可能同時發生,並且甚至定義更多的值。但是在所有的情況中,產生屬性中的重複值將只會傳回一次。

當沒有 merge-schemes 辨識符號時,系統會使用範本項目的 cosPriority 屬性來決定產生屬性之所有範本中的單值,如下一節所描述。

merge-schemes 辨識符號時絕不會將目標中所定義的「真實」屬性值,與範本所產生的屬性值合併。merge 辨識符號與 override 辨識符號無關,所有組合都有可能,並且允許每種組合所默許的行為。同時,您可以在屬性名稱後以任何順序指定辨識符號。


備註

當同一屬性有多個 CoS 定義時,這些定義必須均擁有相同的 overridemerge 辨識符號。當 CoS 定義中出現不同的辨識符號組時,系統會在所有定義中隨意選取其中一個組合。


Cos 屬性優先權

如果有多個 CoS 定義或多重值規範,但沒有 merge-schemes 辨識符號,則 Directory Server 會使用優先權屬性選取定義虛擬屬性單值的單一範本。

cosPriority 屬性代表在所有考慮範本中特定範本的全域優先權。優先權為零代表最高優先權。沒有 cosPriority 屬性的範本則視為最低優先權。當有兩個或以上的範本提供屬性值但卻擁有相同 (或沒有) 優先權時,系統會任意選取一個值。

當使用 merge-schemes 辨識符號時,並不會考慮範本的優先權。當合併時,不論範本定義的優先權為何,所有考慮的範本皆會定義一個值。cosPriority 屬性是在 CoS 範本項目中定義,如下一節所描述。


備註

cosPriority 屬性值必定不為負值。而且,由間接 CoS 所產生的屬性不支援優先權。請勿在間接 CoS 定義的範本項目中使用 cosPriority


從指令行建立 CoS 範本項目

使用指標 CoS 或典型 CoS 時,範本項目會包含 LDAPsubentrycosTemplate 物件類別。必須特別為 CoS 定義建立這個項目。將 CoS 範本項目設定成 LDAPsubentry 物件類別的實例,可允許執行一般的搜尋,而不受配置項目的阻止。

間接 CoS 機制的範本是目錄中現有的任意項目。目標不須預先識別,也不須指定 LDAPsubentry 物件類別,但它必須擁有輔助的 cosTemplate 物件類別。只有在評估 CoS 以產生虛擬屬性及屬性值時,才存取間接 CoS 範本。

不論在什麼情況下,CoS 範本項目都必須含有 CoS 在目標項目中所產生的屬性與屬性值。其屬性名稱是在 CoS 定義項目的 cosAttribute 屬性中指定。

下列範例顯示會產生 postalCode 屬性的指標 CoS 最高優先權的範本項目:

dn:cn=ZipTemplate,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:extensibleobject
objectclass:cosTemplate
postalCode: 95054
cosPriority: 0

下一節提供範本項目的範例,以及每一種 CoS 定義項目類型的範例。

指標 CoS 的範例

下列指令會建立含有 cosPointerDefinition 物件類別的指標 CoS 定義項目。此定義項目使用以上指定的 CoS 範本項目,以便與 ou=People,dc=example,dc=com 樹狀目錄中的所有項目共用一般郵遞區號。

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=pointerCoS,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosPointerDefinition
cosTemplateDn:cn=ZipTemplate,ou=People,dc=example,dc=com
cosAttribute:postalCode

CoS 範本項目 (cn=ZipTemplate,ou=People,dc=example,dc=com) 將儲存在它的 postalCode 屬性中的值提供給 ou=People,dc=example,dc=com 尾碼下的所有項目。如果在同一樹狀子目錄中搜尋任何沒有郵遞區號的項目,您就會看到產生的屬性值:

ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)"
dn:cn=Babs Jensen,ou=People,dc=example,dc=com
cn:Babs Jensen
...
postalCode: 95054

間接 CoS 的範例

間接 CoS 為 cosIndirectSpecifier 屬性中的值命名,以找出每個目標特定的範本。這個間接 CoS 使用目標項目的 manager 屬性來識別 CoS 範本項目。範本項目是管理員的使用者項目,而且它必須包含要產生的屬性值。

下列指令建立包含 cosIndirectDefinition 物件類別的間接 CoS 定義項目:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=generateDeptNum,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosIndirectDefinition
cosIndirectSpecifier:manager
cosAttribute:departmentNumber

接下來,將 cosTemplate 物件類別加入範本項目,並確定它們定義了即將產生的屬性。在此範例中,所有管理員項目都將是範本:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Carla Fuentes,ou=People,dc=example,dc=com
changetype:modify
add:objectclass
objectclass:cosTemplate
-
add:departmentNumber
departmentNumber: 318842

使用此 CoS 時,包含 manager 屬性的目標項目 (ou=People,dc=example,dc=com 下的項目) 會自動具有其管理員的部門編號。departmentNumber 屬性在目標屬性上是虛擬的,因為它不存在於伺服器中,但它會作為目錄項目的一部分傳回。例如,如果 Babs Jensen 的管理員定義為 Carla Fuentes,則他的部門編號將是:

ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)"
dn:cn=Babs Jensen,ou=People,dc=example,dc=com
cn:Babs Jensen
...
manager:cn=Carla Fuentes,ou=People,dc=example,dc=com
departmentNumber: 318842

典型 CoS 的範例

此範例顯示如何用典型 CoS 產生郵遞區號。產生的值由範本項目指定,該項目是結合 CoS 定義中的 cosTemplateDN 和目標項目中 cosSpecifier 屬性的值。下列指令使用 cosClassicDefinition 物件類別建立定義項目:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=classicCoS,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosClassicDefinition
cosTemplateDn:ou=People,dc=example,dc=com
cosSpecifier:building
cosAttribute:postalAddress

繼續使用同一個指令,建立範本項目,來為每棟建築指定郵遞區號:

dn:cn=B07,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:extensibleobject
objectclass:cosTemplate
postalAddres:7 Old Oak Street$Anytown, CA 95054

使用此 CoS 時,包含 building 屬性的目標項目 (ou=People,dc=example, dc=com 下的項目) 會自動具有對應的郵遞區號。CoS 機制會搜尋其 RDN 中具有規範屬性值的範本項目。在此範例中,如果 Babs Jensen 被指派到 B07 大樓,則他的郵寄地址會產生如下:

ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)"
dn:cn=Babs Jensen,ou=People,dc=example,dc=com
cn:Babs Jensen
...
building:B07
postalAddress:7 Old Oak Street$Anytown, CA 95054

建立以角色為基礎的屬性

您可以根據項目所擁有的角色,建立會產生項目屬性值的典型 CoS 結構。例如,您可以使用以角色為基礎的屬性,逐項目設定伺服器的透視限制。

若要建立以角色為基礎的屬性,請使用 nsRole 屬性作為典型 CoS 之 CoS 定義項目中的 cosSpecifier。因為 nsRole 屬性可以有多重值,所以您可以定義擁有一個以上可能範本項目的 CoS 結構。為解決範本項目使用時模稜兩可的情況,您可以在 CoS 範本項目中加入 cosPriority 屬性。

例如,您可以建立允許管理員角色成員的 CoS,以超出標準郵件信箱的額度限制。管理員角色如下所示:

dn:cn=ManagerRole,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:nsRoleDefinition
objectclass:nsComplexRoleDefinition
objectclass:nsFilteredRoleDefinition
cn:ManagerRole
nsRoleFilter:(isManager=True)
Description:filtered role for managers

典型 CoS 定義項目將以下列方式建立:

dn:cn=generateManagerQuota,ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:cosSuperDefinition
objectclass:cosClassicDefinition
cosTemplateDn:cn=managerCOS,ou=People,dc=example,dc=com
cosSpecifier:nsRole
cosAttribute:mailboxquota override

CoS 範本名稱必須結合 cosTemplateDnnsRole (這是角色的 DN) 的值。例如:

dn:cn="cn=ManagerRole,ou=People,dc=example,dc=com",cn=managerCOS,
 ou=People,dc=example,dc=com
objectclass:top
objectclass:LDAPsubentry
objectclass:extensibleobject
objectclass:cosTemplate
mailboxquota: 1000000

CoS 範本項目提供 mailboxquota 屬性值。其他的 override 辨識符號會告訴 CoS 覆寫目標項目中任何現有的 mailboxquota 屬性。目標項目若是角色的成員,將擁有由角色以及由 CoS 產生的虛擬屬性,例如:

ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "ou=People,dc=example,dc=com" -s sub "(cn=*Fuentes)"
dn:cn=Carla Fuentes,ou=People,dc=example,dc=com
cn:Carla Fuentes
isManager:TRUE
...
nsRole:cn=ManagerRole,ou=People,dc=example,dc=com
mailboxquota: 1000000


備註

角色項目和 CoS 定義項目應該位在樹狀目錄中的同一位置上,如此它們在其範圍內才會有相同的目標項目。CoS 目標項目也應該位在相同的位置,以方便尋找和維護。


監視 CoS 外掛程式

Directory Server 5.2 可讓您監視 CoS 外掛程式的特定方面。CoS 監視屬性保留在 cn=monitor,cn=Class of Service,cn=plugins,cn=config 項目之下。如需關於這些屬性以及他們所提供資訊的詳細資料,請參閱 Directory Server Administration Reference



上一頁      目錄      索引      下一頁     


文件號碼 819-2014。   Copyright 2005 Sun Microsystems, Inc. 版權所有。