我们可以使用“xp_logininfo”来比较并查找重复的组吗?

问题描述 投票:0回答:1

通过“xp_logininfo”,我们可以提取 AD 安全组的成员

/* all groups user is member and group granting access */
EXEC   xp_logininfo 'Domain\WindowsUser', 'all';

/* all user is in group */
EXEC   xp_logininfo 'Domain\WindowsGroup', 'members';

问题: 我继承了许多安全组并发现重复的: 组要么具有相同的成员但具有不同的访问权限,要么 同一组内不同成员的访问权限 有些团体根本不再有成员

想法: 我想找到所有 Windows 组并将它们放入表中 然后(这就是我需要聪明的 DBA 的地方) 使用“xp_logininfo”创建一个新表,对第一个表中的每个名称执行操作

select
      [name]
from [sys].[database_principals]
where [type] in ('G')

Insert Into #temptable1 ([name])

(theory)
EXEC   xp_logininfo '#temptable1', 'members';
CREATE TABLE #temptable2 ( [account name] nvarchar(128), [type] varchar(8), [privilege] varchar(8), [mapped login name] nvarchar(128), [permission path] nvarchar(128) )

INSERT INTO #temptable2 ([account name], [type], [privilege], [mapped login name], [permission path])

到目前为止,我能够一次提取 AD 安全组的成员 1 个,但有超过 800 个组,仅收集数据并将其转移到 Excel 中进行比较是一项耗时的任务。

如果有人做过此操作或知道如何加快速度,我会很乐意提供帮助。

我想补充一点,我有阅读障碍,所以如果我需要重新解释其中任何内容,请告诉我。

sql t-sql security active-directory user-permissions
1个回答
0
投票

更新:我发现了这个: 枚举 Windows 组成员 洛厄尔·伊萨吉雷,2017-02-24(首次发布:2016-03-17)

信息 - https://www.sqlservercentral.com/articles/enumerate-windows-group-members 代码 - https://www.sqlservercentral.com/wp-content/uploads/2019/05/EnumerateWindowsGroupMembers.sql

我用它将结果写入表格并比较数据

© www.soinside.com 2019 - 2024. All rights reserved.