2. Directory Serverのインスタンスと接尾辞
7. Directory Serverのパスワード・ポリシー
8. Directory Serverのバックアップとリストア
9. Directory Serverのグループ、ロールおよびCoS
16. Directory Proxy Serverのツール
17. Directory Proxy Serverのインスタンス
19. Directory Proxy Serverの証明書
20. Directory Proxy Serverのロード・バランシングとクライアント・アフィニティ
22. Directory Proxy Serverによる仮想化
複数の結合データ・ビューによるデータ・ビューの参照を有効にするように結合データ・ビューを構成するには:
HR LDAPディレクトリと管理LDIFファイルからのデータの集約
DNの名前変更によるCompany 22のデータのExample.ComのDITへの追加
24. Directory Proxy ServerとバックエンドLDAPサーバーの接続
25. クライアントとDirectory Proxy Serverの接続
26. Directory Proxy Serverのクライアント認証
27. Directory Proxy Serverのロギング
28. Directory Proxy Serverの監視とアラート
第3部 Directory Service Control Centerの管理
次の項では、2つの構成例を示します。これらの構成では、仮想ディレクトリの主な機能およびこれらの機能の構成方法を示します。
この項の手順では、LDAPディレクトリとMySQLデータベースを結合する仮想構成の例について説明します。LDAPディレクトリは、ほとんどのユーザー情報を含むプライマリ・データソースです。MySQLデータベースには、ユーザーに関する追加の情報が含まれています。構成例を次の図に示します。
図22-1 仮想構成の例
install-path/resources/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/resources/ldif/Example.ldifのサンプル・データをインポートします。
% dpconf create-ldap-data-source myds1 host1:4389
% dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false
% dpconf create-ldap-data-source-pool myds1-pool
% dpconf attach-ldap-data-source myds1-pool myds1
% dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \ bind-weight:100 modify-weight:100 search-weight:100
% dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com
% 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を処理する必要があります。
% 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データ・ビューを設定するには、この情報が必要です。
|
% 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
注意: num-connection-incr(5dpconf)、num-connection-init(5dpconf)およびnum-connection-limit(5dpconf)のJDBCデータソースのプロパティを使用して、JDBCデータソースの接続数を設定できます。
% dpconf set-jdbc-data-source-prop mysql1 db-pwd:sqlpwd db-user:rootUser
sqlpwdおよびrootUserは、認証ユーザーのパスワードおよびユーザー名で、これらの資格証明はデータベースに格納されています。JDBCデータソースを構成するとき、ユーザー名とパスワードを使用してプロキシ・サーバーを構成する必要があります。
DBベンダーによって提供されたドライバ以外のサード・パーティJDBCドライバを使用してRDBMSバックエンドに接続する場合、JDBCデータソースのdb-vendorプロパティは、set-jdbc-data-source-propを使用して設定する必要があります。このデータは、可能な場合には必ずベンダー固有のSQL文を構成するために使用され、パフォーマンスを向上させます。詳細は、「db-vendor(5dpconf)」を参照してください。
% dpadm restart /local/dps
% dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false
詳細は、「monitoring-inactivity-timeout(5dpconf)」、「monitoring-interval(5dpconf)」および「monitoring-mode(5dpconf)」を参照してください。
% dpconf create-jdbc-data-source-pool mysql1-pool
% dpconf attach-jdbc-data-source mysql1-pool mysql1
% dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql
% dpconf create-jdbc-table employee1 EMPLOYEE % dpconf create-jdbc-table country1 COUNTRY % dpconf create-jdbc-table phone1 PHONE
SQLデータベース内の表の名前では、大文字と小文字が区別されます。大文字/小文字は、SQLデータベースで使用されているものと同じにしてください。
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列にJDBC属性を作成する必要はありません。これは、これらの列には、EMPLOYEE.IDにある値のみが含まれており、このLDAP属性uidはすでに作成済であるためです。
この手順では、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オブジェクト・クラスの属性の継承元のLDAPオブジェクト・クラスを示しています。
% dpconf set-jdbc-object-class-prop mysql1-view person super-class:top
JDBCデータ・ビューをテストするには、その前に、ACIを構成してデータ・ビューへの書込みアクセスを有効にする必要があります。デフォルトでは、非LDAPデータ・ビューへの書込みアクセスは拒否されます。この例の目的のためには、独自のパスワードの変更をユーザーに許可する1つのグローバル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
% dpconf create-connection-handler mysql1-handler
% dpconf set-connection-handler-prop mysql1-handler is-enabled:true \ bind-dn-filters:"uid=.*,o=sql"
% dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1
% ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*"
注意: o=sqlの下のユーザーの資格証明を使用する必要があります。
% ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd dn: uid=kvaughan,o=sql changetype: modify replace: userPassword userPassword: myNewpwd
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データ・ビューに直接アクセスする場合には、読取りおよび書込みが可能です。
% 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
% dpconf set-connection-handler-prop default-connection-handler aci-source:myjoin1
この手順では、Kirsten Vaughanのエントリを検索し、両方の結合ビューからデータを取得できるかどうか確認します。
% ldapsearch -p 1389 -b o=join "uid=kvaughan"
返されるエントリには、LDAPデータ・ビューとJDBCデータ・ビューの両方の属性が含まれていることに注意してください。
% ldapmodify -p 1389 dn: uid=kvaughan,ou=people,o=join changetype: modify replace: userPassword userPassword: myPassword
この構成では、特定のディレクトリ・サービス要件が仮想ディレクトリの一部の機能によって満たされている組織Example.comについて説明します。
Example.comは、組織データを複数の異なるデータソースに格納します。旧来の理由によって、ユーザー・データは、LDAPディレクトリ、フラットLDIFファイルおよびSQLデータベースに拡散されます。HR部門は、ユーザー・データをLDAPディレクトリに格納し、ベースDNをo=example.comに設定します。給与部門は、データをSQLデータベースに格納します。部門やビルディング番号のような管理データは、管理部門によってLDIFファイルに格納されベースDNがdc=example,dc=comに設定されます。
また、Example.comは、Company22という会社を取得済です。Company 22も、そのユーザー・データをLDAPディレクトリに格納し、ベースDNをdc=company22,dc=comに設定します。
次の図は、Example.comのユーザー・データが格納される方法の概要レベルのビューを示しています。
図22-2 異なるソースのデータ・ストレージ
Example.comには、異なるデータソースに格納されているデータにアクセスする必要がある、いくつかのLDAPクライアント・アプリケーションがあります。クライアント・アプリケーションの要件は、すべてが同じというわけではありません。データの異なるビューが必要です。クライアントは、データを集約する必要がある場合があります。また、一部のクライアント・アプリケーションは、Example.comのこれらの新しい従業員を古い従業員とともに管理できるように、Company22のユーザー・データにアクセスする必要があります。
次の図は、Example.comのクライアント・アプリケーションの要件の概要レベルのビューを示しています。
図22-3 クライアント・アプリケーションの要件
次の各項は、このサンプル・シナリオで説明したクライアント・アプリケーションの要件を満たすために十分なDirectory Proxy Serverのデータ・ビューの構成について説明します。データ・ビューがどのように機能するかに関する詳細は、Oracle Directory Server Enterprise Editionリファレンスの第17章「Directory Proxy Serverの配布」およびOracle Directory Server Enterprise Editionリファレンスの第18章「Directory Proxy Serverの仮想化」を参照してください。
サンプル・シナリオの構成は、次の各項に分解されます。
HR部門は、従業員名、ジョブ開始データ、ジョブ・レベルなどの情報を格納します。管理部門は、ビルディング・コードやオフィス番号などの追加データを格納します。HRデータを処理するクライアント・アプリケーションは、両方のソースからの結合データにアクセスする必要があります。両方のデータソースには、各エントリに存在している共通の属性employeeNumberがあります。
次の図は、クライアント・アプリケーションの要件を示しています。
図22-4 LDAPディレクトリとLDIFファイルからのデータの集約
このアプリケーションの要件を満たすために、データ・ビューは、給与ディレクトリおよび管理LDIFファイルに対して作成されます。これら2つのデータ・ビューは結合され、集約データへのアクセスを提供します。この共通の属性を使用すると、Directory Proxy Serverで各ユーザーのデータを集約できます。
簡潔にするために、この項で使用されるコマンドは、次の情報を前提とします。
Directory Proxy Serverのインスタンスは、ローカル・ホスト上のデフォルトのLDAPポート(389)で実行されます。
Directory Proxy Serverのインスタンスは、/local/myDPSにあります。
プロキシ・マネージャのパスワードを含むファイルへのパスは、変数LDAP_ADMIN_PWFとして設定済です。
給与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
$ dpconf create-ldap-data-source payroll-directory payrollHost:2389
$ 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
$ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
$ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
$ dpadm restart /local/myDPS
$ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
$ dpconf set-ldif-data-view-prop admin-view is-enabled:true
$ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true
このプロパティがTRUEに設定されている場合、給与データ・ビューのエントリを削除しても管理者データ・ビューの共有エントリは削除されません。給与データ・ビューにエントリを追加しても、エントリはセカンダリ・データ・ビューに追加されるのみです(これがまだ存在していない場合)。
$ dpadm restart /local/myDPS
次の結合ルールは、ユーザー・エントリのemployeeNumber属性に基づいてデータを結合することを指定します。
$ dpconf set-ldif-data-view-prop admin-view \ filter-join-rule:employeeNumber=\${payroll-view.employeeNumber}
結合データ・ビューに対して、組織は、接尾辞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のデータのように見える必要があります。
次の図は、クライアント・アプリケーションの要件を示しています。
図22-5 DNの名前変更
このアプリケーションの要件を満たすために、仮想DNがdc=example,dc=comであるデータ・ビューがCompany 22のディレクトリ用に作成されます。
簡潔にするために、この項で使用されるコマンドは、次の情報を前提とします。
Directory Proxy Serverのインスタンスは、ローカル・ホスト上のデフォルトのLDAPポート(389)で実行されます。
Directory Proxy Serverのインスタンスは、/local/myDPSにあります。
プロキシ・マネージャのパスワードを含むファイルへのパスは、変数LDAP_ADMIN_PWFとして設定済です。
Company 22LDAPディレクトリは、company22Hostというホストのポート2389で実行されます。
$ dpconf create-ldap-data-source company22-directory company22Host:2389
$ dpconf create-ldap-data-source-pool company22-pool
$ dpconf attach-ldap-data-source company22-pool company22-directory
$ dpconf set-attached-ldap-data-source-prop -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
$ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
$ dpconf set-ldap-data-view-prop company22-view \ dn-mapping-source-base-dn:dc=company22,dc=com
$ dpconf set-ldap-data-view-prop company22-view is-enabled:true
$ dpadm restart /local/myDPS
HR部門には、Example.comのHRデータと新しく取得したCompany 22のHRデータの集約ビューが必要です。次の図は、グローバルHRアプリケーションの要件を示しています。
図22-6 結合データ・ビューとLDAPデータ・ビューのデータの集約
次の結合ルールは、ユーザー・エントリのemployeeNumber属性に基づいてデータを結合することを指定します。
$ dpconf set-ldif-data-view-prop company22-view \ filter-join-rule:employeeNumber=\${example-join-view.employeeNumber}
$ 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データのように見える必要があります。
次の図は、クライアント・アプリケーションの要件を示しています。
図22-7 SQLデータベースへのアクセスを提供するJDBCデータ・ビュー
このアプリケーションの要件を満たすために、SQL表の列をLDAP属性にマップするJDBCデータ・ビューが作成されます。
簡潔にするために、この項で使用されるコマンドは、次の情報を前提とします。
Directory Proxy Serverのインスタンスは、ローカル・ホスト上のデフォルトのLDAPポート(389)で実行されます。
Directory Proxy Serverのインスタンスは、/local/myDPSにあります。
プロキシ・マネージャのパスワードを含むファイルへのパスは、変数LDAP_ADMIN_PWFとして設定済です。
SQLデータベースが稼働中であること。
JAVA_HOME変数が正しいJavaパスに設定済であること。
SQLデータベースのパスワードがmyPasswordで、myPasswordFileファイルに格納されていること。
$ dpconf create-jdbc-data-source -b payrollsqldb \ -B jdbc:payrollsqldb:payrollsql://localhost/ \ -J file://payrollsqldb.jar \ -S org.payrollsqldb.jdbcDriver payroll-src
$ dpconf set-jdbc-data-source-prop payroll-src \ db-user:proxy db-pwd-file:password-file-location/myPasswordFile
$ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
$ dpconf create-jdbc-data-source-pool payroll-pool
$ dpconf attach-jdbc-data-source payroll-pool payroll-src
$ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
$ dpconf create-jdbc-table jdbc-employee employee $ dpconf create-jdbc-table jdbc-salary salary
$ 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
$ 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 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}
$ dpconf set-jdbc-object-class-prop payroll-view person super-class:extensibleObject
LDAPディレクトリのアクセス制御は、ディレクトリ自体にACIを定義することによって処理されます。データソースが仮想データ・ビューを介してアクセスされる場合、これらのデータ・ビューを介して表示されるデータに対してのみ適用されるACIを定義する必要があります。
Directory Proxy Serverを介する任意のアクセスは、接続ハンドラによって制御されます。接続ハンドラの詳細は、第25章「クライアントとDirectory Proxy Server間の接続」を参照してください。
$ 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");)
$ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
$ dpconf set-connection-handler-prop anonymous is-enabled:true