保护组托管服务帐户

组托管服务帐户 (gMSA) 是帮助保护服务的域帐户。 gMSA 可以在一台服务器上运行,也可以在服务器场中运行,例如支持网络负载均衡的系统或 Internet Information Services (IIS) 服务器。 将服务配置为使用 gMSA 主体后,帐户密码管理将由 Windows 操作系统 (OS) 处理。

gMSA 的优势

gMSA 是安全性很高的标识解决方案,可帮助降低管理开销:

  • 设置强密码 - 240 字节随机生成的密码:gMSA 密码的复杂性和长度最大限度地降低了暴力破解或字典攻击破坏的可能性
  • 定期轮换密码 - 密码管理由 Windows OS 负责处理,它将每隔 30 天更改一次密码。 服务和域管理员无需计划密码更改或管理服务中断问题。
  • 支持部署到服务器场 - 将 gMSA 部署到多台服务器能够支持多台主机运行同一服务的负载均衡解决方案
  • 支持简化的服务主体名称 (SPN) 管理 - 创建帐户时,可以使用 PowerShell 设置 SPN。
    • 另外,如果正确设置了 gMSA 权限,支持自动 SPN 注册的服务可能会对 gMSA 执行此操作。

使用 gMSA

将 gMSA 用作本地服务的帐户类型,除非服务(例如故障转移群集)不支持它。

重要

将服务投入生产之前,先使用 gMSA 对其进行测试。 设置测试环境以确保应用程序使用 gMSA,然后再访问资源。 有关详细信息,请参阅对组托管服务帐户的支持

如果某个服务不支持 gMSA,你可以使用独立的托管服务帐户 (sMSA)。 sMSA 具有相同的功能,但只能部署在单个服务器上。

如果你不能使用你的服务支持的 gMSA 或 sMSA,请将此服务配置为以标准用户帐户的身份运行。 服务和域管理员必须遵守强密码管理流程,以帮助确保帐户安全。

评估 gMSA 安全态势

gMSA 比标准用户帐户更安全,因为它需要进行持续的密码管理。 但是,在安全状况方面,应该考虑到 gMSA 的访问范围。 下表显示了使用 gMSA 的潜在安全问题和缓解措施:

安全问题 缓解措施
gMSA 是特权组的成员 - 评审你的组成员身份。 创建一个 PowerShell 脚本用于枚举组成员身份。 按 gMSA 文件名筛选生成的 CSV 文件
- 从特权组中删除 gMSA
- 授予 gMSA 运行其服务所需的权利和权限。 请咨询服务供应商。
gMSA 对敏感资源具有读/写访问权限 - 审核对敏感资源的访问权限
- 将审核日志存档到某个 SIEM(例如 Azure Log Analytics 或 Microsoft Sentinel)
- 如果存在不必要的访问级别,请删除不必要的资源权限

查找 gMSA

你的组织可能已设置 gMSA。 若要检索这些帐户,请运行以下 PowerShell cmdlet:

Get-ADServiceAccount 
Install-ADServiceAccount 
New-ADServiceAccount 
Remove-ADServiceAccount 
Set-ADServiceAccount 
Test-ADServiceAccount 
Uninstall-ADServiceAccount

托管服务帐户容器

若要有效运行,gMSA 必须位于托管服务帐户容器中。

Screenshot of a gMSA in the Managed Service Accounts container.

若要查找不包含在列表中的服务 MSA,请运行以下命令:


Get-ADServiceAccount -Filter *

# This PowerShell cmdlet returns managed service accounts (gMSAs and sMSAs). Differentiate by examining the ObjectClass attribute on returned accounts.

# For gMSA accounts, ObjectClass = msDS-GroupManagedServiceAccount

# For sMSA accounts, ObjectClass = msDS-ManagedServiceAccount

# To filter results to only gMSAs:

Get-ADServiceAccount -Filter * | where-object {$_.ObjectClass -eq "msDS-GroupManagedServiceAccount"}

管理 gMSA

若要管理 gMSA,请使用以下 Active Directory PowerShell cmdlet:

Get-ADServiceAccount

Install-ADServiceAccount

New-ADServiceAccount

Remove-ADServiceAccount

Set-ADServiceAccount

Test-ADServiceAccount

Uninstall-ADServiceAccount

注意

在 Windows Server 2012 和更高版本中,*- ADServiceAccount cmdlet 可与 gMSA 配合使用。 了解详细信息:组托管服务帐户入门

迁移到 gMSA

gMSA 是本地使用的安全服务帐户类型。 建议尽可能使用 gMSA。 此外,请考虑将服务迁移到 Azure,将服务帐户迁移到 Microsoft Entra ID。

注意

在将服务配置为使用 gMSA 之前,请参阅组托管服务帐户入门

若要迁移到 gMSA,请执行以下操作:

  1. 确保在林中部署密钥分发服务 (KDS) 根密钥。 这是一次性操作。 请参阅创建密钥分发服务 KDS 根密钥
  2. 创建一个新的 gMSA。 请参阅组托管服务帐户入门
  3. 在运行该服务的主机上安装新的 gMSA。
  4. 将服务标识更改为 gMSA。
  5. 指定空密码。
  6. 验证服务是否在新的 gMSA 标识下运行。
  7. 删除旧的服务帐户标识。

后续步骤

若要详细了解如何保护服务帐户,请参阅以下文章: