Active Directory中是否存在任何主键(或)唯一键?

Pav*_*Obj 2 windows powershell ldap active-directory

我从PowerShell运行以下命令:

Get-ADUser -Server ad.com -Filter '*' -Properties '*' Export-Csv 'C:\Users\myFolder\file.csv' -NoTypeInformation -Delimiter '|'
Run Code Online (Sandbox Code Playgroud)

只是尝试识别我可以用作'主键'的属性,例如EmployeeID或EmployeeNumber.AD属性列表:[link] AD是否提供主键?

Mic*_*der 7

如果您需要用户和组条目中的唯一值,则可以查看objectSID属性。LDAP字符串表示形式是OctetString,但是您可以找到将其转换为ASCII干净的所谓SDDL表示形式的代码。

请注意,SID包含域的SID作为前缀。因此,在域迁移的情况下,将生成新的SID,并将旧的SID放在属性sIDHistory中,直到由AD管理员清除为止。

但是,如果您要查找与外部数据源同步数据的主键,我将在此外部数据源中创建唯一值,并将其放在employeeIDemployeeNumber中

尽管许多其他属性必须是唯一的,但某些属性并不是真正稳定或局部的,因此不适合例如同步数据:

objectGUID是全局唯一的,因为它是一个编码为OctetString的UUID(请参阅RFC 4122)。但是IIRC在副本之间不稳定。

samAccountNameuserPrincipalName通常来自人名。AD中条目的RDN也是基于cn的,而cn通常包含该人的姓名。从人的名字得出的值可能会在结婚/离婚等之后发生变化。

=>

  • 同步的最佳属性是一个自己生成的ID(例如UUID)。
  • 第二个最佳属性是objectSIDsIDHistory结合使用,用于定位条目。确保将objectSID的当前值同步回您的数据源。


Bac*_*its 6

如果你看,它有很好的记录.

专有名称是主键.作为分层数据库,具有规范名称的对象的完整路径在林中必须是唯一的.

samAccountNameuserPrincipalName在域中的安全主体中也必须是唯一的.

objectSID在整个域中是唯一的.

objectGUID是全局唯一的.

也就是说,我看到奇怪的情况是用户主要名称或samAccountName是重复的,但这会导致问题,因为系统假定它们必须是唯一的.

EmployeeNumber是用户指定的属性.它旨在使用您的用户数据库或HR数据库中的id填充,以使人口统计和组织数据保持最新.属性本身没有约束.