【MySQL数据库】详解数据库审核工具SQLE的部署及接口调用

SQLE部署及使用

1. 部署SQLE

SQLE相信大家都不陌生吧,它是一款开源,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL审核工具。我们可以基于此工具进行数据库SQL审核,提升SQL脚本质量,大大提高我们的开发效率。

其主要功能和优势包括:

  • 平台管理:支持用户和角色管理、配置上线数据库、基于角色的资源隔离、配置审核规则模板,以及对不同的数据库应用不同的规则模板。
  • SQL审核:支持工单审批流程、工单隔离、邮件推送审批事件、SQL上线、生成回滚语句、审核MyBatis
  • XML文件,以及审核建议按SQL归类去重展示等功能。此外,SQLE还支持审核报告下载,并提供静态审核(即脱离上线数据库审核)和定时审核功能。
  • SQL审核计划:支持通过标准接口收集来自业务的SQL统计信息,提供MyBatis文件扫描上传程序(scanner),可集成CI/CD。

SQLE3.0在SQL审核方面具有高效性和准确性的双重优势。它能够自动化地对SQL语句进行审核,从而减少了人工审核的工作量和错误率。此外,SQLE 3.0还具备强大的规则引擎,可以通过预设规则对SQL语句进行灵活的审核和检测,从而保证了SQL语句的规范性和安全性。

与其他数据库审核工具相比,SQLE具有其独特的优势。例如,本地数据库平台虽然简单,但分析范围有限,且需要人为管理。而DAM数据库活动监控平台和SIEM、日志管理工具虽然功能更多,但可能会消耗本地数据库性能。SQLE则通过提供全面的审核功能和高效的审核效率,为用户提供了更好的选择。

下载地址:https://github.com/actiontech/sqle/releases

安装

mkdir  /opt/sqle

创建SQLE元数据存储库(mysql中): create database sqle

修改配置:修改配置文件名,并按需修改端口、元数据数据库信息

启动sqle: systemctl start sqled

2. SQLE使用

功能列表如下:

在这里插入图片描述

已有的审核规则 如下,大家可以部署后自行查看 在这里插入图片描述

在这里插入图片描述

配置数据源:需配置具体实例、用户信息、审核规则模板、开启审核等

在这里插入图片描述

在这里插入图片描述

创建审核任务:

在这里插入图片描述

点击下方审核

在这里插入图片描述

审核结果如下

在这里插入图片描述

3. 调用审核接口

审核接口:http://ip:port/v1/tasks/audits

先获取token

在这里插入图片描述

使用postman调用接口进行审核:需输入token 、instance_name、instance_schema 、sql

输入token:

在这里插入图片描述

提交待审核SQL

在这里插入图片描述

查看审核结果

http://ip:10000/v1/tasks/audits/9/sqls?page_index=1&page_size=10&no_duplicate=false

在这里插入图片描述

注:数据库SQL脚本的审核是相当重要的一项工作,建议使用SQL审核工具进行审核,提升SQL质量。下一篇将通过代码来调用对应的接口并获得审核结果。

SQLE接口调用

1、创建自定义审核接口

因直接调用SQLE的审核接口,会出现token过期,且审核及结果查询接口是分开的,因此,出于以上2个原因的考虑,重新编写一个接口用于调用SQLE的审核接口并返回审核结果。参考代码如下:

# coding=utf-8
import requests
from flask import request
import json
from flask import Flask
app = Flask(__name__)
@app.route('/audit_task', methods=['post','get'])

def  audit_task():
    get_data = request.args.to_dict()
    v_instance = get_data.get('instance')
    v_schema = get_data.get('schema')
    v_sql = get_data.get('sql')


    v_token = get_token()
    v_headers = {'Authorization': f"{v_token}"}
    #print(v_headers)
    url = 'http://127.0.0.1:10000/v1/tasks/audits'
    v_data_a  = {'instance_name':v_instance,'instance_schema':v_schema,'sql':v_sql}
    #print(v_data_a)
    res = requests.post(url, data=v_data_a, headers=v_headers)
    v_taskid=res.json()['data']['task_id']
    url2='http://127.0.0.1:10000/v1/tasks/audits/'+str(v_taskid)+'{/sqls?page_index=1&page_size=10&no_duplicate=false'
    # print(url2)
    res2 = requests.get(url2,  headers=v_headers)
    audit_result = res2.json()['data'][0]['audit_result']
    if not(audit_result):
        audit_result=f'审核通过'
    return audit_result

