20 リモート・データ・ソースへのアクセスの構成

RDBMSに格納されているアイデンティティ・データなど、リモートに格納されているデータにアクセスできます。プロキシ・インスタンスと1つ以上のリモートLDAPサーバーの間の通信を構成できます。

次の各トピックでは、リモート・データ・ソースへのアクセスの構成について説明します。

20.1 RDBMSに格納されているアイデンティティ・データへのアクセスの構成

Oracle DatabaseにLDAPエントリとして格納されているアイデンティティ・データを公開するOracle Unified Directoryプロキシ・インスタンスに基づいて、サンプルの仮想構成を作成できます。

この項の例では、RDBMSワークフロー要素とそのサポートしているコンポーネントを構成して、アイデンティティ・データのこの仮想ビューを作成します。RDBMSワークフロー要素を使用すると、LDAPクライアントはLDAPプロトコルを使用してアイデンティティ・データにアクセスできます。

この項には次のトピックが含まれます:

RDBMSワークフロー要素の概要は、「LDAPクライアントからRDBMSに格納されているアイデンティティ・データへのアクセスの有効化」を参照してください。

ノート:

この項の例では、dsconfigコマンドを使用して、RDBMSワークフロー要素および他の必須コンポーネントを作成および構成します。これらの例の説明は、設定する必要がある主要オプションおよびプロパティを対象としています。

すべてのdsconfigサブコマンドおよびオプションの詳細は、「dsconfig」を参照してください。

20.1.1 RDBMSワークフロー要素のユースケースの理解

RDBMSワークフロー要素のユースケースのデプロイメントには、LDAPクライアント、Oracle Unified Directoryプロキシ・サーバー、RDBMSワークフロー要素、Oracle Databaseなどが含まれます。

RDBMSワークフロー要素のユースケースのデプロイメントについては、次の各トピックで説明します。

20.1.1.1 LDAPクライアントについて

この項では、LDAPクライアントの概要を示します。

このユースケースでは、LDAPクライアントはLDAPプロトコルを使用してOracle Database (RDBMS)のアイデンティティ・データにアクセスするとします。これらのクライアントは、このデータへのアクセスにSQL問合せは実行しません。

20.1.1.2 Oracle Unified Directoryプロキシ・サーバーについて

このユースケースには、LDAPクライアントとOracle Databaseの間のインタフェースとして、Oracle Unified Directoryプロキシ・サーバーが必要です。

プロキシ・サーバーはOracle Databaseにdbuserとして接続します。ユースケース例でLDAP検索が実行されるため、dbuserには、Oracle DatabaseのPERSONおよびPHONE SQL表に対する読取り権限が必要です。dbuserがLDAPプロトコルを使用してアイデンティティ・データを作成または更新する場合も、追加の権限が必要です。

20.1.1.3 RDBMSワークフロー要素およびサポートしているコンポーネントについて

Oracle Unified Directoryプロキシは、次のコンポーネントを使用してOracle Databaseと通信します。

プロキシは、次のコンポーネントを使用してOracle Databaseと通信します。

  • RDBMS拡張は、リモート・ピアからのレスポンスを定期的に確認し、接続プールで保持されている有効な接続を提供することによって、JDBCを使用したリモートのOracle Databaseとの接続性を管理します。

  • RDBMSワークフロー要素は、RDBMS拡張要素から接続を取得し、LDAPエントリとSQL表とのマッピングを実行し、LDAPクライアントから受け取った操作を実行します。

  • RDBMSエントリのRDBMSワークフローは、RDBMSワークフロー要素によって処理されるネーミング・コンテキストを公開します。

  • RDBMSワークフローのアクセス制御グループでは、仮想ACIを使用して仮想アイデンティティ・データへのアクセスを制御します。

詳細は、「RDBMSと通信するためのコンポーネントの作成」を参照してください。

20.1.1.4 Oracle Databaseについて

このユースケースのRDBMSは、インストールされて実行中の、デプロイメントのアイデンティティ・データが移入されている11g Oracle Databaseです。

このデータベースには、次のSQL表のユーザー・アカウントに関する情報が含まれます。

  • PERSON表には、従業員ID、名、姓、パスワード、従業員番号、雇用日などのユーザー・データが含まれます。

  • PHONE表はPERSON表にリンクされており、従業員の電話番号が含まれます。

これらの表の詳細は、「PERSON表およびPHONE表の理解」を参照してください。

このデータベースには次の特性もあります。

  • データベースのシステム識別子(SID): orcl

  • データベースURL: myhost.example.com:1521:orcl

  • プロキシからデータベースに接続するデータベース・ユーザー: dbuser

  • データベース・ユーザー・パスワード: dbuser-password

20.1.2 RDBMSワークフロー要素の構成

RDBMSワークフロー要素とそのサポートしているコンポーネントの構成を開始する前に、必要な事前タスクを実行する必要があります。

必要な事前タスクは次のとおりです。

20.1.2.1 Oracle Unified Directoryプロキシ・サーバーの設定

このユースケースには、LDAPクライアントとOracle Database (アイデンティティ・データを含む)の間のインタフェースとして、Oracle Unified Directoryプロキシ・サーバーが必要です。

UNIXシステムまたはLinuxシステムでコマンド行ツールを使用してプロキシ・サーバー・インスタンスを設定するには:

  1. JAVA_HOME環境変数が、サポートされているJVMインストール(JRE 7またはJDK 7)に設定されていることを確認します。
  2. 次のoud-proxy-setupスクリプトを実行し、プロキシ・サーバー・インスタンスを設定します。
    $ export INSTANCE_NAME=db-oud-proxy-instance
    $ OUD_HOME/oud-proxy-setup --cli -p oud-port --adminConnectorPort admin-port
    -D "cn=Directory Manager" -j password-file
    

    この例の説明は、次のとおりです。

    • db-oud-proxy-instanceは、プロキシ・インスタンス・ディレクトリ名です。この例では、oud-proxy-setupスクリプトを実行する前に、INSTANCE_NAME環境変数をこのディレクトリに設定します。

    • oud-portは、プロキシ・サーバー・インスタンスへのアクセスに使用されるLDAPポートです。

    • admin-portは管理ポートです。

    • password-fileには管理者パスワードが含まれます。

    Windowsシステムの場合、oud-proxy-setup.batスクリプトを実行します。

詳細は、Oracle Unified DirectoryのインストールOracle Unified Directoryのプロキシ・サーバーとしての設定に関する項を参照してください。

20.1.2.2 RDBMSのJDBCドライバのJARファイルのインストール

Oracle Unified DirectoryのRDBMS実装は、基礎となるRDBMSと通信するJDBC標準に依存します。そのため、使用しているRDBMSに対応するJDBCドライバのJARファイルをインストールする必要があります。

JDBCドライバのJARファイルをインストールするには:

  1. 使用しているRDBMSデータベース・リリースに対応するJDBCドライバをダウンロードします。このユースケースではOracle Database 11gにデータが格納されているため、次の場所からojdbc6.jarをダウンロードします。

    http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

    Oracle Database 11gの場合はojdbc6.jar、Oracle Database 12cの場合はojdbc7.jarを使用します。

  2. ステップ1のJARファイルを次のディレクトリにコピーします。
    OUD_INSTANCE_NAME/OUD/lib
    
  3. Oracle Unified Directoryインスタンスを再起動します。たとえば、UNIXシステムおよびLinuxシステムでは次のように指定します。
    $ OUD_INSTANCE_NAME/OUD/bin/stop-ds
    $ OUD_INSTANCE_NAME/OUD/bin/start-ds
    

    Windowsシステムの場合、OUD_INSTANCE_NAME\OUD\batディレクトリのstop-ds.batおよびstart-ds.batを使用します。

20.1.3 RDBMSと通信するためのコンポーネントの作成

Oracle Unified DirectoryプロキシがRDBMSと通信するために必要なコンポーネントを作成できます。

ここでは、RDBMSと通信するために必要なコンポーネントについて説明します。

20.1.3.1 RDBMS拡張の作成

