1.密码安全策略
用户密码存储在系统表 pg_authid 中,为防止用户密码泄露,GaussDB对用户密码进行加密存储,
所采用的加密算法由配置参数 password_encryption_type 决定。
•当参数password_encryption_type设置为0时,表示采用MD5方式对密码加密。
MD5加密算法安全性低,存在安全风险,不建议使用。
•当参数password_encryption_type设置为1时,表示采用sha256和MD5方式对密码加密。
MD5加密算法安全性低,存在安全风险,不建议使用。
•当参数password_encryption_type设置为2时,表示采用sha256方式对密码加密,为默认配置。
•当参数password_encryption_type设置为3时,表示采用sm3方式对密码加密。
2.查看已配置的加密算法。
gaussdb=# SHOW password_encryption_type;
password_encryption_type
--------------------------
2
(1 row)
3.修改密码加密算法。
--0/1都不安全。
gs_guc reload -Z datanode -N all -I all -c "password_encryption_type=2"
4.账户密码的复杂度及长度要求如下
◾包含大写字母(A-Z)的最少个数(根据GUC参数password_min_uppercase配置)。
◾包含小写字母(a-z)的最少个数(根据GUC参数password_min_lowercase配置)。
◾包含数字(0-9)的最少个数(根据GUC参数password_min_digital配置)。
◾包含特殊字符的最少个数(根据GUC参数password_min_special配置,特殊字符的列表请参见表1)。
◾密码的最小长度(根据GUC参数password_min_length配置)。
◾密码的最大长度(根据GUC参数password_max_length配置)。
5.关于若口令的说明。
◾弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,
用户需自己添加定制化的弱口令。
◾弱口令字典中的口令存放在 gs_global_config 系统表中,当创建用户、修改用户需要设置密码时,
将会把用户设置口令和弱口令字典中存放的口令进行对比,如果命中,则会提示用户该口令为弱口令,设置密码失败。
◾弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除
--示例如下:
CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('oracle'), ('mysql123'),('gaussdb001');
DROP WEAK PASSWORD DICTIONARY;
--由此可见,我们可以通过创建弱口令字典来加强密码的管理。不让设置太简单容易被猜到的密码。
6.密码重用问题
不可重用天数默认值为60天,不可重用次数默认值是0。这两个参数值越大越安全
--查看已配置的参数。
gaussdb=# SHOW password_reuse_time;
password_reuse_time
---------------------
60
(1 row)
密码过期后,60天以内不能设置和以前相同的密码。
不建议设置为0,即使需要设置也要将所有数据库节点中的password_reuse_time都设置为0才能生效。
数据库用户的密码都有密码有效期(password_effect_time),
当达到密码到期提醒天数(password_notify_time)时,
系统会在用户登录数据库时提示用户修改密码。
gs_guc reload -Z datanode -N all -I all -c "password_reuse_time=60"
--0表示不能重用。每次设置必须不同。
gaussdb=# SHOW password_reuse_max;
password_reuse_max
--------------------
0
(1 row)
--修改密码可以重用的次数。
gs_guc reload -Z datanode -N all -I all -c "password_reuse_max = 0"
7.密码有效期
gaussdb=# SHOW password_effect_time;
password_effect_time
----------------------
90
(1 row)
--设置密码有效期。
gs_guc reload -Z datanode -N all -I all -c "password_effect_time = 90"
这里需要注意账号(用户)有效期和密码有效期可以不同。从两个不同的维度进行约束。
gaussdb=# SHOW password_notify_time;
password_notify_time
----------------------
7
(1 row)
--当达到密码到期提醒天数:过期前一个礼拜通知。
gs_guc reload -Z datanode -N all -I all -c "password_notify_time = 7"
8.修改密码。
gaussdb=# ALTER USER user1 IDENTIFIED BY 'NewPasswd' REPLACE 'OldPasswd';
ALTER ROLE
gaussdb=# ALTER USER joe IDENTIFIED BY "********";
ALTER ROLE