前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL审核 | SQLE 新增部分 MySQL 审核规则!

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

作者头像
爱可生开源社区
发布2022-09-26 10:26:27
1.6K0
发布2022-09-26 10:26:27
举报
文章被收录于专栏:爱可生开源社区

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审核时,某些特定语句触发字段不存在的误判的问题 。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 新增部分 MySQL 审核规则
  • 2. MySQL 审核场景化改造兼容事后审核模式
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档