第3章 ユーザー管理および認証
ユーザーのアクセス権限、リソース制限、ユーザーグループ、ユーザーロールを管理する方法を説明します。パスワードとアカウントのロックアウトポリシーを設定し、ユーザーグループのアクセスを拒否し、バインド識別名 (バインド DN) に応じてシステムリソースを制限できます。
3.1. Directory Server でのグループの使用 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server のグループにユーザーを追加できます。グループはディレクトリーエントリーをグループ化するメカニズムの 1 つであり、ユーザーアカウントの管理を簡素化します。
グループを使用すると、Directory Server は、このグループのメンバーであるユーザーの識別名 (DN) をグループエントリーのメンバーシップ属性に保存します。この特別な属性は、グループエントリーを作成するときに選択したオブジェクトクラスによって定義されます。グループタイプの詳細は、Directory Server のグループタイプ を参照してください。
グループはロールよりも高速です。ただし、グループがロールのメリットを享受するには、MemberOf プラグインを有効にする必要があります。デフォルトでは、MemberOf プラグインは、ユーザーがグループのメンバーである場合に、ユーザーエントリーに memberOf 属性を自動的に追加します。その結果、メンバーシップに関する情報は、グループとユーザーエントリーの両方に保存されます。MemberOf プラグインの詳細は、ユーザーエントリーのグループメンバーシップのリスト表示 を参照してください。
3.1.1. Directory Server のグループタイプ リンクのコピーリンクがクリップボードにコピーされました!
Directory Server では、static グループまたは dynamic グループにメンバーを追加できます。各グループタイプの定義の詳細は、Directory Server のグループについて を参照してください。グループオブジェクトクラスはメンバーシップ属性を定義し、グループにメンバーを追加するには、グループエントリーのこのメンバーシップ属性に値を追加する必要があります。
次の表に、グループオブジェクトクラスと対応するメンバーシップ属性を示します。
| グループタイプ | オブジェクトクラス | メンバーシップ属性 |
|---|---|---|
| 静的であること |
|
|
|
|
| |
| 動的 |
|
|
|
|
|
グループを作成するときに使用できるオブジェクトクラス:
-
groupOfNamesは単純なグループです。このグループには任意のエントリーを追加できます。member属性によりグループメンバーシップが決まります。member属性値は、グループのメンバーであるユーザーエントリーの識別名 (DN) です。 -
groupOfUniqueNamesは、ユーザー DN をメンバーとしてリストしますが、DN は一意である必要があります。このグループは、グループメンバーシップが自己参照されないようにします。uniqueMember属性は、グループメンバーシップを決定します。 -
groupOfURLsは、LDAP URL の一覧を使用して、メンバーシップの一覧をフィルタリングして作成します。あらゆる動的グループにはこのオブジェクトクラスが必要であり、groupOfNamesおよびgroupOfUniqueNamesと組み合わせて使用できます。memberURL属性はグループメンバーシップを決定します。 -
groupOfCertificatesは、LDAP フィルターを使用して証明書名を検索し、グループメンバーを識別します。このグループに特別なアクセスを付与できるため、グループベースのアクセス制御にはgroupOfCertificatesオブジェクトクラスを使用します。memberCertificateDescription属性は、グループメンバーシップを決定します。
静的グループのオブジェクトクラスを動的オブジェクトクラスの 1 つと一緒に使用すると、グループは動的になります。
MemberOf プラグインは動的グループをサポートして いません。したがって、ユーザーエントリーが動的グループのフィルターと一致する場合、プラグインはユーザーエントリーに memberOf 属性は追加されません。
3.1.2. 静的グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインまたは Web コンソールを使用して静的グループを作成できます。
3.1.2.1. コマンドラインでの静的グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
groupOfNames または groupOfUniqueNames オブジェクトクラスの静的グループを作成するには、dsidm ユーティリティーを使用します。
- 注記
-
dsidmユーティリティーは、ou=groupsサブエントリーの下にのみグループを作成します。別のエントリーにグループを作成する場合は、ldapmodifyユーティリティーを使用します。
前提条件
-
ou=groups,dc=example,dc=comの親エントリーが存在する。
手順
単純なグループ (
groupOfNames) を作成するには、以下を実行します。# dsidm <instance_name> -b "dc=example,dc=com" group create --cn "simple_group"Successfully created simple_group一意のメンバー (
groupOfUniqueNames) を持つグループを作成するには、以下を実行します。# dsidm <instance_name> -b "dc=example,dc=com" uniquegroup create --cn "unique_members_group"Successfully created unique_members_group
検証
groupOfNamesオブジェクトクラスのグループをリスト表示するには、dsidm group listコマンドを使用します。# dsidm <instance_name> --basedn "dc=example,dc=com" group listsimple_groupまたは、
--full-dnオプションを使用して、単純なグループの完全な DN を表示します。# dsidm <instance_name> --basedn "dc=example,dc=com" group list --full-dncn=simple_group,ou=groups,dc=example,dc=comdsidm uniquegroup listコマンドを使用して、メンバーが一意のグループをリスト表示します。# dsidm <instance_name> --basedn "dc=example,dc=com" uniquegroup listunique_members_groupまたは、
--full-dnオプションを使用して、一意のメンバーを持つグループの完全な DN を表示します。# dsidm <instance_name> --basedn "dc=example,dc=com" uniquegroup list --full-dncn=unique_members_group,ou=groups,dc=example,dc=com
3.1.2.2. LDAP ブラウザーでの静的グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して静的グループを作成できます。次の例では ou=groups,dc=example,dc=com の親エントリーに static_group を作成します。
前提条件
-
ou=groups,dc=example,dc=comの親エントリーが存在する。 - Web コンソールのインスタンスにログインするパーミッションがある。Web コンソールへのロギングの詳細は、Web コンソールを使用したディレクトリーサーバーへのロギング を参照してください。
手順
- LDAP Browser メニューに移動します。
-
Tree ビューまたは Table ビューを使用して、グループを作成する親エントリー
ou=groups,dc=example,dc=comを展開します。 - Options メニュー (⫶) をクリックし、 を選択してウィザードウィンドウを開きます。
- Create a group を選択し、 をクリックします。
- グループタイプの Basic Group を選択し、 をクリックします。
グループ名とグループの説明を追加し、グループのメンバーシップ属性を選択します。
-
groupOfNamesオブジェクトクラスを持つグループの member。 -
groupOfUniqueNamesオブジェクトクラスを持つグループの uniquemember。
-
- をクリックします。
- オプション: グループにメンバーを追加し、 をクリックします。
- グループ情報を確認し、 をクリックし、 をクリックします。
検証
- 接尾辞ツリーで新しく作成されたグループエントリーを展開します。
3.1.3. 静的グループへのメンバーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールのコマンドラインを使用して、グループにメンバーを追加できます。
3.1.3.1. コマンドラインを使用した静的グループへのメンバーの追加 リンクのコピーリンクがクリップボードにコピーされました!
静的グループにメンバーを追加するには、dsidm ユーティリティーを使用します。
前提条件
-
cn=simple_groupおよびcn=unique_members_groupグループエントリーは、ou=groups,dc=example,dc=comエントリーの下に存在します。 - ユーザーエントリーが存在します。
手順
単純な静的グループ (
groupOfNames) にメンバーを追加するには、ユーザーの識別名 (DN) をdsidm group add_memberコマンドの値として渡します。たとえば、uid=jsmith,ou=people,dc=example,dc=comユーザーをsimple_groupを追加するには、以下を使用します。# dsidm <instance_name> -b "dc=example,dc=com" group add_member simple_group "uid=jsmith,ou=people,dc=example,dc=com"added member: uid=jsmith,ou=people,dc=example,dc=com一意のメンバー (
groupOfUniqueNames) を持つ静的グループにメンバーを追加するには、ユーザーの識別名 (DN) をdsidm uniquegroup add_memberコマンドの値として渡します。たとえば、uid=ajonson,ou=people,dc=example,dc=comユーザーをunique_members_groupに追加するには、以下を使用します。# dsidm <instance_name> -b "dc=example,dc=com" uniquegroup add_member unique_members_group "uid=ajonson,ou=people,dc=example,dc=com"added member: uid=ajonson,ou=people,dc=example,dc=com
検証
simple_groupのメンバーをリスト表示します。# dsidm <instance_name> -b "dc=example,dc=com" group members simple_groupdn: uid=jsmith,ou=people,dc=example,dc=com dn: uid=mtomson,ou=people,dc=example,dc=comunique_members_groupのメンバーをリスト表示します。# dsidm <instance_name> -b "dc=example,dc=com" uniquegroup members unique_members_groupdn: uid=ajonson,ou=people,dc=example,dc=com
3.1.3.2. LDAP ブラウザーでの静的グループへのメンバーの追加 リンクのコピーリンクがクリップボードにコピーされました!
LDAP Browser を使用して、Web コンソールの静的グループにメンバーを追加できます。
前提条件
- グループエントリーが存在する。
- ユーザーエントリーが存在する。
- Web コンソールでインスタンスにログインしている。Web コンソールへのロギングの詳細は、Web コンソールを使用した Directory Server へのロギング を参照してください。
手順
- LDAP Browser メニューに移動します。
-
Tree または Table ビューを使用して、メンバーを追加するグループエントリーを展開します。たとえば、
cn=unique_members_group,ou=groups,dc=example,dc=comにメンバーを追加します。 - Options メニュー (⫶) をクリックし、 を選択してウィザードウィンドウを開きます。ウィンドウに現在のメンバーリストが表示されます。
- Find New Members タブを選択します。
-
検索バーにメンバーの
uidまたはcn属性値の一部を入力し、 を押します。Available Members フィールドには、グループに追加できるユーザー識別名 (DN) が表示されます。 - メンバー DN を選択し、矢印 (>) をクリックして Chosen Members フィールドに移動します。
- ボタンをクリックします。
検証
-
cn=unique_members_group,ou=groups,dc=example,dc=comグループエントリーを展開し、エントリーの詳細で追加されたユーザーを見つけます。
3.1.4. コマンドラインで動的グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は、コマンドラインのみを使用して動的グループを作成することをサポートしています。ldapmodify ユーティリティーを使用して、groupOfURLs および groupOfCertificates オブジェクトクラスを持つ動的グループを作成します。
以下の例では、ou=groups,dc=example,dc=com エントリーに 2 つの動的グループを作成します。
前提条件
-
ou=groups,dc=example,dc=comの親エントリーが存在する。
手順
groupOfURLsオブジェクトクラスを使用してcn=example_dynamic_groupグループを作成するには、次のコマンドを実行します。# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=example_dynamic_group,ou=groups,dc=example,dc=com changetype: add objectClass: top objectClass: groupOfURLs cn: example_dynamic_group description: Example dynamic group for user entries memberURL: ldap:///dc=example,dc=com??sub?(&(objectclass=person)(cn=*sen)) adding new entry "cn=example_dynamic_group,ou=groups,dc=example,dc=com"このコマンドは、
personオブジェクトクラスと、共通名 (cn) の値の右側のsenサブ文字列を使用してメンバーをフィルター処理する動的グループを作成します。groupOfCertificatesオブジェクトクラスでcn=example_certificates_groupグループを作成するには、以下を実行します。# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=example_certificates_group,ou=groups,dc=example,dc=com changetype: add objectClass: top objectClass: groupOfCertificates cn: example_certificates_group description: Example dynamic group for certificate entries memberCertificateDescription: {ou=people, l=USA, dc=example, dc=com} adding new entry "cn=example_certificates_group,ou=groups,dc=example,dc=com"このコマンドは、証明書のサブジェクト DN に
ou=people,l=USA,dc=example,dc=comが含まれるメンバーをフィルタリングする動的グループを作成します。
検証
groupOfURLsオブジェクトクラスを使用して新しく作成されたグループを検索します。# ldapsearch -xLLL -D "cn=Directory Manager" -W -H ldap://server.example.com -b "dc=example,dc=com" "objectClass=groupOfURLs" 1.1 dn: cn=example_dynamic_group,ou=groups,dc=example,dc=comgroupOfCertificatesオブジェクトクラスで新しく作成されたグループを検索します。# ldapsearch -xLLL -D "cn=Directory Manager" -W -H ldap://server.example.com -b "dc=example,dc=com" "objectClass=groupOfCertificates" 1.1 dn: cn=example_certificates_group,ou=groups,dc=example,dc=com
3.1.5. ユーザーエントリーにおけるグループメンバーシップのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
グループは、メンバーシップ属性を使用して、このグループに属するエントリーを定義します。グループを閲覧してメンバーを見つけるのは簡単です。たとえば、groupOfNames オブジェクトクラスを持つ静的グループは、メンバーの識別名 (DN) を member 属性の値として保存します。ただし、個々のユーザーがどのグループに属しているかをすぐに確認することはできません。グループの場合、ロールとは異なり、ユーザーエントリーにはユーザーのメンバーシップを示すものは何も含まれません。
この問題を解決するには、MemberOf プラグインを使用できます。MemberOf プラグインは、グループエントリー内のメンバーシップ属性を分析し、グループを指すユーザーエントリーに memberOf 属性を自動的に書き込みます。デフォルトでは、プラグインはグループ内の member 属性をチェックしますが、複数の属性を使用してさまざまなグループタイプをサポートできます。
グループのメンバーを追加または削除すると、プラグインはユーザーエントリーの memberOf 属性を更新します。MemberOf プラグインを使用すると、特定のユーザーエントリーに対して簡単な検索を実行し、そのユーザーがメンバーになっているすべてのグループを見つけることができます。MemberOf プラグインは、すべてのグループの直接および間接でメンバーになっているメンバーシップを表示します。
MemberOf プラグインは、static グループのメンバーシップ属性のみを管理します。
3.1.5.1. MemberOf プラグインを使用する際の考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
MemberOf プラグインを使用する場合は、以下を考慮してください。
レプリケーショントポロジーの MemberOf プラグイン
レプリケーショントポロジーでは、MemberOf プラグインを 2 つの方法で管理できます。
トポロジー内のすべてのサプライヤーサーバーとコンシューマーサーバーで MemberOf プラグインを有効にします。この場合、すべてのレプリカ合意でユーザーエントリーの
memberOf属性をレプリケーションから除外する必要があります。属性の除外の詳細は、部分レプリケーション内の属性の管理 を参照してください。
トポロジー内のすべてのサプライヤーサーバーでのみ MemberOf プラグインを有効にします。これを実行するには、以下を行います。
レプリカ合意ですべての書き込みが有効なサプライヤーに対する
memberOf属性のレプリケーションを無効にする必要があります。属性の除外の詳細は、部分レプリケーション内の属性の管理 を参照してください。
-
レプリカ合意内のすべてのコンシューマーレプリカに対して、
memberOf属性のレプリケーションを有効にする必要があります。 - コンシューマーレプリカの MemberOf プラグインを無効にする必要があります。
分散データベースを備えた MemberOf プラグイン
ディレクトリーデータベースの設定 で説明されているように、ディレクトリーのサブツリーを個別のデータベースに保存できます。デフォルトでは、MemberOf プラグインはグループと同じデータベース内に保存されているユーザーエントリーのみを更新します。すべてのデータベースでユーザーを更新するには、
memberOfAllBackendsパラメーターをonに設定する必要があります。memberOfAllBackendsパラメーターの設定の詳細は、Web コンソールを使用した各サーバーでの MemberOf プラグインの設定 を参照してください。
3.1.5.2. MemberOf プラグインに必要なオブジェクトクラス リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、MemberOf プラグインは、memberOf 属性を提供するために、nsMemberOf オブジェクトクラスをユーザーエントリーに追加します。プラグインを正しく動作させるには、nsMemberOf オブジェクトクラスで十分です。
または、inetUser、inetAdmin、inetOrgPerson オブジェクトクラスを含むユーザーエントリーを作成することもできます。これらのオブジェクトクラスは memberOf 属性をサポートします。
ネストされたグループを設定するには、グループで extensibleObject オブジェクトクラスを使用する必要があります。
ディレクトリーエントリーに必要な属性をサポートするオブジェクトクラスが含まれていない場合、操作は次のエラーで失敗します。
LDAP: error code 65 - Object Class Violation
3.1.5.3. MemberOf プラグイン構文 リンクのコピーリンクがクリップボードにコピーされました!
MemberOf プラグインを設定するときは、次の 2 つの主要な属性を設定します。
-
memberOfGroupAttr.グループエントリーからポーリングするメンバーシップ属性を定義します。memberOfGroupAttr属性は多値です。したがって、プラグインは複数のタイプのグループを管理できます。デフォルトでは、プラグインはmember属性をポーリングします。 -
memberOfAttr.メンバーのユーザーエントリーで作成および管理するメンバーシップ属性を定義します。デフォルトでは、プラグインはユーザーエントリーにmemberOf属性を追加します。
さらに、プラグイン構文は、プラグインパス、MemberOf プラグインを識別する関数、プラグインの状態、およびその他の設定パラメーターを提供します。
次の例は、デフォルトの MemberOf プラグインエントリー設定を示しています。
dn: cn=MemberOf Plugin,cn=plugins,cn=config
cn: MemberOf Plugin
memberofallbackends: off
memberofattr: memberOf
memberofentryscope: dc=example,dc=com
memberofgroupattr: member
memberofskipnested: off
nsslapd-plugin-depends-on-type: database
nsslapd-pluginDescription: memberof plugin
nsslapd-pluginEnabled: off
nsslapd-pluginId: memberof
nsslapd-pluginInitfunc: memberof_postop_init
nsslapd-pluginPath: libmemberof-plugin
nsslapd-pluginType: betxnpostoperation
nsslapd-pluginVendor: 389 Project
nsslapd-pluginVersion: 2.4.5
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
例のパラメーターと設定できるその他のパラメーターの詳細は、「設定とスキーマのリファレンス」ドキュメントの MemberOf プラグイン のセクションを参照してください。
3.1.5.4. MemberOf プラグインの有効化 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインまたは Web コンソールを使用して、MemberOf プラグインを有効にできます。
3.1.5.4.1. コマンドラインを使用した MemberOf プラグインの有効化 リンクのコピーリンクがクリップボードにコピーされました!
MemberOf プラグインを有効にするには、dsconf ユーティリティーを使用します。
手順
プラグインを有効にします。
# dsconf <instance_name> plugin memberof enableインスタンスを再起動します。
# dsctl <instance_name> restart
検証
プラグイン設定の詳細を表示します。
# dsconf <instance_name> plugin memberof show dn: cn=MemberOf Plugin,cn=plugins,cn=config ... nsslapd-pluginEnabled: on ...
3.1.5.4.2. Web コンソールを使用した MemberOf プラグインの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して MemberOf プラグインを有効にできます。
前提条件
- Web コンソールでインスタンスにログインしている。Web コンソールへのロギングの詳細は、Web コンソールを使用した Directory Server へのロギング を参照してください。
手順
- Plugins メニューに移動します。
- プラグインの一覧から MemberOf プラグインを選択します。
-
ステータスを
ONに変更し、プラグインを有効にします。 - インスタンスを再起動します。インスタンスを再起動する手順は、Web コンソールを使用した Directory Server インスタンスの起動と停止 を参照してください。
3.1.5.5. 各サーバーでの MemberOf プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
MemberOf プラグインの設定を複製しない場合は、コマンドラインまたは Web コンソールを使用して、各サーバーでプラグインを手動で設定します。
3.1.5.5.1. コマンドラインを使用した各サーバーでの MemberOf プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、MemberOf プラグインはグループエントリーから member のメンバーシップ属性を読み取り、memberOf 属性をユーザーエントリーに追加します。ただし、グループから他のメンバーシップ属性を読み取ったり、ユーザーエントリーに別の属性を追加したり、ネストされたグループをスキップしたり、すべてのデータベースやその他の設定で作業したりするようにプラグインを設定できます。
たとえば、MemberOf プラグインで次の操作を実行するとします。
-
グループエントリーから
uniqueMember属性を読み取り、メンバーシップを識別します。 - ネストされたグループをスキップします。
- すべてのデータベース内のユーザーエントリーを検索します。
前提条件
- MemberOf プラグインを有効化した。詳細は、MemberOf プラグインの有効化 を参照してください。
手順
オプション: MemberOf プラグイン設定を表示して、プラグインが現在グループエントリーから読み取っているメンバーシップ属性を確認します。
# dsconf <instance_name> plugin memberof show ... memberofgroupattr: member ...現在、プラグインはグループエントリーから
member属性を読み取ってメンバーを取得します。プラグイン設定の
memberOfGroupAttrパラメーターにuniqueMember属性を値として設定します。# dsconf <instance_name> plugin memberof set --groupattr uniqueMembermemberOfGroupAttrパラメーターは複数の値を持ち、それらすべてを--groupattrパラメーターに渡すことで複数の値を設定できます。以下に例を示します。# dsconf <instance_name> plugin memberof set --groupattr member uniqueMember分散データベースを使用する環境では、ローカルデータベースだけでなくすべてのデータベース内のユーザーエントリーを検索するようにプラグインを設定します。
# dsconf <instance_name> plugin memberof set --allbackends onこのコマンドは、
memberOfAllBackendsパラメーターを設定します。ネストされたグループをスキップするようにプラグインを設定します。
# dsconf <instance_name> plugin memberof set --skipnested onこのコマンドは
memberOfSkipNestedパラメーターを設定します。オプション: デフォルトでは、ユーザーエントリーに
memberOf属性を許可するオブジェクトクラスがない場合、プラグインはnsMemberOfオブジェクトクラスをユーザーエントリーに追加します。nsMemberOfの代わりにinetUserオブジェクトクラスをユーザーエントリーに追加するようにプラグインを設定するには、次を実行します。# dsconf <instance_name> plugin memberof set --autoaddoc inetUserこのコマンドは、
memberOfAutoAddOCパラメーターを設定します。インスタンスを再起動します。
# dsctl <instance_name> restart
検証
MemberOf プラグイン設定を表示します。
# dsconf <instance_name> plugin memberof show dn: cn=MemberOf Plugin,cn=plugins,cn=config cn: MemberOf Plugin memberofallbackends: on memberofattr: memberOf memberofautoaddoc: inetuser memberofentryscope: dc=example,dc=com memberofgroupattr: uniqueMember memberofskipnested: on ... nsslapd-pluginEnabled: on ...
3.1.5.5.2. Web コンソールを使用した各サーバーでの MemberOf プラグインの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、MemberOf プラグインはグループエントリーから member のメンバーシップ属性を読み取り、memberOf 属性をユーザーエントリーに追加します。ただし、Web コンソールを使用して、グループから他のメンバーシップ属性を読み取ったり、ネストされたグループをスキップしたり、すべてのデータベースやその他の設定を処理したりするようにプラグインを設定できます。
たとえば、MemberOf プラグインで次の操作を実行するとします。
-
グループエントリーから
member属性とuniqueMember属性を読み取り、メンバーシップを識別します。 -
プラグインのスコープを
dc=example,dc=comに設定します。 - ネストされたグループをスキップします。
- すべてのデータベース内のユーザーエントリーを検索します。
前提条件
- Web コンソールでインスタンスにログインしている。Web コンソールへのロギングの詳細は、Web コンソールを使用した Directory Server へのロギング を参照してください。
- MemberOf プラグインを有効化した。詳細は、MemberOf プラグインの有効化 を参照してください。
手順
- LDAP Browser メニューに移動します。
- プラグインリストから MemberOf プラグインを選択します。
-
Group Attribute フィールドに
uniqueMember属性を追加します。 プラグインのスコープを
dc=example,dc=comに設定します。-
dc=example,dc=comを Subtree Scope フィールドに入力します。 ドロップダウンリストで Create "dc=example,dc=com" をクリックします。
-
オプション: 除外するサブツリーを設定します。たとえば、プラグインを
ou=private,dc=example,dc=comサブツリーで動作させない場合は以下を実行します。-
Exclude Subtree フィールドに
ou=private,dc=example,dc=comと入力します。 - ドロップダウンリストで Create "ou=private,dc=example,dc=com" をクリックします。
-
Exclude Subtree フィールドに
- All Backends をチェックして、ローカルデータベースだけでなくすべてのデータベース内のユーザーエントリーを検索するようにプラグインを設定します。
- ネストされたグループをスキップするようにプラグインを設定するには、Skip Nested をオンにします。
- をクリックします。
3.1.5.6. サーバー間での MemberOf プラグイン設定の共有 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、各サーバーは MemberOf プラグインの独自の設定を保存します。プラグインの共有設定により、各サーバーでプラグインを手動で設定しなくても、同じ設定を使用できます。Directory Server は、共有設定を cn=config 接尾辞の外部に保存し、複製します。
たとえば、プラグインの共有設定を cn=shared_MemberOf_config,dc=example,dc=com エントリーに保存するとします。
共有設定を有効にすると、プラグインは cn=MemberOf Plugin,cn=plugins,cn=config プラグインエントリーに設定されたすべてのパラメーターを無視し、共有設定エントリーの設定のみを使用します。
前提条件
- レプリケーショントポロジー内のすべてのサーバーで MemberOf プラグインが有効化されている。詳細は、MemberOf プラグインの有効化 を参照してください。
手順
サーバーで共有設定エントリーを有効にします。
# dsconf <instance_name> plugin memberof config-entry add "cn=shared_MemberOf_config,dc=example,dc=com" --attr memberOf --groupattr member Successfully created the cn=shared_MemberOf_config,dc=example,dc=com MemberOf attribute nsslapd-pluginConfigArea (config-entry) was set in the main plugin configこのコマンドは、
nsslapd-pluginConfigArea属性値をcn=shared_MemberOf_config,dc=example,dc=comに設定します。インスタンスを再起動します。
# dsctl <instance_name> restart共有設定を使用する必要があるレプリケーショントポロジー内の他のサーバーで共有設定を有効にします。
共有設定を保存する設定エントリーの識別名 (DN) を設定します。
# dsconf -D "cn=Directory Manager" ldap://server2.example.com plugin memberof set --config-entry cn=shared_MemberOf_config,dc=example,dc=comインスタンスを再起動します。
# dsctl <instance_name> restart
検証
MemberOf プラグインが共有設定を使用していることを確認します。
# dsconf <instance_name> plugin memberof show dn: cn=MemberOf Plugin,cn=plugins,cn=config cn: MemberOf Plugin ... nsslapd-pluginConfigArea: cn=shared_MemberOf_config,dc=example,dc=com ...オプション: 共有設定を確認します。
# dsconf <instance_name> memberof config-entry show "cn=shared_MemberOf_config,dc=example,dc=com" dn: cn=shared_MemberOf_config,dc=example,dc=com cn: shared_MemberOf_config memberofattr: memberOf memberofgroupattr: member objectClass: top objectClass: extensibleObject
3.1.5.7. MemberOf プラグインのスコープの設定 リンクのコピーリンクがクリップボードにコピーされました!
複数のバックエンドまたは複数のネストされた接尾辞を設定した場合は、memberOfEntryScope および memberOfEntryScopeExcludeSubtree パラメーターを使用して、MemberOf プラグインが機能する接尾辞を設定できます。
ユーザーをグループに追加すると、MemberOf プラグインは、ユーザーとグループの両方がプラグインのスコープ内にある場合にのみ、memberOf 属性をグループに追加します。
たとえば、次の手順では、MemberOf プラグインが dc=example,dc=com 内のすべてのエントリーで機能し、ou=private,dc=example,dc=com 内のエントリーを除外するように設定します。
前提条件
- レプリケーショントポロジー内のすべてのサーバーで MemberOf プラグインが有効化されている。詳細は、MemberOf プラグインの有効化 を参照してください。
手順
MemberOf プラグインのスコープ値を
dc=example,dc=comに設定します。# dsconf <instance_name> plugin memberof set --scope "dc=example,dc=com"ou=private,dc=example,dc=comのエントリーを除外します。# dsconf <instance_name> plugin memberof set --exclude "ou=private,dc=example,com"--scopeDN パラメーターを使用してユーザーエントリーをスコープ外に移動した場合:-
MemberOf プラグインは、グループエントリー内の
memberなどのメンバーシップ属性を更新して、ユーザー DN 値を削除します。 MemberOf プラグインは、ユーザーエントリー内の
memberOf属性を更新して、グループ DN 値を削除します。注記--excludeパラメーターで設定された値は、--scopeで設定された値よりも優先されます。両方のパラメーターで設定したスコープが重複する場合、MemberOf プラグインは、非オーバーラッピングディレクトリーエントリーでのみ機能します。
-
MemberOf プラグインは、グループエントリー内の
3.1.5.8. fixup タスクを使用したユーザーエントリーの memberOf 属性値の更新 リンクのコピーリンクがクリップボードにコピーされました!
MemberOf プラグインは、グループエントリーの設定に基づいて、グループメンバーエントリー内の memberOf 属性を自動的に管理します。ただし、サーバープラグインが管理する memberOf 設定とユーザーエントリーで定義されている実際のメンバーシップとの間の不整合を回避するために、次の状況では fixup タスクを実行する必要があります。
- MemberOf プラグインを有効にする前に、グループにグループメンバーを追加した。
-
ユーザーエントリーの
memberOf属性を手動で編集した。 -
memberOf属性がすでにあるサーバーに、新しいユーザーエントリーをインポートまたは複製した。
fixup タスクはローカルでのみ実行できることに注意してください。レプリケーション環境では、Directory Server は更新されたエントリーをレプリケートした後、他のサーバー上のエントリーの memberOf 属性を更新します。
前提条件
- レプリケーショントポロジー内のすべてのサーバーで MemberOf プラグインが有効化されている。詳細は、MemberOf プラグインの有効化 を参照してください。
手順
たとえば、
dc=example,dc=comエントリーとサブエントリーのmemberOf値を更新するには、次を実行します。# dsconf <instance_name> plugin memberof fixup "dc=example,dc=com" Attempting to add task entry... Successfully added task entryデフォルトでは、
fixupタスクは、inetUser、inetAdmin、またはnsMemberOfオブジェクトクラスを含むすべてのエントリーのmemberOf値を更新します。他のオブジェクトクラスを含むエントリーに対しても
fixupタスクを実行する場合は、-fフィルターオプションを使用します。# dsconf <instance_name> plugin memberof fixup -f "(|(objectclass=inetuser)(objectclass=inetadmin)(objectclass=nsmemberof)(objectclass=nsmemberof)(objectclass=inetOrgPerson))" "dc=example,dc=com"この
fixupタスクは、inetUser、inetAdmin、nsMemberOf、またはinetOrgPersonオブジェクトクラスを含むすべてのエントリーのmemberOf値を更新します。
3.1.6. 指定したグループへのエントリーの自動追加 リンクのコピーリンクがクリップボードにコピーされました!
グループを使用すると、パスワードポリシー、アクセス制御、およびその他のルールをすべてグループメンバーシップに基づいて設定できるため、Directory Server はディレクトリー全体に整合性のあるポリシーを確実に適用できます。エントリーの作成時または変更時に新しいエントリーをグループに自動的に割り当てると、Directory Server はこれらのエントリーに適切なポリシーと機能を適用します。
Directory Server は動的グループフィルターに基づいてグループ内の一致するエントリーを含めるため、動的グループはメンバーを自動的に割り当てる 1 つの方法です。Directory Server のポリシーおよび設定を適用するには、これで十分です。ただし、LDAP アプリケーションとクライアントでは通常、必要な操作を実行するために、グループメンバーの静的かつ明示的なリストが必要です。静的グループのすべてのメンバーをこれらのグループに手動で追加する必要があります。
Auto Membership プラグインを使用すると、静的グループでも動的グループのようにメンバーを検索できます。Auto Membership プラグインを有効にすると、Directory Server は一致するエントリーを自動的に検索して識別し、これらのエントリーをメンバーとして静的グループに明示的に追加します。
Auto Membership プラグインは、ディレクトリーに保存されている任意のタイプのエントリー (ユーザー、マシン、ネットワークデバイス、顧客データ、その他のエントリー) をターゲットにすることができます。
Auto Membership は、定義された基準に基づいて既存のグループに新しいメンバーを追加します。新しいエントリー用のグループは作成されません。特定タイプの新規エントリーの作成時に対応するグループエントリーを作成するには、Managed Entries プラグインを使用します。
3.1.6.1. Auto Membership プラグインの構文の概要 リンクのコピーリンクがクリップボードにコピーされました!
Auto Membership プラグインは、cn=Auto Membership Plugin,cn=plugins,cn=config コンテナーエントリーです。次の設定エントリーを作成して、グループの割り当てを定義します。
- Auto Membership の定義エントリー
-
定義エントリーは、プラグインのメインの設定エントリーです。定義エントリーには、エントリーを識別するための LDAP 検索ベースとフィルター、およびエントリーを追加するデフォルトグループが含まれています。定義エントリーは、
cn=Auto Membership Plugin,cn=plugins,cn=configの子エントリーです。 - Auto Membership の正規表現エントリー
- 正規表現エントリーは、定義エントリーのオプションの子です。これらのエントリーは、新規または変更済みのエントリーをグループに割り当てるための追加条件を定義します。
3.1.6.1.1. Auto Membership の定義エントリー リンクのコピーリンクがクリップボードにコピーされました!
Auto Membership の定義エントリーは、autoMemberDefinition オブジェクトクラスを持つ cn=Auto Membership Plugin,cn=plugins,cn=config の子です。各プラグイン設定には個別の定義エントリーが必要であり、そこで次の基本設定を定義します。
-
必須の
autoMemberDefinitionオブジェクトクラス。エントリーをプラグインの定義エントリーとして識別します。 -
autoMemberDefaultGroup。メンバーエントリーを追加するデフォルトグループを設定します。 -
autoMemberFilter。エントリーを識別するための LDAP フィルターを設定します。 -
autoMemberGroupingAttr。グループエントリー内の属性 (memberなど) と属性値 (dnなど) で構成されるメンバーエントリーの形式を設定します。 -
autoMemberScope。エントリーを検索するディレクトリーサブツリーを設定します。
その他の Auto Membership プラグイン設定属性の詳細は、RHDS 13 設定およびスキーマリファレンス ドキュメントの Auto Membership プラグイン属性の説明 を参照 してください。
定義エントリーは、一致するメンバーエントリーとそのメンバーのグループを識別します。たとえば、次の cn=hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config 定義エントリーは、objectclass=ipHost オブジェクトクラスを持つすべてのホストエントリーを cn=servers グループに割り当てます。
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=servers,cn=hostgroups,dc=example,dc=com
autoMemberGroupingAttr: member:dn
3.1.6.1.2. Auto Membership の正規表現エントリー リンクのコピーリンクがクリップボードにコピーされました!
Auto Membership プラグインで一致するすべてのエントリーを検索し、指定された 1 つのグループに追加する場合は、プラグインの定義エントリーのみを作成する必要があります。たとえば、Directory Server で ipHost オブジェクトクラスを持つすべてのホストエントリーを識別し、それらを cn=servers グループに割り当てます。
しかし、追加の Auto Membership 正規表現エントリーを使用することで、他の属性の値に応じて、LDAP 検索フィルターに一致するエントリーを異なるグループに追加するようプラグインを設定できます。たとえば、Directory Server で、IP アドレスや物理的な場所に応じてホストを異なるグループに追加したり、従業員 ID 番号に応じてユーザーを異なるグループに追加したりします。
Auto Membership の定義エントリーでは、正規表現エントリーを使用して、以下を判断する追加の条件を指定します。
- グループに含めるエントリーとグループから除外するエントリー。
- 選択したエントリーを追加する新しい特定のグループ。
定義エントリーには、この定義エントリーの子エントリーとして、複数の正規表現エントリーを含めることができます。
A definition entry
dn: cn=<definition_entry_name>,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberDefinition
...
A child regular expression entry #1
dn: cn=<regex_name_1>,cn=<definition_entry_name>,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberRegexRule
...
A child regular expression entry #2
dn: cn=<regex_name_2>,cn=<definition_entry_name>,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberRegexRule
...
各正規表現エントリーには、複数の包含表現と除外表現を含めることができます。除外が最初に評価され、エントリーがいずれかの包含表現に一致する場合、このエントリーはグループに追加されることに注意してください。1 つの正規表現エントリーには、ターゲットグループを 1 つだけ含めることができます。
次の表には、正規表現エントリーの設定属性を示しています。
| 属性 | 定義 |
|---|---|
|
| 正規表現ルールとしてエントリーを識別します。このエントリーは、Auto Member 定義エントリーの子である必要があります。 |
|
| 含めるエントリーを識別するために使用する正規表現を設定します。プラグインは、一致するエントリーのみを指定されたグループに追加します。 正規表現エントリーには複数の包含表現を含めることができ、いずれかの表現にエントリーが一致する場合、プラグインはそのエントリーをグループに含めます。
式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、 |
|
| 除外するエントリーを識別するために使用する正規表現を設定します。エントリーが除外条件に一致する場合、プラグインは一致するエントリーをグループに含めません。 正規表現エントリーには複数の除外表現を含めることができ、エントリーがいずれかの除外表現に一致すると、そのエントリーはグループから除外されます。
式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、
|
|
| エントリーが正規表現の条件を満たす場合に、そのエントリーをメンバーとして追加するグループを設定します。 |
例3.1 正規表現を使用して、Auto Membership プラグインの定義に追加の条件を指定する
たとえば、Auto Membership 定義で、すべてのホストエントリーをデフォルトグループに追加するように設定します。
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=servers,cn=hostgroups,dc=example,dc=com
autoMemberGroupingAttr: member:dn
ただし、プラグインが指定された範囲内の完全修飾ドメイン名を持つすべてのホストを別の 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 グループに追加されます。objectclass=ipHost LDAP フィルターに一致するが、完全修飾ドメイン名のタイプが異なるその他のマシンエントリーは、メイン定義エントリーで定義されているデフォルトの cn=servers ホストグループに追加されます。
定義エントリー内のデフォルトグループは、汎用定義に一致するが、正規表現ルールの条件を満たさないエントリーのフォールバックです。
3.1.6.2. コマンドラインを使用して Auto Membership プラグインを設定する リンクのコピーリンクがクリップボードにコピーされました!
新しいエントリーまたは変更されたエントリーをグループに自動的に割り当てるには、cn=Auto Membership Plugin,cn=plugins,cn=config の下に Auto Membership プラグインの定義エントリーを作成する必要があります。新しいエントリーまたは変更されたエントリーに追加の条件を適用するには、定義エントリーに正規表現エントリーを追加する必要があります。
たとえば、Auto Membership プラグインで次のタスクを実行するとします。
-
新しいホストエントリーまたは変更されたホストエントリーを
cn=serversグループに追加します。 -
Web サーバーをフィルタリングし、別の
cn=webserversグループに追加します。 -
メールサーバーをフィルタリングし、別の
cn=mailserversグループに追加します。
前提条件
- root 権限がある。
- ディレクトリー内にグループエントリーが存在する。プラグインは新しいエントリーのグループを作成しないことに注意してください。
手順
オプション: Auto Membership プラグインを有効にします。
# dsconf <instance_name> plugin automember enableプラグインは、デフォルトで有効になっています。
ホストエントリー、デフォルトの
cn=serversグループ、およびメンバーエントリー形式を識別するための LDAP フィルターを使用して、Auto Membership 定義エントリーを作成します。# dsconf <instance_name> plugin automember definition "Hostgroups definition" add --default-group "cn=servers,cn=hostgroups,ou=groups,dc=example,dc=com" --scope "dc=example,dc=com" --filter "objectclass=ipHost" --grouping-attr "member:dn"Successfully created the cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=configオプション: Web サーバーとメールサーバーをフィルタリングするための正規表現エントリーを追加します。
Web サーバーを他のホストから識別し、別の
cn=webserversグループに追加するには、次のように入力します。# dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "webservers" add --target-group "cn=webservers,cn=hostgroups,dc=example,dc=com" --inclusive "fqdn=^www\.web[0-9]+\.example\.com" --exclusive "fqdn=^web13\.example\.com"Successfully created the cn=webservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=configこの条件により、Directory Server は、
www.web1.example.comなどの^www\.web[0-9]+\.example\.com表現に一致する完全修飾ドメイン名を持つすべてのホストマシンをcn=webserversグループに追加します。ただし、Directory Server は、www.web13.example.comホストとobjectclass=ipHostフィルターに一致するその他のホストエントリーをデフォルトのcn=servers,cn=Host Groups,ou=groups,dc=example,dc=comグループに追加します。Directory Server は最初に除外条件を評価することに注意してください。
残りのホスト内のメールサーバーを識別し、それらを別の
cn=mailserversグループに追加するには、次のように入力します。# dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "mailservers" add --target-group "cn=mailservers,cn=hostgroups,dc=example,dc=com" --inclusive "fqdn=^www\.mail[0-9]+\.example\.com"Successfully created the cn=mailservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config
オプション: エントリーにグループエントリーを追加するか、エントリーを編集してエントリーを別のグループに移動すると、Directory Server はデフォルトでグループメンバーシップを更新します。プラグインがエントリーの変更を無視するようにする場合は、定義エントリー設定で
autoMemberProcessModifyOps属性をoffに設定します。# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -xdn: cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config changetype: modify add: autoMemberProcessModifyOps autoMemberProcessModifyOps: off
検証
Auto Membership の定義エントリー設定を表示します。
# dsconf <instance_name> plugin automember definition "Hostgroups definition" showdn: cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config autoMemberDefaultGroup: cn=servers,cn=Host Groups,ou=groups,dc=example,dc=com autoMemberFilter: objectclass=ipHost autoMemberGroupingAttr: member:dn autoMemberScope: dc=example,dc=com cn: Hostgroups definition objectClass: top objectClass: autoMemberDefinitionAuto Membership の正規表現エントリーを表示します。
# dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "webservers" showdn: cn=webservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config autoMemberExclusiveRegex: fqdn=^web13\.example\.com autoMemberInclusiveRegex: fqdn=^www\.web[0-9]+\.example\.com autoMemberTargetGroup: cn=webservers,cn=hostgroups,dc=example,dc=com cn: webservers objectClass: top objectClass: autoMemberRegexRule# dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "mailservers" showdn: cn=mailservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config autoMemberInclusiveRegex: fqdn=^www\.mail[0-9]+\.example\.com autoMemberTargetGroup: cn=mailservers,cn=hostgroups,dc=example,dc=com cn: mailservers objectClass: top objectClass: autoMemberRegexRule
3.1.6.3. Web コンソールを使用して Auto Membership プラグインを設定する リンクのコピーリンクがクリップボードにコピーされました!
新しいエントリーを自動的にグループに割り当てるには、プラグインの Auto Membership 定義エントリーを作成します。新しいエントリーまたは変更されたエントリーに追加の条件を適用するには、定義エントリーに正規表現エントリーを追加する必要があります。
たとえば、Auto Membership プラグインで次のタスクを実行するとします。
-
ipHostオブジェクトクラスを持つ新しいホストエントリーまたは変更されたホストエントリーをcn=serversグループに追加します。 -
Web サーバーをフィルタリングし、別の
cn=webserversグループに追加します。同時に、一部の Web サーバーはデフォルトのcn=serversグループに移動する必要があります。
前提条件
- root 権限がある。
- Web コンソールにログインしている。詳細は、Web コンソールを使用した Directory Server へのログイン を参照してください。
- ディレクトリー内にグループエントリーが存在する。プラグインは新しいエントリーのグループを作成しないことに注意してください。
手順
- Directory Server インスタンスを選択します。
- Plugins メニューを開き、プラグインのリストから Auto Membership プラグインを選択します。
- Add Definition ボタンをクリックし、新しいプラグイン設定を追加します。
Add Auto Membership Plugin Definition Entry ポップアップウィンドウで、以下を設定します。
-
Definition Name として
Hostgroups definition -
Subtree scope として
dc=example,dc=com -
Entry Filter として
objectclass=ipHost -
Grouping Attribute として
member:dn Default Group として
cn=servers,cn=hostgroups,ou=groups,dc=example,dc=comプラグイン定義エントリーの設定属性に関する詳細な説明は、Auto Membership の定義エントリー を参照してください。
-
Definition Name として
オプション: をクリックして、Web サーバーをフィルタリングするための正規表現エントリーを追加します。Manage Auto Membership Plugin Regex Entry ポップアップウィンドウで、以下を設定します。
-
Regex Name として
webservers -
Exclusive Regex として
fqdn=^web13\.example\.com -
Inclusive Regex として
fqdn=^www\.web[0-9]+\.example\.com Target Group として
cn=webservers,cn=hostgroups,dc=example,dc=com正規表現の設定属性に関する詳細な説明は、Auto Membership の正規表現エントリー を参照してください。
-
Regex Name として
- をクリックして、正規表現の入力設定を保存します。
- オプション: 他の正規表現エントリーを追加します。
をクリックして、正規表現エントリーを含めた Auto Membership プラグインの設定を保存します。
設定を保存すると、Directory Server は
cn=Auto Membership Plugin,cn=plugins,cn=configの下に定義エントリーとその子の正規表現エントリーを作成します。ホストエントリーがfqdn=^www\.web[0-9]+\.example\.comフィルターに一致する場合、別のcn=webservers,cn=hostgroups,dc=example,dc=comに送られます。Web サーバーエントリーがfqdn=^web13\.example\.comフィルターに一致する場合、そのエントリーはデフォルトのcn=servers,cn=hostgroups,ou=groups,dc=example,dc=comグループと、objectclass=ipHostフィルターに一致するその他のホストエントリーに送信されます。
3.1.6.4. Auto Membership プラグインのルールの例 リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの場合、Auto Membership ルールはユーザーとマシンに適用されます。ディレクトリーに設定できる Auto Membership ルールの最も一般的な例について説明します。
- IP アドレスに基づく異なるホストグループ
- 従業員の ID に基づく異なるユーザーグループ
- Windows ユーザーグループ
IP アドレス別のホストグループ
次のプラグイン設定の例では、ホストを 3 つのグループに分割します。
- Web サーバー
- メールサーバー
- その他のサーバー
まず、Auto Membership ルールのスコープとターゲットを定義する Auto Membership 定義エントリーを作成します。Directory Server は、スコープを使用してすべてのホストエントリーを検索します。
Auto Membership definition 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=otherhosts,cn=hostgroups,dc=example,dc=com
autoMemberGroupingAttr: member:dn
次に、Auto Membership 定義エントリーの子となる正規表現エントリーを作成します。
Child regular expression entry #1
dn: cn=webservers,cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberRegexRule
description: Group for web servers
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
Child regular expression entry #2
dn: cn=mailservers,cn=Hostgroups,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberRegexRule
description: Group for mail servers
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
プラグインは子の正規表現エントリーをイテレートし、ホストエントリーが包含正規表現と一致する場合は、Directory Server がこの正規表現エントリーで定義されたホストグループにエントリーを追加します。ホストエントリーがどのグループとも一致しない場合、Directory Server はそれを親定義エントリーの autoMemberDefaultGroup に設定されているデフォルトグループに追加します。
従業員の ID に基づく異なるユーザーグループ
Auto Membership プラグインはカスタム属性で動作します。たとえば、人事アプリケーションでは、カスタム employeeType 属性の従業員タイプに基づいてユーザーを作成し、それを参照することができます。
この目的のために、2 つの正規表現フィルターを使用してフルタイム従業員と臨時従業員を分類する automembership ルールを作成します。ただし、次の例では、真の正規表現ではなく明示的な値を使用しています。その他の属性については、従業員 ID 番号の範囲に基づくフィルター設定などの正規表現を使用します。
Auto Membership definition entry
dn: cn=Employee groups,cn=Auto Membership Plugin,cn=plugins,cn=config
objectclass: autoMemberDefinition
cn: Employee groups
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
Child regular expression 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
Child regular expression 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
Windows ユーザーグループ
デフォルトでは、Directory Server は posixAccount 属性を持つ新しいユーザーを作成します。ただし、ユーザーアカウントが Windows ドメインから Directory Server に同期されると、Windows ユーザーアカウントには代わりに ntUser 属性が含まれます。
Windows ユーザーのみを対象とする automembership ルールを作成できます。
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
3.1.6.5. 修正タスクを実行して Auto Membership プラグインのルールを再適用する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、ユーザーエントリーを編集してユーザーを別のグループに移動する場合でも、Directory Server は Auto Membership プラグインを呼び出して操作を追加および変更します。ただし、cn=<definition_entry_name>,cn=Auto Membership Plugin,cn=plugins,cn=config 設定エントリーで autoMemberProcessModifyOps を off に設定してこのような動作をオフにした場合は、ディレクトリーに新しいエントリーを追加した後、または既存のエントリーを変更した後に、メンバーシップを手動で更新する必要があります。そのためには、修正タスクを実行します。
前提条件
- root 権限がある。
- Auto Membership プラグインを有効にした。
-
autoMemberProcessModifyOpsプラグイン属性がoffに設定されている。
手順
修正タスクエントリーを作成します。
# dsconf <instance_name> plugin automember fixup "dc=example,dc=com" -f "objectclass=inetorgperson" -s sub --timeout 5次のコマンドは、
dc=example,dc=comの下の people エントリーの修正タスクを5秒のタイムアウトで開始します。その他のオプションの詳細については、
dsconf <instance_name> plugin automember fixup -hコマンドを実行してください。
検証
すべての Auto Membership 修正タスクのリストを表示します。
# dsconf <instance_name> plugin automember fixup-statusFound 1 fix-up task [1] Task: cn=automember_rebuild_2025-09-19T09:59:10.628240,cn=automember rebuild membership,cn=tasks,cn=config -------------------------------------------------------------------------------- - Base DN: dc=example,dc=com - Filter: objectclass=inetorgperson - Status: Automember rebuild task finished. Processed (109087) entries in 3 seconds - Started: Fri Sep 19 14:59:10 2025 (20250919135910Z) - Ended: Fri Sep 19 14:59:13 2025 (20250919135910Z) - Elapsed Time: 0:00:03 - Exit Code: 0
3.1.6.6. Auto Membership 定義をテストして、グループが適切に割り当てられているか確認する方法 リンクのコピーリンクがクリップボードにコピーされました!
Auto Member プラグインの各インスタンスは、定義エントリーと正規表現エントリーなどのように、関連性はあるがそれぞれ別のエントリーのセットです。Directory Server がユーザーグループをどの程度正確にマッピングするかを判断することは難しい場合があります。異なるユーザーのサブセットを対象とする複数のルールを設定すると、これはさらに困難になります。
2 つのドライランタスクを実行して、さまざまな Auto Membership プラグイン定義が設計どおりにグループを適切に割り当てているか確認できます。
-
既存エントリーを使用する
cn=automember export updatesタスク -
新規ユーザーでインポート LDIF ファイルを使用する
cn=automember map updatesタスク
3.1.6.6.1. 既存エントリーで Auto Membership 定義をテストする リンクのコピーリンクがクリップボードにコピーされました!
Auto Membership 定義エントリーを設定した後、Directory Server がユーザーを適切にグループに割り当てるかを確認するには、既存エントリーに対して cn=automember export updates タスクを実行します。そうすることで、既存ユーザーに対して設定されたルールをテストし、実際のデプロイメントがどのように実行されるかを確認できます。
前提条件
- root 権限がある。
- Auto Membership プラグインを有効にした。
手順
cn=automember export updatesタスクのインスタンスを作成します。# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x検索するベース DN、検索フィルター、検索範囲、提案されたエントリーの更新を記録するエクスポート LDIF ファイルなどのタスクパラメーターを入力します。
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この例では、Directory Server は、
dc=example,dc=comサブツリーの下にあるすべてのユーザーエントリー (uid=*) に対して Auto Membership プラグイン設定を実行し、その結果を/tmp/automember-updates.ldifファイルに書き込みます。
3.1.6.6.2. インポート LDIF を使用した Auto Membership 定義のテスト リンクのコピーリンクがクリップボードにコピーされました!
Auto Membership 定義エントリーを設定した後、Directory Server がユーザーをグループに適切に割り当てるか確認するには、LDIF ファイルからの新規エントリーまたはテストエントリーに対して cn=automember map updates タスクを実行します。そうすることで、新しいルールを実際の新規または既存のユーザーエントリーに適用する前にテストできます。
前提条件
- root 権限がある。
- Auto Membership プラグインを有効にした。
手順
cn=automember map updatesタスクのインスタンスを作成します。# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x検索するベース DN、検索フィルター、検索範囲、提案されたエントリーの更新を記録するエクスポート LDIF ファイルなどのタスクパラメーターを入力します。
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この例では、Directory Server は
/tmp/entries.ldifファイルのユーザーエントリーに対して Auto Membership プラグイン設定を実行し、その結果を/tmp/automember-updates.ldifファイルに書き込みます。
3.1.6.7. Auto Membership プラグインタスクのキャンセル リンクのコピーリンクがクリップボードにコピーされました!
Directory Server の設定が複雑な場合 (大規模なグループ、複雑なルール、他のプラグインとの対話など)、Auto Membership プラグインタスクが原因でサーバーの CPU 使用率が高くなる可能性があります。パフォーマンスの問題を防ぐために、Auto Membership プラグインタスクをキャンセルできます。
前提条件
- root 権限がある。
- Auto Membership プラグインを有効にした。
手順
Auto Membership プラグインタスクをキャンセルするには、以下を入力します。
# dsconf <instance_name> plugin automember abort-fixup
検証
キャンセルされたタスクを含む、すべての Auto Membership 修正タスクのリストを表示するには、以下を入力します。
# dsconf <instance_name> plugin automember fixup-status