我知道 NTFS 文件夹和 AD 对象都使用安全描述符和 DACL 来检查用户/进程访问 MS Learn - 访问检查的工作原理
但是,访问检查如何解析嵌套 AD 组的 ACE?例如:
- AD 组
AD-Parent
被授予修改权限F:\Restrict
- AD 组
AD-VIPs
是AD-Parent
- 用户
vip
是以下组织的成员AD-VIPs
我的理解是
vip
安全描述符将有一个引用的 ACEAD-VIPs
,并且F:Restrict
DACL 将有一个 ACE 引用AD-Parent
Windows 中的哪个进程如何以及哪个进程找到“vip -> AD-VIPs -> AD-Parent”链并授予访问权限?
答案1
在登录/身份验证/授权检查期间,安全组成员身份将添加到 Kerberos 令牌的特权访问证书 (PAC) 部分。这包括嵌套组。
访问文件夹时,拥有资源的主机(本例中为文件服务器)会将 ACL 中的 SecurityIdentifiers 与 Kerberos 令牌的 PAC 中的 SecurityIdentifiers 进行比较。如果匹配,则授予访问权限。
https://learn.microsoft.com/en-us/windows/win32/adschema/a-tokengroups
“由于对给定用户或计算机执行了可传递组成员身份扩展操作,因此包含 SID 列表的计算属性。如果没有全局目录来检索可传递的反向成员身份,则无法检索令牌组。”
答案2
让我们从您提供的链接开始(重点是我的):
系统将每个 ACE 中的受托人与线程访问令牌中标识的受托人进行比较。访问令牌包含识别用户和用户所属组帐户的安全标识符 (SID)。
实际上,“用户所属的组账户”取自用户登录时收到的 Kerberos 票证。票证包含用户所属的所有组的 SID,无论该组是否嵌套在另一个组中。
具体来说,回答你的问题:
Windows 中的哪个进程如何以及哪个进程找到“vip -> AD-VIPs -> AD-Parent”链并授予访问权限?
此任务由域控制器在生成票证授予票证 (TGT) 时执行(通常是在用户登录时)。TGT 包含用户所属的所有组的 SID。
你可以做一个实验,看看进程探索器:启动进程资源管理器,双击由域用户启动的进程(例如 notepad.exe),单击“安全”选项卡,在这里您将能够看到组成员身份,即使组是嵌套的。