Sun Java System Directory Server Enterprise Edition 6.3 管理ガイド

仮想設定の例

次の節では、2 つの設定例について説明します。これらの設定は、仮想ディレクトリの主な機能と、これらの機能の設定方法を示しています。

LDAP ディレクトリと MySQL データベースの結合

ここでの手順は、LDAP ディレクトリと MySQL データベースを結合する仮想設定の例について説明しています。LDAP ディレクトリは、一次データソースとして、ユーザー情報のほとんどが含まれています。mySQL データベースには、ユーザーについての追加情報が含まれています。結果として得られる設定を次の図に示します。

図 23–1 仮想設定の例

図は、LDAP データビューおよび JDBC データビューから成る結合データビューを示しています。

install-path /ds6/ldif/Example.ldif のサンプルデータを使用して、この例を複製したり、サンプルデータを独自のデータに置き換えられます。

この設定は、3 つの部分に分割できます。

わかりやすいように、ここでのコマンドはすべて Directory Proxy Server が /local/dps のローカルホストで実行されていることを前提としています。コマンドは、次の環境変数が設定されていることも前提としています。

DIR_PROXY_PORT

1389

LDAP_ADMIN_PWF

pwd.txt、管理者パスワードを含むファイル

DIRSERV_PORT

4389

LDAP_ADMIN_USER

cn=Directory Manager

LDAP データビューの設定とテスト

ProcedureLDAP データビューを設定する

始める前に

ここでの作業は次の情報を前提としています。

  1. Directory Server インスタンスに対して、myds1 という名前の LDAP データソースを作成します。


    % dpconf create-ldap-data-source myds1 host1:4389
  2. データソースを有効にして、データソースへの書き込み操作を許可します。


    % dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false
  3. myds1-pool という名前の LDAP データソースプールを作成します。


    % dpconf create-ldap-data-source-pool myds1-pool
  4. LDAP データソースを LDAP データソースプールに接続します。


    % dpconf attach-ldap-data-source myds1-pool myds1
  5. データソースがそのデータソースプールからのバインド、追加、検索、および変更操作の 100% を受け取るように指定します。


    % dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \
     bind-weight:100 modify-weight:100 search-weight:100
  6. ベース DN が dc=example,dc=commyds1–view という名前のデータソースプールの LDAP データビューを作成します。


    % dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com

ProcedureLDAP データビューをテストする

  1. dc=example,dc=com のユーザーとして、LDAP データソース内のエントリをすべて検索して、データビューから読み取りができることを確認します。


    % ldapsearch -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery \
     -b dc=example,dc=com "objectclass=*"

    注 –

    dc=example,dc=com のユーザーの資格を使用します。cn=Directory Manager を使用する場合は、この DN を処理するようにデータビューを定義する必要があります。


  2. dc=example,dc=com のユーザーとして、userPassword 属性を変更して、データビューに書き込みができることを確認します。


    % ldapmodify -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery
    dn: uid=kvaughan,ou=people,dc=example,dc=com
    changetype: modify
    replace: userPassword
    userPassword: myNewPassword

    注 –

    Directory Server 内のデフォルト ACI はユーザーが自分自身のパスワードを変更することを許可しています。


JDBC データビューの設定とテスト

次の作業は、mySQL データベースがインストールされて実行中であり、データベースにデータが存在し、mySQL データベースが次のように設定されていることが前提となっています。

次の表は、データベース内のテーブルと複合フィールドを説明しています。JDBC データビューを設定するためにこの情報が必要です。

mySQL テーブル 

フィールド 

EMPLOYEE

IDSURNAMEPASSWORD ROOMCOUNTRY_ID

COUNTRY

IDNAME

PHONE

USER_IDNUMBER

