次の節では、2 つの設定例について説明します。これらの設定は、仮想ディレクトリの主な機能と、これらの機能の設定方法を示しています。
ここでの手順は、LDAP ディレクトリと MySQL データベースを結合する仮想設定の例について説明しています。LDAP ディレクトリは、一次データソースとして、ユーザー情報のほとんどが含まれています。mySQL データベースには、ユーザーについての追加情報が含まれています。結果として得られる設定を次の図に示します。
install-path /ds6/ldif/Example.ldif のサンプルデータを使用して、この例を複製したり、サンプルデータを独自のデータに置き換えられます。
この設定は、3 つの部分に分割できます。
LDAP データビューの設定とテスト
JDBC データビューの設定とテスト
結合データビューの設定とテスト
わかりやすいように、ここでのコマンドはすべて Directory Proxy Server が /local/dps のローカルホストで実行されていることを前提としています。コマンドは、次の環境変数が設定されていることも前提としています。
1389
pwd.txt、管理者パスワードを含むファイル
4389
cn=Directory Manager
ここでの作業は次の情報を前提としています。
Directory Server インスタンスが host1 上のポート 4389 で実行されている。
Directory Server のデータがサフィックス dc=example,dc=com の下に保存されている。この例と同じ環境を構築するには、Directory Server インスタンスとサフィックス dc=example,dc=com を作成し、install-path/ds6/ldif/Example.ldif のサンプルデータをインポートしてください。
Directory Server インスタンスに対して、myds1 という名前の LDAP データソースを作成します。
% dpconf create-ldap-data-source myds1 host1:4389 |
データソースを有効にして、データソースへの書き込み操作を許可します。
% dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false |
myds1-pool という名前の LDAP データソースプールを作成します。
% dpconf create-ldap-data-source-pool myds1-pool |
LDAP データソースを LDAP データソースプールに接続します。
% dpconf attach-ldap-data-source myds1-pool myds1 |
データソースがそのデータソースプールからのバインド、追加、検索、および変更操作の 100% を受け取るように指定します。
% dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \ bind-weight:100 modify-weight:100 search-weight:100 |
ベース DN が dc=example,dc=com で myds1–view という名前のデータソースプールの LDAP データビューを作成します。
% dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com |
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 を処理するようにデータビューを定義する必要があります。
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 はユーザーが自分自身のパスワードを変更することを許可しています。
次の作業は、mySQL データベースがインストールされて実行中であり、データベースにデータが存在し、mySQL データベースが次のように設定されていることが前提となっています。
データベース名: sample_sql
データベース URL: host2.example.com:3306/
JDBC ドライバ URL: file:/net/host2.example/local/mysql/lib/jdbc.jar
ドライバクラス: com.mysql.jdbc.Driver
データベースユーザー: root
データベースパスワードファイル: mysqlpwd.txt
次の表は、データベース内のテーブルと複合フィールドを説明しています。JDBC データビューを設定するためにこの情報が必要です。
mySQL テーブル |
フィールド |
---|---|
EMPLOYEE |
ID、SURNAME、PASSWORD、 ROOM、COUNTRY_ID |
COUNTRY |
ID、NAME |
PHONE |
USER_ID、NUMBER |
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 |
SQL データベースのユーザー名とパスワードファイルを指定します。
% dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root |
プロキシサーバーを再起動します。
% dpadm restart /local/dps |
データソースを有効にして、データソースへの書き込み操作を許可します。
% dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false |
mysql1–pool という名前の JDBC データソースプールを作成します。
% dpconf create-jdbc-data-source-pool mysql1-pool |
JDBC データソースをデータソースプールに接続します。
% dpconf attach-jdbc-data-source mysql1-pool mysql1 |
ベース DN が o=sql で myjdbc1–view という名前のデータソースプールの JDBC データビューを作成します。
% dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql |
MySQL データベースの各テーブルの JDBC テーブルを作成します。
% dpconf create-jdbc-table employee1 EMPLOYEE % dpconf create-jdbc-table country1 COUNTRY % dpconf create-jdbc-table phone1 PHONE |
SQL データベースのテーブル名は大文字と小文字を区別します。SQL データベースの場合と同じ文字 (大文字または小文字) を使用していることを確認してください。
各テーブルの各列の 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 属性を必ずしも作成する必要はありません。
LDAP person オブジェクトクラスに対して JDBC オブジェクトクラスを作成します。
ここでは、employee1 テーブルを一次テーブル、country1 テーブルと phone1 テーブルを二次テーブルとします。JDBC オブジェクトクラスの作成にも DN が必要です。この例では、DN は uid 属性とデータビューのベース DN から構築されます。
% dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid |
一次テーブルと二次テーブル間の結合ルールを定義します。
結合ルールは二次テーブルで定義され、そのテーブルからのデータが一次テーブルのデータにリンクされる方法を決定します。
% 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} |
JDBC オブジェクトクラスのスーパークラスを指定します。
スーパークラスは、JDBC オブジェクトクラスが属性を継承した LDAP オブジェクトクラスを示します。
% dpconf set-jdbc-object-class-prop mysql1-view person super-class:top |
JDBC データビューをテストする前に、ACI を設定してデータビューへの書き込みアクセスを有効にします。デフォルトで、LDAP データビュー以外への書き込みアクセスは拒否されます。この例では、ユーザーに自分のパスワードの変更を許可するグローバル ACI を 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 |
o=sql ドメインへの接続を処理するために接続ハンドラを作成します。
% dpconf create-connection-handler mysql1-handler |
接続ハンドラを有効にして、o=sql ドメイン内のユーザーからのバインドをすべて処理するように設定します。
% dpconf set-connection-handler-prop mysql1-handler is-enabled:true \ bind-dn-filters:"uid=.*,o=sql" |
前の手順で追加した ACI のプールを使用するように接続ハンドラを設定します。
% dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1 |
o=sql のユーザーとして JDBC データソースを検索し、データビューから読み取りができることを確認します。
% ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*" |
o=sql のユーザーの資格を使用する必要があります。
o=sql のユーザーとして、 userPassword 属性を変更して、データビューに書き込みができることを確認します。
% ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd dn: uid=kvaughan,o=sql changetype: modify replace: userPassword userPassword: myNewpwd |
myjoin1–view という名前の結合データビューを作成します。
LDAP データビューを一次データビュー、JDBC データビューを二次データビューに指定します。
% dpconf create-join-data-view myjoin1-view myds1-view mysql1-view o=join |
二次データビューで結合ルールを定義します。
次の結合ルールは、二次データビューのエントリの uid 属性が一次データビューのエントリの uid 属性に一致することを指定します。
% dpconf set-jdbc-data-view-prop mysql1-view filter-join-rule:uid=\${myds1-view.uid} |
結合データビューでフィルタ結合ルールが設定されている場合は、二次データビューで仮想変換ルールを設定して、その結合データビューでエントリを追加できるようにする必要があります。
dpconf add-virtual-transformation secondary-view-name \ write add-attr-value dn uid=\${uid} |
このルールを設定しなければ、結合データビューにエントリを追加できません。
結合データビューを使用して、一次データビューに対して読み書きができる属性のセットを定義します。
% 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 データビューに直接アクセスした場合、デフォルトでは、すべての属性が読み書きできます。
結合データビューを使用して、二次データビューに対して読み書きができる属性のセットを定義します。
% 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 データビューに直接アクセスした場合、デフォルトでは、すべての属性が読み書きできます。
プロキシマネージャーとして、結合データビューへの匿名アクセスを許可するグローバル 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 |
前の手順で追加した ACI のプールを使用するように接続ハンドラを設定します。
% dpconf set-connection-handler-prop default-connection-handler aci-source:myjoin1 |
ここでは、Kirsten Vaughan のエントリを検索し、両方の結合ビューからのデータが取得されるかどうかを確認します。
% ldapsearch -p 1389 -b o=join "uid=kvaughan" |
返されるエントリには、LDAP データビューと JDBC データビューの両方からの属性が含まれていることに注意してください。
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 のユーザーデータがどのように保存されているかをまとめたものです。
Example.com には、異種データソースに保存されたデータにアクセスする必要のある LDAP クライアントアプリケーションがいくつかあります。クライアントアプリケーションの要件はすべて同じではありません。異なるデータビューは必要です。場合によっては、クライアントはデータを集約する必要があります。さらに、Example.com の新しい従業員を以前からの従業員とともに管理できるように、一部のクライアントアプリケーションは Company22 のユーザーデータにアクセスする必要があります。
次の図は、Example.com のクライアントアプリケーション要件をまとめたものです。
次の節では、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 部門は従業員名、職務開始データ、職務レベルなどの情報を保存しています。管理部門は、建築基準法や会社の電話番号などの追加データを保存しています。HR データを処理するクライアントアプリケーションは、両方のソースからの複合データにアクセスする必要があります。各エントリ内の属性 employeeNumber は両方のデータソースに共通です。
次の図は、クライアントアプリケーションの要件を示しています。
このアプリケーション要件を満たすために、給与ディレクトリと管理 LDIF ファイル用にデータビューが作成されます。これらの 2 つのデータビューは、その後、集約されたデータにアクセスできるよう結合されます。この共通属性によって、Directory Proxy Server は各ユーザーのデータを集約できます。
わかりやすいように、ここで使用するコマンドは次の情報を前提としています。
Directory Proxy Server インスタンスはローカルホスト上のデフォルト LDAP ポート (389) で実行されている。
Directory Proxy Server インスタンスは、/local/myDPS にある。
プロキシマネージャーのパスワードを含むファイルへのパスは、変数 LDAP_ADMIN_PWF として設定されている。Directory Proxy Server 環境変数の設定の詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide』の「Environment Variables」を参照してください。
給与 LDAP ディレクトリは payrollHost という名前のホストのポート 2389 で実行されている。
管理データを保存している LDIF ファイルの名前は、 example.ldif である。
各コマンドの完全な構文を取得するために、オプションを使用せずにコマンドを実行します。次に例を示します。
$ dpconf create-ldap-data-view Operands are missing Usage: dpconf create-ldap-data-view VIEW_NAME POOL_NAME SUFFIX_DN
給与ディレクトリの LDAP データソースを作成します。
$ dpconf create-ldap-data-source payroll-directory payrollHost:2389
給与ディレクトリの LDAP データソースプールを作成します。
$ dpconf create-ldap-data-source-pool payroll-pool
給与データソースをデータソースプールに接続します。
$ dpconf attach-ldap-data-source payroll-pool payroll-directory
接続済みデータソースのウェイトを設定します。
$ 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
給与ディレクトリの LDAP データビューを作成します。
$ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
クライアント要求がこのデータビューに経路指定できるように LDAP データビューを有効にします。
$ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
変更を有効にするために、Directory Proxy Server を再起動します。
$ dpadm restart /local/myDPS
管理データの LDIF データビューを作成します。
$ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
管理データの LDIF データビューを有効にします。
$ dpconf set-ldif-data-view-prop admin-view is-enabled:true
管理ビューに給与ビューの複数のエントリで使用されるエントリが含まれるように指定します。
$ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true
このプロパティーが TRUE に設定されている場合、給与データビューのエントリを削除しても、管理データビューの共有エントリは削除されません。給与データビューにエントリを追加すると、それがすでに存在していなければ、二次データビューのエントリのみが追加されます。
変更を有効にするために、Directory Proxy Server を再起動します。
$ dpadm restart /local/myDPS
データの集約方法を指定するフィルタ結合ルールを管理データビューで作成します。
次の結合ルールは、ユーザーエントリの 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
Company 22 のユーザーデータは、DN dc=company22,dc=com で保存されています。Example.com はこのユーザーデータをほとんどの場合に区別しておきたいと考えていますが、あるクライアントアプリケーションは Company 22 の従業員を Example.com の残りの従業員とともに管理する必要があります。このクライアントアプリケーションは Company 22 のユーザーデータが Example.com のデータのように見えることを必要としています。
次の図は、クライアントアプリケーションの要件を示しています。
このアプリケーション要件を満たすために、仮想 DN の dc=example,dc=com のデータビューが Company 22 ディレクトリに対して作成されます。
わかりやすいように、ここで使用するコマンドは次の情報を前提としています。
Directory Proxy Server インスタンスはローカルホスト上のデフォルト LDAP ポート (389) で実行されている。
Directory Proxy Server インスタンスは、/local/myDPS にある。
プロキシマネージャーのパスワードを含むファイルへのパスは、変数 LDAP_ADMIN_PWF として設定されている。Directory Proxy Server 環境変数の設定の詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide』の「Environment Variables」を参照してください。
Company 22 LDAP ディレクトリは company22Host という名前のホストのポート 2389 で実行されている。
Company 22 のディレクトリの LDAP データソースを作成します。
$ dpconf create-ldap-data-source company22-directory company22Host:2389
Company 22 のディレクトリの LDAP データソースプールを作成します。
$ dpconf create-ldap-data-source-pool company22-pool
Company 22 のデータソースをデータソースプールに接続します。
$ dpconf attach-ldap-data-source company22-pool company22-directory
接続済みデータソースのウェイトを設定します。
$ 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
仮想 DN の dc=example,dc=com で Company 22 のディレクトリの LDAP データビューを作成します。
$ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
この仮想 DN を Company 22 のディレクトリの実際の DN にマップするよう Directory Proxy Server に命令します。
$ dpconf set-ldap-data-view-prop company22-view \ dn-mapping-source-base-dn:dc=company22,dc=com
クライアント要求がこのデータビューに経路指定できるように、Company 22 のディレクトリの LDAP データビューを有効にします。
$ dpconf set-ldap-data-view-prop company22-view is-enabled:true
変更を有効にするために、Directory Proxy Server を再起動します。
$ dpadm restart /local/myDPS
HR 部門は Example.com と新しく買収した Company 22 の HR データの集約されたビューを必要としています。次の図は、グローバル HR アプリケーションの要件を示しています。
データの集約方法を指定するフィルタ結合ルールを Company 22 データビューで作成します。
次の結合ルールは、ユーザーエントリの employeeNumber 属性に基づいてデータが結合されるよう指定します。
$ dpconf set-ldif-data-view-prop company22-view \ filter-join-rule:employeeNumber=\${example-join-view.employeeNumber}
Company 22 のデータビューと Example.com の結合データビューを集約する結合データビューを作成します。
$ dpconf create-join-data-view global-join-view example-join-view \ company22-view dc=example,dc=com
Example.com の給与部門は給与データを SQL データベースに保存しています。データベースには、employee テーブルと salary テーブルの 2 つのテーブルがあります。Example.com には、このデータへのアクセスを必要とする LDAP クライアントアプリケーションがあります。クライアントアプリケーションは SQL データが LDAP データのように見えることを必要としています。
次の図は、クライアントアプリケーションの要件を示しています。
このアプリケーション要件を満たすために、SQL テーブル内の列を LDAP 属性にマップする JDBC データビューが作成されます。
わかりやすいように、ここで使用するコマンドは次の情報を前提としています。
Directory Proxy Server インスタンスはローカルホスト上のデフォルト LDAP ポート (389) で実行されている。
Directory Proxy Server インスタンスは、/local/myDPS にある。
プロキシマネージャーのパスワードを含むファイルへのパスは、変数 LDAP_ADMIN_PWF として設定されている。Directory Proxy Server 環境変数の設定の詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide』の「Environment Variables」を参照してください。
SQL データベースが起動して実行中である。
JAVA_HOME 変数が正しい Java パスに設定されている。
SQL データベースへのパスワードは、myPasswordFile ファイルに格納された myPassword である。
給与データベース用の JDBC データソースを作成します。
$ dpconf create-jdbc-data-source -b payrollsqldb \ -B jdbc:payrollsqldb:payrollsql://localhost/ \ -J file://payrollsqldb.jar \ -S org.payrollsqldb.jdbcDriver payroll-src
SQL データベースのプロパティーで JDBC データソースを設定します。
$ dpconf set-jdbc-data-source-prop payroll-src \ db-user:proxy db-pwd-file:password-file-location/myPasswordFile
JDBC データソースを有効にします。
$ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
給与データベース用の JDBC データソースプールを作成します。
$ dpconf create-jdbc-data-source-pool payroll-pool
給与データソースをデータソースプールに接続します。
$ dpconf attach-jdbc-data-source payroll-pool payroll-src
仮想 DN の o=payroll で給与データベースの JDBC データビューを作成します。
$ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
SQL データベースの各テーブルの JDBC テーブルを作成します。
$ dpconf create-jdbc-table jdbc-employee employee $ dpconf create-jdbc-table jdbc-salary salary
各 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
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
LDAP オブジェクトクラスにマップされる JDBC オブジェクトクラスを作成します。
次のコマンドは、LDAP person オブジェクトクラスにマップされるオブジェクトクラスを作成します。オブジェクトクラスは、従業員テーブルは一次テーブルとして使用され、給与テーブルが二次テーブルとして使用されるよう指定します。eid 属性は、DN を構築するために使用されます。
$ dpconf create-jdbc-object-class payroll-view \ person jdbc-employee jdbc-salary eid
二次テーブルからのデータが一次テーブルからのデータにリンクされる方法を指定したフィルタ結合ルールを二次テーブル上で作成します。
次の結合ルールは、employee_id 属性に基づいてデータが結合されるよう指定します。
$ dpconf set-jdbc-table-prop jdbc-salary \ filter-join-rule:employee_id=\${employee.employee_id}
JDBC オブジェクトクラス上のスーパークラスを作成します。
$ dpconf set-jdbc-object-class-prop payroll-view person super-class:extensibleObject
LDAP ディレクトリ上のアクセス制御は、ディレクトリ自体で ACI を定義することで処理されます。仮想データビューによってデータソースにアクセスされる場合、これらのデータビューで表示されるデータのみに適用される ACI を定義する必要があります。
Directory Proxy Server を経由するアクセスはすべて、接続ハンドラによって制御されます。接続ハンドラについては、第 26 章「クライアントと Directory Proxy Server の接続」を参照してください。
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");)
接続ハンドラで仮想 ACI をポイントします。
$ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
接続ハンドラを有効にします。
$ dpconf set-connection-handler-prop anonymous is-enabled:true