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

별도의 여러 데이터 소스 결합

이 구성에서는 가상 디렉토리의 일부 기능이 특정 디렉토리 서비스 요구 사항을 충족하는 조직인 Example.com에 대해 설명합니다.

데이터 저장소 시나리오

Example.com은 별도의 여러 데이터 소스에 조직 데이터를 저장합니다. 레거시 이유로 인해 사용자 데이터는 LDAP 디렉토리, 플랫 LDIF 파일 및 SQL 데이터베이스에 분산됩니다. HR 부서는 o=example.com의 기본 DN을 사용하여 LDAP 디렉토리에 사용자 데이터를 저장합니다. 급여 부서는 데이터를 SQL 데이터베이스에 저장합니다. 관리 부서는 dc=example,dc=com의 기본 DN을 사용하여 부서 및 건물 번호와 같은 관리 데이터를 LDIF 파일에 저장합니다.

또한 Example.com은 Company22라는 회사를 인수했습니다. Company 22 역시 dc=company22,dc=com의 기본 DN을 사용하여 사용자 데이터를 LDAP 디렉토리에 저장합니다.

다음 다이어그램은 Example.com의 사용자 데이터가 저장되는 방법에 대한 상위 수준 보기를 제공합니다.

그림 23–2 별도의 소스에 있는 데이터 저장소

Example.com의 사용자 데이터가 별도의 데이터 소스에 저장되는 방법을 보여주는 그림

클라이언트 응용 프로그램 요구 사항

Example.com에는 별도의 데이터 소스에 저장된 데이터에 대한 액세스 권한을 필요로 하는 여러 LDAP 클라이언트 응용 프로그램이 있습니다. 클라이언트 응용 프로그램의 요구 사항은 각각 다릅니다. 다른 데이터 보기가 필요합니다. 클라이언트가 데이터를 집계하도록 요구하는 경우도 있습니다. 또한 일부 클라이언트 응용 프로그램에는 Example.com의 새 직원을 이전 직원과 함께 관리할 수 있도록 Company22의 사용자 데이터에 대한 액세스 권한이 필요합니다.

다음 다이어그램은 Example.com의 클라이언트 응용 프로그램 요구 사항에 대한 상위 수준 보기를 제공합니다.

그림 23–3 클라이언트 응용 프로그램 요구 사항

Example.com의 LDAP 응용 프로그램의 요구 사항을 보여주는 그림

다음 절에서는 이 샘플 시나리오에 설명된 클라이언트 응용 프로그램의 요구 사항을 충족할 수 있는 충분한 구성 디렉토리 프록시 서버 데이터 보기를 안내합니다. 데이터 보기가 작동하는 방법에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.3 Reference의 17 장, Directory Proxy Server DistributionSun Java System Directory Server Enterprise Edition 6.3 Reference의 18 장, Directory Proxy Server Virtualization을 참조하십시오.

샘플 시나리오의 구성은 다음 절로 구분됩니다.

HR LDAP 디렉토리 및 관리 LDIF 파일의 데이터 집계

HR 부서는 직원 이름, 작업 시작 데이터 및 작업 수준과 같은 정보를 저장합니다. 관리 부서는 건물 코드 및 사무실 번호와 같은 추가 데이터를 저장합니다. HR 데이터를 처리하는 클라이언트 응용 프로그램에는 두 소스의 결합된 데이터에 대한 액세스 권한이 필요합니다. 두 데이터 소스에는 각 항목에 존재하는 공통 속성인 employeeNumber가 있습니다.

다음 다이어그램은 클라이언트 응용 프로그램의 요구 사항을 보여줍니다.

그림 23–4 LDAP 디렉토리 및 LDIF 파일의 데이터 집계

LDAP 디렉토리 및 LDIF 파일의 결합 보기를 보여주는 그림

이 응용 프로그램의 요구 사항을 충족하기 위해 급여 디렉토리 및 관리 LDIF 파일에 대한 데이터 보기가 만들어집니다. 그런 다음 이러한 두 데이터 보기가 결합되어 집계된 데이터에 대한 액세스를 제공합니다. 이 공통 속성을 사용하여 디렉토리 프록시 서버는 각 사용자에 대한 데이터를 집계할 수 있습니다.

단순하게 만들기 위해 이 절에 사용된 명령은 다음 정보를 가정합니다.

각 명령의 완전한 구문을 얻으려면 명령을 옵션 없이 실행합니다. 예를 들면 다음과 같습니다.

