Устойчивость повторяющихся атрибутов — это компонент Azure Active Directory, позволяющий устранять проблемы из-за конфликтов атрибутов UserPrincipalName и ProxyAddress при запуске средств синхронизации Майкрософт.

Эти два атрибута обычно являются уникальными для всех объектов Пользователь, Группа и Контакт в заданном каталоге Azure Active Directory.

Примечание.

Только пользователи могут иметь имена участников-пользователей (UPN).

Новое поведение, которое обеспечивает этот компонент, применяется в облачной части конвейера синхронизации. Поэтому оно не зависит от клиента и может применяться к любому продукту корпорации Майкрософт, включая Azure AD Connect, DirSync и MIM + соединитель. В этом документе универсальный термин "клиент синхронизации" означает любой из этих продуктов.

Текущее поведение

При попытке подготовить новый объект с помощью значения UPN или ProxyAddress, которое нарушает ограничение уникальности, Azure Active Directory блокирует создание этого объекта. Если объект обновляется с помощью неуникальных значений UPN или ProxyAddress, обновление не удается выполнить Клиент синхронизации повторяет попытку подготовки или обновления после каждого цикла экспорта, но эта попытка завершается сбоем, пока конфликт не устраняется. После каждой попытки клиент синхронизации создает сообщение электронной почты с отчетом об ошибке и регистрирует ошибку в журнале.

Поведение с устойчивостью повторяющихся атрибутов

Azure Active Directory не завершает сбоем подготовку или обновление объекта с повторяющимся атрибутом. Вместо этого Azure Active Directory "помещает на карантин" повторяющийся атрибут, который нарушает ограничение уникальности. Если этот атрибут необходим для подготовки, как, например UserPrincipalName, служба назначает значение заполнителя. Формат этих временных значений таков: " + <4digitnumber>@.onmicrosoft.com". Если атрибут не обязателен, например ProxyAddress, то Azure Active Directory просто помещает конфликтующий атрибут на карантин и приступает к созданию или обновлению объекта.

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

Для поддержки этого поведения в классы объектов "Пользователь", "Группа" и "Контакт" добавлен новый атрибут — DirSyncProvisioningErrors.

Это многозначный атрибут, используемый для хранения конфликтующих атрибутов, которые нарушают ограничение уникальности, если добавляются как обычно. В Azure Active Directory включена фоновая задача таймера, которая запускается каждый час. Эта задача ищет разрешенные конфликты повторяющихся атрибутов и автоматически удаляет такие атрибуты из карантина.

Включение устойчивости повторяющихся атрибутов

Этот компонент можно включить, скачав последнюю версию модуля PowerShell для Azure Active Directory и выполнив следующие командлеты:

Set-MsolDirSyncFeature -Feature DuplicateUPNResiliency -Enable $true

Set-MsolDirSyncFeature -Feature DuplicateProxyAddressResiliency -Enable $true

Сейчас устойчивость для параметров UPN и ProxyAddress можно включать и выключать по отдельности. В будущем это поведение будет изменено — для всех каталогов Azure AD будет включена устойчивость обоих атрибутов и ее нельзя будет отключить.

Идентификация объектов с DirSyncProvisioningErrors

Объекты с ошибками, возникшими из-за конфликтов повторяющихся свойств, можно определить двумя методами: с помощью Azure Active Directory PowerShell и портала администрирования Office 365. В будущем планируется добавить к этим средствам создание отчетов на портале.

PowerShell Azure Active Directory

Для командлетов PowerShell, упомянутых в этой статье, верны следующие утверждения:

  • все командлеты вводятся с учетом регистра;
  • Необходимо всегда указывать флаг –ErrorCategory PropertyConflict. Других типов ErrorCategory сейчас нет, но они могут быть добавлены в будущем.

Для начала запустите командлет Connect-MsolService и введите учетные данные администратора клиента.

Затем используйте следующие командлеты и операторы для просмотра ошибок разными способами.

  1. Смотреть все

  2. По типу свойства.

  3. По конфликтующему значению.

  4. С помощью поиска по строкам.

  5. Сортированные.

  6. В ограниченном количестве или все.

Смотреть все

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

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict

Вы получите результат, похожий на приведенный ниже. Get-MsolDirSyncProvisioningError

По типу свойства

Чтобы просмотреть ошибки по типу свойства, добавьте флаг -PropertyName с аргументом UserPrincipalName или ProxyAddresses:

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -PropertyName UserPrincipalName

Или

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -PropertyName ProxyAddresses

По конфликтующему значению

Чтобы просмотреть ошибки, относящиеся к конкретному свойству, добавьте флаг -PropertyValue (при добавлении этого флага следует использовать также атрибут -PropertyName).

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -PropertyValue User@domain.com -PropertyName UserPrincipalName

С помощью поиска по строкам

Чтобы выполнить поиск по всем строкам, добавьте флаг -SearchString. Этот флаг можно использовать отдельно от всех флагов, упомянутых выше, за исключением флага -ErrorCategory PropertyConflict, который необходимо использовать всегда.

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -SearchString User

Сортированные

Результаты конкретного запроса можно сортировать с помощью двух флагов:

  1. SortField — допустимые аргументы включают: DisplayName и UserPrincipalName.

  2. SortDirection — допустимые аргументы включают: Ascending и Descending.

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -SortField UserPrincipalName -SortDirection Ascending

