-
Language:
日本語
-
Language:
日本語
Red Hat Training
A Red Hat training course is available for Red Hat Directory Server
第8章 エントリーの編成とグループ化
ディレクトリーに含まれるエントリーは、ユーザーアカウントの管理を簡素化するために、さまざまな方法でグループ化できます。Red Hat Directory Server は、エントリーのグループ化やエントリー間で属性を共有するさまざまな方法に対応します。ロールおよびサービスのクラスによって提供される機能を完全に活用するには、ディレクトリーのデプロイメントを計画するときにディレクトリートポロジーを決定します。
8.1. グループの使用
オペレーティングシステムと同様に、Directory Server のグループにユーザーを追加できます。グループはロールとして他の方法で機能します。ロールを使用している場合には、割り当てられたロールの DN はユーザーオブジェクトの
nsRoleDN
属性に保存されます。グループを使用する場合は、このグループのメンバーであるユーザーの DN は、グループオブジェクトの member
属性に保存されます。memberOf プラグインを有効にした場合、次にユーザーがメンバーであるグループは、ユーザーオブジェクトの memberOf
属性に追加で保存されます。このプラグインを有効にすると、グループにもロールの利点があり、ロールの使用時と同様にユーザーのグループメンバーシップを一覧表示できます。また、グループはロールよりも高速です。
memberOf プラグインの使用方法は、「ユーザーエントリーにおけるグループメンバーシップの一覧表示」を参照してください。
8.1.1. コンソールで静的グループの作成
静的グループは、任意の数のユーザーの DN 属性に同じグループ値を指定してエントリーを整理します。
注記
ユーザーがリモート Directory Server にエントリー(チェーンデータベースなど)がある場合は、静的グループを定義するエントリーを持つ Directory Server とは異なる場合は、Referential Integrity プラグインを使用して、削除されたユーザーエントリーが静的グループから自動的に削除されるようにします。
Referential Integrity プラグインには、パフォーマンスとアクセス制御に関する考慮事項がいくつかあります。チェーンで参照整合性を使用する方法は、「シャーシポリシーの設定」 を参照してください。
- Directory Server コンソールで、Directory タブを選択します。
- 左側のペインで、新しいグループを追加するエントリーを右クリックし、New > Group を選択します。または、Object メニューに移動し、New > Group を選択します。
- 左側のペインで General をクリックします。Group Name フィールドに新規グループの名前を入力します(名前は必須です)、Description フィールドに新しいグループの説明を入力します。
- 左側のペインで Members をクリックします。右側のペインで、静的グループ タブを選択します。Add をクリックして、新しいメンバーをグループに追加します。
- Search ドロップダウンリストで、検索するエントリーのソート(ユーザー、グループ、またはその両方)を選択してから Search をクリックします。
- 返されたエントリーからメンバーを選択し、OK をクリックします。
- 左側のペインで Languages をクリックし、そのグループに言語固有の情報を追加します。
- OK をクリックして新規グループを作成します。右側のペインに表示されます。
静的グループを編集するには、グループエントリーをダブルクリックして、エディターウィンドウで変更を行います。変更を表示するには、View メニューに移動し、Refresh を選択します。
注記
静的グループを管理するコンソールは、ユーザーの検索の VLV インデックスがない場合に、検索操作中に可能なすべての選択を表示できない場合があります。この問題は、ユーザーの数が 1000 以上で、検索用の VLV インデックスがない場合にだけ発生します。この問題を回避するには、フィルター (objectclass=person) および scope サブツリーを使用して、user 接尾辞の VLV インデックスを作成します 。「コマンドラインから参照インデックスの作成」 を参照してください。
8.1.2. コンソールでの動的グループの作成
動的グループは、DN に基づいてユーザーをフィルタリングし、それらを 1 つのグループに含めます。
- Directory Server コンソールで、Directory タブを選択します。
- 左側のペインで、新しいグループを追加するエントリーを右クリックし、New > Group を選択します。または、Object メニューに移動し、New > Group を選択します。
- 左側のペインで General をクリックします。Group Name フィールドに新規グループの名前を入力します(名前は必須です)、Description フィールドに新しいグループの説明を入力します。
- 左側のペインで Members をクリックします。右側のペインで、Dynamic Group タブを選択します。Add をクリックして、データベースのクエリーを行うための LDAP URL を作成します。
- テキストフィールドに LDAP URL を入力するか、LDAP URL の構成 で説明する Construct to を選択します。この結果には、フィルターに対応する現在のエントリー(グループメンバー)が表示されます。
- 左側のペインで Languages をクリックし、そのグループに言語固有の情報を追加します。
- OK をクリックします。右側のペインに新しいグループが表示されます。
動的グループを編集するには、グループエントリーをダブルクリックしてエディターウィンドウを開き、動的グループに変更を加えます。グループの変更を表示するには、View メニューに移動し、Refresh を選択します。
注記
動的グループを管理するコンソールは、ユーザーの検索の VLV インデックスがない場合に、検索操作中に可能なすべての選択を表示できない場合があります。この問題は、ユーザーの数が 1000 以上で、検索用の VLV インデックスがない場合に発生する可能性があります。この問題を回避するには、フィルター (objectclass=person) および scope サブツリーを使用して、user 接尾辞の VLV インデックスを作成します 。「コマンドラインから参照インデックスの作成」 を参照してください。
8.1.3. コマンドラインでのグループの作成
コマンドラインから静的グループと動的グループの両方を作成するプロセスは、同様のプロセスです。グループエントリーには、グループ名、グループの種類、およびメンバー属性が含まれます。
グループタイプにはいくつかのオプションがあります。詳細は、『Red Hat Directory Server 10 の設定、コマンド、およびファイルリファレンス』 を参照してください。この場合の グループのタイプ は、所有するメンバー属性を定義するタイプを指します。
- groupOfNames (推奨) は、任意のエントリーの追加を可能にする単純なグループです。これのメンバーを判断するために使用される属性は
member
です。 - groupOfNames などの groupOfUniqueNames は、ユーザー DN をメンバーとして一覧表示しますが、メンバーは一意でなければなりません。これにより、ユーザーをグループメンバーとして複数回追加しないようにできます。これは、セルフ参照グループメンバーシップを防ぐ 1 つの方法です。これのメンバーを判断するために使用される属性は
uniqueMember
です。 - groupOfURLs は、LDAP URL の一覧を使用して、メンバーシップの一覧をフィルタリングして生成します。このオブジェクトクラスはすべての動的グループに必要で、groupOfNames および groupOfUniqueNames と共に使用できます。
- groupOfCertificates は、グループメンバーを識別するための証明書 (実際には証明書名) を検索して識別するために LDAP フィルターを使用するという点で、groupOfURLs と似ています。これは、グループに特別なアクセスパーミッションを付与できるため、グループベースのアクセス制御に役立ちます。これのメンバーを判断するために使用される属性は
memberCertificate
です。
表8.1「動的および静的のグループスキーマ」 コマンドラインから作成されるグループのデフォルト属性を一覧表示します。
表8.1 動的および静的のグループスキーマ
グループのタイプ | グループオブジェクトクラス | member 属性 |
---|---|---|
静的 | groupOfUniqueNames | uniqueMember |
動的 |
groupOfUniqueNames
groupOfURLs
| memberURL |
静的グループエントリーは、グループの特定のメンバーを一覧表示します。たとえば、ldapmodify を使用するには、以下を実行します。
dn: cn=static group,ou=Groups,dc=example,dc=com changetype: add objectClass: top objectClass: groupOfUniqueNames cn: static group description: Example static group. uniqueMember: uid=mwhite,ou=People,dc=example,dc=com uniqueMember: uid=awhite,ou=People,dc=example,dc=com
動的グループは、少なくとも 1 つの LDAP URL を使用して、グループに属するエントリーを識別し、複数の LDAP URL を指定できます。または、groupOfUniqueNames のような別のグループオブジェクトクラスで使用する場合は、動的 LDAP URL とともにいくつかのグループメンバーを明示的に一覧表示できます。たとえば、ldapmodify を使用するには、以下を実行します。
dn: cn=dynamic group,ou=Groups,dc=example,dc=com changetype: add objectClass: top objectClass: groupOfUniqueNames objectClass: groupOfURLs cn: dynamic group description: Example dynamic group. memberURL: ldap:///dc=example,dc=com??sub?(&(objectclass=person)(cn=*sen*))
注記
memberOf プラグインは、動的に生成されるグループメンバーシップをサポートしません。属性にグループメンバーを一覧表示する代わりに
memberURL
属性を設定すると、memberOf プラグインはフィルターに一致するユーザーオブジェクトに memberOf
属性を追加しません。
8.1.4. ユーザーエントリーにおけるグループメンバーシップの一覧表示
グループに属するエントリーは、グループエントリー自体で定義されます。これにより、グループを確認し、そのメンバーを確認し、グループメンバーシップを一元管理できるようになります。ただし、1 つのユーザーが属するグループを確認することは適切な方法ではありません。ロールがあるので、メンバーシップを示すユーザーエントリーには何もありません。
MemberOf プラグインは、グループメンバーシップの一覧を対応するユーザーエントリーに関連付けます。
MemberOf プラグインはグループエントリーのメンバー属性を分析し、メンバーのエントリーに対応する
memberOf
属性を自動的に書き込みます。(デフォルトでは、これにより member
属性を確認しますが、複数の属性インスタンスを使用して複数の異なるグループタイプをサポートすることができます。)
メンバーシップが変更になると、プラグインはユーザーエントリーの
memberOf
属性を更新します。MemberOf プラグインは、ネスト化されたグループメンバーシップを含むエントリーを確認して、ユーザーが属するグループを表示する方法を提供します。ネスト化されたグループを介してメンバーシップを追跡することは非常に困難ですが、MemberOf プラグインには、すべてのグループの (直接および間接的な) メンバーシップが表示されます。
MemberOf プラグインは、動的グループや循環グループではなく、静的グループのメンバー属性を管理します。
8.1.4.1. memberOf
プラグインを使用する場合の考慮事項
本セクションでは、
memberOf
プラグインを使用する際に重要な考慮事項を説明します。
- レプリケーショントポロジーでの
memberOf
プラグインの使用 - レプリケーショントポロジーで
memberOf
属性を管理する方法は 2 つあります。- トポロジー内のすべてのマスターで
memberOf
プラグインおよび読み取り専用レプリカサーバーを有効にします。この場合、すべてのレプリカ合意で、レプリケーションからmemberOf
属性を除外する必要があります。属性の除外に関する詳細は、「一部レプリケーションを使用した属性のサブセットの複製」を参照してください。 memberOf
プラグインは、トポロジー内のすべてのマスターサーバーでのみ有効にします。そのためには、以下を実行します。- レプリカ合意ですべての書き込みが有効なマスターに対する
memberOf
属性のレプリケーションを無効にする必要があります。属性の除外に関する詳細は、「一部レプリケーションを使用した属性のサブセットの複製」を参照してください。 memberOf
属性のレプリケーションを、すべての読み取り専用レプリカに対して、レプリカ合意で有効にする必要があります。- 読み取り専用レプリカでは、
memberOf
プラグインを有効にしないでください。
- 分散データベースでの
memberOf
プラグインの使用 - 「データベースの作成」で説明されているように、ディレクトリーのサブツリーを個別のデータベースに保存できます。デフォルトでは、
memberOf
プラグインはグループと同じデータベース内に保存されるユーザーエントリーのみを更新します。プラグインがグループとして異なるデータベースのユーザーも更新できるようにするには、memberOfAllBackends
パラメーターを on に設定する必要があります。「コンソールからの MemberOf プラグインの編集」 を参照してください。
8.1.4.2. memberOf
プラグインで必要なオブジェクトクラス
デフォルトでは、
memberOf
プラグインは nsMemberOf オブジェクトクラスをオブジェクトに追加し、memberOf
属性を提供します。このオブジェクトクラスは、この目的のために任意のオブジェクトに安全に追加でき、このプラグインを正しく動作させるためにこれ以上のアクションは必要ありません。代わりに、inetUser オブジェクトクラスまたは inetAdmin オブジェクトクラスが含まれるユーザーオブジェクトを作成できます。どちらのオブジェクトクラスも memberOf
属性をサポートします。
ネスト化されたグループを設定するには、グループは extensibleObject オブジェクトクラスを使用する必要があります。
注記
ディレクトリーエントリーに必要な属性をサポートするオブジェクトクラスが含まれていない場合、操作は以下のエラーで失敗します。
LDAP: error code 65 - Object Class Violation
8.1.4.3. MemberOf プラグイン構文
MemberOf プラグインインスタンスは、ポーリングするグループメンバー属性 (
memberOfGroupAttr
) と、メンバーのユーザーエントリー (memberOfAttr
) で作成および管理する属性の 2 つの属性を定義します。
memberOfGroupAttr
属性は多値です。異なるタイプのグループは異なるメンバー属性を使用するため、複数の memberOfGroupAttr
属性を使用すると、プラグインで複数のグループタイプを管理できます。
プラグインインスタンスは、MemberOf プラグインを識別するためのプラグインパスと関数も提供し、プラグインを有効にするための状態設定が含まれます。これらの両方は、すべてのプラグインに必要です。デフォルトの MemberOf プラグインが、例8.1「デフォルトの MemberOf プラグインエンティティー」に表示されます。
例8.1 デフォルトの MemberOf プラグインエンティティー
dn: cn=MemberOf Plugin,cn=plugins,cn=config objectClass: top objectClass: nsSlapdPlugin objectClass: extensibleObjectcn: MemberOf Plugin
nsslapd-pluginPath: libmemberof-plugin
nsslapd-pluginInitfunc: memberof_postop_init
nsslapd-pluginType: postoperationnsslapd-pluginEnabled: on
nsslapd-plugin-depends-on-type: databasememberOfGroupAttr: member
memberOfGroupAttr: uniqueMember
memberOfAttr: memberOf
memberOfAllBackends: on
nsslapd-pluginId: memberOf nsslapd-pluginVersion:X.Y.Z
nsslapd-pluginVendor: Red Hat, Inc. nsslapd-pluginDescription: memberOf plugin
例で使用するパラメーターの詳細と、設定可能なパラメーターの詳細は、『Red Hat Directory Server コマンド、設定、およびファイルリファレンス』 の 『MemberOf プラグイン属性』 セクションを参照してください。
注記
1 つのメンバー属性 (デフォルトでは
member
) のみを許可した古いバージョンの Directory Server との後方互換性を維持するために、プラグイン設定で使用される新しいメンバー属性に加えて、member
グループ属性または以前のメンバー属性を含める必要がある場合があります。
memberOfGroupAttr: member
memberOfGroupAttr: uniqueMember
8.1.4.4. MemberOf プラグインのインスタンスの設定
ディレクトリーで使用されるグループのタイプに応じて、MemberOf プラグインで定義された属性を変更できます。
8.1.4.4.1. コンソールからの MemberOf プラグインの編集
- Configuration タブを選択し、Plugins フォルダーに展開します。
- Memberof Plugin エントリーまでスクロールします。
- プラグインが有効化されていることを確認します。これはデフォルトで無効にされます。
- Advanced ボタンをクリックして Advanced Properties Editor を開きます。
memberOfGroupAttr
属性は、サーバーがメンバーエントリーを識別するために使用するグループエントリーの属性を設定します。この属性は、異なるグループ/メンバータイプに対して複数回使用できます。memberOfAttr
属性は、プラグインがユーザーエントリーで作成および管理する属性を設定します。- 変更を保存します。
- Directory Server が動的プラグインを有効にするために設定されていない場合は、サーバーを再起動してプラグインを更新します。
8.1.4.4.2. コマンドラインでの MemberOf プラグインの編集
- MemberOf プラグインを有効にします。ldapmodify の使用:
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- グループメンバーエントリー属性に使用する属性を設定します。デフォルトの属性は
member
で、replace コマンドを使用して変更できます。memberOfGroupAttr
属性は多値であるため、追加のメンバータイプを定義に追加できます。たとえば、ldapmodify を使用するには、以下を実行します。dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify add: memberOfGroupAttr memberOfGroupAttr: uniqueMember add: memberOfGroupAttr memberOfGroupAttr: customMember-
- グループメンバーシップを表示するようにユーザーエントリーに設定する属性を設定します。たとえば、ldapmodify を使用するには、以下を実行します。
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: memberOfAttr memberOfAttr: memberOf
- オプション。デプロイメントで分散データベースを使用する場合は、
memberOfAllBackends
属性を有効にして、ユーザーエントリーについてローカルのデータベースだけではなく、すべてのデータベースを検索します。ldapmodify の使用:dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: memberOfAllBackends memberOfAllBackends: on
- Directory Server が動的プラグインを有効にするために設定されていない場合は、サーバーを再起動して変更した新しいプラグインインスタンスを読み込みます。
8.1.4.5. memberOf
プラグイン共有の設定
プラグイン設定を複製すると、ネットワーク上で一貫した設定を維持するのに役立ちます。これは特に大規模なデプロイメントで役に立ちます。マスターレプリケーションサーバーの設定のみを更新し、変更が他のすべてのサーバーに複製されます。
memberOf
プラグイン設定は、cn=config
接尾辞以外の、バックエンドまたは接尾辞の共有設定エントリーに保存できます。
プラグインエントリーでは、
nsslapd-pluginConfigArea
属性を使用して共有設定の場所を指定します。
nsslapd-pluginConfigArea: entry_DN
nsslapd-pluginConfigArea
属性をすべてのレプリカの同じプラグインエントリーに設定した後、レプリケーションは今後の設定変更をすべて処理します。
以下の表は、共有設定エントリーで使用できる属性を示しています。
表8.2 memberOf
プラグイン共有設定の属性
設定属性 | 値 | 例 |
---|---|---|
memberOfAttr (required) | 属性名 | memberOf |
memberOfGroupAttr (required) | 属性名 | uniqueMember |
memberOfAllBackends | on|off | off |
memberOfEntryScope | エントリー DN | ou=people,dc=example,dc=com |
memberOfSkipNested | on|off | on |
memberOfEntryScopeExcludeSubtree | エントリー DN | ou=other,dc=example,dc=com |
以下の例では、
nsslapd-pluginConfigArea
が設定されています。そのため、プラグインエントリーの設定は無視されます。
dn: cn=MemberOf Plugin,cn=plugins,cn=config
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
cn: MemberOf Plugin
nsslapd-pluginPath: libmemberof-plugin
nsslapd-pluginInitfunc: memberof_postop_init
nsslapd-pluginType: postoperation
nsslapd-pluginEnabled: on
nsslapd-plugin-depends-on-type: database
memberOfGroupAttr: member
memberOfAttr: memberOf
nsslapd-pluginConfigArea: cn=memberOf plugin configuration,dc=example,dc=com
この例では、
memberOf
プラグインは member
ではなく uniquemember
グループ属性を使用します。
dn: cn=memberOf plugin configuration,dc=example,dc=com
objectClass: top
objectClass: extensibleObject
cn: MemberOf Plugin Configuration
memberOfGroupAttr: uniquemember
memberOfAttr: memberOf
8.1.4.6. MemberOf プラグインのスコープの設定
複数のバックエンドまたは複数のネストされたサフィックスを設定した場合は、
memberOfEntryScope
パラメーターおよび memberOfEntryScopeExcludeSubtree
パラメーターを使用して、MemberOf
プラグインが動作するサフィックスを設定できます。
ユーザーをグループに追加する場合、
MemberOf
プラグインは、ユーザーおよびグループの両方がプラグインのスコープにある場合に限り memberOf
属性をグループに追加します。たとえば、dc=example,dc=com
内のすべてのエントリーで機能するように MemberOf
プラグインを設定し、ou=private,dc=example,dc=com
のエントリーを除外するには、以下を設定します。
memberOfEntryScope: dc=example,dc=com memberOfEntryScopeExcludeSubtree: ou=private,dc=example,dc=com
memberOfEntryScope
パラメーターで設定したスコープからユーザーエントリーを移動した場合には、以下を実行します。
member
などのメンバーシップ属性は、グループエントリーで更新され、ユーザー DN 値が削除されます。memberOf
属性は、グループ DN 値を削除するためにユーザーエントリーで更新されます。
注記
memberOfEntryScopeExcludeSubtree
パラメーターに設定した値は、memberOfEntryScope
に設定した値よりも高くなります。両方のパラメーターで設定したスコープが重複する場合、MemberOf
プラグインは、非オーバーラッピングディレクトリーエントリーでのみ機能します。
8.1.4.7. memberOf 値の同期
MemberOf プラグインは、グループエントリー自体の設定に基づいて、グループメンバーエントリーで
memberOf
属性を自動的に管理します。ただし、memberOf
属性がすでに設定されているサーバーに、ユーザーエントリーで memberOf
属性を直接編集することも、新しいエントリーをインポートまたは複製できます。このような状況では、サーバープラグインによって管理される memberOf
設定と、エントリーに定義された実際のメンバーシップとの間に不整合が生じます。
Directory Server には、プラグインを手動で実行する
memberOf
修復タスクがあり、適切な memberOf
属性がエントリーに設定されていることを確認します。このタスクをトリガーする方法は 3 つあります。
- Directory Server コンソール
- fixup-memberof.pl スクリプトの使用
- cn=memberof task,cn=tasks,cn=config タスクエントリーの実行
注記
memberOf 再生成タスクは、エントリー自体が複製されていてもローカルで実行されます。つまり、更新されたエントリーが複製されるまで、他のサーバーのエントリーの
memberOf
属性は更新されません。
8.1.4.7.1. fixup-memberof.pl を使用した memberOf 属性の初期化および再生成
fixup-memberof.pl は、
memberOf
の説明に従って 「ldapmodify を使用した memberOf 属性の初期化および再生成」 属性を再生成するために使用される Perl スクリプトラッパーです。
詳細は、man fixup-memberof.pl も参照してください。
8.1.4.7.2. ldapmodify を使用した memberOf 属性の初期化および再生成
memberOf
属性を再生成することは、特別なタスク設定エントリーで管理できるタスクの 1 つです。タスクエントリーは、dse.ldif
ファイルの cn=tasks 設定エントリーで発生するため、ldapmodify を使用してエントリーを追加してタスクを開始することもできます。タスクが完了するとすぐに、エントリーはディレクトリーから削除されます。
fixup-memberof.pl スクリプトは、
memberOf
属性を再生成する Directory Server インスタンスに特別なタスクエントリーを作成します。
memberOf 修正タスクを開始するには、cn=memberof タスク、cn= tasks, cn=config エントリーの下にエントリーを追加します。必要な属性は、特定タスクの
cn
のみです。ldapmodify の使用:
dn: cn=example memberOf,cn=memberof task,cn=tasks,cn=config changetype: add cn:example memberOf
タスクが完了するとすぐに、エントリーは
dse.ldif 設定から削除
されるため、同じタスクエントリーを継続的に再利用できます。
cn=memberof タスク 設定は、設定、『コマンド、およびファイルリファレンス を参照してください』。
8.1.5. 指定したグループへのエントリーの自動追加
グループ管理は、特に Directory Server データおよび組織を使用するクライアントや、グループを使用してエントリーに機能を適用するクライアントなど、ディレクトリーデータを管理する上で重要な要素となります。グループにより、ディレクトリー全体で一貫して、信頼できるポリシーの適用が容易になります。パスワードポリシー、アクセス制御リスト、その他のルールはすべてグループメンバーシップに基づいて設定できます。
アカウントの作成時に、新しいエントリーをグループに自動的に割り当てることができるため、管理者の介入なしに、適切なポリシーと機能がそれらのエントリーに即座に適用されるようにします。
動的グループは、一致するエントリーがグループに自動的に含まれるため、グループを作成してメンバーを自動的に割り当てる 1 つの方法です。Directory Server のポリシーおよび設定を適用するには、これで十分です。ただし、LDAP アプリケーションとクライアントには、通常、必要な操作を行うためにグループメンバーの静的リストおよび明示的なリストが必要です。静的グループのすべてのメンバーは、このグループに手動で追加する必要があります。
静的グループ自体は動的グループのようなメンバーを検索できませんが、静的グループに自動的にメンバーを追加できるようになります (Auto Membership プラグイン)。
自動メンバーシップにより、基本的に、静的グループが動的グループのように動作できるようにします。異なる自動メンバー定義により、すべての新規ディレクトリーエントリーで自動的に実行される検索が作成されます。自動メンバールールは、動的検索フィルターと同様に、一致するエントリーを検索し、特定します。次に、これらのエントリーをメンバーとして静的グループに追加します。
注記
デフォルトでは、cn=Auto Membership Plugin,cn=plugins,cn=config エントリーの
autoMemberProcessModifyOps
パラメーターは on に設定されます。この設定では、Automembership プラグインは、ユーザーエントリーを編集して管理者が別のグループにユーザーを移動する際にグループメンバーシップも更新します。
autoMemberProcessModifyOps
を off に設定すると、Directory Server は、ユーザーにグループエントリーを追加する場合にのみプラグインを起動し、グループメンバーシップを更新するために手動で修正タスクを実行する必要があります。
Automembership は、ディレクトリーに保存されているオブジェクトタイプ (ユーザー、マシン、ネットワークデバイス、顧客データ、またはその他のアセット) をターゲットにすることができます。
注記
Auto Membership プラグインは、定義された基準に基づいて既存のグループに新しいエントリーを追加します。新しいエントリー用のグループは作成されません。
特定タイプの新規エントリーの作成時に対応するグループエントリーを作成するには、Managed Entries プラグインを使用します。詳細は、「デュアルエントリーの自動作成」を参照してください。
8.1.5.1. Automembership ルールの構造の確認
Auto Membership プラグイン自体は、cn=plugins,cn=config のコンテナーエントリーです。グループ割り当ては、子エントリーで定義されます。
8.1.5.1.1. Automembership 設定エントリー
自動メンバー割り当ては、Automembership プラグインエントリーの子であるメインの定義エントリーを使用して作成されます。各定義エントリーは 3 つの要素を定義します。
- 検索スコープと検索フィルターの両方を含むエントリーを識別する LDAP 検索 (
autoMemberScope
およびautoMemberFilter
) - メンバーエントリーを追加するデフォルトグループ (
autoMemberDefaultGroup
) - メンバーエントリーの形式:
member
などのグループエントリーの属性、およびdn
などの属性値 (autoMemberGroupingAttr
)
定義は、automember ルールの基本設定です。必要な情報をすべて識別し、一致するメンバーエントリーとそのメンバーの所属先のグループを特定します。
たとえば、以下の定義は、すべての Windows ユーザーを cn=windows-users グループに割り当てます。
dn: cn=Windows Users,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition autoMemberScope: ou=People,dc=example,dc=com autoMemberFilter: objectclass=ntUser autoMemberDefaultGroup: cn=windows-group,cn=groups,dc=example,dc=com autoMemberGroupingAttr: member:dn
この例に使用される属性と、このエントリーに設定できるその他の属性の詳細は、Red 『Hat Directory Server Configuration , Command, and File Reference 』の cn=Auto Membership Plugin,cn=plugins,cn=config エントリーの説明を参照してください。
8.1.5.1.2. 追加の正規表現エントリー
ユーザーグループのように、一致するすべてのエントリーをメンバーとして追加する必要がある場合は、単純な定義で十分です。ただし、他の属性の値によっては、LDAP 検索フィルターに一致するエントリーを異なるグループに追加する必要がある場合があります。たとえば、IP アドレスや物理的な場所に応じて、異なるグループにマシンを追加しないといけない場合があります。ユーザーは、従業員 ID 番号に応じて異なるグループに置かなければならない場合があります。
automember 定義では、正規表現を使用して、グループから含めたり、除外したりするエントリーに追加の条件を提供したり、選択したエントリーを追加する新しい特定のグループを作成したりできます。
たとえば、automember 定義は、汎用ホストグループに追加されるすべてのマシンを設定します。
例8.2 ホストグループの automember 定義
dn: cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition cn: Hostgroups autoMemberScope: dc=example,dc=com autoMemberFilter: objectclass=ipHost autoMemberDefaultGroup: cn=systems,cn=hostgroups,dc=example,dc=com autoMemberGroupingAttr: member:dn
指定の範囲内に完全修飾ドメイン名を持つマシンが Web サーバーグループに追加されるように、正規表現ルールが追加されます。
例8.3 Web サーバーグループの正規表現条件
dn: cn=webservers,cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule description: Group for webservers cn: webservers autoMemberTargetGroup: cn=webservers,cn=hostgroups,dc=example,dc=com autoMemberInclusiveRegex: fqdn=^www\.web[0-9]+\.example\.com
そのため、www.web1.example.com などの式 ^www\.web[0-9]+\.example\.com に一致する完全修飾ドメイン名で追加されたホストマシンは、正確な正規表現に定義される cn=webservers グループに追加されます。LDAP フィルター objectclass=ipHost に一致するが別のタイプの完全修飾ドメイン名を持つその他のマシンエントリーは、メインの定義エントリーで定義される一般的なホストグループ cn=systems に追加されます。
したがって、定義内のグループは、一般的な定義に一致するが、正規表現ルールの条件を満たさないエントリーのフォールバックです。
正規表現ルールは、自動メンバー定義の子エントリーです。
図8.1 正規表現の条件

