3.11. 参照整合性を使用したエントリー間の関係の維持


Referential Integrity は、Directory Server が関連するエントリー間の関係を維持するためのデータベースメカニズムです。この機能を使用すると、ディレクトリー内の 1 つのエントリーへの更新を、更新されたエントリーを参照する他のエントリーに正しく反映できます。

たとえば、ディレクトリーからユーザーを削除し、Referential Integrity プラグインが有効になっている場合、サーバーは、そのユーザーがメンバーとなっているグループからもそのユーザーを削除します。プラグインが有効になっていない場合、ユーザーは管理者が手動で削除するまでグループのメンバーのままになります。

Referential Integrity は、ユーザーおよびグループの管理に Directory Server を利用する他の製品と Directory Server を統合する場合に重要な機能です。

3.11.1. Referential Integrity プラグインの仕組み

Referential Integrity プラグインを有効にすると、デフォルトでは、操作直後に memberuniqueMemberowner、および seeAlso 属性の整合性更新が実行されます。

たとえば、管理者がディレクトリー内のグループまたはユーザーを削除、更新、名前変更、または移動した場合、Directory Server はその操作を Referential Integrity のログファイルに記録します。Directory Server はこのログファイルから識別名 (DN) を使用し、プラグインの設定で指定された属性に一致するエントリーを検索し、一致するエントリーを更新します。たとえば、cn=demo,dc=example,dc=com エントリーを削除すると、プラグインは cn=demo,dc=example,dc=com に設定された member 属性でエントリーを検索し、これらの member 属性を削除します。その後、プラグインは uniqueMemberowner、および seeAlso 属性に対して同じことを実行します。

デフォルトでは、Directory Server は元の操作と同じトランザクションで検索および更新を行います。検索および更新操作には時間がかかる場合があるため、これらの操作は、元の操作の完了後に遅延させることができます。dsconf plugin referential-integrity set コマンドの --update-delay オプションを使用すると、元の操作を整合性の更新から分離できます。

変更および削除操作のパフォーマンスの低下を回避するには、Referential Integrity プラグインの設定で指定した属性をインデックス化します。

3.11.2. コマンドラインを使用した Referential Integrity プラグインの設定

コマンドラインを使用して Referential Integrity プラグインを設定できます。

この手順は、レプリケーショントポロジー内のすべてのサプライヤーで実行してください。

手順

  1. Referential Integrity プラグインを有効にします。

    # dsconf <instance_name> plugin referential-integrity enable
    Copy to Clipboard Toggle word wrap
  2. プラグインがユーザーエントリーの削除または名前変更操作を検索するサブツリーを設定します。

    # dsconf <instance_name> plugin referential-integrity set --entry-scope "ou=People,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  3. オプション: エントリースコープでサブツリーを除外します。

    # dsconf <instance_name> plugin referential-integrity set --exclude-entry-scope "ou=Special Users,ou=People,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    このコマンドは、ou=Special Users,ou=People,dc=example,dc=com サブツリーで実行される削除または名前変更操作を無視するようにプラグインを設定します。

  4. プラグインがグループエントリーを更新するサブツリーを設定します。

    # dsconf <instance_name> plugin referential-integrity set --container-scope "ou=Groups,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  5. デフォルトでは、プラグインは memberuniqueMemberowner、および seeAlso 属性の整合性更新を実行します。他の属性を指定するには、次のように入力します。

    # dsconf <instance_name> plugin referential-integrity set --membership-attr attribute_1 attribute_2
    Copy to Clipboard Toggle word wrap

    このコマンドは、プラグインの設定内の属性のリストをオーバーライドすることに注意してください。属性を追加する場合は、現在の属性リストと追加の属性リストを --membership-attr オプションに渡します。

  6. オプション: デフォルトでは、Directory Server は参照整合性チェックを即座に実行します。遅延を設定する場合は、次のように入力します。

    # dsconf <instance_name> plugin referential-integrity set --update-delay=5
    Copy to Clipboard Toggle word wrap

    このコマンドは、Referential Integrity チェックを 5 秒遅延させます。複数のサプライヤーで Referential Integrity を有効にした場合、遅延を設定するとレプリケーションループやディレクトリーの不整合が発生する可能性があることに注意してください。このような問題を回避するには、トポロジー内の 1 つのサプライヤーでのみプラグインを有効にします。

  7. インスタンスを再起動します。

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

