自定义DWS密码策略
创建用户或修改用户时需要指定密码,DWS有默认的密码复杂度要求,也支持用户自定义数据库账户密码策略。
DWS默认密码策略
DWS默认进行密码复杂度校验,默认密码策略要求如下:
- 长度为8~32个字符。
- 至少包含大写字母、小写字母、数字或特殊字符中三种的组合。
- 不能是用户名和用户名反序,此条要求为非大小写敏感。
- 不能是当前密码、当前密码的反序。
自定义密码策略
密码策略包含:密码复杂度要求、密码有效期、密码重用设置以及密码的加密方式及密码重试与锁定,不同的策略项由对应的GUC参数控制,参见下表(详细内容也可参考安全和认证(postgresql.conf)):
| 密码策略 | 对应参数名称 | 参数描述 | 参数取值范围 | DWS默认值 |
|---|---|---|---|---|
| 是否进行密码复杂度检查 | password_policy | 创建或者修改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_effect_time参数。
- 使用如下命令连接数据库。
gsql -d postgres -p 25308
postgres为需要连接的数据库名称,25308为CN的端口号。
连接成功后,系统显示类似如下信息:
gsql ((GaussDB x.x.x build 39137c2d) compiled at 2022-04-01 15:43:11 commit 3629 last mr 5138 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres=#
- 查看已配置的参数。
1 2 3 4 5
SHOW password_effect_time; password_effect_time ---------------------- 90 (1 row)
如果显示结果不为90,执行“\q”命令退出数据库。
- 执行如下命令设置成默认值90(不建议设置为0)。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_effect_time = 90"
密码设置和修改
- 建议系统管理员和普通用户都要定期修改自己的账户密码,避免账户密码被非法窃取。
以修改用户user1密码为例,使用管理员用户连接数据库并执行如下命令:
1ALTER USER user1 IDENTIFIED BY 'newpassword' REPLACE 'oldpassword';
- 管理员可以修改自己的或者其他账户的密码。通过修改其他账户的密码,解决用户密码遗失所造成无法登录的问题。
1ALTER USER joe IDENTIFIED BY 'password';
- 系统管理员之间不允许互相修改对方密码。
- 系统管理员可以修改普通用户密码且不需要用户原密码。
- 系统管理员可以修改自己的密码但需要管理员原密码。