Microsoft Defender for Identity 目录服务帐户
本文章介绍了 Microsoft Defender for Identity 如何使用目录服务帐户 (DSA)。
注意
无论配置的目录服务帐户是什么,传感器服务都将在 LocalService 标识下运行,而更新器服务将在 LocalSystem 标识下运行。
虽然 DSA 在某些应用场景下是可选的,但我们建议你为 Defender for Identity 配置 DSA 以实现完全的安全覆盖。
例如,在配置了 DSA 时,DSA 将用于在启动时连接到域控制器。 DSA 还可用于向域控制器查询网络流量、监视的事件和监视的 ETW 活动中看到的实体的数据
以下特性和功能都需要 DSA:
使用安装在 AD FS/AD CS 服务器上的传感器时。
通过对设备的 SAM-R 调用,从网络流量、事件和 ETW 活动中看到的设备请求本地管理员组的成员列表。 收集的数据可用于计算潜在的横向移动路径。
访问 DeletedObjects 容器以收集有关已删除用户和计算机的信息。
域和信任映射,在传感器启动时进行,然后每 10 分钟进行一次。
当检测到来自其他域中实体的活动时,通过 LDAP 查询另一个域以获取详细信息。
在使用单个 DSA 时,该 DSA 必须拥有读取权限才能访问林中的所有域。 在不受信任的多林环境中,每个林都需要一个 DSA 帐户。
每个域中的一个传感器被定义为域同步器,由其负责跟踪域中实体的变化。 例如,更改可能包括创建的对象、Defender for Identity 跟踪的实体属性等。
注意
默认情况下,Defender for Identity 最多支持 30 个凭据。 要添加更多凭据,请联系 Defender for Identity 支持。
支持的 DSA 帐户选项
Defender for Identity 支持以下 DSA 选项:
选项 | 描述 | 配置 |
---|---|---|
组托管服务帐户 gMSA(建议使用) | 提供更安全的部署和密码管理。 Active Directory 管理帐户密码的创建和轮换,就像计算机帐户的密码一样,你可以控制帐户密码的更改频率。 | 有关更多信息,请参阅使用 gMSA 为 Defender for Identity 配置目录服务帐户。 |
常规用户帐户 | 可轻松使用,适合入门用户,在受信任林之间配置读取权限也更简单,但需要额外的密码管理开销。 常规用户帐户不太安全,因为它会要求你创建和管理密码,如果密码过期并且没有为用户和 DSA 更新,则可能导致停机。 |
在 Active Directory 中创建一个新帐户,用作对所有对象具有读取权限(包含对 DeletedObjects 容器的权限)的 DSA。 有关详细信息,请参阅授予所需的 DSA 权限。 |
本地服务帐户 | 本地服务帐户开箱即用,在未配置 DSA 时默认使用。 请注意: |
无 |
注意
虽然传感器默认使用本地服务帐户,而且在某些情况下 DSA 是可选的,但我们建议为 Defender for Identity 配置 DSA,以实现全面的安全覆盖。
DSA 项使用情况
本部分介绍了如何使用 DSA 项,以及传感器如何在任何给定应用场景中选择 DSA 项。 传感器尝试不同,具体取决于 DSA 项的类型:
类型 | 描述 |
---|---|
gMSA 帐户 | 传感器会尝试从 Active Directory 获取 gMSA 帐户密码,然后登录域。 |
常规用户帐户 | 传感器尝试使用配置的用户名和密码登录域。 |
应用以下逻辑:
传感器查找与目标域的域名完全匹配的项。 如果发现完全匹配的项,传感器将尝试使用该项中的凭据进行身份验证。
如果没有完全匹配,或者身份验证失败,传感器会使用 DNS FQDN 在列表中搜索父域的项,并尝试使用父项中的凭据进行身份验证。
如果没有父域的条目,或者身份验证失败,则传感器会使用 DNS FQDN 在列表中搜索同级域条目,并尝试使用同级域条目中的凭据进行身份验证。
如果没有同辈域的项,或者身份验证失败,传感器会再次检查列表,并尝试对每个项再次进行身份验证,直到成功为止。 DSA gMSA 项的优先级高于常规 DSA 项。
DSA 的示例逻辑
本部分提供了一个示例,说明当你有多个帐户(包含 gMSA 帐户和常规帐户)时,传感器会如何尝试 DSA 项。
应用以下逻辑:
传感器查找目标域的 DNS 域名(如
emea.contoso.com
)和 DSA gMSA 项(如emea.contoso.com
)之间的匹配。传感器查找目标域的 DNS 域名(如
emea.contoso.com
)和 DSA 常规项 DSA(如emea.contoso.com
)之间的匹配传感器查找目标域的根 DNS 名称(如
emea.contoso.com
)和 DSA gMSA 项域名(如contoso.com
)中的匹配。传感器查找目标域的根 DNS 名称(如
emea.contoso.com
)和 DSA 常规项域名(如contoso.com
)中的匹配。传感器查找同辈域的目标域名(如
emea.contoso.com
)和 DSA gMSA 项域名(如apac.contoso.com
)。传感器查找同辈域的目标域名(如
emea.contoso.com
)和 DSA 常规项域名(如apac.contoso.com
)。传感器对所有 DSA gMSA 项运行循环配置。
传感器对所有 DSA 常规项运行循环配置。
通过下面的配置实现此示例中显示的逻辑:
DSA 项:
DSA1.emea.contoso.com
DSA2.fabrikam.com
传感器和首先使用的 DSA 项:
域控制器 FQDN 使用的 DSA 项 DC01.emea.contoso.com
DSA1.emea.contoso.com
DC02.contoso.com
DSA1.emea.contoso.com
DC03.fabrikam.com
DSA2.fabrikam.com
DC04.contoso.local
轮循机制
重要
如果传感器在启动时无法通过 LDAP 成功对 Active Directory 域进行身份验证,则传感器将不会进入正在运行状态,并生成运行状况问题。 有关详细信息,请参阅 Defender for Identity 运行状况问题。
授予所需的 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
有关更多信息,请参阅更改已删除对象容器的权限。
通过 PowerShell 测试 DSA 权限和委派
使用以下 PowerShell 命令验证 DSA 是否有太多权限,如强大的管理员权限:
Test-MDIDSA [-Identity] <String> [-Detailed] [<CommonParameters>]
例如,要检查 mdiSvc01 帐户的权限并提供全部详细信息,请运行:
Test-MDIDSA -Identity "mdiSvc01" -Detailed
有关详细信息,请参阅 DefenderForIdentity PowerShell 参考。