创建密钥分发服务 KDS 根密钥

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

本文适用于 IT 专业人士,介绍了在 Windows Server 2012 或更高版本中如何通过使用 Windows PowerShell 生成组托管服务帐户密码,在域控制器上创建一个 Microsoft 密钥分发服务 (kdssvc.dll) 根密钥。

域控制器 (DC) 需要使用根密钥来开始生成 gMSA 密码。 从创建时到允许所有域控制器聚合其 AD 复制,域控制器将最长等待 10 小时,才能允许创建 gMSA。 等待长达 10 小时是一项安全措施,可防止在环境中的所有 DC 都能应答 gMSA 请求之前生成密码。 过早地尝试使用 gMSA 可能会在 gMSA 主机尝试检索密码时失败,因为该密钥可能尚未复制到所有域控制器。 如果使用具有受限复制计划的 DC 或者存在复制问题,可能也会发生 gMSA 密码检索失败的情况。

注意

由于密钥的缓存,删除并重新创建根密钥可能会导致以下问题:旧密钥在被删除后继续使用。 如果重新创建根密钥,则应在所有域控制器上重启密钥分发服务 (KDC)。

“域管理员”或“企业管理员”组中的成员身份或同等身份是完成此过程的最低要求。 有关使用适当帐户和组成员身份的详细信息,请参阅 本地和域默认组

注意

要运行用于管理组托管服务帐户的 Windows PowerShell 命令,需要 64 位体系结构。

使用 Add-KdsRootKey cmdlet 创建 KDS 根密钥

  1. 在 Windows Server 2012 或更高版本的域控制器上,从任务栏中运行 Windows PowerShell。

  2. 在 Windows PowerShell Active Directory 模块的命令提示符下键入以下命令,然后按 ENTER:

    Add-KdsRootKey -EffectiveImmediately

    提示

    可以使用有效时间参数来使密钥在使用之前有时间传播到所有 DC。 使用 Add-KdsRootKey -EffectiveImmediately 可立即将一个根密钥添加到由 KDS 服务所使用的目标 DC。 但是,在复制成功之前,其他域控制器将不能使用根密钥。

KDS 根密钥存储在容器 CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=<forest name>; 中的 Active Directory 中。 它们具有属性 msKds-DomainID,该属性链接到创建了该对象的域控制器的计算机帐户。 当此域控制器降级并从域中删除时,该值将引用计算机帐户的逻辑删除。 你可以忽略损坏的值,因为它仅用来帮助管理员在对象刚创建时跟踪对象。 你还可以更改属性值,并将其指向林中另一个域控制器的计算机对象。

对于只带有一个 DC 的测试环境,你可以使用以下过程来创建 KDS 根密钥,并将开始时间设置为过去的时间,以避免密钥生成的时间间隔等待。 验证 KDS 事件日志中是否已记录了 4004 事件。

在测试环境中创建即时生效的 KDS 根密钥

  1. 在 Windows Server 2012 或更高版本的域控制器上,从任务栏中运行 Windows PowerShell。

  2. 在 Windows PowerShell Active Directory 模块的命令提示符下键入以下命令,然后按 ENTER:

    $a=Get-Date

    $b=$a.AddHours(-10)

    Add-KdsRootKey -EffectiveTime $b

    或使用单个命令

    Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))

另请参阅

组托管服务帐户入门