RDBMS拡張は1つのRDBMSインスタンスに対応します。このユースケースでは、Oracle Databaseインスタンスを1つのみ使用します。

ORCL1というRDBMS拡張を作成するには、次のdsconfig create-extensionコマンドを使用します。

$ dsconfig create-extension \
--type rdbms \
--extension-name ORCL1 \
--set jdbc-driver-class:oracle.jdbc.driver.OracleDriver \
--set jdbc-url:"jdbc:oracle:thin:@myhost.example.com:1521:orcl" \
--set target-database:oracle11 \
--set rdbms-username:dbuser \
--set rdbms-password:dbuser-password \
--set enabled:true

この例の説明は、次のとおりです。

  • typeは、RDBMS拡張を指定するrdbmsにする必要があります。

  • extension-nameは、新規拡張の名前をORCL1と指定します。

  • jdbc-driver-classおよびjdbc-urlは、特定のRDBMSインスタンスに対応します。

    URLはRDBMSが実行中のホストおよびポートによって異なります。構造も使用している特定のRDBMSによって異なります。この例では、11g Oracle Databaseにこれらのプロパティを設定します。他のデータベースの場合は、使用しているJDBCドライバのドキュメントを参照してください。

  • target-databaseは、使用しているRDBMSのタイプを指定します。11g (および12g) Oracle Databaseの場合は、oracle11を指定します。

  • rdbms-usernameプロパティおよびrdbms-passwordプロパティは、SQL問合せの実行に使用する資格証明を指定します。

    すべてのSQL問合せは、元のLDAPクライアント・アイデンティティを考慮せずに、これらの資格証明を使用して実行されます。LDAPクライアント・アイデンティティに基づいたRDBMS SQLデータへのアクセス制限に使用される仮想ACIは、後で構成します。

すべてのRDBMS拡張プロパティの詳細は、『Oracle Fusion Middleware Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.2 セキュアな接続を使用するためのRDBMS拡張の作成

RDBMS拡張は、セキュアな接続を使用してデータベースにアクセスするように構成できますが、その前に、セキュアな接続に対応するようにデータベースを構成する必要があります。プロキシがリモートRDMBSサーバーとの間にセキュアな接続を確立できるようにするために、トラスト・ストアを構成する必要があります。リモートRDBMSデータ・ソースへのセキュアな接続をターゲットとするRDBMSプロキシ拡張は、その構成の中で適切なトラスト・ストア・マネージャを参照する必要があります。この参照により、RDBMSプロキシ拡張はインポートされたリモートRDBMSサーバーの証明書にアクセスして、セキュアな接続に対応できるようになります。

20.1.3.2.1 プロキシ・サーバーとRDBMSサーバーの間のセキュリティの構成

このタスクでは、リモートRDBMSサーバーへの接続のセキュリティを構成するために必要な主要なステップについて説明します。リモートRDBMSサーバー接続のためのキーストアを構成し、RDBMSサーバー証明書を取得するステップの詳細は、RDBMSベンダーのドキュメントを参照してください。

dsconfigを使用してプロキシとRDBMSサーバーの間のセキュリティを構成するには、次のステップを実行します。
  1. プロキシからリモートRDBMSサーバーへクライアント認証を渡す必要がある場合は、次のサブステップを実行してください。プロキシからリモートRDBMSサーバーにクライアント認証を渡す必要がない場合は、ステップ2に進み、トラストストアを構成します。
    1. Oracle Unified Directoryプロキシ・サーバーで、リモートRDBMSサーバー接続のためのキーストアを構成します。
      これを行うには、Javaコマンドkeytoolを使用してプロキシ・サーバー上に証明書を生成します。キーストアは手動で構成する必要があります。キーストアを手動で構成するには、「キー・マネージャ・プロバイダの構成」を参照してください。

      証明書に自己署名するか、外部の認証局による署名を取得します。証明書への自己署名の詳細は、「キー・マネージャ・プロバイダの構成」を参照してください。

    2. リモートRDBMSサーバー接続のキーストアについて、プロキシ上のキー・マネージャ・プロバイダを構成します。リモートRDBMSサーバー用のキー・マネージャ・プロバイダの構成については、「キー・マネージャ・プロバイダの構成」を参照してください。このキー・マネージャ・プロバイダは、クライアントへのセキュアな接続を処理するために使用するものとは別にすることができます。
    3. 認証中に、前述のキーストアにあるOracle Unified Directoryプロキシ証明書がRDBMSサーバーによって信頼されるようにする場合に従うステップの詳細は、RDBMSベンダーのドキュメントを参照してください。
  2. プロキシがリモートRDBMSサーバーとの間にセキュアな接続を確立できるようにするために、トラスト・ストアを構成します。
    リモートRDBMSデータ・ソースへのセキュアな接続をターゲットとするRDBMSプロキシ拡張は、その構成の中で適切なトラスト・ストア・マネージャを参照する必要があります。RDBMSプロキシ拡張はこの参照により、インポートされたリモートRDBMSサーバーの証明書にアクセスして、セキュアな接続を承認できるようになります。
  3. 各トラスト・ストアは、プロキシ信頼マネージャ・プロバイダを必要とします。たとえば:
    1. プロキシ信頼マネージャ・プロバイダのリストを表示するには、dsconfig list-trust-manager-providersコマンドを使用します。たとえば:
      $ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
      list-trust-manager-providers
    2. プロキシ信頼マネージャ・プロバイダを作成するには、dsconfig create-trust-manager-providerコマンドを使用します。たとえば:
      $ dsconfig -h localhost -p 4444 -D "cn=Directory Manager"-j pwd-file-X -n \
      create-trust-manager-provider \
      --provider-name Backend\ Servers \
      --type file-based --set enabled:true \
      --set trust-store-file:/localhost/config/backend-servers-truststore \
      --set trust-store-type:JKS \
      --set trust-store-pin-file:/installPath/config/backend-servers-truststore.pin
  4. リモートRDBMSサーバーの証明書をプロキシのトラスト・ストアにインポートします。
20.1.3.2.2 dsconfigを使用したRDBMS拡張の作成

セキュアな接続でデータベースにアクセスするように、dsconfigコマンドを使用してOracle Unified DirectoryでRDBMS拡張を構成できます。

ORCL1というRDBMS拡張名を作成するには、次のdsconfig create-extensionコマンドを使用します。

$ dsconfig create-extension \
--type rdbms \
--extension-name ORCL1 \
--set jdbc-driver-class:oracle.jdbc.driver.OracleDriver \
--set jdbc-url:
'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=%HOST NAME)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=orcl12))(security=(ssl_server_cert_dn="CN=Root, C=US")))'
--set target-database:oracle \
--set rdbms-username:system \
--set rdbms-password:password \
--set enabled:true \
--set use-ssl:true \
--set ssl-trust-manager-provider:rdbms_truststore

RDBMS拡張プロパティの詳細は、表20-1を参照してください。

拡張が非保護モードですでに構成されている場合、次のコマンドを実行して保護モードに切り替えることができます。

$ dsconfig set-extension-prop \
--extension-name ORCL1 \
--set use-ssl:true \
--set jdbc-url:'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=%HOST NAME)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=orcl12))(security=(ssl_server_cert_dn="CN=Root, C=US")))'  
--set ssl-trust-manager-provider:rdbms_truststore

表20-1に、セキュアな接続のために必要に応じて設定する必要があるプロパティを示します。

次の例では、Oracleデータベースのjdbc-connection-propertiesを使用し、set-extension-propを使用してTLSバージョンおよび暗号スイートを設定しています。

$ dsconfig set-extension-prop \
--extension-name ORCL1 \
--set jdbc-connection-properties:orcle.net.ssl_version=1.2 or 1.1 \
$ dsconfig set-extension-prop \
--extension-name ORCL1 \
--set jdbc-connection-properties:oracle.net.ssl_cipher_suites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA

ノート:

