После того как с помощью DNS нужный
контроллер домена обнаружен, для доступа к данным Active Directory используется
протокол LDAP. Как и DNS, LDAP — это стандарт, разработанный консорциумом IETF
и происходящий от сложной, но не используемой широко службы каталогов Х.500,
созданной в середине 80-х годов. Active Directory поддерживает не только версию
2 протокола LDAP, описанную в RFC 1777, но и версию 3, рассматриваемую в RFC
2251. В настоящее время практически все фирмы-поставщики служб каталогов предлагают
LDAP-совместимые продукты, поэтому клиенты LDAP сторонних поставщиков могут
обращаться к LDAP-серверу Active Directory. Протокол LDAP работает поверх TCP/IP
и — как следует из названия протокола — определяет способы доступа к каталогу
со стороны клиентов. Помимо механизма доступа данный протокол реализует соглашения
по именованию информации в каталоге, в явном виде описывая структуру этой информации.
Для клиента все данные, хранящиеся в базе LDAP, представляются в виде иерархического
дерева. Каждый узел дерева (объект или элемент) может быть либо контейнером
Каждый элемент (контейнер или лист) представляет собой некоторый объектный класс, определяющий атрибуты (называемые также свойствами) данного элемента. Поскольку атрибуты есть и у контейнеров, и у листьев, информация, хранящаяся в дереве каталога, распределена по всем узлам. Тип информации (объектные классы и типы атрибутов), содержащейся в конкретной базе данных Active Directory, задается схемой, определенной для этого каталога. В Active Directory схема каждого каталога представлена элементами, хранящимися непосредственно в самом каталоге. Компания Microsoft определяет стандартную схему, однако пользователи и разработчики программных средств могут добавлять новые классы и типы атрибутов. Изменение схемы каталога — полезная возможность, которой нужно пользоваться очень осторожно, поскольку такие изменения могут иметь весьма значительные последствия.
Схема Active Directory достаточно сложна и содержит сотни и сотни объектных классов и типов атрибутов. Ниже для примера перечислены некоторые интересные классы:
|
user — описывает конкретного пользователя домена. Среди атрибутов этого класса: canonicalName (Каноническое имя), userPrincipalName (Полное имя пользователя), homePostalAddress (Домашний почтовый адрес), telephoneNumber (Номер телефона), thumbnailPhoto (Фотография). |
|
printQueue — позволяет клиенту находить некоторый принтер. Среди атрибутов: location (Местоположение), printStatus (Состояние принтера) и printLanguage (Язык принтера). |
|
compoter — идентифицирует некоторый компьютер домена. Среди множества атрибутов этого класса: operatingSystem (Операционная система), operatingSystemServicePack, dNSHostName (DNS-имя хоста) и machineRole (Назначение компьютера; этот атрибут указывает, является ли данный компьютер контроллером домена, рядовым сервером или рабочей станцией). |
|
organizationalUnit — описывает подразделения конкретного домена. Самый важный.атрибут— ои (Имя организационной единицы). Организационные единицы играют очень важную роль при структурировании информации, внутри домена (это будет описано чуть позже). |
Каждый элемент Active Directory и каждый атрибут любого элемента имеют список управления доступом (ACL), который определяет права и возможности пользователей в отношении доступа к конкретным элементам и атрибутам. Например, список ACL может позволить одним пользователям читать атрибуты некоторого элемента, другим пользователям — читать и изменять некоторые из атрибутов, а остальным — запретить какой-либо доступ к элементу. Эффективное управление доступом невозможно без достоверной аутентификации клиентов, Active Directory использует для этой цели протокол Kerberos. (Kerberos — стандарт, созданный консорциумом IETF и поддерживаемый многими поставщиками; ключевая технология для обеспечения распределенной безопасности Windows XP.)