我正在实施一个工具来保护AD林中的某些共享资源(主要是文件共享)。 根据一些标准,会生成来自不同域的用户列表,将这些用户添加到通用组(因为我需要从单个组中的不同域收集用户),然后将该通用组添加到共享资源ACL中。
这个森林大约有一万个用户,我认为我的普及组每个用户最多可以有2000个用户。 而且可能会有几千个这样的团体。
一切看起来不错,并在testing环境中工作。
问题是有一个关于组最佳实践的MS文章: http : //technet.microsoft.com/en-us/library/cc787646(v=ws.10).aspx
几乎相同的写在这里: http : //ss64.com/nt/syntax-groups.html
在“控制跨域共享资源访问的最佳实践”一节中,我们应该创build域本地组,并在其中嵌套全局/通用组。 我明白,它有一个pipe理上的好处,更容易pipe理,能见度等
但是我正在做所有事情的自动化,我的工具将自己监视正确的安全。
我们的一些IT顾问试图说服我,不遵循最佳做法也可能导致业绩不佳。
所以基本上问题是:如果我在共享资源上直接添加通用组,而不是在域本地组中嵌套通用组,那么性能是否会下降(这意味着需要时间来login,以保护目录等)?
提前致谢。
更新:
嵌套组也有一个限制。 ( http://support.microsoft.com/kb/328889 )有1015个用户组的限制。 因此,如果将通用组embedded域本地组,我会得到500个限制,这似乎是一个痛苦的限制。
UPDATE2:关于我的森林拓扑。 我有6个域名,分成2棵树。 (树由一个根域和两个子域组成)
这是微软关于通用组的声明。 特别是粗体的部分与你有关:
通用组可以在同一个Windows林中的任何地方使用。 它们只能在本机模式的企业中使用。 对于一些pipe理员来说,通用组可能是一个更简单的方法,因为它们的使用没有内在限制。 用户可以直接分配到通用组,可以嵌套,并且可以直接使用访问控制列表来表示企业中任何域中的访问权限。
通用组存储在全局编录(GC)中; 这意味着对这些组所做的所有更改都会导致复制到整个企业中的所有全局编录服务器。 因此,必须仔细研究通用组的好处,而不是增加全局编录复制负载的成本,才能对通用组进行更改。 如果一个组织只有一个单一的连接良好的局域网,则不应该经历性能下降,而广泛分散的网站可能会受到重大影响。 通常情况下,使用广域网的组织应仅使用通用组,其中成员资格变化很less的相对静态组。
在每个人都可以访问全局编录的良好连接环境中,性能影响应该是相当小的。
如果无法访问全局编录,或者您的站点和子网configuration错误,以至于您发现自己与全局编录服务器与您的站点之外进行通信,则性能影响将增加login时间,并增加评估资源ACL的时间。 此外,还会增加全局编录复制负载。
不过,我不得不再次通知您,您所做的是违背公认的最佳做法。
你说的这部分内容: “…我的工具本身就会保证正确的安全。” 这也让我害怕。
所以我在你的IT顾问一边,我认为他们正在努力劝说你遵循ADdevise方面普遍接受的最佳实践。
但无论如何,你的问题都有答案。
回过头来看,一种潜在的性能scheme是,在Windows Server 2003之前,组成员身份复制的性能要差得多,而在Windows Server 2003之前创build的旧成员身份的旧组仍然能够执行得不好。
在Windows Server 2003之前,只要全局/通用组成员发生更改, 整个组成员属性就会被复制。 这对于大型分布式目录具有严重的复制性能影响,特别是对于具有许多成员的通用组。 因此,在大型多域目录中,通常会将每个域中的全局安全组添加到通用组中。 这具有将成员复制分区到域本身的效果。
Windows Server 2003引入了链接值复制(LVR)。 这为新创build的组和其旧成员已转换的组解决了很多问题,因为当发生更改(添加/删除成员)时,只会复制单个“链接值”(成员)。
另一个潜在的问题是成员总数。 如果你拥有更多的用户,比如说50,000,并且需要有40,000用户join安全组,那么通常的做法是将每个组的成员数量限制在5000以下,这是因为这是最大数量的项目在一个primefaces的Active Directory事务中安全地提交。 但是,对于LVR组,更新大组成员的组不会再需要发送整个成员资格,因此通常不再是一个问题,只要您自己不要执行那么多的更新(添加/删除)单笔交易。
也就是说,对于多域林中的大型组来说,将特定于域的安全组作为成员添加到通常驻留在资源域中的单个通用安全组,仍然是一个很好的做法。 无论您是使用通用组来ACL资源,还是将通用组添加到域本地组,都由您决定。 实际上,我还没有看到使用通用组,性能或其他方面的许多问题。 请注意,访问全局编录应该很less成为问题,因为微软早已build议所有域控制器都是全局编录。 在域本地组周围没有转换任何组或其策略使用域本地组之前创build大型目录并不罕见。
某些原因域本地组是由Microsoft推荐的,因为它们为可以添加到组中的成员types提供了最大的灵活性,并为域pipe理员提供了自由控制级别。 它还提供了一种最小化组成员复制的方法:
全局编录复制
http://technet.microsoft.com/en-us/library/cc759007%28v=ws.10%29.aspx
“具有通用范围的组及其成员仅在全局编录中列出,具有全局或域局部作用域的组也列在全局编录中, 但它们的成员不是这样,从而减小了全局编录的大小和复制与保持全局编录保持最新状态相关的stream量,可以通过使用具有全局或域本地范围的组来改善networking性能,以便频繁更改目录对象。
您也不应将域本地组用于Active Directory中的ACL对象:
“当用户连接到全局编录并尝试访问对象时,将根据用户的令牌和对象的DACL执行访问检查。对象的DACL中指定的域本地组的任何权限托pipe全局编录(用户所连接的)所属的域控制器将是无效的,因为只有来自用户所属的全局编录的域的域本地组被表示在用户的访问令牌中,因此,当访问应该被授予时,用户可能被拒绝访问,或者当访问被拒绝时允许访问。
“作为最佳做法,在为Active Directory对象分配权限时,应避免使用域本地组,或者在使用Active Directory对象时注意其含义。”