关键字:
KingbaseES,用户,密码,有效期
1. 问题
如何设置KingbaseES数据库用户密码有效期?
2. 关于用户密码有效期
KingbaseES的用户管理中含有密码有效期这一属性,用户密码过期检查就是通过设置用户密码的有效期,在用户密码过期后限制用户登录数据库,并输入新密码的功能。
3. 设置用户密码有效期
KingbaseES通过插件的方式来进行用户密码过期检查,设置用户密码有效期。这种方式更为灵活,当数据库的实用场景需要进行用户密码过期检查时,加载插件即可。而不需要该功能时,卸载插件即可。
KingbaseES中通过 1 个全局级参数配合插件来实现用户密码过期检查。
3.1. 加载插件
KingbaseES数据库通过修改 kingbase.conf
文件中 shared_preload_libraries
参数来加载密码过期检查插件:
shared_preload_libraries = 'identity_pwdexp'
加载插件后,需要重启数据库,创建密码过期检查插件:
create extension identity_pwdexp;
CREATE EXTENSION
3.2. 配置密码有效期参数
3.2.1.设置密码有效期
KingbaseES用户密码有效期通过identity_pwdexp.password_change_interval
参数配置,单位是天,取值范围为[0,INT_MAX]
,0表示无限制,缺省为 7。
参数只能在postmaster启动或由安全管理员通过SQL语言(alter命令)进行设置。例如:
alter system set identity_pwdexp.password_change_interval = 参数值
修改后需运行:
select sys_reload_conf();
不用重启服务器,即对所有数据库及连接生效。例如:
show identity_pwdexp.password_change_interval;
identity_pwdexp.password_change_interval
-------------------------------------------------------------------------
7
(1 row)
alter system set identity_pwdexp.password_change_interval = 5;
ALTER SYSTEM
show identity_pwdexp.password_change_interval;
identity_pwdexp.password_change_interval
-------------------------------------------------------------------
0
(1 行记录)
select sys_reload_conf();
sys_reload_conf
-------------------------
t
(1 行记录)
show identity_pwdexp.password_change_interval;
identity_pwdexp.password_change_interval
--------------------------------------------------------------------------
5
(1 行记录)
当指定密码创建用户时,可通过 valid until
选项指定该用户的密码有效期,指定的密码有效期必须晚于当前时间且早于更换周期 identity_pwdexp.password_change_interval
指定的时间。
对已创建成功且已拥有密码的用户,也可通过alter语句的 valid until
选项修改其密码有效期,但仅安全管理员有这个权限,其它用户无法修改自己及他人的密码更换周期。
call now();
Now
-----------------------------------------------------------------
2020-04-30 15:34:30.408304+08
(1 行记录)
CREATE USER u_pwd_et PASSWORD '1234567890abC/.' VALID UNTIL '2020-05-01';
CREATE ROLE
SELECT USENAME, VALUNTIL FROM SYS_USER WHERE USENAME ='u_pwd_et';
usename | valuntil
---------------+------------------------
u_pwd_et | 2020-05-01 00:00:00+08
(1 行记录)
若在创建用户或修改用户密码时未显示的通过 valid until 选项指定该用户的密码有效期,那么系统会根据 identity_pwdexp.password_change_interval参数设定的值自动为其计算密码有效期。
ALTER USER u_pwd_et PASSWORD '/.1234567890abC';
警告: user "u_pwd_et" does not be locked
ALTER ROLE
SELECT USENAME, VALUNTIL FROM SYS_USER WHERE USENAME ='u_pwd_et';
usename | valuntil
---------------+-------------------------------
u_pwd_et | 2020-05-05 15:35:23.448381+08
(1 行记录)
3.2.2.限制密码有效期的设置范围
KingbaseES最大密码的有效期通过identity_pwdexp.max_password_change_interval
参数配置,单位是天,取值范围为[1,INT_MAX]
,缺省为30。
此参数用于限制密码有效期的设置范围,当设置的密码有效期大于最大密码有效期时,系统会报错提示。
3.3. 卸载插件
当用户不需要密码过期检查功能时,用户可通过修改 kingbase.conf
文件中identity_pwdexp
参数,卸载插件:
shared_preload_libraries = ''
卸载插件时,重启数据库后方生效。