人大金仓数据库KingbaseES-用户密码有效期

金仓数据库KingbaseES用户密码有效期

关键字:

KingbaseES、安全、密码有效期、人大金仓、KingbaseES

密码有效期使用

Kingbase可以为用户设置密码有效期,用户密码超过指定时期之后限制用户登录并设置新密码。

Kingbase开启密码有效期检查功能需要加载插件" identity_pwdexp"。修改data目录下kingbase.conf文件中的shared_preload_libraries参数:" shared_preload_libraries = 'identity_pwdexp'",再重启数据库即可开启密码有效期检查。

密码有效期包含以下两个重要参数:

参数 类型 范围 默认值 描述
identity_pwdexp.password_change_interval INT [1,INT_MAX] 30 密码有效期
identity_pwdexp.max_password_change_interval INT [1,INT_MAX] 30 最大密码有效期
identity_pwdexp.enable_common_user_autoset_interval BOOL \ ON 自动设置用户密码有效期

密码有效期表示用户密码的最大更换周期,创建或修改用户密码时,为用户设定的密码有效期必须晚于当前时间,并且早于当前时间加上更换周期得到的时间。

最大密码有效期用户限制密码有效期的范围,密码有效期不能大于最大密码有效期。

自动设置用户有效期开启后,在创建用户密码或者修改用户密码时,系统会自动为用户设置新的密码有效期,设置的时间为当前时间加上identity_pwdexp.password_change_interval设定的值。

启动数据库并登录后,运行"create extension identity_pwdexp;"加载密码口令有效期插件,使用show指令可以查看上表中的三个值,如下图。

此时,自动设置用户密码有效期为开启状态,创建或修改用户后,系统会自动为用户设置密码有效期,设置的时间为当前时间加上identity_pwdexp.password_change_interval设定的值,设置结果如下图:

关闭自动设置密码过期时间后,修改或创建用户密码时不会自动修改用户密码的有效期。只能通过valid until子句进行修改。

密码有效期实现原理

    1. 创建用户

在使用create user创建用户时,会在CreateRole函数中会通过hook进入密码有效期设置函数UserPwdExpSetExpire中。

函数首先会检查扩展插件是否正常启用,然后检查以下三项:

a. 是否创建的是超级用户。

b. 是否开启自动设置用户密码有效期。

c. 是否带valid until子句。

若三项都为否,则返回直接返回空值,不设置密码有效期。

接下来检查语法,检查用户的密码和valid until子句,创建用户时必须设置密码才能使用valid until子句设置密码有效期。只有密码有效期identity_pwdexp.password_change_interval为0时,才能设置用户的密码有效期为"infinity"。

最后,如果使用valid until子句设置了有效期,则会检查时间是否超出限制,若没有设置,则会以identity_pwdexp.password_change_interval作为默认值作为有效期。将计算结果返回CreateRole函数,计入系统表sys_authid中。

    1. 修改用户密码有效期

在使用alter user 修改用户时,会在AlterRole函数中通过hook进入密码有效期修改函数UserPwdExpChangeExpire中。

函数首先判断以下三项:

  1. 被修改用户是普通用户。
  2. 自动设置用户密码有效期没有开启。
  3. 没有通过valid until子句设置密码有效期。

若以上三点都满足,则不会进行密码有效期的设置。

然后检查扩展插件是否正常启用。

如果没有修改密码也没有修改密码有效期,则函数会直接返回空值。

接下里进行语法检查,如果用户原本没有密码,且执行alter user时也没有指定密码,则无法使用valid until子句为用户设置密码有效期。

若通过以上检查,则会计算并检查用户的密码有效期的时间,返回给AlterRole函数,并将其写入sys_authid表中。

    1. 登录检查密码有效期

用户进行密码登录时会进入函数authProcessAuth或CheckPasswdChallengeAuth中,随后会函数getRolePassword,在里面读取表sys_authid并获取用户的密码有效期与当前登录时间进行对比,得出用户密码是否过期的结果。

参考资料

用户手册3.2.2.4口令有效期设置

相关推荐
原来是猿3 分钟前
MySQL 在 Centos 7环境安装
数据库·mysql·centos
路小雨~8 分钟前
Milvus 向量数据库的官方文档笔记
数据库·学习·milvus
老衲提灯找美女9 分钟前
数据库约束
数据库
卷Java14 分钟前
Python字典:键值对、get()方法、defaultdict,附通讯录实战
开发语言·数据库·python
wanhengidc17 分钟前
跨境云手机适用于哪些场景
大数据·运维·服务器·数据库·科技·智能手机
Bdygsl1 小时前
MySQL(6)—— 视图
数据库·mysql
oradh1 小时前
数据库入门概述
数据库·oracle·数据库基础·数据库入门
BullSmall1 小时前
一套定制化高级 payload 合集
数据库·安全性测试
zbdx不知名菜鸡1 小时前
postgre sql 数据库查询优化
数据库·postgresql
9稳1 小时前
基于PLC的生产线自动升降机设计
开发语言·网络·数据库·嵌入式硬件·plc