$ dpconf create-ldap-data-view
Operands are missing
Usage: dpconf create-ldap-data-view VIEW_NAME POOL_NAME SUFFIX_DN

Procedure급여 디렉토리에 대한 LDAP 데이터 보기 만들기 및 활성화

  1. 급여 디렉토리에 대한 LDAP 데이터 소스를 만듭니다.

    $ dpconf create-ldap-data-source payroll-directory payrollHost:2389
  2. 급여 디렉토리에 대한 LDAP 데이터 소스 풀을 만듭니다.

    $ dpconf create-ldap-data-source-pool payroll-pool
  3. 급여 데이터 소스를 데이터 소스 풀에 첨부합니다.

    $ dpconf attach-ldap-data-source payroll-pool payroll-directory
  4. 첨부된 데이터 소스의 가중치를 구성합니다.

    $ dpconf set-attached-ldap-data-source-prop -h payrollHost -p 2389 \
    payroll-pool payroll-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. 급여 디렉토리에 대한 LDAP 데이터 보기를 만듭니다.

    $ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
  6. 클라이언트 요청을 이 데이터 보기로 전달할 수 있도록 LDAP 데이터 보기를 활성화합니다.

    $ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
  7. 디렉토리 프록시 서버를 다시 시작하여 변경 사항을 적용합니다.

    $ dpadm restart /local/myDPS

Procedure관리 데이터에 대한 LDIF 데이터 보기 만들기 및 활성화

  1. 관리 데이터에 대한 LDIF 데이터 보기를 만듭니다.

    $ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
  2. 관리 데이터에 대한 LDIF 데이터 보기를 활성화합니다.

    $ dpconf set-ldif-data-view-prop admin-view is-enabled:true
  3. 관리 보기가 급여 보기에서 둘 이상의 항목에 사용되는 항목을 포함하도록 지정합니다.

    $ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true

    이 등록 정보를 TRUE로 설정할 경우 급여 데이터 보기에서 항목을 삭제하면 관리 데이터 보기의 공유 항목이 삭제되지 않습니다. 급여 데이터 보기에 항목을 추가하면 항목이 보조 데이터 보기에만 추가됩니다(아직 없는 경우).

  4. 디렉토리 프록시 서버를 다시 시작하여 변경 사항을 적용합니다.

    $ dpadm restart /local/myDPS

Procedure급여 데이터 보기 및 관리 데이터 보기 결합

  1. 관리 데이터 보기에서 데이터가 집계되는 방법을 지정하는 필터 결합 규칙을 만듭니다.

    다음 결합 규칙은 사용자 항목의 employeeNumber 속성을 기준으로 데이터를 결합해야 함을 지정합니다.

    $ dpconf set-ldif-data-view-prop admin-view \
    filter-join-rule:employeeNumber=\${payroll-view.employeeNumber}
  2. 두 데이터 보기를 집계하는 결합 데이터 보기를 만듭니다.

    결합 데이터 보기의 경우 조직에서는 접미어 DN dc=example,dc=com을 사용합니다.

    $ dpconf create-join-data-view example-join-view payroll-view admin-view \
    dc=example,dc=com

DN의 이름을 바꾸어 Company 22의 데이터를 Example.Com의 DIT에 추가

Company 22의 사용자 데이터는 DN dc=company22,dc=com에 저장됩니다. Example.com에서는 대부분 이 사용자 데이터를 별도로 유지하려고 하지만 한 클라이언트 응용 프로그램은 나머지 Example.com 직원과 함께 Company 22 직원을 관리해야 합니다. 이 클라이언트 응용 프로그램의 경우 Company 22 사용자 데이터의 모양은 Example.com 데이터와 같아야 합니다.

다음 다이어그램은 클라이언트 응용 프로그램의 요구 사항을 보여줍니다.

그림 23–5 DN 이름 바꾸기

DN의 이름을 바꾸어 DIT에 데이터를 추가하는 그림

이 응용 프로그램의 요구 사항을 충족하기 위해 dc=example,dc=com의 가상 DN을 사용하여 데이터 보기가 Company 22의 디렉토리에 대해 만들어집니다.

단순하게 만들기 위해 이 절에 사용된 명령은 다음 정보를 가정합니다.

