1. 为什么你天天在"配权限",却依然管不好AD权限
先从一个我见过无数次的场景说起。同事离职,账号要禁用,结果发现这个人的账号在三个不同OU里都有特殊权限,域管理员组里还挂着他的名;另一头,某部门主管申请"给全员开放共享文件夹读取权限",你直接在共享文件夹的ACL里加了"Authenticated Users"——一个月后审计来查,吓了一跳,因为这意味着任何域内合法账号都能读这份资料,里面还有不少财务数据。
这样的场景几乎每周都能遇到。我接触过很多做IT运维的朋友,大家普遍有一个困惑:AD权限体系看起来就几个概念——用户、组、OU、共享文件夹权限,但真正管起来却很累。域控数量多、组织架构复杂、权限分散在不同管理员手里,叠加人员流动,最后往往变成一团乱麻。有人索性把域管密码扔给所有IT同事,大家用同一个administrator账号干活——这简直就是打开了潘多拉魔盒。
这篇博文我想从头梳理AD权限的核心逻辑,讲清楚AD权限到底是什么、怎么生效、常见坑在哪里,再把我自己在实际项目里用的"简化AD权限管理"的方法论拆开来讲。内容适合两类读者:一类是刚接手AD运维的IT管理员,想系统搞懂权限体系;另一类是已经在管AD但被各种权限问题折腾得头疼的工程师,想要一套能落地的治理方案。
先立个调子:管好AD权限,不是把某个OU的委派向导点一遍就完事,而是要建立一套"能说清楚、能查得到、能收得回"的权限视图。所谓"能说清楚",是任何一条权限都能讲明白为什么存在;"能查得到",是随便找一个账号或OU,能马上列出它的全部有效权限;"能收得回",是人走、岗变、项目结束时,权限能及时回收。后面所有的方法论和实操,都是围绕这三点展开的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. AD权限体系的底层逻辑:SID、ACL、继承和委派
2.1 权限生效的最小单元:SID与访问令牌
要理解AD权限,先理解SID(Security Identifier,安全标识符)。SID是域内每个安全主体(用户、计算机、安全组)在创建时被分配的唯一标识,作用类似身份证号。你在AD里改用户名、改所属组织,SID始终不变——这保证了用户改名前后的权限关系不会断掉。
当用户登录域时,域控会签发一个访问令牌(Access Token),里面除了用户自己的SID,还包含用户所属的所有安全组的SID。系统在做权限校验时,不是去查"用户A属于哪些组、这些组有没有权限"这么绕的关系,而是直接把令牌里所有SID和资源的ACL比对,命中哪个SID,就按对应的ACE(Access Control Entry,访问控制项)生效。
这个机制引出一个非常关键的认知:AD权限判断的时间点是"登录时"。用户登录后加入的新组,不会立刻生效,需要重新登录或运行klist purge(清除Kerberos票据缓存)后再重新登录。反过来,如果用户从某个组中被移除,只要旧的访问令牌没失效,他理论上仍能继续访问部分资源,直到令牌过期或重新登录。这个问题在排查"为什么他刚被踢出组还能访问共享文件夹"时特别容易踩坑。
2.2 DACL、SACL、ACE:权限安全描述符的结构
每个AD对象(用户、组、OU、共享文件夹、打印机)都挂着一个安全描述符(Security Descriptor),里面包含四个主要部分:
| 组成部分 | 作用 | 日常管理中的意义 |
|---|---|---|
| Owner(所有者) | 默认为创建者,拥有读取和修改DACL的权利 | 权限配置混乱时,可用所有者权限修复 |
| DACL(自主访问控制列表) | 规定谁能对该对象做什么操作 | 最常打交道的部分,理解权限的关键 |
| SACL(系统访问控制列表) | 定义审计策略,记录哪些访问会被写入审计日志 | 等保合规和入侵溯源的核心 |
| 对象附加信息 | 如对象类型、创建时间等 | 主要用于扩展属性 |
ACE是ACL里的每一条规则,格式大致为"主体(SID) + 权限类型(允许/拒绝) + 具体操作 + 是否继承"。AD和NTFS文件系统的ACL结构基本一致,因此很多管理经验可以互相借鉴。
一个经常让人困惑的点是"拒绝(Deny)"ACE。系统在权限评估时的顺序是:先处理所有Deny,再处理Allow。也就是说,只要一条Deny ACE命中,无论其他Allow ACE给了多大权限,最终结果都是拒绝。这个特性在"必须封禁某个例外账号"时很有用,但也容易成为权限排查的拦路虎——一条隐藏的Deny会让所有Allow全部失效,还很难一眼看出来。
2.3 权限继承:省事与失控的分界线
AD权限默认是向下继承的。你在域根OU上给某组委派了"重置密码"