SSLプロトコル・バージョンおよび暗号スイートの設定は、データベース・ベンダーによって異なります。このため、対応するデータベースのドキュメントを参照して、データベースがJDBCで通信する場合にはこれらのプロパティをどのように設定できるかを確認することをお薦めします。RDBMS拡張を使用すると、データベース要件に従って、名前と値のペアの汎用的なプロパティを設定できます。JDBCトラストストアおよびキーストアのプロパティの詳細は、「JDBCトラストストアおよびキーストアの詳細を設定するために構成可能な拡張プロパティ」を参照してください。
20.1.3.2.3 RDBMS拡張の構成可能なセキュリティ関連プロパティ

セキュアな接続を確立するには、dsconfigを使用してセキュリティに関連するRDBMS拡張プロパティを設定する必要があります。

表20-1に、セキュアな接続のために必要に応じて設定する必要があるプロパティを示します。

表20-1 セキュアな接続のためのRDBMS拡張プロパティ

プロパティ 説明
type

RDBMS拡張を指定するrdbmsにする必要があります。

extension-name

新規拡張にORCL1という名前を指定します

jdbc-driver-classおよびJDBC URL

特定のRDBMSインスタンスに対応しています。JDBC URLは、JDBCドライバでセキュアな接続がアクティブになるようにURL形式にする必要があります。

target-database

現在使用中のRDBMSのタイプを指定します。11g (および12g) Oracle Databaseの場合は、Oracle11を指定します。

rdbms-usernameおよびrdbms-password

SQL問合せを実行するために使用する資格証明を指定します。

use-ssl

セキュアな接続を示すフラグを指定します。使用可能な値は、接続に基づいてtrueまたはfalseです。

ssl-trust-manager-provider

信頼マネージャ・プロバイダを指定します。

ssl-key-manager-provider

キー・マネージャ・プロバイダを指定します

jdbc-connection-properties

基になるJDBCドライバ・プロパティを「名前=値」としてリストします

jdbc-is-factory-properties

javax.net.setConnectionFactoryPropertyメソッドを使用してプロパティを設定する必要があるかどうかを示すフラグを指定します。使用可能な値は、trueまたはfalseです。

すべてのRDBMS拡張プロパティの詳細は、『Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.2.4 JDBCトラストストアおよびキーストアの詳細を設定するために構成可能な拡張プロパティ

トラストストアおよびキーストアの詳細に対してベンダー固有のプロパティ名を指定するには、拡張プロパティを設定する必要があります。jdbc-connection-propertiesには、特定のJDBC標準がないことに注意する必要があります。このため、ベンダーによって使用するプロパティが異なります。データベースでは、通常、「javax.net.ssl.」という接頭辞を使用します。したがって、このすべてのプロパティのデフォルト値は「javax.net.ssl.*」に設定されます。特に、これ以外のOracle Databaseの構成は必要ありません。

Oracle以外の外部データベースが「javax.net.ssl.*」ではなく別の名前を使用している場合(たとえば、IBM DB2では「sslTrustStoreLocation」を使用します)、JDBCベンダーのドキュメントを参照して、次に説明するプロパティを更新する必要があります。

表20-2 JDBCトラストストアおよびキーストアを設定するための拡張プロパティ

プロパティ 説明

jdbc-truststore-prop-name

トラスト・ストアを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.trustStoreがデフォルトです

jdbc-truststore-pwd-prop-name

トラスト・ストア・パスワードを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.trustStorePasswordがデフォルトです

jdbc-truststore-type-prop-name

トラスト・ストア・タイプを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.trustStoreTypeがデフォルトです

jdbc-keystore-prop-name

キー・ストアを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.keyStoreがデフォルトです

jdbc-keystore-pwd-prop-name

キー・ストア・パスワードを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.keyStorePasswordがデフォルトです

jdbc-keystore-type-prop-name

キー・ストア・タイプを指定するためのベンダー固有のプロパティ名を指定します。javax.net.ssl.keyStoreTypeがデフォルトです

すべてのRDBMS拡張プロパティの詳細は、『Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.3 RDBMSワークフロー要素の作成

使用している各RDBMS拡張にRDBMSワークフロー要素を作成する必要があります。RDBMSワークフロー要素を作成する前に、RDBMS拡張も構成しておく必要があります。

前の項で作成したRDBMS拡張に関連付けられるRDBMSワークフロー要素を作成するには、次のdsconfig create-workflow-elementコマンドを使用します。

$ dsconfig create-workflow-element \
--type rdbms \
--element-name ORCL1 \
--set rdbms-extension:ORCL1 \
--set suffix:o=db \
--set enabled:true

この例の説明は、次のとおりです。

  • typeは、RDBMSワークフロー要素を指定するrdbmsにする必要があります。

  • element-nameは、新規RDBMSワークフロー要素の名前をORCL1と指定します。

  • rdbms-extensionは、このワークフロー要素に関連付けられる拡張の名前をORCL1と指定します。

  • suffixは、接尾辞DNをo=dbと指定し、このワークフロー要素で格納および公開されるすべてのエントリのDNとなります。

すべてのRDBMSワークフロー要素のプロパティの詳細は、『Oracle Fusion Middleware Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.4 RDBMSエントリのワークフローの作成

RDBMSワークフロー要素によって処理されるネーミング・コンテキストを公開するワークフローを作成する必要があります。このワークフローは、ネーミング・コンテキスト(ベースDN)、およびOracle Unified Directoryによる着信リクエストの処理方法を定義するワークフロー要素によって定義されます。

前に作成したRDBMSワークフロー要素に関連付けられるワークフローを作成するには、次のdsconfig create-workflowコマンドを使用します。

$ dsconfig create-workflow \
--workflow-name db \
--set base-dn:o=db \
--set workflow-element:ORCL1 \
--type generic \
--set enabled:true

この例の説明は、次のとおりです。

  • workflow-nameは、この構成オブジェクトの名前をdbと指定します。

  • base-dnは、このワークフローに関連付けられる接尾辞をo=dbと指定します。この接尾辞は、ORCL1というRDBMSワークフロー要素によって公開されるsuffixと同じである必要があります。

  • workflow-elementは、RDBMSワークフロー要素をORCL1と指定します。

すべてのワークフロー・プロパティの詳細は、『Oracle Fusion Middleware Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.5 RDBMSワークフローのアクセス制御グループの作成

RDBMSワークフローは、このワークフローで処理される操作に適用されるACIのリストを定義するアクセス制御グループに関連付けられます。

Oracle Databaseからのデータの仮想ディレクトリ・ビューへのアクセスを制御するには、仮想ACIを有効化および作成する必要があります。Oracle Unified Directoryが仮想ディレクトリ・データ・ビューに対するリクエストを受信すると、仮想ACIおよびユーザーにより提供された認証情報を使用して、リクエストされたデータへのアクセスを許可または拒否します。

RDBMSワークフローのアクセス制御グループを作成するには:

  1. 次のdsconfig create-access-control-groupコマンドを使用して、orcl1というアクセス制御グループを作成します。
    $ dsconfig create-access-control-group \
    --group-name orcl1
    

    デフォルトでは、新しいアクセス制御グループorcl1は空のため、構成のこの時点の仮想エントリは、Oracle Unified Directory管理者にのみ公開されます。

  2. 次のdsconfig set-workflow-propコマンドを使用して、前のステップで作成したアクセス制御グループをRDBMSワークフロー要素に関連付けます。
    $ dsconfig set-workflow-prop \
    --workflow-name db \
    --set virtual-aci-mode:true \
    --set access-control-group:orcl1
    

この例の説明は、次のとおりです。

  • workflow-nameは、dbというワークフローがorcl1というアクセス制御グループに格納されている仮想ACIによって保護されることを指定します。

  • virtual-aci-modetrueに設定されているため、ACI属性を処理するすべての操作がこの属性を仮想ACIとして管理します。この属性はユーザー・データと一緒には格納されていません。これは、Oracle Unified Directoryプロキシ・インスタンスの特定のディレクトリ情報ツリー(DIT)の場所、cn=virtual acisに格納されます。

20.1.3.6 ネットワーク・グループへのワークフローの関連付け

