SQL 审核工具 SQLE 2.2306.0 于今天发布。以下对新版本的 Release Notes 进行详细解读。文章主要分为以下三部分内容: 一、SQLE 项目介绍 二、新版本主要功能介绍 三、完整的 Release 信息

一、SQLE 项目介绍

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。 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
社区版在线体验 http://demo.sqle.actionsky.com 超级管理员:admin    密码:admin
企业版在线体验 http://demo.sqle.actionsky.com:8889 用户:admin    密码:admin

二、新版本主要功能介绍

【社区版】
1. 新增 3 条 MySQL 规则
根据业务需求,本期新增 3 条MySQL规则,分别为: 1. 建表时,自增字段只能设置一个。 2. 不建议对同一张表连接多次。 3. 为至少一个索引添加非空约束。
2. 新增百度云 RDS MySQL 慢日志智能扫描
本期新增百度云 RDS MySQL 慢日志智能扫描任务。配置后,SQLE 可以对百度云RDS 实例上的慢 SQL 进行监管。通过 SQLE 平台给出的审核结果,用户可以有针对性地优化数据库性能。以下是简单的功能试用: 1. 前置操作:用户创建的百度云 RDS 实例需为双机高可用版本,并对实例开通慢日志。 2. 在扫描任务列表页面,用户点击创建扫描任务,选择 MySQL 数据库类型,选择任务类型为百度云 RDS MySQL 慢日志,填写相关信息后,点击提交,完成扫描任务创建。
  • 实例 ID:百度云 RDS 实例的 ID。
  • Access Key为账号安全认证中的 Access Key,用于登录百度云 RDS,需要与 Secret Key 一同使用。
  • Access Secret Key账号安全认证中 Access Key 对应的 Secret Key。
  • 启动任务时拉取慢日志时间范围:扫描任务读取慢日志的时间范围,单位为小时,最大范围为 7 天。
  • 审核过去时间段内抓取的 SQL 审核该时间段内抓取到的慢 SQL,单位分钟。
  • RDS Open API 地址RDS 的地址前缀,用以调用 RDS 服务,需根据实例所在区域进行填写。如当前实例在华东-上海范围,则应填写 rds.fsh.baidubce.com
3. 进入扫描任务详情,可查看扫描任务抓取到的慢 SQL。 4. 点击立即审核,可查看对慢 SQL 的审核结果。
3. 在线输入 SQL 时,支持格式化 SQL
创建工单场景下,在输入 SQL 时,通常会出现一长条的 SQL 语句,难以阅读和理解。为此,本期新增了对在线输入 SQL 进行格式化的功能,以提高 SQL 的可读性。以下是简单的功能体验: 1. 进入创建工单页面,并输入一条 SQL。 2. 点击 SQL 美化,平台将对输入的 SQL 进行格式化。
【企业版】
1. 支持对 TDSQL InnoDB 模式数据源的工单审核及上线
用户现在可以将 TDSQL InnoDB 模式数据源纳入平台的 SQL 审核管理中 目前,平台已经支持对该数据源进行工单审核,并支持 122 条规则审核。以下是简要的使用说明: 1. 纳管 TDSQL InnoDB 模式数据源之前,用户需在 SQLE 环境中配置最新的 TDSQL 插件,插件配置方法可参考数据库审核插件使用(https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse)。  2. 用户可以在 项目->数据源管理 页面添加 TDSQL 数据源。在新增数据源时,需要选择数据库类型为 TDSQL For InnoDB,并填写相关信息,然后点击提交即可完成添加。 添加数据源 3. 用户可以进入工单列表页面,点击 “创建工单” 按钮,选择添加 TDSQL for InnoDB 数据源,输入 SQL 并提交审核。最后,点击 “创建” 按钮即可完成对 TDSQL 数据源的工单创建。 创建工单
2. 支持对 Mycat 类型的数据源的工单审核及上线
用户现在可以将 Mycat 类型数据源纳入平台的 SQL 审核管理中。 目前,平台已经支持对该数据源进行工单审核,并支持 129 条审核规则。以下是简要的使用说明:  1. 纳管 Mycat 数据源之前,用户需在 SQLE 环境中配置最新的 Mycat 插件,插件配置方法可参考数据库审核插件使用(https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse)。  2. 用户可以在 项目->数据源管理 页面添加 Mycat 数据源。在新增数据源时,需要选择数据库类型为 Mycat,并填写相关信息,然后点击提交即可完成添加。 添加数据源 3. 用户可以进入工单列表页面,点击 “创建工单” 按钮,选择添加的 Mycat 数据源,输入 SQL 并提交审核。最后,点击 “创建” 按钮即可完成对 Mycat 数据源的工单创建。 创建工单
3. 支持自定义操作记录过期时间
SQLE 支持记录、展示和导出用户的操作记录,并且定期清理历史操作记录,默认的历史记录过期时间为 90 天。 为了满足用户的自定义需求,SQLE 新增了配置入口,用户现在可以根据实际需求设置操作记录的过期时间。 如果需要回收过期 30 天以上的历史操作记录,可以按照以下步骤进行操作: 1. 平台管理员进入系统设置,查看全局配置,默认情况下,操作记录的过期时间为 2160 小时(90 天)。 2. 点击修改,将操作记录过期时间修改为 720 小时(30 天)。 3. 点击提交,保存对操作记录过期时间的配置后,过期 30 天的历史操作记录将被回收。 
4. 支持更多 DB2 规则
本期完善了对 DB2 规则的支持,目前已支持从 DDL 规范、DML 规范、DQL 规范、使用建议、命名规范及索引规范多个维度对 DB2 数据源上的 SQL 进行审核。
5. DB2 审核支持生成回滚语句
新增 DB2 回滚语句功能:当用户在 DB2 数据源上进行 SQL 审核时,可查看执行语句对应的回滚语句。
6. DB2 审核支持 SQL 上下文
新增 DB2 的 SQL 上下文审核功能。 用户在 DB2 数据源上进行 SQL 审核时,若同时输入多条 SQL,平台将结合 SQL 上下文,给出相应的审核意见。 例如,如果用户在工单中输入了两条 SQL:创建一张新表 T11,并向其中插入一个新字段。在审核第二句 SQL 时,平台将模拟执行建表语句,并根据上下文给出相应的审核意见。因此,即使实际数据库中不存在表 T11,第二条 SQL 的审核结果也不会触发表不存在的告警。
7. DB2 审核支持 SQL 分析
新增 DB2 数据源上的 SQL 分析功能。 现在用户可以在 SQL 审核时查看该条 SQL 语句的解析结果,包括执行计划、性能统计、表结构信息等。目前该功能仅支持对 DML 语句进行 SQL 分析。
三、完整的 Release 信息
【社区版】

