我正在处理Active Directory的访问审核报告。我通过SSIS中的C#脚本组件使用LDAP将数据提取到SQL Server数据库中。这是我对AD的第一次重大尝试,所以我承认缺乏亲密的知识。我试图通过询问有关该主题的经验的人来删除眼罩。如果我混淆了我的任何比喻,请提前原谅我。
关于为所有用户检索数据,最好是坚持使用Principal Class,并通过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
答案 0 :(得分:2)
System.DirectoryServices.AccountManagement
命名空间是System.DirectoryServices
的包装器。命名空间包含的类涵盖了程序员在使用AD时遇到的最常见情况。这些类旨在在中小型环境中执行一组有限的任务,并且存在性能问题。
例如,GroupPrincipal.Members
将在第一次调用时加载整个组成员资格,这可能不是企业环境中所需的行为,其中组可能包含10-100k主体,范围检索是最佳选择。
使用System.DirectoryServices
或System.DirectoryServices.Protocols
可以管理您的流程在与AD通信时使用的资源(RAM,网络流量)。
System.DirectoryServices.ActiveDirectory
可以在每个环境中使用,因为这些类返回的数据量非常小(例如,Active Directory架构,站点,域控制器)