Procedure가상 DN을 사용하여 Company 22의 디렉토리에 대한 데이터 보기 만들기

  1. Company 22의 디렉토리에 대한 LDAP 데이터 소스를 만듭니다.

    $ dpconf create-ldap-data-source company22-directory company22Host:2389
  2. Company 22의 디렉토리에 대한 LDAP 데이터 소스 풀을 만듭니다.

    $ dpconf create-ldap-data-source-pool company22-pool
  3. Company 22의 데이터 소스를 데이터 소스 풀에 첨부합니다.

    $ dpconf attach-ldap-data-source company22-pool company22-directory
  4. 첨부된 데이터 소스의 가중치를 구성합니다.

    $ dpconf set-attached-ldap-data-source-prop -h company22Host -p 2389 \
    company22-pool company22-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. dc=example,dc=com의 가상 DN을 사용하여 Company 22의 디렉토리에 대한 LDAP 데이터 보기를 만듭니다.

    $ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
  6. 이 가상 DN을 Company 22의 디렉토리에 있는 실제 DN에 매핑하도록 디렉토리 프록시 서버에 지시합니다.

    $ dpconf set-ldap-data-view-prop company22-view \
    dn-mapping-source-base-dn:dc=company22,dc=com
  7. 클라이언트 요청을 이 데이터 보기에 전달할 수 있도록 Company 22의 디렉토리에 대한 LDAP 데이터 보기를 활성화합니다.

    $ dpconf set-ldap-data-view-prop company22-view is-enabled:true
  8. 디렉토리 프록시 서버를 다시 시작하여 변경 사항을 적용합니다.

    $ dpadm restart /local/myDPS

Company 22의 데이터를 HR 데이터에 추가

HR 부서에서는 Example.com과 새로 인수한 Company 22에 대한 HR 데이터의 집계된 보기가 필요합니다. 다음 다이어그램은 전역 HR 응용 프로그램의 요구 사항을 보여줍니다.

그림 23–6 결합 데이터 보기 및 LDAP 데이터 보기의 데이터 집계

LDAP 디렉토리 및 다른 결합 보기의 복잡한 결합 보기를 보여주는 그림

Procedure결합 데이터 보기 및 Company 22 데이터 보기 예 결합

  1. Company 22 데이터 보기에서 데이터가 집계되는 방법을 지정하는 필터 결합 규칙을 만듭니다.

    다음 결합 규칙은 사용자 항목의 employeeNumber 속성을 기준으로 데이터를 결합해야 함을 지정합니다.

    $ dpconf set-ldif-data-view-prop company22-view \
    filter-join-rule:employeeNumber=\${example-join-view.employeeNumber}
  2. Company 22의 데이터 보기와 Example.com의 결합 데이터 보기를 집계하는 결합 데이터 보기를 만듭니다.

    $ dpconf create-join-data-view global-join-view example-join-view \
    company22-view dc=example,dc=com

SQL 데이터베이스의 급여 데이터에 액세스할 수 있도록 LDAP 클라이언트 활성화

Example.com의 급여 부서는 급여 데이터를 SQL 데이터베이스에 저장합니다. 이 데이터베이스에는 두 개의 테이블(employeesalary)이 있습니다. Example.com에는 해당 데이터에 대한 액세스 권한을 필요로 하는 LDAP 클라이언트 응용 프로그램이 있습니다. 이 클라이언트 응용 프로그램의 경우 SQL 데이터의 모양이 LDAP 데이터와 같아야 합니다.

다음 다이어그램은 클라이언트 응용 프로그램의 요구 사항을 보여줍니다.

그림 23–7 SQL 데이터베이스에 대한 액세스를 제공하는 JDBC 데이터 보기

SQL 데이터베이스에 대한 액세스를 제공하는 JDBC 데이터 보기를 보여주는 그림

이 응용 프로그램의 요구 사항을 충족하기 위해 SQL 테이블의 열을 LDAP 속성에 매핑하는 JDBC 데이터 보기가 만들어집니다.

단순하게 만들기 위해 이 절에 사용된 명령은 다음 정보를 가정합니다.

