我正在尝试建立一个存储用于用户/员工的Active Directory条目的数据库。
可以安全地假设要查询以下内容:(objectClass=person)
我应该将什么属性存储为不是DN的唯一标识符?例如我应该使用mail
还是uid
此外,当停用员工时,是否会添加新属性或将其完全从AD中删除?
答案 0 :(得分:2)
您提出的问题似乎有点基于观点,但是我将根据广告中可用的常规选项以及遵循的通常做法来进行讨论。
- 假设对以下对象进行查询是否安全?
所有创建的用户都属于(objectClass=person)
类别。但是,如果您创建了一个普通用户以在不是雇员的系统上通过文件共享访问(通过ADUC(dsa.msc)/ powershell / C#等),则在这种情况下,它将违反您的搜索尽管是一个人阶级我可以想到很多其他情况,至少从中型公司及以上的角度来看,无法避免创建通用用户(这又将位于person objectClass中)。
因此,在这种情况下,最好遵循您环境中的命名约定,以避免任何此类混淆。一个示例示例是,例如,将非员工用户的UPN / sAMAccountName设置为从genXXXX开始,您将可以轻松地搜索所有员工用户。
- 应将什么属性存储为不是DN的唯一标识符?例如我应该使用邮件还是uid?
AD中已经有唯一的标识符,例如objectGUID
和objectSid
。在域中,sAMAccountName / UPN值也是唯一的。但是,您不能依靠它进行林级搜索。
objectSid可以更改,但是 objectGUID 从未更改。您可以阅读有关SIDs versus GUIDs here的更多信息。
此外,当停用员工时,还会有一个新属性 被添加还是被完全从AD中完全删除?
AD端没有自动触发。有一个名为lastLogontimeStamp
的属性,该属性有助于跟踪用户或计算机帐户登录到域的时间(不是实时场景,而是最近的场景-取决于其是否继续正确更新)。
如果员工/用户离开组织,则必须手动禁用/删除帐户。公司中有一些流程设置来处理这种情况,其中访问管理解决方案与AD模块链接在一起,并负责用户的进入和退出并在AD中执行相关操作。
希望它为您提出的查询提供了一个粗略的管理思路。