Служба каталогов

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

Описание

Службу каталогов не следует путать с репозиторием каталогов, который представляет собой базу данных, содержащую информацию об объектах имен, управляемую службой каталогов. В случае модели распределённой службы каталогов X.500 используется одно или несколько пространств имён для формирования службы каталогов. Служба каталогов предоставляет интерфейс для доступа к данным в одном или нескольких пространствах имён каталога. Этот интерфейс отвечает за безопасное управление аутентификацией при доступе к сервису, выступая центральным органом для предоставления доступа к системным ресурсам, связанным с данными каталога.

Как база данных, служба каталогов оптимизирована для чтения и обеспечивает развитые возможности поиска по различным атрибутам объектов каталога. Хранимые в каталоге данные определяются расширяемой и модифицируемой схемой. Службы каталогов используют распределённую модель хранения информации, причём данные обычно реплицируются между серверами, составляющими каталог.

Простая служба каталогов может выполнять роль службы имён, сопоставляя имена сетевых ресурсов с их сетевыми адресами. Благодаря такой службе пользователь может обращаться к нужному ресурсу, зная только его имя, и не запоминая физический адрес. Каждый сетевой ресурс рассматривается как объект на сервере каталогов, причём информация о конкретном ресурсе хранится в виде атрибутов этого объекта. Доступ к объектам осуществляется только пользователями с соответствующими правами, что гарантирует безопасность работы. Более сложные службы каталогов предусматривают множество функций и настроек, позволяющих гибко управлять информацией в каталоге в зависимости от потребностей администратора.

Служба каталогов определяет пространство имён сети — совокупность объектов, выступающих в качестве именованных записей. Процесс проектирования каталога включает набор правил, определяющих порядок назначения и идентификации сетевых ресурсов. Эти правила обеспечивают уникальность и однозначность имён. В X.500 и LDAP уникальное имя объекта называется distinguished name (DN, уникальное имя) и используется для однозначного обращения к записи.

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

Понятия репликации и распределения имеют принципиально разные значения в проектировании и администрировании службы каталогов. Репликация означает копирование того же пространства имён (тех же объектов) на другой сервер каталогов для повышения отказоустойчивости и производительности — такое пространство имён управляется одной и той же административной сущностью. Распределение подразумевает наличие нескольких серверов каталогов, формирующих распределённую службу с разными (но связанными) пространствами имён, каждое из которых может обслуживаться собственной администрацией.

Сравнение с реляционной базой данных

Существует ряд существенных различий между традиционной службой каталогов и реляционной базой данных.

  • Как правило, информация в каталоге чаще читается, чем записывается, поэтому транзакции и функции восстановления реализованы не во всех системах каталогов. Данные зачастую избыточны, а приоритет отдаётся быстрой обработке запросов на поиск.
  • Данные организованы в строго иерархическую структуру, что иногда создаёт сложности. Для оптимизации поиска при глубокой иерархии некоторые каталоги отклоняются от жёсткой древовидной структуры — искомые объекты находятся по атрибутам, а затем определяется их положение в пространстве имён, поскольку такой подход быстрее, чем последовательный обход иерархии. По кардинальности традиционные каталоги, как правило, не поддерживают множественные связи между сущностями. Такие отношения реализуются посредством списков имён или других идентификаторов (похожим образом связующие таблицы используются в реляционных СУБД).
  • Изначально иерархическая структура каталога X.500 считалась проблемной по сравнению с реляционными моделями данных. Однако в настоящее время появились объектно-ориентированные СУБД (например, на Java), а также XML-модели с древовидной структурой, что отражает эволюцию классической обработки данных.
  • Схема определения данных включает классы объектов, атрибуты, ссылки и структуру пространства имён.
  • Классы объектов подразделяют:
    • Обязательные атрибуты — каждый экземпляр должен их иметь;
    • Необязательные атрибуты — могут указываться у экземпляра, но могут и отсутствовать. Отсутствие атрибута аналогично значению NULL в реляционных СУБД.
  • Мультизначные атрибуты позволяют, например, объединить типы устройств и серийные номера или хранить несколько рабочих телефонов («рабочий телефон»).
  • Атрибуты и классы объектов стандартизированы на уровне отрасли и официально регистрируются IANA, что упрощает разработку совместимых серверов каталогов.
  • Экземпляры объектов располагаются в пространстве каталога, причём каждый класс наследует атрибуты от родителя (в конечном счёте от корня иерархии), добавляя собственные обязательные/необязательные поля.
  • Службы каталогов часто являются ключевым элементом систем безопасности в ИТ-инфраструктурах — они обеспечивают детальное разграничение прав доступа вплоть до отдельных данных.

Проектирование каталога заметно отличается от проектирования реляционной СУБД. В основанных на СУБД системах данные моделируются под бизнес-процессы, деятельность клиентов, сервисов и администраторов, иногда не охватывая масштабы системы или её отказоустойчивость. В каталогах же ключевым становится вопрос представления информации для многих задач и пользователей в рамках единого репозитория — схема и структура (идентификация) должны соответствовать реальности. Обычно такие объекты описывают пользователей, справочники, списки, права, продукты и сервисы, устройства, профили, политики, телефонные номера, маршруты и др. Важно также учитывать эксплуатационные требования по масштабируемости и эффективности, например рассчитать поддерживаемую нагрузку — миллион пользователей, по 50 объектов на каждого, с доступом к приложениям до 5000 запросов в секунду, минуту или час.