def  get_token():
    url = 'http://127.0.0.1:10000/v1/login'
    data = {"username": "admin", "password": "xxxx"}
    # res = requests.post(url, json=data)
    h = {
        'Content-Type': 'application/json; charset=UTF-8'
    }
    res = requests.post(url, data=json.dumps(data), headers=h)
    t = json.loads(res.text)
    #print(type(json.loads(res.text)))
    token = t['data']['token']
    #print(t['data']['token'])
    return token


if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000, debug=True)

注:使用时,需提前在SQLE中配置好实例信息。

2. 调用测试

运行以上接口,并使用postman调用进行测试

输入参数名特地调整了一下,以便于区别,测试情况如下

在这里插入图片描述

调用结果如下:

[error]除了自增列及大字段列之外,每个列都必须添加默认值
[error]表必须有主键
[error]新建表必须加入if not exists create,保证重复执行不报错

与上文结果一致,且 无需调用2次接口。


好书推荐

在这里插入图片描述

《MySQL数据库管理与应用》

MySQL作为一款开源的关系型数据库管理系统,有着强大的功能和广泛的应用领域,对促进信息化建设、推动数字经济发展起着重要的作用。本书全面介绍了MySQL数据库的技术原理、应用场景和开发实践,帮助读者掌握MySQL数据库的基本概念和高级特性,提升数据库设计与开发的能力。全书共11章,从数据库基础知识讲起,包括数据库概述、关系型数据库设计原则、SQL语言基础等内容,逐步深入介绍MySQL数据库的高级特性和应用技巧,如查询优化、事务管理、索引优化,延伸学习在数字经济发展情境下,数据库的发展趋势和应用等内容。此外,本书最后一章还通过两个综合应用项目将理论知识与实际应用结合在一起。

购书链接:点此进入

本书旨在通过清晰的逻辑结构、简洁易懂的语言和实际案例来帮助读者快速掌握MySQL数据库技术,并在实际工作中灵活运用,与时俱进地应对信息化发展的新要求,为企业和社会创造更大的价值,推动中国软件技术和数据库领域的创新和发展。无论你是数据库初学者、软件开发人员、数据库管理员还是数据分析师,只要你对MySQL数据库感兴趣或需要在工作中应用MySQL数据库,本书都为你提供了宝贵的知识和指导。它既可以作为学习教材,也可以作为参考书。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/619119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LangChain:模型 I/O 封装使用解析和感触

目录 模型 API:LLM vs. ChatModel OpenAI 模型封装 多轮对话 Session 封装 换个国产模型 模型的输入与输出 Prompt 模板封装 PromptTemplate ChatPromptTemplate MessagesPlaceholder 从文件加载 Prompt 模板 TXT模板 Yaml模板 Json模板 输出封装 Out…

使用模拟SPI接口驱动串行接口的LCD( STM32F4)

目录 概述 1. 硬件介绍 1.1 ST7796-LCD 1.2 MCU IO与LCD PIN对应关系 2 代码实现 2.1 STM32CubeMX 6.11生成工程 2.2 IO模拟SPI接口 2.3 实现LCD的驱动 3 测试 测试代码下载地址: stm32-f407-lcd-ft6336-proj资源-CSDN文库 gitee下载地址: h…

48. 旋转图像/240. 搜索二维矩阵 II

