Поиск одинаковых SamAccountName в лесу Active Directory

Обновлено 05.09.2019

ADДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами установили роль Active Directory в Windows Server 2019. Вы продолжаете использовать ваш домен, количество доменов в лесу увеличивается и вы можете столкнуться с ситуацией, что у двух или более пользователей атрибут учетной записи SamAccountName в рамках леса Active Directory одинаковый, и вот при использовании различных сервисов, где используется учетная запись из AD, может быть проблема при авторизации. Сегодня я вас научу находить такие такие дубли, чтобы вы могли их исправить и видеть масштаб проблемы.

Атрибуты samAccountName и UserPrincipalName

Я вам ранее уже писал вводную статью про основные понятия Active Directory и там я разбирал от части атрибуты AD, советую почитать. Очень важными атрибутами учетной записи пользователя являются samAccountName и UserPrincipalName.

Атрибут UserPrincipalName

UserPrincipalName - атрибут является именем для входа пользователя. Атрибут состоит из имени участника-пользователя и UPN суффикса, является наиболее распространенным именем входа для пользователей Windows. Пользователи обычно используют свои UPN для входа в домен. Этот атрибут является индексированной строкой, которая имеет одно значение.

UPN - это имя для входа в Интернет-стиле для пользователя, основанное на стандарте Internet RFC 822. По соглашению это должно соответствовать имени электронной почты пользователя. Смысл UPN состоит в том, чтобы объединить пространства имен электронной почты и входа в систему, чтобы пользователю было необходимо запомнить только одно имя. Пример barboskin.g@root.pyatilistnik.org

Особенности атрибута UserPrincipalName:

  • Значение атрибута UserPrincipalName может соответствовать электронной почте пользователя (и это очень удобно при переносе, настройках профиля и т.д.)
  • Формат идентификатора соответствует стандарту RFC 822
  • Максимальный размер значения UPN не ограничен 20 символами (можно использовать до 256 символов)
  • Атрибут UserPrincipalName, в отличие от samAccountName, является необязательным, но его рекомендуется заполнять.

Атрибут samAccountName

SamAccountName атрибут является регистрационным именем используется для поддержки клиентов и серверов от предыдущей версии Windows, таких как Windows NT 4.0, Windows 95, Windows 98, одним слово обратная совместимость со старым софтом и ОС. Имя для входа должно содержать не более 20 символов и быть уникальным среди всех объектов участников безопасности в домене.

Атрибут samAccountName имеет следующий формат <YOUR_NETBIOS_DOMAIN_NAME>\<USER_name>. Например, мой домен root.pyatilistnik.org использует имя домена NetBIOS ROOT. Таким образом, имя пользователя barboskin.g в формате samAccountName должно выглядеть так: ROOT\barboskin.g

Особенности атрибута samAccountName:

  • Размер значения samAccountName для пользователя не должен превышать 20 символов из-за обратной совместимости (для объекта компьютера максимальный размер samAccountName составляет 16 символов). Если имя учетной записи превышает 20 символов, имя пользователя в атрибуте samAccountName будет усечено;
  • Значение samAccountName должно быть уникальным для всех объектов домена;
  • Переменная среды на компьютере Windows% и USERNAME% содержат значение атрибута samAccountName, а не UserPrincipalName. Значение SamAccountName на компьютере пользователя можно получить с помощью переменной среды USERNAME. Его можно отобразить с помощью команды set в cmd или с помощью gci env: в PowerShell.

Как посмотреть samAccountName и UserPrincipalName

Чтобы увидеть данные атрибуты вам достаточно открыть оснастку ADUC, найти нужного вам пользователя и перейти на вкладку "Учетная запись" тут будет:

  • Имя входа пользователя - это и есть UserPrincipalName barboskin.g@root.pyatilistnik.org
  • Имя входа пользователя (пред-Windows 2000) - это и есть samAccountName ROOT\barboskin.g.

Как посмотреть samAccountName и UserPrincipalName

И так же посмотреть в PowerShell, например вот так:

Get-ADUser -Filter * | FL SamAccountName, UserPrincipalName

samAccountName и UserPrincipalName

Хочу отметить, что значения в атрибутах samAccountName и UserPrincipalName не обязательно должны совпадать на уровне логина.

Как найти дубликаты samAccountName

Предположим, что у меня есть лес с 4-ми доменами и мне вот приспичило вычислить сколько и какие дубли у меня есть по атрибуту samAccountName. Для быстрого выполнения работы я воспользуюсь скриптом PowerShell.

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

.\Find-ADDuplicateAtttribute.ps1 -Forest "root.pyatilistnik.org" -AttributeName samaccountname -ObjectType user

Искать мы будем значения samaccountname для объектов user. У вас появится окно подтверждения выполнения скрипта, соглашаемся нажав клавишу R. Через некоторое время в той папке, где лежит скрипт будет создан csv файл со списком пользователей имеющих одинаковое значение в атрибуте samAccountName.

samAccountName и UserPrincipalName-03

Таким образом вы можете производить поиск по атрибутам UserPrincipalName, samAccountName, mail, upn и многое другое

Ключи для скрипта:

  • Domain задает имя домена для поиска одинаковых значений в Active Directory
  • Forest задает имя леса
  • AttributeName объявляет какие атрибуты нужно сопоставлять и искать дубликаты в базе Active Directory
  • ObjectType - тип объекта, пользователь, компьютер, принтер, OU
  • Path - путь для экспортируемого файла
  • Credential - ввод учетных данных
  • AttributeName - специфическое имя атрибута, например mail

На этом у меня все, мы с вами разобрали назначение атрибутов samAccountName и UserPrincipalName, научились их находить. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Полезные ссылки:

  • https://gallery.technet.microsoft.com/scriptcenter/Find-Active-Directory-c8789b42
  •  https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccountname
  • https://docs.microsoft.com/en-us/windows/win32/ad/naming-properties
  • https://theitbros.com/samaccountname-and-userprincipalname/
Автор - Сёмин Иван

2 Responses to Поиск одинаковых SamAccountName в лесу Active Directory

  1. Light-XP:

    В упор не вижу скрипт, можете ткнуть носом?

  2. Иван Семин:

    Добрый день! Добавил там скрипт в соответствующем разделе

Добавить комментарий

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