ProcedureExample.com의 급여 데이터베이스에 대한 JDBC 데이터 보기 만들기

  1. 급여 데이터베이스에 대한 JDBC 데이터 소스를 만듭니다.

    $ dpconf create-jdbc-data-source -b payrollsqldb \
      -B jdbc:payrollsqldb:payrollsql://localhost/ \
      -J file://payrollsqldb.jar \
      -S org.payrollsqldb.jdbcDriver payroll-src 
  2. SQL 데이터베이스의 등록 정보를 사용하여 JDBC 데이터 소스를 구성합니다.

    $ dpconf set-jdbc-data-source-prop payroll-src \
      db-user:proxy db-pwd-file:password-file-location/myPasswordFile
  3. JDBC 데이터 소스를 활성화합니다.

    $ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
  4. 급여 데이터베이스에 대한 JDBC 데이터 소스 풀을 만듭니다.

    $ dpconf create-jdbc-data-source-pool payroll-pool
  5. 급여 데이터 소스를 데이터 소스 풀에 첨부합니다.

    $ dpconf attach-jdbc-data-source payroll-pool payroll-src
  6. o=payroll의 가상 DN을 사용하여 급여 데이터베이스에 대한 JDBC 데이터 보기를 만듭니다.

    $ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
  7. SQL 데이터베이스의 각 테이블에 대한 JDBC 테이블을 만듭니다.

    $ dpconf create-jdbc-table jdbc-employee employee
    $ dpconf create-jdbc-table jdbc-salary salary
  8. SQL 테이블의 각 열에 대한 JDBC 속성을 추가합니다.

    $ dpconf add-jdbc-attr jdbc-employee eid employee_id
    $ dpconf add-jdbc-attr jdbc-employee first firstname
    $ dpconf add-jdbc-attr jdbc-employee last lastname
    $ dpconf add-jdbc-attr jdbc-employee description description
    $ dpconf add-jdbc-attr jdbc-employee spouse spousename
    $ dpconf add-jdbc-attr jdbc-salary salary salary
    $ dpconf add-jdbc-attr jdbc-salary social ssn
  9. JDBC 데이터 보기를 통해 보기 가능한 속성과 쓰기 가능한 속성을 지정합니다.

    $ dpconf set-jdbc-data-view-prop payroll-view \
     viewable-attr:eid \
     viewable-attr:first \
     viewable-attr:last \
     viewable-attr:desc \
     viewable-attr:spouse \
     viewable-attr:salary \
     viewable-attr:social 
     $ dpconf set-jdbc-data-view-prop payroll-view \
     writable-attr:eid \
     writable-attr:first \
     writable-attr:last \
     writable-attr:description \
     writable-attr:spouse \
     writable-attr:salary \
    writable-attr:social
  10. LDAP 객체 클래스에 매핑되는 JDBC 객체 클래스를 만듭니다.

    다음 명령은 LDAP person 객체 클래스에 매핑되는 객체 클래스를 만듭니다. 객체 클래스는 직원 테이블을 기본 테이블로 사용하고 급여 테이블을 보조 테이블로 사용해야 함을 지정합니다. eid 속성을 사용하여 DN을 구성해야 합니다.

    $ dpconf create-jdbc-object-class payroll-view \
     person jdbc-employee jdbc-salary eid
  11. 보조 테이블의 데이터가 기본 테이블의 데이터에 연결되는 방법을 지정하는 필터 결합 규칙을 보조 테이블에서 만듭니다.

    다음 결합 규칙은 employee_id 속성을 기준으로 데이터를 결합해야 함을 지정합니다.

    $ dpconf set-jdbc-table-prop jdbc-salary \
    filter-join-rule:employee_id=\${employee.employee_id}
  12. JDBC 객체 클래스에서 수퍼 클래스를 만듭니다.

    $ dpconf set-jdbc-object-class-prop payroll-view person super-class:extensibleObject

가상 액세스 제어 추가

LDAP 디렉토리에 대한 액세스 제어는 디렉토리 자체에 ACI를 정의하여 처리됩니다. 가상 데이터 보기를 통해 데이터 소스에 액세스할 경우 이러한 데이터 보기를 통해 표시되는 데이터에만 적용하도록 ACI를 정의해야 합니다.

디렉토리 프록시 서버를 통한 모든 액세스는 연결 처리기에서 제어됩니다. 연결 처리기에 대한 자세한 내용은 26 장, 클라이언트와 디렉토리 프록시 서버 간의 연결 을 참조하십시오.

Procedure익명 액세스를 허용하는 ACI 추가

  1. ACI를 추가합니다.

    $ ldapadd -v -D "cn=proxy manager" -w password -p 389
    dn: cn=ldifonly-acis,cn=virtual access controls
    objectclass: top
    objectclass: aciSource
    cn: ldifonly-acis
    dpsaci: (targetattr="*")(version 3.0; acl "anonymous_access"; allow(all) \
    (userdn="ldap:///anyone");)
  2. 연결 처리기에서 가상 ACI를 가리킵니다.

    $ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
  3. 연결 처리기를 활성화합니다.

    $ dpconf set-connection-handler-prop anonymous is-enabled:true