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))) (version3.0;acl "allow mod of nsRoleDN by self but not to critical values"; allow(write) userdn=ldap:///self;)
aci: (targetattr="nsRoleDN") (targattrfilters= add=nsRoleDN:(!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,dc=com))) (version3.0;acl "allow mod of nsRoleDN by self but not to critical values"; allow(write) userdn=ldap:///self;)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
フィルター設定ロール。フィルターの一部である属性 (
nsRoleFilter
) を保護します。フィルター設定ロールが使用する属性の追加、削除、または変更をユーザーに許可しないでください。Directory Server がフィルター属性の値を計算する場合は、このフィルター属性値を変更できるすべての属性を保護する必要があります。 - ネストされたロール。ネストされたロールは、フィルター設定ロールと管理ロールを含むことができます。したがって、ネストされたロールに含まれるロールの属性ごとに、ACI での変更操作を制限する必要があります。
3.2.3. コマンドラインを使用した Directory Server でのロールの管理 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、ロールを表示、作成、および削除できます。
3.2.3.1. Directory Server での管理対象ロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
管理ロールは、明示的に列挙されたメンバーのリストを持つロールです。ldapmodify
ユーティリティーを使用して、管理ロールを作成できます。次の例では、マーケティングチームの管理ロールを作成します。
前提条件
-
ou=people,dc=example,dc=com
親エントリーが Directory Server に存在する。 -
cn=Bob Jones,ou=people,dc=example,dc=com
ユーザーエントリーが Directory Server に存在する。
手順
-a
オプションを指定したldapmodify
コマンドを使用して、cn=Marketing
管理ロールエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理ロールエントリーには、次のオブジェクトクラスが含まれている必要があります。
-
LDAPsubentry
-
nsRoleDefinition
-
nsSimpleRoleDefinition
-
nsManagedRoleDefinition
-
このユーザーエントリーに
nsRoleDN
属性を追加して、cn=Marketing,ou=people,dc=example,dc=com
管理ロールをcn=Bob Jones,ou=people,dc=example,dc=com
ユーザーエントリーに割り当てます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: インデックスのない検索を避けるために、
userRoot
データベースのnsRoleDN
属性の 等価 インデックスを設定します。dsconf <instance_name> backend index add --index-type eq --attr nsroleDN --reindex userRoot
# dsconf <instance_name> backend index add --index-type eq --attr nsroleDN --reindex userRoot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
現在
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3.2. Directory Server でのフィルターされたロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は、エントリーにロールで定義された特定の属性がある場合、フィルター設定ロールにエントリーを割り当てます。ロール定義では、nsRoleFilter
LDAP フィルターを指定します。フィルターに一致するエントリーは、ロールのメンバーです。
ldapmodify
ユーティリティーを使用して、フィルター設定ロールを作成できます。次の例では、営業部門のマネージャー用のフィルター設定ロールを作成します。
前提条件
-
ou=people,dc=example,dc=com
親エントリーが Directory Server に存在する。
手順
-a
オプションを指定したldapmodify
コマンドを使用して、cn=SalesManagerFilter
のフィルター設定ロールエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cn=SalesManagerFilter
のフィルター設定ロールエントリーには、ロール用のo=sales managers
フィルターがあります。sales managers
の値を持つo
属性を有するすべてのユーザーエントリーは、フィルター設定ロールのメンバーです。フィルター設定ロールのメンバーになったユーザーエントリーの例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow フィルター設定ロールエントリーには、次のオブジェクトクラスが必要です。
-
LDAPsubentry
-
nsRoleDefinition
-
nsComplexRoleDefinition
-
nsFilteredRoleDefinition
-
オプション: インデックスのない検索を避けるために、
nsRoleFilter
ロールフィルターで使用する属性の 等価 インデックスを設定します。この例では、ロールはo=sales managers
をフィルターとして使用します。したがって、o
属性にインデックスを付けて、検索パフォーマンスを向上します。dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRoot
# dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRoot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
現在
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
のネストされたロールエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、ロールに
description
属性を含めることができます。ネストされたロールエントリーには、次のオブジェクトクラスが必要です。
-
LDAPsubentry
-
nsRoleDefinition
-
nsComplexRoleDefinition
-
nsNestedRoleDefinition
-
検証
cn=MarketingSales
のネストされたロールに現在属しているユーザーエントリーをリスト表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3.4. エントリーのロールの表示 リンクのコピーリンクがクリップボードにコピーされました!
エントリーのロールを表示するには、nsRole
仮想属性を明示的に指定して ldapsearch
コマンドを使用します。
前提条件
- ロールエントリーが存在する。
-
uid=user_name
ユーザーエントリーにロールを割り当てている。
手順
指定した
nsRole
仮想属性を持つuid=user_name
エントリーを検索します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
uid=user_name
ユーザーがメンバーとなっているすべてのロールを取得します。
3.2.3.5. Directory Server でのロールの削除 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server のロールを削除するには、ldapmodify
コマンドを使用します。
以下に、cn=Marketing
管理ロールを Directory Server から削除する例を示します。
手順
cn=Marketing
管理ロールエントリーを削除するには、次のように入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ロールを削除すると、Directory Server はロールエントリーのみを削除し、各ロールメンバーの
nsRoleDN
属性は削除しません。各ロールメンバーのnsRoleDN
属性を削除するには、Referential Integrity プラグインを有効にし、nsRoleDN
属性を管理するようにこのプラグインを設定します。Referential Integrity プラグインの詳細は、Referential Integrity を使用したエントリー間の関係の維持 を参照してください。
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 エントリーを展開し、更新されたパラメーターがロールにリストされていることを確認します。