如何让用户读取Active Directory中自身的机密属性?
问题描述
- 在Active Directory架构中新增自定义属性,用于存储用户专属的软件配置链接
- 将该属性的
searchFlags设置为128(标记为机密属性),要求仅允许用户自身读取 - 尝试为
NT AUTHORITY\SELF赋予该属性的读取/完全控制权限,但用户无法读取;测试用户组权限也无效果 - 管理员账号可正常读取该属性,测试用PowerShell命令:
(([adsisearcher]"(&(objectCategory=User)(sAMAccountName=$env:USERNAME))").findall()).properties
原因分析
AD的**机密属性(searchFlags=128)**有特殊权限控制逻辑:常规的单属性读取权限会被AD的机密属性机制覆盖,必须通过Control Access类别下的Read confidential attributes权限来授权读取,普通ACL设置无法生效。管理员账号默认拥有该控制权限,因此能正常读取。
解决方案
- 配置AD对象的控制权限
- 打开「AD用户和计算机」,开启顶部菜单「查看」→「高级功能」
- 找到目标用户对象(或对应OU,批量应用权限),右键→「属性」→「安全」→「高级」
- 点击「添加」,主体选择
NT AUTHORITY\SELF - 在「权限」选项卡,勾选
读取机密属性权限,应用范围选择「该对象」(针对用户对象) - 确认所有设置并保存
- 验证权限
- 使用普通用户账号重新运行测试PowerShell命令,检查属性是否出现在返回的
properties集合中 - 若未立即生效,执行
gpupdate /force刷新组策略,等待权限同步
- 使用普通用户账号重新运行测试PowerShell命令,检查属性是否出现在返回的
内容的提问来源于stack exchange,提问作者HExSM
相关产品推荐
相关产品推荐

