3.2. Directory Server でのロールの使用


ロールを使用して Directory Server エントリーをグループ化できます。ロールは、静的グループと動的グループの両方として動作します。ロールはグループよりも柔軟に実装できるため、簡単に使用できます。たとえば、アプリケーションはグループを選択し、複数のグループのメンバーリストを参照するのではなく、エントリー自体をクエリーしてエントリーが属するロールのリストを取得できます。

コマンドライン または Web コンソール を使用してロールを管理できます。

3.2.1. Directory Server のロール

ロールは、ハイブリッドグループと同様に、静的グループと動的グループの両方として動作します。

  • グループを使用すると、Directory Server はエントリーをグループエントリーにメンバーとして追加します。
  • ロールを使用すると、Directory Server はロール属性をエントリーに追加し、この属性を使用してロールエントリー内のメンバーを自動的に識別します。

ロールメンバーは、ロールを持つエントリーです。ロールのメンバーは、ロールタイプに応じて明示的にまたは動的に指定できます。Directory Server は、以下のタイプのロールをサポートします。

  • 管理ロール

    管理対象ロールにはメンバーの明示的なリストがあります。管理ロールを使用すると、静的グループで実行するのと同じタスクを実行できます。

  • フィルター設定ロール

    動的グループによるフィルタリングと同様に、フィルター設定ロールを使用してロールメンバーをフィルタリングできます。Directory Server は、エントリーがロールで定義された特定の属性を持っているかどうかに応じて、フィルター設定ロールにエントリーを割り当てます。

  • ネストされたロール

    ネストされたロールは、管理ロールとフィルター設定ロールを含むことができます。

ロールを作成するときは、ユーザーがロールに対して自分自身を追加または削除できるかどうかを決定します。詳細は、「Directory Server でのロールのセキュアな使用」 を参照してください。

注記

サーバーがクライアントアプリケーションに対して機能するため、Directory Server ではロールの評価がグループを評価するよりもリソース集約されます。ロールを使用すると、クライアントアプリケーションは nsRole 属性を検索してロールのメンバーシップを確認することができます。nsRole 属性は、エントリーがどのロールに属しているかを識別する計算属性です。Directory Server は nsRole 属性を保存しません。クライアントアプリケーションの観点からは、メンバーシップを確認する方法は統一されており、サーバー側で実行されます。

Directory Server でのロールの使用に関する考慮事項は、Directory Server の計画と設計 ドキュメントの ロールとグループの使い分け を参照してください。

3.2.2. Directory Server でのロールのセキュアな使用

新しいロールを作成するときは、ユーザーがロールに対して自身を簡単に追加または削除できるかどうかを考慮してください。たとえば、Mountain Biking グループロールのユーザーが、自身を簡単に同ロールに追加または削除できるようにすることは可能です。ただし、Marketing ロールが割り当てられているユーザーに、同ロールへの自身の追加または削除を許可することはできません。

潜在的なセキュリティーリスクの 1 つは、ロールを非アクティブ化してユーザーアカウントを非アクティブ化することです。非アクティブなロールには、接尾辞に特別なアクセス制御命令 (ACI) が定義されます。管理者によって、ユーザーがロールに自身を自由に追加および削除することが許可されている場合、これらのユーザーは非アクティブなロールから自身を削除して、アカウントのロックを解除できます。

たとえば、管理ロールがユーザーに割り当てられるとします。Directory Server がアカウントの非アクティブ化を使用してこの管理ロールをロックすると、Directory Server はそのユーザーの nsAccountLock 属性を true として計算するため、ユーザーはサーバーにバインドできなくなります。ただし、ユーザーがすでに Directory Server にバインドされており、管理ロールによってロックされている場合、制限的な ACI が指定されていなければ、ユーザーはエントリーから nsRoleDN 属性を削除して自身のロックを解除できます。