ProcedureJDBC データビューを設定する

  1. SQL データベース用の mysql1 という名前の JDBC データソースを作成します。


    % dpconf create-jdbc-data-source -b sample_sql \
     -B jdbc:mysql://host2.example.com:3306/ \
     -J file:/net/host2.example/local/mysql/lib/jdbc.jar \
     -S com.mysql.jdbc.Driver mysql1
  2. SQL データベースのユーザー名とパスワードファイルを指定します。


    % dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root
  3. プロキシサーバーを再起動します。


    % dpadm restart /local/dps
  4. データソースを有効にして、データソースへの書き込み操作を許可します。


    % dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false
  5. mysql1–pool という名前の JDBC データソースプールを作成します。


    % dpconf create-jdbc-data-source-pool mysql1-pool
  6. JDBC データソースをデータソースプールに接続します。


    % dpconf attach-jdbc-data-source mysql1-pool mysql1
  7. ベース DN が o=sqlmyjdbc1–view という名前のデータソースプールの JDBC データビューを作成します。


    % dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql
  8. MySQL データベースの各テーブルの JDBC テーブルを作成します。


    % dpconf create-jdbc-table employee1 EMPLOYEE
    % dpconf create-jdbc-table country1 COUNTRY
    % dpconf create-jdbc-table phone1 PHONE

    SQL データベースのテーブル名は大文字と小文字を区別します。SQL データベースの場合と同じ文字 (大文字または小文字) を使用していることを確認してください。

  9. 各テーブルの各列の JDBC 属性を作成します。

    JDBC 属性を作成すると、MySQL 列が LDAP 属性にマップされます。


    % dpconf add-jdbc-attr employee1 uid ID
    % dpconf add-jdbc-attr employee1 sn SURNAME
    % dpconf add-jdbc-attr employee1 userPassword PASSWORD
    % dpconf add-jdbc-attr employee1 roomNumber ROOM
    % dpconf add-jdbc-attr phone1 telephoneNumber NUMBER
    % dpconf add-jdbc-attr country1 countryName NAME

    phone1 user_id 列と country1 id 列には、LDAP 属性 uid がすでに作成されている EMPLOYEE.ID に存在する値だけが含まれるため、これらの列の JDBC 属性を必ずしも作成する必要はありません。

  10. LDAP person オブジェクトクラスに対して JDBC オブジェクトクラスを作成します。

    ここでは、employee1 テーブルを一次テーブル、country1 テーブルと phone1 テーブルを二次テーブルとします。JDBC オブジェクトクラスの作成にも DN が必要です。この例では、DN は uid 属性とデータビューのベース DN から構築されます。


    % dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid
  11. 一次テーブルと二次テーブル間の結合ルールを定義します。

    結合ルールは二次テーブルで定義され、そのテーブルからのデータが一次テーブルのデータにリンクされる方法を決定します。


    % dpconf set-jdbc-table-prop country1 filter-join-rule:ID=\${EMPLOYEE.COUNTRY_ID}
    % dpconf set-jdbc-table-prop phone1 filter-join-rule:USER_ID=\${EMPLOYEE.ID}
  12. JDBC オブジェクトクラスのスーパークラスを指定します。

    スーパークラスは、JDBC オブジェクトクラスが属性を継承した LDAP オブジェクトクラスを示します。


    % dpconf set-jdbc-object-class-prop mysql1-view person super-class:top

Procedure必要な ACI を作成する

JDBC データビューをテストする前に、ACI を設定してデータビューへの書き込みアクセスを有効にします。デフォルトで、LDAP データビュー以外への書き込みアクセスは拒否されます。この例では、ユーザーに自分のパスワードの変更を許可するグローバル ACI を 1 つ追加するだけで十分です。

  1. プロキシマネージャーとして、ACI のプールを JDBC データソースに追加し、ユーザーに自分のエントリの変更を許可するグローバル ACI を追加します。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=mysql1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=sql") 
    (version 3.0; acl "enable all access for all users "; allow(all) 
    userdn="ldap:///uid=kvaughan,o=sql";)
    cn: mysql1
  2. o=sql ドメインへの接続を処理するために接続ハンドラを作成します。


    % dpconf create-connection-handler mysql1-handler
  3. 接続ハンドラを有効にして、o=sql ドメイン内のユーザーからのバインドをすべて処理するように設定します。


    % dpconf set-connection-handler-prop mysql1-handler is-enabled:true \
     bind-dn-filters:"uid=.*,o=sql"
  4. 前の手順で追加した ACI のプールを使用するように接続ハンドラを設定します。


    % dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1

