Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

8.3. デュアルエントリーの自動作成

一部のクライアントおよび Red Hat Directory Server と統合には、2 つのエントリーが必要です。たとえば、Posix システムには、通常、各ユーザーにグループがあります。Directory Server の 管理エントリープラグイン は、適切な作成元のエントリーが作成されるたびに、属性の正確な値と特定の値で新しい管理エントリーが自動的に作成されます。

8.3.1. 管理対象エントリー

管理エントリープラグインの背後にある基本的な概念は、エントリー A の作成時に、関連する属性値を含むエントリー B が自動的に配置される必要があることです。たとえば、Posix ユーザー (posixAccount エントリー) が作成されると、対応するグループエントリー (posixGroup エントリー) も作成する必要があります。管理エントリープラグインのインスタンスは、プラグインが、新しいエントリー (管理エントリー) を自動的に生成するエントリー (作成元のエントリー) を識別します。
プラグインは、ディレクトリーツリーの定義範囲内で機能し、指定した検索フィルターに一致するエントリーのみが管理エントリー操作をトリガーします。
サービスのクラスを設定するのと同様に、管理エントリーは 2 つのエントリーで設定されます。
  • プラグインインスタンスおよび使用するテンプレートの範囲を特定する定義エントリー
  • 最終的な管理エントリーをモデル化するテンプレートエントリー

8.3.1.1. インスタンス定義エントリーの概要

リンク先属性および DNA プラグインと同様に、Managed Entries プラグインには cn=plugins,cn=config にコンテナーエントリーがあり、プラグインの各固有の設定インスタンスには、そのコンテナーの下に定義エントリーがあります。
管理エントリープラグインのインスタンスは、以下の 3 つを定義します。
  • (検索範囲と検索フィルターを使用する) 作成元のエントリーを識別する検索基準
  • 管理エントリーを作成するサブツリー (新しいエントリーの場所)
  • 管理エントリーに使用するテンプレートエントリー

図8.2 管理エントリーの定義

管理エントリーの定義
以下に例を示します。
dn: cn=Posix User-Group,cn=Managed Entries,cn=plugins,cn=config
objectclass: extensibleObject
cn: Posix User-Group
originScope: ou=people,dc=example,dc=com
originFilter: objectclass=posixAccount
managedBase: ou=groups,dc=example,dc=com
managedTemplate: cn=Posix User-Group Template,ou=Templates,dc=example,dc=com
作成元のエントリーには、管理エントリーを作成するために特別な構成または設定は必要ありません。プラグインの範囲内に作成し、指定の検索フィルターと一致させる必要があります。

8.3.1.2. テンプレートエントリーの概要

プラグインの各インスタンスは、管理エントリー設定を定義するテンプレートエントリーを使用します。テンプレートは、オブジェクトクラスからエントリーの値にエントリーを効果的に配列します。
注記
テンプレートは定義エントリーで参照されるため、ディレクトリーのどこにでも配置できます。ただし、テンプレートエントリーを複製された接尾辞の下に置くことが推奨されます。これにより、マルチマスターレプリケーションの他のマスターはすべて、管理エントリープラグインのローカルインスタンスに同じテンプレートを使用します。
テンプレートエントリーの概念は、CoS で使用されるテンプレートに似ていますが、重要な相違点があります。管理対象エントリーテンプレートは、サービスのクラスに使用されるテンプレートのタイプとは若干異なります。サービスのクラスの場合、テンプレートには、その CoS に属するすべてのエントリーに読み込まれる特定の値を持つ 1 つの属性が含まれます。このようなエントリーの CoS 属性は、エントリーに設定した属性ではなく、仮想属性であるため、サービスのクラスへの変更は直ちに関連エントリーに反映されます。
一方、管理エントリープラグインのテンプレートエントリーは、関連するエントリーに値を提供する中央エントリーではありません。これは真のテンプレートです。エントリーの内容をレイアウトします。テンプレートエントリーには、静的属性 (CoS のように事前定義の値を持つもの) とマップされた属性 (作成元のエントリーからの値または値の一部をプルする属性) の両方を含めることができます。テンプレートは、管理エントリーが作成され、作成元のエントリーが変更され、テンプレートがこれらの更新を適用するために再度評価される場合に のみ 管理エントリーに適用されます。

図8.3 テンプレート、管理対象エントリー、およびアーティファクトエントリー

