MyCat高可用集群(七) Mycat安全设置

MyCat高可用集群

第一章 MyCat的安装,实现数据读写分离

第二章 搭建MySQL双主双从服务器

第三章 数据库垂直拆分——分库

第四章 数据库水平拆分——分表

第五章 基于HAProxy的MyCat高可用集群

第六章 Mycat监控——Mycat-web

第七章 Mycat安全设置


文章目录

  • MyCat高可用集群
  • 前言
  • 一、环境准备
  • 二、权限设置
    • 1、user标签权限控制
    • 2、privileges标签权限控制
  • 三、SQL拦截
    • 1、白名单
    • 2、黑名单
  • 总结


前言

前面搭建了mycat的高可用集群中,并没有考虑安全问题,虽然mycat并没有mysql一样有着丰富的安全策略,只携带了一些简单的限制,但足够应对一些简单的业务要求。


一、环境准备

三台CentOS7虚拟机

名称 主机名 IP
MyCat1 centos7_1 192.168.80.70
MySql1 centos7_2 192.168.80.20
MSql2 centos7_3 192.168.80.30

二、权限设置

1、user标签权限控制

除了mycat用户以外,还有一个user普通用户。

name:应用连接中间件逻辑库的用户名
password:该用户对应的密码
TESTDB:应用当前连接的逻辑库中所对应的逻辑表,schemas中可以配置一个或多个
readOnly:应用连接中间件逻辑库所具有的权限。true为只读,false为读写都可以,默认为false
MyCat高可用集群(七) Mycat安全设置_第1张图片

#使用user用户登录,可以查询到表内数据,插入的时候就会显示readonly错误。
1、mysql -uuser -puser -P8066 -h 192.168.80.70
2、use TESTDB;
3、select * from orders;
4、INSERT INTO orders(id,order_type,customer_id,amount) VALUES(111,101,100,100100);
MyCat高可用集群(七) Mycat安全设置_第2张图片
使用mycat用户登录就不会有该错误。
MyCat高可用集群(七) Mycat安全设置_第3张图片

2、privileges标签权限控制

在user标签下,privileges标签可以对逻辑库(schema)、表(table)进行精细化的DML权限控制。

privileges标签下的check属性,如为true开启权限检查,为false不开启,默认为false。
由于Mycat 一个用户的schemas 属性可配置多个逻辑库(schema),所以privileges 的下级节点schema节点同样可配置多个,对多库多表进行细粒度的DML 权限控制。
DML权限四个数字权限分别对应:增加(insert)、更新(update)、查询(select)、删除(select)。0表示禁止、1表示允许。
MyCat高可用集群(七) Mycat安全设置_第4张图片
#将order表权限设置为1,orders_detail全设置为0。测试增删改查
#重启mycat
./mycat console
#访问Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70
#切换到TESTDB
USE TESTDB;
#测试orders表
SELECT * FROM orders;
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(112,101,100,100100);
MyCat高可用集群(七) Mycat安全设置_第5张图片
#测试orders_detail表
SELECT * FROM orders_detail;
INSERT INTO orders_detail(id,detail,order_id) VALUES(10,‘detail1’,1);
#操作失败,没有dml权限。在这里插入图片描述

三、SQL拦截

server.xml配置文件中的firewall标签是用来定义防火墙;firewall下whitehost标签用来定义IP白名单,blacklist用来定义SQL黑名单。

1、白名单

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

#修改server.xml配置文件firewall标签
#配置本机和M1主机可以通过mycat用户访问,其他用户则不能访问
MyCat高可用集群(七) Mycat安全设置_第6张图片
#重启mycat
./mycat console

#M1、M2分别访问Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70

#M1能正常访问,M2被拒绝访问
MyCat高可用集群(七) Mycat安全设置_第7张图片
在这里插入图片描述

2、黑名单

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

#property 配置项

配置项 缺省值 描述
selelctAllow true 是否允许执行SELECT 语句
deleteAllow true 是否允许执行DELETE 语句
updateAllow true 是否允许执行UPDATE 语句
insertAllow true 是否允许执行INSERT 语句
createTableAllow true 是否允许创建表
setAllow true 是否允许使用SET 语法
alterTableAllow true 是否允许执行Alter Table 语句
dropTableAllow true 是否允许修改表
commitAllow true 是否允许执行commit 操作
rollbackAllow true 是否允许执行roll back 操作

#修改server.xml配置文件firewall标签
#禁止用户进行删除操作
MyCat高可用集群(七) Mycat安全设置_第8张图片

#重启mycat
./mycat console

#M1访问Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70

#切换到TESTDB
USE TESTDB;

#查询orders表
SELECT * FROM orders;
MyCat高可用集群(七) Mycat安全设置_第9张图片

#删除id=111的数据
delete from orders where id=111;

#删除失败
在这里插入图片描述


总结

本系列Mycat文章是参照尚硅谷mycat系列视频编写的。
mycat视频链接


你可能感兴趣的:(mycat,数据库,中间件,mysql,linux,centos)