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 某些高版本中支持在参数中直接配置黑白名单

相关推荐
好奇的菜鸟1 小时前
Spring Boot 事务失效问题:同一个 Service 类中方法调用导致事务失效的原因及解决方案
数据库·spring boot·sql
岁岁岁平安2 小时前
Redis基础学习(五大值数据类型的常用操作命令)
数据库·redis·学习·redis list·redis hash·redis set·redis string
小光学长4 小时前
基于vue框架的防疫科普网站0838x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
极限实验室4 小时前
使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
数据库·docker·devops
飞翔的佩奇4 小时前
Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
java·数据库·mysql·毕业设计·ssm·旅游·jsp
float_六七7 小时前
SQL六大核心类别全解析
数据库·sql·oracle
Code季风8 小时前
将 gRPC 服务注册到 Consul:从配置到服务发现的完整实践(上)
数据库·微服务·go·json·服务发现·consul
Boilermaker19928 小时前
【Java EE】SpringIoC
前端·数据库·spring
霸王龙的小胳膊9 小时前
泛微虚拟视图-数据虚拟化集成
数据库
灵犀学长9 小时前
解锁Spring Boot多项目共享Redis:优雅Key命名结构指南
数据库·redis