7.3. 属性値の管理属性のリンク
サービスのクラスは、住所、郵便番号コード、主なオフィス番号など、すべて 同じ値 の属性を持つエントリーの属性値を動的に提供します。これらは共有属性値であり、単一のテンプレートエントリーで更新されます。
多くの場合、エントリー間には、それらの間のリンクを表現する方法が必要な関係がありますが、その関係を表現する値 (および場合によっては属性) は異なります。Red Hat Directory Server は、指定された属性を繋ぎ合わせる方法を提供するため、1 つのエントリーの属性が変更すると、関連するエントリーの対応する属性が自動的に更新されます。(リンクおよび管理属性の両方に DN の値があります。リンク属性の値には、更新するプラグインのエントリーの DN が含まれます。2 つ目のエントリーの管理属性には、元のリンクエントリーを参照する DN の値があります。)
7.3.1. リンク元属性の概要
リンク先属性プラグインは、プラグインの複数のインスタンスを許可します。各インスタンスは、管理者によって手動で維持される 1 つの属性 (
linkType
) およびプラグインによって自動的に維持される 1 つの属性 (managedType
) を設定します。
図7.5 リンク先属性の基本設定
注記
データの一貫性を維持するには、プラグインプロセスのみが管理属性を維持する必要があります。管理属性へのすべての書き込みアクセスを制限する ACI の作成を検討してください。ACI の設定に関する詳細は、「ACI の追加」を参照してください。
リンク先属性プラグインインスタンスは、ディレクトリー内の単一のサブツリーに制限できます。これにより、属性の組み合わせと影響を受けるエントリーのより柔軟なカスタマイズが可能になります。スコープが設定されていない場合、プラグインはディレクトリー全体で動作します。
図7.6 リンク先属性プラグインを特定のサブツリーに制限
リンク先属性プラグインインスタンスを設定する場合は、特定の設定が必要です。
- 管理属性とリンク先属性の両方で、属性定義で識別名の構文が必要です。リンク先属性は基本的にクロス参照で管理されます。プラグインがこれらの相互参照を処理する方法は、属性値からエントリーの DN をプルすることで行われます。カスタムスキーマ要素のプランニングに関する情報は、12章ディレクトリースキーマの管理を参照してください。
- 各リンク先属性プラグインインスタンスはローカルで、管理 属性は一部レプリケーションを使用してレプリケーションからブロックする必要があります。あるサプライヤーに加えられた変更は、プラグインが自動的に発生し、対応するディレクトリーエントリーの値を管理するため、データはサーバー全体で一貫性を維持します。ただし、リンクされたエントリー間でデータの一貫性を保つには、プラグインインスタンスで管理属性を維持する必要があります。つまり、管理属性値は、マルチサプライヤーレプリケーション環境であっても、レプリケーションプロセスではなく、プラグインプロセスによってのみ維持される必要があります。一部レプリケーションの使用方法は、「一部レプリケーションを使用した属性のサブセットの複製」を参照してください。
7.3.2. リンク元属性プラグイン構文の確認
デフォルトのリンク先属性プラグインエントリーは、各プラグインインスタンスのコンテナーエントリーです。これは、次のセクションの password 構文プラグインや DNA プラグインに類似します。このコンテナーエントリーの下にある各エントリーは、異なるリンク管理属性ペアを定義します。
新しいリンク元属性ペアを作成するには、コンテナーエントリーの下に新しいプラグインインスタンスを作成します。基本的なリンク元属性プラグインインスタンスでは、以下の 2 つの項目を定義する必要があります。
linkType
属性において、管理者が手動で管理する属性managedType
属性に含まれる、プラグインによって動的に作成される属性- 必要に応じて、プラグインを
linkScope
属性のディレクトリーツリーの特定の部分に制限するスコープ
例7.5 リンク先属性のプラグインインスタンスエントリーの例
dn: cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: Manager Link linkType: directReport managedType: manager linkScope: ou=people,dc=example,dc=com
Linked Attributes プラグインのインスタンスで利用可能な属性の一覧は、Red Hat Directory Server Configuration, Command, and File Referenceの該当するセクションを参照してください。
7.3.3. 属性リンクの設定
- これが有効になっていない場合は、Linked Attributes プラグインを有効にします。詳細については、「プラグインの有効化および無効化」 を参照してください。
- プラグインインスタンスを作成します。
--managed-type
パラメーターおよび--link-type
パラメーターの両方が必要です。以下の例は、dsconf を使用して作成したプラグインインスタンスを示しています。# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin linked-attr config "Manager Link" add --link-type=directReport --managed-type=manager
- インスタンスを再起動します。
# dsctl instance_name restart
7.3.4. 属性リンクのクリーンアップ
管理属性とリンク先属性は同期しなくなる可能性があります。たとえば、リンク先属性をサーバーにインポートまたは複製できましたが、リンク属性が適切に設定されていなかったため、対応するマネージド属性はインポートされませんでした。管理属性とリンク先属性ペアは、dsconf plugin linked-attr fixup コマンドを実行するか、修正タスクを起動することで修正できます。
修正タスクは、参照エントリーに対応するリンク属性 (管理者が管理する属性) のない管理属性 (プラグインによって管理される属性) を削除します。逆に、エントリーにリンク属性が存在する場合は、タスクで不明な管理属性が追加されます。
7.3.4.1. リンク先属性の再生成
dsconf plugin linked-attr fixup コマンドは特殊なタスクを起動し、ディレクトリーエントリー上の管理属性とリンク属性のペアをすべて再生成します。特定の状況では、1 つまたはもう 1 つが失われる可能性があります。リンク属性がエントリーに存在する場合、タスクは利用可能な属性でクロス参照されている DN を追跡し、参照されたエントリーで対応する管理属性を作成します。対応するリンク属性のない管理属性が存在する場合は、管理属性値が削除されます。
プラグインのスコープ全体に設定されたリンク属性ペアをすべて修復するには、Directory Manager で以下のコマンドを実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin linked-attr fixup
また、ベース DN をコマンドに渡して、修正タスクを単一のリンク管理属性ペアに制限することもできます。以下に例を示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin linked-attr fixup "cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config"
7.3.4.2. ldapmodify を使用したリンク先属性の再生成
リンクされた属性の修復は、特別なタスク設定エントリーで管理できるタスクの 1 つです。タスクエントリーは、
dse.ldif
ファイルの cn=tasks 設定エントリーで発生するため、ldapmodify を使用してエントリーを追加してタスクを開始することもできます。タスクが完了すると、エントリーはディレクトリーから削除されます。
このタスクは、実行時に dsconf plugin linked-attr fixup コマンドによって自動的に作成されるタスクと同じです。
リンク付きの属性修正タスクを開始するには、cn=fixup linked attributes,cn=tasks,cn=config エントリーの下にエントリーを追加します。必要な属性は特定タスクの
cn
のみですが、ttl
属性にはタイムアウト期間を設定できます。ldapmodify の使用:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=example,cn=fixup linked attributes,cn=tasks,cn=config changetype: add cn:example ttl: 5
タスクが完了すると、エントリーは
dse.ldif
設定から削除されるため、同じタスクエントリーを継続的に再利用できます。
cn=fixup linked attributes タスク設定は、『Configuration, Command, and File Reference』を参照してください。