Главное отличие службы каталогов от базы данных — уровень использования: СУБД предназначены для автоматизации конкретного процесса с заданной структурой данных, тогда как каталог используется для идентификации и описания объектов, пригодных для разных целей. Служба каталогов применима для совместного использования (разными приложениями и пользователями) одних и тех же данных — это обеспечивает масштабируемость и гибкость крупных информационных систем и платформ предоставления сервисов. Крупные корпорации зачастую имеют сотни и тысячи разных проектов СУБД, а сейчас на передний план выходит интеграция пользовательских и сервисных данных, управление идентичностью пользователей, товарами и услугами в реальном времени при оптимизации расходов.

Развитие служб каталогов

Большинство реализаций основаны на стандарте X.500, который впоследствии лёг в основу протокола LDAP (как более современного и ориентированного на TCP/IP, в отличие от модели OSI), что обеспечило широкое распространение технологий каталогов в Интернет.

Существует множество коммерческих и открытых реализаций служб каталогов:

  • NIS (Network Information Service) — ранее известный как Жёлтые страницы, продукт компании Sun Microsystems, реализующий службу каталогов для UNIX-сетей. После 2000 года Sun объединилась с Netscape в составе iPlanet и инициировала создание платформы LDAP; эта технология легла в основу службы каталогов комплекса Sun ONE, ныне — Sun Java Enterprise.
  • NetIQ eDirectory — продукт, разработанный Novell, поддерживающий различные архитектуры (включая Windows, NetWare, Linux и ряд UNIX-подобных ОС), используемый для управления пользователями, конфигурациями и ПО. Впоследствии стал центральным компонентом ряда решений по управлению идентичностью. Ранее назывался службой каталогов Novell.
  • Red Hat Directory Server — служба каталогов, приобретённая Red Hat у Netscape Security Solutions (AOL) и развиваемая как коммерческий продукт в составе Red Hat Enterprise Linux; часть исходного кода включена в проект Fedora.
  • CentOS Directory Server — основан на Red Hat Directory Server, имеет сходные функции и может устанавливаться через менеджер пакетов yum без заключения коммерческого контракта. Ядро ПО лицензировано под GNU GPL v2 с некоторыми исключениями для интеграции с несвободным ПО.
  • Active Directory — служба каталогов Microsoft, используемая в Windows 2000 и всех серверных версиях Windows Server 2003.
  • Open Directory — служба каталогов в Mac OS X Server от Apple, реализующая ряд открытых стандартов (таких как LDAP и Kerberos) наряду с проприетарными компонентами (Active Directory, eDirectory).
  • Apache Directory Server — служба каталогов, разрабатываемая Apache Software Foundation (проект ApacheDS).
  • Oracle Internet Directory (OID) — решение Oracle Corporation, совместимое с LDAP версии 3.
  • CA Directory — обладает механизмом кэширования и индексирования всех атрибутов, используемых в поисковых фильтрах LDAP, что при достаточном объёме памяти обеспечивает одну из лучших производительностей среди подобных решений[1].
  • Sun Java System Directory Server — служба каталогов от Sun Microsystems[2].
  • OpenDS — следующее поколение открытых LDAP-серверов от Sun Microsystems[3].
  • OpenDJ — после приобретения Sun компанией Oracle был основан проект ForgeRock для продолжения развития открытых технологий каталогов, результаты представлены в OpenDJ.

Также существует множество открытых инструментов для построения служб каталогов — OpenLDAP, Kerberos, программное обеспечение Samba, способное функционировать как контроллер домена на базе протоколов Kerberos и LDAP.

Новое поколение систем каталогов

Развитие баз данных и информационных технологий неразрывно связано с традиционными службами каталогов — за прошедшие 20–30 лет эти решения продолжают эволюционировать. Однако современные интегрированные сервисы и системы, ориентированные на обработку событий в реальном времени, например, телекоммуникационные платформы 3G-IMS, предъявляют новые требования. В этой связи появляются концепции комплексных адаптивных систем каталогов (CADS — Composite Adaptive Directory Services), сочетающих управление идентичностью, поддержкой присутствия, интеллектуальные алгоритмы обработки и возможности адаптации, что принципиально упрощает проектирование таких платформ.

Программное обеспечение для работы со службами каталогов

Среди известных сервисов каталогов можно выделить:

  • Windows NT Directory Services (NTDS) — для Windows NT;
  • Active Directory — для Windows 2000, Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows Server 2016;
  • Open Directory — для серверной версии Mac OS X;
  • Novell eDirectory (ранее — Novell Directory Services, NDS) — для Novell NetWare версий 4.x–5.x;
  • OpenLDAP;
  • 389 Directory Server (с марта 2009; ранее — Fedora Directory Server);
  • Sun Directory Services.

Примечания

Литература

  • Carter, Gerald (2003). LDAP System Administration. O'Reilly. ISBN 1-56592-491-6.