ネットワーク・グループは、Oracle Unified Directoryに対するクライアント・リクエストの単一のエントリ・ポイントです。ワークフローは、少なくとも1つのネットワーク・グループに登録される必要がありますが、複数のネットワーク・グループにアタッチできます。

dbワークフローをデフォルトのネットワーク・グループ(network-group)に割り当てるには、次のdsconfig set-network-group-propコマンドを使用します。

$ dsconfig set-network-group-prop \
--group-name network-group \
--set workflow:db

Oracle Unified Directoryプロキシに問い合せて、Oracle Databaseのコンテンツを取得できるようになりました。デフォルトでは、LDAP-SQLマッピングがまだ構成されていないため、RDBMSワークフロー要素によって公開されるネーミング・コンテキストのベースに対応するダミー・エントリが返されます。

構成を確認するには、次のldapsearchコマンドを使用します。

$ ldapsearch –p oud-port -D "cn=directory manager" -w admin-password -b o=db objectclass=*

dn : o=db
o : db
objectclass : organization
objectclass :top
20.1.3.7 LDAP-SQLマッピングの構成

LDAP属性を、Oracle DatabaseのSQL PERSON表およびPHONE表の適切な列にマップする必要があります。

次の各トピックでは、このユースケースでLDAP-SQLマッピングを構成する方法について説明します。

20.1.3.7.1 PERSON表およびPHONE表の理解

このユースケースでは、Oracle Databaseで2つのSQL表(ユーザー・データを格納するPERSON表、ユーザーの電話番号を格納するPHONE表)が公開されます。

LDAPエントリは、これら表のSQL行および列にマップされます。1つのLDAPエントリ(sqlPersonオブジェクト・クラス)は、PERSON表の各行に対応します。PHONE表の行は、対応する人エントリの複数値LDAP telephoneNumber属性に表示されます。

これらのSQL表を作成する同等のSQLコマンドは次のとおりです。

CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRST_NAME VARCHAR(40), LAST_NAME
VARCHAR(40), PASSWORD VARCHAR(10), EMPLOYEE_ID VARCHAR(40), EMPLOYEE_NUMBER
INT, HIRE_DATE date)

CREATE TABLE PHONE (PERSON_ID INT, PHONE_NUMBER VARCHAR(17), FOREIGN
KEY(PERSON_ID) REFERENCES PERSON(ID) ON DELETE CASCADE, PRIMARY
KEY(PERSON_ID, PHONE_NUMBER))

このユースケースでは、PERSON表の主キーはRDBMSによって自動的に生成され、管理されないか、LDAPクライアントに公開されません。LDAPエントリはRDBMSから仮想化されるため、LDAPクライアント・アプリケーションに対して透過的である必要があるため、この構成は一般的です。

Oracle Databaseでは、主キーの自動増分はデータベース順序およびトリガーの概念に依存します。次のSQLコマンドでは、PERSON表の順序を作成し、主キーを自動的に生成するトリガーを構成します。

CREATE SEQUENCE PERSON_SEQUENCE START WITH 1 INCREMENT BY 1
CREATE OR REPLACE TRIGGER PERSON_TRIGGER BEFORE INSERT ON PERSON REFERENCING 
NEW AS NEW FOR EACH ROW BEGIN SELECT PERSON_SEQUENCE.nextval
INTO :NEW.ID FROM dual; END;
20.1.3.7.2 RDBMS表の作成

LDAP属性として公開される行を含む、RDBMSのSQL表ごとにRDBMS表オブジェクトを作成し、これらの表をRDBMSワークフロー要素に関連付ける必要があります。

このユースケースのRDBMS表を作成するには、次のdsconfig create-rdbms-tableコマンドを使用します。

  1. Oracle DatabaseのSQL PERSON表に対応するPERSONというRDBMS表を作成し、この表をORCL1というRDBMSワークフロー要素に関連付けます。
    $ dsconfig create-rdbms-table \
      --set db-table-name:PERSON \
      --table-name PERSON \
      --element-name ORCL1 \
      --set primary-key-field:ID \
      --set primary-key-storability:false \
      --set db-sequence-name:PERSON_SEQUENCE \
      --type generic
    

    この例の説明は、次のとおりです。

    • table-nameは、表構成オブジェクトの名前を指定します。

    • db-table-nameは、対応するSQL表の名前を指定します。

    • element-nameは、この表が関連付けられるRDBMSワークフロー要素の名前を指定します。

    • primary-keyfieldは、SQL主キーに対応するSQL列を指定します。

    • primary-key-storabilityは、この表の主キーにユーザーが指定した値が含まれているかどうかを指定します。trueに設定された場合、エンドユーザーはこの列にキー値を挿入できます。

      このユースケースでは、自動生成された主キーを使用するため、primary-key-storabilityfalseに設定されています。ほとんどのデプロイメントでは、LDAPクライアントに対してキー管理を透過的にする必要があるため、キーは行が挿入されるときにRDBMSによって自動的に生成されます。

    • db-sequence-nameは、データベース順序がトリガーとともに使用されるときに主キー・フィールド値を生成するデータベース順序を指定します。このケースはOracle Databaseの場合です。

  2. Oracle DatabaseのSQL PHONE表に対応するPHONEというRDBMS表を作成し、この表をORCL1というRDBMSワークフロー要素に関連付けます。
    $ dsconfig create-rdbms-table \
      --table-name PHONE \
      --element-name ORCL1 \
      --set db-table-name:PHONE \
      --set primary-key-field:PERSON_ID \
      --set primary-key-field:PHONE_NUMBER \
      --set cascade-delete-on-relation:true \
      --set join-type:many-to-one \
      --set join-rule:PHONE.PERSON_ID=PERSON.ID \
      --type generic
    

すべてのRDBMS表プロパティの詳細は、『Oracle Fusion Middleware Oracle Unified Directory構成リファレンス』を参照してください。

20.1.3.7.3 オブジェクト・クラス・マッピングの作成

オブジェクト・クラス・マッピングの構成オブジェクトは、SQL表のコンテンツから作成したLDAPオブジェクトに対応するLDAPオブジェクト・クラスの名前を指定します。オブジェクト・クラスがサーバー・スキーマに定義されていない場合、サーバーの起動時にサーバー・スキーマに自動的に追加されます。

RDBMSワークフロー要素にsqlPersonオブジェクト・クラスのオブジェクト・クラス・マッピングを作成するには、次のdsconfig create-objectclass-mappingコマンドを使用します。

$ dsconfig create-objectclass-mapping \
  --mapping-name sqlPerson \
  --element-name ORCL1 \
  --set objectclass-name:sqlPerson \
  --set rdn-attribute:uid \
  --type generic

この例の説明は、次のとおりです。

  • objectclass-nameは、objectclass属性で表示されるLDAPオブジェクト・クラスの名前を指定します。

  • rdn-attributeは、ネーミング属性として使用されるLDAPオブジェクトとしてuidを指定します。

    このユースケースでは、uid属性は、次の項で示すように、PERSON表のEMPLOYEE_ID列に対応します。

20.1.3.7.4 属性マッピングの作成

LDAP属性として公開される各SQL行に対して属性マッピング構成オブジェクトを作成する必要があります。

このユースケースに必要な属性マッピングを次の表に示します。

LDAP属性 SQLの表と列

uid

PERSON:EMPLOYEE_ID

lastName

PERSON:LAST_NAME

firstName

PERSON:FIRST_NAME

employeeNumber

PERSON:EMPLOYEE_NUMBER

hireDate

PERSON:HIRE_DATE

userPassword

PERSON:PASSWORD

telephoneNumber

PHONE:PHONE_NUMBER

