本文介绍如何启用和使用 Windows Server 中的组管理服务帐户(gMSA)。
除非服务的所有实例都使用相同的主体,否则无法使用支持相互身份验证的身份验证协议,例如 Kerberos。 例如,当客户端计算机连接到使用负载均衡的服务或其他方法时,所有服务器对客户端来说都是相同的服务。 这意味着每种服务必须使用相同的密码或密钥以证明它们的身份。 组托管服务帐户是一种可以与多台服务器一起使用的帐户类型。 gMSA 是一个域帐户,可用于在多台服务器上运行服务,而无需管理密码。 gMSA 提供自动密码管理和简化的服务主体名称 (SPN) 管理,包括将管理委派给其他管理员。
Note
故障转移群集不支持 gMSA。 但是,运行在群集服务之上的服务如果是 Windows 服务、应用程序池、计划任务或原生支持 gMSA 或 sMSA 的服务,则可以使用 gMSA 或 sMSA。
服务可以选择要使用的主体。 每种主体类型都支持不同的服务,并且有不同的限制。
| Principals | 支持的服务 | 密码管理 |
|---|---|---|
| Windows 系统的计算机帐户 | 限于一个加入域的服务器 | 计算机管理 |
| 没有 Windows 系统的计算机帐户 | 任何加入域的服务器 | None |
| 虚拟帐户 | 限于一台服务器 | 计算机管理 |
| Windows 独立托管服务帐户 | 限于一个加入域的服务器 | 计算机管理 |
| 用户帐户 | 任何加入域的服务器 | None |
| 组托管服务帐户 | 任何加入 Windows Server 域的服务器 | 域控制器管理,以及主机检索 |
Windows 计算机帐户或 Windows 独立托管服务帐户 (sMSA) 或虚拟帐户无法在多个系统之间进行共享。 使用虚拟帐户时,该标识也是计算机的本地标识,域无法识别。 如果你为服务器场上的服务配置一个帐户以进行共享,则除了 Windows 系统以外,还必须选择一个用户帐户或计算机帐户。 无论哪种方式,这些帐户都不具有单个控制点密码管理功能。 没有密码管理时,每个组织都需要更新 Active Directory (AD) 中服务的密钥,并将这些密钥分发给所有该服务的实例。
借助 Windows Server,使用 gMSA 时,服务和服务管理员不需要管理服务实例之间的密码同步。 在 AD 中创建 gMSA,然后配置支持托管服务帐户的服务。 gMSA 的使用范围限于能够使用轻量目录访问协议(LDAP)检索 gMSA 凭据的任何计算机。 可以使用 AD 模块中的 New-ADServiceAccount cmdlet 创建 gMSA。 以下服务支持主机上的服务标识配置。
与 sMSA 相同的 API,以便支持 sMSA 的产品将支持 gMSA
使用服务控制管理器配置登录身份的服务
使用 Internet Information Services (IIS) 管理器的应用程序 池 配置标识的服务
使用 任务计划程序的任务。
Prerequisites
要管理 gMSA,设备必须满足以下要求:
您的设备必须已安装 Active Directory 域服务 (AD DS) 角色。 若要了解详细信息,请参阅 Windows Server 中的添加或删除角色和功能。
必须是 域管理员 或 企业管理员 组的成员。
域和林功能级别应设置为 Windows Server 2012 或更高版本,以支持所有设备的 gMSA 功能。 要了解有关更新架构的更多信息,请参阅在 Active Directory 域服务中提升域和林功能级别。
必须在域中创建密钥分发服务 (KDS) 根密钥以进行安全密码管理。 使用 KdsSvc 操作日志(事件 ID 4004)验证其创建。 有关创建 KDS (kdssvc.dll) 根密钥的详细信息,请参见创建密钥分发服务 KDS 根密钥。
Tip
要控制哪些主机或服务可以使用 gMSA,请将其计算机账户添加到指定的安全组(新建或现有),并为该组分配必要权限。 同样,使用安全组管理在 gMSA 下运行的服务访问,确保该组拥有服务操作和资源访问所需的全部权限。
若要使 Kerberos 身份验证能与使用 gMSA 的服务配合工作,需要满足以下条件:
确保为每个使用 gMSA 的服务正确注册服务主体名称(SPN)。 这使 Kerberos 能识别和认证服务。
确保正确设置 DNS 记录以进行名称解析,Kerberos 依赖此功能定位域服务。
确保防火墙和网络策略允许 Kerberos 流量及必要的服务通信。
针对 Kerberos 票证生命周期设置,按安全和运营需求配置票证过期和续订策略。
所有参与认证过程的系统必须时间同步。 Kerberos 对时间配置敏感,时间差异可能导致认证失败。
如果从非域控制器的计算机管理 AD,请安装远程服务器管理工具 (RSAT) 以访问所需管理功能。 RSAT 提供 PowerShell 的 AD 模块。 安装 RSAT 后,以管理员身份打开 PowerShell,运行 Import-Module ActiveDirectory 以启用 AD 管理 cmdlet。 这允许管理员远程安全管理 AD,减少域控制器负载。
创建 gMSA
要使用 PowerShell 创建 gMSA,请在提升权限的 PowerShell 窗口执行以下步骤:
Important
gMSA 帐户名必须在林级别中唯一,而不仅仅是在域中唯一。 尝试使用重复名称创建 gMSA 账户会失败,即使在不同域中也是如此。
如果尚无 KDS 根密钥,请按照创建密钥分发服务 KDS 根密钥中的指导创建。 如果密钥已存在,则跳过此步骤。
要创建 gMSA,运行以下命令。 将
<gMSAName>替换为你想要的 gMSA 名称,将<domain>替换为域名。 将<SecurityGroup>替换为应有权检索 gMSA 密码的安全组或计算机账户名称。New-ADServiceAccount -Name <gMSAName> -DNSHostName <gMSAName>.<domain> -PrincipalsAllowedToRetrieveManagedPassword <SecurityGroup>要创建仅用于出站认证的 gMSA,运行以下命令。 将
<Days>替换为数字值。 如果未提供值,则默认为30天。New-ADServiceAccount -Name <gMSAName> -DNSHostName <gMSAName>.<domain> -RestrictToOutboundAuthenticationOnly -ManagedPasswordIntervalInDays <Days> -PrincipalsAllowedToRetrieveManagedPassword <SecurityGroup>Important
仅可以在创建过程中设置密码更改时间间隔。 如果需要更改时间间隔,你必须创建新的 gMSA 并在创建时对它进行设置。
运行以下命令,验证目标设备是否有权检索 gMSA 密码。
Test-ADServiceAccount -Identity <gMSAName>
完成此过程需要属于相应安全组或拥有创建 msDS-GroupManagedServiceAccount 对象的必要委派权限。 虽然 帐户操作员 的成员可以管理 AD 中的某些用户和组对象,但它们没有创建 gMSA 的默认权限,除非这些权限委托给他们。 有关使用适当帐户和组成员身份的详细信息,请参阅 Active Directory 安全组。
也可以使用 Set-ADServiceAccount cmdlet 更新 gMSA 属性。 例如,要更新计算机显示名称,运行以下命令,将 <gMSAName> 和 <NewDisplayName> 替换为值:
Set-ADServiceAccount -Identity "<gMSAName>" -DisplayName "<NewDisplayName>"
有关如何设置 gMSA 的其他属性的详细信息,请参阅 Set-ADServiceAccount。
验证对 gMSA 的更改
修改 gMSA 后,可以验证 gMSA 是否正确更新。 这些修改包括添加、删除和卸载 gMSA。 当更新 gMSA 属性时,也可以随时执行此步骤。
运行以下命令,并将 <gMSAName> 替换为您创建的 gMSA 的名称:
Get-ADServiceAccount -Identity "<gMSAName>" | Select-Object *
将成员主机添加到安全组
Note
以组为中心的管理 (
Add-ADGroupMember/Remove-ADGroupMember):如果要管理特定组的成员身份,请使用这些 cmdlet。 安全组最适合高效地向单个组添加或删除多个用户、计算机或其他对象。以主体为中心的管理 (
Add-ADPrincipalGroupMembership/Remove-ADPrincipalGroupMembership):当你的目标是跨多个组管理特定用户或计算机的成员身份时,请选择这些 cmdlet。 它们允许您通过单次操作在多个组中添加或移除主体,从而更轻松地更新单个帐户的组隶属关系。
如果使用安全组管理成员主机,请将新成员主机的计算机账户添加到包含 gMSA 成员主机的安全组。 可使用以下方法之一来执行此操作:
要使用 Active Directory 用户和计算机 (ADUC) 管理单元,请参阅将计算机帐户添加到组和在 Active Directory 用户和计算机中管理用户帐户。
如果使用计算机帐户,请查找现有帐户,然后再添加新的计算机帐户。
从安全组中移除成员主机
从系统卸载 gMSA
虽然无法在 ADUC 中卸载 gMSA,但可以在“管理服务账户”容器中找到 gMSA 并像删除其他 AD 对象一样手动删除。 不过需要注意的是,它无法执行 Uninstall-ADServiceAccount 在 PowerShell 中所能完成的相同清理操作。
要卸载 gMSA,请打开提升权限的 PowerShell 窗口并执行以下步骤。
要从环境中移除单个 gMSA,运行以下命令,将
<gMSAName>替换为值:Uninstall-ADServiceAccount -Identity <gMSAName>要从环境中移除多个 gMSA,运行以下命令,将
<gMSA#$>替换为值:$gMSANames = @("gMSA1$", "gMSA2$", "gMSA3$") foreach ($gMSAs in $gMSANames) { Uninstall-ADServiceAccount -Identity $gMSAs }
有关 cmdlet 的详细信息 Uninstall-ADServiceAccount ,请参阅 Uninstall-ADServiceAccount。