ProcedureJDBC データビューをテストする

  1. o=sql のユーザーとして JDBC データソースを検索し、データビューから読み取りができることを確認します。


    % ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*"

    注 –

    o=sql のユーザーの資格を使用する必要があります。


  2. o=sql のユーザーとして、 userPassword 属性を変更して、データビューに書き込みができることを確認します。


    % ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd
    dn: uid=kvaughan,o=sql
    changetype: modify
    replace: userPassword
    userPassword: myNewpwd

結合データビューの作成とテスト

Procedure結合データビューを作成する

  1. myjoin1–view という名前の結合データビューを作成します。

    LDAP データビューを一次データビュー、JDBC データビューを二次データビューに指定します。


    % dpconf create-join-data-view myjoin1-view myds1-view mysql1-view o=join
  2. 二次データビューで結合ルールを定義します。

    次の結合ルールは、二次データビューのエントリの uid 属性が一次データビューのエントリの uid 属性に一致することを指定します。


    % dpconf set-jdbc-data-view-prop mysql1-view filter-join-rule:uid=\${myds1-view.uid}
  3. 結合データビューでフィルタ結合ルールが設定されている場合は、二次データビューで仮想変換ルールを設定して、その結合データビューでエントリを追加できるようにする必要があります。


    dpconf add-virtual-transformation secondary-view-name \
    write add-attr-value dn uid=\${uid}

    注 –

    このルールを設定しなければ、結合データビューにエントリを追加できません。


  4. 結合データビューを使用して、一次データビューに対して読み書きができる属性のセットを定義します。


    % dpconf set-ldap-data-view-prop myds1-view viewable-attr:dn \
    viewable-attr:cn viewable-attr:sn viewable-attr:givenName \
    viewable-attr:objectClass viewable-attr:ou viewable-attr:l \
    viewable-attr:uid viewable-attr:mail viewable-attr:telephoneNumber \
    viewable-attr:facsimileTelephoneNumber viewable-attr:roomNumber \
    viewable-attr:userPassword
    % dpconf set-ldap-data-view-prop myds1-view writable-attr:dn \
    writable-attr:cn writable-attr:sn writable-attr:givenName \
    writable-attr:objectClass writable-attr:ou writable-attr:l \
    writable-attr:uid writable-attr:mail writable-attr:telephoneNumber \
     writable-attr:facsimileTelephoneNumber writable-attr:roomNumber \
    writable-attr:userPassword

    これらの定義は、結合ビューのコンテキストにのみ適用されます。LDAP データビューに直接アクセスした場合、デフォルトでは、すべての属性が読み書きできます。

  5. 結合データビューを使用して、二次データビューに対して読み書きができる属性のセットを定義します。


    % dpconf set-jdbc-data-view-prop mysql1-view viewable-attr:dn \
     viewable-attr:objectclass viewable-attr:sn viewable-attr:roomNumber \
     viewable-attr:userpassword viewable-attr:jobtitle viewable-attr:countryName \
     viewable-attr:telephoneNumber
    % dpconf set-jdbc-data-view-prop mysql1-view writable-attr:dn \
    writable-attr:objectclass writable-attr:sn writable-attr:roomNumber \
    writable-attr:userpassword writable-attr:jobtitle \
    writable-attr:countryName writable-attr:telephoneNumber

    これらの定義は、結合ビューのコンテキストにのみ適用されます。JDBC データビューに直接アクセスした場合、デフォルトでは、すべての属性が読み書きできます。

