2

语境

  • 一个 OU 中有 200k 用户的 Active Directory 实例

  • 在我们的领域中增长到 100 万的潜力

不是这方面的专家。我正在尝试为需要轮询 AD 和

  • 检查 PwdLastSet 和 LastLogonDate 属性

  • 根据每个用户的价值(锁定帐户、发送电子邮件等)做出 6 种不同的决定(策略)

理想情况下,如果它是数据库,我可以选择

  • 打开连接
  • 读取一小页数据
  • 关闭连接
  • 通过应用程序在内存中处理它们
  • 重复

(因此将其留给连接池来处理事情并允许其他人做他们的事情)。

我真的很想知道在这种情况下可扩展的最佳实践/方法。我只需要为所有用户获取这两个属性(当然我们有过滤器 - 例如删除不活动的)

就个人而言,我想知道我是否应该

  • 使用我们的自定义调度程序服务来运行 Powershell(或 .NET),使用 DirectorySearcher,打开连接 (ssl),使用分页一次读取 100 / 1000 个用户并在内存中处理它们。与 AD 的连接保持打开状态

  • 打开与 AD 的连接,在 CSV(分页)中获取所有用户的转储,关闭连接,将其写入数据库以供其他任务处理。但这必须是一项夜间工作,具有数据库的潜在批量权利。

  • 在数据库表中复制这两个属性,并在它们通过我们的应用程序在 AD 中更改时保持同步。从这里消费数据。

等等。

建议?

4

1 回答 1

0

尽可能从源头过滤。尽可能返回最少的属性集。

您可以利用DirectorySynchronization,但我想说这样做只有在您需要进行大量客户端计算时才有价值。我用这个技术来管理广告中的照片。我有一个离线同步集,其中将照片作为哈希值,可用于确保我只在需要的地方更新,并且当我更新时,我只从上次执行以来从目录中提取更改。

对于基于 pwdLastSet 或 lastLogonTimeStamp 的操作,我将始终生成 (LDAP) 过滤器,允许我向 AD 询问最小的结果集。我将始终要求我实际需要使用的最少数量的属性。

于 2016-08-10T08:19:43.500 回答