sqlPersonオブジェクト・クラスの属性マッピングを作成するには、前の表で示す各属性に対して次のdsconfig create-attribute-mappingコマンドを使用します。

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name employeeID \
  --mapping-name sqlPerson \
  --set attribute-name:uid \
  --set field-name:EMPLOYEE_ID \
  --set table-name:PERSON \
  --element-name ORCL1 \
  --type generic

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name firstName \
  --mapping-name sqlPerson \
  --set attribute-name:firstName
  --set field-name:FIRST_NAME \
  --set table-name:PERSON \
  --element-name ORCL1 \
  --type generic

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name lastName \
  --mapping-name sqlPerson \
  --set attribute-name:lastName \
  --set field-name:LAST_NAME \
  --set table-name:PERSON \
  --element-name ORCL1 \
  --type generic

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name employeeNumber \
  --mapping-name sqlPerson \
  --set attribute-name:employeeNumber \
  --set field-name:EMPLOYEE_NUMBER \
  --set table-name:PERSON \
  --element-name ORCL1 \
  --type generic

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name hireDate \
  --mapping-name sqlPerson \
  --set attribute-name:hireDate \
  --set field-name:HIRE_DATE \
  --set table-name:PERSON \
  --element-name ORCL1 \
  --type generic

$ dsconfig create-attribute-mapping \
  --attribute-mapping-name telephoneNumber \
  --mapping-name sqlPerson \
  --set attribute-name:telephoneNumber \
  --set field-name:PHONE_NUMBER \
  --set table-name:PHONE \
  --element-name ORCL1 \
  --type generic

これらの例の説明は、次のとおりです。

  • attribute-mapping-nameは、このコマンドで実行されるマッピングの名前を指定します。

  • attribute-nameは、指定されたSQL表および列にマップされるLDAP属性を指定します。

  • mapping-nameは、オブジェクト・クラスを指定します。

  • field-nameおよびtable-nameは、LDAP属性をマップするSQL列および表の名前を指定します。

20.1.3.7.5 マッピングのテスト

構成のこの段階で、PERSON表の各行は、o=db接尾辞のsqlPersonのインスタンスとして公開されます。対応するtelephoneNumber (存在する場合)がPHONE表から取得されます。

これらのマッピングをテストするには、次の例で示すようにLDAP検索を実行します。

ノート:

次のテストはディレクトリ・マネージャとして実行する必要があります。この時点では、RDBMSワークフロー要素のコンテンツに対するアクセス権がACIに付与されていないためです。

$ ldapsearch –p oud-port -D "cn=directory manager" -w admin-password -b  o=db objectclass=*

dn : o=db
o : db
objectclass : organizationalUnit
objectclass :top
dn : uid=53422345,o=db
objectclass : sqlPerson
objectclass :top
uid : 53422345
firstName : Joseph
lastName : Smith
employeeNumber : 172453
hireDate : 199505011220000.000Z
telephoneNumber : +33123456789

...

前の例では、ldapsearchコマンドによって返された最初のエントリを示しています。マッピングが正しく構成されている場合、定義されたマッピング・ルールに従って、SQL表から作成された仮想LDAPエントリが検索によって返されます。

20.1.3.7.6 RDBMSに格納されているパスワードの使用

Oracle Databaseでは、PERSON表のPASSWORD列にユーザー・パスワードが格納されます。

LDAPクライアントがOracle Databaseに格納されているパスワードに対して認証することができるように、RDBMSワークフロー要素を構成するには:

  1. 次のdsconfig create-attribute-mappingコマンドを使用して、userPassword属性の属性マッピングを作成します。
    $ dsconfig create-attribute-mapping \
      --attribute-mapping-name userPassword \
      --mapping-name sqlPerson \
      --set attribute-name:userPassword \
      --set field-name:PASSWORD \
      --set table-name:PERSON \
      --element-name ORCL1 \
      --type generic
    

    この例の説明は、次のとおりです。

    • attribute-nameは、マップするLDAP属性としてuserPasswordを指定します。

    • field-nameおよびtable-nameは、マップするSQL列および表の名前を指定します。

    • element-nameは、ORCL1 RDBMSワークフロー要素を指定します。

  2. ワークフロー要素が認証にuserPassword属性を使用できるように、次のdsconfig set-workflow-element-propコマンドを使用してRDBMSワークフロー要素を構成します。
    $ dsconfig set-workflow-element-prop \
      --element-name ORCL1 \
      --set password-attribute:userpassword \
      --set password-storage-scheme:"Salted SHA-512"
    

この例の説明は、次のとおりです。

  • password-attributeは、ユーザー・パスワードを含む属性を指定します。

  • password-storage-schemeは、Oracle Databaseにユーザー・パスワードを格納する方法を指定します。

    この例では、ユーザー・パスワードは、Salted SHA-512アルゴリズムを使用してハッシュされ、Oracle Databaseに格納されます。LDAPエントリの場合と異なり、SQL表のハッシュされたパスワード値には、ダイジェスト・アルゴリズム・タグ({SSHA-512}など)の接頭辞は付きません。

20.1.4 仮想データに対するアクセス権の付与について

仮想データへのアクセス権を付与するには、ldapコマンドで仮想ACIを作成します。

デフォルトでは、「RDBMSワークフローのアクセス制御グループの作成」で作成したorcl1というアクセス制御グループは空です。データベースの仮想エントリはOracle Unified Directory管理者にのみ公開されます。そのため、次の検索では次のエントリは返されません。

$ ldapsearch –p oud-port -D uid=53422345,o=db -w password -b o=db objectclass=*

次のコマンドは、Oracle Databaseから作成した仮想エントリの所有者に対して完全アクセス権を付与する仮想ACIを作成します。

ldapmodify –p oud-port -D "cn=Directory Manager" –w admin-password
dn : o=db
changetype : modify
add : aci
aci : (targetattr= "*") (version 3.0 ; acl "self example" ; allow (all) userdn="ldap:///self" ;)

この新しい仮想ACIを使用して以前の検索を再試行する場合、各ユーザーにはuidに基づいて自分のエントリに対するアクセス権が付与されます。

ldapsearch –p oud-port -D uid=53422345,o=db -w password -b o=db objectclass=*

dn : uid=53422345,o=db
objectclass : sqlPerson
objectclass :top
uid : 53422345
firstName : Audrey
lastName : Smith
employeeNumber : 172453
hireDate : 199505011220000.000Z
telephoneNumber : +33123456789

ノート:

使用しているRDBMSのアクセス制御方法はコーポレート・ポリシーによって異なるため、これらのポリシーに準拠する仮想ACIを作成する必要があります。

20.2 リモートLDAPサーバーとの通信の構成

プロキシ・インスタンスと1つ以上のリモートLDAPサーバーの間の通信の構成、およびこのことに関連するタスクについては、次の各項で説明します。

次の各トピックでは、リモートLDAPとの通信について説明します。

ノート:

リモートLDAPサーバーとの通信の詳細は、「リモートLDAPサーバーとの通信を有効化する方法の理解」を参照してください。

20.2.1 LDAPサーバー拡張の構成

LDAPサーバー拡張は、リモートLDAPサーバーと通信するように構成できます。

次の各トピックでは、LDAPサーバー拡張の構成に関するタスクについて説明します。

20.2.1.1 既存のLDAPサーバー拡張の表示

この項では、既存のLDAPサーバー拡張を表示する手順について説明します。

特定のプロキシ・インスタンスに構成されているすべてのLDAPサーバー拡張のリストを表示するには、次に示すように、dsconfig list-extensionsコマンドを使用します。

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  list-extensions 
Extension  : Type
-----------:---------------------
gi-catalog : global-index-catalog
proxy1     : ldap-server
proxy2     : ldap-server

タイプがldap-serverの拡張が、LDAPサーバー拡張です。リモートLDAPサーバーごとに1つのLDAPサーバー拡張が指定されているはずです。

20.2.1.2 LDAPサーバー拡張のプロパティの表示

dsconfigコマンドを使用して、LDAPサーバー拡張プロパティを表示できます。

特定のLDAPサーバー拡張のプロパティを表示するには、次に示すように、dsconfig get-extension-propコマンドを使用します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  get-extension-prop --extension-name proxy1

Property                   : Value(s)
---------------------------:---------
enabled                    : true
remote-ldap-server-address : server1.example.com
remote-ldap-server-port    : 1389