各ルールには、複数の包含および除外の式を含めることができます。(除外は最初に評価されます。) エントリーが包含ルールと一致する場合は、グループに追加されます。
正規表現ルールに指定できるターゲットグループは 1 つだけです。
表8.3 正規表現の条件属性
属性 | 説明 |
---|---|
autoMemberRegexRule (必須オブジェクトクラス) | 正規表現ルールとしてエントリーを識別します。このエントリーは、automember 定義 (objectclass: autoMemberDefinition) の子である必要があります。 |
autoMemberInclusiveRegex | 含めるエントリーを識別するために使用する正規表現を設定します。一致するエントリーのみがグループに追加されます。複数の正規表現を使用できます。エントリーがこれらの式のいずれかと一致する場合は、グループに含まれます。
式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、pcresyntax(3) の man ページを参照してください。
これは多値属性です。
|
autoMemberExclusiveRegex | 除外するエントリーを識別するために使用する正規表現を設定します。エントリーが除外条件と一致する場合は、グループに 含まれません。複数の正規表現を使用できます。エントリーがこれらの式のいずれかと一致する場合は、グループで除外されます。
式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、pcresyntax(3) の man ページを参照してください。
これは多値属性です。
注記
除外条件は最初に評価され、包含条件よりも優先されます。
|
autoMemberTargetGroup | 正規表現の条件を満たす場合に、エントリーをメンバーとして追加するグループを設定します。 |
8.1.5.2. Automembership ルールの例
Automembership ルールは通常、ユーザーとマシンに適用されます (ただし、どのタイプのエントリーにも適用することができます)。自動メンバーシップルールの計画に役立つ便利な例がいくつかあります。
- IP アドレスに基づく異なるホストグループ
- Windows ユーザーグループ
- 従業員の ID に基づく異なるユーザーグループ
例8.4 IP アドレス別のホストグループ
automember ルールは、まずルールのスコープとターゲットを定義します。「追加の正規表現エントリー」の例では、設定グループを使用してフォールバックグループと正規表現エントリーを定義し、一致するエントリーをソートします。
スコープは、全 ホストエントリーの検索に使用されます。その後、プラグインは正規表現エントリーで繰り返し処理します。エントリーが包含する正規表現と一致する場合は、そのホストグループに追加されます。グループに一致しない場合は、デフォルトグループに追加されます。

