Схема
С помощью классов и атрибутов объектов схема ADAM (Active Directory Application Mode) определяет типы объектов и данных, которые могут создаваться и храниться в каталоге ADAM. Каждый набор конфигурации ADAM имеет собственную независимо управляемую схему, которая хранится в разделе каталога схемы. В соответствии с концепцией ADAM, предполагающей простоту и гибкость структуры, базовая схема ADAM (или схема по умолчанию) содержит только классы и атрибуты, необходимые для запуска экземпляра ADAM. Схема может быть расширена с помощью новых классов и атрибутов администраторами либо самими приложениями. Кроме того, ненужные классы и атрибуты схемы можно деактивировать. Как и любые другие объекты каталога, объекты схемы защищены списками управления доступом (ACL), благодаря чему только авторизованные пользователи имеют возможность изменять схему. Каждый объект в каталоге ADAM представляет собой экземпляр класса объектов, заданного в схеме, как показано на следующем рисунке.
Классы объектов
Класс объектов представляет категорию объектов (таких как пользователи, принтеры или приложения) с общим набором характеристик. Определение каждого класса объектов содержит список атрибутов, которые можно использовать для описания экземпляров этого класса. Например, класс User имеет такие атрибуты, как givenName, surname и streetAddress. Список атрибутов класса разделяется на атрибуты, обязательные для объекта данного класса, и на дополнительные атрибуты, которые может содержать объект. В определении каждого класса также указываются классы, объекты которых могут являться родительскими по отношению к объектам данного класса.
В следующей таблице приведено определение пользовательского класса ADAM.
Атрибут | Значение |
---|---|
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 |
Пользователь; |
adminDescription |
Пользователь; |
objectClassCategory |
1; |
lDAPDisplayName |
user; |
name |
Пользователь; |
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; |
Атрибуты
В схеме также определен каждый атрибут. Определение каждого атрибута включает уникальные идентификаторы атрибута, синтаксис, необязательные границы диапазона значений атрибута, а также указание, может ли атрибут содержать несколько или только одно значение и является ли он индексируемым. Каждый атрибут определен в схеме каталога один раз. На каждый атрибут, определенный в схеме, может ссылаться несколько классов объектов. Например, атрибут description определен один раз, и на него ссылается множество классов объектов.
В следующей таблице приведено определение атрибута 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 стандартное тихоокеанское время, тихоокеанское летнее время; |
whenChanged |
11/12/2002 13 |
22 |
14 стандартное тихоокеанское время, тихоокеанское летнее время; |
uSNCreated |
217; |
attributeID |
2.5.4.20; |
attributeSyntax |
2.5.5.12; |
isSingleValued |
ИСТИНА; |
rangeLower |
1; |
rangeUpper |
64; |
uSNChanged |
217; |
showInAdvancedViewOnly |
ИСТИНА; |
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 |
ЛОЖЬ; |
systemFlags |
0x10 = ( FLAG_SCHEMA_BASE_OBJECT ); |
isMemberOfPartialAttributeSet |
ИСТИНА; |
objectCategory |
CN=Attribute-Schema,CN=Schema,CN=Configuration; |
Однозначные и многозначные атрибуты
Атрибуты могут быть однозначными или многозначными. Экземпляр однозначного атрибута может содержать только одно значение. Экземпляр многозначного атрибута может содержать несколько значений, использующих общий синтаксис. Каждое значение многозначного атрибута должно быть уникальным.
Примечание | |
Значения многозначного атрибута хранятся в произвольном порядке. Поэтому при работе с каталогом (программным способом или вручную) не следует принимать решения, основываясь на порядке значений многозначного атрибута. |
Индексированные атрибуты
Индексирование атрибутов помогает оптимизировать скорость обработки запросов, основанных на индексированном атрибуте. Индексироваться могут как однозначные, так и многозначные атрибуты; классы индексироваться не могут. Атрибуты могут помечаться для индексирования через соответствующее определение схемы. Индексирование атрибута также позволяет пользователям задавать подстановочные знаки (*) в качестве префиксов и суффиксов в строке поиска. Когда атрибут отмечен как индексированный, все экземпляры атрибута добавляются в индекс, а не только экземпляры, являющиеся членами определенного класса. Индексирование атрибутов, особенно многозначных, может увеличить время репликации и создания объектов, а также размер базы данных. Поэтому следует индексировать только часто используемые атрибуты.
Общие сведения о схемах см. в разделе, посвященном схеме Active Directory, на веб-узле Microsoft MSDN.