次のプロパティが表示されます:

  • enabled

    LDAPサーバー拡張が有効になっている(true)か、それとも有効になっていない(false)かを示します。

  • remote-ldap-server-addressおよびremote-ldap-server-port

    リクエストの転送先のリモートLDAPサーバーのアドレスおよびポートを示します

  • monitoring-bind-dnおよびmonitoring-bind-password

    これらのプロパティは、--advancedオプションが指定されている場合にのみ表示されます。データ・ソースのモニタリングの実行に拡張で使用される、ユーザーの資格証明が示されます。これらのプロパティがデフォルトから変更されていない場合、これらのプロパティは表示されません。つまりモニタリングは匿名で実行されます。

    これらのプロパティを構成するには、「LDAPを使用したサーバーのモニタリング」を参照してください。

20.2.1.3 LDAPサーバー拡張の拡張プロパティの表示

dsconfigコマンドを使用して、すべてのLDAPサーバー拡張プロパティを表示できます。

LDAPサーバー拡張のすべてのプロパティを表示するには、dsconfig --advanced get-extension-propコマンドを使用します。たとえば:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  --advanced get-extension-prop --extension-name proxy1

次のようなプロパティが表示されます。

          Property                            Value(s)
         ----------------------------------------------------------------------
    1)   enabled                             true
    2)   java-class                          com.sun.dps.server.workflowelement
                                             .proxyldap.LDAPServerExtension
    3)   monitoring-check-interval           30000
    4)   monitoring-connect-timeout          5000
    5)   monitoring-inactivity-timeout       120000
    6)   monitoring-ping-timeout             5000
    7)   pool-increment                      5
    8)   pool-initial-size                   10
    9)   pool-max-size                       1000
    10)  pool-max-write                      0
    11)  pool-release-connection-interval    300000
    12)  pool-use-max-write                  false
    13)  proxied-auth-use-v1                 false
    14)  remote-ldap-server-address          localhost
    15)  remote-ldap-server-connect-timeout  10000
    16)  remote-ldap-server-port             1389
    17)  remote-ldap-server-read-only        false
    18)  remote-ldap-server-read-timeout     10000
    19)  remote-ldap-server-ssl-policy       never
    20)  remote-ldap-server-ssl-port         636
    21)  saturation-precision                5
    22)  ssl-client-alias                    -
    23)  ssl-key-manager-provider            -
    24)  ssl-trust-all                       false
    25)  ssl-trust-manager-provider          -
    26)  ssl-protocol		             system default value
    27)  ssl-cipher-suite                    system default value

ノート:

ほとんどの拡張プロパティ(SSLプロパティを除く)が、LDAPサーバー拡張の作成時にデフォルトで設定されます。

これらの値を変更するには、「LDAPサーバー拡張のプロパティの変更」を参照してください。

モニタリング・プロパティについて理解するには、「LDAPデータ・ソースの接続モニタリング・プロパティの変更」を参照してください。

SSL (セキュリティ)プロパティについて理解するには、「プロキシ/データ・ソース間のセキュリティ構成」を参照してください。

システム・デフォルト値について理解するには、「Oracle Unified DirectoryがサポートしているTLSプロトコルおよび暗号スイート」を参照してください

20.2.1.4 LDAPサーバー拡張の作成

dsconfigコマンドを使用して、LDAPサーバー拡張を作成できます。

新規LDAPサーバー拡張を作成するには、次に示すように、dsconfig create-extensionコマンドを使用します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-extension \
  --extension-name DS-proxy5 \
  --type ldap-server \
  --set enabled:true \
  --set remote-ldap-server-address:DS5-hostname
  --set remote-ldap-server-port:1389

拡張のtypeldap-serverである必要があります。新規拡張の名前は、extension-nameで定義します。この例では、DS-proxy5です。

作成している拡張を関連付けるリモートLDAPサーバーの名前も指定する必要があります(remote-ldap-server-address)。リモートLDAPサーバーのホスト名またはIPアドレスを指定できます。

remote-ldap-server-portを指定しないと、デフォルトのLDAPポート1389であると見なされます。

20.2.1.5 LDAPサーバー拡張のプロパティの変更

この項では、LDAPサーバー拡張のプロパティを変更する手順を説明します。

LDAPサーバー拡張のプロパティを変更するには、set-extension-propサブコマンドを使用します。このサブコマンドを使用すると、次の操作を実行できます:

  • LDAPサーバー拡張を有効にする(true)か、それとも有効にしない(false)かを設定できます。

  • リモートLDAPディレクトリ・サーバーのアドレスおよびポート(remote-ldap-server-addressおよびremote-ldap-server-port)を変更できます。

  • データ・ソースのモニタリングの実行に拡張で使用される、ユーザーの資格証明を設定できます(monitoring-bind-dnおよびmonitoring-bind-password)。これを空白のままにすると、モニタリングはデフォルトである匿名で実行されます。

たとえば、リモートLDAPサーバーの変更は、よく行われる操作です。次のようにして、新規リモートLDAPサーバーのアドレスとポートを設定する必要があります。

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  set-extension-prop \
  --extension-name DS-proxy5 \
  --set remote-ldap-server-address:DS5-hostname \
  --set remote-ldap-server-port:3388

LDAPサーバー拡張の拡張プロパティを変更するには、「LDAPサーバー拡張の拡張プロパティの変更」を参照してください。

20.2.1.6 LDAPサーバー拡張の拡張プロパティの変更

この項では、構成できる拡張プロパティを示します。

次の拡張プロパティを構成できます:

  • pool-increment

    接続プールのサイズを大きくするまたは小さくする際の増分。remote-ldap-server-ssl-policyプロパティがuserに設定されると、2つの接続プールが作成され、各プールのサイズの増分がpool-incrementに設定されます。

    デフォルト値は接続数5です。

  • pool-initial-size

    接続プールの初期サイズ。これは、プールの初期化時に作成される初期接続数です。pool-initial-sizeプロパティは、プールの最小サイズでもあります。

    デフォルト値は接続数10です。

    remote-ldap-server-ssl-policyプロパティがuserに設定されると、2つの接続プールが作成され、各プールの初期サイズ、つまり最小サイズがpool-initial-sizeに設定されます。このため、最初は合計接続数が、pool-initial-sizeで示される接続数の2倍になる可能性があります。

    詳細は、「セキュアな接続のモードの理解」を参照してください。

  • pool-max-size

    接続プールの最大サイズ。これは、1つのプールに割り当てることができる最大接続数です。remote-ldap-server-ssl-policyプロパティがuserに設定されると、2つの接続プールが作成され、各プールの最大サイズがpool-max-sizeに設定されます。

    デフォルト値は接続数1000です。

  • pool-max-write

    1つの接続プールに同時に割り当てることができる書込み接続の最大数。整数を指定します。このパラメータは、pool-use-max-writeパラメータがtrueに設定されている場合にのみ、考慮されます。

    デフォルト値は接続数0です。

  • pool-release-connection-interval

    プロキシに送信されているトラフィックがない場合に、プロキシで接続が未使用と見なされるまでの時間。接続数が前に増加されている接続プールの場合、そのサイズが縮小されます。未使用の接続の数がpool-incrementより大きい場合、プールのサイズはpool-incrementの分だけ縮小されます。これは、未使用の接続がクローズされ、プールから削除されることを意味します。

    デフォルト値は、300000ミリ秒(30秒)です。

  • pool-use-max-write

    このブール値がtrueに設定されるとpool-max-writeパラメータが考慮されますが、そうでない場合は考慮されません。

    デフォルトで、pool-use-max-writeはfalseに設定されます。

  • proxied_auth_use_v1

    プロキシ認可制御モードを使用している場合、制御のデフォルトのバージョンはv2です。互換性の理由により前のバージョンを使用する場合は、proxied-auth-use-v1をtrueに設定します。

    デフォルトで、proxied-auth-use-v1はfalseに設定されます。

    制御の詳細は、「LDAP制御および操作のリファレンス」を参照してください。

  • remote-ldap-server -read-timeout

    読取りのタイムアウト。リモートLDAPサーバーがレスポンスを返す前にタイムアウトに達すると、プロキシからクライアントにエラーが返されます。

    デフォルトで、この値は10000ミリ秒(10秒)です。

  • saturation-precision

    飽和精度は、飽和しきい値の計算に使用されます。飽和限度はリクエストの送受信によって変化するため、飽和精度は、どれくらい飽和が変化したときに、飽和が考慮されることになるかを示します。

    デフォルトで、考慮に入れられるまで飽和は5%まで変化できます。

  • ssl-protocol

    リモートLDAPサーバーとのSSL通信に使用されるSSL/TLSプロトコルを制御します。このプロパティはシステム・デフォルト値を取り、必要に応じて有効なSSL/TLSプロトコルで上書きできます。システム・デフォルト値の詳細は、「Oracle Unified DirectoryがサポートしているTLSプロトコルおよび暗号スイート」を参照してください。

  • ssl-cipher-suite

    リモートLDAPサーバーとのSSL通信に使用されるSSL/TLS暗号スイートを制御します。このプロパティはシステム・デフォルト値を取り、必要に応じて有効なSSL/TLS暗号スイートで上書きできます。システム・デフォルト値の詳細は、「Oracle Unified DirectoryがサポートしているTLSプロトコルおよび暗号スイート」を参照してください。