実際のプラグイン設定エントリーは、定義エントリーに、ホストを Web サーバーグループまたはメールサーバーグループにフィルターを設定する 2 つの正規表現エントリーに対して設定されます。
configuration entry dn: cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition cn: Hostgroups autoMemberScope: dc=example,dc=com autoMemberFilter: objectclass=bootableDevice autoMemberDefaultGroup: cn=orphans,cn=hostgroups,dc=example,dc=com autoMemberGroupingAttr: member:dn regex entry #1 dn: cn=webservers,cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule description: Group placement for webservers cn: webservers autoMemberTargetGroup: cn=webservers,cn=hostgroups,dc=example,dc=com autoMemberInclusiveRegex: fqdn=^www[0-9]+\.example\.com autoMemberInclusiveRegex: fqdn=^web[0-9]+\.example\.com autoMemberExclusiveRegex: fqdn=^www13\.example\.com autoMemberExclusiveRegex: fqdn=^web13\.example\.com regex entry #2 dn: cn=mailservers,cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule description: Group placement for mailservers cn: mailservers autoMemberTargetGroup: cn=mailservers,cn=hostgroups,dc=example,dc=com autoMemberInclusiveRegex: fqdn=^mail[0-9]+\.example\.com autoMemberInclusiveRegex: fqdn=^smtp[0-9]+\.example\.com autoMemberExclusiveRegex: fqdn=^mail13\.example\.com autoMemberExclusiveRegex: fqdn=^smtp13\.example\.com
例8.5 Windows ユーザーグループ
「Automembership 設定エントリー」に表示されている基本的なユーザーグループは、
posixAccount
属性を使用して新規ユーザーをすべて識別します。Directory Server 内に作成された新規ユーザーはすべて、posixAccount
属性を使用して作成されます。したがって、新しい Directory Server ユーザーにとって安全なキャッチオールです。ただし、ユーザーアカウントを Windows ドメインから Directory Server に同期すると、Windows ユーザーアカウントは posixAccount
属性 なし で作成されます。
Windows ユーザーは
ntUser
属性で識別されます。基本的な all-users グループルールは、特に目的の Windows ユーザーに変更できます。これは、デフォルトの all-users グループまたは Windows 固有のグループに追加できます。
dn: cn=Windows Users,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition autoMemberScope: dc=example,dc=com autoMemberFilter: objectclass=ntUser autoMemberDefaultGroup: cn=Windows Users,cn=groups,dc=example,dc=com autoMemberGroupingAttr: member:dn
例8.6 従業員タイプによるユーザーグループ
Auto Membership プラグインはカスタム属性で機能します。これは、他のアプリケーションが管理するエントリーに役立ちます。たとえば、人的リソースアプリケーションは、カスタムの
employeeType
属性で従業員タイプをもとにユーザーを作成してから参照できます。
例8.4「IP アドレス別のホストグループ」と同様、ユーザータイプのルールは 2 つの正規表現フィルターを使用して、すべての時間および一時従業員をソートます。この例では、実際の正規表現ではなく明示的な値を使用します。その他の属性については、従業員の ID 番号範囲に基づいてフィルターを作成するなど、正規表現を使用することが推奨されます。
configuration entry dn: cn=Employee groups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition cn: Hostgroups autoMemberScope: ou=employees,ou=people,dc=example,dc=com autoMemberFilter: objectclass=inetorgperson autoMemberDefaultGroup: cn=general,cn=employee groups,ou=groups,dc=example,dc=com autoMemberGroupingAttr: member:dn regex entry #1 dn: cn=full time,cn=Employee groups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule description: Group for full time employees cn: full time autoMemberTargetGroup: cn=full time,cn=employee groups,ou=groups,dc=example,dc=com autoMemberInclusiveRegex: employeeType=full regex entry #2 dn: cn=temporary,cn=Employee groups,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule description: Group placement for interns, contractors, and seasonal employees cn: temporary autoMemberTargetGroup: cn=temporary,cn=employee groups,ou=groups,dc=example,dc=com autoMemberInclusiveRegex: employeeType=intern autoMemberInclusiveRegex: employeeType=contractor autoMemberInclusiveRegex: employeeType=seasonal
8.1.5.3. Automembership 定義の作成
- 必要に応じて、Auto Membership プラグインを有効にします。ldapmodify の使用:
dn: cn=Auto Membership Plugin,cn=plugins,cn=config changetype: replace replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- cn=Auto Membership Plugin,cn=plugins,cn=config コンテナーエントリーの下に、新しいプラグインインスタンスを作成します。このエントリーは、autoMember Definition オブジェクトクラスに属している必要があります。ldapmodify の使用:
dn: cn=Example Automember Definition,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberDefinition ...
定義に必要な属性は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンス』 に記載されています。 - 定義のスコープおよびフィルターを設定します。これは、一致するエントリーの初期検索に使用されます。たとえば、ou=People サブツリーに追加され、
ntUser
属性が含まれる新しいエントリーの場合:autoMemberScope: ou=People,dc=example,dc=com autoMemberFilter: objectclass=ntUser
- (デフォルトまたはフォールバックグループとして)一致するエントリーを追加するグループと、そのグループタイプのメンバーエントリーの形式を設定します。
autoMemberDefaultGroup: cn=windows-group,cn=groups,dc=example,dc=com autoMemberGroupingAttr: member:dn
- オプション。包含または排他的な正規表現フィルターを作成し、これらのフィルターに一致するエントリーに使用するグループを設定します。正規表現条件の属性は、表8.3「正規表現の条件属性」 に記載されています。正規表現の条件は、automember 定義の子として追加されます。これらの条件は autoMemberRegexRule オブジェクトクラスに属している必要があります。ldapmodify の使用:
dn: cn=Example Regex,cn=Example Automember Definition,cn=Auto Membership Plugin,cn=plugins,cn=config objectclass: autoMemberRegexRule ...
次に、ターゲットグループ名と包含的または排他的な正規表現を追加します。include および exclude 条件の両方を使用でき、両方のタイプの式を複数使用できます。autoMemberTargetGroup: cn=windows-admin-group,cn=groups,dc=example,dc=com autoMemberInclusiveRegex: cn=\.* Administrator \*
新規エントリーが正規表現条件と一致する場合は、automember 定義に設定されたデフォルトグループ の代わりに、そのグループに追加されます。 - Directory Server が動的プラグインを有効にするために設定されていない場合は、サーバーを再起動して変更した新しいプラグインインスタンスを読み込みます。
8.1.5.4. 自動メンバー定義の既存のエントリーの更新
Auto Member プラグインは、新規エントリーがディレクトリーに追加される場合にのみ実行されます。プラグインは、automembership ルールに一致するように編集される既存のエントリーまたはエントリーを無視します。
自動メンバールールに対して既存のエントリーをチェックし、それに応じてグループメンバーシップを更新するために実行できるディレクトリータスク操作があります。このタスク(cn=automember rebuild membership)では、LDAP 検索パラメーターに基づいて、処理する既存のエントリーを特定するには、3 つの要素を実行する必要があります。
- 検索フィルター
- 検索範囲
- 検索を開始するベース DN
特定のタスク実行にも名前が必要です。
タスクエントリーは ldapmodify を使用して作成できます。タスクが完了すると、エントリーが自動的に削除されます。以下に例を示します。
dn: cn=my rebuild task, cn=automember rebuild membership,cn=tasks,cn=config objectClass: top objectClass: extensibleObject cn: my rebuild task basedn: dc=example,dc=com filter: (uid=*) scope: sub
8.1.5.5. 自動メンバー定義のテスト
Auto Member プラグインの各インスタンスは、定義と正規表現に関連してはいますが別々のエントリーのセットであるため、ユーザーがグループにどのようにマップされるかを正確に確認するのは難しい場合があります。これは、ユーザーの異なるサブセットをターゲットとする複数のルールがあると、より困難になります。
ドライランタスクが 2 つあり、すべての Auto Member プラグイン定義が設計通りにグループを適切に割り当てているかどうかを判断するのに役立ちます。
既存のエントリーを使用したテスト
cn=automember export updates が、ディレクトリー内の 既存のエントリー に対して実行し、ルールに基づいてユーザーの追加結果をエクスポートします。これは、既存のルールをテストして、実際のデプロイメントの実行方法を確認するのに役立ちます。
このタスクには、cn=automember rebuild membership タスク (検索、検索フィルター、および検索スコープのベース DN) と同じ情報が必要です。また、推奨されるエントリーの更新を記録するエクスポート LDIF ファイルを指定する追加パラメーターがあります。
ldapmodify の使用:
dn: cn=test export, cn=automember export updates,cn=tasks,cn=config objectClass: top objectClass: extensibleObject cn: test export basedn: dc=example,dc=com filter: (uid=*) scope: sub ldif: /tmp/automember-updates.ldif
Import LDIF でのテスト
cn=automember map updates タスクは、新規ユーザーの インポート LDIF を取得してから、現在の自動メンバールールに対して新規ユーザーを実行します。これは、(実際の) 新規または既存のユーザーエントリーに適用する前に、新しいルールをテストする場合に非常に役立ちます。
これは、提案された新しいエントリーの変更を、既存のルールにマッピングまたは関連付けるため、マップタスクと呼ばれます。
このタスクには、入力 LDIF (少なくとも一部のユーザーエントリーを含む) の場所と、提案されたエントリー更新を書き込む出力 LDIF ファイルの 2 つの属性のみが必要です。入力および出力の LDIF ファイルの両方がローカルマシンの絶対パスです。
たとえば、ldapmodify を使用するには、以下を実行します。
dn: cn=test mapping, cn=automember map updates,cn=tasks,cn=config objectClass: top objectClass: extensibleObject cn: test mapping ldif_in: /tmp/entries.ldif ldif_out: /tmp/automember-updates.ldif