Уникальность имен субъектов-служб и участников-пользователей

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Автор: Джастин Тернер, старший инженер по эскалации поддержки с группой Windows

Примечание.

Этот материал создан инженером службы поддержки клиентов Майкрософт и предназначен для опытных администраторов и архитекторов систем, которым нужны более глубокие технические сведения о функциях и решениях в Windows Server 2012 R2, а не обычная информация, доступная в статьях на сайте TechNet. Однако он не был отредактирован согласно требованиям сайта, поэтому некоторые формулировки могут быть не такими выверенными, как на станицах TechNet.

Обзор

Контроллеры домена под управлением Windows Server 2012 R2 блокируют создание повторяющихся имен субъектов-служб (SPN) и имен субъектов-пользователей (UPN). Это включает в себя, если восстановление или повторное переименование удаленного объекта или переименование объекта приведет к дубликату.

Общие сведения

Повторяющиеся имена субъектов-служб обычно происходят и приводят к сбоям проверки подлинности и могут привести к чрезмерному использованию ЦП LSASS. Нет встроенного метода, чтобы заблокировать добавление дубликата имени участника-службы или имени участника-службы. *

Повторяющиеся значения имени участника-службы прерывают синхронизацию между локальной службой AD и Office 365.

*Setspn.exe обычно используется для создания новых имен субъектов-служб и функционально встроена в версию, выпущенную в Windows Server 2008, которая добавляет проверка для дубликатов.

Таблица SEQ Table \* ARABIC 1: UPN и SPN uniqueness

Функция Комментарий
Уникальность имени участника-участника Повторяющиеся имена участника-пользователя прерывают синхронизацию локальных учетных записей AD с службами на основе идентификаторов Майкрософт, такими как Office 365.
Уникальность имени участника-службы Для взаимной проверки подлинности Kerberos требуется имя субъекта-службы. Повторяющиеся имена субъектов-служб приводят к сбоям проверки подлинности.

Дополнительные сведения о требованиях к уникальности для имен субъектов-служб и субъектов-служб см. в разделе "Ограничения уникальности".

Симптомы

Коды ошибок 8467 или 8468 или их шестнадцатеричные эквиваленты, символьные или строковые эквиваленты регистрируются в различных диалогах на экране и в журнале событий служб каталогов. Попытка создать дубликат имени участника-пользователя или имени участника-службы блокируется только в следующих случаях:

  • Запись обрабатывается контроллером домена Windows Server 2012 R2

Таблица SEQ Таблицы \* АРАБСКИЙ 2: коды ошибок уникальности имени участника-участника и участника-службы

Десятичное число Hex Символические Строка
8647 21C7 ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST Операция завершилась ошибкой, так как значение субъекта-службы, предоставленное для добавления или изменения, не является уникальным лесом.
8648 21C8 ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST Операция завершилась ошибкой, так как значение имени участника-пользователя, предоставленное для добавления или изменения, не является уникальным лесом.

Создание нового пользователя завершается ошибкой, если имя участника-пользователя не является уникальным

Dsa.msc

Выбранное имя входа пользователя уже используется в этом предприятии. Выберите другое имя входа и повторите попытку.

Screenshot that shows a message that says the logon name you have chosen is already in use.

Измените существующую учетную запись:

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

Screenshot that shows a message that says the logon name you used already exists in the enterprise.

Центр Администратор istrative Active Directory (DSAC.exe)

Попытка создать нового пользователя в Active Directory Администратор istrative Center с именем участника-пользователя, который уже существует, возвращает следующую ошибку.

Screenshot that shows a message that says the new user was not created.

Рисунок SEQ Рис. \* Ошибка АРАБСКОГО 1, отображаемая в Центре Администратор istrative Center при сбое создания нового пользователя из-за дублирования имени участника-пользователя

Источник события 2974: ActiveDirectory_DomainService

Screenshot that shows

Рис. SEQ Рис. \* АРАБСКИЙ 2 Идентификатор события 2974 с ошибкой 8648

