用户密码安全的设计旨在产品中实现安全功能。具体是指:1)密码安全管理:密码强度控制、密码重用控制、密码有效期控制;2)用户安全管理:登录重试锁定、账户锁定和解锁
用户密码安全涉及变量如下,均为只读变量,参数需要在各Coordinator节点的配置文件gbase_8a_gcluster.cnf和各Data节点的配置文件gbase_8a_gbase.cnf中,对相同变量配置相同的值。
注:配置参数后,要重启集群服务才能生效。参数若拼写错误/取值在范围之外,可能重启服务失败/无法登录集群。
参数名 | 范围 | 含义 |
password_format_option | 0-4 | 表示密码至少包含内置的字符字典数量,默认值为0,表示禁用变量。内置的字符字典包含以下4种:大写字母、小写字母、特殊字符以及数字。 |
password_not_same_reverse_username | 0,1 | 是否可以与用户名相同或逆序。默认为0,表示禁用该参数;建议值1,即不允许与用户名相同或逆序。 |
password_max_contain_continuous_char | 0-65535 | 不能包含连续字典字符的最大数量,默认值0,表示禁用该参数。 |
password_min_length | 0-65535 | 表示密码的最短长度,默认值为0,表示禁用参数。 |
password_reuse_max | 0-100 | 默认值为0,表示不控制。正数值N表示允许的口令间隔,间隔次数大于N才允许设置。 |
password_reuse_time | 0-65535 | 默认值为0,表示不控制。正数值N表示允许的口令间隔,间隔大于N天后才允许设置。 |
password_life_time | 0-65535 | 默认值为0,表示禁用密码过期。正数值N表示密码过期天数,密码必须在N天后修改。 |
login_attempt_times | 0-65535 | 用户登录失败锁定时间次数,默认为0,表示禁用参数。 |
login_locked_time | 0-180 | 账户锁定时间,单位:min,默认0,建议值30,即锁定30分钟。必须与login_locked_factor参数一起使用才生效 |
login_locked_factor | 0-10 | 惩罚因子,即每次锁定时间为惩罚因子的倍数,若惩罚因子设置为2,锁定时间为30,即每次锁定时间为2*(n*30),n为锁定次数。 |
login_attempt_max | 0-65535 | 默认为0,表示禁用参数;建议值为10,即连续重试失败10次即永久锁定账户。 |
- 密码策略
用户可以配置密码复杂度和长度要求,在创建密码和修改密码时必须符合此强度要求。
举例说明:
password_min_length=8 --密码长度至少为8
password_format_option=2 --至少包含两种字符
password_max_contain_continuous_char=3 --同种字符连续不能超过三个
password_not_same_reverse_username=1 --不可以与用户名相同/逆序
gbase> create user user1 identified by ' abc123ab';
Query 0K, 0 rows affected (Elapsed: 00:00: 00.24)
如果密码不符合要求,会出现以下几种错误:
--密码长度小于8
gbase> alter user user1 identified by ' abd123a'
ERROR 1809 (HY000): Invalid password format ,password length should be more than 8
--密码字符种类为1
gbase> alter user user1 identified by ' 1111111';
ERROR 1809 (HY000): Invalid password format ,password complexity not meet the requirements
--连续出现四个小写字母
gbase> alter user user1 identified by ' abdc123a'
ERROR 1809 (HY000): Invalid password format , password continuous dict ionary characters must be less than or equal to 3
--密码与用户名相同
gbase> alter user user1 identif iedoy ' user1' ;
ERROR 1809 (HY000): Invalid password format ,password not same username or reverse username
--密码与用户名逆序
gbase> alter user user1 identified by ' 1resu' ;
ERROR 1809 (HY000): Invalid password format ,password not same username or reverse username
密码策略变更后,用户登录数据库时提示修改密码
2.密码重用控制
password_reuse_max:限制用户使用指定间隔次数内的历史密码
password_reuse_time: 限制用户使用指定天数内的历史密码
注:集群内不同节点的参数配置要保持一致,否则可能导致某节点用户密码修改失败,各节点同用户密码不一致,生成event。
用户历史密码记录可以在表password_history和user_check中查看。
密码修改失败提示错误“ERROR 1826(HY000): Password is in history for user ’user1’@’%’.”。
注:同时配置两个参数时,用户密码若要修改成功需同时满足两种限制。
3.密码有效期管理
控制密码的有效期,达到有效期后用户密码自动过期。
Case1:使用默认密码过期策略
alter user user5 password expire default;
密码有效期按照配置文件的参数值生效。
用户密码过期后,执行语句时提示“You must reset your password using ALTER USER statement before executing this statement.”。
Case2:禁用密码过期策略:
alter user user3 password expire never;
Case3:指定密码过期时间间隔:
create user user4 password expire interval 180 day;
查询gbase.user_check表的password_life_time:180
Case4:使密码立即过期:
gbase> alter user user3 password expire ;
配置文件中有账户锁定相关参数,用户首次登录,提示修改密码
4.登录重试锁定
同一账户连续登录错误次数超过限制后,禁止该账户登录,在锁定时间内,该账户登录时,系统提示账户锁定信息;超过锁定时间后,系统自动解锁该账户。自动解锁后,若再连续登录超过限制次数,系统锁定账户登录时间将会延长。
若配置永久锁定参数后,用户永久锁定,无法自动解锁。
例如:
login_attempt_times=2
login_locked_time=30
login_locked_factor=2
用户he登录失败两次,he账户锁定,超出锁定时间后,用户自动解锁。

5.账户锁定和解锁
Create/alter user username account lock/unlock;
执行该语句可以对用户进行锁定/解锁。