モニタリング・プロパティについては、「LDAPデータ・ソースの接続モニタリング・プロパティの変更」で説明しています。

SSLプロパティは、セキュリティ機能です。これらのプロパティの詳細は、「プロキシ/データ・ソース間のセキュリティ構成」を参照してください。

LDAPサーバー拡張の拡張プロパティを変更するには、set-extension-prop --advancedコマンドを使用します。

ノート:

これらの拡張プロパティは、デフォルトで設定されており、通常は変更されません。

変更する可能性がある拡張プロパティの例として、pool-max-sizeがあります。強力なリモートLDAPサーバーを使用しており、最大数のリクエストを受信するようプロキシを構成している場合は、次のようにpool-max-sizeを増加できます:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  set-extension-prop --advanced \
  --extension-name DS-proxy5 \
  --set pool-max-size:2000
20.2.1.7 LDAPデータ・ソースの接続モニタリング・プロパティの変更

LDAPサーバー拡張のdsconfig --advancedコマンドを使用すると、次のモニタリング・プロパティを表示または変更できます。明記されていないかぎり、すべてのプロパティはプロアクティブ・モニタリングに関連しています。

  • monitoring-check-interval

    モニタリング・チェックの間隔は、プロキシ・プロアクティブ監視でデータ・ソースのチェックが実行されるミリ秒単位の間隔です。

    デフォルト値は30000ミリ秒(30秒)です。

    詳細は、「バックエンド・サーバーをモニターするためのプロキシ・インスタンスの構成」を参照してください。

  • monitoring-connect-timeout

    プロアクティブ・モニタリング・ファシリティがリモートLDAPサーバーへの接続の試行を停止するまでのミリ秒単位の最大時間。

    デフォルト値は、5000ミリ秒(5秒)です。0は無制限を意味します。

  • monitoring-inactivity-timeout

    リモート・サーバーによる接続のクローズを回避するために定期的にアイドル接続がチェックされるまでのミリ秒単位の時間間隔。このパラメータの値は、monitoring-check-intervalより長く設定する必要があります。

    デフォルト値は、120000ミリ秒(120秒)です。

  • monitoring-ping-timeout

    プロアクティブ・モニタリングでリモート・サーバーへのpingが試行されるミリ秒単位の最大時間。

    デフォルト値は、5000ミリ秒(5秒)です。

  • remote-ldap-server-read-timeout

    接続が失敗したと見なされるまで、LDAPサーバー拡張がリモート・サーバーからのレスポンスを待機するミリ秒単位の最大時間。0は無制限を意味します。

  • remote-ldap-server-connect-timeout

    接続が失敗したと見なされるまで、モニタリングでリモート・サーバーへの接続が試行されるミリ秒単位の最大時間。0は無制限を意味します。

    デフォルトは10000ミリ秒(10秒)です。

20.2.2 プロキシLDAPワークフロー要素の構成

リモートLDAPサーバーとの通信に必要なLDAPプロキシ・ワークフロー要素を構成するには、プロキシLDAPワークフロー要素を作成します。

次の各トピックでは、LDAPプロキシ・ワークフロー要素の構成について説明します。

20.2.2.1 既存のプロキシLDAPワークフロー要素の表示

dsconfigコマンドを使用すると、特定のプロキシ・サーバー・インスタンスに構成されたすべてのワークフロー要素のリストを表示できます。

特定のプロキシ・サーバー・インスタンスに構成されているすべてのワークフロー要素のリストを表示するには、次に示すように、dsconfig list-workflow-elementsコマンドを使用します。

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  list-workflow-elements

Workflow Element : Type               : enabled
-----------------:--------------------:--------
adminRoot        : ldif-local-backend : true
load-bal-we1     : load-balancing     : true
proxy-we1        : proxy-ldap         : true
proxy-we2        : proxy-ldap         : true

プロキシ・ワークフロー要素は、タイプがproxy-ldapになっているものです。

20.2.2.2 プロキシLDAPワークフロー要素のプロパティの表示

dsconfigコマンドを使用すると、プロキシ・ワークフロー要素のプロパティを表示できます。

プロキシ・ワークフロー要素のプロパティを表示するには、次に示すように、dsconfig get-workflow-element-propコマンドを使用します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  get-workflow-element-prop --element-name proxy-we1
Property                              : Value(s)
--------------------------------------:--------------------
client-cred-mode                      : use-client-identity
enabled                               : true
ldap-server-extension                 : proxy1
remote-ldap-server-bind-dn            : -
remote-ldap-server-bind-password      : -
use-proxy-auth                        : false

次のプロパティが表示されます:

  • client-cred-mode

    これは、プロキシからリモートLDAPサーバーに接続する方法を示します。この例では、ステータスはuse-client-identityになっています。これは、クライアントでプロキシへの接続に使用されたものと同じ資格証明を使用してプロキシからリモートLDAPサーバーに接続されることを意味しています。

    これがデフォルト・モードです。

    詳細は、「プロキシ/データ・ソース間のセキュリティ構成」を参照してください。

  • enabled

    これは、ワークフローが有効になっている(true)か、それとも有効になっていない(false)かを示します

  • ldap-server-extension

    これは、ワークフロー要素が関連付けられているLDAPサーバー拡張の名前を示します

  • remote-ldap-server-bind-dnおよびremote-ldap-server-bind-password

    これは、client-cred-modeuse-specific-identityまたはuse-proxy-authの場合に、リモートLDAPサーバーへの接続にプロキシで使用される、ユーザーの資格証明を示します。

20.2.2.3 プロキシLDAPワークフロー要素の作成

プロキシLDAPワークフロー要素を作成するには、LDAPサーバー拡張を構成しておく必要があります。

プロキシLDAPワークフロー要素を作成するには、次に示すように、dsconfig create-workflow-elementコマンドを使用します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-workflow-element \
  --element-name proxy-we5 \
  --type proxy-ldap \
  --set enabled:true \
  --set client-cred-mode:use-client-identity \
  --set ldap-server-extension:DS-proxy5

ワークフロー要素のタイプは、proxy-ldapである必要があります。新規プロキシLDAPワークフロー要素の名前は、element-nameで定義します。この例では、proxy-we5です。

クライアント資格証明モード(client-cred-mode)は、プロキシがリモートLDAPサーバーに接続する方法を示します。この例では、資格証明モードはuse-client-identityになっています。これは、クライアントでプロキシへの接続に使用されたものと同じ資格証明を使用してプロキシからリモートLDAPサーバーに接続されることを意味しています。これがデフォルト・モードです。

