金仓数据库KingbaseES-sys_audlog:异常登录锁定及登录信息显示
关键字:
KingbaseES、sys_audlog、异常登录锁定、登录信息显示、人大金仓
sys_audlog插件简介
sys_audlog是一个Kingbase的扩展插件,加载此插件后可以实现账户异常登录后的锁定,以及账户登录信息的显示。如果需要使用插件,需要先在数据库data目录下的kingbase.conf中将插件名”sys_audlog”加入shared_preload_libraries中,然后重新启动数据库。system用户登录数据库之后通过create extension语句加载sys_audlog插件。
sys_audlog包含以下几个参数,相关参数由sso负责配置:
参数名 | 类型 | 取值范围及默认值 | 描述 |
---|---|---|---|
sys_audlog.error_user_connect_interval | INT | [0, INT_MAX]默认为0 | 用户被锁定时间,用户锁定时间超过此值可以重新登录,单位为分钟,0表示关闭到时自动解锁,需要手动解锁。 |
sys_audlog.error_user_connect_times | INT | [0, INT_MAX]默认为0 | 用户连续登录失败的最大次数。 |
sys_audlog.max_error_user_connect_times | INT | [0, INT_MAX]默认为INT_MAX | 登录失败次数的最大值。 |
sys_audlog.user_logonlog_level | INT | [0, 2]默认为0 | 记录登录信息的内容:0 表示不记录任何用户的登录信息;1 表示只记录用户成功登录的信息;2 表示记录用户登录成功和失败的信息。 |
异常登录锁定
-
- 使用方法、
设置密码连续最大失败次数:
\c – sso
alter system set sys_audlog.max_error_user_connect_times = 5;
call sys_reload_conf();
设置用户连续登录最大次数:
\c – sso
alter system set sys_audlog.max_error_user_connect_times = 5;
call sys_reload_conf();
设置用户被锁定时间:
\c - sso
ALTER SYSTEM SET sys_audlog.error_user_connect_interval = 10;
CALL sys_reload_conf();
解锁被锁定用户:
alter user username with login;
登录失败后会提示登录失败信息
查看当前被记录的用户登录失败的信息
登录次数达到限制后,会提示被锁定时间:
-
- 实现原理
在进行认证时会进入函数ClientAuthProcess中,然后通过TimeCheck_hook触发登录次数相关的检查,检查的大致流程如下:
TimeCheck_hook (AuthFailed_TimeCheck)
用户名无效?备用服务器?walsender?eserep?
if(认证失败)
AuditBlocklogFailedTimesUpdate更新失败次数
if(失败次数>error_user_connect_times && 锁定时间 > 阻塞间隔)
阻止登录
if(显示用户登录信息功能开启)
将数据记录在表sys_audit_userlog中
if(认证成功 && 错误次数 !=0)
AuditBlocklogFailedTimesDelete失败次数清零
if(阻止登录)
显示用户被锁定,设置了时间间隔则显示等待时间
登录信息显示
-
- 使用方法
设置显示登录信息:
\c – sso
alter system set sys_audlog.user_logonlog_level = 2; select sys_reload_conf();
改参数可设置为0、1、2,分别显示不同信息,0 表示不记录任何用户的登录信息;1 表示只记录用户成功登录的信息;2 表示记录用户登录成功和失败的信息。
-
- 实现原理
在进行认证时会后端会进入函数ClientAuthProcess中,然后通过TimeCheck_hook触发记录登录信息相关功能,检查的大致流程如下:
TimeCheck_hook (AuthFailed_TimeCheck)
……
if(显示用户登录信息功能开启)
将数据记录在表sys_audit_userlog中
……
认证登录时,前端会进入函数ShowLogonInfo,通过自动执行sql语句获取系统中记录的登录信息,并显示给用户。大致流程如下:
ShowLogonInfo
执行sql获取信息
检查证书有效期
检查sys_authlog插件正常加载
获取user_logonlog_level:0不显示信息,1显示登录成功信息,2显示两次登录成功间的失败次数
通过执行sql获取登录信息并显示
参考资料
《KingbaseES产品手册 3.2.2.5. 帐户异常登录锁定》 更多信息,参见https://help.kingbase.com.cn/v8/index.html