5.5. リンク属性の概要
サービスクラスは、住所、郵便番号、主なオフィス番号など、すべてが 同じ値 の属性を持つエントリーに対して、属性値を動的に提供します。これらは共有属性値であり、単一のテンプレートエントリーで更新されます。
多くの場合、エントリー間には、それらの間のリンクを表現する方法が必要な関係がありますが、その関係を表現する値 (および場合によっては属性) は異なります。Red Hat Directory Server は、指定された属性を繋ぎ合わせる方法を提供するため、1 つのエントリーの 1 つの属性が変更されると、関連するエントリーの対応する属性が自動的に更新されます。最初の属性には、更新するエントリーを参照する DN 値があります。2 番目のエントリー属性には、1 番目のエントリーへのバックポイントである DN 値もあります。
たとえば、グループエントリーは
member
などの属性のメンバーを一覧表示します。ユーザーがどのグループに所属するかをユーザーエントリーに表示することは自然です。これは memberOf
属性で設定されます。memberOf
属性は、MemberOf プラグインによる 管理 属性です。プラグインは、それぞれのメンバー属性の変更についてすべてのグループエントリーをポーリングします。グループメンバーがグループから追加または削除されるたびに、対応するユーザーエントリーが memberOf
属性を変更して更新されます。これにより、member
(およびその他のメンバー属性)および memberOf
属性が リンクされ ます。
MemberOf プラグインは、(単一の) グループメンバー属性専用の単一のインスタンスに限定されています (ネストしたグループの扱いなど、グループに特有の他の動作もあります)。もう 1 つのプラグインであるリンク先属性プラグインは、プラグインの複数のインスタンスを許可します。各インスタンスは、管理者によって手動で維持される 1 つの属性 (
linkType
) およびプラグインによって自動的に維持される 1 つの属性 (managedType
) を設定します。
図5.6 リンク先属性の基本設定
注記
データの一貫性を維持するには、プラグインプロセスのみが管理属性を維持する必要があります。管理属性へのすべての書き込みアクセスを制限する ACI の作成を検討してください。
リンク先属性プラグインインスタンスは、ディレクトリー内の単一のサブツリーに制限できます。これにより、属性の組み合わせと影響を受けるエントリーのより柔軟なカスタマイズが可能になります。スコープが設定されていない場合、プラグインはディレクトリー全体で動作します。
図5.7 リンク先属性プラグインを特定のサブツリーに制限
5.5.1. リンク属性のスキーマ要件
管理属性とリンク先属性の両方で、属性定義で識別名の構文が必要です。プラグインは、リンク先属性から DN をプルしてメンテナンスするエントリーを特定し、元のエントリー DN をマネージド属性の値として自動的に割り当てます。つまり、どちらの属性も値として DN を使用しなければならないことを意味します。
管理属性は多値である必要があります。ユーザーは、複数のグループのメンバーであったり、複数のドキュメントの作成者であったり、複数の see also 参照エントリーを持っていたりします。管理属性が単一値である場合は、値は正しく更新されません。標準的な要素の多くは多値であるため、デフォルトのスキーマではあまり問題になりません。ただし、カスタムスキーマを使用する場合には、検討することが特に重要となります。
図5.8 誤った使用方法: 単一値のリンク先属性の使用
5.5.2. レプリケーションでのリンク先属性の使用
単純なレプリケーションシナリオ (supplier-consumer) では、コンシューマーに書き込みが行われないため、プラグインはサプライヤーにのみ存在する必要があります。
マルチサプライヤーのレプリケーションでは、各サプライヤーには独自のプラグインインスタンスがあり、すべて設定が同一で、管理属性は一部レプリケーションを使用してレプリケーションから除外する必要があります。
図5.9 リンク先属性とレプリケーション
あるサプライヤーに加えられた変更は、プラグインが自動的に発生し、対応するディレクトリーエントリーの値を管理するため、データはサーバー全体で一貫性を維持します。ただし、リンクされたエントリー間でデータの一貫性を保つには、プラグインインスタンスで管理属性を維持する必要があります。つまり、管理属性値は、マルチサプライヤーレプリケーション環境であっても、レプリケーションプロセスではなく、プラグインプロセスによってのみ維持される必要があります。