一 : 权限配置
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 |
结果: mycat 用户 能读能写
user 用户 只能读不能写
2、 privileges 标签权限控制
在 user
标签下的 privileges 标签可以对逻辑库(schema)
、表(table)
进行精细化的 DML 权限控
制。
privileges 标签下的 check
属性,如为 true 开启权限检查
,为 false 不开启,默认
为 false。
由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema)
,所以 privileges 的下级
节点 schema 节点同样可配置
多个,对多库多表
进行细粒度的 DML
权限控制。
- 1、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 |
示例:
DML 权限 | 增加(insert) | 更新(update) | 查询(select) | 删除(select) |
---|---|---|---|---|
0000 | X | X | X | X |
0010 | X | X | √ | X |
1110 | √ | √ | √ | X |
1111 | √ | √ | √ | √ |
- 2、测试
二 : SQL 拦截
firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单,blacklist 用来定义SQL 黑名单。
1、 白名单
可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用禁止访问
。
i、 设置白名单
server.xml配置文件firewall标签 ,配置只有66.88.88.169 主机可以通过mycat用户访问
<firewall>
<whitehost>
<host host="66.88.88.169 " user="mycat"/>
</whitehost>
</firewall>
ii 、重启mycat 测试
2、 黑名单
可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查
等操作的拦截。
i、设置黑名单
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>
配置项 | 缺省值 | 描述 |
---|---|---|
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 操作 |