Mycat 安全设置

一、user 标签权限控制

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

1、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>

配置说明:

在这里插入图片描述

 2、测试案例

2.1、测试案例一

    需求:使用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)、可看到运行结果,插入失败,只有只读权限,如下图:在这里插入图片描述

 2.2、测试案例二

        需求:使用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)、可看到运行结果,插入成功,如下图:在这里插入图片描述


二、privileges 标签权限控制

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

        privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false。

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

1、server.xml配置文件privileges部分

1.1、配置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>

配置说明:

在这里插入图片描述

2、测试案例一

        使用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)、可看到运行结果,禁止该用户插入数据,如下图:在这里插入图片描述

 3、测试案例二

        使用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);

在这里插入图片描述 


三、SQL 拦截

1、简介

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

 2、 白名单

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

        1)、设置白名单,修改server.xml配置文件firewall标签,配置只有192.168.140.128
                主机可以通过mycat用户访问

<firewall>
 <whitehost>
 <host host="192.168.140.128" user="mycat"/>
 </whitehost>
</firewall>

        2)、重启Mycat后,192.168.140.128主机使用mycat用户访问

                mysql -umycat -p123456 -h 192.168.140.128 -P 8066

                可以正常访问,如下图:在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

 3、黑名单

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

        1)、设置黑名单,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>

        2)、重启Mycat后,192.168.140.128主机使用mycat用户访问

                mysql -umycat -p123456 -h 192.168.140.128 -P 8066

                可以正常访问,如下图:在这里插入图片描述

         3)切换TESTDB数据库后,执行删除数据语句

                delete from orders where id=7;

                运行后发现已禁止删除数据,如下图:在这里插入图片描述

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

在这里插入图片描述

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值