5、Mycat安全

1.权限配置

[1].user标签

  目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。

#server.xml配置文件user部分

[root@host79 ~]# vim /usr/local/mycat/conf/server.xml

 

<user name="mycat">

  <property name="password">123456</property>

  <property name="schemas">TESTDB</property>

</user>

<user name="user">

  <property name="password">user</property>

  <property name="schemas">TESTDB</property>

  <property name="readOnly">true</property>

</user>

 

(1).配置说明

标签属性

说明

name

应用连接中间件逻辑库的用户名

password

该用户对应的密码

TESTDB

应用当前连接的逻辑库中所对应的逻辑表。schemas 中可以配置一个或多个

readOnly

应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false

(2).测试案例

#测试案例一

# 使用user用户,权限为只读(readOnlytrue

# 验证是否可以查询出数据,验证是否可以写入数据

#1、用user用户登录,运行命令如下:

mysql -uuser -puser -h 192.168.188.188 -P8066

#2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB

select * from orders;

#3、可以查询到数据,如下图

#4、执行插入数据sql

insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);

#5、可看到运行结果,插入失败,只有只读权限,如下图:

  

#测试案例二

# 使用mycat用户,权限为可读写(readOnlyfalse

# 验证是否可以查询出数据,验证是否可以写入数据

#1、用mycat用户登录,运行命令如下:

mysql -umycat -p123456 -h 192.168.188.188 -P8066

#2、切换到TESTDB数据库,查询orders表数据,如下:

use TESTDB

select * from orders;

#3、可以查询到数据,如下图

#4、执行插入数据sql

insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);

#5、可看到运行结果,插入成功,如下图:

 

[2].privileges 标签

  持保留,因为privileges 打开后启动出现

 

错误.mycat的版本信息Mycat-server-1.6-RELEASE-20161028204710-linux.tar

2.SQL拦截

  firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单 ,blacklist 用来定义SQL 黑名单。

[1].白名单

  可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问

#设置白名单

#server.xml配置文件firewall标签

#配置只有192.168.140.128主机可以通过mycat用户访问

<firewall>

 <whitehost>

 <host host="192.168.140.128" user="mycat"/>

 </whitehost>

</firewall>

 

 

#重启Mycat后,192.168.140.128主机使用mycat用户访问

mysql -umycat -p123456 -h 192.168.140.128 -P 8066

#可以正常访问,如下图

##192.168.188.189主机用mycat用户访问,禁止访问

  

#在此主机换user用户访问,禁止访问

 

[2].黑名单

  可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截.

#设置白名单

#server.xml配置文件firewall标签

#配置禁止mycat用户进行删除操作

<blacklist check="true">

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

</blacklist>

#重启Mycat后,192.168.140.128主机使用mycat用户访问

mysql -umycat -p123456 -h 192.168.188.188 -P 8066

#可以正常访问,如下图

 

 

#切换TESTDB数据库后,执行删除数据语句

delete from orders where id=400200;

#运行后发现已禁止删除数据,如下图

 

  可以设置的黑名单 SQL 拦截功能列表

 

 

posted @ 2020-12-22 23:09  HOsystem  阅读(98)  评论(0编辑  收藏  举报