In einem AD LDS-Schema (Active Directory Lightweight Directory Services) werden mithilfe von Objektklassen und Attributen die Arten von Objekten und Daten definiert, die in einem AD LDS-Verzeichnis erstellt und gespeichert werden können. Jeder AD LDS-Konfigurationssatz verfügt über ein eigenes, unabhängig verwaltbares Schema, das in der Schemaverzeichnispartition gespeichert ist. Entsprechend den AD LDS-Entwurfskonzepten der Einfachheit und Flexibilität enthält das standardmäßige AD LDS-Basisschema nur die Klassen und Attribute, die zum Starten einer AD LDS-Instanz erforderlich sind. Das Schema kann von Administratoren oder durch die Anwendungen selbst mit neuen Klassen und Attributen erweitert werden. Darüber hinaus können nicht benötigte Schemaklassen und Attribute deaktiviert werden. Wie alle Objekte im Verzeichnis sind Schemaobjekte durch Zugriffssteuerungslisten (Access Control Lists, ACLs) geschützt. So können nur autorisierte Benutzer das Schema ändern. Jedes Objekt in einem AD LDS-Verzeichnis ist eine Instanz einer in einem Schema definierten Objektklasse, wie in der folgenden Abbildung dargestellt.
Objektklassen
Eine Objektklasse stellt eine Kategorie von Objekten dar, wie z. B. Benutzer, Drucker oder Anwendungsprogramme, die gemeinsame Merkmale aufweisen. Die Definition für jede Objektklasse enthält eine Liste der Attribute, mit denen Instanzen der Klasse beschrieben werden können. Beispielsweise weist die Klasse Benutzer Attribute wie givenName, surname und streetAddress auf. Die Liste der Attribute für eine Klasse ist unterteilt in die Attribute, die ein Objekt der Klasse enthalten muss, und in weitere Attribute, die ein Objekt enthalten kann. Ferner sind in der Definition jeder Klasse die Klassen aufgelistet, deren Objekte übergeordnete Objekte der Objekte einer bestimmten Klasse sein können.
Die folgende Tabelle zeigt beispielsweise die Definition der AD LDS-Klasse User.
Attribut | Wert |
---|---|
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; |
Attribute
Im Schema werden auch alle Attribute definiert. Die Definition jedes Attributs enthält eindeutige Bezeichner für das Attribut, die Syntax des Attributs, optionale Bereichsgrenzen für die Attributwerte, ob das Attribut nur einen oder mehrere Werte aufweisen kann sowie ob das Attribut indiziert ist. Jedes Attribut wird im Verzeichnisschema genau einmal definiert. Anschließend kann von mehreren Objektklassen auf jedes Attribut verwiesen werden. So ist beispielsweise das description-Attribut einmal definiert. Anschließend wird von mehreren Objektklassen darauf verwiesen.
Die folgende Tabelle zeigt die Attributdefinition für telephone number, ein repräsentatives Schemaattribut.
Attribut | Wert |
---|---|
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; |
Ein- und mehrwertige Attribute
Attribute können ein- oder mehrwertig sein. Eine Instanz eines einwertigen Attributs kann nur einen einzigen Wert enthalten. Eine Instanz eines mehrwertigen Attributs kann mehrere Werte enthalten, die eine einheitliche Syntax aufweisen müssen. Jeder Wert eines mehrwertigen Attributs muss eindeutig sein.
Hinweis | |
Die Werte eines mehrwertigen Attributs werden in zufälliger Reihenfolge gespeichert. Daher sollten Sie keine Verzeichnisentscheidungen (weder programmgesteuert noch manuell) abhängig von der Reihenfolge der Werte eines mehrwertigen Attributs fällen. |
Indizierte Attribute
Das Indizieren von Attributen trägt zur Verbesserung der Leistung von Abfragen bei, die auf dem indizierten Attribut basieren. Sowohl einwertige als auch mehrwertige Attribute können indiziert werden. Klassen können nicht indiziert werden. Attribute können durch ihre Schemadefinition für die Indizierung markiert werden. Die Indizierung eines Attributs ermöglicht es Benutzern außerdem, in Suchzeichenfolgen Platzhalter (*) als Präfixe und Suffixe zu verwenden. Wenn Sie ein Attribut als indiziert kennzeichnen, werden alle Instanzen des Attributs in den Index aufgenommen, nicht nur die Instanzen, die einer bestimmten Klasse angehören. Die Indizierung von Attributen, insbesondere von mehrwertigen Attributen, kann sich negativ auf die Replikations- und Objekterstellungszeiten sowie auf die Größe der Verzeichnisdatenbank auswirken. Daher sollten Sie nur häufig verwendete Attribute indizieren.
Weitere allgemeine Informationen (möglicherweise in englischer Sprache) zu Schemas finden Sie im Artikel zum Active Directory-Schema (