当前位置: 首页 > news >正文

kingbase金仓数据库的密码有效期和密码复杂度

Kingbase金仓数据库提供了密码有效期和复杂度配置功能,可以通过以下方式进行设置:

一. 密码有效期配置

插件identity_pwdexp

identity_pwdexp是KingbaseES的一个扩展插件,用于设置口令有效期。

KingbaseES的用户管理中含有口令有效期这一属性,用户密码过期检查就是通过设置用户密码的有效期,在用户密码过期后限制用户登录数据库,并输入新密码的功能。

KingbaseES通过插件的方式来进行用户密码过期检查。这种方式更为灵活,当数据库的实用场景需要进行用户密码过期检查时,加载插件即可。而不需要该功能时,卸载插件即可。

插件identity_pwdexp加载方法

在使用 identity_pwdexp 之前,需要将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,并重启 KingbaseES 数据库。

shared_preload_libraries = 'identity_pwdexp' # (change requires restart)

插件identity_pwdexp的参数配置

1、identity_pwdexp.password_change_interval

  • 密码有效期,单位是天,取值范围为[1,INT_MAX],缺省为 30。
  • 参数只能在postmaster启动或由安全管理员通过SQL语言(alter命令)进行设置。
  • 语句Alter system set 参数名 = 参数值;
  • 修改后再运行select sys_reload_conf();不用重启服务器,对所有数据库及连接立即生效。
  • 指定密码创建用户时,可通过 valid until 选项指定该用户的密码有效期,指定的密码有效期必须晚于当前时间且早于更换周期。 identity_pwdexp.password_change_interval 指定的时间。
  • 对已创建成功且已拥有密码的用户,也可通过alter语句的 valid until 选项修改其密码有效期,但仅安全管理员有这个权限,其它用户无法修改自己及他人的口令更换周期。
  • 若在创建用户或修改用户密码时未显示的通过 valid until 选项指定该用户的密码有效期,那么系统会根据 identity_pwdexp.password_change_interval参数设定的值自动为其计算密码有效期。

2、identity_pwdexp.max_password_change_interval

  • 最大密码有效期,单位是天,取值范围为[1,INT_MAX],缺省为30。
  • 参数只能在postmaster启动或由安全管理员通过SQL语言(alter命令)进行设置。
  • 此参数用于限制密码有效期的设置范围,当设置的密码有效期大于最大密码有效期时,系统会报错提示。

查看当前密码有效期设置

SELECT name, setting, unit FROM sys_settings WHERE name LIKE '%password%life%' OR name LIKE '%pwd%life%';

示例

-- 创建扩展
\c test system
create extension identity_pwdexp; 
CREATE EXTENSION -- 设置密码有效期是5天
\c test sso
show identity_pwdexp.password_change_interval; identity_pwdexp.password_change_interval 
------------------------------------------30 
(1 row) 
alter system set identity_pwdexp.password_change_interval = 5; 
ALTER SYSTEM 
show identity_pwdexp.password_change_interval; identity_pwdexp.password_change_interval 
------------------------------------------ 30 
(1 行记录) select sys_reload_conf(); sys_reload_conf 
----------------- t 
(1 行记录) show identity_pwdexp.password_change_interval; identity_pwdexp.password_change_interval 
------------------------------------------ 5 
(1 行记录) \c test system
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 行记录) 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 行记录) 



二. 密码复杂度配置

插件passwordcheck

passwordcheck插件主要用于管理口令复杂度。

口令的复杂度检查是由数据库安全员对口令的最小长度,所包含的数字、英文字母、特殊符号的数目进行设置后,在数据库管理员创建和修改用户时,自动对口令进行相关方面的检查。如果口令不满足指定的条件,那么创建用户将不成功。

KingbaseES通过插件的方式来进行口令的复杂度管理。这种方式更为灵活,当数据库的实用场景需要进行口令的复杂度管理时,加载插件即可。而不需要该功能时,卸载插件即可。

插件passwordcheck加载方式

在使用 passwordcheck 之前,需要将其添加到 kingbase.conf 文件的 shared_preload_libraries 中,并重启 KingbaseES 数据库使配置生效。

shared_preload_libraries = 'passwordcheck'

插件passwordcheck的参数配置

passwordcheck.enable 口令复杂度开关,默认为关闭状态。
passwordcheck.password_length 口令的最小长度,取值范围为[8,63],缺省为 8。
passwordcheck.password_condition_letter 口令至少包含几个字母,取值范围为[2,61],缺省为 2。
passwordcheck.password_condition_digit 口令至少包含几个数字,取值范围为[2,61],缺省为 2。
passwordcheck.password_condition_punct 口令至少包含几个特殊字符,取值范围为[0,59],缺省为0。其中特殊符号为除空白符、英文字母、单引号和数字外的所有可见字符。

查看当前密码复杂度策略

SELECT name, setting FROM sys_settingsWHERE name LIKE '%password%' AND (name LIKE '%complex%' OR name LIKE '%length%');

示例

