RID池管理

   Active Directory 中的用户、计算机和组统称为“安全主体”。安全主体会被分配一个唯一的叫做安全标识符 (SID) 的字母数字字符串。安全主体的 SID 由一个域范围的 SID 和一个具有唯一性的相对标识符 (RID) 串接而成。RID 是在创建安全主体时由域中的RID Master分配的。RID Master的作用是:分配可用RID池给域内的DC和防止安全主体的SID重复。

   S-1-5-21-1004336348-1177238915-682003330-2100

   ==>

   S-1-5-Domain Identifier-Relative Identifier


   各域控制器维护着从 RID 操作主机上的全局池获得的本地 RID 池。默认情况下,RID 池是以 500 这一增量获取的。当 RID 池剩余50% 时,域控制器将请求一个新 RID。大规模 ADMT 迁移环境中的域控制器可能在很短的时间内创建大量的安全主体。与传统的企业部署相比,这可能会更快地用完其本地 RID 池。

   当域控制器的本地 RID 池用完但又由于域控制器自身的问题而无法从 RID 操作主机上获取新池时,就会出现问题。RID 操作主机、网络以及域控制器于是将无法创建更多的安全主体,并停止公布域控制器服务,直到获得一个新的本地池为止。
 

  为了减少这种丢失服务的可能性,管理员可以通过在DC上调整 REG_DWORD RID Block Size 值来增加由 RID 操作主机在每个池中分配的 RID 的数量,此值位于以下注册表项中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\RID Values\

然而,由于 RID 阈值比较逻辑的缺陷,小于500 的“RID Block Size”(RID 块大小)值实际上会被忽略,并返回默认的分配值 500。

    如果您决意要使用 一个不同的 RID 块大小,只有 RID 操作主机上配置了此更改。不过,为简化对此设置的管理,可在目标域中所有的域控制器上以完全相同的方式配置此值。这样,如果 RID 操作主机转移到另一个域控制器,无须另外更新即可让 RID 块大小保持一致,而且“系统状态还原”将不会误覆盖特意的设置。

注意,对于每个域而言,全局 RID 空间,以及您能够创建的用户、计算机和组的数目都是有限的(约有 2^30 个 RID)。在域范围的 RID 池用完之后,将不能在域中创建新的安全主体。因此,增加“RID 块大小”有一定的风险。例如,每当通过正常或强制降级解除某个域控制器时,或者在出现硬件故障时,其 RID 将全部丢失。类似地,每当从备份中还原一个域控制器时,其 RID 将全部失效,这样有助于防止将同一个 RID 分配给一个以上的用户帐户。

也就是说RID Block Size值越大,潜在域RID池用的越快。系统会报16644错误:The maximum domain account identifier value has been reached. No further account-identifier pools can be allocated to domain controllers in this domain.


RID操作主机分配RID池:

   当你创建一个可读域控时,它会从RID操作主机获取500个RIDS,也就是说如果你提升10个DC的话,RID操作主机就会发布5000个RIDs,如果其中8台DC降级,然后重新提升为DC,现在一共发布了9000个RIDs,如果你又使用系统状态还原了某一台DC,那么现在共有9500个RIDs。获取到的RID 池不可回收使用,即使没有使用或使用的对象已经被删除了

.

虽然域可以有10亿RIDs可供使用,但如果反复大量创建用户,也有可能会出现RIDs用完的情况,出现以下情况会从RID操作主机上获取RID池:

创建用户,计算机,组

提升DC

正常降级DC

使用系统状态还原DC

强夺RID操作主机角色到另一台DC


以下非正常操作会造成RID池的浪费

使用脚本意外批量用户,计算机和组

创建并启用的用户不能满足密码策略

DC未启动的时间超过了墓碑时间

DC的元数据已经被清理

森林恢复

发起LDAP请求执行invalidateRidPool操作

在注册表里增加RID Poll Size的值


为让管理人员监控RID的使用情况,提供了以下方式去获取相关信息

1.Dcdiag.exe /test:ridmanager /v

wKioL1MMQHzwMPwUAAATHZIZYP8609.png

rIDAllocationPool 代表待使用的RID池

rIDPreviousAllocationPool 代表当前正在使用的RID池

rIDNextRID 代表最近一次分配的RID为1163

2.LDP.exe结合ADSIEDIT.exe 获取信息

使用ADSEDIT,查看 CN = RID Manager$,CN = 系统,DC =domain,DC = com

wKioL1MMQaKCYOxZAABmcPH8eQE104.png

点击查看相关字段,使用LDP转换获取信息

RidAvailablePool为整个域的全局 RID 空间。为整个域的全局 RID 空间。作为大整数的上限和下限的部分。上半部分中定义安全主体可分配的每个域 (0x3FFFFFFF 或刚刚超过 10 亿) 的数。下半部分是已分配的域中的 Rid 数。若要查看这两个部件,用在 Ldp.exe实用程序菜单上大整数转换器命令。

wKioL1MMQqCjuCLJAABKcGlWpn0332.png


使用ADSEDIT,查看 CN = Rid Set Cn =computername,ou = 域控制器,DC =domain,DC = COM

wKioL1MMQ66jV48HAAAvMBBEbvE632.png

RidAllocationPool每个域控制器都有两个池: 它们目前采取行动,以及下一步他们将使用的池。它是下一步的池,分配由 RID FSMO,当前池用尽时,则在域中安全主体的创建时将使用它。大整数转换器命令用于 Ldp.exe 的实用程序中查看这两个池。

wKiom1MMRC3TB8e2AABBkdBTo7Y764.png

另外你会发现rlDAllocationPool和rlDPreviousAllocationPool的数值是一样的,注意只有当前的RID池使用达到50%,才会获取下一个RID池,所以它们是一样的。


参考资料:

http://support.microsoft.com/kb/305475

http://blogs.technet.com/b/askds/archive/2011/09/12/managing-rid-pool-depletion.aspx

你可能感兴趣的:(sid,dc,RID)