Procedure必要な ACI を作成する

  1. プロキシマネージャーとして、結合データビューへの匿名アクセスを許可するグローバル ACI を追加します。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=myjoin1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=join") 
    (version 3.0; acl "anonymous_access"; allow(all) userdn="ldap:///anyone";)
    cn: myjoin1
  2. 前の手順で追加した ACI のプールを使用するように接続ハンドラを設定します。


    % dpconf set-connection-handler-prop default-connection-handler aci-source:myjoin1

Procedure結合データビューをテストする

  1. 匿名ユーザーとして、結合データビューを検索します。

    ここでは、Kirsten Vaughan のエントリを検索し、両方の結合ビューからのデータが取得されるかどうかを確認します。


    % ldapsearch -p 1389 -b o=join "uid=kvaughan"

    返されるエントリには、LDAP データビューと JDBC データビューの両方からの属性が含まれていることに注意してください。

  2. o=join のユーザーとして、userPassword 属性を変更して、結合データビューに書き込みができることを確認します。


    % ldapmodify -p 1389
    dn: uid=kvaughan,ou=people,o=join
    changetype: modify
    replace: userPassword
    userPassword: myPassword

複数の異種データソースの結合

この設定は、仮想ディレクトリの機能のいくつかが特定のディレクトリサービス要件を満たしている 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 アプリケーションの要件を示しています。

次の節では、Directory Proxy Server データビューがこのサンプルシナリオで説明したクライアントアプリケーション要件を十分満たすことができる設定について見ていきます。データビューの機能方法については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の第 17 章「Directory Proxy Server Distribution」および『Sun 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 ファイル用にデータビューが作成されます。これらの 2 つのデータビューは、その後、集約されたデータにアクセスできるよう結合されます。この共通属性によって、Directory Proxy Server は各ユーザーのデータを集約できます。

わかりやすいように、ここで使用するコマンドは次の情報を前提としています。

各コマンドの完全な構文を取得するために、オプションを使用せずにコマンドを実行します。次に例を示します。

$ 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. 変更を有効にするために、Directory Proxy Server を再起動します。

    $ 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. 変更を有効にするために、Directory Proxy Server を再起動します。

    $ dpadm restart /local/myDPS

Procedure給与データビューと管理データビューの結合

  1. データの集約方法を指定するフィルタ結合ルールを管理データビューで作成します。

    次の結合ルールは、ユーザーエントリの employeeNumber 属性に基づいてデータが結合されるよう指定します。

    $ dpconf set-ldif-data-view-prop admin-view \
    filter-join-rule:employeeNumber=\${payroll-view.employeeNumber}
  2. 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 はこのユーザーデータをほとんどの場合に区別しておきたいと考えていますが、あるクライアントアプリケーションは Company 22 の従業員を Example.com の残りの従業員とともに管理する必要があります。このクライアントアプリケーションは Company 22 のユーザーデータが Example.com のデータのように見えることを必要としています。

次の図は、クライアントアプリケーションの要件を示しています。

図 23–5 DN の名前の変更

図は、データを DIT に追加するための DN の名前の変更を示しています。

このアプリケーション要件を満たすために、仮想 DN の dc=example,dc=com のデータビューが 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. 仮想 DN の dc=example,dc=com で Company 22 のディレクトリの LDAP データビューを作成します。

    $ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
  6. この仮想 DN を Company 22 のディレクトリの実際の DN にマップするよう Directory Proxy Server に命令します。

    $ 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. 変更を有効にするために、Directory Proxy Server を再起動します。

    $ 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

LDAP クライアントによる SQL データベース内の給与データへのアクセスの有効化

Example.com の給与部門は給与データを SQL データベースに保存しています。データベースには、employee テーブルと salary テーブルの 2 つのテーブルがあります。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. 仮想 DN の o=payroll で給与データベースの 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 を定義する必要があります。

Directory Proxy Server を経由するアクセスはすべて、接続ハンドラによって制御されます。接続ハンドラについては、第 26 章「クライアントと Directory Proxy Server の接続」を参照してください。

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