MyCat - 配置文件详解 - server.xml 之 firewall 配置详解 | 学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 快速学习 MyCat - 配置文件详解 - server.xml 之 firewall 配置详解

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat - 配置文件详解 - server.xml 之 firewall 配置详解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/755/detail/13253


MyCat - 配置文件详解 - server.xml 之 firewall 配置详解

内容介绍:

一、Firewall 标签

二、firewall 演示

三、黑名单拦截的明细配置

四、拦截配置-永真条件

 

一、Firewall 标签

Firewall 翻译过来就是防火墙,它是用来定义 my cat 当中的防火墙,而在防火墙的配置当中,分为了两个部分 Whitehost 和 blacklist,White host 指的是 IP 白名单,白名单指的就是哪些IP可以访问 mycat。Blacklist 指的是 SQL 黑名单。firewal1 标签用来定义防火墙;  firewall 下 whitehost 标签用来定义 IP 白名单,, blacklist 用来定义 SQI黑 名单。

<firewa11>

<!--白名单配置-->

<whitehost>

<host user="root" host="127 .0.0.1"></host>

</whitehost>

白名单配置指的是哪个IP地址能够以什么样的用户名来访问 mycat,这段配置代表的是 root 用户,可以通过 127.0.0.1,这个 IP 来访问 mycat,其他的 IP 是不可以的。

<!--黑名单配置-->

<blacklist check="true">   ( check 代表是否检查)

<property name="selelctAllow">false</property>

selelctAllow 是否允许查询操作,false 为不允许

</blacklist>

</firewa1l>

 

二、firewall 演示

打开 sever.xml

<!--全局 SQL 防火墙设置-->

<!--白名单可以使用通配符%或着*-->

<!--例如<host host="127.0.0. *" user="root"/> -->

<!--例如<host host="127.0. *" user="root"/>-->

<!--例如<host host="127.x" user="root"/>-->

<!--例如<host host="1*7. +" user="root"/>-->

<!--这些配置情况下对于 127.0.0.1 都能以 root 账户登录-->

<firewall>

<whitehost>

<host host="1*7.0.0.*"user=" root"/>

</ whitehost>

<blacklist check="ture">

<property name="selelctAllow"> ture</property>

<property name="deleteAllow"> false</property>

</blacklist>

</firewall>

这段代表 root 用户可以通过 1*7.0.0.* 来访问 mycat,<blacklist check="ture'">是允许检查。

重启 mycat,连接 mycat

[ root@localhost mycat]# mysql -h 192.168.192.157 -P 8066 一u root -P

Enterpassword:

ERROR 1045 (HY000) : Access denied for user ' root' with host ’192.168.192.157 '

这个时候发现并没有登录上来,root 用户使用 192.168.192.157 这台主机登录是不被允许的。因为前面提到 root 用户只能以 1*7.0.0.* 这个主机进行匹配,否则没有权限。更改地址进行连接

image.png

这里需要明确的第一点,<host host="1*7.0.0.*"user=" root"/> 代表的是 root 用户可以去访问 1*7.0.0.*这个主机上的 mycat。

第二部分执行 use ITCAST 指令,切换一下逻辑库,执行一下 select *feom TB_TEST查看逻辑表

image.png

第三部分插入一个数据

mysql> insert into TB TEST (id, title) values (7, 'goods7') ;

Query OK,1 row affected (0.02sec)

第四部分删除操作

mysql>delete from TB TEST where id=7ERROR 3012 (HY000) :The statement is ursafe SQL, reject for user ‘root’

不安全的 SQL,拒绝 root

主机的白名单是以 1*7.0.0.* 这个 IP 进行访问,如果不能匹配上这个 IP 则不允许访问。下面指的是用户登录上来以后,针对于每一种类型的 SQL 它能不能访问,slecetAllow 选择为 ture 是允许访问,updateAllow 默认为 ture,deleteallow 配置为 false,不允许执行 delete 操作。

 

三、黑名单拦截的明细配置

配置项

缺省值

描述

selelctAllow

true

selelctAllow

selectAllColumnAllow

Ture

是否允许执行 SELECT * FROMT 这样的语句。如果设置为 false ,不允许执行 select * from t,但可以select * from (select id, name from t)a。这个选项是防御程序通过调用 select * 获得数据表的结构信息。

selectIntoAllow

Ture

SELECT 查询中是否允许 INTO 字句

deletpAllow

Ture

是否允许执行 DELETE 语句

updateAllow

Ture

是否允许执行 UPDATE 语句

insertAllow

Ture

是否允许执行 INSERT 语句

replaceAllow

Ture

是否允许执行 REPLACE 语句

mergeAllow

Ture

是否允许执行 MERGE 语句,这个只在 Ooracle 中有用

callAllow

Ture

是否允许通过 jdbc的 call 语法调用存储过程

setAllow

true

是否允许使用 SET 语法

truncateAllow

true

truncate 语句是危险,缺省打开,若需要自行关闭

createTableAllow

true

是否允许创建表

alterTableAllow

true

是否允许执行 Alter Table 语句

dropTableAllow

true

是否允许修改表

commentAllow

false

是否允许语句中存在注释, oracle 的用户不用担心, wall 能够识别 hints 和注释的区别

noneBaseStatementAllow

false

是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽 DDL。

multistatementAllow

false

是否允许一次执行多条语句 ,缺省关闭

useAllow

true

是否允许执行 mysql 的 use 语句,缺省打开

describeAllow

Ture

是否允许执行mysql 的 describe 语句,缺省打开

showAllow

Ture

是否允许执行 mysql 的 show 语句,缺省打开

commitAllow

Ture

是否允许执行commit 操作

rollbackAllow

Ture

是否允许执行 roll back 操作

 

四、拦截配置-永真条件

selectWhereAlwayTrueCheck

true

检查SELECT语句的WHERE子句是否是一个永真条件

selectWhereAlwayTrueCheck

true

检查SELECT 语句的HAVING子句是否是一个永真条件

selectWhereAlwayTrueCheck

true

检查DELETE语句的WHERE子句是否是一个永真条件

selectWhereAlwayTrueCheck

false

检查DELETE语句是否无where 条件,这是有风险的,但不是sQL 注入类型的风险

updateWhereAlayTrueCheck

ture

检查 DELETE 语句是否无 where 条件,这是有风险的,但不是 sQL 注入类型的风险

updateWhereNoneCheck

false

检查 DELETE 语句是否无 where 条件,这是有风险的,但不是 sQL 注入类型的风险

conditi onAndAlwayTrueAllow

false

检查查询条件( WHERE/HAVING 子句)中是否包含 AND 永真条件

condi ti onAndAIwayFalseAllow

false

检查查询条件(WHERE/HAVING 子句)中是否包含 AND 永假条件

conditionLikeTrueAllow

ture

检查查询条件( WHERE/HAVING 子句)中是否包含LIKE 永真条件

如果在业务系统当中,有一些比较特殊的需求,这个时候只需要知道,通 mycat 开始当中防火墙的配置,可以来完成这块的需求。以上就是 firewall 防火墙的配置,主要有两块,一块是主机访问的白名单,另一块是 SQL 的黑名单的配置

相关文章
|
1月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
4天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
7 0
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
152 0
|
2月前
|
Java
logback配置,命名为logback-spring.xml
logback配置,命名为logback-spring.xml
|
2月前
|
XML Java 测试技术
【SpringBoot】基于 Maven 的 pom.xml 配置详解
【SpringBoot】基于 Maven 的 pom.xml 配置详解
229 0
【SpringBoot】基于 Maven 的 pom.xml 配置详解
|
2月前
|
负载均衡 Dubbo NoSQL
Dubbo配置文件解密:从dubbo-consumer.xml到dubbo-provider.xml一网打尽【十】
Dubbo配置文件解密:从dubbo-consumer.xml到dubbo-provider.xml一网打尽【十】
43 0