Sun Java 로고     이전      목차      색인      다음     

Sun 로고
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 고유성 플러그 인을 사용하지 않으려면 비활성화된 상태로 두고 다른 속성에 대한 고유성 실행에 설명된 것처럼 다른 속성에 대한 새 플러그 인 인스턴스를 작성합니다.

  1. Directory Server 콘솔의 최상위 구성 탭에서 플러그 인 노드를 확장하여 uid uniqueness 플러그 인을 선택합니다.
  2. 오른쪽 패널에서 확인란을 선택하여 플러그 인을 활성화합니다.
  3. 초기화 기능이나 플러그 인 모듈 경로 필드는 수정하지 마십시오.

  4. 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 수정합니다.
    • 단일 하위 트리의 기본 DN을 지정하려면 인수 2의 값을 편집합니다. 두 개 이상의 하위 트리를 지정하려면 "추가"를 눌러 인수를 추가하고 새 텍스트 필드에 각 하위 트리의 기본 DN을 입력합니다.
    • 기본 항목의 객체 클래스로 하위 트리를 지정하려면 인수를 아래 값으로 설정합니다.
    • 인수 1: attribute=uid
      인수 2: markerObjectClass=baseObjectClass

      플러그 인은 지정된 baseObjectClass를 가진 모든 디렉토리 항목 아래의 하위 트리에서 uid 고유성을 적용합니다. 예를 들어, ou=Employees 및 ou=Contractors와 같은 많은 분기에 사용자 항목이 있는 경우 markerObjectClass=organizationalUnit를 지정합니다.

      표식 객체 클래스 아래의 분기 범위는 상당히 클 수 있으므로 해당 객체 클래스에 따라 속성 고유성 실행을 특정 항목으로 더욱 제한할 수 있습니다. 추가를 눌러 세 번째 플러그 인 인수를 추가하고 아래 값으로 설정합니다.

      인수 3: requiredObjectClass=entryObjectClass

      플러그 인은 baseObjectClass가 포함된 항목의 하위 트리에서 entryObjectClass가 있는 항목을 대상으로 하는 작업에만 고유성을 적용합니다. 예를 들어, 일반 사용자 항목이 있는 경우 requiredObjectClass=inetorgperson을 지정합니다.

  5. uid 고유성 플러그 인의 편집이 끝나면 저장을 누릅니다. 변경 사항을 적용하려면 서버를 다시 시작해야 한다는 메시지가 표시됩니다.
  6. 서버를 다시 시작하여 uid 속성 값에 대한 고유성을 적용합니다.

명령줄에서 플러그 인 구성

아래 절차에서는 ldapmodify 명령을 사용하여 uid 고유성 플러그 인을 활성화 및 구성하는 방법에 대해 설명합니다. 플러그 인 구성 항목의 DN은 cn=uid uniqueness,cn=plugins,cn=config입니다.

  1. 아래 명령에서 nsslapd-pluginEnabled 속성을 on 또는 off로 설정하여 플러그 인을 각각 활성화하거나 비활성화합니다.
  2. 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

  3. 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 수정합니다.
  4. 단일 하위 트리의 기본 DN을 지정하려면 아래 명령을 실행하여 nsslapd-pluginarg1 값을 수정합니다.
  5. 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

  6. 기본 항목의 객체 클래스에 따라 하위 트리를 지정하려면 인수를 아래 값으로 설정합니다. uid 속성에 대한 고유성은 baseObjectClass가 포함된 항목 아래의 하위 트리에서 실행됩니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 고유성을 적용하도록 선택 사항으로 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.
  7. 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

  8. 서버를 다시 시작하여 변경 사항을 적용합니다.


다른 속성에 대한 고유성 실행

UID 고유성 플러그 인을 사용하여 모든 속성에 대한 고유성을 적용할 수 있습니다. 디렉토리에서 cn=plugins,cn=config 아래에 새 항목을 작성하여 플러그 인의 새 인스턴스를 작성해야 합니다.

  1. ldapmodify 명령을 사용하여 새 플러그 인 인스턴스의 구성 항목을 추가합니다. 명령의 첫 부분은 다음과 같습니다. 나머지 부분은 다음 단계에 나와 있습니다.
  2. 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로 지정합니다.

  3. 명령의 나머지 부분은 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그 인 인수를 지정합니다.
  4. 기본 DN에 따라 하나 이상의 하위 트리를 정의하려면 첫 번째 인수는 고유한 속성 이름이고 이후의 인수는 하위 트리에 있는 기본 항목의 전체 DN이어야 합니다.
  5. nsslapd-pluginarg0: attribute_name
    nsslapd-pluginarg1: subtreeBaseDN
    nsslapd-pluginarg2: subtreeBaseDN
    ...
    ^D

  6. 기본 항목의 객체 클래스에 따라 하위 트리를 정의하려면 첫 번째 인수에 attribute=attribute_name을 포함하여 고유한 속성 이름을 지정해야 합니다. 두 번째 인수는 고유성을 적용할 하위 트리의 기본 항목을 지정하는 baseObjectClass여야 합니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 고유성을 적용하도록 선택 사항으로 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.
  7. nsslapd-pluginarg0: attribute=attribute_name
    nsslapd-pluginarg1: markerObjectClass=baseObjectClass
    nsslapd-pluginarg2: requiredObjectClass=entryObjectClass
    ^D

    모든 플러그 인 인수에서  = 부호의 앞뒤에는 공백이 없어야 합니다.

  8. 서버를 다시 시작하여 고유성 플러그 인의 새 인스턴스를 서버에 로드합니다.


복제 시 고유성 플러그 인 사용

UID 고유성 플러그 인은 복제 작업의 일부로 업데이트를 수행하는 경우 속성 값을 검사하지 않으므로 단일 마스터 복제에는 영향이 없지만 다중 마스터 복제 시 속성 고유성을 자동으로 실행할 수 없습니다.

단일 마스터 복제 시나리오

클라이언트 응용 프로그램은 항상 마스터 복제본을 수정하므로 마스터 서버에서 UID 고유성 플러그 인을 사용해야 합니다. 복제된 접미어에서 고유성을 적용하도록 플러그 인을 구성해야 합니다. 마스터에서 원하는 속성 값이 고유한지 확인하기 때문에 소비자 서버에서 플러그 인을 사용할 필요는 없습니다.

단일 마스터의 소비자에서 UID 고유성 플러그 인을 사용해도 복제나 정상적인 서버 작업을 방해하지는 않지만 성능이 약간 저하될 수 있습니다.

다중 마스터 복제 시나리오

UID 고유성 플러그 인은 다중 마스터 복제 시나리오에 적합하지 않습니다. 다중 마스터 복제 시에는 느슨하게 일관적인 복제 모델을 사용하기 때문에 두 서버에서 모두 플러그 인을 사용해도 같은 속성 값이 두 서버에 동시에 추가되는 것을 감지하지 못합니다.

하지만 다음과 같은 조건을 만족할 경우 UID 고유성 플러그 인을 사용할 수 있습니다.

이러한 조건을 만족하면 복제 시 고유성 충돌이 이름 지정 충돌로 보고됩니다. 이름 지정 충돌은 수동으로 해결해야 합니다. 복제 충돌 해결에 대한 자세한 내용은 일반적인 복제 충돌 해결을 참조하십시오.



이전      목차      색인      다음     


Copyright 2004 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.