【问题标题】:Is there any Primary Key (or) Unique Key is present in Active Directory?Active Directory 中是否存在任何主键(或)唯一键?
【发布时间】:2019-03-27 05:08:24
【问题描述】:

我正在从 PowerShell 运行以下命令:

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

只是试图识别我可以用作“主键”的属性,例如 EmployeeID 或 EmployeeNumber。 AD 属性列表:[链接] AD 是否提供主键?

【问题讨论】:

  • 您能描述一下您的用例吗?有多个字段可供选择。
  • 我正在尝试识别“主键”和“修改后的时间戳”,我可以使用它来每天更新 Hive 表,同时使用 Get-ADUser -Server 广告从 AD 中提取所有记录。 com -过滤器''-属性''。 AD 输出提供了以下属性“modifyTimeStamp”,我可以将其用于数据列,但我无法找到可以使用的最佳主键。

标签: windows powershell active-directory ldap


【解决方案1】:

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

请注意,SID 包含域的 SID 作为前缀。因此,如果域被迁移,则会生成新的 SID,并将旧的 SID 放置在属性 sIDHistory 中,直到被 AD 管理员清理。

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

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

objectGUID 是全球唯一的,因为它是一个编码为 OctetString 的 UUID(参见 RFC 4122)。但是 IIRC 跨副本并不稳定。

samAccountNameuserPrincipalName 通常来自人名。 AD 中条目的 RDN 也是基于 cn 的,其中大多数情况下包含人名。在结婚/离婚等之后,从人名得出的值可能会发生变化。

=>

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

【讨论】:

  • 所以,迈克尔,你是说 objectGUID 是被视为唯一键的最佳属性,根据我的以下尝试:我正在尝试识别“主键”和“修改时间戳”我可以每天更新 Hive 表,同时使用 Get-ADUser -Server ad.com -Filter '' -Properties '' 从 AD 中提取所有记录。 AD 输出提供了以下属性“modifyTimeStamp”,我可以将其用于数据列,但我无法找到可以使用的最佳主键。
  • 没有。我说过 objectSID 是同步的最佳属性,同时查看 sIDHistory 甚至可以在域迁移中幸存。
【解决方案2】:

你看是pretty well documented

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

samAccountNameuserPrincipalName 在域中的安全主体之间也必须是唯一的。

objectSID 在整个域中是唯一的。

objectGUID 是全局唯一的。

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

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

【讨论】:

  • 所有这些独特属性都有一些注意事项。我在讨论这个问题的答案中添加了更多文字。欢迎反馈。
  • 请注意,userPrincipalName 在整个 AD 林中也是唯一的(如果您的林中有多个域)。
  • 是的,Gabriel,我有多个域,并且 userPrincipalName 对所有域都是唯一的?
  • 培根,你是说 ObjectGUID 最好用作主键?
  • @Pavan_Obj 这取决于。 objectGuid 给你的唯一优势是它永远不会改变,但你在乎吗? userPrincipalName 保证是唯一的并且是人类可读的,但可以更改(例如,如果该人更改了他们的名字)。
猜你喜欢
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2023-04-02
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多