48. 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 : 输入:matrix [[5,1,9,11],[2,4,…

NodeMCU ESP8266 获取I2C从机地址

文章目录 前言关于地址位读写位程序总结前言 I2C总线上可以挂载很多的从设备,每个设备都会有一个自己唯一的一个地址; 关于地址位 通常地址位占7位数据,主设备如果需要向从机发送/接收数据,首先要发送对应从机的地址,然后会匹配总线上挂载的从机的地址; 读写位 该位…

81.网络游戏逆向分析与漏洞攻防-移动系统分析-飞天遁地的实现与面向计算

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

服装定制|基于SSM+vue的服装定制系统的设计与实现(源码+数据库+文档)

服装定制系统 目录 基于SSM+vue的服装定制系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xf…

【CTF Web】QSNCTF 文章管理系统 Writeup(SQL注入+Linux命令+RCE)

文章管理系统 题目描述 这是我们的文章管理系统,快来看看有什么漏洞可以拿到FLAG吧?注意:可能有个假FLAG哦 解法 SQL 注入。 ?id1 or 11 --取得假 flag。 爆库名。 ?id1 union select 1,group_concat(schema_name) from information_sch…

【机器学习】集成学习在信用评分领域实例

集成学习在信用评分领域的应用与实践 一、引言二、集成学习的概念与原理三、集成学习在信用评分中的应用实例四、总结与展望 一、引言 在当今金融数字化快速发展的时代,信用评分成为银行、金融机构等评估个人或企业信用风险的重要工具。然而,单一的信用评…

飞天使-k8s知识点31-rancher的正确打开方式

文章目录 安装之前优化一下内核参数以及系统内核版本 rancher安装主要是使用以下命令nginx的配置为解决办法 安装之前优化一下内核参数以及系统内核版本 内核版本 4.17 cat > /etc/modules-load.d/iptables.conf <<EOF ip_tables iptable_filter EOF 然后重启服务器…

STM32快速入门(定时器之输出PWM波形)

STM32快速入门&#xff08;定时器之输出PWM波形&#xff09; 前言 本节主要讲解STM32利用通用定时器&#xff0c;利用CCR和CNT寄存器&#xff0c;输出指定占空比和频率的PWM波形。其功能的应用有&#xff1a;实现LED呼吸灯的效果、控制步进电机、控制直流电机转速等。 导航 …

基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 vivado2019.2和matlab2022a测试&#xff0c;结果如下&#xff1a; 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale …

解决vue3项目打包后部署后某些静态资源图片不加载问题

目录 问题 原因 解决方案 问题 开发完项目打包并部署 然后访问时发现导航栏背景图片没加载 打开浏览器控制台发现这张图片报错404 原因 可能是因为在部署后的服务器环境中对中文文件名的支持不完善。服务器在解析 URL 时可能无法正确识别或编码中文字符&#xff0c;导致无…

高精度原理介绍及代码实现

目录 高精度 引入 使用场景 实现原理 高精度加法 数据存储 加法实现 总代码 高精度减法 与加法的不同点&#xff1a; 总代码 高精度乘法 总代码 高精度除法 总结 总注意点 减法注意点 高精度 引入 所谓高精度并不是很高级难懂的东西&#xff0c;只是对传统的…

Kubernetes 核心概念

kubernetes的对象 Kubernetes 包含多种类型的资源对象&#xff1a;Pod、Label、Service、Replication Controller 等。 所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作&#xff0c;并将其保存在 etcd 中持久化存储。 Kubernets其实是一个…

【JAVA进阶篇教学】第十三篇:Java中volatile关键字讲解

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第十三篇&#xff1a;volatile关键字讲解。 在 Java 中&#xff0c;volatile关键字是一种轻量级的同步机制&#xff0c;用于确保变量的可见性和禁止指令重排序。本文将详细解释volatile关键字的工作原理、可见性保证以及…

对称加密介绍

一、什么是对称加密 对称密钥算法(Symmetric-key algorithm)&#xff0c;又称为对称加密、私钥加密、共享密钥加密&#xff0c;是密码学中的一类加密算法。 对称加密的特点是&#xff0c;在加密和解密时使用相同的密钥&#xff0c;或是使用两个可以简单地相互推算的密钥。 这…

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-overlay设计

目录 1. 简介 2. Overlay 设计 2.1 总体设计 2.2 MIPI 子系统 2.3 去马赛克 2.4 AXI_IIC 3. 注意事项 4. 总结 1. 简介 本文是关于《Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-CSDN博客》的博客文章&#xff0c;涉及了overlay设计的Vivado工程细节。在使用PYN…

iZotope RX 11 for Mac 激活版:让您的音频焕发生机!

在追求音频完美的道路上&#xff0c;iZotope RX 11 for Mac是您的得力助手。它凭借先进的音频修复技术和丰富的音频增强工具&#xff0c;让您的音频作品焕发出前所未有的生机与活力。无论您是专业的音频工程师&#xff0c;还是业余的音乐爱好者&#xff0c;都能在这款工具中找到…

【Spring】验证 @ServerEndpoint 的类成员变量线程安全

文章目录 前言猜想来源验证方法Controller 的情况ServerEndpoint 的情况 后记 前言 最近有 websocket 的需求。探索 ServerEndpoint 的类成员变量特点。 这里类比 Controller 讨论 ServerEndpoint 类成员变量是否线程安全。 猜想来源 网上的教程大多数都这么展示程序&#…

OBS插件--音频采集

音频采集 音频采集是一款 源 插件,类似于OBS的win-capture/game-capture&#xff0c;允许从特定应用程序捕获音频&#xff0c;而不是捕获整个系统的音频。避免了因为特定音频的采集而需要引入第三方软件&#xff0c;而且时延也非常低。 下面截图演示下操作步骤&#xff1a; 首…