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拒绝 | 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号