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

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

作者头像
爱可生开源社区
发布于 2022-09-26 02:26:27
发布于 2022-09-26 02:26:27
1.8K0
举报

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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
重新复习Android View的绘制流程
PhoneWindow是Android系统中最基本的窗口系统,每个Activity会创建一个。同时,PhoneWindow也是Activity和View系统交互的接口。DecorView本质上是一个FrameLayout,是Activity中所有View的祖先。
老马的编程之旅
2022/06/22
4530
重新复习Android View的绘制流程
Android经典面试题之View的三大流程
View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。
AntDream
2024/07/10
1290
Android经典面试题之View的三大流程
Android组件View绘制流程原理分析
如上图,Activity的window组成,Activity内部有个Window成员,它的实例为PhoneWindow,PhoneWindow有个内部类是DecorView,这个DecorView就是存放布局文件的,里面有TitleActionBar和我们setContentView传入进去的layout布局文件
Anymarvel
2018/10/22
1.3K0
Android组件View绘制流程原理分析
View绘制流程
1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 dr
xiangzhihong
2018/02/05
8620
View绘制流程
View的工作原理
View的绘制流程是从ViewRoot的PerformTraversals方法开始的。它经过measure,layout,draw三个过程将view绘制出来。mesure用来测量view的宽高,layout用来确定位置,draw绘制。流程图如下
提莫队长
2019/02/21
5570
Android中View是如何绘制的
View的绘制过程从ViewRootImpl.performTraversals()方法开始。
对话、
2022/02/22
2.3K0
带你彻底搞懂-View的工作原理!
1.ViewRoot对应ViewRootImpl类,是连接WindowManager和DecorView的纽带。View的三大流程是通过ViewRoot完成的。 在ActivityThread中,当Activity对象被创建完毕时,会将DecorView添加到Window中,同时会创建ViewRootImpl,且ViewRootImpl和DecorView会建立关联。如下代码,WindowManagerGlobal的addView()方法:
胡飞洋
2020/07/23
1.2K0
带你彻底搞懂-View的工作原理!
Android视图绘制流程完全解析,带你一步步深入了解View(二)
在上一篇文章中,我带着大家一起剖析了一下LayoutInflater的工作原理,可以算是对View进行深入了解的第一步吧。那么本篇文章中,我们将继续对View进行深入探究,看一看它的绘制流程到底是什么
用户1158055
2018/01/05
1.5K0
Android视图绘制流程完全解析,带你一步步深入了解View(二)
手把手教你读懂源码,View的绘制流程详细剖析
上一篇文章我们分析了View的加载流程,今天我们继续来深入学习View的绘制流程,接着上次的View绘制开始,同样使用的是Android 7.1源码。 1、回顾addView方法 上篇文章从a
分享达人秀
2018/02/02
1.5K0
手把手教你读懂源码,View的绘制流程详细剖析
深入解析Android中View的工作原理
Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View实现的,当然也包括我们在平时开发中所写的各种炫酷的自定义控件了,所以学习View的工作原理对于我们来说显得格外重要,本篇博客,我们将一起深入学习Android中View的工作原理。
老马的编程之旅
2022/06/22
1K0
深入解析Android中View的工作原理
View的工作原理
在 WindowManagerGlobal 的 addView(View view, ViewGroup.LayoutParams params, Display display, Window parentWindow) 方法中,创建了 ViewRootImpl 对象,将 ViewRootImpl 和 DecorView 相关联:
俞其荣
2022/07/28
1.2K0
View的工作原理
View的工作原理
ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联,这个过程可参看源码:
见得乐
2022/07/20
4460
View的工作原理
这可能是2020大小厂问的最经典的Android面试题了——事件分发机制、View渲染过程
Activity和View只有两个方法控制事件传递:dispatchTouchEvent(),onTouchEvent ();
Android技术干货分享
2021/01/07
1.1K0
这可能是2020大小厂问的最经典的Android面试题了——事件分发机制、View渲染过程
Android高级进阶之路【一】Android中View绘制流程浅析
一个View,从无到有会走三个流程,也就是老生常谈的measure,layout,draw三流程;
做个快乐的码农
2021/11/17
1.3K0
Android高级进阶之路【一】Android中View绘制流程浅析
android之View绘制
Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类,由此就得到了视图部分的基本结构--树形结构 View定义了绘图的基本
xiangzhihong
2018/01/30
7650
android之View绘制
View的绘制流程源码分析
概述 View的绘制流程主要是指测量、布局以及绘制显示,在View中,measure是测量View的宽高,layout是控制View四个顶点的位置,而draw就是将布局直接绘制出来。 Measure流程 measure的流程氛围View的measure流程以及ViewGroup的measure的流程。之所以把View和ViewGroup分开就是因为ViewGroup不仅仅要测量自身的宽高,而且还需要通过递归将子view的宽高测量出来。 View的measure过程 View的measure说简单也简单,说复
我就是马云飞
2018/02/05
6440
Android View底层到底是怎么绘制的
Android绘制链图: 网上很多讲Android  view的绘制流程往往只讲到了Measure - Layout - Draw。 但是,这只是一个大体的流程,而我们需要探讨的是Android在
xiangzhihong
2018/02/05
1.1K0
Android View底层到底是怎么绘制的
android视图学习---从源码角度来理解onMeasure过程
view的绘制:onMeasure onLayout onDraw 执行流程  【这里其实就是RootViewImpl 里面setView之后的一个流程】
wust小吴
2019/07/08
6250
高级 UI 成长之路 (三) 理解 View 工作原理并带你入自定义 View 门
该篇分为上下结构,上部分主要讲解 View 的工作原理,下部分主要以案例的形式讲解自定义 View。
做个快乐的码农
2021/11/16
8670
高级 UI 成长之路 (三) 理解 View 工作原理并带你入自定义 View 门
【Android 应用开发】UI绘制流程 ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 )
ApplicationThread 内部类 : 该类与上面的代码没有直接调用关系, ActivityThread 与 ApplicationThread 关联后, 系统就可以通过调用 一系列的 schedule 方法控制 Activity的各种状态了;
韩曙亮
2023/03/27
1.2K0
【Android 应用开发】UI绘制流程  ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 )
相关推荐
重新复习Android View的绘制流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档