Yearning-MYSQL 审计平台部署

目录

一. 环境准备

二. 部署安装

三. 基础使用

1.用户管理

2. 创建SQL审计流程

3. 自定义审核规则

4. 导入数据源 

5. 创建权限组

6. 登录用户申请工单

1. 创建一个DDL工单提交

2. SQL审核执行

3.  SQL执行

4. 数据验证 


Yearning 是一个开源的 MySQL SQL 审计平台,专为数据库管理员和开发者设计,提供了包括查询审计、SQL 审核、SQL 回滚和自定义工作流在内的多种功能。它基于 Vue.js 构建前端,支持 SQL 语法高亮、自动补全和智能提示,以及可视化展示。Yearning 通过内置的审核规范帮助用户规范 SQL 变动,提高 SQL 使用的规范化和标准化,同时支持二次开发以适应特定的审核策略。

Yearning 的安装相对简单,只依赖 MySQL 数据库来存储工单数据,支持容器化部署,并提供了 Dockerfile 以方便快速部署。它目前主要支持 MySQL 数据库,并且兼容 99% 的 MySQL 标准 SQL 语法,但已知不支持某些复杂查询语句、CREATE TABLE LIKE 语句、视图语句和外键相关语句。

Yearning 的核心功能包括:

  • SQL 查询和审核
  • 历史审核记录查看
  • SQL 语句自动检测与执行
  • 支持消息推送,如钉钉机器人和邮件
  • 用户权限及管理,包括角色划分和细粒度权限控制
  • 审核规则配置,内置了多种常见场景的 SQL 审核规则
  • AutoTask 自动执行任务功能

一. 环境准备

本文使用虚拟机配置:

主机名IP系统软件版本配置信息
localhost192.168.226.29Rocky_linux_Mini9.4

Yearning v3.1.6.3

2核4G

官方网站:Yearning/README.zh-CN.md at next · cookieY/Yearning · GitHub 

下载地址:Tags · cookieY/Yearning · GitHub 

为避免一些未知原因,暂不使用最新版本的3.1.8,使用往期版本 v3.1.6.3

 

二. 部署安装

上传压缩包,这里我上传好了

[root@localhost ~]# ll
total 20944
-rw-r--r--  1 root root 21439981 Aug  1 11:07 Yearning-v3.1.6.3-linux-amd64.zip
-rw-------. 1 root root      815 Jun  6 14:00 anaconda-ks.cfg

解压 

[root@localhost ~]# yum install -y unzip
[root@localhost ~]# unzip Yearning-v3.1.6.3-linux-amd64.zip[root@localhost ~]# ll
total 20944
drwxr-xr-x  3 root root       85 Sep  8  2023 Yearning
-rw-r--r--  1 root root 21439981 Aug  1 11:07 Yearning-v3.1.6.3-linux-amd64.zip
-rw-------. 1 root root      815 Jun  6 14:00 anaconda-ks.cfg
[root@localhost Yearning]# ll
total 25364
-rwxr-xr-x 1 root root 19413896 Sep  8  2023 Yearning
-rw-r--r-- 1 root root      775 Aug 10  2023 conf.toml
drwxr-xr-x 2 root root       67 Aug 19  2022 docker
-rwxr-xr-x 1 root root  6553600 Aug 23  2022 migrate

拉取mysql8.0镜像,当然也可以使用宿主机的安装mysql,这里我是用docker的mysql学习用。

[root@localhost ~]# docker pull mysql:8.0

 创建数据库容器

在mysql8.0中默认字符集是 utf8mb4,默认排序规则(collation)是 utf8mb4_0900_ai_ci

[root@localhost ~]# docker run --name mysql8-Yearning \-e MYSQL_ROOT_PASSWORD=1234 \-e MYSQL_DATABASE=Yearning \-d mysql:8.0

查看容器IP

[root@localhost ~]# docker inspect mysql8-Yearning

修改配置Host和Password,根据需要修改

[root@localhost ~]# cd Yearning
[root@localhost Yearning]# vim conf.toml
[Mysql]
Db = "Yearning"
Host = "172.17.0.2"
Port = "3306"
Password = "1234"
User = "root"

 

安装初始化

[root@localhost Yearning]# ./Yearning install#下面提示就输入yes是否已将数据库字符集设置为UTF8/UTF8MB4? [yes|no]: yes

运行

[root@localhost Yearning]# ./Yearning run
#直接使用 ./Yearning run 可以前台运行并动态看到日志输出终端显示
#如果不想看,放到后台运行可以使用 nohup ./Yearning run & 命令并在敲一次回车即可。

 

