暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL审核神器 | SQLE 新增部分 MySQL 审核规则!

882


1.2208.0-pre3

SQLE Release Notes

SQL审核工具 SQLE 1.2208.0-pre3 于今天发布。以下对新版本的 Release Notes 进行详细解读。
注:本次升级为预览版本,仅可用新功能试用,不保证平滑升级
文章主要分为以下三部分内容:
一、SQLE 项目介绍
二、新版本主要功能介绍

三、完整的 release 信息

一、SQLE 项目介绍

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。
SQLE 获取
类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs-cn/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html
社区版在线体验http://demo.sqle.actionsky.com
超级管理员:admin,密码:admin。
企业版在线体验http://demo.sqle.actionsky.com:8889
用户:admin,密码:admin。


二、新版本主要功能介绍

1. 新增部分 MySQL 审核规则

(1) 禁止使用TIMESTAMP字段
背景:TIMESTAMP 有2038年限制 并且时区转换。
(2)添加字段不带AFTER, BEFOR
背景:带AFTER 的DDL 会COPY 整表。

(3)IN的值必须少于 N 个

背景:DECIMAL性能不高。
(4)ELECT 不能有ORDER BY
背景:ORDER BY 对MYSQL性能影响大,不太好优化,可以把排序前置到后端,前端,客户端。
(5)建表必须含字段 CREATE_TIME且默认值为CURRENT_TIMESTAMP 和 建表必须含字段 UPDATE_TIME,且默认值为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
背景:规范表的记录创建更新的使用,避免后期对数据生命周期管理不便

2. MySQL 审核场景化改造兼容事后审核模式

目前,SQLE的SQL审核在设计之初是为了满足SQL上线的审核,随着产品发展,我们支持了多场景下的事前事后审核。目前存在2个问题:

(1).无法在不同场景下使用不同的审核规则。数据源在SQLE流程内通过绑定规则模版进行审核,数据源目前只支持绑定一个模版,在任何场景下(上线,智能扫描)都使用这一个模版进行审核,此时会导致一个规则模版无法满足所有场景的需要,部分规则在设计之初只要是限制SQL上线的,在部分智能扫描的场景里(慢日志扫描,库表审核等)都是已经上线后的SQL,不应该进行SQL上线的限制。例如建表必须添加if not exists,防止上线失败。参考:https://github.com/actiontech/sqle/issues/558;还有部分规则对完整的SQL审核有效,但是对脱敏的sql 类似“sql指纹”无效,例如:mybatis 的扫描,tidb审计日志的扫描对应的sql都脱敏了,因此无法进行”预检查“的规则和一些依赖explain的规则 ,参考:https://github.com/actiontech/sqle/issues/466。因此,在智能扫描的任务中,我们支持用户配置规则模版来达到同一个数据源在不同的场景下使用不同的规则力度。

(2).目前的SQL 审核对不同场景审核的兼容性不友好。SQLE的SQL审核在设计之初是为了满足SQL上线的审核,通过上下文关联和基础对象验证满足上线SQL的正确性校验,这些在事后审核的场景下过于严格且审核的SQL是已执行过的(慢日志的SQL),导致部分SQL给出了不合理的建议,例如某扫描任务中扫描到 create table的SQL,此时如果对create table进行连库审核,必然触发表已存在的审核建议。因此,SQLE提供规则配置的方式实现区分不同审核场景,可以开启“停用上线审核模式”来给规则模版关闭上线审核模式。开启此规则后, SQLE会开启事后审核模式, 不再进行上线的校验,如已执行过的新增列的语句进行审核时会检测出列已存在, 在停用上线审核模式后此项检查将会被忽略。

产品体验
创建智能扫描任务场景下的规则模版,模版的规则可按需添加(也可从现有规则模版 clone),并且启用“停用上线审核模式”规则,如下图所示:

创建或者修改扫描任务时,通过自定义审核规则模版来选择上述创建的适配事后审核的规则模版即可:

三、完整的release信息

Release Notes

特性
  • [#755] 智能扫描支持指定特定的规则模版;

  • [#716] MySQL 审核场景化改造兼容事后审核模式;

  • [#734] 新增部分MySQL审核规则;

    • 禁止使用TIMESTAMP字段

    • 添加字段不带AFTER, BEFOR

    • IN的值必须少于 N 个

    • ELECT 不能有ORDER BY

    • 建表 必须含字段 CREATE_TIME且默认值为CURRENT_TIMESTAMP

    • 建表 必须含字段 UPDATE_TIME, 且默认值为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

优化

  • [#761 ][#757][#752] 报表统计功能细节优化【企业版】;

缺陷修复

  • [#708] 修复MySQL审核时,某些特定语句触发字段不存在的误判的问题 。

往期版本:

SQL审核 | SQLE 新增报表统计页面!

SQLE OceanBase for MySQL 新增了部分审核规则

SQLE 1.2207.0 来啦!

SQLE 支持 IDE 审核,开发人员可即时自助审核 SQL 了SQLE 可以进行问题 SQL下钻分析了

推荐阅读:

这里有 MySQL/Oracle 最常用的 SQL 开发规则

如何快速使用 SQLE 审核各种类型的数据库

SQLE 兼容 MySQL 8.0 测评

SQLE 如何开发一条自定义的规则

如何使用 SQLE 进行开发阶段 SQL 审核

================================

转文至此。

以下是个人微信公众号,欢迎关注:

文章转载自戏说数据那点事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论