Событие 2974 содержит значение, которое было заблокировано, и список одного или нескольких объектов (до 10), которые уже содержат это значение. На следующем рисунке вы увидите, что значение dhunt@blue.contoso.com атрибута участника-пользователя уже существует на четырех других объектах. Так как это новая функция в Windows Server 2012 R2, случайное создание повторяющихся имен участника-пользователя и субъектов-служб в смешанной среде по-прежнему возникает при обработке попытки записи на уровне вниз.

Screenshot that shows ARABIC 2 Event ID 2974 with error 8648.

Рис. SEQ Рис. \* АРАБСКОЕ событие 2974, показывающее все объекты, содержащие дубликат имени участника-участника-участника

Совет

Регулярно просматривайте идентификатор события 2974s:

  • выявление попыток создания повторяющихся имен участника-пользователя или субъектов-служб
  • определение объектов, которые уже содержат дубликаты

8648 = "Операция завершилась сбоем, так как значение имени участника-пользователя, предоставленное для добавления или изменения, не является уникальным лесом на уровне леса".

SetSPN:

Setspn.exe с момента выпуска Windows Server 2008 при использовании параметра "-S" используется дубликат обнаружения имени участника-службы. Вы можете обойти обнаружение дубликата имени участника-службы с помощью параметра -A . При создании повторяющегося имени участника-службы блокируется при выборе контроллера домена Windows Server 2012 R2 с помощью SetSPN с параметром -A. Отображаемое сообщение об ошибке совпадает с сообщением об ошибке, отображаемом при использовании параметра -S: "Повторяющиеся имена субъектов-службы найдены, прерывание операции!"

ADSIEDIT:

Operation failed. Error code: 0x21c8
The operation failed because UPN value provided for addition/modification is not unique forest-wide.
000021C8: AtrErr: DSID-03200BBA, #1: 0: 000021C8: DSID-03200BBA, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)

Screenshot that shows that the operation failed with error code 0x21c8.

Рисунок SEQ Рис. \* Сообщение об ошибке АРАБСКОГО 4, отображаемое в ADSIEdit при добавлении дубликата имени участника-пользователя, заблокированного

Windows PowerShell

Windows Server 2012 R2:

Screenshot that shows a message indicating that the operation failed.

PowerShell, запущенная с сервера 2012, предназначенная для контроллера домена Windows Server 2012 R2:

Screenshot that shows an unknown error.

DSAC.exe, работающей в Windows Server 2012, предназначенной для контроллера домена Windows Server 2012 R2:

Screenshot that shows a user creation error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

Рисунок SEQ Рис. \* Ошибка создания пользователя DSAC НА арабском языке 5 DSAC в Windows Server 2012 R2 при выборе контроллера домена Windows Server 2012 R2

Screenshot that shows a user modification error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

Рисунок SEQ Рис. \* Ошибка изменения пользователя DSAC НА арабском языке 6 DSAC в Windows Server 2012 R2 при выборе контроллера домена Windows Server 2012 R2

Восстановление объекта, который приведет к сбою дубликата имени участника-участника-участника:

Screenshot that shows how to restore an object.

Screenshot that shows that the operation failed because the UPN value provided for addition/modification is not unique forest-wide.

Событие не регистрируется, если объект не может восстановиться из-за повторяющегося имени участника-службы или имени участника-службы.

Имя участника-участника-службы объекта должно быть уникальным, чтобы он был восстановлен.

  1. Определение имени участника-пользователя, существующего в объекте в корзине

  2. Определение всех объектов с одинаковым значением

  3. Удаление повторяющихся имен участника-пользователей

Определение конфликтующего имени участника-пользователя на удаленном объектеUsing repadmin.exe

Repadmin /showattr DCName "DN of deleted objects container" /subtree /filter:"(msDS-LastKnownRDN=<NAME>)" /deleted /atts:userprincipalname
repadmin /showattr DCName "CN=Deleted Objects,DC=blue,DC=contoso,DC=com" /subtree /filter:"(msDS-LastKnownRDN=Dianne Hunt2)" /deleted /atts:userprincipalname

