14 サード・パーティのメタディレクトリ・ソリューションとの同期
この章では、変更ログ情報の生成方法およびサポートするソリューションでの変更ログ情報の使用方法について説明します。Oracleバックエンド・ディレクトリと同期化するためにサード・パーティのメタディレクトリ・ソリューションを有効化する方法を示します。
Oracleバックエンド・ディレクトリは、サポート対象のサード・パーティのメタディレクトリ・ソリューションとの同期を可能にするために変更ログを使用します。Oracle Directory Integration Platformには、サード・パーティのメタディレクトリ・ソリューション用のマッピング・サービスやスケジューリング・サービスは用意されていません。
トピック:
14.1 変更ログについて
Oracleバックエンド・ディレクトリは、各変更をエントリとして変更ログ・コンテナに記録します。サード・パーティのメタディレクトリ・ソリューションは、変更ログ・コンテナから変更を取得し、サード・パーティ・ディレクトリに適用します。これらの変更を取得するために、サード・パーティのメタディレクトリ・ソリューションはOracleバックエンド・ディレクトリの変更ログをサブスクライブする必要があります。
変更ログの各エントリには変更番号があります。サード・パーティのメタディレクトリ・ソリューションは、最後に適用した変更番号を記録しておき、その番号よりも大きい変更番号の変更のみをOracleバックエンド・ディレクトリから取得します。たとえば、サード・パーティのメタディレクトリ・ソリューションが取得した最後の変更の番号が250だった場合、それ以降の変更の番号は251以上になります。
ノート:
サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリの変更ログでサブスクライブされず、ソリューションが最初に取得した変更番号が最後に適用した変更番号よりも2以上大きい場合、Oracleバックエンド・ディレクトリ変更ログ内の変更の一部が、すでにパージされています。この場合、サード・パーティのメタディレクトリ・ソリューションは、Oracleバックエンド・ディレクトリ全体を読み取り、そのコピーとOracleバックエンド・ディレクトリの情報とを同期化する必要があります。
関連項目:
ディレクトリ統合プロファイルの概念は、「Oracleディレクトリの同期に必要なコンポーネント」を参照してください
14.2 Oracleバックエンド・ディレクトリと同期化するためのサード・パーティのメタディレクトリ・ソリューションの有効化
この項で説明するタスクを実行して、サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリから変更を取得できるようにします。
14.2.1 初期ブートストラップの実行
この項では、ローカル・ディレクトリとOracleバックエンド・ディレクトリの間でデータを同期化するためにディレクトリをブートストラップする方法について説明します。
これを行うには、次のステップを完了します。
14.2.2 Oracleバックエンド・ディレクトリでサード・パーティのメタディレクトリ・ソリューション用のサブスクリプション・オブジェクトを変更する方法の理解
サード・パーティのメタディレクトリ・ソリューションをOracleバックエンド・ディレクトリと同期化できるようにするには、Oracleバックエンド・ディレクトリにそれに対する変更サブスクリプション・オブジェクトを作成する必要があります。この変更サブスクリプション・オブジェクトによって、Oracleバックエンド・ディレクトリに格納されている変更ログ・オブジェクトへのアクセス権限がサード・パーティのメタディレクトリ・ソリューションに付与されます。
14.2.2.1 変更サブスクリプション・オブジェクトについて
Oracle Internet DirectoryがOracleバックエンド・ディレクトリである場合、変更サブスクリプション・オブジェクトは、次のコンテナの下にあるエントリです。
cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Oracle Internet Directory
Oracle Unified DirectoryまたはOracle Directory Server Enterprise EditionがOracleバックエンド・ディレクトリである場合、変更サブスクリプション・オブジェクトは、次のコンテナの下にあるエントリです。
cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Directory Integration Platform, <suffix>
この変更サブスクリプション・オブジェクトは、サード・パーティのメタディレクトリ・ソリューションがOracleバックエンド・ディレクトリとバインドして変更を取得するための一意の資格証明を提供します。変更サブスクリプション・オブジェクトを補助オブジェクト・クラスorclChangeSubscriber
と関連付けます。このオブジェクト・クラスには複数の属性がありますが、次の属性が必須です。
-
userPassword
Oracleバックエンド・ディレクトリの変更ログ・オブジェクトにアクセスするときに、ディレクトリが使用するパスワード。
-
orclLastAppliedChangeNumber
前回の同期で適用された変更番号。この属性によって、ディレクトリは、Oracleバックエンド・ディレクトリでの変更から未適用の変更のみを取得できます。
14.2.2.2 変更サブスクリプション・オブジェクトの作成
変更サブスクリプション・オブジェクトの作成には、ldapadd
コマンドを使用します。次の例では、入力ファイルadd.ldif
を使用して、次のコンテナの下でmy_change_subscription_object
という名前の変更サブスクリプション・オブジェクトの作成および有効化を行っています。
-
Oracle Internet DirectoryがOracleバックエンド・ディレクトリである場合:
cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Oracle Internet Directory
-
Oracle Unified DirectoryまたはOracle Directory Server Enterprise EditionがOracleバックエンド・ディレクトリである場合:
cn=Subscriber Profile,cn=ChangeLog Subscriber,cn=Directory Integration Platform, <suffix>
orclLastAppliedChangeNumber
属性は、初期ブートストラップ前のディレクトリにある現行の変更番号で、この例では250です。
-
add.ldif
ファイルの編集(この例では、Oracle Internet Directoryがバックエンド・ディレクトリ):dn: cn=my_change_subscription_object,cn=Subscriber Profile, cn=ChangeLog Subscriber,cn=Oracle Internet Directory userpassword: my_password orclLastAppliedChangeNumber: 250 orclSubscriberDisable: 0 objectclass: orclChangeSubscriber objectclass: top
-
エントリの追加:
ldapadd -h my_host -D binddn -q -p PORT -f add.ldif
関連項目:
変更サブスクリプション・オブジェクトを一時的に無効にする方法、または削除する方法については、「変更サブスクリプション・オブジェクトの無効化と削除」を参照してください
14.3 同期プロセスの理解
サポートされるサード・パーティのメタディレクトリ・ソリューションとの同期プロセスについて理解します。
トピック:
14.3.1 Oracleバックエンド・ディレクトリからの初めての変更の取得
次の例は、my_change_subscription_object
という名前の変更サブスクリプション・オブジェクトを持つ接続ディレクトリが、Oracleバックエンド・ディレクトリから変更内容を取得する方法を示しています。
ldapsearch -h my_host -D binddn -q -p PORT -b "cn=changeLog" -s one (&(objectclass=changeLogEntry) (changeNumber >= orclLastAppliedChangeNumber ) ( ! (modifiersname =cn=my_change_subscription_object,cn=Subscriber Profile, cn=ChangeLog Subscriber,cn=Oracle Internet Directory ) ) )
ディレクトリが初めて変更を取得する場合、orclLastAppliedChangeNumber
の値は、「Oracleバックエンド・ディレクトリでサード・パーティのメタディレクトリ・ソリューション用のサブスクリプション・オブジェクトを変更する方法の理解」で設定した番号です。
フィルタ内の(!(modifiersname=
client_bind_dn))
引数によって、Oracleバックエンド・ディレクトリからは、接続ディレクトリ自体で行われた変更は返されません。
14.3.2 Oracleバックエンド・ディレクトリでのorclLastAppliedChangeNumber属性の更新
Oracleバックエンド・ディレクトリから変更を取得した後、接続ディレクトリはOracleバックエンド・ディレクトリ内の対応する変更サブスクリプション・オブジェクトのorclLastAppliedChangeNumber
属性を更新します。これによって、Oracleバックエンド・ディレクトリは接続ディレクトリで適用済の変更をパージできます。また、これによって、接続ディレクトリは適用済の変更を無視して、最新の変更のみを取得できます。
次の例では、接続ディレクトリにmy_change_subscription_object
という名前の変更サブスクリプション・オブジェクトがあり、前回適用した変更番号が121の入力ファイルmod.ldif
を使用します。この接続ディレクトリでは、Oracleバックエンド・ディレクトリ内の対応する変更サブスクリプション・オブジェクトのorclLastAppliedChangeNumber
を次のように更新します。
14.4 変更サブスクリプション・オブジェクトの無効化と削除
14.4.1 変更サブスクリプション・オブジェクトの無効化
サード・パーティのメタディレクトリ・ソリューションにある既存の変更サブスクリプション・オブジェクトを一時的に無効にする場合は、orclSubscriberDisable
属性を1
に設定します。
次の例では、入力ファイルmod.ldif
を使用して、変更サブスクリプション・オブジェクトを無効にします。
-
mod.ldif
ファイルの編集(この例では、Oracle Internet Directoryがバックエンド・ディレクトリ):dn: cn=my_change_subscription_object,cn=Subscriber Profile, cn=ChangeLog Subscriber,cn=Oracle Internet Directory changetype: modify replace: orclSubscriberDisable orclSubscriberDisable: 1
-
エントリの変更:
ldapmodify -h my_ldap_host -D binddn -q -p PORT -v -f mod.ldif