テンプレート、管理対象エントリー、およびアーティファクトエントリー
テンプレートは、テンプレートに static 属性を使用して、管理エントリーの属性に特定の値を指定できます。テンプレートは、作成元のエントリーの一部の属性から派生する値を使用することもできるため、この値はエントリーへのエントリーとは異なる場合があります。これは、値ではなく作成元のエントリーの属性タイプを参照するため、マップされた 属性とは異なる場合があります。
マップされた値は、トークン (動的な値) と静的な値の組み合わせを使用しますが、マップされた属性ごとに 1 つのトークン しか使用できません。
dn: cn=Posix User-Group Template,ou=Templates,dc=example,dc=com
objectclass: mepTemplateEntry
cn: Posix User-Group Template
mepRDNAttr: cn
mepStaticAttr: objectclass: posixGroup
mepMappedAttr: cn: $cn Group Entry
mepMappedAttr: gidNumber: $gidNumber
mepMappedAttr: memberUid: $uid
テンプレートのマップされた属性は、先頭にドル記号 ($) を追加して作成元のエントリーから値をプルして管理エントリーで使用するトークンを使用します。ドル記号が管理属性値で実際に定義されている場合は、ドル記号を 2 つ使用してドル記号をエスケープできます。
マッピングされた属性の定義は、Attr: ${cn}test など、中括弧で囲んで引用することができます。トークン名の直後にスペースやコンマなど属性名として有効な文字が使用される場合は、トークンの値を引用符で囲む必要はありません。たとえば、$cn test は属性名の直後に続くため、属性定義では使用できますが、管理エントリープラグインは作成元のエントリーで cntest という名前の属性を検索しようとするため、$cntest は有効ではありません。中括弧を使用すると、属性トークン名を識別します。
注記
静的属性およびマップされた属性に値が必要な属性の構文に準拠するようにしてください。

8.3.1.3. 管理エントリープラグインにより書き込まれるエントリー属性

作成元のエントリーと管理エントリーの両方には、管理エントリープラグインのインスタンスによって管理されていることを示す特別な管理エントリー属性があります。作成元のエントリーでは、プラグインは関連付けられた管理エントリーへのリンクを追加します。
dn: uid=jsmith,ou=people,dc=example,dc=com
objectclass: mepOriginEntry
objectclass: posixAccount
...
sn: Smith
mail: jsmith@example.com
mepManagedEntry: cn=jsmith Posix Group,ou=groups,dc=example,dc=com
管理エントリーでは、プラグインはテンプレートで定義された属性の他に、作成元のエントリーを参照する属性を追加します。
dn: cn=jsmith Posix Group,ou=groups,dc=example,dc=com
objectclass: mepManagedEntry
objectclass: posixGroup
...
mepManagedBy: uid=jsmith,ou=people,dc=example,dc=com
特別な属性を使用して、管理および作成元のエントリーを示すことで、関連するエントリーを簡単に特定し、管理エントリープラグインによる変更を評価できます。

8.3.1.4. 管理エントリープラグインおよび Directory Server 操作

管理エントリープラグインでは、追加操作および削除操作と同様に、Directory Server が一般的な操作を実行する方法に影響します。

表8.4 管理エントリープラグインおよび Directory Server 操作

演算子 管理対象エントリープラグインによる効果
Add すべての追加操作では、サーバーは新しいエントリーが管理エントリープラグインインスタンスの範囲内にあるかどうかを確認します。作成元エントリーの基準を満たすと、管理エントリーが作成され、管理エントリー関連の属性が元のエントリーと管理エントリーの両方に追加されます。
Modify
作成元のエントリーが変更すると、管理エントリーを更新するプラグインが誘発されます。ただし、テンプレート エントリーを変更しても、自動的に管理エントリーを更新しません。テンプレートエントリーへの変更は、次に作成元エントリーが変更するまで、管理エントリーに反映されません。
管理エントリー でマップされた管理属性は、管理エントリープラグインでのみ手動で変更することができません。管理対象エントリーの他の属性 (管理エントリープラグインで追加された静的属性を含む) は手動で変更できます。
Delete 作成元のエントリーが削除されると、管理エントリープラグインもそのエントリーに関連付けられた管理エントリーを削除します。削除できるエントリーにはいくつかの制限があります。
  • テンプレートエントリーは、プラグインインスタンス定義で現在参照されている場合は削除できません。
  • 管理エントリーは、管理エントリープラグイン以外では削除できません。
Rename 元のエントリーの名前を変更した場合は、プラグインは対応する管理エントリーを更新します。エントリーがプラグインスコープの に移動すると、管理エントリーが削除されますが、エントリーがプラグインスコープの に移動した場合は、追加操作のように処理され、新しい管理エントリーが作成されます。削除操作と同様に、名前変更または移動できるエントリーに制限があります。
  • 設定定義エントリーは、コンテナーエントリーの管理エントリープラグインを外に移動できません。エントリーが削除されると、そのプラグインインスタンスが非アクティブになります。
  • エントリーが管理エントリープラグインのコンテナーエントリー に移動する場合、これは検証され、アクティブな設定定義として処理されます。
  • テンプレートエントリーの名前を変更したり、プラグインインスタンス定義で現在参照している場合は移動したりすることはできません。
  • 管理エントリープラグインの名前を変更または移動することはできません。
レプリケーション 管理エントリープラグイン操作は レプリケーションの更新によって開始しません。プラグインスコープのエントリーの追加または修正操作が別のレプリカに複製される場合、その操作はレプリカで管理エントリープラグインインスタンスを発生させず、エントリーを作成または更新しません。管理エントリーの更新を複製する唯一の方法は、最終管理エントリーをレプリカに複製することです。