Mycat 安全设置

一、user 标签权限控制

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

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


 123456
 TESTDB


 user
 TESTDB
 true

配置说明:

Mycat 安全设置_第1张图片

 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)、可以查询到数据,如下图

        Mycat 安全设置_第2张图片

 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)、可以查询到数据,如下图

                Mycat 安全设置_第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表没有增删改查权限


     123456
     TESTDB
     
    
        
            

配置说明:

Mycat 安全设置_第4张图片

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)、可以查询到数据,如下图

Mycat 安全设置_第5张图片 

 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用户访问


 
 
 

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

                mysql -umycat -p123456 -h 192.168.140.128 -P 8066

                可以正常访问,如下图:Mycat 安全设置_第6张图片

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

在这里插入图片描述

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

Mycat 安全设置_第7张图片

 3、黑名单

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

        1)、设置黑名单,server.xml配置文件firewall标签,配置禁止mycat用户进行删除操作


     
         
     
     
         false
     

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

                mysql -umycat -p123456 -h 192.168.140.128 -P 8066

                可以正常访问,如下图:Mycat 安全设置_第8张图片

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

                delete from orders where id=7;

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

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

Mycat 安全设置_第9张图片

 

你可能感兴趣的:(mycat,mycat)