1. mycat的安全管理
1.1 权限配置
- user标签权限控制
目前mycat对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写控制权限,可以通过user标签进行配置。
标签说明:
标签属性 | 说明 |
---|---|
name | 应用链接中间件逻辑库的用户名 |
password | 该用户对应的密码 |
schemas | 应用当前连接的逻辑库中所对应的逻辑表,schemas中可以配置一个或者多个 |
readonly | 应用连接中间件逻辑库所具有的权限。true为只读,false为读写都有,默认是false |
添加配置:
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
尝试通过不同的用户名称进行登录,会发现root用户具有所有的权限,但是mycat用户只是具备了查询的权限,无法完成更新和插入的操作。
- privileges标签权限控制
在user标签下的privileges标签可以对逻辑库,表进行更加细致的DML权限控制。
privileges标签下的check属性,如果值为true则表示开启权限检查,false则表示不开启权限检查
由于mycat一个用户的schemas属性可以配置多个逻辑库,所以privileges的下级节点schema节点同样可配置多个,对多库多表进行细粒度的DML权限控制
配置权限:
DML权限 | 增加 | 更新 | 查询 | 删除 |
---|---|---|---|---|
0001 | 禁止 | 禁止 | 禁止 | 允许 |
0010 | 禁止 | 禁止 | 允许 | 禁止 |
0100 | 禁止 | 允许 | 禁止 | 禁止 |
1000 | 允许 | 禁止 | 禁止 | 禁止 |
修改server.xml文件
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
<privileges check="true">
<schema name="TESTDB" dml="1111">
<table name="orders" dml="0000"></table>
</schema>
</privileges>
</user>
当使用mycat用户进行登录的时候会发现其他的表都可以做增删改查操作,但是orders表什么操作都做不了,这就是对权限作了控制。
1.2 SQL拦截
firewall标签用来定义防火墙,firewall下whitehost标签用来定义IP白名单,blacklist用来定义SQL黑名单。
- 白名单
可以通过设置白名单,实现某主机某用户可以访问mycat,而其他主机用户禁止访问。
<firewall>
<whitehost>
<host host="192.168.109.132" user="mycat"></host>
</whitehost>
</firewall>
- 黑名单
用户还可以通过设置黑名单,实现mycat对具体sql操作的拦截,如增删改查等操作的拦截
黑名单SQL拦截功能列表:
配置项 | 默认值 | 功能 |
---|---|---|
selectAllow | true | 是否允许执行select语句 |
selectColumnAllow | true | 是否允许执行select *操作 |
selectIntoAllow | true | 是否允许select语句中包含into子句 |
deleteAllow | true | 是否允许执行delete语句 |
updateAllow | true | 是否允许执行update语句 |
insertAllow | true | 是否允许执行insert语句 |
replaceAllow | true | 是否允许执行replace语句 |
createTableAllow | true | 是否允许创建表 |
setAllow | true | 是否允许使用set语法 |
truncateAllow | true | 是否允许执行truncate语句 |
alterTableAllow | true | 是否允许执行alter table语句 |
dropTableAllow | true | 是否允许修改表 |
commitAllow | true | 是否允许执行commit操作 |
rollbackAllow | true | 是否允许执行rollback操作 |
useAllow | true | 是否允许执行use语句 |
describeAllow | true | 是否允许执行describe操作 |
showAllow | true | 是否允许执行show语句 |
2. mycat监控工具
mycat-web是mycat可视化运维管理和监控平台,弥补了mycat在监控上的空白。帮mycat分担统计任务和配置管理任务。mycat-web引入了zookeeper作为配置中心,可以管理多个节点。mycat-web主要管理和监控mycat的流量、连接、活动现成和内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分析慢SQL和高频SQL等,为SQL的优化提供了依据。
-
下载地址:http://dl.mycat.org.cn/
-
安装zookeeper
1、下载zookeeper安装包
2、安装拷贝到/usr/local目录,并解压
3、进入到zookeeper解压后的目录conf,复制配置文件并改名
cp zoo_sample.cfg zoo.cfg
4、进入到zookeeper的bin目录,运行启动命令
./zkServer.sh start
5、执行如下命令,看zookeeper是否正常启动
netstat -nlpt | grep 2181
- 安装mycat-web
1、下载mycat-web安装包
2、解压安装包到/usr/local目录
3、配置zookeeper
进入到mycat-web的/usr/local/mycat-web/mycat-web/WEB-INF/classes,修改mycat.properties文件,可以修改zookeeper的地址
4、进入mycat-web的目录运行启动命令
./start.sh &
5、mycat-web的服务端口是8082,查看服务是否启动
netstat -nlpt | grep 8082
6、通过地址访问服务
192.168.109.132:8082/mycat/
- mycat-web配置