
1. Active Directory 权限管理到底难在哪做域环境运维这行十来年我见过太多企业的 Active Directory 权限管理处于“看起来有、实际上全乱”的状态。域管理员账号恨不得人手一个员工离职账号不清理普通用户居然能进财务共享目录写文件。每次客户请我去做现状梳理打开 ADUC 批量看一圈基本都能看到几年前的旧 OU 里躺着几百个没人管的账号。这事的麻烦在于Active Directory 权限管理不是“配一次就完事”。它牵扯到对象 ACL、组策略、委派逻辑、OU 架构、甚至 DNS 和域信任关系。只要团队里没人把它当正经事做三个月后一定失控。我今天想聊的不是把官方文档复述一遍而是从实际落地角度把 AD 权限管理怎么做、为什么这么做、踩过哪些坑一次性讲透。这篇内容适合谁如果你是刚接手域环境的初级运维正准备把公司 AD 从头梳理一遍或者你是一个小团队里那个“兼管 AD”的人想搞清楚委派和权限组的关系又或者你是安全岗的同事需要跟运维对接账号与权限审计——这篇文章应该都能给你一个相对完整、可以直接拿去套用的框架。先说结论AD 权限管理的核心不是“谁能登录域”而是“谁能对域里哪棵树的哪个对象做什么操作”。想清楚这一句后面所有配置才不会跑偏。1.1 权限失控的三个典型症状我在现场经常会先看三个地方基本就能判断一套 AD 是不是已经烂掉了。第一是域管理员组成员数量。我见过一个只有 300 人的公司Domain Admins 组里有 38 个账号。问了一圈大部分人说“当时为了装某个软件/改某个配置直接把自己加进去后来忘了”。这就是最典型的失控起点——域管理员一旦扩散任何一条员工的错误操作都可能变成全域灾难。第二是委派权限满天飞。很多人不会做细粒度委派遇到业务部门说“我们要自己做密码重置”就直接把 Account Operators 或 Domain Admins 资格给出去。这两种角色的权限范围远大于“只能重置密码”能改组、能建账号、能动策略业务部门拿到之后完全不自知。第三是账号和权限不回收。离职员工账号不禁用、调岗员工的组不调整权限跟着人走而不是跟着岗位走。这类账目问题平时不爆发等到某个离职账号被误用或泄漏责任界定就是一团浆糊。这些现象背后其实都是同一个本质问题权限管理没有“设计”环节。要么随用随给要么为了省事直接放大权限。所以下面我先从原理层面把“为什么”讲明白后面再给一套可以照抄的落地套路。1.2 我的总思路最小权限 分层委派 可审计我给企业做 AD 权限治理时心里始终绷着三个原则你可以当成北极星。第一最小权限。每个账号、每个组、每一条 ACE访问控制条目只授予完成本职工作所需的最小范围。比如服务台同事需要重置密码和解锁账号那就只给 OU 级别的重置密码权限不给他建组、改组成员、删对象的权限。第二分层管理。不要所有权限都收敛到域管理员手里也不要直接下放到最底层。合理的模式是域管理员管全局架构林、域、策略模板IT 主管管各业务部门的 OU 委派服务台管日常密码类操作。三层各守各的边界谁也不能越级。第三可审计。所有关键的权限变更要么进审计日志要么每周导出对比。没有审计的权限管理本质上是把门锁装在了豆腐做的墙上。这三条原则并不是我凭空发明的它们的底层依据就是 Windows 安全模型里的“Who/What/Where”三角谁主体对什么对象做什么权限。你可以先记住这个三角因为后面所有配置都是在回答这三问。2. 想配好权限你得先弄懂这几个底层概念2.1 AD 对象与 ACL权限最终落在树上Active Directory 本质是一棵目录树树上的每个节点——用户、组、计算机、OU、域——都是一个对象。每个对象都带了一个安全描述符里面最关键的就是 DACL自主访问控制列表。DACL 里一条条 ACE 决定“某主体对此对象能做什么”。举个例子。用户张三对 OU 下的“财务部”OU 有一条“重置密码”的允许 ACE那张三就能在这个 OU 范围内对其他用户执行密码重置。如果这个 OU 上勾选了“阻止继承”那么域根的权限就进不来只有显式配给这个 OU 的 ACE 才有效。这看起来是基础但实际运维里大多数问题恰恰出现在“继承”和“阻止继承”的关系上。我的经验是能用继承解决的就别显式添加因为显式 ACE 一旦没有注释三个月后没人记得为什么存在。每次添加 ACE 都养成写“操作说明”的习惯这条我后面实操时会再强调。2.2 委派权限不交出域管理员也能把事办好委派Delegation是 AD 权限管理里最实用、也最容易被误解的概念。很多人一听“权限不够”第一反应就是“加进 Domain Admins”。这是最偷懒也最危险的做法。委派的本质是在某个 OU 或对象上把特定的权限授予某个安全主体通常是组。比如只允许重置 User OU 下用户的密码只允许修改某个 OU 下所有用户的工作电话和手机号只允许创建和删除指定的联系人对象这些都能在“Active Directory 用户和计算机”里的“委派控制”向导中分步完成。向导底层帮你写好了 ACE只是用图形界面包装了一层而已。用命令行那就是几条 dsacls 或 PowerShell 命令的事后面实操我会给出现成的用法。需要注意的是委派控制最好委派给“组”而不是“人”。人走了换人时只需要调整组成员不需要在 AD 里翻箱倒柜找旧 ACE。2.3 安全组与嵌套逻辑别把用户一把塞进高权限组我见过太多的权限配置是“把用户直接加进 Domain Admins”哪怕是只要求重置密码的人。这件事是非常典型的“图省事”造成的结构性错误。Windows 的组架构是有分层设计的理念的常见实践是 A-G-DL-P用户账号Account放进全局组Global全局组加进本地域组Domain Local再由本地域组去映射资源或权限Permission。A-G-DL-P 的每一步都有它的存在意义。全局组适合按“岗位/角色”组织人员比如“IT-服务台”本地域组适合映射“资源权限”比如“财务共享-读写”。以后换资源迁移、或者换权限策略只要调本地域组成员不需要动人员角色组。嵌套组不是不能用而是不能无限嵌套。我踩过的坑是三到四层嵌套后我用 PowerShell 检查用户最终有效权限时光展开组成员就要好几层递归。审计和排障都极其痛苦。所以建议控制在两层以内角色组例如 IT-Support-L1→ 资源权限组例如 Shared-IT-RW→ 文件服务 ACL。2.4 组策略是权限管理的另一半很多人只盯着 AD 里的 ACL却忽略了组策略GPO。其实权限管理里很大一部分“谁能做什么”是 GPO 配置出来的。比如通过 GPO 可以限制本地管理员组成员防止普通用户在自己的电脑上获得本地管理员权限可以定义关机权限、远程桌面访问权限、软件限制还可以通过“受限制的组”策略强制把某台服务器的 Administrators 组设置为只包含指定 IT 组。ACL 管“AD 数据库里能不能改”GPO 管“系统环境和资源能不能用”。两者结合权限边界才完整。GPO 在权限治理中的价值有一点常被忽略它能把安全基线批量下发。比如“交互式登录显示用户信息”“禁止存储明文密码”这类安全选项如果是手工一台台配置那一定会漏。用 GPO 统一推下去AD 权限再配合系统侧基线才算是一个完整体系。3. 先设计再动手一张纸画完权限体系3.1 按职责划分角色先把“谁管什么”定死动任何 AD 配置之前我会建议先把组织里的 IT 角色分成三层跟业务部门开一次短会把边界说清楚。拿一个中型公司举例我通常这样分层角色职责范围典型权限能否进入 Domain Admins架构管理员L3林/域级配置、Schema、域控制器运维域管理员、组策略管理是限 2 人以内系统管理员L2服务器维护、OU 结构调整服务器本地管理员、OU 委派否帮助台/服务台L1密码重置、解锁账号、用户信息修改OU 内委派密码重置权限否业务部门管理员可选本部门 OU 内的用户与联系人维护OU 级委派不含密码管理否这套划分的意义在于它给了所有权限申请一个“审批边界”。比如有人提出“需要重置权限”直接看角色表就知道这是 L1 的活不需要讨论也不需要给 Domain Admin。这张表设计好后建议把它贴在排障文档或内部知识库第一页。很多权限管理之所以乱就是因为没有这张“权限地图”。3.2 OU 架构设计别把树上乱插叶子OU 是权限委派、GPO 绑定的基本单元。OU 设计得好权限配置能成片成片地复用设计得烂就只能一条条 ACE 去点维护成本无限高。我的建议是同层 OU 不超过两套维度一套按业务或部门一套按组织层级或服务器分类。比如典型的结构公司域DCcompany, DCcom ├── 计算机OU │ ├── 服务器 │ └── 工作站 ├── 用户OU │ ├── 总公司 │ ├── 分公司A │ └── 分公司B └── 组OU ├── 全局组 └── 本地域组这里有个常见误区把 OU 建得极深极细比如“用户/总公司/研发部/临时工/2024届实习生”一细就麻烦。权限委派一旦绑定到深层 OU后续组织架构一变整个 OU 树全要动。我的个人经验是能扁平就扁平业务部门内部的细分让他们自己用好邮件组、通讯组不一定非得开新 OU。OU 建好后立刻做两件事一是在“Active Directory 用户和计算机”里打开对象的“防止对象被意外删除”勾选尤其是域和顶层 OU二是规划好每个 OU 的权限继承策略。这两件小事能避免至少 80% 的日常误操作。3.3 角色到组的映射用组承载权限而不是用人有了角色和 OU接下来就是把“角色”翻译成“安全组”。这一步最核心也是最需要耐心的地方。我的做法是组名尽量带前缀表示类型和归属例如SEC-ServiceDesk-RestrictedPwd安全组-服务台-密码重置权限。组的作用一看名字就懂这在审计时特别有用。注意一个容易被忽略的点组的作用域也要提前想好。如果只是为了本域内权限管理用“全局组”就够了如果某组在域内被资源映射使用可以再套一层“本地域组”。不要一上来全都建通用组角色越少越清楚跨域问题等真出现了再去处理。这里也顺便提一句合并林或迁移资源时本地域组的优势才真正体现出来——因为本地域组的成员可以来自任何域而非委派 ACL 的主体组却只能限定在某些域内。组设计的艺术就在这一省一收之间。4. 实操落地一个“服务台密码重置委派”的完整过程4.1 准备工作与 OU 创建假设你要在现有域里建立一套独立的管理基线第一件事是把你要托管的用户捞进自己的 OU。如果用户没有按 OU 划分建议先迁移——这个过程通常要评估 GPO 绑定和安全策略但你不需要一步到位可以先分出一小批测试用户。我习惯用 PowerShell 来落这些操作既快又方便审计留痕。创建 OU 的命令如下# 创建存放用户的 OU New-ADOrganizationalUnit -Name ITManagedUsers -Path DCcompany,DCcom -ProtectedFromAccidentalDeletion $true也可以顺手创建组 OU、服务器 OU后续扩展时省事。4.2 创建角色安全组并完成委派接着创建服务台角色组# 创建服务台密码重置组 New-ADGroup -Name SG_IT_ServiceDesk_PwdReset -GroupScope Global -GroupCategory Security -Path OUGroups,DCcompany,DCcom关键步骤来了给这个组委派“重置密码”和“解锁用户”权限范围限定在OUITManagedUsers。用图形界面是“委派控制”向导用命令行可以借助dsaclsWindows Server 2008 之后的域控都带着但我更推荐直接写 PowerShell 来做 ACE可读性和可追踪性都更好。实际生产环境里最常见的做法是使用 dsacls 进行标准委派# 在目标 OU 上授予该组重置密码和解锁权限 dsacls OUITManagedUsers,DCcompany,DCcom /G CONTOSO\SG_IT_ServiceDesk_PwdReset:CA;Reset Password;user /G CONTOSO\SG_IT_ServiceDesk_PwdReset:CA;Lockout Time;user这条命令的含义是授予该组“控制用户对象上的重置密码”权限以及“修改锁屏时间属性解锁账户”的权限。注意这里的/G后面的写法和 ADUC 向导自动生成的安全描述符是等价的只是手册里很少用命令行讲清楚。如果想要更细的权限模式——比如“只允许用特定格式的临时密码不允许管理权限属性”——就得用 ADSI Edit 或 PowerShell 去手动改属性和 ACE。我一般建议先用向导等理解了 ACE 结构后再用命令行批量免得手误。4.3 把服务台成员加进权限组并验证组和委派都建好后把服务台同事加进去Add-ADGroupMember -Identity SG_IT_ServiceDesk_PwdReset -Members zhangsan, lisi然后测试。测试的方式是在一台非域控机器上用“以另一用户身份运行”的方式来模拟服务台账号尝试对着某个测试用户重置密码。正常的现象是能重置密码、能解锁但删除用户、修改组成员、改 OU 结构这类操作统统报“拒绝访问”。我这里强烈建议顺手做一遍“反向测试”用一个不属于该组的普通账号去试同样的操作确保权限没有配“大”。这类测试记录在交接文档里后期审计能省不少嘴皮子。4.4 把 GPO 纳入体系管理本地管理员与关键资源权限组配好了系统侧的 GPO 也不能少。最常用的两道 GPO 是“受限制的组”和“用户权限分配”。在“受限制的组”里把服务器和工作站的内置 Administrators 组限定为只有CONTOSO\SG_Servers_LocalAdmins这一个组成员。这样即使某台机器被某位临时管理员登录过、手工加过自己的账号下一次刷新策略时也会立刻被清掉。对“用户权限分配”我通常重点管三块“允许本地登录”“允许通过远程桌面服务登录”“关机”。比如 IT 支持团队允许远程登录服务器而一般业务用户只能本地工作站登录。这些设置一旦通过 GPO 统一约束域权限账号的操作面就小了很多。5. 常见翻车现场与排查手册5.1 权限不生效从这六个方向查我整理了一张问题速查表是我处理域环境问题时最先过一遍的东西症状常见原因检查/解决办法委派权限加了却没用目标对象阻止了权限继承或组本身不在该 OU 下用“有效权限”页看最终 ACE定位继承被切断的层级账号能重置密码但报策略错误密码强度策略干预细粒度密码策略检查 PSO/默认域策略确认是否存在最小密码长度限制或复杂度要求组已加入但操作仍被拒绝ACE 顺序问题或 Deny 条目优先在对象 DACL 中检查是否同时存在 Deny 条目Deny 优先级一定高于 Allow新建 OU 里的用户无法应用企业 GPOGPO 链接在顶层但在 OU 上启用了“阻止继承”查看 GPO 继承页确认是否有“阻止继承”和“强制”冲突委派成员离职后权限未消失只做了全局组嵌套没检查本地域组嵌套关系展开所有相关组的传递成员逐个清理建议用脚本定期导出Domain Admins 成员删了之后又出现有 GPO 或脚本自动把账号拉回管理员组检查“受限制的组”策略、Scheduled Tasks、登录脚本并核查是否有特权账号管理产品在做自动回填这张表不一定覆盖所有问题但按它逐项排查通常能把我接手时 90% 的“权限疑难杂症”定位出来。5.2 继承被“勾掉”的噩梦我接手的某个环境里曾经有一位管理员为了隔离权限把很多 OU 的“阻止继承”打开了但没给任何显式权限。结果就是新加入的用户、新创建的计算机对象在该 OU 下的一切管理操作全部失效连重置密码都做不了。而且这种情况最阴的地方是——它不会报错只是毫无征兆地所有委派都失灵。排查方法很简单在对象属性 →“安全”选项卡里点“高级”看“权限”条目里有没有灰色的继承条目如果只有几条显式 ACE而且你没看到域管理员那基本就是继承被切了。修复时先在“有效权限”标签页里看“管理”主体是否存在再把继承改回“从父项继承”或补上等价权限。5.3 域管理员账号的应急处理最后聊一个比较敏感但必须面对的场景域管理员账号失窃或泄露后的补救。这种事在国外安全界叫 “break-glass account compromised”处理动作要快而且不能只改密码了事。第一步立即禁用已知受影响的账号并在 24 小时内分批次重置krbtgt密码两次至少隔 12 小时以确保新 KDC 票证生成。第二步检查域控上的安全日志中是否出现了 DCSync 特征即复制请求的源账号高权限或异常然后利用权限审计脚本导出 Domain Admins、Enterprise Admins、Schema Admins 组的全量成员。第三步也是最容易被忽略的一步从所有可能承载凭据的位置内存、脚本、任务计划程序、组策略偏好 GPP 的 cPassword 属性搜索已泄露账号的出现痕迹。这里我不是在教大家做什么非法的事而是强调域管理员账号一旦可能被滥用必须把它当作安全事件来响应权限调整只是收尾动作。5.4 给新手的几条防呆忠告AD 上做任何批量操作前先跑一次Get-ADObject -Filter *和“有效权限”快照以免改完 ACL 才发现影响范围比自己想的大。给 ACE 写描述。用 PowerShell 创建 AD 安全描述符时我会把用途、申请单号、创建人拼进 Description 字段。半年后看它你会感谢自己。千万别图方便直接编辑 Default Domain Policy。很多环境被我接手时Default Domain Policy 里已经塞了一堆不该由它管的设置导致任何故障都先怀疑它。企业的 GPO 应该拆成 Domain Baseline、Application、Security 三层各管一摊。6. 权限治理的日常运营建议6.1 每周/每月自动化导出权限清单权限管理不是一个“配完就跑”的活后面三个月里最容易松懈。我建议至少每周跑一遍全量导出生成 CSV 并做差异比对我的自动化小脚本大致长这样# 导出所有安全组及其成员 Get-ADGroup -Filter * -Properties Members | ForEach-Object { [PSCustomObject]{ GroupName $_.Name Members ($_.Members -join ;) } } | Export-Csv -Path C:\audit\adgroups_$(Get-Date -Format yyyyMMdd).csv -NoTypeInformation简单但贵在定时执行。有了历史快照再找“某某权限是哪天加上的”就快多了。这个脚本也可以挂到计划任务里自动跑跑完自动发邮件给 IT 主管。坚持三个月后你仓库里的 AD 权限历史就成了一份随时可查的档案。6.2 新建立域时的默认配置印象如果你是还在规划期就看到了这篇内容那我给你的建议是新林建成后立刻做三件事。第一把 Enterprise Admins 会合成员压到按姓名列出不超过两人Domain Admins 同样。第二不要给内置 Administrator 设置过于简单的密码要作为“保留钥匙”单独封存保护。第三建立初版的权限角色矩阵和 OU 结构规划别等到用户都进来了再搬家。6.3 关于这一路踩坑的个人感受很多人问过我为什么 AD 权限管理看起来不难但企业里总是一团糟。我觉得本质原因是它属于“维护型工作”而非“项目型工作”在项目制预算和时间表里总被边缘化。只有当你把权限治理变成一种有节奏的运维动作定期比对、定期审、定期清理它才真正落地。我个人在这个领域的体会是最成功的部署不是“一次配好”而是“给人留下了清晰的上下文”。好的权限体系换一个人来看也能顺着 OU、组结构和 ACE 描述读明白当初为什么这么设计。这套文档不需要多花哨但凡你做到了“组名规范、说明写完、快照留存”就已经比市面上绝大多数企业的 Active Directory 环境要靠谱了。