我正在尝试构建一个数据库来存储用户/员工的 Active-Directory 条目。
假设查询是否安全:
(objectClass=person)
我应该将什么属性存储为 DN 之外的唯一标识符?例如我应该使用
mail
还是uid
此外,当员工被停用时,是否会添加新属性,或者只是将其从 AD 中完全删除?
最佳答案
您提出的问题似乎有些基于意见,但我将从 AD 中可用的一般选项和遵循的通常做法的背景来讨论它。
- Is it safe to assume to query on: (objectClass=person)?
创建的所有用户都属于(objectClass=person)
类别。但是,如果您创建一个通用用户来在系统上进行文件共享访问(通过 ADUC(dsa.msc)/powershell/C# 等),而该用户不是员工,那么在这种情况下它将违反您的搜索尽管是一个人阶层的状况。我可以想到很多其他场景,至少从中型及以上公司的角度来看,不可能避免通用用户的创建(这又位于个人对象类中)。
因此,在这种情况下,最好遵循您的环境中的命名约定,以避免任何此类混淆。一个示例示例是,假设将非员工用户的 UPN/sAMAccountName 设置为从 genXXXX 开始,此后您就可以轻松搜索所有员工用户。
- What attribute should I store as a unique identifier that isn't the DN? e.g. should I use mail or uid?
AD 中已有可用的唯一标识符,例如 objectGUID
和 objectSid
。在域中,sAMAccountName/UPN 值也是唯一的。但是,您不能依赖它来进行森林级搜索。
当用户迁移到另一个域时,用户的 objectSid 可能会更改,但 objectGUID 永远不会更改。您可以阅读更多关于 SIDs versus GUIDs here .
Also when an employee gets de-activated is there a new attribute that gets added or are they simply removed entirely from AD?
AD侧没有自动触发。有一个名为 lastLogontimeStamp
的属性,它有助于跟踪用户或计算机帐户何时登录到域(不是实时场景,而是最近的场景 - 取决于它是否保持正确更新)。
如果员工/用户离开组织,则必须有人手动禁用/删除该帐户。公司有流程设置来处理这种情况,其中访问管理解决方案与AD模块链接,并负责用户的进入和退出并在AD中执行相关操作。
希望能够针对您提出的疑问提供一个大概的管理思路。
关于active-directory - 一般来说,对于 Active Directory,大多数公司使用什么作为人员的唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54279138/