Mycat安全设置

权限配置

1. user 标签权限控制

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

在这里插入图片描述
2. privileges 标签权限控制

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

privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false。 由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。

//针对t1表禁止所有权限

 <user name="mycat" defaultAccount="true">   //针对mycat用户
                <property name="password">123456</property>
                <property name="schemas">TESTDB</property>
                <property name="defaultSchema">TESTDB</property>
                <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->

                <!-- 表级 DML 权限设置 -->

                <privileges check="true">
                        <schema name="TESTDB" dml="1111" >  //TESTDB逻辑库所有权限
                                <table name="t1" dml="0000"></table>  //t1表没有任何权限
                        </schema>
                </privileges>

        </user>

!重启mycat
//登录mycat测试

mysql -umycat -p123456 -P 8066 -h192.168.1.61

mysql> use TESTDB;

mysql> select * from t1;
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
//没有权限查看t1表

配置说明

DML权限 增加(insert) 更新(update) 查看(select) 删除
0000 禁止 禁止 禁止 禁止
0010 禁止 禁止 可以 禁止
1110 可以 可以 可以 禁止
1111 可以 可以 可以 可以

SQL拦截

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

1.白名单

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

<firewall>
           <whitehost>
              <host host="192.168.1.67" user="mycat"/>   //mycat用户只允许在1.67主机上登录
           </whitehost>

!重启mycat

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

<firewall>
           <whitehost>
              <host host="192.168.1.67" user="mycat"/>
           </whitehost>
       <blacklist check="true">
        <property name="deleteAllow">false</property> //不可以使用delete语句
       </blacklist>
        </firewall>

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

配置项 缺省值 描述
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 操作
true允许,false拒绝
posted @ 2023-04-17 20:33  乱七八糟博客备份  阅读(56)  评论(0编辑  收藏  举报