|
|
| Sun ONE Directory Server 관리 설명서 |
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.extension
nsslapd-pluginVersion: 5.2
nsslapd-pluginVendor: Sun Microsystems, Inc.
nsslapd-pluginId: NSUniqueAttr
nsslapd-pluginInitfunc: NSUniqueAttr_Init
nsslapd-pluginEnabled: state
...
명령의 첫 부분에서 plug-in_name은 속성 이름이 포함된, 자신을 잘 나타내는 짧은 이름
(예: cn=mail uniqueness)이어야 합니다. serverRoot 및 라이브러리 extension은 사용하는 플랫폼에 따라 결정됩니다. 마지막으로, 서버를 다시 시작할 때의 새 인스턴스 state를 on 또는 off 중 하나로 지정합니다.
- 서버의 플러그 인 서명을 확인하는 경우 새 고유성 플러그 인 구성에 서명을 추가해야 합니다. 고유성 플러그 인은 UID 고유성 플러그 인의 새 인스턴스이므로 아래 파일에 있는 동일한 서명 정보를 사용해야 합니다.
serverRoot/plugins/signatures/plugin.signatures
이 파일은 서버 설치 시의 사용자 ID(예: root)로만 읽을 수 있습니다. 이 파일에서 dn: cn=uid uniqueness,cn=plugins,cn=config 항목 아래에 있는 정보를 찾습니다. 파일에 제공된 값을 사용하여 새 플러그 인 인스턴스에 다음과 같은 속성을 추가합니다. ds-signedPlugin 개체 클래스도 추가해야 합니다.
objectClass: ds-signedPlugin
ds-pluginDigest:: 02Q7yVLYsC8FInPrvbAKYq7Rj0o=
ds-pluginSignature:: MIIBjwYJKoZIhvcNAQcCoIIBgDCCAXwCAQExCzAJBg
UrDgMCGgUAMAsGCSqGSIb3DQEHATGCAVswggFXAgEBMFYwTTELMAkGA1UEBhMC
VVMxGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxIzAhBgNVBAMTGlBsdWdpbi
BTaWduaW5nIENlcnRpZmljYXRlAgUA5X1ATjAJBgUrDgMCGgUAoF0wGAYJKoZI
A2WjAjBgkqhkiG9w0BCQQxFgQU77mUWWJWttkH89eLwTr/fQtz+BswDQYJKoZI
hvcNAQEBBQAEgYAzZwvgwo+OdKNkXWxlP+pUNpHesL6UQcvXcm37mEQyikRvLs
hy3X0JutFhEXaCfU4UX76A3Zzedr2Iy0YEGkiPCu3g8jnkFEG/ux0ZMeOPiulF
f9PUfqpnz6phq19eBZxZ/MBFLxtlzJHG42Ext/un4ZzQIg==
...플러그 인 서명에 대한 자세한 내용은 "플러그 인 서명 확인"을 참조하십시오. 플러그 인 서명을 확인하지 않는 경우에는 이러한 속성을 추가할 필요가 없습니다. 이 구성에 따르면 새 플러그 인 인스턴스가 서명되지는 않지만 플러그 인이 정상적으로 작동합니다.
- 명령의 나머지 부분은 고유성을 실행할 하위 트리의 지정 방법에 따라 플러그 인 인수를 지정합니다.
- 기본 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 고유성 플러그 인을 사용할 수 있습니다.
- 이름 지정 속성에 대한 고유성 검사를 수행하는 경우
- 모든 마스터에서 동일한 하위 트리의 동일한 속성에 대해 고유성 플러그 인을 사용하는 경우
이러한 조건을 만족하면 복제 시 고유성 충돌이 이름 지정 충돌로 보고됩니다. 이름 지정 충돌은 수동으로 해결해야 합니다. 복제 충돌 해결에 대한 자세한 내용은 "일반적인 복제 충돌 해결"을 참조하십시오.