C:\>repadmin /showattr winbluedc1 "cn=deleted objects,dc=blue,dc=contoso,dc=com" /subtree /filter:"(msds-lastknownrdn=Dianne Hunt2)" /deleted /atts:userprincipalname
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Object
s,DC=blue,DC=contoso,DC=com
    1> userPrincipalName: dhunt@blue.contoso.com

Определение всех объектов с одинаковым именем участника-пользователя:Using Repadmin.exe

repadmin /showattr WinBlueDC1 "DC=blue,DC=contoso,DC=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN

C:\>repadmin /showattr winbluedc1 "dc=blue,dc=contoso,dc=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
DN: CN=Administrator,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser1,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser10,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser100,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt,OU=Marketing,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Objects,DC=blue,DC=contoso,DC=com

Совет

Ранее незадокументированный /удаленный параметр в repadmin.exe используется для включения удаленных объектов в результирующий набор.

  • Откройте центр Администратор istrative в Active Directory и перейдите к глобальному поиску

  • Нажмите переключатель "Преобразовать в LDAP"

  • Тип (userPrincipalName=ConflictingUPN)

    • Замените конфликтующий идентификатор на фактическое имя участника-участника-участника, которое находится в конфликте
  • Нажмите кнопку Применить.

Screenshot that shows the Global Search page.

Использование Windows PowerShell

Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com

SPN and UPN uniqueness

Если объект необходимо восстановить, потребуется удалить повторяющиеся имена участника-службы из других объектов. Для только одного объекта достаточно просто использовать ADSIEdit для удаления дубликата. Если есть несколько объектов с дубликатами, Windows PowerShell может быть лучшим средством для использования.

Чтобы вывести значение NULL из атрибута UserPrincipalName с помощью Windows PowerShell:

Screenshot that shows the operation failed with error code 0x21c7.

Примечание.

Атрибут userPrincipalName является однозначным атрибутом, поэтому эта процедура будет удалять только дубликат имени участника-пользователя.

Дублирование имени участника-службы

Screenshot that shows the error message displayed in ADSIEdit when addition of duplicate SPN is blocked.

Рисунок SEQ Рис. \* Сообщение об ошибке АРАБСКОГО 8, отображаемое в ADSIEdit при добавлении дубликата имени участника-службы

Вход в журнал событий служб каталогов — это ActiveDirectory_DomainService идентификатор события 2974.

Operation failed. Error code: 0x21c7
The operation failed
The attribute value provided is not unique in the forest or partition. Attribute:
servicePrincipalName Value=<SPN>
<Object DN> Winerror: 8467

Screenshot that shows the error logged when creation of duplicate SPN is blocked.

Рисунок SEQ Рис. \* Ошибка АРАБСКОГО 9, зарегистрированная при создании повторяющегося имени участника-службы

Рабочий процесс

  • Если DC == GC

    • Запрос не требуется, запрос можно выполнить локально.

    • Случай имени участника-участника

      • Запрос индекса имени участника-пользователя на уровне локального леса для предоставленного имени участника-пользователя (userPrincipalName; глобальный индекс)

        • Если записи возвращены == 0 —> продолжить запись

        • Если записи возвращены !=0 —> запись завершается ошибкой

          • Журнал событий

          • Также возвращает расширенную ошибку:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • Случай субъекта-службы

      • Запрос индекса локального леса субъекта-службы для предоставленного имени субъекта-службы (servicePrincipalName; глобальный индекс)

        • Если записи возвращены == 0 —> продолжить запись

        • Если записи возвращены !=0 —> запись завершается ошибкой

          • Журнал событий

          • Также возвращает расширенную ошибку:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

  • Если DC != GC

    • Входящие вызов желательны, но не критически важны, то есть это лучшие усилия уникальности проверка

      • Проверка доходов от локального DIT только в том случае, если не удается найти GC

      • Событие, зарегистрированное для указания такого типа

    • Случай имени участника-участника

      • Отправка запроса LDAP к ближайшей сборке GC? индекс имени участника-пользователя в лесу для предоставленного имени участника-пользователя (userPrincipalName; глобальный индекс)

        • Если записи возвращены == 0 —> продолжить запись

        • Если записи возвращены !=0 —> запись завершается ошибкой

          • Журнал событий

          • Также возвращает расширенную ошибку:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • Случай субъекта-службы

      • Отправка запроса LDAP к ближайшей сборке GC? индекс spN в пределах леса для указанного имени субъекта-службы (servicePrincipalName; глобальный индекс)

        • Если записи возвращены == 0 —> продолжить запись

        • Если записи возвращены !=0 —> запись завершается ошибкой

          • Журнал событий

          • Также возвращает расширенную ошибку:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

