自定义密码策略
创建用户或修改用户时需要指定密码,GaussDB(DWS)有默认的密码复杂度要求,也支持用户自定义数据库账户密码策略。
GaussDB(DWS)默认密码策略
GaussDB(DWS)默认进行密码复杂度校验(即GUC参数password_policy默认为1),默认密码策略要求如下:
- 长度为8~32个字符。
- 至少包含大写字母、小写字母、数字或特殊字符中三种的组合。
- 不能是用户名和用户名反序,此条要求为非大小写敏感。
- 不能是当前密码、当前密码的反序。
自定义密码策略
密码策略包含:密码复杂度要求、密码有效期、密码重用设置以及密码的加密方式及密码重试与锁定,不同的策略项由对应的GUC参数控制,参见下表(详细内容也可参考安全和认证(postgresql.conf)):
密码策略 |
对应参数名称 |
参数描述 |
参数取值范围 |
GaussDB(DWS)默认值 |
---|---|---|---|---|
是否进行密码复杂度检查 |
password_policy |
创建或者修改GaussDB(DWS)账户时,该参数决定是否进行密码复杂度检查。 |
整型,0、1
|
1 |
密码复杂度要求 |
password_min_length |
密码的最小长度。 |
整型,6~999 |
8 |
password_max_length |
密码的最大长度。 |
整型,6~999 |
32 |
|
password_min_uppercase |
包含大写字母(A-Z)的最少个数。 |
整型,0~999
|
0 |
|
password_min_lowercase |
包含小写字母(a-z)的最少个数。 |
整型,0~999
|
0 |
|
password_min_digital |
包含数字(0-9)的最少个数。 |
整型,0~999
|
0 |
|
password_min_special |
包含特殊字符的最少个数(特殊字符的列表请参见表2)。 |
整型,0~999
|
0 |
|
密码有效期 |
password_effect_time |
用户的密码有效期。当达到所设置的密码到期提醒天数password_notify_time时,系统会在用户登录数据库时提示用户修改密码。 |
浮点型,0~999,单位为天。
|
90 |
password_notify_time |
密码到期前提醒的天数。 |
整型,0~999,单位为天。
|
7 |
|
密码重用设置 |
password_reuse_time |
不可重用天数。 |
浮点型,0~3650,单位为天。
|
60 |
password_reuse_max |
不可重用次数。 |
整型,0~1000
|
0 |
|
加密方式 |
password_encryption_type |
采用何种加密方式对用户密码进行加密存储。 |
0、1、2
|
1 |
重试与锁定 |
password_lock_time |
账户被锁定后自动解锁的时间 |
浮点型,0~365,单位为天。
|
1 |
failed_login_attempts |
如果输入密码错误的次数达到failed_login_attempts则当前账户被锁定,password_lock_time秒后被自动解锁。 |
整型,0~1000
|
10 |
自定义密码策略示例
示例一:配置密码复杂度参数password_policy。
- 登录GaussDB(DWS) 管理控制台。
- 在左侧导航栏中,单击“集群管理”。
- 在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。
- 单击“参数修改”页签,并在“参数列表”模块修改password_policy参数值,然后单击“保存”。password_policy参数无需进行重启集群操作,参数修改后立即生效。
示例二:配置密码有效期password_effect_time参数。
- 登录GaussDB(DWS) 管理控制台。
- 在左侧导航栏中,单击“集群管理”。
- 在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。
- 单击“参数修改”页签,并在“参数列表”模块修改password_effect_time参数值,然后单击“保存”。password_effect_time参数无需进行重启集群操作,参数修改后立即生效。
图2 password_effect_time
密码设置和修改
- 建议系统管理员和普通用户都要定期修改自己的账户密码,避免账户密码被非法窃取。
以修改用户user1密码为例,使用管理员用户连接数据库并执行如下命令:
1
ALTER USER user1 IDENTIFIED BY 'newpassword' REPLACE 'oldpassword';
密码要符合规则,否则会执行失败。
- 管理员可以修改自己的或者其他账户的密码。通过修改其他账户的密码,解决用户密码遗失所造成无法登录的问题。
1
ALTER USER joe IDENTIFIED BY 'password';
- 系统管理员之间不允许互相修改对方密码。
- 系统管理员可以修改普通用户密码且不需要用户原密码。
- 系统管理员可以修改自己的密码但需要管理员原密码。