Стандартная схема службы каталогов Active Directory (AD), поставляемая с Windows 2000, включает в себя широкий набор объектов, необходимых для решения большинства задач. Однако если стандартные описания классов и атрибутов не отвечают требованиям конкретной организации, можно расширить схему AD путем добавления новых или изменения существующих объектов.

Изменение схемы можно производить программно, экспортируя объекты в пакетном режиме посредством служебных программ LDIF Directory Exchange (LDIFDE) и CSV Directory Exchange (CSVDE), а также с помощью сценариев Active Directory Service Interfaces (ADSI). Эти средства автоматически устанавливаются на все серверы Windows 2000. Кроме того, можно изменить схему в графическом режиме, используя консоль ADSI Edit или оснастку Active Directory Schema.

Следует также отметить, что возможность расширения схемы чаще используется разработчиками программных продуктов, нежели системными администраторами, поскольку добавление нового объекта вовсе не означает, что можно будет сразу же воспользоваться им в удобном графическом режиме. Чтобы создать интерфейс, позволяющий задействовать этот объект, необходимо иметь опыт программирования. Большинство существующих в стандартном наборе объектов также недоступно через графический интерфейс. Как пример использования возможности расширения схемы AD можно вспомнить программный продукт Microsoft Exchange Server 2000. При его установке в схему AD добавляется множество объектов, часть из которых доступна через графический интерфейс в оснастке AD Users and Computers.

Приступая к изменению схемы, нужно помнить о том, что это может привести к серьезным неполадкам в работе всего каталога, вплоть до полного выведения его из строя. Многие коррективы в схеме отменить будет уже нельзя. В лучшем случае вновь созданные объекты можно будет только отключить. Часто ошибки, связанные с обновлением схемы, обнаруживаются не сразу, поэтому не рекомендуется вносить в схему какие-либо изменения без крайней необходимости.

Общие сведения о схеме AD

Схема состоит из набора классов, атрибутов и синтаксисов.

Класс (сlass) — это категория объектов, которые имеют сходные характеристики и являются формальным описанием дискретных, идентифицируемых типов объектов. Каждый объект в каталоге представляет собой один или несколько определенных в схеме классов.

Атрибуты (attribute) — это описания отдельных свойств объектов, определяющие типы информации, которую может содержать объект. Атрибуты каждого класса могут быть обязательными и дополнительными. В совокупности они составляют полный набор характеристик класса.

Синтаксис (syntax) — это тип данных атрибута. В AD используется только набор стандартных синтаксисов, расширить который невозможно.

Примеры классов AD: user, group и computer. В частности, учетные записи пользователей Ivan и Anna — это два объекта в каталоге, которые являются экземплярами класса user. Объект Ivan может содержать дополнительный, определенный для данного класса атрибут telexNumber (номер телекса): значение этого атрибута — 123-0432, а синтаксис telexNumber — это строка чисел, содержащая только цифры от 0 до 9.

Поскольку мы здесь рассматриваем возможности расширения схемы стандартными методами, из нескольких вариантов будет рассмотрен один, наиболее удобный, с привычным графическим интерфейсом, посредством оснастки Active Directory Schema. По умолчанию эта оснастка при инсталляции системы не устанавливается, поэтому ее надо создать через консоль MMC, предварительно установив пакет средств администрирования Adminpak.msi.

Как уже говорилось выше, редактирование каталога — шаг очень ответственный. Поэтому в Windows 2000 для предотвращения случайных изменений схемы предусмотрено три ограничения:

  • правом редактирования обладают только члены группы Schema Admins;
  • по умолчанию изменение схемы запрещено на всех контроллерах домена;
  • обновление схемы возможно только на одном контроллере домена - исполнителе роли хозяина схемы.