-- 打开口令复杂度开关\c test system
create extension passwordcheck;
CREATE EXTENSION\c test sso
show passwordcheck.enable;passwordcheck.enable
----------------------
off
(1 行记录)alter system set passwordcheck.enable=on;
ALTER SYSTEMselect sys_reload_conf();sys_reload_conf
-----------------
t
(1 行记录)show passwordcheck.enable;passwordcheck.enable
----------------------
on
(1 行记录)-- 修改口令最小长度为10\c test sso
SHOW passwordcheck.password_length;passwordcheck.password_length
-------------------------------8
(1 row)alter system set passwordcheck.password_length = 10;
ALTER SYSTEMselect sys_reload_conf();sys_reload_conf
-----------------
t
(1 行记录)SHOW passwordcheck.password_length;passwordcheck.password_length
-------------------------------10
(1 row)\c test system
CREATE USER u_pwd PASSWORD '123ab';
ERROR:  password length 5 is too short, should be longer than min
password length 10.CREATE USER u_pwd PASSWORD '1234567890ab';
CREATE ROLE-- 修改口令最少包含3个字母\c test sso
SHOW passwordcheck.password_condition_letter;passwordcheck.password_condition_letter
-----------------------------------------2
(1 row)alter system set passwordcheck.password_condition_letter = 3;
ALTER SYSTEMselect sys_reload_conf();sys_reload_conf
-----------------
t
(1 行记录)SHOW passwordcheck.password_condition_letter;passwordcheck.password_condition_letter
-----------------------------------------3
(1 row)\c test system
ALTER USER u_pwd PASSWORD '1234567890';
ERROR:  Password should contain at least 3 letter and the current
number is 0ALTER USER u_pwd PASSWORD '1234567890ab';
ERROR:  Password should contain at least 3 letter and the current
number is 2ALTER USER u_pwd PASSWORD '1234567890abC';
ALTER ROLE-- 修改口令最少包含3个数字\c test sso
SHOW passwordcheck.password_condition_digit;passwordcheck.password_condition_digit
----------------------------------------2
(1 row)alter system set passwordcheck.password_condition_digit = 3;
ALTER SYSTEMselect sys_reload_conf();sys_reload_conf
-----------------
t
(1 行记录)SHOW passwordcheck.password_condition_digit;passwordcheck.password_condition_digit
----------------------------------------3
(1 row)\c test system
ALTER USER u_pwd PASSWORD 'abcdefghij';
ERROR:  Password should contain at least 3 digit and the current
number is 0ALTER USER u_pwd PASSWORD 'abcdefghij123';
ALTER ROLE-- 修改口令最少包含3个特殊字符\c test sso
SHOW passwordcheck.password_condition_punct;passwordcheck.password_condition_punct
----------------------------------------0
(1 row)alter system set passwordcheck.password_condition_punct = 2;
ALTER SYSTEMselect sys_reload_conf();sys_reload_conf
-----------------
t
(1 行记录)SHOW passwordcheck.password_condition_punct;passwordcheck.password_condition_punct
----------------------------------------2
(1 row)\c test system
ALTER USER u_pwd PASSWORD '1234567890abc.';
ERROR:  Password should contain at least 2 punct and the current
number is 1ALTER USER u_pwd PASSWORD '1234567890abc./';
ALTER ROLE

注意事项

修改密码策略参数后需要执行SELECT sys_reload_conf();使新配置生效

部分配置可能仅在创建或修改用户密码时生效,不会影响已有用户

要强制用户下次登录时修改密码:

检查用户密码过期时间和状态
SELECT usename, valuntil, useconfig FROM sys_user;
密码策略的具体参数名称在不同版本中可能略有差异,建议参考对应版本的官方文档

http://www.hskmm.com/?act=detail&tid=8542

相关文章:

  • HDF5文件
  • Error encountered when performing Introspect the Portion of idea Introspect using JDBC metadata在哪设置
  • 核桃 CSP-S 模拟
  • 正确输入连字号、连接号、破折号和负号
  • 9 月记录
  • python基础-元组
  • .net core中获得程序集以及注入框架的方法总结
  • python基础篇-list(列表)
  • vscode使用powershell中文乱码
  • 关于如何读懂 P11832 [省选联考 2025] 图排列?
  • Untitled
  • 敏感性分析
  • 完整教程:论园区电气安全管理系统的重要性
  • 基于CSU8RP1186芯片的握力器解决方案
  • 亮相2025年服贸会,天翼云打造高质量算力服务新生态!
  • 易路薪酬专家Agent:基于10亿级数据与AI的智能薪酬解决方案
  • 有点意思!Java8后最有用新特性排行榜!
  • 数据结构 Trick 之:KDT 求 k 近/远 点
  • .NET 8程序配置版本及产品信息
  • C语言第二讲:进制转化
  • XXL-JOB(4)
  • QOJ #10485. Peculiar Protocol 题解
  • C++ 常用关键字
  • 【AP出版】第四届数理统计与经济分析国际学术会议 (MSEA 2025)
  • 数据结构 Trick 之:区间子区间计数
  • mapstruct.Mapper|Mapping详解
  • 抽象代数-学习笔记
  • 如何在保证质量的前提下,快速完成一份 PPT?
  • Source Code Summarization in the Era of Large Language Models 论文笔记
  • 线性回归-入门案例