【发布时间】:2018-02-13 04:43:11
【问题描述】:
我正在为 Active Directory 编写访问审计报告。我正在使用 LDAP 通过 SSIS 中的 C# 脚本组件将数据提取到 SQL Server 数据库中。这是我对 AD 的第一次重大尝试,所以我坦率地承认缺乏深入的知识。我试图通过询问那些对该主题有经验的人来消除盲点。如果我混淆了我的任何隐喻,请提前原谅我。
关于为所有用户检索数据,最好还是坚持使用 Principal 类,并通过 S.DS.AM 访问 GroupPrincipal、UserPrincipal 和 ComputerPrincipal(即具体类),还是获取所有内容更好来自 S.DS.AD(参见下面的参考资料)?我知道两者都是 S.DS 的子类,因此在使用 S.DS.AM 时可能会错过 S.DS.AD 中未包含的对象。是否有任何相关数据或对象包含在 S.DS.AD 中,但不包含在 S.DS.AM 中,这将有助于访问控制审计?另外,我知道如果 PageSize=1000,那么我可能需要使用 S.DS.AD,然后循环通过 S.DS.AM。
如果最好使用 S.DS.AM,有没有办法捕获任何已创建并从具体类中分出的抽象类或辅助类?我可以只使用 StructuralObjectClass 属性值吗?
S.DS.AD: https://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory(v=vs.110).aspx
S.DS.AM: https://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement(v=vs.110).aspx
【问题讨论】:
-
恕我直言,要求是选择标准的来源。有很多事情是不可能仅通过 AccountManagement 实现的,而 ActiveDirectory 程序集可以提供帮助(在您的问题中已经提到)。我建议您限制问题的范围,并询问您要达到的目标。
-
问题是没有范围要求 - 公司只是想审核访问权限,让我自己弄清楚。因此,它的范围可以非常大,也可以非常窄。由于我有足够的空间来解决这个问题,因此我尝试将未来可能需要的项目包括在内,这样我就可以避免未来的开发工作并使用已经提供的数据,同时注意潜在的性能问题。因此,我试图根据其他人的经验来看看什么是最好的实现。
标签: c# sql-server active-directory ldap