【问题标题】:Monitoring group membership in Active Directory more efficiently (C# .NET)更有效地监控 Active Directory 中的组成员身份 (C# .NET)
【发布时间】:2008-09-17 17:40:44
【问题描述】:

我有一个作为 Windows 服务编写的 Active Directory 同步工具 (.NET 2.0 / C#),我已经研究了一段时间,最近的任务是添加基于更改驱动事件的能力组成员资格。基本场景是用户与安全数据库同步,并且当组成员更改时,用户需要更改其访问权限(即,如果我现在是“IT 员工”的成员,那么我应该自动获得对服务器机房,如果我从该组中删除,那么我应该自动失去对服务器机房的访问权限)。

问题在于,在对群组执行 DirectorySynchronization 时,您会收到已添加/删除成员的群组,并且当您获取成员列表时,您会从那里获取当前该群组中所有成员的列表,而不仅仅是已添加或删除的成员。这给我带来了一个相当大的效率问题——为了知道用户是否被添加或删除,我必须在本地保留每个组和所有成员的列表,并将其与当前列表进行比较以查看谁被添加了添加(不在本地列表中),以及谁已被删除(在本地列表中,不在当前成员列表中)。

我正在讨论是否将组成员详细信息存储在内存中的 DataSet 中,并在每次处理新的成员更改时写入磁盘。这样,如果服务停止/崩溃或机器重新启动,我仍然可以通过将磁盘上的最后信息与当前组成员列表中的信息进行比较来了解安全数据库中 Active Directory 的当前状态。但是,这似乎非常低效 - 遍历组中的每个成员以与数据集中的内容进行比较,然后在每次列表发生更改时将更改写入磁盘。

以前有人处理过这种情况吗?有没有我没有找到只检索组成员增量的方法?在这种情况下,您会怎么做才能确保在尽可能降低性能影响的同时不会错过任何更改?

编辑:广告可能包含 500 个用户,也可能包含 200,000 个用户 - 这取决于客户,以及平均用户属于多少组

【问题讨论】:

  • 您是否获得了高效访问 AD 的最佳模式和实践?

标签: c# .net active-directory


【解决方案1】:

您可以在组策略编辑器中设置帐户修改成功的审核

然后您可以监控安全日志中的条目并处理有关帐户修改的日志条目。

例如

        EventLog myLog = new EventLog("Security");

        // set event handler
        myLog.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten);
        myLog.EnableRaisingEvents = true;

确保您有权访问安全事件日志 http://support.microsoft.com/kb/323076

【讨论】:

    【解决方案2】:

    我想说这取决于您需要跟踪多少活动目录对象。如果它是一个小数字(少于 1000 个用户),您可能可以将您的状态数据序列化到磁盘,而不会对性能造成明显影响。如果您要处理大量对象,那么在 SQL Express 之类的东西中创建一个简单的持久性架构并使用它可能会更有效。

    【讨论】:

      【解决方案3】:

      您知道有些产品可以帮助您进行目录同步和用户配置(谷歌这些术语)吗?不是在这里发明的,你可能必须证明在当前环境下的投资是合理的,但是开发和维护已经有商业解决方案的代码并不是,让我们说,从长远来看,始终是最具成本效益的方式跑步。

      并非所有支持事件/配置,但它们确实支持跟踪更改和分发它们:在这些功能之上创建事件解决方案并不是什么大问题。

      Microsoft 拥有 Identity Integration Server (MISS),它正在重新打包为 Identity Lifecycle Manager 的一部分。它最初是建立在一个更通用的元/主数据管理产品上的,但它是可行的。 IBM 有Tivoli Directory Integrator(但您需要跟上两年一次的名称更改!)。 Oracle 有一个Oracle Identity Manager,Sun 有一个Identity Manager。其中大部分是主要参与者购买的领先产品,以填补​​其投资组合的空白。

      当然,这些是企业级产品,意味着大型且昂贵,但通常非常安全且可扩展。如果您不需要他们的全部力量(还没有!),您需要考虑为自己存储一份副本。在这种情况下,您是否考虑过使用 AD LDS(以前的 AD/AM)存储您的最后一个已知 AD 树的副本?它不是比较差异的最佳格式,但目录数据库可以很好地扩展,即使是轻量级的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多