検証

  1. Referential Integrity プラグインの設定を表示します。

    # dsconf <instance_name> plugin referential-integrity show
    ...
    nsslapd-plugincontainerscope: ou=Groups,dc=example,dc=com
    nsslapd-pluginentryscope: ou=People,dc=example,dc=com
    ...
    referint-membership-attr: member
    referint-membership-attr: uniquemember
    referint-membership-attr: owner
    referint-membership-attr: seeAlso
    referint-update-delay: 0
    ...
    Copy to Clipboard Toggle word wrap
  2. グループの member 属性を表示して、グループのメンバーをリスト表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=Groups,dc=example,dc=com" member
    ...
    member: uid=demoUser,ou=People,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  3. uid=demoUser,ou=People,dc=example,dc=com ユーザーを削除します。

    # dsidm <instance_name> -b "dc=example,dc=com" user delete "uid=demoUser,ou=People,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  4. グループのメンバーを再度表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
    Copy to Clipboard Toggle word wrap

    uid=demoUser,ou=People,dc=example,dc=com がグループのメンバーとしてリスト表示されなくなった場合、Referential Integrity プラグインは機能します。

3.11.3. Web コンソールを使用した Referential Integrity プラグインの設定

Directory Server Web コンソールを使用して Referential Integrity プラグインを設定できます。

この手順は、レプリケーショントポロジー内のすべてのサプライヤーで実行してください。

前提条件

  • Web コンソールでインスタンスにログインしている。

手順

  1. Plugins Referential Integrity に移動します。
  2. プラグインを有効にします。
  3. Actions Restart Instance をクリックします。
  4. Plugins Referential Integrity を再度移動します。
  5. デフォルトでは、プラグインは memberuniqueMemberowner、および seeAlso 属性の整合性更新を実行します。他の属性を指定するには、Membership Attribute フィールドのリストを更新します。
  6. Entry Scope フィールドを、プラグインがユーザーエントリーの削除または名前変更の操作を検索するサブツリーの DN に設定します。
  7. オプション: エントリースコープの下にあるサブツリーを除外するには、Exclude Entry Scope フィールドにサブツリーの DN を入力します。
  8. Container Scope フィールドを、プラグインがグループエントリーを更新するサブツリーの DN に設定します。
  9. オプション: Referential Integrity のログファイルへのパスを更新します。Directory Server はこのファイルを使用してディレクトリー内の変更を追跡します。dirsrv ユーザーには、この場所への書き込みパーミッションが必要であることに注意してください。
  10. オプション: デフォルトでは、Directory Server は参照整合性チェックを即座に実行します。遅延を設定する場合は、Update Delay フィールドで設定します。

    複数のサプライヤーで Referential Integrity を有効にした場合、遅延を設定するとレプリケーションループやディレクトリーの不整合が発生する可能性があることに注意してください。このような問題を回避するには、トポロジー内の 1 つのサプライヤーでのみプラグインを有効にします。

  11. Save Config をクリックします。

検証

  1. グループの member 属性を表示して、グループのメンバーをリスト表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=Groups,dc=example,dc=com" member
    ...
    member: uid=demoUser,ou=People,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  2. uid=demoUser,ou=People,dc=example,dc=com ユーザーを削除します。

    # dsidm <instance_name> -b "dc=example,dc=com" user delete "uid=demoUser,ou=People,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  3. グループのメンバーを再度表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
    Copy to Clipboard Toggle word wrap

    uid=demoUser,ou=People,dc=example,dc=com がグループのメンバーとしてリスト表示されなくなった場合、Referential Integrity プラグインは機能します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat