Почему пользователи компьютеров в Active Directory?

Почему компьютерные аккаунты в Active Directory имеют objectClass:user?

При работе с Active Directory (AD) вы можете заметить, что компьютерные учетные записи отображаются с классом объектов user. Такое поведение может вызвать вопросы, ведь компьютеры и пользователи — разные сущности. Рассмотрим, почему так происходит и как правильно фильтровать записи в LDAP-запросах.


LDAP-запрос к Active Directory для получения пользователей

Пример LDAP-запроса, который позволяет получить объекты с классом user в домене "itdrde.local":

bash
ldapsearch -H ldap://$ad_ip:389 -x -D $ad_user -w $ad_password -b "DC=itdrde,DC=local" \
-s sub -a always -z 1000 "(objectClass=user)" "serviceClassName" "serviceDNSName" "objectClass"

Результатом этого запроса становятся учетные записи пользователей и компьютеров с атрибутом objectClass:user.


Почему компьютеры имеют objectClass:user?

Компьютерные аккаунты в Active Directory ведут себя очень похоже на учетные записи пользователей:

  • У них есть пароли и ключи Kerberos, как у обычных пользователей.
  • Им присвоены уникальные идентификаторы безопасности (SID).
  • Они могут быть членами групп и иметь права доступа, назначаемые в списках контроля доступа (ACL).

Класс объекта computer на самом деле является потомком класса user. Исторически это связано с обратной совместимостью с предыдущими технологиями Windows NT. В доменах Windows NT (NetBIOS) компьютерные учетные записи представлялись как специальные типы пользователей — "workstation trust accounts". В Active Directory это наследие сохранилось и определяется через атрибут userAccountControl.


Атрибут userAccountControl и фильтрация по типу аккаунта

Для разграничения пользователей и компьютеров в LDAP можно использовать фильтрацию по флагам в атрибуте userAccountControl. Основные значения:

  • 512 (NORMAL_ACCOUNT) — обычные пользователи.
  • 4096 (WORKSTATION_TRUST_ACCOUNT) — аккаунты рабочих станций (компьютеров).
  • 8192 (SERVER_TRUST_ACCOUNT) — контроллеры домена.

Пример фильтра для выбора только обычных пользователей:

ldap
(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=512))

Для выбора компьютерных аккаунтов можно использовать фильтр с флагом 4096.


Особенности фильтрации с использованием objectCategory

Иногда предлагается использовать фильтр по атрибуту objectCategory=person для выбора пользователей, но это не всегда точно. Например, междоменные доверительные аккаунты тоже могут попадать под этот фильтр.

Поэтому наилучший способ точно разделить пользователей и компьютеры — фильтрация по userAccountControl.


Заключение

Ответ на вопрос, почему в Active Directory компьютерные объекты имеют класс user, кроется в исторической совместимости и архитектуре AD. Они по сути являются специализированными учетными записями пользователей с уникальным типом, который определяется через атрибуты, а не через отдельный класс. Для точного разделения объектов рекомендуется использовать фильтры по атрибуту userAccountControl.


Ключевые слова для SEO: Active Directory, LDAP-запрос, objectClass user, userAccountControl, компьютерные аккаунты, фильтрация LDAP, учетные записи пользователей, компьютер в AD, LDAP фильтры, Windows NT, WORKSTATION_TRUST_ACCOUNT.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *