SQL 审核工具 SQLE 2.2308.0 于今天发布。以下对新版本的 Release Notes 进行详细解读。
文章主要分为以下三部分内容:
一、SQLE 项目介绍
二、新版本主要功能介绍
三、完整的 Release 信息
一、SQLE 项目介绍
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。目前支持各种数据库规则 700+。
SQLE 获取
类型 | 地址 |
---|---|
版本库 | https://github.com/actiontech/sqle |
文档 | https://actiontech.github.io/sqle-docs/ |
发布信息 | https://github.com/actiontech/sqle/releases |
数据审核插件开发文档 | https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtodev |
社区版和企业版功能对比 | https://actiontech.github.io/sqle-docs/docs/support/compare |
在线体验 – 社区版 | http://demo.sqle.actionsky.com 超级管理员:admin 密码:admin |
在线体验 – 企业版 | http://demo.sqle.actionsky.com:8889 用户:admin 密码:admin |
二、新版本主要功能介绍
# 社区版
1. 智能扫描支持 SQL 文件扫描
平台新增扫描任务,当前支持对 SQL 文件进行扫描。利用该扫描任务,用户可以在批量执行 SQL 前发现潜在的安全漏洞、提高数据库性能及数据库开发质量。以下是简单的功能试用:
1. 创建扫描任务,任务类型选择 SQL 文件。
2. 进入终端,执行 Scanner 文件,执行语句如下:
./scannerd sqlfile -H127.0.0.1 -N"SQLfile" -P"10000" -J"default" -D/root/sqle/sqle/cmd/scannerd/scanners/mybatis/testdata/ -A"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJ0ZXN0MDcyNCIsImV4cCI6MTcyMTcyODU0NywibmFtZSI6ImFkbWluIn0.CojdTvBkr-iN_26tWI-Kr6mMnJt1NIDr-Y3v7m9ySuM"
-J, --project:说明扫描任务所在项目,例如“default”;
-H, --host string:指定SQLE主机所在地址;
-P, --port string:指定SQLE所在端口;
-N, --name string:指定扫描任务名称,scannerd会将获得的SQL传至指定的任务池中审核;
-D, --dir string:指定要扫描的XML文件路径
-A, --token string:输入扫描任务凭证token;
-K, --skip-sql-file-audit:只上传sql,不审核sql
-S, --skip-error-sql-file; 跳过无法解析的sql文件
3. 获得执行结果。
4. 用户也可在扫描任务详情中获得扫描结果并查看审核建议。
2. 工单上线人支持按实例匹配
平台当前支持按实例匹配工单上线人(执行上线操作的成员),优化先前存在的一个工单里所有数据源都只能由相同的人上线的问题,在上线环节实现更精细的权限控制。若在流程模板中将上线人设置为 “匹配拥有数据源权限的成员”,工单详情中,待上线人处将显示对应实例上具有上线操作的成员。
以下是简单的功能试用:
1. 添加成员 u1、u2,为 u1 绑定 MySQL 实例上的 DBA 权限,为 u2 绑定 Oracle 实例上的 DBA 权限。
2. 修改规则模板,将上线人设置为 “匹配拥有数据源权限的成员”。
3. 创建一则工单,其中包含对 MySQL 实例及 Oracle 实例的 SQL 操作。审核通过后,查看待操作人分别为该实例上具有上线权限的成员。
4. 登录待操作人账号 u1,可以对 u1 绑定的 MySQL 实例执行上线操作,同时无权对 Oracle 数据源进行上线操作。
3. IntelliJ IDEA 插件支持同时审核多个 MyBatis 文件
先前提供的审核插件中,审核含有跨命名空间引用的 MyBatis 文件时,会报 ID 不存在的错误。本期改进了 IntelliJ IDEA 插件,现在支持一次性审核文件夹下的所有 XML 文件,只要变量的定义和引用都在同一个文件夹下,就能够成功解析。以下是该功能的简单试用:
如图,在 com 文件夹下存在两个 XML 文件。
右键 com 文件夹,选中 MyBatis 审核。
获得文件的审核结果。
# 企业版
1. Java 应用零成本接入 SQLE
本期在扫描任务中新增了对 Java 探针方式的支持,将 Java 应用零成本地接入 SQLE。开发人员和 DBA 可以通过任务详情及审核报告掌握应用内的 SQL 及对应审核结果,对 Java 进程中的 SQL 进行质量管控。下面以 SurveyKing 应用为例,进行简单的功能试用:
1. 创建应用程序 SQL 抓取扫描任务。
注:添加的数据源为应用使用的数据源。
2. 启动 Java 应用进入应用目录下,并执行以下命令(以下命令需要在本地编辑替换完参数后,一次性拷贝到环境内执行)。
SQLE_COLLECT_ENABLE=true \
SQLE_BASE_URL=http://10.186.64.175:10000 \
SQLE_TASK_NAME=probe \
SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJwcm9iZSIsImV4cCI6MTcyMzI2MTE4OSwibmFtZSI6ImFkbWluIn0.pkYBOYsQ_Z6KhaweWdE44hkkDG8Ka73AWaM9mdXthNc \
SQLE_EXCLUDE_JAVA_FILE=UserServiceImpl.java \
SQLE_LOG_FILE=/tmp/collect.log \
java -javaagent:/opt/surveyking/sql-agent-1.0-SNAPSHOT.jar \
-jar surveyking-v0.3.0-beta.4.jar \
--server.port=1991 \
--spring.datasource.url=jdbc:mysql://10.186.64.175:3306/jw \
--spring.datasource.username=root \
--spring.datasource.password=mysqlpass \
& >>/opt/surveyking/std.log
注:Java Aagent 包为 SQLE 定制。
3. 进入平台,可以看到目前应用已经执行的 SQL。
4. 查看审核报告,用户可以通过审核任务的审核报告了解到应用的 SQL 是否符合预设审核规则,以便及时作出调整。
2. 新增对企业版插件中止上线的支持
本期在 OceanBase For MySQL、TDSQL、TiDB、Oracle 四类数据源上,新增了中止上线功能。当这类数据源上的 SQL 出现上线阻塞时,用户能够在工单界面一键中止上线操作,减少人工干预的成本。
3. 支持 OceanBase For Oracle 数据源
本期新增 OceanBase For Oracle 数据源插件,用户可以对 OceanBase For Oracle 类型的数据源进行监管,并根据已提供的分布式规则进行 SQL 审核。
4. 新增 TDSQL 分布式审核规则
本期新增 TDSQL 分布式审核规则,以满足分布式应用场景。规则如下:
-
禁止对分片表使用 DELETE/UPDATE…LIMIT 语句
-
禁止分片表和非分片表 JOIN
-
禁止对分片键进行 UPDATE 操作
-
禁止在查询分片表时引用和操作变量
-
分片表 INSERT 操作,插入字段必须包含分片键
-
分片表 SELECT、DELETE、UPDATE 操作,条件字段必须包含分片键
-
分片表 SELECT、INSERT、DELETE、UPDATE 操作,禁止对分片键使用函数
-
分片表做关联,禁止出现跨库 JOIN
-
分片表做关联,关联字段必须是 SHARDKEY,非 SHARDKEY 关联字段不允许做关联查询
三、完整的 Release 信息
# 社区版
提示:
-
[#1754] 老版本升级到 2.2308.0 需要对 SQLE 的元数据表进行结构变更
新特性:
-
[#1690] 智能扫描支持 SQL 文件扫描
-
[#1746] IntelliJ IDEA 插件支持同时审核多个 MyBatis 文件
优化:
-
[#1605] 工单上线人细化到按数据源匹配
-
[#1729] scannerd 扫描 MyBatis、SQL 文件时,建议输出所有审核结果
-
[#1731] 工单名称等资源放宽长度限制
Bug 修复:
-
[#1725] 修复导出含有被删除的数据源的工单,程序 panic 的问题
# 企业版
新特性:
-
[#1718] 多种类型的数据源插件支持中止上线功能
-
[#884] 支持 JAVA 探针采集 JAVA 应用 SQL
-
[#868] 增加 TDSQL 分布式审核规则
优化:
-
[#875] 部分插件升级到 V2 版本
Bug 修复:
-
[#888] 修复用户通过 OAuth 2.0 登录后,不能跳转到主页的问题
-
[#883] 修复自定义接口的 Swagger 接口定义错误问题
-
[#879] 修复 DB2 库表元数据扫描,建表语句审核有误的问题
-
[#875] 修复 DB2 库表元数据扫描失败的问题