В ограниченном количестве или все

  1. Чтобы ограничить запрос до определенного количества значений, используйте флаг MaxResults.

  2. Использование флага All гарантирует получение всех результатов в том случае, если конфликт приводит к большому количеству ошибок.

Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict -MaxResults 5

Портал администрирования Office 365

Ошибки синхронизации каталогов можно просмотреть в центре администрирования Office 365. В отчете на портале Office 365 отображаются только объекты Пользователь, содержащие такие ошибки. Этот отчет не содержит сведений о конфликтах между такими объектами, как Группы, Контакты и Общедоступные папки.

Активные пользователи

Инструкции о том, как просмотреть ошибки синхронизации каталогов в центре администрирования Office 365, вы найдете в статье Определение ошибок синхронизации службы каталогов в Office 365.

Отчет об ошибках синхронизации удостоверений

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

Вот как выглядит уведомление по электронной почте о конфликте ProxyAddress: Активные пользователи .

Разрешение конфликтов

Стратегия устранения неполадок и методика разрешения этих ошибок не должны отличаться от того, как ошибки повторяющихся атрибутов обрабатывались раньше. Единственное различие заключается в том, что задача таймера переходит через клиент на стороне службы и автоматически добавляет спорный атрибут в правильный объект после разрешения конфликта.

Различные стратегии устранения неполадок и разрешения конфликтов описаны в статье Duplicate or invalid attributes prevent directory synchronization in Office 365 (Повторяющиеся и недопустимые атрибуты препятствуют синхронизации каталогов в Office 365).

Известные проблемы

Ни одна из известных проблем не приводит к потере данных или снижению производительности службы. Некоторые из них касаются внешнего вида, другие приводят к стандартным ошибкам повторяющихся атрибутов, которые возникали до включения компонента устойчивости (эти ошибки отображаются вместо помещения на карантин конфликтующих атрибутов). Некоторые проблемы вызывают определенные ошибки, которые требуется дополнительно устранять вручную.

Основное поведение

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

    а. В AD создается новый пользователь со следующими свойствами: имя участника-пользователя (UPN) — Joe@contoso.com, ProxyAddress — smtp:Joe@contoso.com.

    b. Свойства этого объекта конфликтуют с существующей группой, имеющей свойство ProxyAddress со значением SMTP:Joe@contoso.com.

    c. После экспорта отображается ошибка ProxyAddress conflict (Конфликт ProxyAddress), при этом конфликтующие атрибуты не помещаются на карантин. Операция повторяется после каждого цикла синхронизации, как это и происходило до включения компонента устойчивости.

  2. Задание таймера, которое ищет разрешенные конфликты повторяющихся атрибутов, только сравнивает одни конфликты UPN с другими. Это вызывает ошибку, показанную на шаге 4 следующего сценария.

    а. UserA@contoso.com имеет неуникальное имя UPN, потому что свойство ProxyAddress другого объекта имеет такое же значение.

    b. Пользователю А присваивается временное имя MOERA UPN, UserA1234@contoso.onmicrosoft.com, а реальное значение UPN помещается на карантин (как и ожидалось).

    c. Атрибут ProxyAddress другого конфликтующего объекта удаляется позже.

    г) Имя UPN пользователя А не исправляется автоматически. Его необходимо обновить вручную.

  3. Если локально создаются две группы с одним и тем же адресом SMTP, то одну группу не удается подготовить с первой попытки из-за стандартной ошибки повторяющихся значений ProxyAddress. Но на следующем цикле синхронизации повторяющиеся значения будут правильно помещены на карантин.

Командлеты PowerShell.

  1. Атрибуты ImmutableId или LastDirSyncTime не отображаются для класса объекта "Пользователь".

  2. Флаги SortField и SortDirection не влияют на результаты.

  3. Использование флага PropertyValue без добавления флага PropertyName вызывает ошибку из-за неоднозначности.

  4. Флаг SearchString возвращает дополнительные результаты, если он использован без флагов PropertyValue и PropertyName.

Отчет портала Office

  1. Подробное сообщение об ошибке для двух объектов в конфликте, связанном с именем UPN, содержит одинаковые сведения. Это означает, что свойство UPN обоих объектов изменено или помещено на карантин, но на самом деле данные изменились только в одном объекте.

  2. Подробное сообщение об ошибке, связанное с конфликтом UPN, показывает неправильное свойство displayName пользователя, имя UPN которого изменено или помещено на карантин. Например:

    а. Сначала синхронизируется пользователь A с именем UPN = User@contoso.com.

    b. Затем выполняется попытка синхронизировать пользователя Б с именем UPN = User@contoso.com.

    c. Имя UPN пользователя Б изменяется на User1234@contoso.onmicrosoft.com, а User@contoso.com добавляется в список DirSyncProvisioningErrors.

    г) Сообщение об ошибке для пользователя Б должно содержать информацию о том, что пользователь A уже использует User@contoso.com в качестве UPN, но вместо этого в нем содержится собственное отображаемое имя (свойство displayName) пользователя Б.

  3. В отчете могут отображаться подробные сведения об ошибке только для пользователей с конфликтами UPN, но не для пользователей с ошибками ProxyAddress. Мы все еще выясняем, происходит ли это в любых условиях или связано с определенной средой.


    Дополнительные ресурсы для изучения:

    https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnectsync-attributes-synchronized/