7.6. 设计密码策略
密码策略是一组规则,用于管理在给定系统中如何使用密码。目录服务器密码策略指定密码必须满足的条件,如年龄、长度以及用户是否可以重复使用密码。
7.6.1. 密码策略如何工作 复制链接链接已复制到粘贴板!
目录服务器支持精细的密码策略,这意味着 Directory 服务器在目录树中的任意点定义密码策略。目录服务器在以下级别上定义密码策略:
- 整个目录
这样的策略称为 全局 密码策略。当您配置和启用此策略时,Directory 服务器会将其应用到目录中的所有用户,但 Directory Manager 条目和启用了本地密码策略的用户条目除外。
此策略类型可以为所有目录用户定义通用、单一密码策略。
- 目录的特定子树
此类策略称为 子树级别或 本地密码策略。当您配置和启用此策略时,Directory 服务器会将其应用到指定子树下的所有用户。
此策略类型在托管环境中很好,为每个托管公司支持不同的密码策略,而不是为所有托管公司实施单一策略。
- 目录的特定用户
此类策略称为 用户级别或 本地密码策略。当您配置和启用此策略时,Directory 服务器只会将其应用到指定用户。
此策略类型可以为不同的目录用户定义不同的密码策略。例如,指定一些用户每天更改其密码,一些用户每月更改,而所有其他用户每六个月更改一次。
默认情况下,Directory 服务器包含与全局密码策略相关的条目和属性,这意味着将相同的策略应用于所有用户。要为子树或用户设置密码策略,请在子树或用户级别添加额外的条目,并启用 cn=config 条目的 nsslapd-pwpolicy-local 属性。此属性充当交换机,打开和关闭细粒度密码策略。
您可以使用命令行或 Web 控制台更改密码策略。在命令行中,dsconf pwpolicy 命令更改全局策略,dsconf localpwp 命令会更改本地策略。您可以在 配置密码策略部分找到 设置密码策略 的步骤。
密码策略检查过程
您添加到目录的密码策略条目决定了 Directory 服务器应强制执行的密码策略的类型(global 或 local)。
当用户尝试绑定到目录时,Directory 服务器决定是否为用户条目定义并启用本地策略。目录服务器按以下顺序检查策略设置:
-
目录服务器决定是否启用精细的密码策略。服务器检查
cn=config条目中nsslapd-pwpolicy-local属性的值(on或off)。如果值设为off,服务器会忽略子树和用户级别定义的策略,并强制实施全局密码策略。 目录服务器确定是否为子树或用户定义本地策略。服务器检查对应用户条目中的
pwdPolicysubentry属性:- 如果属性存在,服务器会强制为用户配置本地密码策略。如果条目具有属性,但值为空或无效(例如,指向不存在的条目),服务器会记录错误消息。
-
如果在用户条目中没有找到
pwdPolicysubentry属性,服务器会在达到顶部前检查父条目、grandparent 条目和其他上一级条目。 -
如果任何上级条目中都未找到
pwdPolicysubentry属性,则服务器会应用全局策略。
- 服务器将用户提供的密码与用户条目中指定的值进行比较,以确保它们匹配。服务器也使用密码策略定义的规则来确保密码在允许用户绑定到目录之前有效。
除了绑定请求外,如果请求中存在 userPassword 属性,则在添加和修改操作过程中也会进行密码策略检查。
修改 userPassword 的值会检查两个密码策略设置:
-
激活密码过期策略。如果没有满足最低期限要求,服务器会返回
约束Violation错误。密码更新操作失败。 -
激活了密码历史记录策略。如果
userPassword属性的新值位于密码历史记录中,或者与当前密码相同,服务器会返回约束Violation错误。密码更新操作失败。
添加和修改 userPassword 的值会检查为密码语法设置的密码策略:
-
激活密码最小长度策略。如果
userPassword属性的新值小于所需的最小值长度,服务器会返回约束Violation错误。密码更新操作失败。 -
激活密码语法检查策略。如果
userPassword的新值与条目的 another 属性相同,服务器会返回约束Violation错误。密码更新操作失败。