Существует ли какой-либо первичный ключ (или) уникальный ключ в Active Directory? - PullRequest
0 голосов
/ 23 октября 2018

Я запускаю следующую команду из PowerShell:

Get-ADUser -Server ad.com -Filter '*' -Properties '*' Export-Csv 'C:\Users\myFolder\file.csv' -NoTypeInformation -Delimiter '|'

Просто пытаюсь определить атрибут, который я могу использовать в качестве «первичного ключа», например EmployeeID или EmployeeNumber.Список атрибутов AD: [ссылка] Предоставляет ли AD первичный ключ?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Это довольно хорошо документировано , если вы посмотрите.

Отличительное имя является первичным ключом.В качестве иерархической базы данных полный путь к объекту с каноническим именем должен быть уникальным в лесу.

samAccountName и userPrincipalName также должен быть уникальным для участников безопасностив домене.

objectSID уникален для всего домена.

objectGUID глобально уникален.

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

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

0 голосов
/ 23 октября 2018

Если вам нужно уникальное значение в записях пользователей и групп, вы можете посмотреть атрибут objectSID .Строковое представление LDAP представляет собой OctetString , но вы можете найти код для его преобразования в ASCII-чистое так называемое представление SDDL.

Обратите внимание, что SID содержат SID домена в качестве префикса.Таким образом, в случае переноса домена новые SID генерируются, а старые SID помещаются в атрибут sIDHistory до очистки администраторами AD.

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

В то время как многие другие атрибуты имеютчтобы быть уникальными, некоторые не являются на самом деле стабильными или локальными и поэтому не подходят, например, для синхронизации данных:

objectGUID глобально уникален, потому что это UUID (см. RFC 4122 ) кодируется как OctetString .Но IIRC не является стабильным для всех реплик.

samAccountName и userPrincipalName часто получаются из имен пользователей.RDN записи в AD также основано на cn , который в большинстве случаев содержит имя человека.Значения, полученные из имени человека, вероятно, будут изменены после вступления в брак / развода и т. Д.

=>

  • Лучшим атрибутом для синхронизации является самогенерируемый идентификатор (например, UUID).
  • 2-й лучший атрибут - objectSID , используемый в сочетании с sIDHistory для определения местоположения записи.Обязательно синхронизируйте текущее значение objectSID с вашим источником данных.
...