第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 のグループについて を参照してください。グループオブジェクトクラスはメンバーシップ属性を定義し、グループにメンバーを追加するには、グループエントリーのこのメンバーシップ属性に値を追加する必要があります。

次の表に、グループオブジェクトクラスと対応するメンバーシップ属性を示します。

Expand
グループタイプオブジェクトクラスメンバーシップ属性

静的であること

groupOfNames

member

groupOfUniqueNames

uniqueMember

動的

groupOfURLs

memberURL

groupOfCertificates

memberCertificate

グループを作成するときに使用できるオブジェクトクラス:

  • 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"
    Copy to Clipboard Toggle word wrap
    Successfully created simple_group
    Copy to Clipboard Toggle word wrap
  • 一意のメンバー (groupOfUniqueNames) を持つグループを作成するには、以下を実行します。

    # dsidm <instance_name> -b "dc=example,dc=com" uniquegroup create --cn "unique_members_group"
    Copy to Clipboard Toggle word wrap
    Successfully created unique_members_group
    Copy to Clipboard Toggle word wrap

検証

  • groupOfNames オブジェクトクラスのグループをリスト表示するには、dsidm group list コマンドを使用します。

    # dsidm <instance_name> --basedn "dc=example,dc=com" group list
    Copy to Clipboard Toggle word wrap
    simple_group
    Copy to Clipboard Toggle word wrap

    または、--full-dn オプションを使用して、単純なグループの完全な DN を表示します。

    # dsidm <instance_name> --basedn "dc=example,dc=com" group list --full-dn
    Copy to Clipboard Toggle word wrap
    cn=simple_group,ou=groups,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  • dsidm uniquegroup list コマンドを使用して、メンバーが一意のグループをリスト表示します。

    # dsidm <instance_name> --basedn "dc=example,dc=com" uniquegroup list
    Copy to Clipboard Toggle word wrap
    unique_members_group
    Copy to Clipboard Toggle word wrap

    または、--full-dn オプションを使用して、一意のメンバーを持つグループの完全な DN を表示します。

    # dsidm <instance_name> --basedn "dc=example,dc=com" uniquegroup list --full-dn
    Copy to Clipboard Toggle word wrap
    cn=unique_members_group,ou=groups,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

3.1.2.2. LDAP ブラウザーでの静的グループの作成

Web コンソールを使用して静的グループを作成できます。次の例では ou=groups,dc=example,dc=com の親エントリーに static_group を作成します。

前提条件

手順

  1. LDAP Browser メニューに移動します。
  2. Tree ビューまたは Table ビューを使用して、グループを作成する親エントリー ou=groups,dc=example,dc=com を展開します。
  3. Options メニュー (⫶) をクリックし、New を選択してウィザードウィンドウを開きます。
  4. Create a group を選択し、Next をクリックします。
  5. グループタイプの Basic Group を選択し、Next をクリックします。
  6. グループ名とグループの説明を追加し、グループのメンバーシップ属性を選択します。

    • groupOfNames オブジェクトクラスを持つグループの member
    • groupOfUniqueNames オブジェクトクラスを持つグループの uniquemember
  7. Next をクリックします。
  8. オプション: グループにメンバーを追加し、Next をクリックします。
  9. グループ情報を確認し、Create をクリックし、Finish をクリックします。

