Поделиться через


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

Автор: Джастин Тернер, старший инженер по эскалации поддержки с группой 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

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

Снимок экрана: сообщение о том, что выбранное имя входа уже используется.

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

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

Снимок экрана: сообщение с именем входа, которое вы уже использовали в организации.

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

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

Снимок экрана: сообщение о том, что новый пользователь не был создан.

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

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

Снимок экрана:

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

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

Снимок экрана, на котором показан идентификатор события АРАБСКОГО 2974 с ошибкой 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)

Снимок экрана: сбой операции с кодом ошибки 0x21c8.

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

Windows PowerShell

Windows Server 2012 R2:

Снимок экрана: сообщение о сбое операции.

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

Снимок экрана: неизвестная ошибка.

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

Снимок экрана: ошибка создания пользователя в windows Server 2012 R2 при выборе контроллера домена Windows Server 2012 R2.

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

Снимок экрана: ошибка изменения пользователя в windows Server 2012 R2 при выборе контроллера домена Windows Server 2012 R2.

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

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

Снимок экрана: восстановление объекта.

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

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

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

  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 используется для включения удаленных объектов в результирующий набор.

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

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

  • Тип (userPrincipalName=ConflictingUPN)

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

Снимок экрана: страница

Использование 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

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

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

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

Снимок экрана: операция завершилась сбоем с кодом ошибки 0x21c7.

Примечание.

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

Повторяющееся имя субъекта-службы

Снимок экрана: сообщение об ошибке, отображаемое в ADSIEdit при добавлении дубликата имени участника-службы.

Рисунок 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

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

Рисунок 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 (DSAC.exe)
    2. Заполнение существующей учетной записи с использованием имени субъекта-службы

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

Необязательно

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

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

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

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

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

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