在mycat的 server.xml 配置文件中有一个标签 firewall 是用来设置防火墙。
whitehost 用来设置白名单;
blacklist 用来设置SQL操作的黑名单。
1 白名单
1.1 设置
通过白名单设置,可以实现来自指定IP的指定用户对mycat的访问。而未在设置中出现的用户或IP,则禁止访问。
修改 server.xml 配置文件,进行如下修改
<host host="192.168.137.4" user="root"/>
表示仅允许root用户从192.168.137.4访问mycat。
保存修改后重启mycat服务。
1.2 验证
- root用户从192.168.137.3访问mycat
报错如下,提示访问被拒绝。
- root用户从192.168.137.4访问mycat
可以正常访问到mycat服务。
白名单中的 host 设置,可以支持通配符,因些如果服务器较多时,可以简化设置。
2 黑名单
2.1 设置
通过黑名单的设置,可以实现对具体的SQL操作的拦截,如对数据库中数据进行的CRUD操作。
修改server.xml文件,添加黑名单:
- check 设置true,表示进行SQL检查
- property 中设置具体的限制名称,名称与操作文末,设置为false时表示限制,true为不限制。
不允许执行 delete 操作,保存后重新启动mycat服务。
2.2 验证
在 192.168.137.4 服务器登录Mycat后,执行删除操作。
删除操作被拒绝。
2.3 禁止使用通配符查询列
修改配置文件
<blacklist check="true">
<property name="selectAllColumnAllow">false</property>
</blacklist>
重启mycat服务后,进入并查询,select * from 语句被禁止使用。
2.4 黑名单 SQL 拦截功能列表
| 配置项 | 默认值 | 功能 |
|---|---|---|
| selectAllow | true | 是否允许执行select语句 |
| selectAllColumnAllow | true | 是否允许执行select * from 操作 |
| selectIntoAllow | true | 是否允许select语句中包含into子句 |
| deleteAllow | true | 是否允许执行delete语句 |
| updateAllow | true | 是否允许执行update语句 |
| insertAllow | true | 是否允许执行insert语句 |
| replaceAllow | true | 是否允许执行replace语句 |
| createTableAllow | true | 是否允许创建表 |
| setAllow | true | 是否允许使用set语法 |
| truncateAllow | true | 是否允许执行truncate语句 |
| alterTableAllow | true | 是否允许执行alter table语句 |
| dropTableAllow | true | 是否允许修改表 |
| commitAllow | true | 是否允许执行commit操作 |
| rollbackAllow | true | 是否允许执行rollback操作 |
| useAllow | true | 是否允许执行use语句 |
| describeAllow | true | 是否允许执行describe操作 |
| showAllow | true | 是否允许执行show语句 |