Листья и контейнеры LDAP
После того как с помощью 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, представляются в виде иерархического дерева. Каждый узел дерева (объект или элемент) может быть либо контейнером (container), либо листом (leaf). Различие между ними вполне очевидно: контейнеры могут содержать другие элементы, а листья – нет.
Каждый элемент (контейнер или лист) представляет собой некоторый объектный класс, определяющий атрибуты (называемые также свойствами) данного элемента. Поскольку атрибуты есть и у контейнеров, и у листьев, информация, хранящаяся в дереве каталога, распределена по всем узлам. Тип информации (объектные классы и типы атрибутов), содержащейся в конкретной базе данных Active Directory, задается схемой, определенной для этого каталога. В Active Directory схема каждого каталога представлена элементами, хранящимися непосредственно в самом каталоге. Компания Microsoft определяет стандартную схему, однако пользователи и разработчики программных средств могут добавлять новые классы и типы атрибутов. Изменение схемы каталога – полезная возможность, которой нужно пользоваться очень осторожно, поскольку такие изменения могут иметь весьма значительные последствия.
Схема Active Directory достаточно сложна и содержит сотни и сотни объектных классов и типов атрибутов. Ниже для примера перечислены некоторые интересные классы:
- user – описывает конкретного пользователя домена. Среди атрибутов этого класса: canonicalName (Каноническое имя), userPrincipalName (Полное имя пользователя), homePostalAddress (Домашний почтовый адрес), telephoneNumber (Номер телефона), thumbnailPhoto (Фотография).
- printQueue – позволяет клиенту находить некоторый принтер. Среди атрибутов: location (Местоположение), printStatus (Состояние принтера) и printLanguage (Язык принтера).
- compoter – идентифицирует некоторый компьютер домена. Среди множества атрибутов этого класса: operatingSystem (Операционная система), operatingSystemServicePack, dNSHostName (DNS-имя хоста) и machineRole (Назначение компьютера; этот атрибут указывает, является ли данный компьютер контроллером домена, рядовым сервером или рабочей станцией).
- organizationalUnit – описывает подразделения конкретного домена. Самый важный атрибут – оu (Имя организационной единицы). Организационные единицы играют очень важную роль при структурировании информации, внутри домена (это будет описано чуть позже).
Каждый элемент Active Directory и каждый атрибут любого элемента имеют список управления доступом (ACL), который определяет права и возможности пользователей в отношении доступа к конкретным элементам и атрибутам. Например, список ACL может позволить одним пользователям читать атрибуты некоторого элемента, другим пользователям – читать и изменять некоторые из атрибутов, а остальным – запретить какой-либо доступ к элементу. Эффективное управление доступом невозможно без достоверной аутентификации клиентов, Active Directory использует для этой цели протокол Kerberos. (Kerberos – стандарт, созданный консорциумом IETF и поддерживаемый многими поставщиками; ключевая технология для обеспечения распределенной безопасности Windows 2000.)