検証

  • 接尾辞ツリーで新しく作成されたグループエントリーを展開します。

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"
    Copy to Clipboard Toggle word wrap
    added member: uid=jsmith,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  • 一意のメンバー (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"
    Copy to Clipboard Toggle word wrap
    added member: uid=ajonson,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

検証

  • simple_group のメンバーをリスト表示します。

    # dsidm <instance_name> -b "dc=example,dc=com" group members simple_group
    Copy to Clipboard Toggle word wrap
    dn: uid=jsmith,ou=people,dc=example,dc=com
    dn: uid=mtomson,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  • unique_members_group のメンバーをリスト表示します。

    # dsidm <instance_name> -b "dc=example,dc=com" uniquegroup members unique_members_group
    Copy to Clipboard Toggle word wrap
    dn: uid=ajonson,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

3.1.3.2. LDAP ブラウザーでの静的グループへのメンバーの追加

LDAP Browser を使用して、Web コンソールの静的グループにメンバーを追加できます。

前提条件

手順

  1. LDAP Browser メニューに移動します。
  2. Tree または Table ビューを使用して、メンバーを追加するグループエントリーを展開します。たとえば、cn=unique_members_group,ou=groups,dc=example,dc=com にメンバーを追加します。
  3. Options メニュー (⫶) をクリックし、Edit を選択してウィザードウィンドウを開きます。ウィンドウに現在のメンバーリストが表示されます。
  4. Find New Members タブを選択します。
  5. 検索バーにメンバーの uid または cn 属性値の一部を入力し、Enter を押します。Available Members フィールドには、グループに追加できるユーザー識別名 (DN) が表示されます。
  6. メンバー DN を選択し、矢印 (>) をクリックして Chosen Members フィールドに移動します。
  7. Add Member ボタンをクリックします。

検証

  • 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"
    Copy to Clipboard Toggle word wrap

    このコマンドは、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"
    Copy to Clipboard Toggle word wrap

    このコマンドは、証明書のサブジェクト 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=com
    Copy to Clipboard Toggle word wrap
  • groupOfCertificates オブジェクトクラスで新しく作成されたグループを検索します。

    # 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
    Copy to Clipboard Toggle word wrap

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 オブジェクトクラスで十分です。

または、inetUserinetAdmininetOrgPerson オブジェクトクラスを含むユーザーエントリーを作成することもできます。これらのオブジェクトクラスは memberOf 属性をサポートします。

ネストされたグループを設定するには、グループで extensibleObject オブジェクトクラスを使用する必要があります。

注記

ディレクトリーエントリーに必要な属性をサポートするオブジェクトクラスが含まれていない場合、操作は次のエラーで失敗します。

LDAP: error code 65 - Object Class Violation
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

例のパラメーターと設定できるその他のパラメーターの詳細は、「設定とスキーマのリファレンス」ドキュメントの MemberOf プラグイン のセクションを参照してください。

3.1.5.4. MemberOf プラグインの有効化

コマンドラインまたは Web コンソールを使用して、MemberOf プラグインを有効にできます。

3.1.5.4.1. コマンドラインを使用した MemberOf プラグインの有効化

MemberOf プラグインを有効にするには、dsconf ユーティリティーを使用します。

手順

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

    # dsconf <instance_name> plugin memberof enable
    Copy to Clipboard Toggle word wrap
  2. インスタンスを再起動します。

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

検証

  • プラグイン設定の詳細を表示します。

    # dsconf <instance_name> plugin memberof show
    
    dn: cn=MemberOf Plugin,cn=plugins,cn=config
    ...
    nsslapd-pluginEnabled: on
    ...
    Copy to Clipboard Toggle word wrap
3.1.5.4.2. Web コンソールを使用した MemberOf プラグインの有効化

Web コンソールを使用して MemberOf プラグインを有効にできます。

前提条件

手順

  1. Plugins メニューに移動します。
  2. プラグインの一覧から MemberOf プラグインを選択します。
  3. ステータスを ON に変更し、プラグインを有効にします。
  4. インスタンスを再起動します。インスタンスを再起動する手順は、Web コンソールを使用した Directory Server インスタンスの起動と停止 を参照してください。

3.1.5.5. 各サーバーでの MemberOf プラグインの設定

MemberOf プラグインの設定を複製しない場合は、コマンドラインまたは Web コンソールを使用して、各サーバーでプラグインを手動で設定します。

3.1.5.5.1. コマンドラインを使用した各サーバーでの MemberOf プラグインの設定

デフォルトでは、MemberOf プラグインはグループエントリーから member のメンバーシップ属性を読み取り、memberOf 属性をユーザーエントリーに追加します。ただし、グループから他のメンバーシップ属性を読み取ったり、ユーザーエントリーに別の属性を追加したり、ネストされたグループをスキップしたり、すべてのデータベースやその他の設定で作業したりするようにプラグインを設定できます。

たとえば、MemberOf プラグインで次の操作を実行するとします。

  • グループエントリーから uniqueMember 属性を読み取り、メンバーシップを識別します。
  • ネストされたグループをスキップします。
  • すべてのデータベース内のユーザーエントリーを検索します。

前提条件

手順

  1. オプション: MemberOf プラグイン設定を表示して、プラグインが現在グループエントリーから読み取っているメンバーシップ属性を確認します。

    # dsconf <instance_name> plugin memberof show
    
    ...
    memberofgroupattr: member
    ...
    Copy to Clipboard Toggle word wrap

    現在、プラグインはグループエントリーから member 属性を読み取ってメンバーを取得します。

  2. プラグイン設定の memberOfGroupAttr パラメーターに uniqueMember 属性を値として設定します。

    # dsconf <instance_name> plugin memberof set --groupattr uniqueMember
    Copy to Clipboard Toggle word wrap

    memberOfGroupAttr パラメーターは複数の値を持ち、それらすべてを --groupattr パラメーターに渡すことで複数の値を設定できます。以下に例を示します。

    # dsconf <instance_name> plugin memberof set --groupattr member uniqueMember
    Copy to Clipboard Toggle word wrap
  3. 分散データベースを使用する環境では、ローカルデータベースだけでなくすべてのデータベース内のユーザーエントリーを検索するようにプラグインを設定します。

    # dsconf <instance_name> plugin memberof set --allbackends on
    Copy to Clipboard Toggle word wrap

    このコマンドは、memberOfAllBackends パラメーターを設定します。

  4. ネストされたグループをスキップするようにプラグインを設定します。

    # dsconf <instance_name> plugin memberof set --skipnested on
    Copy to Clipboard Toggle word wrap

    このコマンドは memberOfSkipNested パラメーターを設定します。

  5. オプション: デフォルトでは、ユーザーエントリーに memberOf 属性を許可するオブジェクトクラスがない場合、プラグインは nsMemberOf オブジェクトクラスをユーザーエントリーに追加します。nsMemberOf の代わりに inetUser オブジェクトクラスをユーザーエントリーに追加するようにプラグインを設定するには、次を実行します。

    # dsconf <instance_name> plugin memberof set --autoaddoc inetUser
    Copy to Clipboard Toggle word wrap

    このコマンドは、memberOfAutoAddOC パラメーターを設定します。

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

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

検証

  • 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
    ...
    Copy to Clipboard Toggle word wrap
3.1.5.5.2. Web コンソールを使用した各サーバーでの MemberOf プラグインの設定

デフォルトでは、MemberOf プラグインはグループエントリーから member のメンバーシップ属性を読み取り、memberOf 属性をユーザーエントリーに追加します。ただし、Web コンソールを使用して、グループから他のメンバーシップ属性を読み取ったり、ネストされたグループをスキップしたり、すべてのデータベースやその他の設定を処理したりするようにプラグインを設定できます。

たとえば、MemberOf プラグインで次の操作を実行するとします。

  • グループエントリーから member 属性と uniqueMember 属性を読み取り、メンバーシップを識別します。
  • プラグインのスコープを dc=example,dc=com に設定します。
  • ネストされたグループをスキップします。
  • すべてのデータベース内のユーザーエントリーを検索します。

前提条件

手順

  1. LDAP Browser メニューに移動します。
  2. プラグインリストから MemberOf プラグインを選択します。
  3. Group Attribute フィールドに uniqueMember 属性を追加します。
  4. プラグインのスコープを dc=example,dc=com に設定します。

    1. dc=example,dc=comSubtree Scope フィールドに入力します。
    2. ドロップダウンリストで Create "dc=example,dc=com" をクリックします。

      security configuring the memberof 1

  5. オプション: 除外するサブツリーを設定します。たとえば、プラグインを ou=private,dc=example,dc=com サブツリーで動作させない場合は以下を実行します。

    1. Exclude Subtree フィールドに ou=private,dc=example,dc=com と入力します。
    2. ドロップダウンリストで Create "ou=private,dc=example,dc=com" をクリックします。
  6. All Backends をチェックして、ローカルデータベースだけでなくすべてのデータベース内のユーザーエントリーを検索するようにプラグインを設定します。
  7. ネストされたグループをスキップするようにプラグインを設定するには、Skip Nested をオンにします。
  8. Save Config をクリックします。

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 プラグインの有効化 を参照してください。

手順

  1. サーバーで共有設定エントリーを有効にします。

    # 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
    Copy to Clipboard Toggle word wrap

    このコマンドは、nsslapd-pluginConfigArea 属性値を cn=shared_MemberOf_config,dc=example,dc=com に設定します。

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

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap
  3. 共有設定を使用する必要があるレプリケーショントポロジー内の他のサーバーで共有設定を有効にします。

    1. 共有設定を保存する設定エントリーの識別名 (DN) を設定します。

      # dsconf -D "cn=Directory Manager" ldap://server2.example.com plugin memberof set --config-entry cn=shared_MemberOf_config,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    2. インスタンスを再起動します。

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

検証

  1. 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
    ...
    Copy to Clipboard Toggle word wrap
  2. オプション: 共有設定を確認します。

    # 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
    Copy to Clipboard Toggle word wrap

3.1.5.7. MemberOf プラグインのスコープの設定

複数のバックエンドまたは複数のネストされた接尾辞を設定した場合は、memberOfEntryScope および memberOfEntryScopeExcludeSubtree パラメーターを使用して、MemberOf プラグインが機能する接尾辞を設定できます。

ユーザーをグループに追加すると、MemberOf プラグインは、ユーザーとグループの両方がプラグインのスコープ内にある場合にのみ、memberOf 属性をグループに追加します。

たとえば、次の手順では、MemberOf プラグインが dc=example,dc=com 内のすべてのエントリーで機能し、ou=private,dc=example,dc=com 内のエントリーを除外するように設定します。

前提条件

  • レプリケーショントポロジー内のすべてのサーバーで MemberOf プラグインが有効化されている。詳細は、MemberOf プラグインの有効化 を参照してください。

手順

  1. MemberOf プラグインのスコープ値を dc=example,dc=com に設定します。

    # dsconf <instance_name> plugin memberof set --scope "dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  2. ou=private,dc=example,dc=com のエントリーを除外します。

    # dsconf <instance_name> plugin memberof set --exclude "ou=private,dc=example,com"
    Copy to Clipboard Toggle word wrap

    --scope DN パラメーターを使用してユーザーエントリーをスコープ外に移動した場合:

    • MemberOf プラグインは、グループエントリー内の member などのメンバーシップ属性を更新して、ユーザー DN 値を削除します。
    • MemberOf プラグインは、ユーザーエントリー内の memberOf 属性を更新して、グループ DN 値を削除します。

      注記

      --exclude パラメーターで設定された値は、--scope で設定された値よりも優先されます。両方のパラメーターで設定したスコープが重複する場合、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
    Copy to Clipboard Toggle word wrap

    デフォルトでは、fixup タスクは、inetUserinetAdmin、または 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"
    Copy to Clipboard Toggle word wrap

    この fixup タスクは、inetUserinetAdminnsMemberOf、または 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
Copy to Clipboard Toggle word wrap
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
...
Copy to Clipboard Toggle word wrap

各正規表現エントリーには、複数の包含表現と除外表現を含めることができます。除外が最初に評価され、エントリーがいずれかの包含表現に一致する場合、このエントリーはグループに追加されることに注意してください。1 つの正規表現エントリーには、ターゲットグループを 1 つだけ含めることができます。

次の表には、正規表現エントリーの設定属性を示しています。

Expand
表3.1 正規表現の条件属性
属性定義

autoMemberRegexRule (必須オブジェクトクラス)

正規表現ルールとしてエントリーを識別します。このエントリーは、Auto Member 定義エントリーの子である必要があります。

autoMemberInclusiveRegex (複数値)

含めるエントリーを識別するために使用する正規表現を設定します。プラグインは、一致するエントリーのみを指定されたグループに追加します。

正規表現エントリーには複数の包含表現を含めることができ、いずれかの表現にエントリーが一致する場合、プラグインはそのエントリーをグループに含めます。

式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、pcresyntax(3) man ページを参照してください。

autoMemberExclusiveRegex (複数値)

除外するエントリーを識別するために使用する正規表現を設定します。エントリーが除外条件に一致する場合、プラグインは一致するエントリーをグループに含めません。

正規表現エントリーには複数の除外表現を含めることができ、エントリーがいずれかの除外表現に一致すると、そのエントリーはグループから除外されます。

式の形式は、Perl と互換性のある正規表現 (PCRE) です。PCRE パターンの詳細は、pcresyntax(3) man ページを参照してください。

注記
除外条件は最初に評価され、包含条件よりも優先されます。

autoMemberTargetGroup

エントリーが正規表現の条件を満たす場合に、そのエントリーをメンバーとして追加するグループを設定します。

例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
Copy to Clipboard Toggle word wrap

ただし、プラグインが指定された範囲内の完全修飾ドメイン名を持つすべてのホストを別の 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
Copy to Clipboard Toggle word wrap

その結果、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 権限がある。
  • ディレクトリー内にグループエントリーが存在する。プラグインは新しいエントリーのグループを作成しないことに注意してください。

手順

  1. オプション: Auto Membership プラグインを有効にします。

    # dsconf <instance_name> plugin automember enable
    Copy to Clipboard Toggle word wrap

    プラグインは、デフォルトで有効になっています。

  2. ホストエントリー、デフォルトの 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"
    Copy to Clipboard Toggle word wrap
    Successfully created the cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config
    Copy to Clipboard Toggle word wrap
  3. オプション: Web サーバーとメールサーバーをフィルタリングするための正規表現エントリーを追加します。

    1. 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"
      Copy to Clipboard Toggle word wrap
      Successfully created the cn=webservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config
      Copy to Clipboard Toggle word wrap

      この条件により、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 は最初に除外条件を評価することに注意してください。

    2. 残りのホスト内のメールサーバーを識別し、それらを別の 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" 
      Copy to Clipboard Toggle word wrap
      Successfully created the cn=mailservers,cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config
      Copy to Clipboard Toggle word wrap
  4. オプション: エントリーにグループエントリーを追加するか、エントリーを編集してエントリーを別のグループに移動すると、Directory Server はデフォルトでグループメンバーシップを更新します。プラグインがエントリーの変更を無視するようにする場合は、定義エントリー設定で autoMemberProcessModifyOps 属性を off に設定します。

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    Copy to Clipboard Toggle word wrap
    dn: cn=Hostgroups definition,cn=Auto Membership Plugin,cn=plugins,cn=config
    changetype: modify
    add: autoMemberProcessModifyOps
    autoMemberProcessModifyOps: off
    Copy to Clipboard Toggle word wrap

検証

  1. Auto Membership の定義エントリー設定を表示します。

    # dsconf <instance_name> plugin automember definition "Hostgroups definition" show
    Copy to Clipboard Toggle word wrap
    dn: 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: autoMemberDefinition
    Copy to Clipboard Toggle word wrap
  2. Auto Membership の正規表現エントリーを表示します。

    # dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "webservers" show
    Copy to Clipboard Toggle word wrap
    dn: 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
    Copy to Clipboard Toggle word wrap
    # dsconf <instace_name> plugin automember definition "Hostgroups definition" regex "mailservers" show
    Copy to Clipboard Toggle word wrap
    dn: 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
    Copy to Clipboard Toggle word wrap

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 へのログイン を参照してください。
  • ディレクトリー内にグループエントリーが存在する。プラグインは新しいエントリーのグループを作成しないことに注意してください。

手順

  1. Directory Server インスタンスを選択します。
  2. Plugins メニューを開き、プラグインのリストから Auto Membership プラグインを選択します。
  3. Add Definition ボタンをクリックし、新しいプラグイン設定を追加します。
  4. 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 の定義エントリー を参照してください。

  5. オプション: Add Regex をクリックして、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 の正規表現エントリー を参照してください。

  6. Save をクリックして、正規表現の入力設定を保存します。
  7. オプション: 他の正規表現エントリーを追加します。
  8. Add Definition をクリックして、正規表現エントリーを含めた 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
Copy to Clipboard Toggle word wrap

次に、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
Copy to Clipboard Toggle word wrap

プラグインは子の正規表現エントリーをイテレートし、ホストエントリーが包含正規表現と一致する場合は、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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

3.1.6.5. 修正タスクを実行して Auto Membership プラグインのルールを再適用する

デフォルトでは、ユーザーエントリーを編集してユーザーを別のグループに移動する場合でも、Directory Server は Auto Membership プラグインを呼び出して操作を追加および変更します。ただし、cn=<definition_entry_name>,cn=Auto Membership Plugin,cn=plugins,cn=config 設定エントリーで autoMemberProcessModifyOpsoff に設定してこのような動作をオフにした場合は、ディレクトリーに新しいエントリーを追加した後、または既存のエントリーを変更した後に、メンバーシップを手動で更新する必要があります。そのためには、修正タスクを実行します。

前提条件

  • root 権限がある。
  • Auto Membership プラグインを有効にした。
  • autoMemberProcessModifyOps プラグイン属性が off に設定されている。

手順

  1. 修正タスクエントリーを作成します。

    # dsconf <instance_name> plugin automember fixup "dc=example,dc=com" -f "objectclass=inetorgperson" -s sub --timeout 5
    Copy to Clipboard Toggle word wrap

    次のコマンドは、dc=example,dc=com の下の people エントリーの修正タスクを 5 秒のタイムアウトで開始します。

    その他のオプションの詳細については、dsconf <instance_name> plugin automember fixup -h コマンドを実行してください。

検証

  • すべての Auto Membership 修正タスクのリストを表示します。

    # dsconf <instance_name> plugin automember fixup-status
    Copy to Clipboard Toggle word wrap
    Found 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
    Copy to Clipboard Toggle word wrap

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 プラグインを有効にした。

手順

  1. cn=automember export updates タスクのインスタンスを作成します。

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    Copy to Clipboard Toggle word wrap
  2. 検索するベース 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
    Copy to Clipboard Toggle word wrap

    この例では、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 プラグインを有効にした。

手順

  1. cn=automember map updates タスクのインスタンスを作成します。

    # ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    Copy to Clipboard Toggle word wrap
  2. 検索するベース 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
    Copy to Clipboard Toggle word wrap

    この例では、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
    Copy to Clipboard Toggle word wrap

検証

  • キャンセルされたタスクを含む、すべての Auto Membership 修正タスクのリストを表示するには、以下を入力します。

    # dsconf <instance_name> plugin automember fixup-status
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat