역할은 디렉토리 어드민 관리자가 명령줄 유틸리티를 통해 액세스할 수 있는 항목에 정의됩니다. 역할을 만들고 나면 다음과 같이 구성원을 역할에 지정합니다.
관리된 역할의 구성원에는 해당 항목의 nsRoleDN 속성이 있습니다.
필터링된 역할의 구성원은 nsRoleFilter 속성에 지정된 필터와 일치하는 항목입니다.
중첩된 역할의 구성원은 중첩된 역할 정의 항목의 nsRoleDN 속성에 지정된 역할의 구성원입니다.
모든 역할 정의는 LDAPsubentry 및 nsRoleDefinition 객체 클래스로부터 상속됩니다. 아래 예에서는 역할 유형별 추가 객체 클래스 및 관련 속성을 보여줍니다.
모든 마케팅 직원에 대한 역할을 만들려면 다음 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 객체 클래스는 LDAPsubentry, nsRoleDefinition 및 nsSimpleRoleDefinition 객체 클래스로부터 상속됩니다.
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 객체 클래스는 LDAPsubentry, nsRoleDefinition, 및 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 객체 클래스는 LDAPsubentry, nsRoleDefinition 및 nsComplexRoleDefinition 객체 클래스로부터 상속됩니다. nsRoleDN 속성에는 마케팅 관리된 역할과 영업 책임자 필터링된 역할의 DN이 포함됩니다. 앞의 예에서 설정된 두 사용자 Bob과 Carla는 새 중첩된 역할의 구성원이 됩니다.
이 필터의 범위에는 필터가 있는 하위 트리와 nsRoleScopeDN 속성 값 아래의 하위 트리로 구성된 기본 범위가 포함됩니다. 이 경우 ManagerFilter는 ou=sales,ou=People,dc=example,dc=com 하위 트리에 있습니다. 이 하위 트리를 범위에 추가해야 합니다.