#密码策略
密码策略用于在口令认证的过程中,由系统根据策略制定的规则,对用户的密码行为和属性进行判断并作出相应的动作,包括:
- 为防止恶意攻击者反复登录尝试猜出密码,当用户因为密码错误连续登录失败达到阈值时,将被锁定一定时间。
- 用户长时间使用同一密码会影响数据库安全,因此系统对于密码的生命长度进行限制。
- 系统在用户登录过程中发现密码已使用超过限制天数时,将进行额外宽限期处理,并打印告警日志提示。宽限期过后,该密码完全过期,客户端提示用户输入新密码,用户可以立即更新密码。
- 为防止用户长时间使用相同密码,用户在设置新密码时还需要满足密码复用限制,不允许复用一定时间内使用过的密码以及最近变更次数内使用过的密码。
# profile
profile为密码策略的载体,通过一系列参数定义密码策略的内容,使用profile为用户制订密码策略可以使得对用户的密码管理更灵活。
所有参数列示如下:
参数 | 对应策略 | 默认值 |
---|---|---|
FAILED_LOGIN_ATTEMPTS | 帐户被锁定之前可以错误尝试的次数 | 10次 |
PASSWORD_LOCK_TIME | 超过错误尝试次数后用户被锁定的天数 | 1天 |
PASSWORD_LIFE_TIME | 密码可以被使用的天数(生命长度) | UNLIMITED不限制天数 |
PASSWORD_GRACE_TIME | 密码过期之后还可宽限多少天使用原密码(额外宽限期) | UNLIMITED无限宽限 |
PASSWORD_REUSE_TIME | 密码可复用的间隔时间 | UNLIMITED无限复用 |
PASSWORD_REUSE_MAX | 密码满足可复用的必要变更次数 假设其为N,则表示新密码不能被设置为最近N次使用过的密码 | UNLIMITED无限复用 |
# PASSWORD_REUSE_TIME and PASSWORD_REUSE_MAX
如果为这两个参数都指定了值,则在 PASSWORD_REUSE_TIME 指定的天数, 或将密码更改了 PASSWORD_REUSE_MAX 指定的次数之前,用户无法设置曾经使用的密码。
例如,如果将 PASSWORD_REUSE_TIME 指定为 30,将 PASSWORD_REUSE_MAX 指定为 10,则在密码已更改 10 次的情况下,用户可以在 30 天后重复使用该密码。
如果您为其中一个参数指定一个值,并为另一个参数指定 UNLIMITED,则用户永远无法重复设置相同的密码。
# profile管理
YashanDB预置了一个默认的profile,其包含的密码策略为上述参数的默认值。
使用CREATE PROFILE语句可以根据不同的用户需要制订不同的密码策略,并使用ALTER PROFILE、DROP PROFILE语句对profile进行修改、删除等操作。
# profile关联用户
所有新创建的用户在未指定profile时默认关联到默认的profile,受默认的密码策略管控,如指定了某个profile,则受该profile包含的密码策略管控。
使用CREATE USER和ALTER USER语句可以实现用户与指定profile的关联。