访问IP+端口,例如这里我访问:http://192.168.226.29:8000/

 默认用户名:admin 默认密码:Yearning_admin 

三. 基础使用

1.用户管理

2. 创建SQL审计流程

3. 自定义审核规则

这些规则更严格定义SQL提交到审核的流程,这里测试我就不加规则约束了。

4. 导入数据源 

新增一个mysql8.0容器测试

[root@localhost ~]# docker run -itd \-e MYSQL_ROOT_PASSWORD=1234 \-e MYSQL_DATABASE=lzztty \--name dazzling_fermi \mysql:8.0

查询到其IP

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                 NAMES
a1c31a8f884a   mysql:8.0   "docker-entrypoint.s…"   8 minutes ago   Up 8 minutes   3306/tcp, 33060/tcp   dazzling_fermi
be951f65edc5   mysql:8.0   "docker-entrypoint.s…"   2 hours ago     Up 2 hours     3306/tcp, 33060/tcp   mysql8-Yearning[root@localhost ~]# docker inspect dazzling_fermi

5. 创建权限组

给这个数据源里,定义一些权限组。

  

将左边的勾选点击 > 符号即可,点击确定即会保存,这里我是将DDL,DML和查询权限都给了

然后给用户指定对应的权限组赋予权限组里的权限

6. 登录用户申请工单

1. 创建一个DDL工单提交

 

CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,name VARCHAR(255) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,UNIQUE INDEX unique_name (name)
);

2. SQL审核执行

登陆审核的用户,看我的规则,审核人是张三用户,执行人是李四和王五用户

3.  SQL执行

看执行定义的SQL审计流程,李四和王五用户才是执行人

切换李四用户测试

 

4. 数据验证 

登陆这个操作的数据库容器

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED             STATUS             PORTS                 NAMES
f3a49aaed7d1   mysql:8.0   "docker-entrypoint.s…"   About an hour ago   Up About an hour   3306/tcp, 33060/tcp   dazzling_fermi
be951f65edc5   mysql:8.0   "docker-entrypoint.s…"   4 hours ago         Up 4 hours         3306/tcp, 33060/tcp   mysql8-Yearning
[root@localhost ~]# docker exec -it dazzling_fermi /bin/bash
bash-5.1# mysql -uroot -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 63
Server version: 8.0.39 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lzztty             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> use lzztty;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+------------------+
| Tables_in_lzztty |
+------------------+
| test_table       |
+------------------+
1 row in set (0.00 sec)mysql>

可以看到数据执行成功了,使用ctrl + p + q快捷键可以在不退出容器的情况下从容器的交互式模式(attached mode)中分离出来,返回到宿主机的命令行界面。

以上是DDL工单测试,DML和查询测试这里不在赘述,详情见下图:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划-斐波那契数列

一. 什么是动态规划 dp一般是需要前面状态的值的问题。比如,解决一个问题需要很多步骤,且步骤之间相关联,后一个步骤的推导需要前一个步骤的结论。而我们所做的就是,将这个带求解的问题分成若干步骤,将每个步骤答案保…

python 去除验证码图片噪音

在处理验证码图片时,出现噪音,如横线、像素点等问题往往会影响识别率,这里给出一个去除噪音的方法,仅供学习。 import cv2 import os import numpy as np import copydef del_noise(img, number):height img.shape[0]width img…

JavaScript模块化

JavaScript模块化 一、CommonJS规范1、在node环境下的模块化导入、导出 2、浏览器环境下使用模块化browserify编译js 二、ES6模块化规范1、在浏览器端的定义和使用2、在node环境下简单使用方式一:方式二: 3、导出数据4、导入数据5、数据引用问题 一、Com…

前端:Vue学习 - 智慧商城项目

前端:Vue学习 - 智慧商城项目 1. vue组件库 > vant-ui2. postcss插件 > vw 适配3. 路由配置4. 登录页面静态布局4.1 封装axios实例访问验证码接口4.2 vant 组件 > 轻提示4.3 短信验证倒计时4.4 登录功能4.5 响应拦截器 > 统一处理错误4.6 登录权证信息存…

Mybatis学习(2)

分页 目的:减少数据的处理量 方式一:使用limit实现分页,核心SQL sql语法:select * from user limit startIndex,pageSize; 步骤: 1、接口 2、Mapper.xml 3、测试 方式二:使用注解开发 1、…

每日一题~EC168 A+B+C+D

A 题意: 字符串 每一个字符的花费是2,如果ai-1 ai ,那么ai 的花费是1. 现在可以插入一个字符,得到最大花费。输出插入字符之后的字符串。 分析:只需要在相同的连续字符中间插入一个不同的字符就可以了。如果没有连续的相同字符&am…

