kingbase数据库密码复杂度和有效期策略开启
金仓数据库(KingbaseES)提供了全面的密码安全管理策略,包括密码加密、复杂度检查和有效期管理,以下是详细的策略说明:
一、密码加密策略
金仓数据库支持多种密码加密算法,通过配置参数password_encryption控制用户口令的加密方式。默认采用scram-sha-256加密算法,这是目前最安全的认证方式之一。支持的加密算法包括:
- scram-sha-256:基于RFC 7677标准,提供更强的安全性
- md5:MD5哈希加密,兼容性较好
- sm3:国密算法
- sm4:国密算法
- scram-sm3:基于国密SM3的SCRAM认证
用户口令以密文形式存储在sys_authid系统表中,可通过SQL命令create user和alter user进行管理。金仓还提供密码配置工具sys_encpwd,可以将用户密码以密文形式存储在.encpwd或encpwd.conf文件中,进一步提升安全性。
二、密码复杂度策略
金仓数据库通过passwordcheck插件实现密码复杂度检查,需要先加载插件并配置相关参数:
1. 加载插件
在kingbase.conf文件中配置:
shared_preload_libraries = 'passwordcheck'
重启数据库后创建扩展:
create extension passwordcheck;
2. 核心复杂度参数
| 参数名称 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|
passwordcheck.enable |
true/false | false | 复杂度功能开关 |
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 | 最少包含特殊字符数 |
特殊符号定义为除空白符、英文字母、单引号和数字外的所有可见字符。
3. 其他安全策略
- 禁止简单常见单词:
passwordcheck.password_condition_simple = off - 禁止密码与用户名相同:
passwordcheck.password_condition_user = off - 密码重复使用间隔:
password_time = 1(单位:天) - 登录失败锁定:
error_user_connect_times = 3(错误次数) - 自动解锁时间:
error_user_connect_interval = 2(单位:分钟)
三、密码有效期策略
金仓数据库通过identity_pwdexp插件实现密码有效期管理:
1. 加载插件
在kingbase.conf文件中配置:
shared_preload_libraries = 'identity_pwdexp'
重启数据库后创建扩展:
create extension identity_pwdexp;
2. 有效期参数
| 参数名称 | 类型 | 范围 | 默认值 | 说明 |
|---|---|---|---|---|
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/OFF | ON | 自动设置用户密码有效期 |
3. 工作机制
- 自动设置:开启后,创建或修改用户密码时,系统会自动设置密码有效期为当前时间加上
password_change_interval设定的值 - 手动设置:关闭自动设置后,可通过
VALID UNTIL子句手动设置密码有效期 - 有效期检查:用户登录时会检查密码是否过期,过期后限制登录并要求修改密码
四、配置示例
1. 密码复杂度配置
-- 开启复杂度检查
alter system set passwordcheck.enable = on;
-- 设置复杂度要求
alter system set passwordcheck.password_length = 10;
alter system set passwordcheck.password_condition_letter = 3;
alter system set passwordcheck.password_condition_digit = 3;
alter system set passwordcheck.password_condition_punct = 2;
-- 重新加载配置
select sys_reload_conf();
2. 密码有效期配置
-- 设置密码有效期为90天,最大有效期为180天
alter system set identity_pwdexp.password_change_interval = 90;
alter system set identity_pwdexp.max_password_change_interval = 180;
select sys_reload_conf();
这些策略可以显著提升金仓数据库的密码安全性,满足等保、密评等合规要求。

浙公网安备 33010602011771号