gbase8s数据库实现黑白名单的几种方案

1、借用操作系统的黑白名单

2、使用数据库 TRUSTED CONTEXT 机制

sql 复制代码
CREATE TRUSTED CONTEXT tcx1
  USER root
  ATTRIBUTES (ADDRESS '172.16.39.162')
  ATTRIBUTES (ADDRESS '172.16.39.163')
  ENABLE
  WITH USE FOR wangyx WITHOUT AUTHENTICATION;

如上创建 可信任上下文对象 tcx1

在 jdbc URL中添加TRUSTED_CONTEXT=TRUE属性

实际效果为 162 与163 机器的 root 用户可以连接数据库,其他ip 或者非root用户不能连接,从 root切换成 wangyx用户时不需要输入密码

复制代码
SET SESSION AUTHORIZATION TO 'wangyx';

更多语法以及配置细节可参考gbase8s语法手册

3 利用数据库现有机制实现

sql 复制代码
create table sysmaster:gbasedbt.hostlist
(id int,ipaddr varchar(15));

insert into hostlist values(0,'node23');
insert into hostlist values(1,'172.16.39.162');

drop procedure if exists checkip;
create procedure checkip()
define a int;
define v_sessionid int;
define r_msg varchar(10);
define v_ipaddr varchar(100);
let v_sessionid=dbinfo('sessionid');
select hostname into v_ipaddr from sysmaster:sysscblst where sid=v_sessionid;
select count(1) into a from sysmaster:hostlist where ipaddr=v_ipaddr;
if a =0 THEN
execute function sysadmin:task('onmode','z',v_sessionid) into r_msg;
RAISE EXCEPTION -746,0,'connect refuse';
end if;
end procedure;

dbaccess tstnw <<!
create procedure public.sysdbopen()
call sysmaster:checkip();
end procedure;
!

1)在部分环境中由于DNS反向解析策略很有可能将实际IP解析成bogon,需要额外关注下

2)若 sysdbopen 未知异常会导致数据库无法连接,最简单的处理方案为

dbaccess sysmaster -<<!

update <dbname>:sysprocedures set procname='aaa' where procname like '%sysdbopen%';

!

重启数据库

4 某些高版本中支持在参数中直接配置黑白名单

相关推荐
不羁。。2 小时前
【撸靶笔记】第八关:GET - Blind - Boolian Based - Single Quotes
数据库·sql·mybatis
AwhiteV3 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
m0_595199853 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
爱尚你19933 小时前
MySQL 三大日志:redo log、undo log、binlog 详解
数据库·mysql
小猿姐4 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
NocoBase6 小时前
10 个开源工具,快速构建数据应用
数据库·低代码·开源
麻辣清汤6 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
Kan先生8 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python
超级迅猛龙8 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc
杨过过儿8 小时前
【Task02】:四步构建简单rag(第一章3节)
android·java·数据库