Mycat之安全设置与监控工具

Mycat安全设置

权限设置

1、 user标签权限控制

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

#server.xml配置文件user部分
<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> 

在这里插入图片描述

配置说明

标签属性说明
name应用连接中间件逻辑库的用户名
password该用户对应的密码
TESTDB应用当前连接的逻辑库中所对应的逻辑表。schemas中可以配置一个或多个
readOnly应用连接中间件逻辑库所具有的权限。true为只读,false为读写都有,默认为false

测试案例

#测试案例一
#	使用user用户,权限为只读(readOnly:true)
#	验证是否可以查询出数据,验证是否可以写入数据

#1、用user用户登录,运行命令如下: mysql -uuser -puser -h 192.168.140.128 -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用户,权限为可读写(readOnly:false)
#	验证是否可以查询出数据,验证是否可以写入数据

#1、用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -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标签权限控制

在user标签下的privileges标签可以对逻辑库(schema)、表(table)进行精细化的DML 权限控制。
privileges 标签下的check属性,如为true开启权限检查,为false不开启,默认为 false。

由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。

#server.xml配置文件privileges部分#配置orders表没有增删改查权限
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!--<table name="tb02" dml="1111"></table>-->
</schema>
</privileges>
</user>

在这里插入图片描述

配置说明

DML权限增加(insert)更新(update)查询(select)删除(delete)
0000禁止禁止禁止禁止
0010禁止禁止可以禁止
1110可以可以可以禁止
1111可以可以可以可以
#测试案例一
#使用mycat用户,privileges配置orders表权限为禁止增删改查(dml="0000")
#验证是否可以查询出数据,验证是否可以写入数据
#1、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066
#2、切换到TESTDB数据库,查询orders表数据,如下: use TESTDB
select * from orders;
#3、禁止该用户查询数据,如下图

在这里插入图片描述

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
#5、可看到运行结果,禁止该用户插入数据,如下图:

在这里插入图片描述

#测试案例二
#使用mycat用户,privileges配置orders表权限为可以增删改查(dml="1111")
#验证是否可以查询出数据,验证是否可以写入数据
#1、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066
#2、切换到TESTDB数据库,查询orders表数据,如下: use TESTDB
select * from orders;
#3、可以查询到数据,如下图

在这里插入图片描述

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
#5、可看到运行结果,插入成功,如下图:

在这里插入图片描述

#6、执行插入数据sql,如下:
delete from orders where id in (7,8);
#7、可看到运行结果,插入成功,如下图:

在这里插入图片描述

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
#可以正常访问,如下图

在这里插入图片描述

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

在这里插入图片描述

在192.168.140.127主机用mycat用户访问,禁止访问

在这里插入图片描述

2、黑名单

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

#设置黑名单
#server.xml配置文件firewall标签
#配置禁止mycat用户进行删除操作
<firewall>
<whitehost>
<host host="192.168.140.128" user="mycat"/>
</whitehost>
<blacklist check="true">
<property name="deleteAllow">false</property>
</blacklist>
</firewall> #如下图

在这里插入图片描述

#重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
#可以正常访问,如下图

在这里插入图片描述

#切换TESTDB数据库后,执行删除数据语句
delete from orders where id=7;
#运行后发现已禁止删除数据,如下图

在这里插入图片描述

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

配置项缺省值描述
selelctAllowtrue是否允许执行 SELECT 语句
deleteAllowtrue是否允许执行 DELETE 语句
updateAllowtrue是否允许执行 UPDATE 语句
insertAllowtrue是否允许执行 INSERT 语句
createTableAllowtrue是否允许创建表
setAllowtrue是否允许使用 SET 语法
alterTableAllowtrue是否允许执行 Alter Table 语句
dropTableAllowtrue是否允许修改表
commitAllowtrue是否允许执行 commit 操作
rollbackAllowtrue是否允许执行 roll back 操作

七、Mycat监控工具

Mycat-web简介

  • Mycat-web是Mycat可视化运维的管理和监控平台,弥补了Mycat在监控上的空白。
  • 帮Mycat分担统计任务和配置管理任务。
  • Mycat-web引入了 ZooKeeper作为配置中心,可以管理多个节点。
  • Mycat-web主要管理和监控Mycat的流量、连接、活动线程和内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分析慢SQL和高频SQL等。为优化SQL提供依据。

在这里插入图片描述

Mycat-web配置使用

1、ZooKeeper安装

ZooKeeper安装配置详见,CentOS下安装ZooKeeper

2、Mycat-web安装

  • 下载安装包http://www.mycat.org.cn/

  • 安装包拷贝到Linux系统/opt目录下,并解压

    tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz
    
  • 拷贝mycat-web文件夹到/usr/local目录下

    cp -r mycat-web /
    
  • 进入mycat-web的目录下运行启动命令

    cd /usr/local/mycat-web/
    ./start.sh &
    

在这里插入图片描述

  • Mycat-web服务端口为8082,查看服务已经启动

    netstat -ant |grep 8082
    

在这里插入图片描述

  • 通过地址访问服务

在这里插入图片描述

3、Mycat-web配置

(1)、先在注册中心配置ZooKeeper地址,配置后刷新页面

(2)、新增Mycat监控实例

在这里插入图片描述

在这里插入图片描述

Mycat性能监控指标

在 Mycat-web上可以进行Mycat性能监控,例如:内存分享、流量分析、连接分析、活动线程分析等等。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值