Windows域中细粒度密码策略需用PSO,仅支持域功能级别≥2008;通过ADSI Edit在CN=Policies下创建PSO,设置msDS-PasswordSettingsPrecedence优先级(1–1000),再将PSO DN绑定至用户或组的msDS-PSOApplied属性生效。
windows域环境中,密码策略默认是全局应用的,无法为不同用户或组单独设置。要实现细颗粒度密码策略(fine-grained password policy, fgpp),必须使用“密码设置对象”(pso),且仅在域功能级别为 windows server 2008 或更高版本的域中可用。
确认域功能级别并启用ADSI Edit(必要前提)
FGPP依赖于Active Directory的高级架构支持:
- 打开“Active Directory域和信任关系”,右键域名 → “提升域功能级别”,确保至少为 Windows Server 2008(推荐 2012 R2 或更高)
- PSO对象存储在 System\Policies 容器下,需通过 ADSI Edit(非ADUC图形界面)创建和管理
- 运行 adsiedit.msc,连接到“Default Naming Context”,导航至 CN=System,CN=DomainName → 展开 CN=Policies 即可看到已有PSO(如无则需新建)
创建密码设置对象(PSO)
每个PSO定义一套独立的密码与账户锁定策略,可绑定到一个或多个安全组/用户:
- 在 ADSI Edit 中右键 CN=Policies → “新建” → “对象” → 选择 msDS-PasswordSettings
- 填写唯一名称(如 PSO-Admins-90Days),注意:msDS-PasswordSettingsPrecedence 值越小优先级越高(范围1–1000),冲突时高优先级PSO生效
- 关键属性设置示例:
• msDS-MinimumPasswordLength: 12
• msDS-MaximumPasswordAge: 7776000(90天,单位:秒)
• msDS-LockoutThreshold: 5(5次失败即锁定)
• msDS-LockoutObservationWindow: 1800(30分钟观察窗口)
将PSO绑定到目标用户或组
PSO不直接应用,而是通过 msDS-PSOApplied 多值属性关联主体:
- 找到目标用户或全局安全组(建议用组,便于管理),右键 → “属性” → 切换到 Attribute Editor 标签页
- 定位 msDS-PSOApplied 属性 → 点击“编辑” → “添加” → 输入PSO的完整DN(例如:CN=PSO-Admins-90Days,CN=Password Settings Container,CN=System,DC=contoso,DC=com)
- 保存后策略不会立即生效,用户下次登录或密码过期时触发;可通过 repadmin /syncall 强制同步,或等待默认复制间隔
验证与排错要点
常见问题多源于权限、路径错误或优先级覆盖:
- 检查用户是否属于多个PSO绑定组:只生效 最高优先级(数值最小) 的那个PSO
- 用命令行快速查看用户当前生效PSO:
dsquery * -filter "(sAMAccountName=username)" -attr msDS-ResultantPSO - 若显示
,说明未绑定任何PSO,或绑定对象DN拼写错误(区分大小写、逗号空格需严格匹配) - 普通域用户默认无权修改PSO,需赋予“读取/写入 msDS-PasswordSettings”权限给管理员组(通过ADSIEDIT的安全选项卡设置)










