组托管服务帐户入门

在本文中,了解如何在 Windows Server 中启用和使用组托管服务帐户 (gMSA)。

除非服务的所有实例都使用相同的主体,否则无法使用支持相互身份验证的身份验证协议,例如 Kerberos。 例如,当客户端计算机连接到使用负载均衡的服务或其他方法时,所有服务器对客户端来说都是相同的服务。 这意味着每种服务必须使用相同的密码或密钥以证明它们的身份。 组托管服务帐户是一种可以与多台服务器一起使用的帐户类型。 gMSA 是一个域帐户,可用于在多台服务器上运行服务,而无需管理密码。 gMSA 提供自动密码管理和简化的服务主体名称 (SPN) 管理,包括将管理委派给其他管理员。

注意

故障转移群集不支持 gMSA。 但是,如果在群集服务上运行的服务是 Windows 服务、应用池、计划任务或是本机支持的 gMSA 或 sMSA,则它们可以使用 gMSA 或 sMSA。

服务可以选择要使用的主体。 每种主体类型都支持不同的服务,并且有不同的限制。

主体 支持的服务 密码管理
Windows 系统的计算机帐户 限于一个加入域的服务器 计算机管理
没有 Windows 系统的计算机帐户 任何加入域的服务器
虚拟帐户 限于一台服务器 计算机管理
Windows 独立托管服务帐户 限于一个加入域的服务器 计算机管理
用户帐户 任何加入域的服务器
组托管服务帐户 任何加入 Windows Server 域的服务器 域控制器管理,以及主机检索

Windows 计算机帐户或 Windows 独立托管服务帐户 (sMSA) 或虚拟帐户无法在多个系统之间进行共享。 使用虚拟帐户时,该标识也是计算机的本地标识,域无法识别。 如果你为服务器场上的服务配置一个帐户以进行共享,则除了 Windows 系统以外,还必须选择一个用户帐户或计算机帐户。 无论哪种方式,这些帐户都不具有单个控制点密码管理功能。 在没有密码管理的情况下,每个组织都需要更新 Active Directory 中服务的密钥,并将这些密钥分发给这些服务的所有实例。

借助 Windows Server,使用 gMSA 时,服务和服务管理员不需要管理服务实例之间的密码同步。 在 Active Directory 中创建 gMSA,然后配置支持托管服务帐户的服务。 gMSA 的使用范围限定为能够使用 LDAP 检索 gMSA 凭据的任何计算机。 可以使用作为 Active Directory 模块一部分的 New-ADServiceAccount cmdlet 创建 gMSA。 以下服务支持主机上的服务标识配置。

  • 与 sMSA 相同的 API,以便支持 sMSA 的产品将支持 gMSA

  • 使用服务控制管理器配置登录标识的服务

  • 将 IIS 管理器用于应用程序池以配置标识的服务

  • 使用任务计划程序的任务。

先决条件

下表列出了要与使用 gMSA 的服务搭配使用的针对 Kerberos 身份验证的操作系统要求。 在表后列出了 Active Directory 的要求。

若要运行用于管理 gMSA 的 Windows PowerShell 命令,需要 64 位体系结构。

操作系统

元素 要求
客户端应用程序主机 符合 RFC 的 Kerberos 客户端
用户帐户的域 DC 符合 RFC 的 KDC
共享的服务成员主机
成员主机的域 DC 符合 RFC 的 KDC
gMSA 帐户的域 DC 可供主机用来检索密码的 Windows Server 2012 DC
后端服务主机 符合 RFC 的 Kerberos 应用程序服务器
后端服务帐户的域 DC 符合 RFC 的 KDC
Active Directory 的 Windows PowerShell Active Directory 域服务远程服务器管理员工具

Active Directory 域服务

组托管服务帐户在 Active Directory 域服务 (AD DS) 中具有以下要求。

  • Active Directory 域与林功能级别必须是 Windows Server 2012 或更高版本。 若要详细了解如何更新架构,请参阅如何提高 Active Directory 域和林功能级别

  • 如果你正在管理服务主机权限以按照组使用 gMSA,则为新的或现有安全组。

  • 如果按照组管理服务访问控制,则为新的或现有安全组。

  • 必须在域中创建 Active Directory 的密钥分发服务 (KDS) 根密钥。 可以在 KdsSvc 运行日志 Event ID 4004 中验证其创建结果。 若要详细了解如何创建 KDS (kdssvc.dll) 根密钥,请参阅创建密钥分发服务 KDS 根密钥

部署新服务器场

使用 gMSA 功能创建和管理服务器场的过程通常涉及以下任务。

  • 部署新服务器场

  • 将成员主机添加到现有服务器场

  • 从现有服务器场解除成员主机的授权

  • 解除现有服务器场的授权

  • 如果需要,请从服务器场中删除已遭到入侵的成员主机

当服务管理员部署新的服务器场时,他们需要确定以下信息。

  • 该服务是否支持使用 gMSA

  • 该服务是否需要入站或出站经过身份验证的连接

  • 使用 gMSA 的服务的成员主机的计算机帐户名称

  • 该服务的 NetBIOS 名称

  • 该服务的 DNS 主机名

  • 该服务的服务主体名称 (SPN)

  • 密码更改间隔(默认值为 30 天)