ノート:

  • Oracle Unified DirectoryリモートLDAPサーバーを使用しており、クライアント資格証明モードがuse-proxy-authに設定されている場合、接続しているユーザーが、リモートLDAPサーバー上に存在する必要があります。ユーザーが存在しないと、リクエストは拒否されます。ユーザーがリモートLDAPサーバー上に存在することを保証できない場合は、クライアント資格証明モードをuse-specific-identityに設定してください。

  • ユーザー・デプロイメントで、内部操作が実行される場合は、ルート資格証明を定義する必要があります。たとえば、「RDN変更の構成の実行」で説明しているようにRDN変更を使用している場合は、ルート資格証明は次のプロパティで定義されます。

    remote-root-dn

    remote-root-password

    これらは、サーバーで内部操作が実行される場合の、リモートLDAPサーバーのルート・ユーザーの資格証明です。

  • プロキシLDAPワークフロー要素でパスワードを管理する場合(remote-ldap-server-bind-passwordまたはremote-root-passord)、次の構文が有効です:

    <password-value>またはfile://<password-file>

詳細は、「プロキシ/データ・ソース間のセキュリティ構成」を参照してください。

20.2.2.4 プロキシLDAPワークフロー要素のプロパティの変更

プロキシLDAPワークフロー要素のプロパティを変更するには、set-workflow-element-propコマンドを使用します。

次のプロパティを変更できます:

  • プロキシLDAPワークフロー要素を有効にする(true)か、それとも有効にしない(false)かを設定できます。

  • 使用するクライアント資格証明モードを設定できます(client-cred-mode)。

  • LDAPサーバー拡張を関連付けて、使用するリモートLDAPサーバーを指定できます(ldap-server-extension)。

  • リモートLDAPサーバーへの接続にプロキシで使用する、ユーザーの資格証明を設定できます(remote-ldap-server-bind-dnおよびremote-ldap-server-bind-password)。次の構文がサポートされています:

    • <password-value>

    • file://<password-file>

    コマンド行で、クリア・テキストでパスワードを渡すことはサポートされていますが、お薦めしません。パスワード・ファイルを使用することをお薦めします。パスワード・ファイルは、コマンドが実行されたら削除できます。

たとえば、別のリモートLDAPサーバーを使用するために、ワークフロー要素で使用するLDAPサーバー拡張を変更する場合、次のように実行します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  set-workflow-element-prop --advanced \
  --element-name proxy-we5 \
  --set remote-ldap-server-bind-dn:uid=Specific\ User,dc=example,dc=com \
  --remote-ldap-server-bind-password:file://pwd-file \
  --set ldap-server-extension:DS-proxy3 \
  --set client-cred-mode:use-specific-identity

20.2.3 バインド・モードの構成

サーバーを最適化するためにバインド・モードとそのパラメータを構成できます。

次の各トピックでは、バインド・モードとそのパラメータを構成する方法について説明します。

20.2.3.1 バインド・モードの構成について

プロキシLDAPワークフロー要素が、エンド・ユーザーによって実行される認証済操作をどのように処理するかを学習します。

エンド・ユーザーが1つの認証済操作を実行すると、プロキシLDAPワークフロー要素は、次の2つの個別操作を受け取ります:

  1. リモート・サーバーに対してユーザーを認証するバインド操作。

  2. 実行する操作。

バインド操作が実行される際には、プロキシLDAPワークフロー要素は、LDAPサーバー拡張から接続を取得し、バインド操作を実行してから、接続を解放します。

実際の操作が着信すると、プロキシLDAPワークフロー要素は、LDAPサーバー拡張から接続を再度取得します。該当する資格証明にバインドされている接続が検出された場合、その接続が再利用されます。検出されなかった場合、新規接続を認証する必要があります。この追加認証操作をサイレント・バインドと呼びます。

サイレント・バインドの実行に使用する一連の資格証明は、バインド・モードで指定されます。これは、LDAPワークフロー要素のプロパティの1つです。これらの資格証明は、クライアント資格証明またはプロキシ資格証明です。表20-3は、Oracle Unified Directoryでサポートされているバインド・モードを示しています。

表20-3 Oracle Unified Directoryでサポートされているバインド・モード

モード 説明

use-client-identity

サイレント・バインドの実行にクライアント資格証明を使用します。

use-specific-identity

サイレント・バインドの実行にプロキシ資格証明を使用します。

20.2.3.2 サーバーを最適化するためのバインド・モード・パラメータの構成

サーバーの動作を微調整するために追加のパラメータを構成できます。

表20-3に示されているバインド・モードごとに、追加のパラメータを構成して、サーバーの動作を微調整できます。

これらのパラメータの詳細は、次の各項を参照してください。

20.2.3.2.1 use-client-identityバインド・モードの構成について

バインド・モードがuse-client-identityに設定された場合、サーバーでは特定のパラメータによって阻止されないかぎり、サイレント・バインドの実行にクライアント資格証明が使用されます。

サーバーでクライアント資格証明を使用できないようにするパラメータの詳細は、次の各項を参照してください。

包含リストおよび除外リストの使用

次のリストを構成できます:

  • 包含リスト: リモート・サーバーで処理される接尾辞をリストします。

  • 除外リスト: リモート・サーバーで処理されない接尾辞をリストします。

クライアント・バインドDNが包含リスト上のいずれかのDNの子であるが、除外リスト上のいずれのDNの子でもない場合、プロキシ・サーバーではサイレント・バインドの実行にクライアント資格証明が使用されます。それ以外の場合、プロキシ・サーバーでは、サイレント・バインドの実行にプロキシ資格証明が使用されます。両方のリストがともに空の場合、プロキシ・サーバーでは常にクライアント資格証明が使用されます。

包含リストと除外リストは相互に排他的ではなく、同時に使用できます。ただし、1つのリストのみを定義することをお薦めします。また、両方のリストに同一の接尾辞を定義することはできません。

never-bindパラメータの使用

never-bindパラメータは、プロキシでクライアント資格証明を使用したバインドを実行する必要がある場合は常に適用できます。このフラグがtrueに設定されると、プロキシ・サーバーではリモート・データ・ソースからユーザー・エントリが読み取られ、バインドをリモート・サーバーに転送するのではなく、ユーザー・パスワード自体が検証されます。

ノート:

ユーザー・エントリの読取りに使用される資格証明は、プロキシLDAPワークフロー要素のremote-ldap-server-bind-dnおよびremote-ldap-server-bind-passwordプロパティで定義されているプロキシ資格証明です。

受信バインド操作に重要な制御が含まれている場合、バインド操作専用の制御はnever-bind機能と互換性がないため、エラー結果が返されます。

ノート:

プロキシでユーザー・エントリの読取りに独自の資格証明が使用される場合、プロキシ認可制御を操作に追加して、リクエストの送信元のクライアントのアイデンティティを示すことができます。use-proxy-authプロパティの値によって、制御を追加する必要があるかどうかが指定されます。

20.2.3.2.2 use-specific-identityバインド・モードの構成について

バインド・モードがuse-specific-identityに設定されると、プロキシ・サーバーでは、すべてのサイレント・バインドの実行にプロキシ資格証明が使用されます。

プロキシ資格証明は、プロキシLDAPワークフロー要素の次のプロパティで定義されます。remote-ldap-server-bind-dnおよびremote-ldap-server-bind-password

use-specific-identityバインド・モードでは、次のパラメータを設定できます:

use-proxy-authパラメータの使用

use-proxy-authフラグがtrueに設定されると、プロキシ・サーバーでは、バインド・リクエスト以外のすべてのリクエストにプロキシ認可制御が追加されます。プロキシ認可IDの値は、クライアント・バインドDNです。

never-bindパラメータの使用

never-bindパラメータは、プロキシでクライアント資格証明を使用したバインドを実行する必要がある場合は常に適用できます。このフラグがtrueに設定されると、プロキシ・サーバーではリモート・データ・ソースからユーザー・エントリが読み取られ、バインドをリモート・サーバーに転送するのではなく、ユーザー・パスワード自体が検証されます。

ノート:

ユーザー・エントリの読取りに使用される資格証明は、プロキシLDAPワークフロー要素のremote-ldap-server-bind-dnおよびremote-ldap-server-bind-passwordプロパティで定義されているプロキシ資格証明です。