设置委托托管服务帐户
委托托管服务帐户 (dMSA) 属于 Active Directory (AD) 帐户,可提供安全有效的凭据管理。 与传统服务帐户不同,dMSA 不需要手动密码管理,因为 AD 会自动处理它。 使用 dMSA,可以委托特定权限来访问域中的资源,从而降低安全风险,并提供了更好的可见性和服务帐户活动日志。
设置 dMSA 目前仅适用于运行 Windows Server 2025 的设备。 与传统服务帐户相比,DMSA 是一种更安全、更易于管理的服务帐户管理方法。 通过将关键服务迁移到 dMSA,组织可以确保以安全合规的方式管理这些服务。 DMSA 通过提供唯一且频繁轮换的密码来提供更高级别的安全性,从而降低了未经授权访问的可能性,并提高了整体安全性。
先决条件
- 如果使用的是远程管理工具,则须在设备上或所有设备上安装 Active Directory 域服务角色。 有关详细信息,请参阅安装或卸载角色、角色服务或功能。
- 安装此角色后,必须将设备提升为域控制器 (DC)。 在服务器管理器中,标志图标会显示新通知,选择将此服务器提升为域控制器,然后完成必要步骤。
- 在创建或迁移 dMSA 之前,必须在 DC 上生成 KDS 根密钥。 在 PowerShell 中运行
Get-KdsRootKey
,验证密钥是否可用。 如果密钥不可用,可以通过运行Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
来添加。
注意
若要将 dMSA 用作独立托管服务帐户 (MSA) 或取代旧服务帐户,需要在客户端设备上运行以下命令:
$params = @{
Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters"
Name = "DelegatedMSAEnabled"
Value = 1
Type = "DWORD"
}
Set-ItemProperty @params
创建独立的 dMSA
以下说明允许用户在不从传统服务帐户迁移的情况下创建新的 dMSA。
使用管理员权限打开 PowerShell 会话并运行:
$params = @{ Name = "ServiceAccountName" DNSHostName = "DNSHostName" CreateDelegatedServiceAccount = $true KerberosEncryptionType = "AES256" } New-ADServiceAccount @params
授予特定设备在 AD 中检索服务帐户密码的权限:
$params = @{ Identity = "DMSA Name" PrincipalsAllowedToRetrieveManagedPassword = "Machine$" } Set-ADServiceAccount @params
dMSA 的 msDS-DelegatedMSAState 属性值必须设置为 3。 若要查看当前属性值,请运行:
$params = @{ Identity = "dMSAsnmp" Properties = "msDS-DelegatedMSAState" } Get-ADServiceAccount @params
若要将此值设置为 3,请运行:
$params = @{ Identity = "dMSAsnmp" Properties = @{ "msDS-DelegatedMSAState" = 3 } } Set-ADServiceAccount @params
迁移到 dMSA
若要将服务帐户迁移到 dMSA,请执行以下步骤:
创建 dMSA,如创建独立的 dMSA 中所述。
启动帐户迁移到 dMSA:
$params = @{ Identity = "<DMSAName>" SupersededAccount = "<DN of service account>" } Start-ADServiceAccountMigration @params
如果要迁移到 dMSA 的服务帐户有权访问多个服务器,则须先应用注册表策略以确保其默认为 DC。 使用 dMSA 登录后,运行:
$params = @{ Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters" Name = "DelegatedMSAEnabled" Value = "1" PropertyType = "DWORD" Force = $true } New-ItemProperty @params
应用对注册表的更改并链接帐户后,通过运行以下命令重新启动帐户的正在运行的服务:
Get-Service | Where-Object {$_.Status -eq "Running"} | Restart-Service
注意
如果服务帐户连接到多个设备且迁移已结束,则需手动更新 PrincipalsAllowedToRetrieveManagedPassword。
完成帐户迁移
警告
完成迁移时,切勿删除原始服务帐户,以免需在迁移后恢复为此帐户,因为此操作会导致多个问题。
若要完成帐户迁移,必须通过运行以下命令来禁用传统服务帐户,从而确保所有服务均使用 dMSA。
若要禁用传统服务帐户,请运行以下命令:
$params = @{
Identity = "<DMSAName>"
SupersededAccount = "<DN of service account>"
}
Complete-ADServiceAccountMigration @params
如果迁移了错误的帐户,则请运行以下命令来撤消迁移期间执行的所有步骤:
$params = @{
Identity = "<DMSAName>"
SupersededAccount = "<DN of service account>"
}
Undo-ADServiceAccountMigration @params
若要将服务帐户恢复为非活动状态或未链接状态,则请运行:
$params = @{
Identity = "<DMSAName>"
SupersededAccount = "<DN of service account>"
}
Reset-ADServiceAccountMigration @params
查看 dMSA 事件日志
通过执行以下操作,可使用事件查看器 (eventvwr.exe) 来查看事件:
- 右键单击开始,然后选择事件查看器。
- 在左窗格中,展开应用程序和服务,然后导航到 Microsoft\Windows\Security-Kerberos\Operational。
- 默认情况下会禁用针对此提供程序的日志记录;若要启用日志记录,请右键单击操作并选择启用日志。
下表描述了捕获的这些事件。
事件 ID | 说明 |
---|---|
307 | dMSA 迁移 - 此事件是为正在迁移的 dMSA 和已迁移的 dMSA 而写入。 其中包含有关旧服务帐户和新 dMSA 的信息。 |
308 | dMSA 权限添加 - 当计算机尝试将自身添加到允许在迁移期间检索 dMSA 的托管密码字段的主体时,便会记录此事件。 |
309 | dMSA 密钥提取 - 当 Kerberos 客户端尝试从域控制器提取 dMSA 的密钥时,便会记录此事件。 |