Netwrix Auditor for Active Directory
查看特定用户属于哪些组:
- 运行 Netwrix Auditor → 转到“Reports”(报告)→ 单击“Predefined”(预定义)→ 展开“Active Directory”(Active Directory)部分 → 转到“Active Directory - State-in-Time”(Active Directory - State-in-Time)→ 选择“User Accounts - Group Membership”(用户帐户 - 组成员身份)→ 单击“View”(查看)。
- 在“Status”(状态)字段中指定“Enabled”(已启用),并在“Member Type”(成员类型)字段中输入“user”-> 单击“View Report”(查看报告)。
查看 AD 组成员:
- 运行 Netwrix Auditor → 转到“Reports”(报告)→ 单击“Predefined”(预定义)→ 展开“Active Directory”(Active Directory)部分 → 转到“Active Directory – State-in-Time”(Active Directory – State-in-Time)→ 选择“Group Members”(组成员)→ 单击“View”(查看)。
- 设置以下筛选条件:
- 状态:已启用
- 成员类型:用户
- 组路径:组的路径。你可以使用 % 作为通配符字符来指定特定组的部分路径,或保留通配符以查看所有组的报告。
- 单击“查看报告”。
原生解决方案
使用命令行查看用户的 AD 组成员身份:
- 通过进入“开始”→“运行”(或按 Win + R)并输入“cmd”来打开命令提示符。
- 在命令行中输入以下命令,并指定要查找其组成员身份的用户帐户:
net user username
- 在生成的报告末尾,您将找到用户所属的本地组和全局组列表:
使用命令行列出 AD 组的成员:
- 通过进入“开始 → 运行”(或按 Win + R)并输入“cmd”来打开命令提示符。
- 输入以下命令,并指定所需的组名:
net localgroup groupname
- 在生成的报告末尾,您将看到该组成员的列表:
如果需要检查 Windows 10 中的本地用户和组成员身份,NET 命令同样适用。
了解更多关于 Netwrix Auditor for Active Directory别再折腾命令行——把全貌掌握在手
最佳实践建议使用 Active Directory 组为用户授予访问权限——例如访问特定计算机、工具和服务器。不过随着时间推移,AD 组配置可能变得非常复杂,进而难以弄清楚谁可以访问什么,以及确保每位用户只拥有他们真正需要的权限。IT 管理员通常需要在 Windows 10 中查看 AD 组成员,或详细列出某个用户所属的所有组;随后,要么将这些信息提供给部门负责人进行访问权限核验(attestation),要么由管理员自行分析,以修复断裂的继承关系和其他安全问题。
你可以使用 Active Directory Users and Computers(ADUC)控制台的管理单元,通过查找目标用户或组、深入查看该对象的属性,然后点击“Members”或“Member Of”选项卡来查看 AD 组成员关系。另一种选择是通过命令行获取组成员信息——你可以使用 Active Directory Domain Services(AD DS)包中的以下工具:dsget user 以及 dsquery group ,或使用命令行中的原生 NET 命令。不过,NET USER 和 NET LOCALGROUP 命令的结果很难解析。虽然 dsget 和 dsquery 可以用来查询 AD 组成员关系并提供更结构化的输出,但这些命令仅在 Windows 的服务器版本上可用,并且要求你以 LDAP Data Interchange Format 输入专有名称(distinguished name)。最后一种选择是使用 Get-ADGroupMemberPowerShell cmdlet,它需要一定的脚本编写能力。 因此,使用原生工具审查 Active Directory 组成员关系可能既困难又耗时。
Netwrix Auditor for Active Directory 可以节省大量宝贵时间。系统运维人员无需通过命令行检查 AD 组成员关系,而是只需几次点击即可获取组成员概览。此外,Netwrix Auditor 还会报告修改情况、登录活动,以及 Active Directory 和组策略的配置,包括非活动的用户和计算机账户、Active Directory 对象权限等。它会提醒你可能存在的威胁,并提供高级搜索功能以加快调查。你可以使用多种预定义报表(均支持筛选、导出和订阅选项),并轻松创建自定义报表。该全面的功能可简化许多日常 IT 任务——从变更监控与访问控制,到权限复核与异常行为检测。
为什么要检查AD组成员身份
Windows 提供了多种从命令行确认组成员身份的方法。选择哪种方法取决于您是在检查自己、其他用户还是一个组,以及嵌套成员身份是否重要。
从目录中移除某人并不总是会移除其访问权限。当离职检查仅查看直接的组成员身份时,会遗漏通过嵌套组获得的访问权限,而这些访问权限会在应当终止它们的账户变更后依然存在。
不同的角色出于不同的原因执行此检查,原因通常决定了最适合的工具:
《Netwrix 2026 Data and Identity Security Report》发现,缺乏对谁拥有访问权限的可见性是组织指出的安全暴露的首要原因,有37%的受访者提到这一点,超过了其他任何原因。
- 帮助台和IT支持 确认用户无法访问资源的原因,追溯到应授予访问权限的组。
- 安全和合规团队 进行访问审查,比较实际在敏感组中的人员与应在人员。
这些工具都能处理,但当用户和组的数量增加时,处理效果不尽相同。
如何使用原生Windows命令检查组成员身份
- 离职工作流程 确认从目录中移除离职员工时,会将其从所有授予访问权限的组中移除,而不仅仅是其账户。
- 合规审计员 在审查过程中通过追溯用户的组成员身份到证据,验证访问是否符合已记录的策略,而不是盲目信任。
- AD管理员配置组策略对象(GPOs)和委派权限,因为两者都适用于组而非单个账户。
使用 net user 检查用户的组
- 打开命令提示符。
NET 命令提供了在加入域的计算机上进行一次性检查的最快方法。两者均可从标准命令提示符运行,使用 Windows 中已内置的组件。当组名较长或需要将结果输入脚本时,缺点就会显现。
3. 阅读输出中的Local Group Memberships和Global Group Memberships列。
- 使用 /domain 开关运行 net user,以查询域控制器而不是本地帐户数据库:
使用 net localgroup 和 net group 列出组成员
2. 对于域全局组而非本地组,运行 net group,它只解析全局组,因此域本地和通用组不会返回有用信息:
- 使用组名运行 net localgroup 以查看其中的成员,该命令读取本地计算机的组;添加 /domain 可改为查询主域控制器:
Netwrix Directory Manager 无需编码即可自动化混合 Active Directory 和 Entra ID 的加入-迁移-离职工作流。请求演示
没有 /domain 时,net localgroup 限定于该机器,使其成为快速检查谁拥有 本地管理员权限 的方法。微软对该命令范围的描述很直接:“工作站或非域控制器服务器仅限于该系统上定义的本地组。”
长名称在该输出中被截断。一个 Microsoft Q&A thread 记录了截断情况,并确认调整控制台窗口大小无济于事。20字符限制可追溯到 LAN Manager compatibility ,这比Active Directory出现早了几十年。
为什么手动检查组成员资格在大规模时变得困难
超过少数对象后,计算不再有效
实际上,这可能会产生如下行 *GcoFieldServicesEdito*AnimalWelfare_Readers,两个组名连在一起没有分隔符,这会让管理员寻找 解决方法。如果你的命名规则产生超过20个字符的内容,请将 net user 视为快速查看而非记录来源,不要在脚本中解析它。输出还显示了 仅直接成员资格;嵌套组不会显示。
本地命令在检查单个用户或单个组时运行良好。一旦问题涉及多个用户和多个组,它们就停止工作。
深层嵌套和循环引用
微软自身的最小权限指南发现,当其工程师提取成员服务器上的本地Administrators成员时,“数十个嵌套组展开后,显示出数百甚至数千个具有本地Administrator权限的账户”。
缺少所有权
微软自身的AD组清理指南将“其Active Directory Domain Services (AD DS)域中组的激增,特别是安全组”列为核心关注点,并将缺少所有者视为主要的清理触发因素。
如何使用 Active Directory Users and Computers (ADUC) 检查组成员身份
该指南警告称,“任何能够修改域中这些组成员资格的用户,都可以获得该组所嵌套的所有系统的管理控制权。” Netwrix 2025 Cybersecurity Trends Report发现41%的组织将自动化手动IT流程列为优先事项,高于2024年的31%。
如果没有能够担保成员资格的所有者,进行审核的人必须从一份空白的账户名称列表中重建意图。
Active Directory 不限制嵌套深度,也不阻止循环引用。组 A 可以包含组 B,组 B 又包含组 A,根据 Server Fault 的讨论,“Active Directory 中没有任何东西阻止这种情况发生。”微软则建议相反,建议管理员“限制嵌套组的数量,或者如果可能,完全不要使用它们。”
查看用户所属的组
当控制台已打开时,ADUC为您提供点按路径,显示完整且未截断的组名,并允许您在用户和组之间切换。该控制台(dsa.msc)随RSAT的Active Directory Domain Services组件一起提供,您可以通过Windows 11 Pro或Enterprise的设置 > 系统 > 可选功能安装。
2. 在相应的组织单位(OU)中找到用户帐户,或在域节点上使用查找。
3. 右键单击该帐户,选择“属性”,然后打开“成员”选项卡。
- 通过运行
dsa.msc打开ADUC,或转到Server Manager > Tools > Active Directory Users and Computers。
查看谁在组内
- 打开“成员”标签。
- 找到组对象,右键点击它,然后选择属性。
对于内置组如 Administrators 或 Account Operators,启用显示附加对象的 View 菜单选项,打开 Builtin 容器,然后检查 Members 选项卡。
如何使用 dsget 和 dsquery 检查组成员身份
ds* 工具返回完整名称,每行一个结果;您可以将输出直接传递给另一个命令。它们还附带两个条件。
Dsget 还需要对象的 LDAP 唯一名称 (DN),当其中包含空格时,请将其用引号括起来。
普通的 Windows 10 或 11 工作站只有在安装上述 RSAT 功能后才会获得它们,且微软要求您“从提升权限的命令提示符”运行 dsquery。
Member Of 选项卡直接读取 memberOf 属性。该属性排除主组,主组由 primaryGroupId 存储(默认是域用户),且仅包含直接成员资格。构造的 tokenGroups 属性包含完整的传递列表,但 ADUC GUI 从不显示它。
Dsquery 定位对象并将其 DN 传递给管道中的下一个命令,从而避免手动输入完整的 DN:
仅 dsget 语法如下,带有手动输入的 DN 作为参考:
2. 使用 -memberof 和 -expand 扩展成员资格
3. 获取每个结果的干净账户名称
1. 使用 dsquery 查找对象
将结果通过 dsget group 处理,将所有直接和嵌套组的原始条目转换为干净的 Security Account Manager (SAM) 账户名:
-memberof 开关返回用户所属的直接组列表。添加 -expand 会递归解析这些组中的每一个,生成微软所称的“组的完整闭包集合”。这种组合使得 dsget 在需要完整传递成员资格检查时非常有用,无需编写脚本。
如何使用 whoami 检查您自己的组成员身份
列出组成员时,规则相反,dsget group 接受 -members 和 -expand 参数:
以所需的输出格式运行whoami
该 whoami command 回答了比上述工具更具体的问题。它显示当前会话所属的组。标准用户可以在任何加入域的Windows 10、11或Server 2016至2025机器上运行,无需提升权限。
Dsquery 默认只返回前100个结果,因此当你需要全部时,请添加 -limit 0。就像 ADUC 的 Member Of 选项卡一样,-memberof 会跳过主组,因为底层的 memberOf 属性也将其排除。
同样基于令牌的设计也是其限制。您无法检查其他用户或远程计算机,且令牌会保持冻结状态直到下一次登录。Windows 直接说明:“它不会更新上下文,直到用户下一次登录。”
如何使用PowerShell检查组成员身份
whoami 读取登录时生成的 Windows access token,而不是实时查询目录。该令牌包含用户所属的所有全局和通用安全组的SID,包括嵌套组,因为AD在登录时会将传递成员资格展平。这就是为什么whoami会显示net user遗漏的隐式嵌套成员资格,且名称完整显示,绝不截断。
分发组也不会出现,因为它们没有启用安全性,其他域的domain local groups 也不会出现。在阻止 SID 到名称解析的策略下,命令可能会因“unknown sid type”而超时,无法返回结果。
获取用户所属的所有组
ActiveDirectory 模块突破了上述所有工具一次处理一个对象的限制。Get-ADGroupMember 用于检索组成员;Get-ADPrincipalGroupMembership 用于检索用户、计算机或服务帐户的组。
这将返回 jsmith 所属的所有组,这些组是通过模块自身的目录查询解析的,而不是静态令牌或截断的控制台列。
获取组的所有成员,包括嵌套成员
本地工具停止的地方,组管理开始
/groups 列出当前用户所属的组,/all 添加用户的安全标识符(SID)和权限,/fo 在以下格式之间切换输出:表格,列表,以及逗号分隔值(CSV)格式。当组名较长时使用列表格式,想要将输出直接重定向到文件时使用CSV格式。
-Recursive 解析嵌套组直到单个账户,而不是像 net group 和普通 dsget 在无 -expand 时仅返回第一级组条目那样停止。-expand。
原生工具适合故障排除和一次性验证。证明多个组的审查完成需要更多内容:责任所有者、审查记录和受控变更。
同一模块还处理以编程方式添加或删除组成员。向上述任一命令添加递归和CSV导出,相同的两行PowerShell检查变成可重复的审核,验证范围内每个用户和组的成员资格,而不仅仅是一次一个。
请求演示,了解 Netwrix Directory Manager 如何将 AD 组成员资格从手动检查转变为受管理、审计的流程。
基于查询的智能组根据当前用户属性自动调整成员资格,审批工作流 路由更改,同时本地AD权限保持集中控制,计划的认证将每次审查分配给真正了解该组存在原因的人。
Netwrix Directory Manager 应用这些控制措施,以便不必要的组过期,权限不会悄然积累。包括约25%的财富500强在内,超过14,000个组织使用Netwrix来管理和保护其Microsoft环境。
关于如何检查AD组成员资格的常见问题。
分享到