Sun Java System Directory Server Enterprise Edition 6.0 管理指南

管理角色

角色是設計供應用程式的使用更加有效且更容易的替代群組機制。雖然角色以類似群組的方式定義與管理,但是每個成員項目所產生的角色屬性會自動表示項目的角色。例如,應用程式可以讀取項目的角色,而不是選取群組並瀏覽成員清單。

角色的範圍預設會限制在所定義範圍的子樹狀結構內。但是,您可以延伸巢式角色的範圍。您可以允許範圍延伸到位於其他子樹狀結構的巢式角色以及包含目錄中任意位置的成員。如需詳細資訊,請參閱延伸角色的範圍巢式角色定義的範例

本節說明如何安全地使用角色,以及如何從指令行管理角色。

安全地使用角色

若要安全地使用角色,必須將存取控制指令 (ACI) 設為保護適當的屬性。例如,使用者 A 擁有管理角色 MR。管理角色相當於靜態群組,經由將 nsRoleDN 屬性增加至項目,明確地指定角色給每個成員項目。已透過指令行使用帳號停用鎖定 MR 角色。亦即,由於該使用者的 nsAccountLock 屬性經運算為 true,因此使用者 A 無法連結至伺服器。但是,假設使用者已連結,並知悉其已因 MR 角色而處於鎖定狀態。如果不存在 ACI 以防止使用者具備寫入存取 nsRoleDN 屬性,使用者可以從其本身的項目移除 nsRoleDN 屬性,並解除鎖定。

若要避免使用者移除 nsRoleDN 屬性,必須套用 ACI。針對篩選的角色,您必須保護能避免使用者修改屬性以放棄篩選的角色之篩選部分。應禁止使用者增加、刪除或修改篩選的角色所用之屬性。同理,如果已運算篩選的屬性值,可以修改篩選的屬性值之所有屬性皆須受到保護。由於巢式角色包含篩選與管理的角色,應針對巢式角色中所含的各角色考量以上幾點。

如需設定安全性 ACI 的詳細指示,請參閱第 6 章, 目錄伺服器存取控制

從指令行管理角色

角色會在 Directory Administrator 可以透過指令行公用程式存取的項目中定義。建立角色之後,可以依下列方式指定成員給角色:

所有角色定義繼承自 LDAPsubentrynsRoleDefinition 物件類別。下列範例顯示各種角色類型特定的其他物件類別與相關屬性。

管理角色定義的範例

若要建立所有行銷人員的角色,請使用下列 ldapmodify 指令:


$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
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 物件類別。

依下列方式更新名為 Bob 的行銷人員項目,以指定角色:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
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 host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
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 物件類別繼承自 LDAPsubentrynsRoleDefinition nsComplexRoleDefinition 物件類別。nsRoleFilter 屬性會指定尋找 ou=sales 機構中有下屬的所有員工之篩選器,例如:


$ ldapsearch -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \
 -b "ou=People,dc=example,dc=com" -s sub "(cn=*Fuentes)"
dn: cn=Carla Fuentes,ou=sales,ou=People,dc=example,dc=comcn: Carla Fuentes 
isManager: TRUE...
nsRole: cn=ManagerFilter,ou=sales,ou=People,
dc=example,dc=com

備註 –

篩選角色的篩選字串可以根據任何屬性,CoS 機制產生的運算屬性除外。


當篩選的角色成員為使用者項目時,您可以選擇限制成員增加或移除角色成員的能力。使用 ACI 保護篩選的屬性。

巢式角色定義的範例

位於巢式角色內的角色可使用 nsRoleDN 屬性加以指定。使用下列指令可建立包含上一個範例中所建立的行銷人員與行銷經理角色成員之角色:


$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
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 子樹狀結構中。此子樹狀結構必須增加至範圍。

延伸角色的範圍

目錄伺服器提供允許角色的範圍延伸到角色定義項目以外的子樹狀結構之屬性。此單值屬性 nsRoleScopeDN 包含要增加至現有角色的範圍 DN。nsRoleScopeDN 屬性僅能增加至巢式角色。請參閱巢式角色定義的範例

Procedure延伸角色的範圍

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

nsRoleScopeDN 屬性可讓您延伸某個子樹狀結構中的角色範圍,以包含其他子樹狀結構的項目。例如,請想像 example.com 目錄樹狀結構中有兩個主要的子樹狀結構:o=eng,dc=example,dc=com (工程部門子樹狀結構) 與 o=sales,dc=example,dc=com (行銷部門子樹狀結構)。在工程部門子樹狀結構中,有某個使用者需要存取行銷部門子樹狀結構中的角色 (SalesAppManagedRole) 所管理之行銷部門應用程式。若要延伸角色範圍,請執行下列作業:

  1. 在工程部門子樹狀結構中建立使用者的角色。

    例如,建立角色 EngineerManagedRole。此範例使用管理的角色,不過也有可能是篩選的角色或巢式角色。

  2. 例如,在行銷部門子樹狀結構中建立巢式角色 SalesAppPlusEngNestedRole,以裝載新建立的 EngineerManagedRole 與初始 SalesAppManagedRole

  3. 使用要增加的工程部門子樹狀結構範圍 DN,將 nsRoleScopeDN 屬性增加至 SalesAppPlusEngNestedRole, 在此例中為 o=eng,dc=example,dc=com

    工程部門的使用者必須具備必要的權限,才能存取 SalesAppPlusEngNestedRole 角色,進而使用行銷部門的應用程式。此外還必須複寫整個角色範圍。


    備註 –

    對巢式角色延伸範圍的限制,表示之前是某一個網域中管理角色的管理員,僅有權使用已在另一個網域存在的角色。管理員無法在另一個網域中建立任意的角色。