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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 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月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
77 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
2月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
201 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
2月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
30天前
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
54 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
1月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
144 5
|
1月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
81 4
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
71 4
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
76 0
|
1月前
|
XML 存储 JSON
framework 的配置文件在.netcore里面不能用怎么处理?在.netcore中创建.xml配置文件
framework 的配置文件在.netcore里面不能用怎么处理?在.netcore中创建.xml配置文件
26 0
|
1月前
|
安全 内存技术
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传