Sun Java System Directory Server Enterprise Edition 6.2 관리 설명서

13장 디렉토리 서버 속성 값 고유성

UID 고유성 플러그인을 사용하면 주어진 속성 값이 디렉토리 또는 하위 트리의 모든 항목에서 고유하도록 만들 수 있습니다. 이 플러그인을 사용하면 지정된 속성에 대한 기존 값이 포함된 항목을 추가하려는 작업이나 속성을 디렉토리에 있는 값으로 추가 또는 수정하려는 작업이 모두 중지됩니다.

UID 고유성 플러그인은 기본적으로 비활성화되어 있습니다. 이 플러그인을 활성화하면 기본적으로 uid 속성의 고유성이 유지됩니다. 플러그인의 새 인스턴스를 만들어 다른 속성에 대한 고유 값을 적용할 수도 있습니다. UID 고유성 플러그인은 단일 서버에서 속성 값 고유성을 유지합니다.

이 장은 다음 내용으로 구성되어 있습니다.

속성 값 고유성 개요

UID 고유성 플러그인은 사전 작업 플러그인으로, 서버에서 디렉토리를 업데이트하기 전에 LDAP 추가, 수정 및 DN 수정 작업을 검사하여 두 항목이 동일한 속성 값을 갖게 되는지 여부를 확인합니다. 동일한 속성 값을 갖게 되면 서버는 작업을 종료하고 오류 19 LDAP_CONSTRAINT_VIOLATION을 클라이언트로 반환합니다.

디렉토리에 있는 하나 이상의 하위 트리 또는 특정 객체 클래스 항목에 고유성이 적용되도록 플러그인을 구성할 수 있습니다. 이 구성은 속성 값에 대해 고유성을 적용할 항목 집합을 지정합니다.

다른 속성에 대한 고유성을 적용하려면 UID 고유성 플러그인의 인스턴스를 여러 개 정의합니다. 값이 고유해야 하는 각 속성에 한 개의 플러그인 인스턴스를 정의합니다. 동일한 속성에 여러 개의 플러그인 인스턴스를 정의하여 각 항목 집합에 "별도의" 고유성을 적용할 수도 있습니다. 지정된 속성 값은 각 하위 트리 집합에서 한 번만 허용됩니다.

기존 디렉토리에서 속성 고유성을 활성화해도 기존 항목에서의 고유성은 검사되지 않습니다. 고유성은 항목을 추가하거나 속성을 추가 또는 수정한 경우에만 실행됩니다.

UID 고유성 플러그인은 다중 마스터 복제에 영향을 주기 때문에 기본적으로 비활성화됩니다. 복제 사용 시 UID 고유성 플러그인을 활성화할 수도 있지만 복제 시 고유성 플러그인 사용에 설명된 동작에 주의해야 합니다.

uid 및 다른 속성에 대한 고유성 적용

절에서는 uid 속성에 대한 기본 고유성 플러그인을 활성화하고 구성하는 방법 및 다른 속성에 대한 고유성을 적용하는 방법에 대해 설명합니다.

Procedureuid 속성에 대한 고유성을 적용하는 방법

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

DSCC를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 디렉토리 서비스 제어 센터 인터페이스 및 DSCC 온라인 도움말을 참조하십시오.

DSCC를 사용하는 경우 다른 속성에 대한 고유성을 적용하기 위해 기본 UID 고유성 플러그인을 수정해서는 안 됩니다. UID 고유성 플러그인을 사용하지 않으려면 플러그인을 비활성화된 상태로 두고 다른 속성에 대한 고유성을 적용하는 방법에 설명된 것처럼 다른 속성에 대한 새 플러그인 인스턴스를 만듭니다.

  1. 플러그인을 활성화합니다.


    $ dsconf enable-plugin -h host -p port "uid uniqueness"
  2. 고유성을 적용할 하위 트리의 지정 방법에 따라 플러그인 인수를 수정합니다.

    • 단일 하위 트리의 기본 DN을 지정하려면 다음을 입력합니다.


      $ dsconf set-plugin-prop -h host -p port "uid uniqueness" argument:uid argument:subtreeBaseDN
      

      예를 들면 다음과 같습니다.


      $ dsconf set-plugin-prop -h host1 -p 1389 "uid uniqueness" argument:uid \
       argument:dc=People,dc=example,dc=com
    • 하위 트리를 두 개 이상 지정하려면 다음 명령을 실행하여 하위 트리의 전체 기본 DN이 각 인수 값으로 지정된 인수를 추가합니다.


      $ dsconf set-plugin-prop -h host -p port "uid uniqueness" argument:uid \
       argument:subtreeBaseDN argument:subtreeBaseDN
      
    • 기본 항목의 객체 클래스에 따라 하위 트리를 지정하려면 인수를 아래의 값으로 설정합니다. uid 속성에 대한 고유성은 baseObjectClass가 포함된 항목 아래의 하위 트리에서 적용됩니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 고유성을 적용하도록 선택 사항으로 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.


      $ dsconf set-plugin-prop -h host -p port "uid uniqueness" argument:attribute=uid \
       argument:markerObjectClass=baseObjectClass argument:entryObjectClass=baseObjectClass
      
    • 기존 인수 목록에 인수를 추가하려면 다음 명령을 사용합니다.


      $ dsconf set-plugin-prop -h host -p port "uid uniqueness" argument+:argument-value
      
  3. 변경 사항을 적용하려면 서버를 다시 시작합니다.

