暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a之用户密码安全

原创 茶茶 2022-12-04
1425

用户密码安全的设计旨在产品中实现安全功能。具体是指: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次即永久锁定账户。

  1. 密码策略

用户可以配置密码复杂度和长度要求,在创建密码和修改密码时必须符合此强度要求。

举例说明:

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;

执行该语句可以对用户进行锁定/解锁。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论