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 に存在する。
手順
dsidmを使用して、cn=Marketing管理ロールエントリーを作成します。# dsidm <instance_name> -b ou=people,dc=example,dc=com role create-managed --cn MarketingSuccessfully 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
-
このユーザーエントリーに
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"オプション: インデックスのない検索を避けるために、
userRootデータベースのnsRoleDN属性の 等価 インデックスを設定します。# dsconf <instance_name> backend index add --index-type eq --attr nsRoleDN --reindex userRoot
検証
ロールをリスト表示します。
# dsidm <instance_name> -b dc=example,dc=com role list --full-dncn=SalesManagerFilter,ou=people,dc=example,dc=com cn=Marketing,ou=people,dc=example,dc=com--full-dnオプションを指定しないと、ロール名のみがリストされます。現在
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 に存在する。
手順
dsidmユーティリティーを使用して、cn=SalesManagerFilterフィルターされたロールエントリーを作成します。# dsidm <instance_name> -b "ou=people,dc=example,dc=com" role create-filtered --cn "SalesManagerFilter" Enter value for nsrolefilter : o=sales managersSuccessfully created SalesManagerFilterSalesManagerFilterフィルターが設定されたロールエントリーには、ロールの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
-
オプション: インデックスのない検索を避けるために、
nsRoleFilterロールフィルターで使用する属性の 等価 インデックスを設定します。この例では、ロールはo=sales managersをフィルターとして使用します。したがって、o属性にインデックスを付けて、検索パフォーマンスを向上します。# dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRoot
検証
ロールをリスト表示します。
# dsidm <instance_name> -b dc=example,dc=com role list --full-dncn=SalesManagerFilter,ou=people,dc=example,dc=com--full-dnオプションを指定しないと、ロール名のみがリストされます。現在
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 に存在する。
手順
-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
-
検証
ロールをリスト表示します。
# dsidm <instance_name> -b dc=example,dc=com role list --full-dn--full-dnオプションを指定しないと、ロール名のみがリストされます。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 sureSuccessfully 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 に存在する。
手順
- Web コンソールにログインし、Red Hat Directory Server をクリックします。
- Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP Browser を開きます。
- LDAP エントリーを選択し、Options メニュー (⋮) を開きます。
- ドロップダウンメニューから New を選択し、Create a new role をクリックします。
- ウィザードの手順に従い、各手順を完了したら ボタンをクリックします。
- ロールを作成するには、Create Role の手順でロールの設定を確認し、 ボタンをクリックします。 ボタンをクリックしてロールの設定を変更するか、 ボタンをクリックしてロールの作成をキャンセルできます。
- ウィザードウィンドウを閉じるには、 ボタンをクリックします。
検証
- LDAP エントリーを展開し、新しいロールがエントリーパラメーターに表示されることを確認します。
3.2.4.2. LDAP ブラウザーでのロールの削除 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで LDAP Browser を使用して、Red Hat Directory Server エントリーからロールを削除できます。
前提条件
- Web コンソールへのアクセス。
- 親エントリーが Directory Server に存在する。
手順
- Web コンソールにログインし、Red Hat Directory Server をクリックします。
- Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP browser をクリックします。
- LDAP エントリーを展開し、削除するロールを選択します。
- Options メニュー (⋮) を開き、Delete を選択します。
- 削除するロールに関するデータを確認し、Deletion の手順に到達するまで ボタンをクリックします。
- スイッチを Yes, I’m sure の位置に切り替え、 ボタンをクリックします。
- ウィザードウィンドウを閉じるには、 ボタンをクリックします。
検証
- LDAP エントリーを展開し、ロールがエントリーのパラメーターに含まれていないことを確認します。
3.2.4.3. LDAP ブラウザーでのロールの変更 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで LDAP Browser を使用して、Red Hat Directory Server エントリーのロールパラメーターを変更できます。
前提条件
- Web コンソールへのアクセス。
- 親エントリーが Directory Server に存在する。
手順
- Web コンソールにログインし、Red Hat Directory Server をクリックします。
- Web コンソールが Red Hat Directory Server インターフェイスをロードしたら、LDAP Browser をクリックします。
- LDAP エントリーを展開し、変更するロールを選択します。
- Options メニュー (⋮) をクリックし、Edit を選択してロールのパラメーターを変更するか、Rename を選択してロールの名前を変更します。
- ウィザードウィンドウで必要なパラメーターを変更し、LDIF Statements の手順が表示されるまで各手順の後に をクリックします。
- 更新されたパラメーターを確認し、 または をクリックします。
- ウィザードウィンドウを閉じるには、 ボタンをクリックします。
検証
- LDAP エントリーを展開し、更新されたパラメーターがロールにリストされていることを確認します。