Red Hat Training

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

5.2. 属性の一意性について

Attribute Uniqueness プラグインは、preoperation プラグインです。つまり、サーバーが LDAP 操作を行う に、プラグインがすべての更新操作をチェックすることを意味します。プラグインは、その操作が、監視するように設定されている属性と接尾辞に適用されるかどうかを判断します。
更新操作がプラグインによって監視される属性および接尾辞に適用され、2 つのエントリーが同じ属性値を持つことになる場合、サーバーは操作を終了し、クライアントに LDAP_CONSTRAINT_VIOLATION エラーを返します。
Attribute Uniqueness プラグインの各インスタンスは、1 つ以上のサブツリーの 1 つの属性に対してチェックを行います。複数の属性の一意性を確認するには、チェックする属性ごとに、プラグインの個別のインスタンスを作成する必要があります。
Attribute Uniqueness プラグインは、ユーザーが定義した特定の方法で操作することができます。
  • 指定されたサブツリーのすべてのエントリーを確認できます。
    たとえば、会社 example.comexample_a.com および example_b.com のディレクトリーをホストしている場合に、uid=jdoe,ou=people,o=example_a,dc=example,dc=com などのエントリーがに追加されると、o=example_a,dc=example,dc=com サブツリーでのみ一意性を適用する必要があります。これは、Attribute Uniqueness プラグイン設定にサブツリーの DN を明示的に一覧表示することで実施されます。
  • 更新されたエントリーの DN のエントリーに関連するオブジェクトクラスを指定し、その下のすべてのエントリーで一意性チェックを実行します。
    このオプションはホスト環境で役に立ちます。たとえば、uid=jdoe,ou=people,o=example_a,dc=example,dc=com などのエントリーを追加する場合、o=example_a,dc=example,dc=com サブツリーを設定内で明示的に一覧表示せずに、代わりに marker object class を示すことで、このサブツリーの下で一意性を実施します。マーカーのオブジェクトクラスが organization に設定されている場合、一意性チェックアルゴリズムはこのオブジェクトクラス (o=example_a) を持つ DN のエントリーを見つけ、その下のすべてのエントリーでチェックを実行します。
    また、更新されたエントリーに指定のオブジェクトクラスが含まれる場合に限り、一意性を確認することもできます。たとえば、更新されたエントリーに objectclass=inetorgperson が含まれる場合に限り、チェックを実行することができます。
Directory Server は、Directory Server の初回設定時に、uid 属性の Attribute Uniqueness プラグインのデフォルトインスタンスを提供します。このプラグインインスタンスにより、uid 属性に指定された値が root 接尾辞 (userRoot データベースに対応する接尾辞) で一意になります。
このプラグインは、マルチマスターのレプリケーションの操作に影響するため、デフォルトでは無効になっています。
レプリケーション操作の一部として更新が実行されると、Attribute Uniqueness プラグインは属性値のチェックを実行しません。
クライアントアプリケーションによる変更はすべて、サプライヤーサーバーで実行されるため、サプライヤーで Attribute Uniqueness プラグインを有効にする必要があります。コンシューマーサーバーで有効にする必要はないです。
コンシューマーでAttribute Uniqueness プラグインを有効にしても、Directory Server の正常な操作を妨げることはありませんが、パフォーマンスが低下する可能性はあります。
マルチマスターのレプリケーションシナリオでは、マスターは同じレプリカのサプライヤーとコンシューマーの両方として機能します。マルチマスターのレプリケーションでは、大まかに一貫性のあるレプリケーションモデルを使用しているため、サーバーの 1 つで Attribute Uniqueness プラグインを有効化するだけでは、属性値が両方のサプライヤーサーバー間でいつでも一意になるようにするには十分とは言えません。したがって、1 つのサーバーで Attribute Uniqueness プラグインを有効化すると、各レプリカに保持されるデータに不整合が生じる可能性があります。
ただし、以下の両方の条件を満たす場合は、Attribute Uniqueness プラグインを使用することが可能です。
  • 一意性のチェックが行われる属性は、ネーミング属性です。
  • Attribute Uniqueness プラグインは、両方のサプライヤーサーバーで有効化されます。
これらの条件が満たされると、属性の一意性の競合は、レプリケーション時に命名の競合として報告されます。命名の競合は、手動で解決する必要があります。