LDAP スキーマ
ディレクトリエントリは、ユーザーやグループといった特定のエンティティまたはオブジェクトに関する情報を含み、識別名に関連付けられています。LDAP スキーマは、LDAP ディレクトリにエントリとして格納できるものを定義する、規則のセットです。各 LDAP ディレクトリにはデフォルトのスキーマがあり、組織でこれに要素を追加することにより、カスタマイズ (「拡張」) できます。スキーマの要素は、属性、構文、オブジェクトクラスです。LDAP ディレクトリサーバーでは、スキーマを適用して、LDAP 操作によって実行されたディレクトリ変更がそのスキーマに準拠するようにできます。
属性
属性は、ディレクトリエントリに含まれている情報を定義します。例えば、cn
(共通名)、telephoneNumber
、userPassword
などは、ユーザーに関連するエントリの共通属性です。
属性は、エントリの種類に応じて、必須である場合と、省略可能である場合があります。ある属性が必須であり、ディレクトリ管理者がスキーマチェックを使用してスキーマを強制している場合、システム管理者は、LDAP 操作によってエントリを追加または変更したときに、その属性の値を指定する必要があります。属性は、複数の値 (デフォルト) または単一の値を持つように定義することもできます。
また、異なる種類のディレクトリエントリで同じ属性を使用できます。
複数のオブジェクトクラス
オブジェクトクラスは、ディレクトリエントリの種類に対して属性のセットを定義します。あるオブジェクトクラス階層にある複数のオブジェクトクラスは、あるエントリの種類に対して複数の属性を定義します。オブジェクトクラスは、階層内のすべての親オブジェクトクラスから属性を継承し、それに独自の属性を追加します。以下はその例です。
オブジェクトクラス 1: 属性 A を追加
オブジェクトクラス 2: 属性 A を継承し、属性 B、C、D を追加
オブジェクトクラス 3: 属性 A、B、C、D を継承し、属性 E、F を追加
オブジェクトクラスには 3 種類があります。抽象、構造化、補助です。
抽象オブジェクトクラス
抽象オブジェクトクラスは、あるオブジェクトクラス構造にあるすべてのオブジェクトクラスが継承する属性または属性のセットを定義します。各オブジェクトクラス構造には、最上位オブジェクトクラスとして必ず抽象オブジェクトクラスが存在する必要があります。通常、デフォルトの LDAP スキーマは、抽象オブジェクトクラス top を使用します。このクラスには、属性 objectClass
のみが含まれています。この属性は、ディレクトリ内の各エントリのオブジェクトクラスを定義します。
構造化オブジェクトクラス
構造化オブジェクトクラスは、LDAP ディレクトリにあるオブジェクトエントリの種類を定義します。構造化オブジェクトクラスの例として、person
、organizationalPerson
、inetOrgPerson
があります。オブジェクトクラス構造には、構造化オブジェクトクラスが少なくとも 1 つ必要です。
補助オブジェクトクラス
補助オブジェクトクラスは、別のオブジェクトクラス (通常は構造化オブジェクトクラス) に属性を追加します。補助オブジェクトクラスが有用なのは、複数のオブジェクトクラスで使用する属性のセットを定義する場合です。通常、補助オブジェクトクラスは、抽象オブジェクトクラスの top を継承します。オブジェクトクラスは、補助オブジェクトクラスから属性を継承できません。代わりに、補助オブジェクトクラスを使用する各オブジェクトクラスに、補助オブジェクトクラスを追加する必要があります。
構文
構文は、属性値が格納される場合のデータ形式を定義します。標準 LDAP 構文の例として、ディレクトリ文字列、整数、JPEG などがあります。