创建组托管服务帐户

仅当林架构为 Windows Server 2012 或更高版本时,才能创建 gMSA。 还必须为 Active Directory 部署 KDS 根密钥,并在要在其中创建 gMSA 的域中至少有一个 Windows Server 2012 或更高版本的域控制器。

重要

gMSA 帐户名必须在林级别中唯一,而不仅仅是在域中唯一。 即使在不同的域中,尝试创建具有重复名称的 gMSA 帐户也会失败。

具有域管理员中的成员身份或能够创建 msDS-GroupManagedServiceAccount 对象是完成下列过程的最低要求。

若要使用 PowerShell 创建 gMSA,请执行以下步骤。

  1. 在 Windows Server 2012 域控制器上,从任务栏中运行 Windows PowerShell。

  2. 在 Windows PowerShell 命令提示符下键入以下命令,然后按 ENTER。 (Active Directory 模块会自动加载。)

    New-ADServiceAccount [-Name] <string> -DNSHostName <string> [-KerberosEncryptionType <ADKerberosEncryptionType>] [-ManagedPasswordIntervalInDays <Nullable[Int32]>] [-PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>] [-SamAccountName <string>] [-ServicePrincipalNames <string[]>]

    注意

    始终需要 -Name 参数的值(无论是否指定 -Name),其中 -DNSHostName-RestrictToSingleComputer-RestrictToOutboundAuthentication 是三种部署方案的次要要求。

    参数 字符串 示例
    名称 帐户的名称 ITFarm1
    DNSHostName 服务的 DNS 主机名称 ITFarm1.contoso.com
    KerberosEncryptionType 任何由主机服务器支持的加密类型 无、RC4、AES128、AES256
    ManagedPasswordIntervalInDays 密码更改时间间隔,以天为单位(如果不提供,则默认值为 30 天) 90
    PrincipalsAllowedToRetrieveManagedPassword 成员主机或成员主机是其成员的安全组的计算机帐户 ITFarmHosts
    SamAccountName 该服务的 NetBIOS 名称(如果与“名称”不相同) ITFarm1
    ServicePrincipalNames 该服务的服务主体名称 (SPN) http/ITFarm1.contoso.com/contoso.com、http/ITFarm1.contoso.com/contoso、http/ITFarm1/contoso.com, http/ITFarm1/contoso、MSSQLSvc/ITFarm1.contoso.com:1433、MSSQLSvc/ITFarm1.contoso.com:INST01

    重要

    仅可以在创建过程中设置密码更改时间间隔。 如果需要更改时间间隔,你必须创建新的 gMSA 并在创建时对它进行设置。

    例如,使用以下命令为组创建名为 ITFarm1 的新 gMSA。 gMSA 允许服务使用 Kerberos 加密类型 RC4、AES128 和 AES256。 允许该服务使用 SPN http/ITFarm1.contoso.com/contoso.comhttp/ITFarm1.contoso.com/contosohttp/ITFarm1/contoso.comhttp/ITFarm1/contoso

    在一个单独的行中输入命令,即使此处可能因格式限制而出现自动换行为多行。

     New-ADServiceAccount ITFarm1 -DNSHostName ITFarm1.contoso.com -PrincipalsAllowedToRetrieveManagedPassword ITFarmHosts$ -KerberosEncryptionType RC4, AES128, AES256 -ServicePrincipalNames http/ITFarm1.contoso.com/contoso.com, http/ITFarm1.contoso.com/contoso, http/ITFarm1/contoso.com, http/ITFarm1/contoso
    

必须至少具有域管理员帐户操作员中的成员身份或能够创建 msDS-GroupManagedServiceAccount 对象才能完成此过程。 有关使用适当帐户和组成员身份的详细信息,请参阅 Active Directory 安全组

若要仅使用 PowerShell 为出站身份验证创建 gMSA,请执行以下步骤。

  1. 在 Windows Server 2012 域控制器上,从任务栏中运行 Windows PowerShell。

  2. 在 Windows PowerShell Active Directory 模块的命令提示符下,使用以下命令。

    New-ADServiceAccount [-Name] <string> -RestrictToOutboundAuthenticationOnly [-ManagedPasswordIntervalInDays <Nullable[Int32]>] [-PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>]

    示例使用下表中的参数创建 gMSA。

    参数 字符串 示例
    名称 命名帐户 ITFarm1
    ManagedPasswordIntervalInDays 密码更改时间间隔,以天为单位(如果不提供,则默认值为 30 天) 75
    PrincipalsAllowedToRetrieveManagedPassword 成员主机或成员主机是其成员的安全组的计算机帐户 ITFarmHosts

    重要

    仅可以在创建过程中设置密码更改时间间隔。 如果需要更改时间间隔,你必须创建新的 gMSA 并在创建时对它进行设置。

    使用这些参数的示例命令如下所示。

    New-ADServiceAccount ITFarm1 -RestrictToOutboundAuthenticationOnly - PrincipalsAllowedToRetrieveManagedPassword ITFarmHosts$
    

