使用 gMSA 为 Defender for Identity 配置目录服务帐户
本文介绍如何创建 组托管服务帐户 (gMSA) 用作 Defender for Identity DSA 条目。
有关详细信息,请参阅用于Microsoft Defender for Identity的目录服务帐户。
注意
在多林、多域环境中,需要使用 gMSA 的传感器需要让创建 gMSA 的域信任其计算机帐户。 建议在每个域中创建一个包含所有传感器计算机帐户的通用组,以便所有传感器都可以检索 gMSA 的密码,并执行跨域身份验证。 我们还建议为每个林或域创建具有唯一名称的 gMSA。
先决条件:授予检索 gMSA 帐户密码的权限
在创建 gMSA 帐户之前,请考虑如何分配检索帐户密码的权限。
使用 gMSA 条目时,传感器需要从 Active Directory 检索 gMSA 的密码。 这可以通过分配给每个传感器或使用组来完成。
在单林单域部署中,如果不打算在任何 AD FS/AD CS 服务器上安装传感器,则可以使用内置域控制器安全组。
在具有多个域的林中,使用单个 DSA 帐户时,建议创建一个通用组,并将每个域控制器和 AD FS/AD CS 服务器添加到通用组。
如果在计算机收到其 Kerberos 票证后将计算机帐户添加到通用组,则在收到新的 Kerberos 票证之前,它将无法检索 gMSA 的密码。 Kerberos 票证包含颁发票证时实体所属的组列表。
在这种情况下,请执行下列操作之一:
等待颁发新的 Kerberos 票证。 Kerberos 票证的有效期通常为 10 小时。
重新启动服务器。 重新启动服务器时,会请求具有新组成员身份的新 Kerberos 票证。
清除现有的 Kerberos 票证。 这会强制域控制器请求新的 Kerberos 票证。
若要清除票证,请从域控制器上的管理员命令提示符处运行以下命令:
klist purge -li 0x3e7
创建 gMSA 帐户
本部分介绍如何创建可检索帐户密码的特定组、创建 gMSA 帐户,然后测试该帐户是否可供使用。
注意
如果以前从未使用过 gMSA 帐户,则可能需要为 Active Directory 中的 Microsoft 组密钥分发服务 (KdsSvc) 生成新的根密钥。 每个林仅需要一次此步骤。
若要生成新的根密钥以供立即使用,请运行以下命令:
Add-KdsRootKey -EffectiveImmediately
使用环境的变量值更新以下代码。 然后,以管理员身份运行 PowerShell 命令:
# Variables:
# Specify the name of the gMSA you want to create:
$gMSA_AccountName = 'mdiSvc01'
# Specify the name of the group you want to create for the gMSA,
# or enter 'Domain Controllers' to use the built-in group when your environment is a single forest, and will contain only domain controller sensors.
$gMSA_HostsGroupName = 'mdiSvc01Group'
# Specify the computer accounts that will become members of the gMSA group and have permission to use the gMSA.
# If you are using the 'Domain Controllers' group in the $gMSA_HostsGroupName variable, then this list is ignored
$gMSA_HostNames = 'DC1', 'DC2', 'DC3', 'DC4', 'DC5', 'DC6', 'ADFS1', 'ADFS2'
# Import the required PowerShell module:
Import-Module ActiveDirectory
# Set the group
if ($gMSA_HostsGroupName -eq 'Domain Controllers') {
$gMSA_HostsGroup = Get-ADGroup -Identity 'Domain Controllers'
} else {
$gMSA_HostsGroup = New-ADGroup -Name $gMSA_HostsGroupName -GroupScope DomainLocal -PassThru
$gMSA_HostNames | ForEach-Object { Get-ADComputer -Identity $_ } |
ForEach-Object { Add-ADGroupMember -Identity $gMSA_HostsGroupName -Members $_ }
}
# Create the gMSA:
New-ADServiceAccount -Name $gMSA_AccountName -DNSHostName "$gMSA_AccountName.$env:USERDNSDOMAIN" `
-PrincipalsAllowedToRetrieveManagedPassword $gMSA_HostsGroup
授予所需的 DSA 权限
DSA 需要对 Active Directory 中的所有对象(包括 已删除的对象容器)具有只读权限。
“ 已删除对象” 容器的只读权限允许 Defender for Identity 检测 Active Directory 中的用户删除。
使用以下代码示例来帮助授予对 已删除对象 容器所需的读取权限,而不管是否使用 gMSA 帐户。
提示
如果要向其授予权限的 DSA 是组托管服务帐户 (gMSA) ,则必须先创建安全组,将 gMSA 添加为成员,然后将权限添加到该组。 有关详细信息,请参阅 使用 gMSA 为 Defender for Identity 配置目录服务帐户。
# Declare the identity that you want to add read access to the deleted objects container:
$Identity = 'mdiSvc01'
# If the identity is a gMSA, first to create a group and add the gMSA to it:
$groupName = 'mdiUsr01Group'
$groupDescription = 'Members of this group are allowed to read the objects in the Deleted Objects container in AD'
if(Get-ADServiceAccount -Identity $Identity -ErrorAction SilentlyContinue) {
$groupParams = @{
Name = $groupName
SamAccountName = $groupName
DisplayName = $groupName
GroupCategory = 'Security'
GroupScope = 'Universal'
Description = $groupDescription
}
$group = New-ADGroup @groupParams -PassThru
Add-ADGroupMember -Identity $group -Members ('{0}$' -f $Identity)
$Identity = $group.Name
}
# Get the deleted objects container's distinguished name:
$distinguishedName = ([adsi]'').distinguishedName.Value
$deletedObjectsDN = 'CN=Deleted Objects,{0}' -f $distinguishedName
# Take ownership on the deleted objects container:
$params = @("$deletedObjectsDN", '/takeOwnership')
C:\Windows\System32\dsacls.exe $params
# Grant the 'List Contents' and 'Read Property' permissions to the user or group:
$params = @("$deletedObjectsDN", '/G', ('{0}\{1}:LCRP' -f ([adsi]'').name.Value, $Identity))
C:\Windows\System32\dsacls.exe $params
# To remove the permissions, uncomment the next 2 lines and run them instead of the two prior ones:
# $params = @("$deletedObjectsDN", '/R', ('{0}\{1}' -f ([adsi]'').name.Value, $Identity))
# C:\Windows\System32\dsacls.exe $params
有关详细信息,请参阅 更改对已删除对象容器的权限。
验证 gMSA 帐户是否具有所需的权限
Defender for Identity 传感器服务 (Azure 高级威胁防护传感器)作为 LocalService 运行,并模拟 DSA 帐户。 如果配置了 “作为服务登录” 策略,但尚未向 gMSA 帐户授予权限,则模拟将失败。 在这种情况下,你将看到以下运行状况问题: 目录服务用户凭据不正确。
如果看到此警报,建议检查是否已配置“ 以服务身份登录”策略 。 如果需要配置“作为服务登录”策略,请在组策略设置或本地安全策略中配置。
若要检查本地策略,请运行
secpol.msc
并选择“本地策略”。 在 “用户权限分配”下,转到 “作为服务登录”策略 设置。 例如:如果启用了策略,请将 gMSA 帐户添加到可以作为服务登录的帐户列表中。
若要检查设置是否在组策略中配置:运行
rsop.msc
并查看是否选择了“计算机配置-> Windows 设置 -> 安全设置 -> 本地策略 -> 用户权限分配 -> 以服务身份登录”策略。 例如:如果配置了设置,请将 gMSA 帐户添加到可在 组策略 管理编辑器中作为服务登录的帐户列表。
注意
如果使用 组策略 管理编辑器配置“作为服务登录”设置,请确保同时添加 NT Service\All Services 和创建的 gMSA 帐户。
在 Microsoft Defender XDR 中配置目录服务帐户
若要将传感器与 Active Directory 域连接,需要在 Microsoft Defender XDR 中配置目录服务帐户。
在Microsoft Defender XDR中,转到“设置>标识”。 例如:
选择“ 目录服务帐户”。 你将看到哪些帐户与哪些域相关联。 例如:
若要添加目录服务帐户凭据,请选择“添加凭据”,然后输入之前创建的帐户的“帐户名称”、“域”和“密码”。 还可以选择它是组 托管服务帐户 (gMSA) ,以及它是否属于 单标签域。 例如:
字段 Comments 帐户名称 (必需) 输入只读 AD 用户名。 例如: DefenderForIdentityUser。
- 必须使用 标准 AD 用户或 gMSA 帐户。
- 不要 将 UPN 格式用于用户名。
- 使用 gMSA 时,用户字符串应以$
符号结尾。 例如:mdisvc$
注意: 建议避免使用分配给特定用户的帐户。标准 AD 用户帐户) 所需的密码 ( 对于仅 AD 用户帐户,请为只读用户生成强密码。 例如: PePR!BZ&}Y54UpC3aB
。gMSA 帐户) 所需的组托管服务帐户 ( 仅对于 gMSA 帐户,请选择“ 组托管服务帐户”。 需要域 () 输入只读用户的域。 例如: contoso.com。
请务必输入用户所在的域的完整 FQDN。 例如,如果用户的帐户位于域 corp.contoso.com 中,则需要输入corp.contoso.com
而不是contoso.com
。
有关详细信息,请参阅 单标签域Microsoft支持。选择“保存”。
(可选) 如果选择帐户,则会打开详细信息窗格,其中包含该帐户的设置。 例如:
注意
可以使用同一过程更改标准 Active Directory 用户帐户的密码。 没有为 gMSA 帐户设置密码。
疑难解答
有关详细信息,请参阅 传感器无法检索 gMSA 凭据。