Снять запрет на изменение схемы можно через оснастку Active Directory Schema. Для этого в дереве на левой панели консоли, нажав правой кнопкой мыши на Active Directory Schema, необходимо выбрать команду Operations Master и установить флажок The Schema may be modified on this server («Схема может быть изменена на этом контроллере домена»).

Перед добавлением новых объектов схемы следует тщательно изучить уже существующие стандартные наборы. Так, открыв контейнер Classes в оснастке Active Directory Schema, можно посмотреть, какие имеются классы и из каких атрибутов они созданы, а открыв контейнер Attributes, изучить все имеющиеся атрибуты и их свойства.

Создание атрибута

Если среди стандартных атрибутов ни одного подходящего для вашей схемы не окажется, необходимо, щелкнув правой кнопкой мыши на контейнере Attributes, выбрать команду Create Attributte. В открывшемся окне (см. Экран 1) потребуется внести следующие параметры будущего атрибута:

  • Common Name (общее имя) - здесь необходимо задать имя будущего атрибута;
  • LDAP Display Name (выводимое имя LDAP) - как правило, оно совпадает с общим именем и состоит из одного-двух слов, не разделенных пробелом;
  • Unique X500 Object ID (Х500-код объекта) - уникальный код объекта, выдаваемый различными центрами сертификации. Данный код обеспечивает уникальность объекта и отсутствие конфликтов при объединении разных каталогов, например Active Directory и Novell Directory Services, а также при использовании различных программных продуктов, где применяется один и тот же набор объектов. Если планируется объединять и импортировать данные различных каталогов или же создавать приложения, поддерживающие эталонную модель Open Systems Interconnection (OSI), необходимо послать запрос на получение кода объекта в корпорацию Microsoft или другой центр сертификации. Если же использование нового объекта не будет выходить за рамки организации, то код можно создать самим или сгенерировать при помощи утилиты oidgen.exe, входящей в состав Windows 2000 Resource Kit. Построение кода основано на древовидной структуре, в которой высший центр сертификации делегирует полномочия на выдачу кодов подчиненным центрам. Например, корпорация Microsoft приобрела корневой код объектов 1.2.840.113556 и управляет нижележащими кодами самостоятельно. Значения компонентов кода объекта (например, стандартного атрибута UserParametrs 1.2.840.113556.1.4.138) следующие:
  • 1 - ISO (корневой центр сертификации) выдал код 1.2 для ANSI (American National Standards Institute - Американский национальный институт стандартов);
  • 2 - ANSI в свою очередь выдал код 1.2.840 для США;
  • 840 - США выдали код 1.2.840.113556 для Microsoft;
  • 113556 - Microsoft управляет несколькими ветвями кодов объектов, начиная с номера 1.2.840.113556, среди которых: 1 - Active Directory; 4 - ветвь Attributes (5 - ветвь Classes); 138 - значение атрибута UserParameters.
Экран 1. Создание атрибута объекта.

Таким образом, при самостоятельном создании уникального объекта в рамках своей организации можно задать значение 1.2.840.113556.1.4.x для атрибутов и 1.2.840.113556.1.5.x для классов, где x — любое число, обычно большее 7000 (как гарантия уникальности).

Параметр Sintax выбирается из стандартного набора Windows 2000 и зависит от назначения атрибута, его отображения в памяти, порядка байт и правил сравнения однотипных свойств. Здесь же определяются значения атрибута: строка, число или единица времени.

Далее следует указать минимальную и максимальную длину строки и при необходимости отметить, что атрибут многозначный. Такой атрибут может принимать более одного значения, однако набор значений будет не упорядочен, и нет гарантии, что многозначные атрибуты будут возвращаться в порядке их записи или в любом другом порядке.

Экран 2. Просмотр свойств созданного атрибута.

После того как новый атрибут создан, находим его в контейнере Attributes и вызываем свойства (см. Экран 2). Здесь необходимо задать Description («Описание») атрибута, а также можно указать ряд других параметров, таких, как необходимость индексировать этот атрибут в AD и реплицировать его в глобальный каталог. Здесь же расположена еще одна важная функция — отключение данного атрибута, в случае некорректной работы схемы. Однако следует помнить, что стандартные объекты схемы отключить нельзя. Теперь созданный атрибут можно добавлять в существующие или вновь создаваемые классы.

Добавление класса

Существует три способа эффективного добавления новых классов.

  • Расширение имеющегося класса путем добавления атрибутов или дополнительных допустимых классов-родителей. В роли родителя может выступать любой из существующих классов, от которого вновь создаваемый класс унаследует все обязательные и дополнительные атрибуты.
  • Порождение нового подкласса от имеющегося класса. Такой подкласс имеет все атрибуты исходного класса, а также любые указанные дополнительные атрибуты.
  • Создание нового класса с необходимыми атрибутами.

Для создания нового класса следует щелкнуть правой кнопкой мыши на контейнере Classes в оснастке Active Directory Schema и выбрать команду Create Class. В открывшемся окне Create New Schema Class (см. Экран 3) необходимо, как и в случае создания атрибута, указать имя нового класса и получить в центре сертификации или сгенерировать действительный код объекта.

Экран 3. Создание нового класса.

В строке Inheritance and Type (класс-родитель) при необходимости можно задать класс, от которого создаваемым классом будет унаследована информация.

Параметр Class Type (тип класса) указывает, к какой категории относится создаваемый класс. Существует три варианта категорий класса:

  • Structural (структурный);
  • Abstract (абстрактный);
  • Auxiliary (дополнительный).

Структурные классы — это единственные классы, объекты которых могут существовать в каталоге и являются производными от абстрактных либо от других структурных классов. Структурный класс может содержать в своем определении любое количество дополнительных классов. Абстрактные классы — это шаблоны, используемые только для создания новых структурных классов. Объекты абстрактных классов в каталоге создать нельзя. Новый абстрактный класс создается путем наследования от уже существующего абстрактного класса. Дополнительные классы содержат наборы атрибутов и используются для создания структурных или абстрактных классов. Экземпляры дополнительного класса в каталоге создать нельзя — на основе дополнительных классов разрешается создавать только новые дополнительные классы.

Экран 4. Добавление обязательных и дополнительных атрибутов.

Во втором окне (см. Экран 4) можно во вновь созданный класс добавить обязательные и дополнительные атрибуты. В дальнейшем добавить в созданный класс обязательные атрибуты будет уже нельзя.

Экран 5. Параметры стандартных и созданных классов.

Некоторые параметры стандартных и созданных классов можно изменять, вызвав команду Properties для нужного класса (см. Экран 5). Так, на закладке General («Общие») можно изменить категорию класса и в случае возникновения неполадок схемы данный класс отключить (для стандартных классов эти два параметра недоступны, они существуют лишь для вновь созданных классов). На закладке Relationship («Отношения») к существующему классу можно добавить дополнительные классы для расширения атрибутов, а также указать классы, которые могут назначаться родителями для любого из данных классов.

Закладка Attributes («Атрибуты») позволяет просмотреть обязательные и дополнительные атрибуты данного класса (следует иметь в виду, что унаследованные атрибуты от других классов здесь не отображаются). С помощью этой закладки также можно добавлять дополнительные атрибуты.

Последнее замечание

Все изменения, которые вносятся в схему, отображаются не сразу, а через некоторое время, но не более чем через 5 мин. Связано это с тем, что для ускорения операций поиска кэш схемы размещается в оперативной памяти контроллера домена. При запуске компьютера кэш схемы загружается из базы данных и автоматически обновляется каждый раз, как только происходит изменение версии схемы на диске. Период обновления составляет не более 5 мин после первого внесения изменений в схему.

Олег Погорелый — системный администратор издательства «Открытые системы». С ним можно связаться по адресу: opog@osp.ru.

Поделитесь материалом с коллегами и друзьями