ユーザーが nsRoleDN 属性を削除できないようにするには、ロールのタイプに応じて次の ACI を使用します。

  • 管理ロール。管理ロールのメンバーであるエントリーの場合は、次の ACI を使用します。

    aci: (targetattr="nsRoleDN")
    (targattrfilters= add=nsRoleDN:(!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,dc=com)))
    (version 3.0;acl "allow mod of nsRoleDN by self but not to critical values"; allow(write) userdn=ldap:///self;)
  • フィルター設定ロール。フィルターの一部である属性 (nsRoleFilter) を保護します。フィルター設定ロールが使用する属性の追加、削除、または変更をユーザーに許可しないでください。Directory Server がフィルター属性の値を計算する場合は、このフィルター属性値を変更できるすべての属性を保護する必要があります。
  • ネストされたロール。ネストされたロールは、フィルター設定ロールと管理ロールを含むことができます。したがって、ネストされたロールに含まれるロールの属性ごとに、ACI での変更操作を制限する必要があります。

3.2.3. コマンドラインを使用した Directory Server でのロールの管理

コマンドラインを使用して、ロールを表示、作成、および削除できます。

3.2.3.1. Directory Server での管理対象ロールの作成

管理ロールは、明示的に列挙されたメンバーのリストを持つロールです。dsidm ユーティリティーまたは ldapmodify ユーティリティーを使用して、管理ロールを作成できます。以下の例では、チームメンバーのマーケティング用の管理ロールを作成します。

前提条件

  • ou=people,dc=example,dc=com 親エントリーが Directory Server に存在する。
  • cn=Bob Jones,ou=people,dc=example,dc=com マーケティングチームのメンバーエントリーが Directory Server に存在する。

手順

  1. dsidm を使用して、cn=Marketing 管理ロールエントリーを作成します。

    # dsidm <instance_name> -b ou=people,dc=example,dc=com role create-managed --cn Marketing
    Successfully created Marketing

    または、the -a オプションを指定して ldapmodify コマンドを使用できます。

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Marketing,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsSimpleRoleDefinition
    objectclass: nsManagedRoleDefinition
    cn: Marketing
    description: managed role for the marketing team
    EOF

    詳細は、システムの ldapmodify(1) man ページを参照してください。

    管理ロールエントリーには、次のオブジェクトクラスが含まれている必要があります。

    • LDAPsubentry
    • nsRoleDefinition
    • nsSimpleRoleDefinition
    • nsManagedRoleDefinition
  2. このユーザーエントリーに nsRoleDN 属性を追加して、cn=Marketing,ou=people,dc=example,dc=com 管理ロールを cn=Bob Jones,ou=people,dc=example,dc=com ユーザーエントリーに割り当てます。

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    changetype: modify
    add: nsRoleDN
    nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
    EOF
    
    modifying entry "cn=Bob Jones,ou=people,dc=example,dc=com"
  3. オプション: インデックスのない検索を避けるために、userRoot データベースの nsRoleDN 属性の 等価 インデックスを設定します。

    # dsconf <instance_name> backend index add --index-type eq --attr nsRoleDN --reindex userRoot

検証

  1. ロールをリスト表示します。

    # dsidm <instance_name> -b dc=example,dc=com role list --full-dn
    cn=SalesManagerFilter,ou=people,dc=example,dc=com
    cn=Marketing,ou=people,dc=example,dc=com

    --full-dn オプションを指定しないと、ロール名のみがリストされます。

  2. 現在 cn=Marketing,ou=people,dc=example,dc=com 管理ロールに属しているユーザーエントリーをリスト表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=Marketing,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    
    dn: cn=Tom Devis,ou=people,dc=example,dc=com

3.2.3.2. Directory Server でのフィルターされたロールの作成

Directory Server は、エントリーにロールで定義された特定の属性がある場合、フィルター設定ロールにエントリーを割り当てます。ロール定義では、nsRoleFilter LDAP フィルターを指定します。フィルターに一致するエントリーは、ロールのメンバーです。

dsidm ユーティリティーまたは ldapmodify ユーティリティーを使用して、フィルターされたロールを作成できます。次の例では、営業部門のマネージャー用のフィルター設定ロールを作成します。

前提条件

  • ou=people,dc=example,dc=com 親エントリーが Directory Server に存在する。

手順

  1. dsidm ユーティリティーを使用して、cn=SalesManagerFilter フィルターされたロールエントリーを作成します。

    # dsidm <instance_name> -b "ou=people,dc=example,dc=com" role create-filtered --cn "SalesManagerFilter"
    Enter value for nsrolefilter : o=sales managers
    Successfully created SalesManagerFilter

    SalesManagerFilter フィルターが設定されたロールエントリーには、ロールの o=sales managers フィルターがあります。sales managers の値を持つ o 属性を有するすべてのユーザーエントリーは、フィルター設定ロールのメンバーです。

    フィルター設定ロールのメンバーになったユーザーエントリーの例:

    dn: cn=Pat Smith,ou=people,dc=example,dc=com
    objectclass: person
    cn: Pat
    sn: Smith
    userPassword: password
    o: sales managers

    または、ldapmodify コマンドに the -a オプションを指定して使用して、ロールを作成できます。

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=SalesManagerFilter,ou=people,dc=example,dc=com
    changetype: add
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsFilteredRoleDefinition
    cn: SalesManagerFilter
    nsRoleFilter: o=sales managers
    Description: filtered role for sales managers
    EOF

    詳細は、システムの ldapmodify(1) man ページを参照してください。

    フィルター設定ロールエントリーには、次のオブジェクトクラスが必要です。

    • LDAPsubentry
    • nsRoleDefinition
    • nsComplexRoleDefinition
    • nsFilteredRoleDefinition
  2. オプション: インデックスのない検索を避けるために、nsRoleFilter ロールフィルターで使用する属性の 等価 インデックスを設定します。この例では、ロールは o=sales managers をフィルターとして使用します。したがって、o 属性にインデックスを付けて、検索パフォーマンスを向上します。

    # dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRoot

検証

  1. ロールをリスト表示します。

    # dsidm <instance_name> -b dc=example,dc=com role list --full-dn
    cn=SalesManagerFilter,ou=people,dc=example,dc=com

    --full-dn オプションを指定しないと、ロール名のみがリストされます。

  2. 現在 cn=SalesManagerFilter,ou=people,dc=example,dc=com フィルター設定ロールに属しているユーザーエントリーをリスト表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=SalesManagerFilter,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Jess Mor,ou=people,dc=example,dc=com
    
    dn: cn=Pat Smith,ou=people,dc=example,dc=com

3.2.3.3. Directory Server でのネストされたロールの作成

ネストされたロールは、管理ロールとフィルター設定ロールを含むことができます。ネストされたロールエントリーには、ネストするロールを識別するための nsRoleDN 属性が必要です。

ldapmodify ユーティリティーを使用して、ネストされたロールを作成できます。次の例では、Directory Server での管理対象ロールの作成 および Directory Server でのフィルター処理されたロールの作成 で作成した管理対象ロールとフィルター処理されたロールを含むネストされたロールを作成します。

前提条件

  • ou=people,dc=example,dc=com 親エントリーが Directory Server に存在する。

手順

  1. -a オプションを指定した ldapmodify コマンドを使用して、cn=SalesManagerFilter フィルター設定ロールと cn=Marketing 管理ロールを含む cn=MarketingSales のネストされたロールエントリーを作成します。

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=MarketingSales,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsNestedRoleDefinition
    cn: MarketingSales
    nsRoleDN: cn=SalesManagerFilter,ou=people,dc=example,dc=com
    nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
    EOF

    詳細は、システムの ldapmodify(1) man ページを参照してください。

    必要に応じて、ロールに description 属性を含めることができます。

    ネストされたロールエントリーには、次のオブジェクトクラスが必要です。

    • LDAPsubentry
    • nsRoleDefinition
    • nsComplexRoleDefinition
    • nsNestedRoleDefinition

検証

  1. ロールをリスト表示します。

    # dsidm <instance_name> -b dc=example,dc=com role list --full-dn

    --full-dn オプションを指定しないと、ロール名のみがリストされます。

  2. cn=MarketingSales のネストされたロールに現在属しているユーザーエントリーをリスト表示します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=MarketingSales,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    dn: cn=Pat Smith,ou=people,dc=example,dc=com
    dn: cn=Jess Mor,ou=people,dc=example,dc=com
    dn: cn=Tom Devis,ou=people,dc=example,dc=com

3.2.3.4. エントリーのロールの表示

エントリーのロールを表示するには、nsRole 仮想属性を明示的に指定して ldapsearch コマンドを使用します。

前提条件

  • ロールエントリーが存在する。
  • uid=user_name ユーザーエントリーにロールを割り当てている。

手順

  • 指定した nsRole 仮想属性を持つ uid=user_name エントリーを検索します。

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(uid=user_name)" nsRole
    
    dn: uid=user_name,ou=people,dc=example,dc=com
    ...
    nsRole: cn=Role for Managers,dc=example,dc=com
    nsRole: cn=Role for Accounting,dc=example,dc=com

    このコマンドは、uid=user_name ユーザーがメンバーとなっているすべてのロールを取得します。

3.2.3.5. Directory Server でのロールの削除

Directory Server でロールを削除するには、dsidm ユーティリティーまたは ldapmodify ユーティリティーを使用できます。

以下に、cn=Marketing 管理ロールを Directory Server から削除する例を示します。

手順

  • cn=Marketing 管理ロールエントリーを削除するには、次のように入力します。

    # dsidm <instance_name> -b dc=example,dc=com role delete "cn=Marketing,ou=People,dc=example,dc=com"
    
    Deleting Role cn=Marketing,ou=People,dc=example,dc=com:
    Type 'Yes I am sure' to continue: Yes I am sure
    Successfully deleted cn=Marketing,ou=People,dc=example,dc=com

    または、ldapmodify ユーティリティーを使用してロールを削除するには、次のコマンドを実行します。

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Marketing,ou=People,dc=example,dc=com
    changetype: delete
    EOF
    
    deleting entry "cn=Marketing,ou=People,dc=example,dc=com"
    注記

    ロールを削除すると、Directory Server はロールエントリーのみを削除し、各ロールメンバーの nsRoleDN 属性は削除しません。各ロールメンバーの nsRoleDN 属性を削除するには、Referential Integrity プラグインを有効にし、nsRoleDN 属性を管理するようにこのプラグインを設定します。

    Referential Integrity プラグインの詳細は、Referential Integrity を使用したエントリー間の関係の維持 を参照してください。

検証

  • ロールをリスト表示します。

    # dsidm <instance_name> -b dc=example,dc=com role list --full-dn

    出力には削除されたロールを含めることはできません。

3.2.4. Web コンソールを使用した Directory Server でのロールの管理

Web コンソールの LDAP browser を使用して、ロールを表示、作成、削除できます。

3.2.4.1. LDAP ブラウザーでのロールの作成

Web コンソールで LDAP Browser ウィザードを使用して、Red Hat Directory Server エントリーのロールを作成できます。

前提条件

  • Web コンソールへのアクセス。
  • 親エントリーが Directory Server に存在する。

手順

  1. Web コンソールにログインし、Red Hat Directory Server をクリックします。
  2. Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP Browser を開きます。
  3. LDAP エントリーを選択し、Options メニュー (⋮) を開きます。
  4. ドロップダウンメニューから New を選択し、Create a new role をクリックします。
  5. ウィザードの手順に従い、各手順を完了したら Next ボタンをクリックします。
  6. ロールを作成するには、Create Role の手順でロールの設定を確認し、Create ボタンをクリックします。Back ボタンをクリックしてロールの設定を変更するか、Cancel ボタンをクリックしてロールの作成をキャンセルできます。
  7. ウィザードウィンドウを閉じるには、Finish ボタンをクリックします。

検証

  • LDAP エントリーを展開し、新しいロールがエントリーパラメーターに表示されることを確認します。

3.2.4.2. LDAP ブラウザーでのロールの削除

Web コンソールで LDAP Browser を使用して、Red Hat Directory Server エントリーからロールを削除できます。

前提条件

  • Web コンソールへのアクセス。
  • 親エントリーが Directory Server に存在する。

手順

  1. Web コンソールにログインし、Red Hat Directory Server をクリックします。
  2. Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP browser をクリックします。
  3. LDAP エントリーを展開し、削除するロールを選択します。
  4. Options メニュー (⋮) を開き、Delete を選択します。
  5. 削除するロールに関するデータを確認し、Deletion の手順に到達するまで Next ボタンをクリックします。
  6. スイッチを Yes, I’m sure の位置に切り替え、Delete ボタンをクリックします。
  7. ウィザードウィンドウを閉じるには、Finish ボタンをクリックします。

検証

  • LDAP エントリーを展開し、ロールがエントリーのパラメーターに含まれていないことを確認します。

3.2.4.3. LDAP ブラウザーでのロールの変更

Web コンソールで LDAP Browser を使用して、Red Hat Directory Server エントリーのロールパラメーターを変更できます。

前提条件

  • Web コンソールへのアクセス。
  • 親エントリーが Directory Server に存在する。

手順

  1. Web コンソールにログインし、Red Hat Directory Server をクリックします。
  2. Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP Browser をクリックします。
  3. LDAP エントリーを展開し、変更するロールを選択します。
  4. Options メニュー (⋮) をクリックし、Edit を選択してロールのパラメーターを変更するか、Rename を選択してロールの名前を変更します。
  5. ウィザードウィンドウで必要なパラメーターを変更し、LDIF Statements の手順が表示されるまで各手順の後に Next をクリックします。
  6. 更新されたパラメーターを確認し、Modify Entry または Change Entry Name をクリックします。
  7. ウィザードウィンドウを閉じるには、Finish ボタンをクリックします。

検証

  • LDAP エントリーを展開し、更新されたパラメーターがロールにリストされていることを確認します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る