5.3. サービスクラスについて

サービスクラス (CoS) は、アプリケーションが認識できない方法でエントリー間で属性を共有します。CoS では、一部の属性値がエントリー自体と一緒に保存されない場合があります。代わりに、エントリーがクライアントアプリケーションに送信される際に、サービスクラスのロジックにより生成されます。
たとえば、ディレクトリーには、すべてが共通の属性 facsimileTelephoneNumber を共有する数千ものエントリーが含まれています。従来は、FAX 番号を変更するためには、各エントリーを個別に更新する必要があり、管理者にとっては大きな負担となり、すべてのエントリーが更新されないリスクがありました。CoS を使用すると、属性値を動的に生成できます。facsimileTelephoneNumber 属性は 1 つのロケーションに保存され、各エントリーはその場所から fax number 属性を取得します。アプリケーションの場合、これらの属性は、実際にはエントリー自体に保存されていないにもかかわらず、他のすべての属性と同じように表示されます。
各 CoS は、ディレクトリー内の複数のエントリーで設定されています。
  • CoS 定義エントリー は、CoS のタイプを識別します。これは、影響を与えるブランチの下に LDAP サブエントリーとして保存されます。
  • テンプレートエントリー には、共有属性値のリストが含まれます。テンプレートエントリー属性値を変更すると、その属性を共有するすべてのエントリーに自動的に適用されます。
CoS 定義エントリーとテンプレートエントリーは相互に作用して、ターゲットエントリー (そのスコープ内のエントリー) に属性値を提供します。提供する値は、以下によって異なります。
  • エントリーの DN (ディレクトリーツリーの異なる部分に異なる CoS が含まれる場合があります)。
  • エントリーで保存されるサービスクラスの属性値。
    サービスクラス属性がない場合、特定のデフォルト CoS を意味することがあります。
  • CoS テンプレートエントリーに保存される属性値。
    各 CoS テンプレートエントリーは、特定の CoS の属性値を提供します。
  • エントリーのオブジェクトクラス。
    COS の属性値は、スキーマチェックが有効な場合、エントリーに属性を許可するオブジェクトクラスが含まれている場合にのみ生成され、そうでない場合は、すべての属性値が生成されます。
  • ディレクトリーツリーの特定エントリーの一部に保存される属性。
重要
CoS 定義で使用する属性をインデックス化しないでください(cosAttribute パラメーター)。
注記
ロールと従来の CoS を併用することで、ロールベースの属性を提供することができます。これらの属性は、エントリーが特定のロールを持ち、関連する CoS テンプレートを持っているために表示されます。たとえば、ロールベースの属性を使用して、サーバーのルックスルー制限をロールごとに設定することができます。

5.3.1. Pointer CoS について

ポインター CoS は、テンプレート DN のみを使用してテンプレートエントリーを特定します。各ポインター CoS ごとに、1 つのテンプレート DN しか存在しない場合があります。ポインター CoS は、テンプレートエントリーの範囲内にあるすべてのエントリーに適用されます。
たとえば、図5.1「Pointer CoS のサンプル」 のポインター CoS は、dc=example,dc=com に保存されているすべてのエントリーと共通の郵便番号を共有します。

図5.1 Pointer CoS のサンプル

Pointer CoS のサンプル
テンプレートエントリーは、CoS 定義エントリーの DN cn=exampleUS,cn=data で識別されます。postalCode 属性がエントリー cn=wholiday,ou=people,dc=example,dc=com に対してクエリーされるたびに、Directory Server は、テンプレートエントリー cn=exampleUS,cn=data で使用可能な値を返します。

5.3.2. 間接的な CoS について

間接的な CoS は、ターゲットエントリーの属性の 1 つを使用して、テンプレートエントリーを識別します。ターゲットエントリーの属性には、既存のエントリーの DN が含まれる必要があります。

図5.2 間接的な CoS の例

間接的な CoS の例
この例では、Wiiam Holiday のターゲットエントリーには間接指定子 (manager 属性) が含まれます。William のマネージャーは Carla Fuentes であるため、manager 属性にはテンプレートエントリーの DN へのポインター cn=Carla Fuentes,ou=people,dc=example,dc=com が含まれます。テンプレートエントリーは次に、318842departmentNumber 属性値を提供します。

5.3.3. Classic CoS について

従来の CoS は、DN とターゲットエントリーのいずれかの属性の値の両方で、テンプレートエントリー を特定します。Classic CoS には、他の CoS テンプレートに属していないエントリーに適用されるデフォルトの CoS テンプレートなどの複数のテンプレートエントリーを持つことができます。

図5.3 Classic CoS のサンプル

Classic CoS のサンプル
この例では、CoS 定義エントリーの cosSpecifier 属性は、employeeType 属性を指定しています。この属性は、テンプレート DN と組み合わせて、テンプレートエントリーを cn=sales,cn=exampleUS,cn=data として特定します。その後、テンプレートエントリーは、postalCode 属性値をターゲットエントリーに提供します。