配置服务标识应用程序服务

若要在 Windows Server 中配置服务,请参阅以下文章:

其他服务可以支持 gMSA。 请参阅相应的产品文档以了解有关如何配置这些服务的详细信息。

将成员主机添加到现有服务器场

如果使用安全组来管理成员主机,请使用下列方法之一将新成员主机的计算机帐户添加到 gMSA 的成员主机所隶属的安全组。

必须至少具有“域管理员”中的成员身份或能够将成员添加到安全组对象才能完成这些过程。

如果使用计算机帐户,请查找现有帐户,然后再添加新的计算机帐户。

必须至少具有域管理员帐户操作员中的成员身份或能够管理 msDS-GroupManagedServiceAccount 对象才能完成此过程。 有关使用适当帐户和组成员身份的详细信息,请参阅 本地和域默认组。

使用 PowerShell 添加成员主机

  1. 在 Windows Server 2012 域控制器上,从任务栏中运行 Windows PowerShell。

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

    Get-ADServiceAccount [-Identity] <string> -Properties PrincipalsAllowedToRetrieveManagedPassword

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

    Set-ADServiceAccount [-Identity] <string> -PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>

以下示例使用表中的参数将成员添加到服务器场。

参数 字符串 示例
名称 命名帐户 ITFarm1
PrincipalsAllowedToRetrieveManagedPassword 成员主机或成员主机是其成员的安全组的计算机帐户 Host1、Host2、Host3

以下示例获取服务器场 ITFarm1 的当前成员。

Get-ADServiceAccount [-Identity] ITFarm1 -Properties PrincipalsAllowedToRetrieveManagedPassword

以下示例将成员主机添加到现有服务器场 ITFarm1 中。

Set-ADServiceAccount [-Identity] ITFarm1 -PrincipalsAllowedToRetrieveManagedPassword Host1$,Host2$,Host3$

更新 gMSA 属性

必须至少具有“域管理员”、“帐户操作员”中的成员身份或能够写入 msDS-GroupManagedServiceAccount 对象才能完成这些过程。

请打开 Windows PowerShell 的 Active Directory 模块,并通过使用 Set-ADServiceAccount cmdlet 设置任何属性。

有关如何设置这些属性的详细信息,请参阅 TechNet 库中的 Set-ADServiceAccount 或通过在 Windows PowerShell 的 Active Directory 模块的命令提示符下输入 Get-Help Set-ADServiceAccount 并按 ENTER 来查看。

从现有服务器场删除成员主机

必须至少具有“域管理员”中的成员身份或能够将成员从安全组对象删除才能完成这些过程。

如果使用安全组来管理成员主机,请使用下列方法之一将新成员主机的计算机帐户从 gMSA 的成员主机所隶属的安全组中删除。

如果列出计算机帐户,请检索现有帐户,然后添加除已删除计算机帐户以外的所有帐户。

必须至少具有域管理员帐户操作员中的成员身份或能够管理 msDS-GroupManagedServiceAccount 对象才能完成此过程。 有关使用适当帐户和组成员身份的详细信息,请参阅 本地和域默认组。

使用 PowerShell 删除成员主机

  1. 在 Windows Server 2012 域控制器上,从任务栏中运行 Windows PowerShell。

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

    Get-ADServiceAccount [-Identity] <string> -Properties PrincipalsAllowedToRetrieveManagedPassword

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

    Set-ADServiceAccount [-Identity] <string> -PrincipalsAllowedToRetrieveManagedPassword <ADPrincipal[]>

示例使用下表中的参数将成员删除到服务器场。

参数 字符串 示例
名称 命名帐户 ITFarm1
PrincipalsAllowedToRetrieveManagedPassword 成员主机或成员主机是其成员的安全组的计算机帐户 Host1、Host3

以下示例获取服务器场 ITFarm1 的当前成员。

Get-ADServiceAccount [-Identity] ITFarm1 -Properties PrincipalsAllowedToRetrieveManagedPassword

以下示例从现有服务器场 ITFarm1 中删除成员主机。

Set-ADServiceAccount [-Identity] ITFarm1 -PrincipalsAllowedToRetrieveManagedPassword Host1$,Host3$

从系统中删除 gMSA

在主机系统上使用 Uninstall-ADServiceAccountNetRemoveServiceAccount API 从成员主机删除缓存的 gMSA 凭据。

必须至少具有“管理员”的成员身份或同等身份才能完成这些过程。

使用 PowerShell 删除 gMSA

  1. 在 Windows Server 2012 域控制器上,从任务栏中运行 Windows PowerShell。

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

    Uninstall-ADServiceAccount <ADServiceAccount>

    以下示例从计算机中卸载 Active Directory 托管服务帐户。

    Uninstall-ADServiceAccount ITFarm1
    

有关 Uninstall-ADServiceAccount 的详细信息,可通过在 Windows PowerShell 的 Active Directory 模块的命令提示符下输入 Get-Help Uninstall-ADServiceAccount 并按 ENTER 进行查看,或者参阅 TechNet Web 上的 Uninstall-ADServiceAccount信息。