在 Active Directory 中保护基于用户的服务帐户

本地用户帐户是有助于保护在 Windows 上运行的服务的传统方法。 目前,使用这些帐户的前提是你的服务不支持组托管服务帐户 (gMSA) 和独立托管服务帐户 (sMSA)。 有关要使用的帐户类型的信息,请参阅保护本地服务帐户

你可以调查是否可以将服务移到 Azure 服务帐户(例如托管标识或服务主体)。

了解详细信息:

你可以创建本地用户帐户,为帐户用来访问本地资源和网络资源的服务和权限提供安全性。 与其他 Active Directory (AD) 用户帐户一样,本地用户帐户需要手动管理密码。 服务和域管理员需要维护强密码管理流程,以帮助确保帐户的安全。

创建用作服务帐户的用户帐户时,请将其用于一个服务。 使用一个命名约定来阐明它是一个服务帐户,并阐明与之相关的服务。

优点和挑战

本地用户帐户是一种通用的帐户类型。 用作服务帐户的用户帐户受管理用户帐户的策略控制。 如果不能使用 MSA,请使用它们。 评估计算机帐户是否是更好的选择。

下表总结了本地用户帐户的挑战:

挑战 缓解措施
密码管理是手动的,会导致安全性减弱和服务停机 - 确保密码的常规复杂性,并通过维护强密码的流程来管理更改
- 通过服务密码来协调密码更改,以便缩短服务停机时间
识别是服务帐户的本地用户帐户可能会很困难 - 记录在环境中部署的服务帐户
- 跟踪帐户名称及其可以访问的资源
- 考虑将前缀 svc 添加到用作服务帐户的用户帐户

查找用作服务帐户的本地用户帐户

本地用户帐户类似于其他 AD 用户帐户。 可能很难找到帐户,因为没有用户帐户属性将其标识为服务帐户。 建议为用作服务帐户的用户帐户创建命名约定。 例如,将前缀 svc 添加到服务名称:svc-HRDataConnector。

使用以下部分条件来查找服务帐户。 但是,这种方法可能找不到帐户:

  • 可安全用于委派
  • 使用服务主体名称
  • 使用永不过期的密码

若要查找用于服务的本地用户帐户,请运行以下 PowerShell 命令:

查找受信任的用于委托的帐户:


Get-ADObject -Filter {(msDS-AllowedToDelegateTo -like '*') -or (UserAccountControl -band 0x0080000) -or (UserAccountControl -band 0x1000000)} -prop samAccountName,msDS-AllowedToDelegateTo,servicePrincipalName,userAccountControl | select DistinguishedName,ObjectClass,samAccountName,servicePrincipalName, @{name='DelegationStatus';expression={if($_.UserAccountControl -band 0x80000){'AllServices'}else{'SpecificServices'}}}, @{name='AllowedProtocols';expression={if($_.UserAccountControl -band 0x1000000){'Any'}else{'Kerberos'}}}, @{name='DestinationServices';expression={$_.'msDS-AllowedToDelegateTo'}}

查找具有服务主体名称的帐户:


Get-ADUser -Filter * -Properties servicePrincipalName | where {$_.servicePrincipalName -ne $null}

查找密码永不过期的帐户:


Get-ADUser -Filter * -Properties PasswordNeverExpires | where {$_.PasswordNeverExpires -eq $true}

可审核对敏感资源的访问,并将审核日志存档到安全信息和事件管理 (SIEM) 系统。 使用 Azure Log Analytics 或 Microsoft Sentinel,可搜索并分析服务帐户。

评估本地用户帐户安全性

使用以下条件评估用作服务帐户的本地用户帐户的安全性:

  • 密码管理策略
  • 在特权组中具有成员身份的帐户
  • 重要资源的读/写权限

缓解潜在的安全问题

有关潜在的本地用户帐户安全问题及其缓解措施,请参阅下表:

安全问题 缓解措施
密码管理 - 确保密码复杂性和密码更改受定期更新和强密码要求的约束
-使用密码更新来协调密码更改,以最大限度减少服务故障时间
帐户是特权组的成员 - 查看组成员身份
- 从特权组中删除帐户
- 授予帐户运行其服务所需的权利和权限(请咨询服务供应商)
- 例如,拒绝本地登录或交互式登录
该帐户具有敏感资源的读/写权限 - 审核对敏感资源的访问权限
- 将审核日志存档到 SIEM:Azure Log Analytics 或 Microsoft Sentinel
- 如果检测到不需要的访问级别,则修正资源权限

安全的帐户类型

Microsoft 不建议将本地用户帐户用作服务帐户。 对于使用此帐户类型的服务,请评估一下,是可以将它配置为使用 gMSA 还是使用 sMSA。 此外,请评估是否可以将服务移至 Azure 以启用更安全的帐户类型。

后续步骤

详细了解保护服务帐户: