Distinguished Name
Distinguished Name (DN, рус. «отличительное имя») — это строка символов, однозначно идентифицирующая конкретного субъекта (пользователя, сервер, устройство, организацию) в иерархической системе каталогов, основанной на протоколе X.500 и его облегчённом варианте LDAP (Lightweight Directory Access Protocol). DN представляет собой последовательность атрибутов, каждый из которых описывает один уровень иерархии, от самого общего к самому конкретному, и используется для точного адресования записи в распределённой базе данных, такой как Microsoft Active Directory, OpenLDAP или каталог сертификатов X.509.
История и контекст возникновения
Протокол X.500, разработанный Международным союзом электросвязи (ITU-T) в конце 1980-х годов, стал первой попыткой создания глобальной системы каталогов, аналогичной телефонному справочнику для компьютерных сетей. X.500 определял сложную иерархическую структуру записей, где каждая запись имела уникальный путь. Однако из-за громоздкости и требовательности к ресурсам X.500 не получил широкого распространения в интернете. В середине 1990-х годов появился LDAP, упрощённый протокол доступа к каталогам, который сохранил основную идею именования записей через Distinguished Name.
Структура DN была заимствована из X.500 и адаптирована для LDAP. Также DN активно применяется в инфраструктуре открытых ключей (PKI), где каждому цифровому сертификату X.509 присваивается Distinguished Name владельца (Subject DN) и издателя (Issuer DN). Это позволило однозначно связывать сертификат с конкретным субъектом или устройством в иерархии доверия.
Структура и синтаксис Distinguished Name
Distinguished Name состоит из последовательности пар «атрибут=значение», разделённых запятыми (,). Порядок атрибутов — от самого конкретного (крайнего правого элемента) к самому общему (крайнего левого), однако на практике в LDAP-каталогах часто используется обратный порядок, где наиболее общий атрибут идёт первым справа. В стандарте RFC 4514 (формат LDAP-имен) атрибуты перечисляются слева направо в порядке возрастания иерархии.
Типовые атрибуты, используемые в DN:
- CN (Common Name) — общее имя субъекта. Для человека — ФИО; для устройства — сетевое имя (например,
server.example.com). - OU (Organizational Unit) — подразделение организации (отдел, группа).
- O (Organization) — название организации.
- L (Locality) — населённый пункт (город).
- ST (State) — штат, область или край.
- C (Country) — страна (двухбуквенный код ISO 3166-1 alpha-2).
- DC (Domain Component) — компоненты DNS-домена. Используется в Active Directory в качестве альтернативы O/OU для построения иерархии по доменному имени (
DC=example,DC=com). - UID (User Identifier) — уникальный идентификатор пользователя.
- E или Email — электронная почта (в некоторых реализациях).
Пример DN субъекта в Active Directory:
CN=Иванов Иван Петрович,OU=Отдел разработки,OU=Департамент информационных технологий,DC=example,DC=com
Здесь DC=example,DC=com задаёт корень дерева (домен example.com), далее два подразделения, затем CN — конкретная учётная запись.
Различие между Relative Distinguished Name и Distinguished Name
Каждая запись в LDAP-каталоге имеет свой Relative Distinguished Name (RDN) — это один атрибут, который однозначно идентифицирует запись внутри своего родительского контейнера. Например, для записи выше RDN — CN=Иванов Иван Петрович. Полный же DN строится как цепочка RDN всех предков, начиная от корня каталога. В Active Directory почти все RDN являются именами (CN) или компонентами домена (DC), тогда как в OpenLDAP типичны UID или CN.
Использование в Active Directory
В среде Microsoft Active Directory Distinguished Name является основным способом обращения к объектам через LDAP-протокол и через ADSI (Active Directory Service Interfaces). DN хранится в атрибуте distinguishedName для каждого объекта. Однако при выводе пользователю (например, в оснастках управления) чаще отображается «относительное имя» или просто имя учётной записи (SAM-имя), так как DN может быть длинным и неудобным для восприятия.
При создании учётной записи администратор обычно указывает контейнер (OU), и система автоматически формирует DN, добавляя RDN к DN родительского контейнера. Изменение родительского контейнера (перемещение объекта) приводит к изменению его DN.
Использование в сертификатах X.509
Каждый цифровой сертификат, соответствующий стандарту X.509 (например, SSL/TLS-сертификаты, сертификаты подписи ЭЦП), содержит поля Subject (DN владельца) и Issuer (DN издателя). DN в сертификате обычно состоит из следующих атрибутов: CN, O, OU, L, ST, C. Для проверки цепочки доверия система сопоставляет DN издателя корневого сертификата с DN издателя подчинённого. Если они не совпадают, цепочка считается нарушенной.
Пример DN Subject в сертификате SSL-сайта:
CN=www.example.com, OU=Web Services, O=Example Inc., L=San Francisco, ST=California, C=US
При обращении к сайту браузер проверяет, что имя в поле CN (или альтернативных именах) совпадает с доменом в адресной строке.
Правила кодирования и экранирования
Согласно RFC 4514, значения атрибутов в DN могут содержать специальные символы, такие как запятая (;), знак плюс (+), кавычки ("), обратная косая черта (\), знак равенства (=) и пробелы в начале/конце. Для корректного парсинга эти символы экранируются обратной косой чертой (\). Например, DN для пользователя с фамилией «Смит, Джон» будет выглядеть как:
CN=Смит\, Джон,OU=Отдел,DC=example,DC=com
Пробелы в конце или начале значения также экранируются (например, CN=\ Иван\ ). Существуют также более длинные строки с экранированием в двоичном представлении, но на практике для российских LDAP-каталогов редко встречаются сложные символы, кроме запятых и точек.
Проблемы и ограничения
- Длина DN. В Active Directory длина DN не должна превышать 10 000 символов. В сложных иерархиях с глубокой вложенностью OU это может стать проблемой, хотя на практике превышение встречается редко.
- Изменяемость. DN объекта может измениться при перемещении в другой контейнер. Это приводит к тому, что ссылки на объект по DN (например, в скриптах ACL) устаревают. Для идентификации уникальных объектов в LDAP существуют альтернативы: GUID (глобально уникальный идентификатор, не меняется при перемещении) и SID (идентификатор безопасности в Active Directory).
- Сложность для человека. DN — машинно-ориентированный формат, неудобный для ввода вручную. Администраторы предпочитают использовать графические интерфейсы или LDAP-запросы с фильтрами по другим атрибутам (например,
sAMAccountNameв Active Directory). - Неоднозначность атрибутов. Разные реализации LDAP могут использовать разные наборы атрибутов для построения DN. Например, в некоторых каталогах может отсутствовать атрибут
OU, и иерархия строится только наDCиCN. Это усложняет перенос данных между каталогами.
Сравнение со схемами адресации
Distinguished Name является частным случаем иерархической адресации, характерной для систем, основанных на X.500. В отличие от IP-адреса (плоская или иерархическая сетевая адресация) или URL (веб-адресация, основанная на доменном имени и пути), DN адресует запись в контексте каталога учётных записей и ресурсов. Он может содержать DNS-подобные компоненты (DC), но не предназначен для работы через DNS напрямую. В Active Directory существует интеграция DNS и LDAP, где DN может быть получен из полного квалифицированного доменного имени (FQDN), но обратное преобразование не тривиально.
Интересные факты
- В российских каталогах Active Directory часто встречаются DN с кириллическими значениями, что иногда создаёт проблемы совместимости со старым программным обеспечением, не поддерживающим Unicode.
- Кроме стандартных атрибутов, в DN могут использоваться расширения, определённые в конкретной схеме LDAP (например,
unstructuredNameилиbusinessCategory). - В некоторых документах RFC Distinguished Name также называют «путьом» или «различающимся именем».
Источники
- RFC 4514 — Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names (2006).
- ITU-T Recommendation X.521 — Information technology — Open Systems Interconnection — The Directory: Selected Attribute Types (2016).
- Microsoft Docs — «Distinguished Names» (Active Directory Technical Reference, 2020).
- RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (2008).
- «LDAP: Programming Directory-Enabled Applications with Lightweight Directory Access Protocol» — T. Howes, M. Smith (2001, Addison-Wesley) — разделы по DN и синтаксису.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →