Подробный гайд по свойствам пользователя в Active Directory
Данный гайд охватывает структуру, назначение, способы просмотра/редактирования, автоматизацию и лучшие практики работы с атрибутами объектов пользователей в Active Directory (AD DS).
Информация актуальна для Windows Server 2016–2025 и учитывает современные сценарии интеграции с Microsoft Entra ID.
1. Что такое свойства пользователя в AD?
Каждый объект user в AD — это набор атрибутов, определённых в схеме каталога.
Атрибуты хранят:
- Идентификационные данные (
sAMAccountName,userPrincipalName,objectSID) - Состояние учётной записи (
userAccountControl,pwdLastSet,accountExpires) - Организационные и контактные данные
- Настройки профиля, входа, удалённого доступа
- Членство в группах и делегированные права
Важно:
Многие поля в графическом интерфейсе (ADUC) являются лишь «обёрткой» над LDAP-атрибутами. Прямое редактирование схемы или технических атрибутов без понимания контекста может нарушить аутентификацию или репликацию.
2. Вкладки в ADUC и их LDAP-соответствия
Для доступа ко всем вкладкам в dsa.msc включите Вид → Дополнительные компоненты (Advanced Features).
| Вкладка ADUC | Ключевые атрибуты (LDAP-имя) | Назначение |
|---|---|---|
| General | cn, sn, givenName, displayName, description, physicalDeliveryOfficeName, wWWHomePage |
Базовые идентификаторы, ФИО, описание, офис, сайт |
| Address | streetAddress, postOfficeBox, l, st, postalCode, c, co, countryCode |
Почтовый и географический адрес |
| Telephones | telephoneNumber, mobile, facsimileTelephoneNumber, ipPhone, info |
Контакты, заметки |
| Organization | title, department, company, manager |
Должность, отдел, компания, руководитель (DN) |
| Member Of | memberOf (многозначный), primaryGroupID |
Группы, в которые входит пользователь |
| Profile | scriptPath, profilePath, homeDirectory, homeDrive, logonWorkstations |
Скрипты входа, роуминг-профиль, домашний каталог, ограничения по рабочим станциям |
| Environment / Remote Control / Sessions / Terminal Services Profile | msTS*, userParameters |
Унаследованные настройки RDS/Citrix. В современных средах почти не используются, заменены GPO и политиками RDSH. |
| Dial-in | msNPAllowDialin, msRADIUSFramedIPAddress, msRADIUSCallbackNumber |
Права удалённого доступа, параметры RADIUS/NPS |
| Attribute Editor | Все атрибуты схемы | Полное техническое представление. Требует прав на чтение/запись и включённых Advanced Features. |
3. Ключевые технические атрибуты и их значение
| Атрибут | Тип | Описание |
|---|---|---|
sAMAccountName |
String | Логон в домене (≤20 символов, legacy) |
userPrincipalName |
String | UPN (user@domain.com), рекомендуется для современных сервисов |
objectSID |
SID | Уникальный идентификатор безопасности. Не менять вручную. |
userAccountControl |
Integer (битовая маска) | Состояние УЗ. Основные значения: 512 = включена; 514 = отключена; 66048 = включена + пароль не истекает; 66050 = отключена + пароль не истекает; 544 = включена + требует смены пароля при входе |
pwdLastSet |
LargeInteger / FileTime | Дата последнего изменения пароля. 0 = требуется смена. -1 = пароль не истекает |
accountExpires |
LargeInteger | Дата истечения УЗ. 0 или 9223372036854775807 = не истекает |
logonHours |
Octet String | Разрешённые часы входа (битовая карта 21 байт) |
lastLogonTimestamp |
LargeInteger | Приблизительное время последнего входа (реплицируется раз в 14 дней) |
lastLogon |
LargeInteger | Точное время последнего входа (не реплицируется, хранится локально на DC) |
mail |
String | Email-адрес. Часто синхронизируется из Exchange/Entra ID |
manager |
Distinguished Name | DN руководителя. Используется в org-chart и workflow |
4. Как просматривать и изменять свойства
Графический интерфейс (ADUC)
- Откройте
dsa.msc→ Найдите пользователя → Свойства - Для полного доступа к атрибутам: Вид → Дополнительные компоненты → вкладка Attribute Editor
- Изменения применяются сразу, но могут потребовать репликации между контроллерами домена.
ADSI Edit
adsiedit.msc→ Подключение к домену →CN=Users,DC=...→ Свойства объекта- Позволяет редактировать сырые атрибуты. Используйте только при необходимости. Ошибки могут привести к блокировке УЗ или нарушению синхронизации.
PowerShell (модуль ActiveDirectory)
Требуется RSAT или выполнение на сервере с ролью AD DS.
# Получить все свойства пользователя
Get-ADUser -Identity "ivanov" -Properties * | Select-Object -Property sAMAccountName, displayName, userAccountControl, pwdLastSet, manager, memberOf
# Изменить несколько полей
Set-ADUser -Identity "ivanov" `
-Department "IT Infrastructure" `
-Title "Senior Admin" `
-Description "Service account for monitoring" `
-Manager "CN=Petrov,CN=Users,DC=contoso,DC=com"
# Разблокировать учётную запись
Unlock-ADAccount -Identity "ivanov"
# Принудительная смена пароля при следующем входе
Set-ADUser -Identity "ivanov" -ChangePasswordAtLogon $true
# Установить срок действия УЗ
Set-ADUser -Identity "ivanov" -AccountExpirationDate "2026-12-31"
# Изменить часы входа (разрешить 09:00–18:00 пн–пт)
# Требуется побайтовая маска или использование Set-ADUser -Replace @{logonHours=...}
Get-ADUser по умолчанию возвращает только ~10 атрибутов. Используйте -Properties * или указывайте конкретные имена.
5. Автоматизация и массовые операции
Импорт из CSV
Import-Csv "C:\users\users.csv" | ForEach-Object {
New-ADUser -Name $_.DisplayName `
-SamAccountName $_.sAMAccountName `
-UserPrincipalName $_.UPN `
-GivenName $_.FirstName `
-Surname $_.LastName `
-Path $_.OU `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) `
-Enabled $true `
-ChangePasswordAtLogon $true
}
Поиск stale-учёток (неактивных >90 дней)
$Days = 90
$Date = (Get-Date).AddDays(-$Days)
Get-ADUser -Filter {Enabled -eq $true -and LastLogonTimestamp -lt $Date} `
-Properties LastLogonTimestamp, PasswordLastSet |
Select-Object Name, sAMAccountName,
@{N="LastLogon";E={[DateTime]::FromFileTime($_.LastLogonTimestamp)}},
PasswordLastSet
6. Безопасность и лучшие практики
| Практика | Почему важно |
|---|---|
Не хранить пароли/ключи в Description или info |
Атрибуты читаемы всем доменным пользователям по умолчанию. Используйте PAM, Vault, GPP с шифрованием (не рекомендуется) или JIT-доступ. |
| Регулярно чистить отключённые УЗ | Снижает поверхность атаки и упрощает аудит. Автоматизируйте через Scheduled Tasks + PowerShell. |
Используйте UPN вместо sAMAccountName для современных сервисов |
sAMAccountName ограничен 20 символами, не поддерживает кириллицу и устарел для SAML/OAuth. |
| Делегируйте права через RBAC, а не Domain Admins | Используйте встроенные группы (Account Operators, Domain Users) или настраивайте ACL на OU через dsa.msc → Делегирование управления. |
| Аудируйте изменения атрибутов | Включите Audit Directory Service Access и Audit Account Management в GPO → Политики безопасности → Advanced Audit Policy. |
Избегайте ручного редактирования userAccountControl |
Используйте Disable-ADAccount, Enable-ADAccount, -PasswordNeverExpires $true и т.д. Прямая запись битовой маски приводит к ошибкам. |
7. Troubleshooting типовых проблем
| Симптом | Диагностика | Решение |
|---|---|---|
| Учётная запись заблокирована, но пароль верный | Search-ADAccount -LockedOut |
Unlock-ADAccount -Identity <user>. Проверьте NPS, RDP, Exchange, устаревшие приложения. |
| Пароль «истёк», но в ADUC галочка снята | Get-ADUser <user> -Properties PasswordExpired |
Проверьте Fine-Grained Password Policies (Get-ADFineGrainedPasswordPolicy). GPO может не переопределять FGPP. |
| Атрибут не виден в ADUC | Включены ли Advanced Features? Есть ли права на чтение? | Проверьте ACL через Get-ACL или dsa.msc → Security → Advanced. |
| Изменения не применяются на всех DC | repadmin /showrepl |
Принудительная репликация: repadmin /syncall /AdeP. Проверьте связность сети и статус KDC. |
manager или memberOf не обновляются |
Ссылочные атрибуты требуют корректного DN | Используйте Set-ADUser -Manager (Get-ADUser "boss").DistinguishedName |
8. Интеграция с Microsoft Entra ID (Azure AD)
При использовании Microsoft Entra Connect (ранее AAD Connect):
- Атрибуты синхронизируются по маппингу:
sAMAccountName→userPrincipalName,mail,displayName,department,managerи др. objectGUID→immutableId(связующее поле, не изменять).- Облачные УЗ (
cloud-only) не имеютsAMAccountNameиuserAccountControlв классическом виде. - Изменения в on-prem AD перезаписываются в облаке (направление: on-prem → cloud). Обратный поток возможен только для ограниченного набора атрибутов (например,
proxyAddressesпри writeback). - Для кастомных атрибутов используйте Extended Directory Schema или Entra ID Application Attributes.
9. Полезные команды и утилиты
| Задача | Команда |
|---|---|
| Экспорт свойств в CSV | Get-ADUser -Filter * -Properties * | Select sAMAccountName,displayName,department,mail | Export-Csv users.csv -NoType |
| Проверка репликации | repadmin /replsummary |
| Просмотр ACL объекта | Get-ACL "AD:\CN=User,OU=Users,DC=contoso,DC=com" |
| Включение аудита изменений | auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable |
| Сравнение двух пользователей | Compare-Object (Get-ADUser u1 -Properties *) (Get-ADUser u2 -Properties *) -Property * |
Заключение
Свойства пользователя в Active Directory — это фундамент управления идентификацией, аутентификацией и авторизацией в корпоративной среде. Грамотное использование атрибутов, автоматизация через PowerShell, регулярный аудит и соблюдение принципа минимальных привилегий позволяют строить отказоустойчивую и безопасную инфраструктуру.