KingbaseES 扩展插件src_restrict 介绍
插件简介
src_restrict是KingbaseES的一个扩展插件,主要用于支持来源限制功能,该功能通过黑白名单来实现。插件src_restrict默认已经加载。
查看插件是否加载
show shared_preload_libraries;
配置插件src_restrict
插件默认版本1.0
test=> select * from sys_available_extensions where name ='src_restrict';
name | default_version | installed_version | comment
--------------+-----------------+-------------------+---------------------
src_restrict | 1.0 | 1.0 | src restrict plugin
(1 row)
src_restrict.enable:是否允许使用黑白名单功能,取值范围为true或者false ,缺省值为true。
TEST=# \c - sso
You are now connected to database "TEST" as user "sso".
TEST=> show src_restrict.enable
TEST-> ;
src_restrict.enable
---------------------
on
(1 row)
插件src_restrict使用方法
系统函数
添加来源限制的规则,可通过参数选择配置白名单或黑名单。
src_restrict.add_rules(
filter_type int,
rule_user text,
rule_ip text,
outrule_ip text)
参数说明
filter_type
限制规则的类型,0为白名单,1为黑名单。
rule_user
限制的用户名,多个用户时需使用逗号分隔,null表示限制所有用户。当用户名中存在特殊字符时,请将该用户名使用双引号括起来,避免用户名识别失败。
用户名参数最大长度255。
rule_ip
限制的IP,多个IP之间需使用逗号分隔,null表示限制所有IP。
允许使用*号进行IP网段匹配,但网段后不允许出现具体IP,例如192.168.*.123。
outrule_ip
不受限制的IP,与rule_ip相同。
不受限制仅表示该参数与rule_ip的类型相反,例如filter_type为0,则rule_ip为白名单,outrule_ip为黑名单,不影响黑白名单优先级。
系统函数
删除来源限制规则。
src_restrict.remove_rules(
filter_type int,
rule_user text,
rule_ip text)
参数说明
filter_type
规则的类型,0为白名单,1为黑名单。
rule_user
规则的用户名,多个用户时需使用逗号分隔,null等于all。当用户名中存在特殊字符时,请将该用户名使用双引号括起来,避免用户名识别失败。
用户名参数最大长度255。
rule_ip
规则的IP,只允许删除一个IP,不支持删除多个规则,null等于0.0.0.0/0。
允许使用*号进行IP网段匹配,但网段后不允许出现具体IP,例如192.168.*.123。
查看规则限制视图
TEST=> select * from src_restrict.show_rules;
filter_type | rule_user | rule_ip | netmask
-------------+-----------+-----------+-----------------------------------------
allow | {all} | |
allow | {all} | 127.0.0.1 | 255.255.255.255
allow | {all} | 0.0.0.0 | 0.0.0.0
allow | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
allow | {all} | :: | ::
allow | {all} | |
allow | {all} | 127.0.0.1 | 255.255.255.255
allow | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
(8 rows)
测试示例
\c - sso
添加对用户u1,IP地址为192.168.1.2的黑名单规则
TEST=> select src_restrict.add_rules(1, 'u1', '192.168.56.3', '');
add_rules
-----------
t
(1 row)
查看当前黑白名单,多了一条filter_type为reject的条目
TEST=> select * from src_restrict.show_rules;
filter_type | rule_user | rule_ip | netmask
-------------+-----------+--------------+-----------------------------------------
allow | {all} | |
allow | {all} | 127.0.0.1 | 255.255.255.255
allow | {all} | 0.0.0.0 | 0.0.0.0
allow | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
allow | {all} | :: | ::
allow | {all} | |
allow | {all} | 127.0.0.1 | 255.255.255.255
allow | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
reject | {u1} | 192.168.56.3 | 255.255.255.255
(9 rows)
需要sso用户reload后黑名单生效
TEST=> select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 row)
退出当前会后会再次登录已经被禁止
[kingbase7@localhost ~]$ ksql -h 192.168.56.3 -U u1 test
ksql: error: could not connect to server: FATAL: no sys_hba.conf entry for host "192.168.56.3", user "u1", database "test", SSL off
删除刚添加的规则
select src_restrict.remove_rules(1, 'u1', '192.168.56.3');
需要sso用户reload后生效
TEST=> select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 row)
删除规则后可以用u1用户登录数据库
[kingbase7@localhost data]$ ksql -h 192.168.56.3 -U u1 test
Password for user u1:
ksql (V8.0)
Type "help" for help.
卸载插件
在kingbase.conf文件中shared_preload_libraries中将对应插件删除后重启数据库。
src_restrict扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级插件。
KINGBASE研究院