第7章 スキーマ定義
ディレクトリースキーマは、ディレクトリーへのデータの保存方法を定義する一連のルールです。ディレクトリー情報は個別のエントリーに保存され、各エントリーは属性のセットとその値で構成されます。エントリーで説明されるアイデンティティーの種類は、エントリーのオブジェクトクラスで定義されます。オブジェクトクラスは、オブジェクトクラスの定義された属性セットでエントリーが記述するオブジェクトの種類を指定します。
基本的に、スキーマファイルは、作成できるエントリーの種類 (オブジェクトクラス) と、それらのエントリーを記述する方法 (属性) のリストです。スキーマは、オブジェクトクラスおよび属性を 定義 します。スキーマは、属性値に含まれる形式 (属性の 構文) と、その属性のインスタンスが 1 つだけであるかどうかも定義します。
追加のスキーマファイルを Directory Server 設定に追加してサーバーにロードできるため、スキーマはカスタマイズ可能であり、必要に応じて拡張できます。
スキーマ定義に文字数が多すぎると、Directory Server は起動に失敗します。これらの場所では、LDAP 標準で、NAME キーワードと属性タイプの名前など、ゼロまたは多数のスペースを使用できるようにするスペースを 1 つだけ使用します。
7.1. オブジェクトクラス リンクのコピーリンクがクリップボードにコピーされました!
LDAP では、オブジェクトクラスはエントリーの定義に使用できる属性のセットを定義します。LDAP 標準仕様は、ユーザー (person
および inetOrgPerson
)、グループ (groupOfUniqueNames
)、場所 (locality
)、組織および部門 (organization
および organizationalUnit
)、および機器 (device
) など、多くの一般的なエントリーに対するオブジェクトクラスを提供します。
スキーマファイルでは、オブジェクトクラスは objectclasses
行によって識別され、その後 OID、名前、説明、その直接の上位オブジェクトクラス (オブジェクトクラスと使用する必要のあるオブジェクトクラス、およびそのオブジェクトクラスと属性を共有するのに必要なオブジェクトクラス)、および必須属性のリスト (MUST
) および許可される属性のリスト (MAY
) が続きます。次の例で、この点を説明します。
例7.1 個人のオブジェクトクラススキーマエントリー
objectClasses: ( 2.5.6.6 NAME 'person' DESC 'Standard LDAP objectclass' SUP top MUST ( sn $ cn ) MAY ( description $ seeAlso $ telephoneNumber $ userPassword ) X-ORIGIN 'RFC 2256' )
objectClasses: ( 2.5.6.6 NAME 'person' DESC 'Standard LDAP objectclass' SUP top MUST ( sn $ cn ) MAY ( description $ seeAlso $ telephoneNumber $ userPassword ) X-ORIGIN 'RFC 2256' )
7.1.1. 必須および許可される属性 リンクのコピーリンクがクリップボードにコピーされました!
すべてのオブジェクトクラスは、多数の必須属性と許可される属性を定義します。必須属性は、指定されたオブジェクトクラスを使用するエントリーに存在する必要がありますが、許可された属性は許可されており、エントリーで使用できますが、エントリーが有効である必要はありません。
Person オブジェクトクラススキーマエントリー と同様に、person
オブジェクトクラスには cn
、sn
、および objectClass
属性が必要であり、description
、seeAlso
、telephoneNumber
、および userPassword
属性が許可されます。
すべてのエントリーには、エントリーに割り当てられたオブジェクトクラスをリスト表示する objectClass
属性が必要です。
7.1.2. オブジェクトクラスの継承 リンクのコピーリンクがクリップボードにコピーされました!
エントリーには、複数のオブジェクトクラスを含めることができます。たとえば、個人のエントリーは person
オブジェクトクラスで定義されますが、同じユーザーが inetOrgPerson
および organizationalPerson
オブジェクトクラスの属性で記述することもできます。
さらに、オブジェクトクラスは階層的に実行できます。オブジェクトクラスは、独自の必須属性と許可される属性に加えて、別のクラスから属性を継承できます。2 つ目のオブジェクトクラスは、最初のオブジェクトクラスの superior オブジェクトクラスです。
サーバーのオブジェクトクラス構造は、特定のエントリーに必要な属性と許可される属性のリストを決定します。たとえば、ユーザーのエントリーには inetOrgPerson
オブジェクトクラスが必要です。その場合、エントリーには、inetOrgPerson
と organizationalPerson
の上位オブジェクトクラスと、organizationalPerson
の上位オブジェクトクラスである person
も含める必要があります。
objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
inetOrgPerson
オブジェクトクラスがエントリーに割り当てられている場合、エントリーは上位オブジェクトクラスから必要な属性および許可される属性を自動的に継承します。