Когда удаленные объекты повторно анимируются, значения имени участника-службы или имени участника-службы проверка для уникальности. При обнаружении дубликата запрос завершается ошибкой.

  • Для определенных изменений атрибутов, таких как DNS-имя узла, имя учетной записи SAM и т. д., при внесении изменений имена субъектов-служб обновляются соответствующим образом. В процессе устаревшие имена субъектов-служб удаляются, а новые имена субъектов-служб создаются и добавляются в базу данных. Необходимые изменения атрибутов, для которых активируется этот путь:

    • ATT_DNS_HOST_NAME

    • ATT_MS_DS_ADDITIONAL_DNS_HOST_NAME

    • ATT_SAM_ACCOUNT_NAME

    • ATT_MS_DS_ADDITIONAL_SAM_ACCOUNT_NAME

    • ATT_SERVER_REFERENCE_BL

    • ATT_USER_ACCOUNT_CONTROL

Если любое из новых значений имени субъекта-службы является дубликатом, мы не удаляем изменения. Из приведенного выше списка важные атрибуты : ATT_DNS_HOST_NAME (имя компьютера) и ATT_SAM_ACCOUNT_NAME (имя учетной записи SAM).

Попробуйте выполнить следующее: изучение уникальности имени участника-службы и имени участника-службы

Это первое из нескольких действий "Попробовать это" в модуле. Для этого модуля нет отдельного руководства по лаборатории. Эти действия — это действия в свободной форме, которые позволяют изучать материал урока в лабораторной среде. У вас есть возможность выполнить запрос или выйти из скрипта и придумать собственное действие.

Примечание.

  • Это первая из нескольких действий Try This.
  • В этом модуле нет отдельного руководства по лаборатории.
  • Эти действия по сути являются свободными действиями формы, которые позволяют изучать материал урока в лабораторной среде.
  • У вас есть возможность выполнить запрос или выйти из скрипта и придумать собственное действие.
  • Хотя в некоторых разделах есть запрос пробной версии , вам по-прежнему рекомендуется изучить содержимое урока в лаборатории, где это необходимо.

Экспериментируйте с уникальностью имени участника-службы и имени участника-службы. Следуйте этим запросам или выполните собственные действия.

  1. Создание новых пользователей с помощью имени участника-пользователя

  2. Создание учетных записей с помощью имен субъектов-служб

  3. Создайте нового пользователя с ранее определенным пользователем или измените имя участника-пользователя существующей учетной записи. Выполните то же самое для имени участника-службы в другой учетной записи.

    1. Заполнение существующей учетной записи пользователя с помощью имени участника-пользователя, уже используемого

      1. Использование PowerShell, ADSIEDIT или Active Directory Администратор istrative Center (DSAC.exe)
    2. Заполнение существующей учетной записи с использованием имени субъекта-службы

      1. Использование Windows PowerShell, ADSIEDIT или SetSPN
  4. Наблюдение за ошибками

Дополнительно

  1. Убедитесь в том, что инструктор по аудитории включен, чтобы включить корзину AD в Центре Администратор istrative в Active Directory. Если да, перейдите к следующему шагу.

  2. Заполнение имени участника-пользователя в учетной записи пользователя

  3. Удаление учетной записи

  4. Заполните другую учетную запись тем же именем участника-пользователя, что и удаленная учетная запись.

  5. Попытка использовать графический интерфейс корзины для восстановления учетной записи

  6. Представьте, что вы получили сообщение об ошибке, представленной на предыдущем шаге. (и у вас нет журнала только что выполненных шагов) Ваша цель — завершить восстановление учетной записи. См. книгу, например шаги.