ad域中实现差异化密码管理需启用细颗粒度密码策略(fgpp),前提为域功能级别≥windows server 2008、操作账户具domain admins权限且对cn=system有写入权;通过powershell或adac创建pso策略对象并绑定至安全组,生效策略以precedence最小者为准,需注销重登或等待tgt刷新。
在ad域中实现差异化密码管理,核心是启用细颗粒度密码策略(fgpp),它允许为不同用户或安全组单独设定密码长度、复杂度、过期时间、锁定阈值等,绕过默认域策略的统一限制。
确认前提条件
FGPP不是开箱即用的功能,需满足以下硬性要求:
- 域功能级别必须为 Windows Server 2008 或更高(推荐 2012 R2+);可通过 ADAC → 域节点 → “提升域功能级别”验证并升级
- 操作账户需具备 Domain Admins 权限,且对 CN=System,DC=… 容器有写入权限
- 不能使用普通组策略管理控制台(GPMC)配置——FGPP 不出现在 GPO 列表中
创建并配置PSO策略对象
PSO(Password Settings Object)是FGPP的载体,每个PSO代表一套独立策略。推荐使用 PowerShell(更稳定)或 ADAC(图形化)创建:
- PowerShell 示例(以管理员身份运行):
New-ADFineGrainedPasswordPolicy -Name "PSO-Privileged" -Precedence 5 -MinPasswordLength 14 -ComplexityEnabled $true -MaxPasswordAge "90.00:00:00" -LockoutThreshold 3 -LockoutObservationWindow "00:15:00" -LockoutDuration "01:00:00" - Precedence 值越小优先级越高(范围 1–1000),避免与已有 PSO 冲突(如默认策略 precedence 通常是 100)
- 策略属性直接映射业务需求:高权限账号用更短锁定窗口、更低失败阈值、更长最小长度
将PSO绑定到目标主体
FGPP 只能绑定到用户对象或全局/通用安全组(不能是通讯组、DL 或嵌套组成员),推荐绑定到安全组便于后期维护:
- PowerShell 绑定命令:
Add-ADFineGrainedPasswordPolicySubject -Identity "PSO-Privileged" -Subjects "SG-Admins" - 若用 ADAC:进入“系统 → 密码设置”,右键 PSO → “属性” → “直接应用于” → 添加组名
- 注意:AD 不递归解析嵌套组,只检查用户是否直接属于该组
验证与排错关键点
策略不生效往往不是配置错误,而是逻辑覆盖或状态延迟:
- 一个用户匹配多个 PSO 时,仅 precedence 最小的那个生效——用 Get-ADUserResultantPasswordPolicy -Identity username 查看当前实际生效策略
- 策略在用户下次登录时加载,已登录用户需注销重进,或等待 Kerberos TGT 自动刷新(默认约 10 小时)
- 检查目标组是否为安全组(groupType & 0x80000000 ≠ 0)、是否位于同一域内、DN路径是否完整准确











