1. 问题
如何设置KingbaseES数据库用户密码复杂度?
2. 什么是密码复杂度?
KingbaseES数据库密码复杂度是指密码的最小长度,密码中所包含的数字、英文字母、特殊符号的数目。
数据库管理员在设置密码复杂度后,KingbaseES数据库可以在创建和修改用户时,自动对用户密码进行相关方面的检查。如果密码不满足指定的条件,那么创建/修改用户将不成功。
3. KingbaseES用户密码的复杂度管理
KingbaseES数据库通过插件的方式来进行密码的复杂度管理。这种方式更为灵活,当数据库的实用场景需要进行密码的复杂度管理时,加载插件即可。而不需要该功能时,卸载插件即可。
KingbaseES中通过 4 个全局级参数配合插件来实现用户密码复杂度管理。
3.1. 加载插件
KingbaseES数据库通过修改 kingbase.conf
文件中 shared_preload_libraries
参数来加载插件:
shared_preload_libraries = 'passwordcheck'
加载插件后,需要重启数据库,创建插件:
create extension passwordcheck;
CREATE EXTENSION
3.2. 配置密码复杂度参数
3.2.1.打开密码复杂度开关
复杂度开关通过参数passwordcheck.enable
配置,默认为关闭状态。
显示当前数据库密码复杂度开关的状态:
show passwordcheck.enable;
passwordcheck.enable
----------------------
off
(1 行记录)
打开密码复杂度开关:
alter system set passwordcheck.enable=on;
ALTER SYSTEM
重新读取kingbase.conf
文件:
select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 行记录)
显示当前数据库密码复杂度开关的状态:
show passwordcheck.enable;
passwordcheck.enable
----------------------
on
(1 行记录)
3.2.2.设置密码的长度
KingbaseES用户密码的长度通过passwordcheck.password_length
参数配置,取值范围为[8,63]
,缺省为 8。
显示当前密码的长度:
SHOW passwordcheck.password_length;
passwordcheck.password_length
-------------------------------
8
(1 row)
设置用户密码的长度为10:
SET passwordcheck.password_length = 10;
显示当前密码的长度:
SHOW passwordcheck.password_length;
passwordcheck.password_length
-------------------------------
10
(1 row)
3.2.3.设置密码中含字母的个数
KingbaseES用户密码中含字母的个数通过参数passwordcheck.password_condition_letter
配置,取值范围为[2,61]
,缺省为 2。
显示当前密码中含字母的个数:
SHOW passwordcheck.password_condition_letter;
passwordcheck.password_condition_letter
-----------------------------------------
2
(1 row)
设置用户密码中含3个字母:
SET passwordcheck.password_condition_letter = 3;
显示当前密码中含字母的个数:
SHOW passwordcheck.password_condition_letter;
passwordcheck.password_condition_letter
-----------------------------------------
3
(1 row)
3.2.4.设置密码中含数字的个数
KingbaseES用户密码中含数字的个数通过参数passwordcheck.password_condition_digit
配置,取值范围为[2,61]
,缺省为 2。
显示当前密码中含数字的个数:
SHOW passwordcheck.password_condition_digit;
passwordcheck.password_condition_digit
----------------------------------------
2
(1 row)
设置用户密码中含3个数字:
SET passwordcheck.password_condition_digit = 3;
显示当前密码中含数字的个数:
SHOW passwordcheck.password_condition_digit;
passwordcheck.password_condition_digit
----------------------------------------
3
(1 row)
3.2.5.设置密码中含特殊字符的个数
KingbaseES用户密码中含特殊字符的个数通过参数passwordcheck.password_condition_punct
配置,取值范围为[0,59]
,缺省为 0。其中特殊符号为除空白符、英文字母、单引号和数字外的所有可见字符。
显示当前密码中含特殊字符的个数:
SHOW passwordcheck.password_condition_punct;
passwordcheck.password_condition_punct
----------------------------------------
0
(1 row)
设置用户密码中含2个特殊字符:
SET passwordcheck.password_condition_punct = 2;
显示当前密码中含特殊字符的个数:
SHOW passwordcheck.password_condition_punct;
passwordcheck.password_condition_punct
----------------------------------------
2
(1 row)
3.3. 卸载插件
当不需要用户密码复杂度管理功能时,用户可通过修改 kingbase.conf
文件中 shared_preload_libraries
参数,卸载插件:
shared_preload_libraries = ''
卸载插件时,重启数据库后方生效。