Python酷库之旅-第三方库Pandas(059)

目录 一、用法精讲 226、pandas.Series.pad方法 226-1、语法 226-2、参数 226-3、功能 226-4、返回值 226-5、说明 226-6、用法 226-6-1、数据准备 226-6-2、代码示例 226-6-3、结果输出 227、pandas.Series.replace方法 227-1、语法 227-2、参数 227-3、功能 …

最强开源模型 Llama 3.1 部署推理微调实战大全

目录 引言一、Llama 3.1简介二、Llama 3.1性能评估三、Llama 3.1模型推理实战1、环境准备2、安装依赖3、模型下载4、模型推理 四、Llama 3.1模型微调实战1、数据集准备2、导入依赖包3、读取数据集4、处理数据集5、定义模型6、Lora配置7、配置训练参数8、开始Trainer训练9、合并…

什么是负责任的人工智能

「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识AI 进阶:企业项目实战 可直接在橱窗里购买,或者到文末领取优惠后购买: 拥有权利的同时也被赋予了重大的…

Modbus通讯协议

Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议,‌它允许不同类型的设备之间进行通信,‌以便进行数据交换和控制。‌Modbus协议最初为可编程逻辑控制器(‌PLC)‌通信开发,‌现已广泛应用于工业自动化领…

详细分析nohup后台运行命令

目录 1. 基本知识2. Demo 1. 基本知识 Unix/Linux 命令,用于在后台运行程序,并确保它在用户退出或注销后继续运行 nohup 的主要作用是使程序在终端会话结束后继续运行,这对需要长时间执行的任务特别有用 基本的用法如下: nohu…

3.1 拓扑排序

有向图的存储 邻接矩阵 邻接表 拓扑排序 有向无环图:不存在环的有向图 环: 在有向图中,从一个节点出发,最终回到它自身的路径被称为环 入度: 以节点x为终点的有向边的条数被称为x的入度 出度: 以节…

哈默纳科HarmonicDrive谐波减速机的使用寿命计算

在机械传动系统中,减速机的应用无处不在,而HarmonicDrive哈默纳科谐波减速机以其独特的优势,如轻量、小型、传动效率高、减速范围广、精度高等特点,成为了众多领域的选择。然而,任何机械设备都有其使用寿命&#xff0c…

数据集成是什么意思?方法有哪些?数据集成三种方法介绍

1 数据集成是什么 数据集成(Data Intergration),也称为数据整合,是通过将分布式环境中的异构数据集成起来,为用户提供统一透明的数据访问方式。该定义中的集成是指从整体层面上维护数据的一致性,并提高对数据的利用和共享&#x…

【Redis 进阶】事务

Redis 的事务和 MySQL 的事务概念上是类似的,都是把一系列操作绑定成一组,让这一组能够批量执行。 一、Redis 的事务和 MySQL 事务的区别 1、MySQL 事务 原子性:把多个操作打包成一个整体。(要么全都做,要么都不做&am…

用 Python 编写的井字游戏

一.介绍 在本文中,我将向您展示如何使用 Python 创建一个非常简单的井字游戏。 井字游戏是一种非常简单的双人游戏。因此每次只能有两个玩家玩。该游戏也称为井字游戏或 Xs 和 Os 游戏。一个玩家玩 X,另一个玩家玩 O。在这个游戏中,我们有一…

树组件 el-tree 数据回显

树组件 el-tree 数据回显 树型结构的数据回显问题&#xff1a; 这里我只放了核心代码&#xff0c;主要是如何获取选中的树节点的id集合和如何根据树节点的id集合回显数据 大家根据需要自行更改&#xff01; <el-tree ref"authorityRef" node-key"id" …

SSH访问控制:精确管理你的服务器门户

“ 在数字世界中&#xff0c;服务器的安全性是任何网络管理员的首要任务。特别是对于远程登录协议如SSH&#xff0c;确保只有授权用户可以访问是至关重要的。 今天&#xff0c;记录两种有效的方法来控制用户对特定服务器的访问&#xff1a;通过sshd_config实现黑/白名单机制和利…

【Python】pandas:替换值、添加行/列,删除行/列,更改形状(含数据透视表)

pandas是Python的扩展库&#xff08;第三方库&#xff09;&#xff0c;为Python编程语言提供 高性能、易于使用的数据结构和数据分析工具。 pandas官方文档&#xff1a;User Guide — pandas 2.2.2 documentation (pydata.org) 帮助&#xff1a;可使用help(...)查看函数说明文…

前端面试宝典【HTML篇】【4】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…