|
|
| Sun ONE Directory Server 관리 설명서 |
디렉토리의 계층적 데이터 구조에 제한 받지 않고 자유롭게 사용자 항목을 관리하기 위해 그룹을 작성하여 공통 속성 값을 공유해야 하는 경우가 있습니다. Sun ONE Directory Server는 그룹, 역할 및 서비스 클래스(CoS)를 통해 이러한 고급 항목 관리 기능을 제공합니다.
그룹은 구성원 목록이나 구성원 필터로 다른 항목의 이름을 지정하는 항목입니다. 역할도 특정 역할의 각 구성원에 nsrole 속성을 생성하는 메커니즘을 통해 동일한 기능을 제공하지만, 훨씬 더 기능이 다양합니다. CoS는 가상 속성을 생성함으로써 각 항목에 속성 값을 저장할 필요 없이 여러 항목이 공통 속성 값을 공유할 수 있게 합니다.
역할과 서비스 클래스에서 제공하는 기능을 최대한 활용하기 위해 디렉토리 토폴로지는 디렉토리 배포의 계획 단계에서 결정하는 것이 가장 바람직합니다. 이러한 메커니즘 및 각 메커니즘이 어떻게 토폴로지를 간소화할 수 있는지에 대한 자세한 내용은 Sun ONE Directory Server Deployment Guide의 Chapter 4, "Designing the Directory Tree"를 참조하십시오.
이 장은 다음 내용으로 구성되어 있습니다.
그룹 관리
그룹은 ACI 정의와 같은 관리 작업의 편의를 위해 항목을 연결하는 메커니즘입니다. 그룹 정의는 해당 구성원의 이름을 정적 목록으로 지정하거나 동적 항목 집합을 정의하는 필터를 제공하는 특수 항목입니다. 해당 역할을 정의하는 절차는 "역할 할당"을 참조하십시오.
그룹 정의 항목이 저장된 위치에 관계 없이 전체 디렉토리가 그룹 구성원이 될 수 있습니다.
관리를 간소화하기 위해 모든 그룹 정의 항목은 대체로 한 위치(루트 접미사 아래의 ou=Groups)에 저장됩니다.정적 그룹을 정의하는 항목은 groupOfUniqueNames 개체 클래스로부터 상속됩니다. 그룹 구성원은 uniqueMember 속성의 여러 값으로 지정된 해당 DN으로 열거됩니다.
동적 그룹을 정의하는 항목은 groupOfUniqueNames 및 groupOfURLs 개체 클래스로부터 상속됩니다. 그룹 구성원은 여러 값을 갖는 memberURL 속성에 지정된 하나 이상의 필터로 정의됩니다. 동적 그룹의 구성원은 각각의 평가에서 필터 중 하나에 일치하는 항목입니다.
다음 절에서는 콘솔을 사용하여 정적 그룹과 동적 그룹을 작성 및 수정하는 방법에 대해 설명합니다.
새 정적 그룹 추가
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 그룹을 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 "새로 만들기 > 그룹" 항목을 선택합니다.
또는 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 그룹" 항목을 선택합니다.
- "새 그룹 만들기" 대화 상자에서 "그룹 이름" 필드에 새 그룹의 이름을 입력해야 하며, 선택 사항으로 "설명" 필드에 그룹에 대한 설명을 추가할 수 있습니다. 그룹 이름은 새 그룹 항목의 cn(일반 이름) 속성 값이 되며 해당 DN에 표시됩니다.
- 대화 상자의 왼쪽 목록에서 "구성원"을 누릅니다. 오른쪽 패널에는 기본적으로 "정적 그룹" 탭이 선택되어 있습니다.
- "추가"를 눌러 새 구성원을 그룹에 추가합니다. 표준 "사용자 및 그룹 검색" 대화 상자가 표시됩니다.
- "검색" 드롭다운 목록에서 "사용자"를 선택하고 검색할 문자열을 입력한 다음 "검색"을 누릅니다. 특정 속성이나 특정 속성 값을 검색하려면 "고급" 버튼을 누릅니다.
결과로 표시된 항목을 하나 이상 선택하고 "확인"을 누릅니다. 이 단계를 반복하여 원하는 모든 구성원을 이 정적 그룹에 추가합니다.
주 정적 그룹 구성원은 원격으로 연결될 수도 있습니다. 참조 무결성 플러그 인을 사용하여 삭제된 구성원 항목이 정적 그룹 항목에서 자동으로 삭제되도록 설정할 수 있습니다. 연결에서 참조 무결성을 사용하는 방법은 "연결 정책 구성"을 참조하십시오.
- 다른 언어로 작성된 이름과 설명 문자열을 그룹에 제공하려면 왼쪽 목록에서 "언어"를 누릅니다. 이러한 문자열은 콘솔에서 해당 로켈을 사용할 때 표시됩니다.
- "확인"을 눌러 새 그룹을 작성합니다. 새 그룹은 그룹이 작성된 위치에 해당하는 항목의 자식 중 하나로 표시됩니다.
새 동적 그룹 추가
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 그룹을 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 "새로 만들기 > 그룹" 항목을 선택합니다.
또는 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 그룹" 항목을 선택합니다.
- "새 그룹 만들기" 대화 상자에서 "그룹 이름" 필드에 새 그룹의 이름을 입력해야 하며, 선택 사항으로 "설명" 필드에 그룹에 대한 설명을 추가할 수 있습니다. 그룹 이름은 새 그룹 항목의 cn(일반 이름) 속성 값이 되며 해당 DN에 표시됩니다.
- 대화 상자의 왼쪽 목록에서 "구성원"을 누르고 오른쪽 패널에서 "동적 그룹" 탭을 선택합니다.
- "추가"를 눌러 그룹 구성원을 정의할 필터 문자열이 있는 LDAP URL을 작성합니다. 표준 "LDAP URL 생성 및 테스트" 대화 상자가 표시됩니다.
- 텍스트 필드에 LDAP URL을 입력하거나 "구성"을 선택하여 그룹용 필터가 있는 LDAP URL의 구성을 도와줄 대화 상자를 표시합니다. "테스트"를 눌러 이 필터에서 반환되는 항목 목록을 확인합니다.
URL이 구성되면 "확인"을 누릅니다. 이 단계를 반복하여 동적 그룹 정의 필터가 있는 모든 URL을 추가합니다.
- 다른 언어로 작성된 이름과 설명 문자열을 그룹에 제공하려면 왼쪽 목록에서 "언어"를 누릅니다. 이러한 문자열은 콘솔에서 해당 로켈을 사용할 때 표시됩니다.
- "확인"을 눌러 새 그룹을 작성합니다. 새 그룹은 그룹이 작성된 위치에 해당하는 항목의 자식 중 하나로 표시됩니다.
그룹 정의 수정
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 수정할 그룹이 소속된 항목을 두 번 누릅니다.
또는 항목을 선택하고 "개체" 메뉴에서 "열기"를 선택합니다.
- "항목 편집" 대화 상자에서 "일반", "구성원" 또는 "언어" 범주에 있는 그룹 정보를 원하는 대로 수정합니다. 정적 그룹의 구성원을 추가 또는 제거하거나 동적 그룹용 필터가 있는 URL을 추가, 편집 또는 제거할 수 있습니다.
- 그룹 정의 수정이 끝나면 "확인"을 누릅니다.
콘솔에서 변경 사항을 확인하려면 "보기" 메뉴에서 "갱신"을 선택합니다.
그룹 정의 제거
그룹을 정의하는 항목을 삭제하면 어떤 유형의 그룹이든 제거할 수 있습니다.
역할 할당
역할은 응용 프로그램에서 보다 편리하고 효율적으로 사용할 수 있도록 설계된 대체 그룹 메커니즘입니다. 역할은 그룹과 유사하게 정의 및 관리되지만 구성원 항목에도 참여하는 역할을 나타내는 생성된 속성이 있습니다. 예를 들어, 응용 프로그램은 그룹을 선택하여 구성원 목록을 탐색할 필요 없이 간단하게 항목의 역할을 읽을 수 있습니다.
기본적으로 역할 범위는 정의된 하위 트리로 제한됩니다. Sun ONE Directory Server 5.2에서는 중첩된 역할의 확장 범위를 지원하므로 다른 하위 트리에 있는 역할을 중첩하고 디렉토리의 어느 곳이든 구성원을 가질 수 있습니다.
역할
각각의 역할에는 해당 역할을 소유하는 항목인 구성원이 있습니다. 디렉토리에서 항목이 검색되면 역할 메커니즘은 역할의 구성원인 모든 항목에 자동으로 nsRole 속성을 생성합니다. 여러 값을 갖는 이 속성에는 해당 항목이 구성원으로 속해 있는 모든 역할 정의 DN이 포함됩니다. nsRole 속성은 항목에 저장되지 않고 작업 결과의 일반 속성으로 클라이언트 응용 프로그램에 반환되는 계산된 속성입니다.
Sun ONE Directory Server는 다음 세 가지 유형의 역할을 지원합니다.
- 관리된 역할 - 관리자가 원하는 구성원 항목에 nsRoleDN 속성을 추가하여 관리된 역할을 할당합니다. 이 속성 값은 역할 정의 항목의 DN입니다. 관리된 역할은 구성원이 역할 정의 항목이 아닌 각 항목에 정의된다는 점만 제외하고 정적 그룹과 유사합니다.
- 필터링된 역할 - 이 역할은 동적 그룹과 같이 해당 nsRoleFilter 속성에 필터 문자열을 정의합니다. 필터링된 역할의 범위는 해당 정의 항목의 부모에서 시작하는, 현재 위치해 있는 하위 트리입니다. 서버가 필터링된 역할 범위에서 해당 필터에 일치하는 항목을 반환하면 이 역할을 식별하는 nsRole 속성이 생성되어 항목에 추가됩니다.
- 중첩된 역할 - 이 역할은 다른 중첩된 역할을 비롯한 다른 역할 정의의 이름을 지정합니다. 중첩된 역할의 구성원 집합은 포함된 역할에 지정된 모든 구성원의 합집합입니다. 중첩된 역할은 확장 범위를 정의하여 다른 하위 트리에 있는 역할의 구성원을 포함할 수도 있습니다.
역할을 사용하면 클라이언트 응용 프로그램이 항목의 nsRole 속성을 직접 읽어 이 항목의 모든 역할 구성원을 확인할 수 있습니다. 따라서 클라이언트 처리가 간소화되어 디렉토리 사용을 최적화할 수 있습니다. 역할을 CoS 메커니즘과 함께 사용하여 역할 구성원의 다른 속성을 생성할 수 있습니다("역할 기반의 속성 작성" 참조). 역할은 액세스 제어 정의에 사용할 수 있으며("역할 액세스 정의 - roledn 키워드" 참조), 다른 모든 구성원을 동시에 활성화 또는 비활성화하는 등의 기타 기능도 지원합니다("사용자와 역할 비활성화 및 활성화" 참조).
nsRole 속성 검색
Sun ONE Directory Server 5.2에서는 모든 검색 필터에 nsRole 속성을 사용할 수 있습니다. 비교 연산자를 사용하여 이 속성의 특정 값을 검색할 수도 있지만 다음과 같은 점에 주의해야 합니다.
- nsRole 속성을 사용한 검색은 항목을 필터링하기 전에 모든 역할을 평가해야 하므로 많은 시간이 소요될 수 있습니다.
- 디렉토리 서버는 관리된 역할의 특정 구성원에 대한 동일 검색에 가장 적합합니다. 예를 들어 다음과 같은 검색은 실제 속성에 대한 검색만큼 속도가 빠릅니다.
(&(objectclass=person)
(nsRole=cn=managersRole,ou=People,dc=example,dc=com)
- 관리된 역할 구성원의 정의에 사용된 nsRoleDN 속성은 기본적으로 모든 접미사에서 색인화됩니다. 이 속성에 대한 색인화를 비활성화하면 관리된 역할 구성원의 검색 최적화 이점이 사라집니다.
- 필터링된 역할이 포함된 항목을 검색하려면 역할 필터를 사용한 내부 검색이 필요합니다. 내부 작업은 역할 필터에 있는 모든 속성이 역할 범위의 모든 접미사에서 색인화되어 있을 때 가장 속도가 빠릅니다.
nsRole 속성에 대한 권한
nsRole 속성은 역할 메커니즘에서만 지정되고 디렉토리 사용자가 쓰거나 수정할 수 없지만 다음과 같은 점에 주의해야 합니다.
- nsRole 속성은 잠재적으로 모든 디렉토리 사용자가 읽을 수 있지만, 액세스 제어를 정의하여 읽을 수 없도록 차단할 수 있습니다.
- nsRoleDN 속성은 관리된 역할 구성원을 정의하며, 사용자가 자신을 역할에 추가하거나 제거할 수 있도록 할지 지정해야 합니다. 사용자가 자신의 역할을 수정할 수 없도록 차단하는 ACI에 대해서는 "관리된 역할 정의 예제"를 참조하십시오.
- 필터링된 역할은 사용자 항목에 있는 속성이나 속성 값에 기반을 둔 필터를 통해 구성원을 지정합니다. 이런 속성에 대한 사용자 권한을 신중하게 정의하여 필터링된 역할의 구성원을 정의할 수 있는 사람을 제어해야 합니다.
디렉토리에서 역할을 사용하는 방법은 Sun ONE Directory Server Deployment Guide의 Chapter 4, "Designing the Directory Tree"를 참조하십시오.
콘솔을 사용한 역할 할당
이 절에서는 역할 작성 및 수정 절차에 대해 설명합니다.
관리된 역할 작성
관리된 역할에는 역할 정의 항목이 있으며 구성원은 각 구성원 항목에 nsRoleDN 속성을 추가하여 지정합니다. 콘솔을 사용하여 관리된 역할에 구성원을 작성 및 추가하려면 다음을 수행합니다.
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 역할 정의를 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 "새로 만들기 > 역할" 항목을 선택합니다.
또는 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 역할" 항목을 선택합니다.
- "새 역할 작성" 대화 상자에서 "역할 이름" 필드에 새 역할의 이름을 입력해야 하며, 선택 사항으로 "설명" 필드에 역할에 대한 설명을 추가할 수 있습니다. 역할 이름은 새 역할 항목의 cn(일반 이름) 속성 값이 되며 해당 DN에 표시됩니다.
- 대화 상자의 왼쪽 목록에서 "구성원"을 누릅니다. 오른쪽 패널에는 기본적으로 "관리된 역할" 라디오 버튼이 선택되어 있습니다.
- 구성원 목록 아래에 있는 "추가"를 눌러 새 구성원을 역할에 추가합니다. 표준 "사용자 및 그룹 검색" 대화 상자가 표시됩니다.
- "검색" 드롭다운 목록에서 "사용자"를 선택하고 검색할 문자열을 입력한 다음 "검색"을 누릅니다. 특정 속성이나 특정 속성 값을 검색하려면 "고급" 버튼을 누릅니다.
결과로 표시된 항목을 하나 이상 선택하고 "확인"을 누릅니다. 이 단계를 반복하여 원하는 모든 구성원을 이 정적 그룹에 추가합니다.
- 역할에 항목이 모두 추가되면 "확인"을 누릅니다. 새 역할이 관리된 역할 아이콘과 함께 디렉토리 트리에 표시되고, 모든 구성원 항목에 이 역할 항목의 DN 값이 포함된 nsRoleDN 속성이 추가됩니다.
- 역할이 작성되면 이 역할의 DN 값이 포함된 nsRoleDN 속성을 항목에 추가하여 역할을 할당할 수도 있습니다.
필터링된 역할 작성
필터링된 역할의 구성원은 역할 정의의 LDAP 필터에서 선택한 속성 또는 속성 값이 포함된 항목입니다.
주 필터링된 역할의 필터 문자열은 CoS 메커니즘에서 생성된 가상 속성을 제외한 모든 속성에 기반을 둘 수 있습니다("CoS" 참조).
콘솔을 사용하여 필터링된 역할에 구성원을 작성 및 추가하려면 다음을 수행합니다.
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 역할 정의를 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 "새로 만들기 > 역할" 항목을 선택합니다.
또는 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 역할" 항목을 선택합니다.
- "새 역할 작성" 대화 상자에서 "역할 이름" 필드에 새 역할의 이름을 입력해야 하며, 선택 사항으로 "설명" 필드에 역할에 대한 설명을 추가할 수 있습니다. 역할 이름은 새 역할 항목의 cn(일반 이름) 속성 값이 되며 해당 DN에 표시됩니다.
- 대화 상자의 왼쪽 목록에서 "구성원"을 누르고 오른쪽 패널에서 "필터링된 역할" 라디오 버튼을 선택합니다.
- 텍스트 상자에 LDAP 필터를 입력하여 역할 구성원을 결정할 필터를 정의합니다. 또는
"구성"을 눌러 LDAP 필터의 구성을 도와줄 대화 상자를 표시합니다.
- "구성"을 누르면 "LDAP 필터 구성" 대화 상자가 표시됩니다. 필터링된 역할 정의에서는 지정할 수 없으므로 "LDAP 서버 호스트", "포트", "기본 DN" 및 검색 범위 필드는 무시하십시오.
- 필터링된 역할의 사용자만 검색합니다. 이렇게 하면 필터에 (objectclass=person) 구성 요소가 추가됩니다. 이 구성 요소를 사용하지 않으려면 "새 역할 작성" 대화 상자의 텍스트 필드에서 LDAP 필터를 편집해야 합니다.
- "조건" 드롭다운 목록에서 속성을 선택하고 일치 조건을 설정하여 필터를 구체적으로 정의합니다. 다른 필터를 추가하려면 "추가"를 누릅니다. 불필요한 필터를 제거하려면 "삭제"를 누릅니다.
- "확인"을 눌러 작성된 필터를 필터링된 역할 정의에 사용합니다. 그런 후에 텍스트 필드에서 필터를 편집하여 구성 요소를 수정할 수도 있습니다.
- "테스트"를 눌러 필터를 적용합니다. "테스트 결과 필터링" 대화 상자에 현재 필터에 일치하는 항목이 표시됩니다.
- "확인"을 눌러 새 역할 항목을 작성합니다. 새 역할이 필터링된 역할 아이콘과 함께 디렉토리 트리에 표시됩니다.
중첩된 역할 작성
중첩된 역할을 사용하면 다른 역할을 포함하는 역할을 작성하여 기존 역할의 범위를 확장할 수 있습니다. 중첩된 역할을 작성하려면 다른 역할이 이미 존재해야 합니다. 중첩된 역할을 작성하는 경우 콘솔에 중첩할 수 있는 역할 목록이 표시됩니다. 중첩된 역할에는 다른 중첩된 역할이 최대 30개 중첩 수준까지 포함될 수 있습니다. 이 제한을 초과하면 서버에서 역할을 평가할 때 오류를 기록합니다.
콘솔을 사용하여 중첩된 역할에 구성원을 작성 및 추가하려면 다음을 수행합니다.
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 역할 정의를 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 "새로 만들기 > 역할" 항목을 선택합니다.
또는 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 역할" 항목을 선택합니다.
- "새 역할 작성" 대화 상자에서 "역할 이름" 필드에 새 역할의 이름을 입력해야 하며, 선택 사항으로 "설명" 필드에 역할에 대한 설명을 추가할 수 있습니다. 역할 이름은 새 역할 항목의 cn(일반 이름) 속성 값이 되며 해당 DN에 표시됩니다.
- 대화 상자의 왼쪽 목록에서 "구성원"을 누르고 오른쪽 패널에서 "중첩된 역할" 라디오 버튼을 선택합니다.
- "추가"를 눌러 기존 역할을 중첩된 역할 목록에 추가합니다. "역할 선택기" 대화 상자의 사용 가능한 역할 목록에서 하나 이상의 역할을 선택하고 "확인"을 누릅니다.
- "확인"을 눌러 중첩된 역할 항목을 작성합니다. 새 역할이 중첩된 역할 아이콘과 함께 디렉토리에 표시됩니다.
- 중첩된 역할 범위를 수정하려면 "중첩된 역할 정의 예제"에 설명된 명령줄 절차를 사용합니다.
항목의 역할 보기 및 편집
- Directory Server 콘솔의 최상위 수준 "디렉토리" 탭에서 디렉토리 트리를 탐색하여 역할을 보거나 편집하려는 항목을 표시합니다.
- 항목을 마우스 오른쪽 버튼으로 누르고 팝업 메뉴에서 "역할 설정"을 선택합니다. 또는 항목을 왼쪽 마우스 버튼으로 눌러 선택한 다음 "개체" 메뉴에서 "역할 설정"을 선택할 수도 있습니다.
"역할 설정" 대화 상자가 표시됩니다.
- "관리된 역할" 탭을 선택하여 이 항목이 속하는 관리된 역할을 표시합니다. 다음과 같은 작업을 수행할 수 있습니다.
- 새 관리된 역할을 추가하려면 "추가"를 눌러 "역할 선택기" 창에서 사용 가능한 역할을 선택합니다. "역할 선택기" 창에서 "확인"을 누릅니다.
- 관리된 역할을 제거하려면 해당 역할을 선택하고 "제거"를 누릅니다.
- 항목에 연결된 관리된 역할을 편집하려면 테이블에서 편집할 역할을 선택하고 "편집"을 누릅니다. 역할의 사용자 정의 편집기에 해당 역할이 표시됩니다. 원하는 대로 역할을 변경하고 "확인"을 눌러 새 역할 정의를 저장합니다.
- "기타 역할" 탭을 선택하여 이 항목이 속해 있는 필터링된 역할이나 중첩된 역할을 표시합니다. 필터링된 역할이나 중첩된 역할의 역할 구성원을 변경하려면 다음과 같이 역할 정의를 편집해야 합니다.
- 역할을 선택하고 "편집"을 눌러 역할의 사용자 정의 편집기를 표시합니다. 원하는 대로 역할을 변경하고 "확인"을 눌러 새 역할 정의를 저장합니다.
- 역할 수정이 끝나면 "확인"을 눌러 변경 사항을 저장합니다.
역할 항목 수정
- Directory Server 콘솔에서 "디렉토리" 탭을 선택합니다.
- 탐색 트리를 검색하여 기존 역할의 정의 항목을 찾습니다. 역할은 작성된 위치에 해당하는 항목의 자식입니다. 역할을 두 번 누릅니다.
"항목 편집" 대화 상자가 표시됩니다.
- 왼쪽 패널에서 "일반"을 눌러 역할 이름과 설명을 변경합니다.
- 왼쪽 패널에서 "구성원"을 눌러 관리된 역할과 중첩된 역할의 구성원을 변경하거나 필터링된 역할의 필터를 변경합니다.
- "확인"을 눌러 변경 사항을 저장합니다.
역할 삭제
역할을 삭제하면 해당 구성원이 아닌 역할 정의 항목만 삭제됩니다.
역할을 삭제하려면 다음을 수행합니다.
- Directory Server 콘솔에서 "디렉토리" 탭을 선택합니다.
- 탐색 트리를 검색하여 역할의 정의 항목을 찾습니다. 역할은 작성된 위치에 해당하는 항목의 자식입니다.
- 역할을 마우스 오른쪽 버튼으로 누르고 "삭제"를 선택합니다.
삭제를 확인하는 대화 상자가 표시됩니다. "예"를 누릅니다.
- 역할이 성공적으로 삭제되었음을 알려주는 "항목 삭제" 대화 상자가 표시됩니다. "확인"을 누릅니다.
주 역할을 삭제하면 역할 항목만 삭제되고 각 역할 구성원의 nsRoleDN 속성은 삭제되지 않습니다. 이 속성을 삭제하려면 참조 무결성 플러그 인을 활성화하여 nsRoleDN 속성을 관리하도록 구성합니다. 자세한 내용은 "참조 무결성 유지"를 참조하십시오.
명령줄에서 역할 관리
역할은 디렉토리 관리자가 명령줄 유틸리티를 통해 액세스할 수 있는 항목에 정의됩니다. 역할이 작성되면 다음과 같이 구성원을 역할에 지정합니다.
- 관리된 역할의 구성원은 해당 항목에 nsRoleDN 속성이 있습니다.
- 필터링된 역할의 구성원은 nsRoleFilter 속성에 지정된 필터와 일치하는 항목입니다.
- 중첩된 역할의 구성원은 중첩된 역할 정의 항목의 nsRoleDN 속성에 지정된 역할의 구성원입니다.
모든 역할 정의는 LDAPsubentry 및 nsRoleDefinition 개체 클래스로부터 상속됩니다. 아래 표에는 역할 유형별 추가 개체 클래스 및 관련 속성이 나와 있습니다.
관리된 역할 정의 예제
모든 마케팅 직원에게 할당할 역할을 작성하려면 아래의 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 staffnsManagedRoleDefinition 개체 클래스는 LDAPsubentry, nsRoleDefinition 및 nsSimpleRoleDefinition 개체 클래스로부터 상속됩니다.
아래의 ldapmodify 명령으로 마케팅 직원 구성원인 Bob의 항목을 업데이트하여 Bob에게 역할을 할당합니다.
ldapmodify -D "cn=Directory Manager" -w secret -h host -p 389
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 속성을 수정하여 사용자가 자신을 관리된 역할에 추가하거나 제거할 수 없게 하려면 아래 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 managersnsFilteredRoleDefinition 개체 클래스는 LDAPsubentry, nsRoleDefinition 및 nsComplexRoleDefinition 개체 클래스로부터 상속됩니다. 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=comnsNestedRoleDefinition 개체 클래스는 LDAPsubentry, nsRoleDefinition 및 nsComplexRoleDefinition 개체 클래스로부터 상속됩니다. nsRoleDN 속성에는 마케팅 관리된 역할과 영업 책임자 필터링된 역할의 DN이 포함됩니다. 앞의 예제에서 설정된 두 사용자 Bob과 Carla는 새 중첩된 역할의 구성원이 됩니다.
이 필터의 범위에는 필터가 위치해 있는 하위 트리와 nsRoleScopeDN 속성 값 아래의 하위 트리로 구성된 기본 범위가 포함됩니다. 이 예제에서 ManagerFilter는 ou=sales,
ou=People,dc=example,dc=com 하위 트리에 있으므로 이 하위 트리를 필터 범위에 추가해야 합니다.서비스 클래스(CoS) 정의
서비스 클래스(CoS) 메커니즘은 클라이언트 응용 프로그램에 대한 항목이 검색될 때 가상 속성을 생성합니다. CoS를 사용하면 항목 관리를 간소화하고 필요한 저장 공간을 줄일 수 있습니다.
그룹 및 역할과 마찬가지로 CoS는 디렉토리에 있는 도우미 항목을 이용하며 콘솔이나 명령줄을 통해 구성할 수 있습니다. 다음 절에서는 CoS에 대해 설명하고 두 가지 방법으로 CoS를 관리하는 절차를 소개합니다.
CoS
CoS는 CoS 범위에 있는 모든 항목에 가상 속성과 해당 값을 정의하며, 이러한 항목을 대상 항목이라고 합니다. 각각의 CoS는 다음과 같은 디렉토리 항목으로 구성됩니다.
- CoS 정의 항목 - 사용하는 CoS 유형과 생성할 CoS 속성 이름을 식별합니다. 역할 정의 항목과 마찬가지로 CoS 정의 항목은 LDAPsubentry 개체 클래스로부터 상속됩니다. CoS의 범위는 CoS 정의 항목의 부모 아래에 있는 전체 하위 트리입니다. 한 개의 CoS 속성에 여러 가지 정의가 존재할 수 있으므로 이 속성은 여러 값을 갖습니다.
- 템플리트 항목 - 한 개 이상의 가상 속성 값이 포함됩니다. CoS 범위에 있는 모든 항목은 여기에 정의된 값을 사용합니다. 여러 개의 템플리트 항목이 존재할 수 있으므로 생성된 속성은 여러 값을 갖습니다.
CoS 유형은 CoS 정의와 템플리트 항목 간의 상호 작용에 따라 다음 세 가지 유형으로 나뉘어집니다.
- 포인터 CoS - 이 CoS 정의 항목은 템플리트 항목을 해당 DN으로 직접 식별합니다. 모든 대상 항목의 CoS 속성 값은 템플리트에서 지정된 값과 같습니다.
- 간접 CoS - 이 CoS 정의는 간접 지정자 속성을 식별하며 대상 항목의 속성 값에는 템플리트 DN이 포함되어야 합니다. 간접 CoS에서 대상 항목은 각각 다른 템플리트를 사용할 수 있으므로 CoS 속성 값도 서로 다릅니다.
- 클래식 CoS - 이 CoS 정의는 템플리트의 기본 DN과 대상 항목의 속성 이름인 지정자를 식별합니다. 지정자 속성에는 템플리트 기본 DN과 함께 사용되어 CoS 값이 있는 템플리트를 지정하는 RDN(상대적인 도메인 이름)이 있어야 합니다.
CoS 정의 항목은 cosSuperDefinition 개체 클래스의 개별 인스턴스로, CoS 유형을 지정하기 위해 다음 개체 클래스 중 하나로부터 상속됩니다.
- cosPointerDefinition
- cosIndirectDefinition
- cosClassicDefinition
CoS 정의 항목에는 필요한 경우 가상 CoS 속성, 템플리트 DN 및 대상 항목의 지정자 속성 이름을 지정하는 CoS 유형별 속성이 포함됩니다. 기본적으로 CoS 메커니즘은 CoS 속성과 동일한 이름의 기존 속성 값을 무시하지 않지만 CoS 정의 항목 구문을 사용하여 이 동작을 제어할 수 있습니다.
CoS 템플리트 항목은 cosTemplate 개체 클래스의 개별 인스턴스입니다. CoS 템플리트 항목에는 CoS 메커니즘에서 생성된 속성 값이 포함됩니다. 특정 CoS에 대한 템플리트 항목은 디렉토리 트리에서 CoS 정의와 동일한 수준에 저장됩니다.
정의 항목과 템플리트 항목을 편리하게 관리하려면 두 항목이 같은 위치에 있어야 합니다. 또한 제공하는 기능을 쉽게 확인할 수 있도록 항목 이름을 지정해야 합니다. 예를 들어, cn=ClCosGenerateEmployeeType,ou=People,dc=example,dc=com과 같은 정의 항목의 DN이 cn=ClassicCos1,ou=People,dc=example,dc=com보다 쉽게 식별됩니다.
Sun ONE Directory Server Deployment Guide의 Chapter 4, "Managing Attributes with Class of Service"에서는 각 CoS 유형에 대해 자세히 설명하고 예와 배포 시 고려 사항을 제공합니다. CoS 유형별 개체 클래스와 속성에 대한 자세한 내용은 "명령줄에서 CoS 관리"를 참조하십시오.
CoS 제한
CoS 정의 항목과 템플리트 항목의 작성 및 관리에는 다음과 같은 제한이 따릅니다. CoS 가상 속성의 배포 제한에 대해서는 Sun ONE Directory Server Deployment Guide의 Chapter 4, "CoS Limitations"에서 설명합니다.
CoS에서 생성된 속성을 사용한 검색은 색인화되지 않습니다. 모든 검색 필터에서 가상 속성의 존재 여부를 테스트하고 속성 값을 비교할 수 있습니다. 하지만 가상 속성은 색인화할 수 없으므로 CoS에서 생성된 속성을 사용하는 모든 필터 구성 요소는 색인화되지 않은 검색을 초래하여 성능을 크게 저하시킵니다.
제한된 하위 트리. cn=config 및 cn=schema 하위 트리에는 CoS 정의를 작성할 수 없으므로 이들 항목은 가상 속성을 가질 수 없습니다.
제한된 속성 유형. 다음과 같은 속성 유형은 같은 이름의 실제 속성과 동일한 동작을 수행하지 않으므로 CoS 메커니즘에서 생성해서는 안 됩니다.
- userPassword - CoS에서 생성된 암호 값은 디렉토리 서버에 바인드하는 데 사용할 수 없습니다.
- aci - 디렉토리 서버는 CoS에서 정의된 가상 ACI 값의 내용에 따른 액세스 제어를 적용하지 않습니다.
- objectclass - 디렉토리 서버는 CoS에서 정의된 가상 개체 클래스 값에 대해 스키마 검사를 수행하지 않습니다.
- nsRoleDN - CoS에서 생성된 nsRoleDN 값은 서버에서 역할을 생성할 때 사용되지 않습니다.
속성 하위 유형은 지원되지 않습니다. CoS 메커니즘은 언어나 ;binary와 같은 하위 유형이 있는 속성을 생성하지 않습니다.
실제 속성 값과 가상 속성 값. CoS 메커니즘에서는 항목에 정의된 "실제" 값과 CoS 템플리트에서 정의된 "가상" 값이 모두 포함된 여러 값을 갖는 속성을 생성하지 않습니다. 속성 값은 "실제 속성 값 무시 및 "여러 값을 갖는 CoS 속성"에 설명된 것처럼 항목에 저장된 값이나 CoS 메커니즘에서 생성된 값 중 하나입니다.
모든 템플리트는 로컬에 있어야 합니다. CoS 정의나 대상 항목의 지정자에 포함된 템플리트 항목 DN은 디렉토리 서버의 로컬 항목을 참조해야 합니다. 템플리트와 템플리트에 포함된 값은 디렉토리 연결이나 참조를 통해 검색할 수 없습니다.
콘솔을 사용한 Cos 관리
이 절에서는 Directory Server 콘솔을 사용하여 CoS 정의를 작성 및 편집하는 방법에 대해 설명합니다.
또한, CoS 값의 보안을 유지해야 하는 경우 CoS 정의 항목 및 템플리트 항목과 대상 항목의 지정자 속성에 대한 ACI를 정의해야 합니다. CoS 보안 고려 사항에 대해서는 Sun ONE Directory Server Deployment Guide를 참조하고, 콘솔을 사용한 ACI 작성 절차는 6장 "액세스 제어 관리를 참조하십시오.
새 CoS 작성
포인터 CoS와 클래식 CoS의 경우, 정의 항목을 작성하기 전에 먼저 템플리트 항목을 작성해야 합니다.
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 템플리트 항목을 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 팝업 메뉴에서 "새로 만들기 > 기타" 항목을 선택합니다.
또는 부모 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 기타" 항목을 선택합니다.
- "새 개체" 대화 상자의 개체 클래스 목록에서 costemplate를 선택합니다. 새 템플리트의 특정 속성에 대한 기본값이 표시된 "일반 편집기" 대화 상자가 열립니다.
- 다음과 같은 방법으로 새 템플리트 개체를 편집합니다.
- objectclass 속성에 LDAPsubentry 및 extensibleobject 값을 추가합니다.
- cn 속성을 추가하고 템플리트를 식별할 값
(예: cosTemplateForHeadquartersFax)을 지정합니다.
- 이름 지정 속성을 새로운 cn 속성으로 변경합니다.
다른 속성을 추가하여 이름 지정 속성으로 사용할 수도 있지만 일반적으로 cn이 사용됩니다.
- cosPriority 속성을 정수 값으로 설정하여 수정하거나, 필요 없는 경우 우선 순위 속성을 제거합니다. 자세한 내용은 "Cos 속성 우선 순위"를 참조하십시오.
- CoS 메커니즘에서 대상 항목에 생성할 속성과 해당 값을 추가합니다.
- "일반 편집기" 대화 상자에서 "확인"을 눌러 템플리트 항목을 작성합니다.
- 이 템플리트에 대한 포인터 CoS를 정의하려면 디렉토리 트리에서 새 템플리트 항목을 선택하고 메뉴에서 "편집 > DN 복사"를 선택합니다.
정의 항목을 작성하는 절차는 모든 CoS 유형에서 동일합니다.
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 새 CoS 정의를 추가할 디렉토리 트리 항목을 마우스 오른쪽 버튼으로 누르고 팝업 메뉴에서 "새로 만들기 > 서비스 클래스" 항목을 선택합니다.
또는 부모 항목을 선택하고 "개체" 메뉴에서 "새로 만들기 > 서비스 클래스" 항목을 선택합니다.
서비스 클래스 항목의 사용자 정의 편집기가 표시됩니다.
- 새 서비스 클래스의 이름과 설명(선택 사항)을 입력합니다. CoS 정의 항목의 cn 이름 지정 속성에 이 이름이 표시됩니다.
- 왼쪽 목록에서 "속성" 탭을 누릅니다. CoS 메커니즘에서 대상 항목에 생성할 속성 목록이 대화 상자에 표시됩니다.
"추가"를 눌러 가능한 속성 목록을 탐색하고 목록에 속성을 추가합니다.
- 속성이 목록에 추가되면 "서비스 클래스 동작" 열에 드롭다운 목록이 표시됩니다. 셀 내부를 눌러 다음과 같은 무시 동작을 선택합니다.
- 대상 항목 속성을 무시하지 않습니다. - 대상 항목에 해당 속성 값이 저장되어 있지 않은 경우에만 CoS 속성 값이 생성됩니다.
- 대상 항목 속성을 무시합니다. - CoS에서 생성된 속성 값이 대상 항목의 해당 속성 값을 무시합니다.
- 대상 항목 속성을 무시하며 작동합니다. - 속성이 모든 대상 값을 무시하고 작동하므로, 명시적으로 요청되지 않은 경우 클라이언트 응용 프로그램에 표시되지 않습니다.
주 스키마에서 작동 가능으로 정의된 속성만 작동 가능으로 설정할 수 있습니다.
- 왼쪽 목록에서 "템플리트" 탭을 누릅니다. 템플리트 항목의 식별 방법을 선택한 다음 해당 필드에 입력합니다. 이렇게 하면 정의할 CoS 유형이 결정됩니다.
- 해당 DN 사용 - 이 옵션은 포인터 CoS를 정의하므로 "템플리트 DN" 필드에 템플리트 항목의 DN을 입력합니다. "찾아보기"를 눌러 디렉토리에서 템플리트 DN을 선택하거나 Ctrl-V를 입력하여 템플리트 항목이 작성된 후에 복사한 DN을 붙여넣습니다.
- 대상 항목의 속성들 중 하나의 값 사용 - 이 옵션은 간접 CoS를 정의하므로 "속성 이름" 필드에 지정자 속성의 이름을 입력합니다. 이 경우에는 DN 값이 포함된 속성을 선택해야 합니다. "변경"을 눌러 목록에서 속성을 선택합니다.
- 대상 항목의 속성들 중 하나의 값과 DN을 모두 사용 - 이 옵션은 클래식 CoS를 정의하므로 템플리트의 기본 DN과 속성 이름을 모두 입력합니다. "찾아보기"를 눌러 잠재적 대상 항목의 부모 항목을 선택한 다음 "변경"을 눌러 목록에서 속성을 선택합니다.
- "확인"을 눌러 CoS 정의 항목을 작성합니다.
기존 CoS 편집
- Directory Server 콘솔의 최상위 수준 "디렉토리" 탭에서 CoS 정의 항목을 두 번 누르거나 마우스 오른쪽 버튼으로 누른 다음 팝업 메뉴에서 "사용자 정의 편집기로 편집"을 선택합니다.
서비스 클래스 항목의 사용자 정의 편집기가 표시됩니다.
- 이름 및 설명 필드를 원하는 대로 편집합니다.
- 왼쪽 목록에서 "속성" 탭을 눌러 CoS 메커니즘에서 생성할 가상 속성을 추가하거나 제거합니다.
- 왼쪽 목록에서 "템플리트" 탭을 눌러 템플리트 지정자 속성의 이름이나 템플리트 항목 DN을 다시 정의합니다. 이 대화 상자에서 CoS 정의 유형을 다시 정의할 수도 있습니다.
- "확인"을 눌러 변경 사항을 저장합니다.
CoS 삭제
- Directory Server 콘솔의 최상위 "디렉토리" 탭에서 디렉토리 트리를 탐색하여 CoS 정의 항목을 표시합니다.
- CoS 항목을 마우스 오른쪽 버튼으로 누르고 팝업 메뉴에서 "삭제"를 선택합니다. 삭제를 확인하는 대화 상자가 표시됩니다. "예"를 누릅니다.
명령줄에서 CoS 관리
모든 구성 정보와 템플리트 데이터는 디렉토리 항목으로 저장되기 때문에 LDAP 명령줄 도구를 사용하여 CoS 정의를 구성 및 관리할 수 있습니다. 이 절에서는 명령줄에서 CoS 정의와 템플리트 항목을 작성하는 방법에 대해 설명합니다.
또한, CoS 값의 보안을 유지해야 하는 경우 CoS 정의 항목 및 템플리트 항목과 대상 항목의 지정자 속성에 대한 ACI를 정의해야 합니다. 명령줄에서 ACI를 작성하는 절차는 6장 "액세스 제어 관리를 참조하십시오.
명령줄에서 CoS 정의 항목 작성
모든 CoS 정의 항목에는 LDAPsubentry 개체 클래스가 있으며 cosSuperDefinition 개체 클래스로부터 상속됩니다. 또한, 각각의 CoS 유형은 특정 개체 클래스로부터 상속되고 해당 속성을 포함합니다. 아래 표에는 CoS 정의 항목의 유형별 개체 클래스와 속성이 나와 있습니다.
cosAttribute는 항상 여러 값을 가지며, 각각의 값은 CoS 메커니즘에서 생성할 속성을 정의합니다.
CoS 정의 항목에는 다음과 같은 속성을 사용할 수 있습니다. 이러한 속성에 대한 자세한 내용은 Sun ONE Directory Server Reference Manual을 참조하십시오.
cosAttribute 속성은 CoS 속성 이름 뒤에 두 개의 한정자를 허용합니다. override 한정자는 다음 값 중 하나를 갖습니다.
- default(또는 수식자 없음) - 항목에 저장된 실제 속성 값이 가상 속성과 같은 유형이면 서버에서 실제 속성 값을 무시하지 않음을 나타냅니다.
- override - 항목에 저장된 값이 있어도 항상 CoS에서 생성된 값이 반환됨을 나타냅니다.
- operational - 검색에서 명시적으로 요청된 경우에만 속성이 반환됨을 나타냅니다. 작동 가능 속성은 스키마 검사를 통과하지 않아도 반환될 수 있으며 override 한정자와 같은 동작을 합니다.
스키마에서 작동 가능으로 정의된 속성만 작동 가능으로 설정할 수 있습니다. 예를 들어, CoS에서 description 속성 값을 생성한 경우 이 속성은 스키마에서 작동 가능으로 정의되지 않았으므로 operational 한정자를 사용할 수 없습니다.
merge 한정자는 비어 있거나 아래 값이 지정됩니다.
- merge-schemes - 가상 CoS 속성이 많은 템플리트나 CoS 정의의 여러 값을 가질 수 있도록 허용합니다. 자세한 내용은 "여러 값을 갖는 CoS 속성"을 참조하십시오.
실제 속성 값 무시
아래 명령을 실행하여 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에 연결되어 있음을 나타냅니다. 또한 override 한정자는 이 값이 대상 항목에 있는 postalCode 속성 값보다 우선함을 나타냅니다.
주 CoS 속성이 operational 한정자나 override 한정자로 정의된 경우에는 CoS 범위의 항목에서 해당 속성의 "실제" 값에 대해 쓰기 작업을 수행할 수 없습니다.
여러 값을 갖는 CoS 속성
merge-schemes 한정자를 지정하면 생성된 CoS 속성이 여러 값을 가질 수 있습니다. CoS 속성이 여러 값을 갖게 되는 경우는 다음 두 가지입니다.
- 간접 CoS나 클래식 CoS에서 대상 항목의 지정자 속성은 여러 값을 가질 수 있습니다. 이 경우, 각각의 값은 템플리트를 지정하고 각 템플리트의 값이 생성된 값에 포함됩니다.
- 모든 유형에서 cosAttribute에 동일한 속성 이름이 포함된 여러 개의 CoS 정의 항목이 존재할 수 있습니다. 이 경우, 모든 정의에 merge-schemes 한정자가 포함되어 있으면 생성된 속성에는 각 정의에서 계산된 값이 모두 포함됩니다.
두 경우가 함께 발생하여 더 많은 값을 정의할 수도 있습니다. 하지만 중복 값은 항상 생성된 속성에 한 번만 반환됩니다.
merge-schemes 한정자가 없는 경우, 다음 절에 설명된 것처럼 템플리트 항목의 cosPriority 속성을 사용하여 생성된 이 속성에 대해 모든 템플리트에 지정되는 한 개의 값을 결정합니다.
merge-schemes 한정자는 대상에서 정의된 "실제" 값과 템플리트에서 생성된 값을 병합하지 않습니다. merge 한정자는 override 한정자와 별개로 작동하므로 모든 쌍이 가능하며 각 한정자의 동작은 상호 보충됩니다. 또한 순서에 상관 없이 속성 이름 뒤에 한정자를 지정할 수 있습니다.
주 한 속성에 대한 여러 개의 CoS 정의가 있는 경우 모두 동일한 override 및 merge 한정자를 사용해야 합니다. CoS 정의에 여러 개의 한정자 쌍이 있으면 한 개의 쌍이 임의로 선택되어 모든 정의에서 사용됩니다.
Cos 속성 우선 순위
여러 개의 CoS 정의나 여러 값을 갖는 지정자가 있지만 merge-schemes 한정자가 없는 경우 디렉토리 서버는 우선 순위 속성을 사용하여 가상 속성 값 하나를 정의하는 한 개의 템플리트를 선택합니다.
cosPriority 속성은 해당되는 모든 템플리트 중에서 특정 템플리트의 전역 우선 순위를 나타냅니다. 우선 순위 0(제로)이 가장 높은 우선 순위입니다. cosPriority 속성이
없는 템플리트는 가장 낮은 우선 순위로 간주됩니다. 두 개 이상의 템플리트가 속성 값을 제공하지만 우선 순위가 같은 경우(혹은 없는 경우)에는 임의로 값이 선택됩니다.merge-schemes 한정자를 사용하는 경우 템플리트 우선 순위는 고려되지 않습니다. 병합하는 경우에는 정의된 우선 순위에 관계 없이 해당되는 모든 템플리트가 값을 정의합니다.
다음 절에 설명된 것처럼 cosPriority 속성은 CoS 템플리트 항목에 정의됩니다.
주 cosPriority 속성에 음수 값은 지정할 수 없습니다. 또한 간접 CoS에서 생성된 속성은 우선 순위를 지원하지 않습니다. 간접 CoS 정의의 템플리트 항목에는 cosPriority를 사용하지 마십시오.
명령줄에서 CoS 템플리트 항목 작성
포인터 CoS나 클래식 CoS를 사용하는 경우에는 템플리트 항목에 LDAPsubentry 및 cosTemplate 개체 클래스가 포함됩니다. 이 항목은 특별히 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: postalCodeCoS 템플리트 항목(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
postalAddres: 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
objectlass: cosClassicDefinition
cosTemplateDn: cn=managerCOS,dc=example,dc=com
cosSpecifier: nsRole
cosAttribute: mailboxquota overrideCoS 템플리트 이름은 cosTemplateDn과 nsRole 값(역할 DN)의 조합이어야 합니다. 예를 들면 다음과 같습니다.
dn:cn="cn=ManagerRole,ou=People,dc=example,dc=com",ou=People,
dc=example,dc=com
objectclass: top
objectclass: LDAPsubentry
objectclass: extensibleobject
objectlass: cosTemplate
mailboxquota: 1000000CoS 템플리트 항목은 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 대상 항목도 같은 위치에 있어야만 검색 및 유지관리가 용이합니다.