4.3. ディレクトリーエントリーのグループ化
必要なエントリーを作成したら、管理を容易にするためにそれらをグループ化します。Directory Server は、エントリーをグループ化するための複数の方法をサポートします。
- グループの使用
- ロールの使用
4.3.1. グループについて リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
グループは、名前が示すように、ユーザーのコレクションです。Directory Server にはいくつかの異なるタイプのグループがあり、証明書グループ、URL グループ、および一意のグループ (各メンバーが一意でなければならない) など、許可されるメンバーシップのタイプを反映します。それぞれのグループタイプは、オブジェクトクラス( groupOfUniqueNamesなど)および対応するメンバー属性( uniqueMemberなど)で定義されます。
グループのタイプは、メンバーのタイプを識別します。グループの設定は、それらのメンバーをグループに追加する方法によって異なります。Directory Server には 2 種類のグループがあります。
- 静的グループ には、グループエントリーに手動で追加されるメンバーの、有限な定義済みのリストがあります。
- 動的グループ は、フィルターを使用してグループのメンバーであるエントリーを認識します。したがって、グループメンバーシップはグループフィルターに一致するエントリーが変わるにつれて絶えず変更されます。
グループは、Directory Server におけるエントリーを整理する最も単純な形態です。これらは主に手動で設定され、組織の方法以外に機能や動作がありません。(実際、操作を実行するために LDAP クライアントはグループを操作することはできますが、グループはディレクトリーエントリーに対してなにも実行しません。)
4.3.1.1. ユーザーエントリーにおけるグループメンバーシップのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
グループは基本的にユーザー DN のリストです。デフォルトでは、グループメンバーシップはユーザーエントリーにではなく、グループエントリー自体にのみ反映されます。ただし、memberOf プラグインでは、グループメンバーエントリーを使用してユーザーエントリーを動的に更新し、ユーザーエントリーで ユーザーが所属するグループを反映させます。MemberOf プラグインは、指定されたメンバー属性を持つグループエントリーを自動的にスキャンし、すべてのユーザー DN のトレースを行い、グループ名でユーザーエントリーに対応する
memberOf 属性を作成します。
グループメンバーシップはグループエントリーの member 属性によって 決定 されますが、ユーザーのすべてのグループのグループメンバーシップは、
memberOf 属性のユーザーのエントリーに 反映され ます。ユーザーが属するすべてのグループの名前は、memberOf 属性として一覧表示されます。これらの memberOf 属性の値は、Directory Server によって管理されます。
注記
「複数のデータベースの使用について」で概説するように、異なるデータベースに異なる接尾辞を保存することができます。
デフォルトでは、MemberOf プラグインは、グループと同じデータベースにあるユーザーのメンバーのみを検索します。ユーザーがグループとは異なるデータベースに保存されている場合、プラグインはそれらの関係を保証できないため、ユーザーエントリーは
memberOf 属性で更新されません。
memberOfAllBackends 属性を有効にすると、設定されたすべてのデータベースを検索するように MemberOf プラグインを設定できます。
プラグインエントリーに複数値の
memberofgroupattr を設定することで、複数のメンバー属性を識別するように MemberOf プラグインの 1 つのインスタンスを設定できます。これにより、MemberOf プラグインは複数のグループタイプを管理できます。
4.3.1.2. グループへの新規エントリーの自動追加 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
グループ管理は、特に Directory Server データおよび組織を使用するクライアントや、グループを使用してエントリーに機能を適用するクライアントなど、ディレクトリーデータを管理する上で重要な要素となります。グループにより、ディレクトリー全体で一貫して、信頼できるポリシーの適用が容易になります。パスワードポリシー、アクセス制御リスト、その他のルールはすべてグループメンバーシップに基づいて設定できます。
アカウントの作成時に、新しいエントリーをグループに自動的に割り当てることができるため、管理者の介入なしに、適切なポリシーと機能がそれらのエントリーに即座に適用されるようにします。
自動メンバーシッププラグイン により、基本的に、静的グループが動的グループのように動作できるようにします。これは、(エントリー属性、ディレクトリーの場所、正規表現に基づく) ルールのセットを使用して、ユーザーを自動的に指定されたグループに割り当てます。
他の属性の値によっては、LDAP 検索フィルターに一致するエントリーを異なるグループに追加する必要がある場合があります。たとえば、IP アドレスや物理的な場所に応じて、異なるグループにマシンを追加しないといけない場合があります。ユーザーは、従業員 ID 番号に応じて異なるグループに置かなければならない場合があります。
自動メンバー定義は、自動メンバーシッププラグインコンテナー、次に自動メンバー定義、次にその定義の正規表現条件による、ネスティングされたエントリーのセットです。
図4.13 正規表現の条件
注記
自動メンバーシップの割り当ては、エントリーが Directory Server に追加される場合にのみ自動的に行われます。
自動メンバールールを満たすように編集される既存のエントリーの場合、適切なグループメンバーシップを割り当てるために実行できる修正タスクがあります。
4.3.2. ロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ロール はハイブリッドグループで、静的グループと動的グループの両方として機能します。グループを使用すると、エントリーはメンバーとしてグループエントリーに追加されます。ロールを使用すると、role 属性がエントリーに追加され、その属性はロールエントリー内のメンバーを自動的に識別するために使用されます。
ロールは、効果的に、そして自動的に さまざまな方法でユーザーを整理します。
- ロールメンバーを明示的にリスト表示します。ロールを表示すると、そのロールのメンバーの完全なリストが表示されます。ロール自体にクエリーを実行してメンバーシップを確認することができます (動的グループでは不可能です)。
- エントリーが属するロールの表示します。ロールのメンバーシップはエントリーの属性によって決定されます。エントリーを表示するだけで、所属するロールがすべて表示されます。これはグループの memberOf 属性と似ていますが、この機能が機能するためにプラグインインスタンスを有効化または設定する必要がないだけです。これは自動的です。
- 適切なロールを割り当てます。ロールのメンバーシップは、ロールからではなく、エントリー から割り当てられます。そのため、ユーザーが所属するロールは、1 つの手順でエントリーを編集して簡単に割り当てられ、削除することができます。
マネージドロールは、通常、静的グループで実行可能なものをすべて実行できます。ロールメンバーは、動的グループによるフィルタリングと同様に、フィルターされたロールを使用してフィルタリングできます。ロールはグループよりも使いやすく、実装に柔軟性が高まり、クライアントの複雑さが軽減されます。
ロール メンバー は、ロールを持つエントリーです。メンバーは、明示的に、または動的に指定できます。ロールのメンバーシップの指定方法は、ロールのタイプによって異なります。Directory Server は、以下の 3 種類のロールをサポートします。
- マネージドロール には、メンバーの明示的な列挙リストがあります。
- フィルターされたロール には、LDAP フィルターで指定される各エントリーに含まれる属性に応じて、エントリーがロールに割り当てられます。フィルターに一致するエントリーはロールを持ちます。
- ネストされたロール は、他のロールが含まれるロールです。
ロール。ロールをアクティブ/非アクティブにするコンセプトにより、エントリーのグループ全体を一度の操作でアクティブ/非アクティブにすることができます。つまり、あるロールのメンバーを、そのメンバーが属するロールを非アクティブにすることで、一時的に無効にすることができます。
ロールが非アクティブになっても、そのロールエントリーを使用してユーザーをサーバーにバインドできなくなるわけではありません。非アクティブ化されたロールの意味は、そのロールに属するエントリーを使用してユーザーをサーバーにバインドできないことです。非アクティブ化されたロールに属するエントリーは、
nsAccountLock 属性が true に設定されます。
ネスティングされたロールが非アクティブになると、ネスティングされたロール内の任意のロールのメンバーである場合、ユーザーをサーバーにバインドできません。ネスティングされたロールに直接的または間接的であるロールに属するすべてのエントリーでは、
nsAccountLock が true に設定されています。何層にもなったネスティングロールが可能です。ネスティング内のどのネスティングされたロールを非アクティブにしても、その下にあるすべてのロールとユーザーが非アクティブになります。
4.3.3. ロールとグループの使い分け リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ロールとグループは同じ目標を達成することができます。管理されたロールは、静的グループができることをすべて行うことができ、フィルタリングされたロールは、動的グループのようにメンバーをフィルタリングして識別することができます。ロールとグループの両方に、メリットとデメリットがあります。ロールとグループのどちらを使用するか (または混在させるか) は、クライアントのニーズとサーバーのリソースのバランスによって決まります。
ロールはクライアント側の複雑さを軽減することができ、それがロールの主な利点です。ロールを使用すると、クライアントアプリケーションはエントリーの
nsRole 操作属性を検索して、ロールのメンバーシップを確認できます。この多値属性は、エントリーが属するすべてのロールを識別します。クライアントアプリケーションの観点からは、メンバーシップを確認する方法は統一されており、サーバー側で実行されます。
しかし、このようなクライアントにとっての使い勝手の良さは、サーバーの複雑化という代償を伴います。 サーバーがクライアントアプリケーションに対して機能するため、Directory Server ではロールの評価がグループを評価するよりもリソース集約されます。
グループは、サーバーにとっては簡単ですが、効果的に使用するには、よりスマートで複雑なクライアントが必要です。たとえば、ダイナミックグループは、アプリケーションの観点から見ると、グループメンバーのリストを提供するサーバーからのサポートを提供しません。代わりに、アプリケーションはグループ定義を取得してから、フィルターを実行します。グループメンバーシップは、適切なプラグインが設定されている場合にのみ、ユーザーエントリーに反映されます。結局のところ、グループのメンバーシップを決定する方法は一様ではなく、予測もできません。
注記
グループメンバーシップの管理をバランスよく行うことができるものとして、MemberOf プラグインがあります。
memberOf を使用すると、クライアントにとっての使いやすさと、サーバーによる計算効率の良さのバランスがとります。
MemberOf プラグインは、ユーザーがグループに追加されるたびに、ユーザーエントリーに
memberOf 属性を動的に作成します。クライアントは、グループエントリーを 1 回検索することで、そのグループのすべてのメンバーのリストを取得できます。ユーザーエントリーを 1 回検索することで、そのユーザーが属するすべてのグループの完全なリストを取得できます。
サーバーには、メンバーシップが変更されたときにのみメンテナンスのオーバーヘッドが発生します。指定されたメンバー(グループ)属性と
memberOf (ユーザー)属性の両方がデータベースに格納されるため、検索に必要な追加の処理がないため、クライアントからの検索は非常に効率的になります。