Procedure다른 속성에 대한 고유성을 적용하는 방법

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

DSCC를 사용하여 이 작업을 수행할 수 없습니다. 이 절차에 설명된 것처럼 명령줄을 사용하십시오.

  1. 새 플러그인을 만듭니다.


    $ dsconf create-plugin -h host -p port -H lib-path -F init-func \
     -Y type plugin-name 
    

    plugin-name은 속성 이름이 포함된, 자신을 잘 나타내는 짧은 이름이어야 합니다. 예를 들어 메일 아이디 속성에 대한 고유성 플러그인을 만들려면 다음 명령을 사용합니다.


    $ dsconf create-plugin -h host1 -p 1389 -H /opt/SUNWdsee/ds6/lib/uid-plugin.so \
     -F NSUniqueAttr_Init -Y preoperation "mail uniqueness"
  2. 플러그인 등록 정보를 설정합니다.


    $ dsconf set-plugin-prop -h host -p port plugin-name property:value
    

    예를 들어 메일 고유성 플러그인에 대한 등록 정보를 설정하려면 다음 명령을 사용합니다.


    $ dsconf set-plugin-prop -h host1 -p 1389 "mail uniqueness" \
     desc:"Enforce unique attribute values..." version:6.0 \
     vendor:"Sun Microsystems, Inc." depends-on-type:database
  3. 플러그인을 활성화합니다.


    $ dsconf enable-plugin -h host -p port plugin-name
    
  4. 플러그인 인수를 지정합니다.

    이 인수는 고유성을 적용할 하위 트리를 지정하는 방법에 따라 달라집니다.

    • 기본 DN을 따라 하위 트리를 하나 이상 정의하려면 첫 번째 인수는 고유한 값이 있어야 하는 속성의 이름이어야 합니다. 두 번째 인수는 하위 트리 기본 항목의 전체 DN입니다.


      $ dsconf set-plugin-prop -h host -p port plugin-name argument:attribute-name \
       argument:subtreeBaseDN argument:subtreeBaseDN...
    • 기존 인수 목록에 인수를 추가하려면 다음 명령을 사용합니다.


      $ dsconf set-plugin-prop -h host -p port plugin-name argument+:argument-value
      
    • 기본 항목의 객체 클래스에 따라 하위 트리를 정의하려면 attribute=attribute-name을 첫 번째 인수에 포함시켜 고유한 값이 있어야 하는 속성의 이름을 지정해야 합니다. 두 번째 인수는 고유성을 적용할 하위 트리의 기본 항목을 지정하는 baseObjectClass여야 합니다. 이 객체 클래스가 있는 항목을 대상으로 하는 작업에만 플러그인에 고유성을 적용하도록 세 번째 인수에 entryObjectClass를 지정할 수도 있습니다.


      $ dsconf set-plugin-prop -h host -p port plugin-name argument:attribute=attribute-name \
       argument:markerObjectClass=baseObjectClass argument:requiredObjectClass=entryObjectClass
      

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

  5. 변경 사항을 적용하려면 서버를 다시 시작합니다.

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

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

단일 마스터 복제 시나리오

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

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

다중 마스터 복제 시나리오

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

그러나, 이름 지정 속성에 대한 고유성 검사를 수행하는 경우와 모든 마스터에서 동일한 하위 트리 내의 동일한 속성에 대해 고유성 플러그인을 사용하는 경우 UID 고유성 플러그인을 사용할 수 있습니다.

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