新特性

  • [#1589] 智能扫描任务支持百度云 RDS MySQL 慢日志
  • [#1584] 新增 3 条 MySQL 审核规则
  • [#1583] 支持 SQL 美化功能

优化

  • [#1549] 界面优化
  • [#1597] 优化 scannerd 采集慢日志文件后上传 SQL 的流程
  • [#1592] 优化社区版页面上对于企业版功能的提示信息
  • [#1580] 优化规则加载流程
  • [#1563] 系统设置部分功能“开启”/“关闭”交互流程优化
  • [#1536] 界面优化,将成员设为项目管理员后,无需设置数据源及操作权限
  • [#1535] 删除规则模板时增加校验条件,限制被使用的规则模版可以被删除
  • [#1365] SMTP 配置新增配置项可关闭 SSL 安全认证

Bug 修复

  • [#1614] 解决更新扫描任务时,无法移除数据源和数据库的问题
  • [#1618] 解决当工单为带上线状态时,无法中止上线的问题
  • [#1599] 修复 MySQL update 生成回滚语句有误的问题
  • [#1588] 修复智能扫描任务审核时报错”Error 1046: Data too long”的问题
  • [#1482] 修复慢日志扫描任务 SQL 详情出现空白 SQL,阻碍扫描任务执行的问题
  • [#1576] 修复审核规则”子查询不支持 LIMIT“可能出现 panic 的问题
  • [#1553] 修复 MySQL 审核规则“表中包含有太多的列”,在扫描任务中无效的问题;
  • [#1487] 修复重复安装 SQLE,钉钉无法收到审批的问题
  • [#1556] 修复 MySQL 规则”对条件字段使用负向查询”触发不成功的问题
  • [#1554] 规则“复合索引的列数量不建议超过阈值” 触发存在不成功的问题
  • [#1545] 修复 AuditPlanSQLV2 model 的 GetFingerprintMD5() 方法极小概率出现死循环的问题
  • [#1518] 智能扫描任务中,修复【SQL分析】操作返回的 “database not selected” 错误
  • [#1396] 即时通讯工具的配置加密保存
【企业版】

新特性

  • 支持对 Mycat 进行工单审核
  • 支持对 TDSQL MySQL 进行工单审核
  • 支持操作记录的过期时间配置
  • 支持更多 DB2 规则
  • DB2 审核支持 SQL上下文
  • DB2 审核支持生成回滚语句
  • DB2 审核支持 SQL 分析
  • DB2 审核支持基础对象验证

优化

  • MySQL 智能扫描慢日志表采集优化

Bug 修复

  • 修复添加白名单时在弹窗中无法输入 SQL 语句的问题
  • 修复 OB for MySQL TopSQL 存在空值导致智能扫描审核失败报错 “the node is empty after parse” 的问题
  • 修复智能扫描 MySQL 慢日志审核中 scanner 扫描慢日志文件时,当 SQL 存在换行则解析不完整的问题