3.11. 参照整合性を使用したエントリー間の関係の維持
Referential Integrity は、Directory Server が関連するエントリー間の関係を維持するためのデータベースメカニズムです。この機能を使用すると、ディレクトリー内の 1 つのエントリーへの更新を、更新されたエントリーを参照する他のエントリーに正しく反映できます。
たとえば、ディレクトリーからユーザーを削除し、Referential Integrity プラグインが有効になっている場合、サーバーは、そのユーザーがメンバーとなっているグループからもそのユーザーを削除します。プラグインが有効になっていない場合、ユーザーは管理者が手動で削除するまでグループのメンバーのままになります。
Referential Integrity は、ユーザーおよびグループの管理に Directory Server を利用する他の製品と Directory Server を統合する場合に重要な機能です。
3.11.1. Referential Integrity プラグインの仕組み リンクのコピーリンクがクリップボードにコピーされました!
Referential Integrity プラグインを有効にすると、デフォルトでは、操作直後に member
、uniqueMember
、owner
、および seeAlso
属性の整合性更新が実行されます。
たとえば、管理者がディレクトリー内のグループまたはユーザーを削除、更新、名前変更、または移動した場合、Directory Server はその操作を Referential Integrity のログファイルに記録します。Directory Server はこのログファイルから識別名 (DN) を使用し、プラグインの設定で指定された属性に一致するエントリーを検索し、一致するエントリーを更新します。たとえば、cn=demo,dc=example,dc=com
エントリーを削除すると、プラグインは cn=demo,dc=example,dc=com
に設定された member
属性でエントリーを検索し、これらの member
属性を削除します。その後、プラグインは uniqueMember
、owner
、および seeAlso
属性に対して同じことを実行します。
デフォルトでは、Directory Server は元の操作と同じトランザクションで検索および更新を行います。検索および更新操作には時間がかかる場合があるため、これらの操作は、元の操作の完了後に遅延させることができます。dsconf plugin referential-integrity set
コマンドの --update-delay
オプションを使用すると、元の操作を整合性の更新から分離できます。
変更および削除操作のパフォーマンスの低下を回避するには、Referential Integrity プラグインの設定で指定した属性をインデックス化します。
3.11.2. コマンドラインを使用した Referential Integrity プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して Referential Integrity プラグインを設定できます。
この手順は、レプリケーショントポロジー内のすべてのサプライヤーで実行してください。
手順
Referential Integrity プラグインを有効にします。
dsconf <instance_name> plugin referential-integrity enable
# dsconf <instance_name> plugin referential-integrity enable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プラグインがユーザーエントリーの削除または名前変更操作を検索するサブツリーを設定します。
dsconf <instance_name> plugin referential-integrity set --entry-scope "ou=People,dc=example,dc=com"
# dsconf <instance_name> plugin referential-integrity set --entry-scope "ou=People,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: エントリースコープでサブツリーを除外します。
dsconf <instance_name> plugin referential-integrity set --exclude-entry-scope "ou=Special Users,ou=People,dc=example,dc=com"
# dsconf <instance_name> plugin referential-integrity set --exclude-entry-scope "ou=Special Users,ou=People,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
ou=Special Users,ou=People,dc=example,dc=com
サブツリーで実行される削除または名前変更操作を無視するようにプラグインを設定します。プラグインがグループエントリーを更新するサブツリーを設定します。
dsconf <instance_name> plugin referential-integrity set --container-scope "ou=Groups,dc=example,dc=com"
# dsconf <instance_name> plugin referential-integrity set --container-scope "ou=Groups,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、プラグインは
member
、uniqueMember
、owner
、およびseeAlso
属性の整合性更新を実行します。他の属性を指定するには、次のように入力します。dsconf <instance_name> plugin referential-integrity set --membership-attr attribute_1 attribute_2
# dsconf <instance_name> plugin referential-integrity set --membership-attr attribute_1 attribute_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、プラグインの設定内の属性のリストをオーバーライドすることに注意してください。属性を追加する場合は、現在の属性リストと追加の属性リストを
--membership-attr
オプションに渡します。オプション: デフォルトでは、Directory Server は参照整合性チェックを即座に実行します。遅延を設定する場合は、次のように入力します。
dsconf <instance_name> plugin referential-integrity set --update-delay=5
# dsconf <instance_name> plugin referential-integrity set --update-delay=5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、Referential Integrity チェックを
5
秒遅延させます。複数のサプライヤーで Referential Integrity を有効にした場合、遅延を設定するとレプリケーションループやディレクトリーの不整合が発生する可能性があることに注意してください。このような問題を回避するには、トポロジー内の 1 つのサプライヤーでのみプラグインを有効にします。インスタンスを再起動します。
dsctl <instance_name> restart
# dsctl <instance_name> restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Referential Integrity プラグインの設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow グループの
member
属性を表示して、グループのメンバーをリスト表示します。ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=Groups,dc=example,dc=com" 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 Copied! Toggle word wrap Toggle overflow 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"
# dsidm <instance_name> -b "dc=example,dc=com" user delete "uid=demoUser,ou=People,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow グループのメンバーを再度表示します。
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow uid=demoUser,ou=People,dc=example,dc=com
がグループのメンバーとしてリスト表示されなくなった場合、Referential Integrity プラグインは機能します。
3.11.3. Web コンソールを使用した Referential Integrity プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server Web コンソールを使用して Referential Integrity プラグインを設定できます。
この手順は、レプリケーショントポロジー内のすべてのサプライヤーで実行してください。
前提条件
- Web コンソールでインスタンスにログインしている。
手順
-
に移動します。 - プラグインを有効にします。
-
をクリックします。 -
を再度移動します。 -
デフォルトでは、プラグインは
member
、uniqueMember
、owner
、およびseeAlso
属性の整合性更新を実行します。他の属性を指定するには、Membership Attribute
フィールドのリストを更新します。 -
Entry Scope
フィールドを、プラグインがユーザーエントリーの削除または名前変更の操作を検索するサブツリーの DN に設定します。 -
オプション: エントリースコープの下にあるサブツリーを除外するには、
Exclude Entry Scope
フィールドにサブツリーの DN を入力します。 -
Container Scope
フィールドを、プラグインがグループエントリーを更新するサブツリーの DN に設定します。 -
オプション: Referential Integrity のログファイルへのパスを更新します。Directory Server はこのファイルを使用してディレクトリー内の変更を追跡します。
dirsrv
ユーザーには、この場所への書き込みパーミッションが必要であることに注意してください。 オプション: デフォルトでは、Directory Server は参照整合性チェックを即座に実行します。遅延を設定する場合は、
Update Delay
フィールドで設定します。複数のサプライヤーで Referential Integrity を有効にした場合、遅延を設定するとレプリケーションループやディレクトリーの不整合が発生する可能性があることに注意してください。このような問題を回避するには、トポロジー内の 1 つのサプライヤーでのみプラグインを有効にします。
- をクリックします。
検証
グループの
member
属性を表示して、グループのメンバーをリスト表示します。ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=Groups,dc=example,dc=com" 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 Copied! Toggle word wrap Toggle overflow 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"
# dsidm <instance_name> -b "dc=example,dc=com" user delete "uid=demoUser,ou=People,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow グループのメンバーを再度表示します。
ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "cn=demoGroup,ou=People,dc=example,dc=com" member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow uid=demoUser,ou=People,dc=example,dc=com
がグループのメンバーとしてリスト表示されなくなった場合、Referential Integrity プラグインは機能します。