Active Directory ライトウェイト ディレクトリ サービス (AD LDS) スキーマでは、オブジェクトのクラスと属性を使用して、AD LDS ディレクトリに作成して格納できるオブジェクトおよびデータの種類を定義します。各 AD LDS 構成セットには、個別に管理できる独自のスキーマがあり、このスキーマはスキーマ ディレクトリ パーティションに格納されます。簡単かつ柔軟という AD LDS 設計の概念に沿って、基本的な (つまり既定の) AD LDS スキーマには、AD LDS インスタンスを開始するのに必要なクラスと属性のみが含まれています。管理者自身またはアプリケーション自体により、新しいクラスと属性でスキーマを拡張できます。さらに、スキーマの不要なクラスと属性を非アクティブ化できます。ディレクトリ内のすべてのオブジェクトと同様、スキーマ オブジェクトはアクセス制御リスト (ACL) により保護されるため、承認されたユーザーのみがスキーマを変更できます。AD LDS ディレクトリにあるすべてのオブジェクトは、次の図に示すように、スキーマで定義されたオブジェクト クラスのインスタンスです。
オブジェクト クラス
オブジェクト クラスは、ユーザー、プリンター、アプリケーション プログラムなど、一連の共通の特性を共有するオブジェクトのカテゴリを表します。各オブジェクト クラスの定義には、クラスのインスタンスを記述するために使用できる一連の属性が含まれています。たとえば、User クラスには、givenName、surname、streetAddress などの属性があります。クラスの一連の属性は、そのクラスのオブジェクトに含める必要がある属性と、オブジェクトに含めることができる追加属性に分けられます。各クラスの定義には、特定のクラスのオブジェクトの親となることができるオブジェクトを持つクラスも示されています。
たとえば、次の表は、AD LDS User クラスの定義を示しています。
属性 | 値 |
---|---|
Dn |
CN=User,CN=Schema,CN=Configuration |
objectClass |
top; classSchema; |
cn |
User; |
distinguishedName |
CN=User,CN=Schema,CN=Configuration; |
subClassOf |
organizationalPerson; |
mayContain |
audio; carLicense; departmentNumber; displayName; employeeNumber; employeeType; givenName; homePostalAddress; jpegPhoto; labeledURI; photo; preferredLanguage; roomNumber; secretary; uid; userPKCS12; userSMIMECertificate; x500uniqueIdentifier; |
rDNAttID |
cn; |
adminDisplayName |
User; |
adminDescription |
User; |
objectClassCategory |
1; |
lDAPDisplayName |
user; |
name |
User; |
objectGUID |
dac9093a-d2aa-408a-81bb-0fe8179165da; |
schemaIDGUID |
bf967aba-0de6-11d0-a285-00aa003049e2; |
objectCategory |
CN=Class-Schema,CN=Schema,CN=Configuration; |
defaultObjectCategory |
CN=Person,CN=Schema,CN=Configuration; |
属性
スキーマでは、各属性も定義します。各属性の定義には、その属性の一意の識別子、属性の構文、属性値に対する範囲の制限 (オプション)、属性は 1 つの値のみを持つことができるのかまたは複数の値を持つことができるのか、および属性にインデックスを付けることができるかどうかが含まれます。ディレクトリ スキーマでは、各属性を 1 回だけ定義します。その結果、各属性が、複数のオブジェクト クラスによって参照される場合があります。たとえば、description 属性は 1 回だけ定義され、多数のオブジェクト クラスによって参照されます。
次の表は、代表的なスキーマ属性である telephone number の属性定義を示しています。
属性 | 値 |
---|---|
objectClass |
top; attributeSchema; |
cn |
Telephone-Number; |
distinguishedName |
CN=Telephone-Number,CN=Schema,CN=Configuration; |
instanceType |
0x4 = ( IT_WRITE ); |
whenCreated |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
whenChanged |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
uSNCreated |
217; |
attributeID |
2.5.4.20; |
attributeSyntax |
2.5.5.12; |
isSingleValued |
TRUE; |
rangeLower |
1; |
rangeUpper |
64; |
uSNChanged |
217; |
showInAdvancedViewOnly |
TRUE; |
adminDisplayName |
Telephone-Number; |
adminDescription |
Telephone-Number; |
oMSyntax |
64; |
searchFlags |
0; |
lDAPDisplayName |
telephoneNumber; |
name |
Telephone-Number; |
objectGUID |
bf19d7eb-ea0f-4f2d-af67-f439a037d8a4; |
schemaIDGUID |
bf967a49-0de6-11d0-a285-00aa003049e2; |
attributeSecurityGUID |
77b5b886-944a-11d1-aebd-0000f80367c1; |
systemOnly |
FALSE; |
systemFlags |
0x10 = ( FLAG_SCHEMA_BASE_OBJECT ); |
isMemberOfPartialAttributeSet |
TRUE; |
objectCategory |
CN=Attribute-Schema,CN=Schema,CN=Configuration; |
単一値の属性と複数値の属性
属性は 1 つの値を持つか、または複数の値を持つことができます。単一値の属性のインスタンスは、1 つの値だけを持つことができます。複数値の属性のインスタンスは、複数の値を持つことができますが、すべて同じ構文を使用する必要があります。複数値の属性の各値は一意であることが必要です。
注 | |
複数値の属性は、その値をランダムな順序で保存します。そのため、複数値の属性の値の順序に基づいて、プログラムまたは手動で、ディレクトリの決定を行うことはできません。 |
インデックス付きの属性
属性にインデックスを付けると、インデックス付きの属性に基づくクエリのパフォーマンスを向上させることができます。単一値の属性と複数値の属性の両方にインデックスを付けることができますが、クラスにインデックスを付けることはできません。属性には、スキーマ定義を通してインデックス付きであることを示すマークを付けることができます。属性にインデックスを付けると、検索文字列を指定するときに、ユーザーがワイルドカード (*) をプレフィックスおよびサフィックスとして使用できます。属性をインデックス付きとしてマークすると、その属性を持つすべてのインスタンスは、単に特定のクラスのメンバーのインスタンスに追加されるのではなく、インデックスに追加されます。属性にインデックスを付けると、複数値の属性の場合は特に、ディレクトリ データベースのサイズだけでなく、レプリケーションおよびオブジェクト作成時にも悪影響を与えることがあります。したがって、よく使用する属性だけにインデックスを付ける必要があります。
スキーマに関する一般的な情報については、Active Directory スキーマに関するページ (英語の可能性あり) (