20 リモート・データ・ソースへのアクセスの構成
次の各トピックでは、リモート・データ・ソースへのアクセスの構成について説明します。
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
およびUSER_GROUP
SQL表に対する読取り権限が必要です。dbuser
がLDAPプロトコルを使用してアイデンティティ・データを作成または更新する場合も、追加の権限が必要です。
ノート:
次の項に示す例では、デモンストレーション目的でのみスキーマに次の表が含まれていることを前提としています: PERSON
、PHONE
、USER_GROUP
。実際のデプロイメントでは、スキーマの実際の表が使用されます。
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は、インストールされて実行中の、デプロイメントのアイデンティティ・データが移入されているOracle 11g Database以降です。
このデータベースには、次のSQL表のユーザー・アカウントに関する情報が含まれます。
-
PERSON
表には、従業員ID、名、姓、パスワード、従業員番号、雇用日などのユーザー・データが含まれます。 -
PHONE
表はPERSON
表にリンクされており、従業員の電話番号が含まれます。
これらの表の詳細は、「PERSON表およびPHONE表のサンプル・スキーマの理解」を参照してください。
このデータベースには次の特性もあります。
-
データベースのシステム識別子(SID):
orcl
-
データベースURL:
myhost.example.com:1521:orcl
-
プロキシからデータベースに接続するデータベース・ユーザー:
dbuser
-
データベース・ユーザー・パスワード:
dbuser-password
また、グループ・メンバーシップが必要な場合、これらの表もデータベースで定義する必要があります。詳細は、「USER_GROUP表のサンプル・スキーマの理解」を参照してください。
20.1.2 RDBMSワークフロー要素の構成
RDBMSワークフロー要素とそのサポートしているコンポーネントの構成を開始する前に、必要な事前タスクを実行する必要があります。
必要な事前タスクは次のとおりです。
20.1.2.1 Oracle Unified Directoryプロキシ・サーバーの設定
このユースケースには、LDAPクライアントとOracle Database (アイデンティティ・データを含む)の間のインタフェースとして、Oracle Unified Directoryプロキシ・サーバーが必要です。
UNIXシステムまたはLinuxシステムでコマンド行ツールを使用してプロキシ・サーバー・インスタンスを設定するには:
詳細は、Oracle Unified DirectoryのインストールのOracle Unified Directoryのプロキシ・サーバーとしての設定に関する項を参照してください。
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サーバーの証明書にアクセスして、セキュアな接続に対応できるようになります。
次の各トピックでは、セキュアな接続を使用するためのRDBMS拡張の作成について説明します。
20.1.3.2.1 プロキシ・サーバーとRDBMSサーバーの間のセキュリティの構成
このタスクでは、リモートRDBMSサーバーへの接続のセキュリティを構成するために必要な主要なステップについて説明します。リモートRDBMSサーバー接続のためのキーストアを構成し、RDBMSサーバー証明書を取得するステップの詳細は、RDBMSベンダーのドキュメントを参照してください。
dsconfig
を使用してプロキシと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インスタンスに対応しています。 |
|
現在使用中のRDBMSのタイプを指定します。11g (および12g) Oracle Databaseの場合は、Oracle11を指定します。 |
|
SQL問合せを実行するために使用する資格証明を指定します。 |
|
セキュアな接続を示すフラグを指定します。使用可能な値は、接続に基づいて |
|
信頼マネージャ・プロバイダを指定します。 |
|
キー・マネージャ・プロバイダを指定します |
|
基になるJDBCドライバ・プロパティを「名前=値」としてリストします |
|
|
すべての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トラストストアおよびキーストアを設定するための拡張プロパティ
プロパティ | 説明 |
---|---|
|
トラスト・ストアを指定するためのベンダー固有のプロパティ名を指定します。 |
|
トラスト・ストア・パスワードを指定するためのベンダー固有のプロパティ名を指定します。 |
|
トラスト・ストア・タイプを指定するためのベンダー固有のプロパティ名を指定します。 |
|
キー・ストアを指定するためのベンダー固有のプロパティ名を指定します。 |
|
キー・ストア・パスワードを指定するためのベンダー固有のプロパティ名を指定します。 |
|
キー・ストア・タイプを指定するためのベンダー固有のプロパティ名を指定します。 |
すべての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ワークフローのアクセス制御グループを作成するには:
この例の説明は、次のとおりです。
-
workflow-name
は、db
というワークフローがorcl1
というアクセス制御グループに格納されている仮想ACIによって保護されることを指定します。 -
virtual-aci-mode
がtrue
に設定されているため、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
およびUSER_GROUP
表の適切な列にマップする必要があります。
次の各トピックでは、このユースケースで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
コマンドを使用します。
すべての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の表と列 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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ワークフロー要素を構成するには:
この例の説明は、次のとおりです。
-
password-attribute
は、ユーザー・パスワードを含む属性を指定します。 -
password-storage-scheme
は、Oracle Databaseにユーザー・パスワードを格納する方法を指定します。この例では、ユーザー・パスワードは、
Salted SHA-512
アルゴリズムを使用してハッシュされ、Oracle Databaseに格納されます。LDAPエントリの場合と異なり、SQL表のハッシュされたパスワード値には、ダイジェスト・アルゴリズム・タグ({SSHA-512}
など)の接頭辞は付きません。
20.1.3.7.7 USER_GROUP
表のサンプル・スキーマの理解
ノート:
グループ・メンバーシップの詳細が複数の表に格納されている場合は、構成で適切な結合を定義する必要があります。
CREATE TABLE USER_GROUP(ID NUMBER NOT NULL, GROUP_NAME VARCHAR2(10), GROUP_MEMBER VARCHAR2(40));
ここで、GROUP_NAME列はグループの名前を、GROUP_MEMBER列はグループのメンバーの名前を、次のように保持します:
表20-3 グループ名の表
ID | GROUP_NAME | GROUP_MEMBER |
---|---|---|
1234 | Group 1 | user1 |
1235 | Group 1 | user2 |
1236 | Group 1 | user3 |
「RDBMS表の作成」、「オブジェクト・クラス・マッピングの作成」および「属性マッピングの作成」の各項を参照して、RDBMS表、オブジェクト・クラス・マッピングおよび属性マッピングを作成します。
たとえば、
$ dsconfig create-rdbms-table \
--set db-table-name:USER_GROUP \
--table-name USER_GROUP \
--element-name ORCL1 \
--set primary-key-field:ID \
--set primary-key-storability:false \
--set db-sequence-name:USER_GROUP_SEQUENCE \
--type generic
$ dsconfig create-objectclass-mapping \
--mapping-name sqlGroup \
--element-name ORCL1 \
--set objectclass-name:groupOfUniqueNames \
--set rdn-attribute:cn \
--type generic
$ dsconfig create-attribute-mapping \
--attribute-mapping-name groupCN \
--mapping-name sqlGroup \
--set attribute-name:cn \
--set field-name:GROUP_NAME \
--set table-name:USER_GROUP \
--element-name ORCL1 \
--type generic
$ dsconfig create-attribute-mapping \
--attribute-mapping-name groupUniquemember \
--mapping-name sqlGroup \
--set attribute-name:uniquemember \
--set field-name:GROUP_MEMBER \
--set table-name:USER_GROUP \
--element-name ORCL1 \
--type generic
ノート:
グループのLDAP検索結果でユーザーのDNをuniquemember属性値として返すには、変換を指定する必要があります。ここに、変換構成のサンプルを示します。詳細は、「変換フレームワークの理解」を参照してください。
- 属性uniquememberの変換を作成します:
dsconfig create-transformation \ --type map-attribute \ --transformation-name uniquemember_transform \ --set client-attribute:uniquemember="{uid=%uniquemember%,o=db}" \ --portProtocol LDAP
- 変換のワークフロー要素を作成します:
dsconfig create-workflow-element \ --set next-workflow-element:ORCL1 \ --set transformation:uniquemember_transform \ --portProtocol LDAP \ --type transformations \ --element-name uniquemem_transform_wfe \ --set enabled:true dsconfig set-workflow-element-prop \ --element-name uniquemem_transform_wfe \ --add transformation:uniquemember_transform
- 変換のワークフローを作成します:
dsconfig create-workflow \ --set base-dn:o=db \ --set enabled:true \ --set workflow-element:uniquemem_transform_wfe \ --workflow-name workflow1 \ --type generic
- 変換のネットワーク・グループを設定します:
dsconfig set-network-group-prop \ --group-name network-group \ --set workflow:workflow1
前述の構成では、LDAP検索結果は次のようになります:
dn: cn=group1,o=db
uniquemember: cn=user1,o=db
uniquemember: cn=user2,o=db
uniquemember: cn=user3,o=db
cn: group1
objectClass: top
objectClass: groupOfUniqueNames
20.1.4 仮想データに対するアクセス権の付与について
仮想データへのアクセス権を付与するには、ldapコマンドで仮想ACIを作成します。
ノート:
使用しているRDBMSのアクセス制御方法はコーポレート・ポリシーによって異なるため、これらのポリシーに準拠する仮想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
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
page-size : 0
次のプロパティが表示されます:
-
enabled
LDAPサーバー拡張が有効になっている(
true
)か、それとも有効になっていない(false
)かを示します。 -
remote-ldap-server-addressおよびremote-ldap-server-port
リクエストの転送先のリモートLDAPサーバーのアドレスおよびポートを示します
-
monitoring-bind-dnおよびmonitoring-bind-password
これらのプロパティは、
--advanced
オプションが指定されている場合にのみ表示されます。データ・ソースのモニタリングの実行に拡張で使用される、ユーザーの資格証明が示されます。これらのプロパティがデフォルトから変更されていない場合、これらのプロパティは表示されません。つまりモニタリングは匿名で実行されます。これらのプロパティを構成するには、「LDAPを使用したサーバーのモニタリング」を参照してください。
-
page-size
このLDAPサーバー拡張に関連付けられているディレクトリ・サーバー・バックエンドからエントリをリクエストする際に考慮されるデフォルト・ページ・サイズを示します。
これにより、この拡張で構成される、バックエンド・サーバーにリクエストできるエントリ数(構成が0より大きい場合)が制限されます。これは、OUDプロキシへのアクセス中にクライアントがページ検索オプションを明示的に含まない検索問合せを使用する場合、問合せ結果が非常に大きいと検索がタイムアウトになる可能性があるため、特に便利です。
誤った結果が発生しないように、このオプションにはバックエンドで指定されたサイズ制限パラメータ以下の値が必要です。
このパラメータは、クライアントがリクエストでページ・サイズ検索オプションを指定しない場合にのみ適用されます。
デフォルト値は
0
です。
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) page-size 0 8) pool-increment 5 9) pool-initial-size 10 10) pool-max-size 1000 11) pool-max-write 0 12) pool-release-connection-interval 300000 13) pool-use-max-write false 14) proxied-auth-use-v1 false 15) remote-ldap-server-address localhost 16) remote-ldap-server-connect-timeout 10000 17) remote-ldap-server-port 1389 18) remote-ldap-server-read-only false 19) remote-ldap-server-read-timeout 10000 20) remote-ldap-server-ssl-policy never 21) remote-ldap-server-ssl-port 636 22) saturation-precision 5 23) ssl-client-alias - 24) ssl-key-manager-provider - 25) ssl-trust-all false 26) ssl-trust-manager-provider - 27) ssl-protocol system default value 28) 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
拡張のtype
はldap-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プロトコルおよび暗号スイート」を参照してください。
-
allow-server-supported-controls
allow-server-supported-controls
プロパティがtrue
に設定されている場合、LDAPサーバー拡張は、初期化中にリモート・バックエンドのRootDSEのsupportedControl
に設定されているすべてのコントロールをフェッチします。これらのコントロールのみがリモート・サーバーに渡され、LDAPリクエストの他のLDAPコントロールは無視されリモート・バックエンドに送信されません。ただし、このプロパティがfalse
に設定されている場合、LDAPサーバー拡張はignored-ldap-controls
プロパティで設定された値を尊重します。 -
ignored-ldap-controls
無視され、リモート・バックエンドに送信されないLDAP制御のOIDのリスト。
-
remote-ldap-server-guid
リモートLDAPサーバーにLDAPエントリのグローバル一意識別子(GUID)値を格納する属性の名前を指定します。たとえば、Active Directoryの場合、
objectGUID
です。 -
server-guid-name
LDAPサーバー拡張によって返されるエントリ内の変換された値
remote-LDAP-server-guid
を含む属性名を指定します。デフォルト値はorclguid
です。 -
remote-ldap-server-additional-guids
remote-ldap-server-guid
プロパティで構成されている属性以外の属性の名前を指定します。これは、リモートLDAPサーバーにGUID値を格納できます。構成すると、属性値はLDAPサーバー拡張によってorclguid
形式に変換されます。
モニタリング・プロパティについては、「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-mode
がuse-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つの個別操作を受け取ります:
-
リモート・サーバーに対してユーザーを認証するバインド操作。
-
実行する操作。
バインド操作が実行される際には、プロキシLDAPワークフロー要素は、LDAPサーバー拡張から接続を取得し、バインド操作を実行してから、接続を解放します。
実際の操作が着信すると、プロキシLDAPワークフロー要素は、LDAPサーバー拡張から接続を再度取得します。該当する資格証明にバインドされている接続が検出された場合、その接続が再利用されます。検出されなかった場合、新規接続を認証する必要があります。この追加認証操作をサイレント・バインドと呼びます。
サイレント・バインドの実行に使用する一連の資格証明は、バインド・モードで指定されます。これは、LDAPワークフロー要素のプロパティの1つです。これらの資格証明は、クライアント資格証明またはプロキシ資格証明です。表20-4は、Oracle Unified Directoryでサポートされているバインド・モードを示しています。
表20-4 Oracle Unified Directoryでサポートされているバインド・モード
モード | 説明 |
---|---|
|
サイレント・バインドの実行にクライアント資格証明を使用します。 |
|
サイレント・バインドの実行にプロキシ資格証明を使用します。 |
20.2.3.2 サーバーを最適化するためのバインド・モード・パラメータの構成
サーバーの動作を微調整するために追加のパラメータを構成できます。
表20-4に示されているバインド・モードごとに、追加のパラメータを構成して、サーバーの動作を微調整できます。
これらのパラメータの詳細は、次の各項を参照してください。
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
プロパティで定義されているプロキシ資格証明です。