| |
| Sun Java(TM) System Directory Server 5 2004Q2 관리 설명서 | |
15장
속성 값 고유성 강화UID 고유성 플러그 인은 지정된 속성 값이 디렉토리 또는 하위 트리의 모든 항목에서 고유한지 확인하며, 기존의 속성 값이 포함된 항목을 추가하려는 작업이나 속성을 디렉토리에 있는 값으로 수정하려는 작업을 모두 중지합니다.
UID 고유성 플러그 인은 기본적으로 비활성화되어 있습니다. 이 플러그 인을 활성화하면 기본적으로 uid 속성의 고유성이 유지됩니다. 플러그 인의 새 인스턴스를 작성하여 다른 속성 값에 대한 고유성을 적용할 수도 있습니다. UID 고유성 플러그 인은 단일 서버의 속성 값 고유성만 제한적으로 확인합니다.
이 장은 다음 내용으로 구성되어 있습니다.
개요UID 고유성 플러그 인은 사전 작업 플러그 인으로, 서버에서 디렉토리를 업데이트하기 전에 모든 LDAP 작업을 검사하여 이 작업으로 동일한 속성 값을 가진 두 개의 항목이 작성되는지 여부를 확인합니다. 이 경우 서버는 작업을 종료하고 오류 19, LDAP_CONSTRAINT_VIOLATION을 클라이언트로 반환합니다.
디렉토리에 있는 하나 이상의 하위 트리 또는 특정 객체 클래스 항목에서 고유성을 적용하도록 플러그 인을 구성할 수 있습니다. 이 구성은 속성 값에 대한 고유성을 적용할 항목 집합을 결정합니다. 이 집합의 항목을 대상으로 하고 속성 값이 이 집합의 모든 항목에서 고유하지 않을 경우에만 작업을 종료할 수 있습니다.
다른 속성에 대한 고유성을 적용하려면 UID 고유성 플러그 인의 인스턴스를 여러 개 정의할 수 있습니다. 값이 고유해야 하는 각 항목 및 속성 집합에 하나의 플러그 인 인스턴스를 정의합니다. 동일한 속성에 여러 개의 플러그 인 인스턴스를 정의하여 각 항목 집합에 "별도의" 고유성을 적용할 수도 있습니다. 지정된 속성 값은 각 집합에 한 번만 허용됩니다.
기존 디렉토리에서 속성 고유성을 활성화해도 기존 항목에서의 고유성은 검사되지 않습니다. 고유성은 항목을 추가하거나 속성을 추가 또는 수정한 경우에만 실행됩니다.
UID 고유성 플러그 인은 다중 마스터 복제 작업에 영향을 주기 때문에 기본적으로 비활성화됩니다. 복제 사용 시 UID 고유성 플러그 인을 사용할 수도 있지만 복제 시 고유성 플러그 인 사용에 설명된 동작에 주의해야 합니다.
uid 속성에 대한 고유성 실행이 절에서는 uid 속성에 대한 기본 고유성 플러그 인을 사용 및 구성하는 방법에 대해 설명합니다. 다른 속성에 대한 고유성을 적용하려면 다른 속성에 대한 고유성 실행을 참조하십시오.
콘솔에서 플러그 인 구성
콘솔을 사용하는 경우 다른 속성에 대한 고유성을 적용하기 위해 기본 uid 고유성 플러그 인을 수정해서는 안 됩니다. uid 고유성 플러그 인을 사용하지 않으려면 비활성화된 상태로 두고 다른 속성에 대한 고유성 실행에 설명된 것처럼 다른 속성에 대한 새 플러그 인 인스턴스를 작성합니다.
- Directory Server 콘솔의 최상위 구성 탭에서 플러그 인 노드를 확장하여 uid uniqueness 플러그 인을 선택합니다.
- 오른쪽 패널에서 확인란을 선택하여 플러그 인을 활성화합니다.
초기화 기능이나 플러그 인 모듈 경로 필드는 수정하지 마십시오.
- 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 수정합니다.
- 단일 하위 트리의 기본 DN을 지정하려면 인수 2의 값을 편집합니다. 두 개 이상의 하위 트리를 지정하려면 "추가"를 눌러 인수를 추가하고 새 텍스트 필드에 각 하위 트리의 기본 DN을 입력합니다.
- 기본 항목의 객체 클래스로 하위 트리를 지정하려면 인수를 아래 값으로 설정합니다.
인수 1: attribute=uid
인수 2: markerObjectClass=baseObjectClass플러그 인은 지정된 baseObjectClass를 가진 모든 디렉토리 항목 아래의 하위 트리에서 uid 고유성을 적용합니다. 예를 들어, ou=Employees 및 ou=Contractors와 같은 많은 분기에 사용자 항목이 있는 경우 markerObjectClass=organizationalUnit를 지정합니다.
표식 객체 클래스 아래의 분기 범위는 상당히 클 수 있으므로 해당 객체 클래스에 따라 속성 고유성 실행을 특정 항목으로 더욱 제한할 수 있습니다. 추가를 눌러 세 번째 플러그 인 인수를 추가하고 아래 값으로 설정합니다.
인수 3: requiredObjectClass=entryObjectClass
플러그 인은 baseObjectClass가 포함된 항목의 하위 트리에서 entryObjectClass가 있는 항목을 대상으로 하는 작업에만 고유성을 적용합니다. 예를 들어, 일반 사용자 항목이 있는 경우 requiredObjectClass=inetorgperson을 지정합니다.
- uid 고유성 플러그 인의 편집이 끝나면 저장을 누릅니다. 변경 사항을 적용하려면 서버를 다시 시작해야 한다는 메시지가 표시됩니다.
- 서버를 다시 시작하여 uid 속성 값에 대한 고유성을 적용합니다.
명령줄에서 플러그 인 구성
아래 절차에서는 ldapmodify 명령을 사용하여 uid 고유성 플러그 인을 활성화 및 구성하는 방법에 대해 설명합니다. 플러그 인 구성 항목의 DN은 cn=uid uniqueness,cn=plugins,cn=config입니다.
- 아래 명령에서 nsslapd-pluginEnabled 속성을 on 또는 off로 설정하여 플러그 인을 각각 활성화하거나 비활성화합니다.
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=uid uniqueness,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginEnabled
nsslapd-pluginEnabled: on or off
^D- 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 수정합니다.
- 단일 하위 트리의 기본 DN을 지정하려면 아래 명령을 실행하여 nsslapd-pluginarg1 값을 수정합니다.
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=uid uniqueness,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginArg1
nsslapd-pluginArg1: subtreeBaseDN
^D두 개 이상의 하위 트리를 지정하려면 아래 명령을 실행하여 하위 트리의 전체 기본 DN이 각 인수 값으로 지정된 인수를 추가합니다.
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=uid uniqueness,cn=plugins,cn=config
changetype: modify
add: nsslapd-pluginArg2
nsslapd-pluginArg2: subtreeBaseDN
-
add: nsslapd-pluginArg3
nsslapd-pluginArg3: subtreeBaseDN
-
...
^D- 기본 항목의 객체 클래스에 따라 하위 트리를 지정하려면 인수를 아래 값으로 설정합니다. uid 속성에 대한 고유성은 baseObjectClass가 포함된 항목 아래의 하위 트리에서 실행됩니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 고유성을 적용하도록 선택 사항으로 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=uid uniqueness,cn=plugins,cn=config
changetype: modify
replace: nsslapd-pluginArg0
nsslapd-pluginArg0: attribute=uid
-
replace: nsslapd-pluginArg1
nsslapd-pluginArg1: markerObjectClass=baseObjectClass
-
replace: nsslapd-pluginArg2
nsslapd-pluginArg2: requiredObjectClass=entryObjectClass
^D- 서버를 다시 시작하여 변경 사항을 적용합니다.
다른 속성에 대한 고유성 실행UID 고유성 플러그 인을 사용하여 모든 속성에 대한 고유성을 적용할 수 있습니다. 디렉토리에서 cn=plugins,cn=config 아래에 새 항목을 작성하여 플러그 인의 새 인스턴스를 작성해야 합니다.
- ldapmodify 명령을 사용하여 새 플러그 인 인스턴스의 구성 항목을 추가합니다. 명령의 첫 부분은 다음과 같습니다. 나머지 부분은 다음 단계에 나와 있습니다.
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=plug-in_name,cn=plugins,cn=config
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
cn: plug-in_name
nsslapd-pluginDescription: Enforce unique attribute values
nsslapd-pluginType: preoperation
nsslapd-plugin-depends-on-type: database
nsslapd-pluginPath: ServerRoot/lib/uid-plugin.so
nsslapd-pluginVersion: 5.2
nsslapd-pluginVendor: Sun Microsystems, Inc.
nsslapd-pluginId: NSUniqueAttr
nsslapd-pluginInitfunc: NSUniqueAttr_Init
nsslapd-pluginEnabled: on or off
...
^D명령의 첫 부분에서 plug-in_name은 속성 이름이 포함된, 자신을 잘 나타내는 짧은 이름(예: cn=mail uniqueness)이어야 합니다. 서버를 다시 시작할 때 새 인스턴스의 활성화된 상태를 on 또는 off로 지정합니다.
- 명령의 나머지 부분은 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 지정합니다.
- 기본 DN에 따라 하나 이상의 하위 트리를 정의하려면 첫 번째 인수는 고유한 속성 이름이고 이후의 인수는 하위 트리에 있는 기본 항목의 전체 DN이어야 합니다.
nsslapd-pluginarg0: attribute_name
nsslapd-pluginarg1: subtreeBaseDN
nsslapd-pluginarg2: subtreeBaseDN
...
^D- 기본 항목의 객체 클래스에 따라 하위 트리를 정의하려면 첫 번째 인수에 attribute=attribute_name을 포함하여 고유한 속성 이름을 지정해야 합니다. 두 번째 인수는 고유성을 적용할 하위 트리의 기본 항목을 지정하는 baseObjectClass여야 합니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 고유성을 적용하도록 선택 사항으로 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.
nsslapd-pluginarg0: attribute=attribute_name
nsslapd-pluginarg1: markerObjectClass=baseObjectClass
nsslapd-pluginarg2: requiredObjectClass=entryObjectClass
^D모든 플러그 인 인수에서 = 부호의 앞뒤에는 공백이 없어야 합니다.
- 서버를 다시 시작하여 고유성 플러그 인의 새 인스턴스를 서버에 로드합니다.
복제 시 고유성 플러그 인 사용UID 고유성 플러그 인은 복제 작업의 일부로 업데이트를 수행하는 경우 속성 값을 검사하지 않으므로 단일 마스터 복제에는 영향이 없지만 다중 마스터 복제 시 속성 고유성을 자동으로 실행할 수 없습니다.
단일 마스터 복제 시나리오
클라이언트 응용 프로그램은 항상 마스터 복제본을 수정하므로 마스터 서버에서 UID 고유성 플러그 인을 사용해야 합니다. 복제된 접미어에서 고유성을 적용하도록 플러그 인을 구성해야 합니다. 마스터에서 원하는 속성 값이 고유한지 확인하기 때문에 소비자 서버에서 플러그 인을 사용할 필요는 없습니다.
단일 마스터의 소비자에서 UID 고유성 플러그 인을 사용해도 복제나 정상적인 서버 작업을 방해하지는 않지만 성능이 약간 저하될 수 있습니다.
다중 마스터 복제 시나리오
UID 고유성 플러그 인은 다중 마스터 복제 시나리오에 적합하지 않습니다. 다중 마스터 복제 시에는 느슨하게 일관적인 복제 모델을 사용하기 때문에 두 서버에서 모두 플러그 인을 사용해도 같은 속성 값이 두 서버에 동시에 추가되는 것을 감지하지 못합니다.
하지만 다음과 같은 조건을 만족할 경우 UID 고유성 플러그 인을 사용할 수 있습니다.
이러한 조건을 만족하면 복제 시 고유성 충돌이 이름 지정 충돌로 보고됩니다. 이름 지정 충돌은 수동으로 해결해야 합니다. 복제 충돌 해결에 대한 자세한 내용은 일반적인 복제 충돌 해결을 참조하십시오.