目录
一、概述
KingbaseES可以对用户口令与用户占用资源进行必要的管理。
KingbaseES 使用扩展插件建立的系统参数,这组参数可以对数据库资源使用进行限制。
口令有效期,单位是天,0表示无限,默认值是 30
ALTER SYSTEM SET identity_pwdexp.password_change_interval = 7;
二、KingbaseES的扩展插件
为了管理用户口令和资源,使用到如下插件:
-
passwordcheck
密码规则校验,检查密码的最小长度,所包含数字、字母和符号等要求。
-
identity_pwdexp
口令有效期管理,可以启闭有效期管理,和设置口令有效期的天数。
-
sys_audlog
用户登录记录管理,记载帐户登录成功和失败的历史信息。可以在ksql工具登录成功时,显示出来相关信息。以及根据配置参数值,限制登录失败次数。
-
passwordhistory
口令历史管理, 是由数据库管理员对初次设定的口令或更改过的口令使用天数进行设置后,在修改用户口令时,自动对口令已使用天数进行相关方面的检查。如果口令不满足指定的条件,那么更改口令将不成功。
这些插件的使用方法如下:
#修改参数配置文件kingbase.conf
shared_preload_libraries = 'passwordcheck, identity_pwdexp, sys_audlog, passwordhistory'
#建立扩展
create extension passwordcheck;
create extension identity_pwdexp;
create extension sys_audlog;
create extension passwordhistory;
#默认开启口令有效期配置
identity_pwdexp.enable_common_user_autoset_interval = on
#默认关闭口令检查配置
passwordcheck.enable = on
#默认关闭口令历史管理配置
passwordhistory.enable = on
三、KingbaseES 用户口令配置项
1、连续尝试失败次数
允许帐户登录到用户帐户的连续失败尝试次数,如果达到失败次数,则帐户被锁定。
#可设置最大失败次数,默认值为 2147483647
sys_audlog.max_error_user_connect_times = 2147483647
#默认值为 0 , 不限次数
sys_audlog.error_user_connect_times = [0,errtimes_max]
2、用户被锁定的时长
指定帐户在指定连续失败的登录尝试次数后,将被锁定的时长。
#被锁定的分钟数,默认值为 0 分钟
sys_audlog.error_user_connect_interval = [0,int_max]
3、口令的有效期
指定同一密码可用于身份验证的天数,在限期内未更改密码,则密码将过期,并且会拒绝进一步的连接。
#可设置最大有效期的天数,默认值为 30 天
identity_pwdexp.max_password_change_interval = [30,int_max]
#最大有效期的天数,默认值为 30 天
identity_pwdexp.password_change_interval = [1,interval_max]
4、口令重复使用
指定密码不能重复使用的天数。
#不能重复使用的天数,默认值为 0 天,即不限制口令重复使用
passwordhistory.password_time = [0,int_max]
5、口令复杂度
指定密码的最小长度,所包含数字、字母和符号等要求,如果不能通过口令复杂度检查,则不能创建用户,或修改用户口令。
#密码中的最小数字个数,默认值为 2
passwordcheck.password_condition_digit = 2
#密码中的最小字母个数,默认值为 2
passwordcheck.password_condition_letter = 2
#密码中的最小符号个数,默认值为 2
passwordcheck.password_condition_punct = 0
#用户的最小密码长度,默认值为 8
passwordcheck.password_length = [8,63]
口令包含的特殊符号是指,除了空白符、数字、英文字母、单引号之外的所有可见字符。
四、用户资源配置项
1、并发会话数
限制用户能建立多少并发连接 。
KingbaseES DDL
#限制指定用户的并发连接数
CREATE|ALTER USER role_specification CONNECTION LIMIT 10 ;
2、会话时长
指定会话期间允许的连续非活动时间, 用于避免不必要的连接。
设定任何客户端空载间隔的最大允许持续时间(秒),默认值 0,不限制。
client_idle_timeout = 0
3、CPU时长
指定会话或语句的 CPU 时间限制, 用于避免不必要的CPU开销。
设置任何语句执行时间的最大值(毫秒),默认值 0,不限制。
statement_timeout = 0
设定任何空载事务的最大允许持续时间(毫秒),默认值 0,不限制。
idle_in_transaction_session_timeout = 0
等待锁的最长时间值(毫秒),默认值 0,不限制。
lock_timeout = 0
五、个性化配置参数
因为业务模式的区别,不同的用户对口令或资源,需要不同的参数配置方案。
针对用户user01,使用口令有效期,并且要求其每周必须修改密码
ALTER USER user01 SET
session_preload_libraries = 'identity_pwdexp' ;
ALTER USER user01 SET
identity_pwdexp.password_change_interval = 7 ;