Yearning-MYSQL 审计平台部署

news2024/12/24 20:03:03

目录

一. 环境准备

二. 部署安装

三. 基础使用

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 - GPL

Copyright (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 -A

Database 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.coloradmin.cn/o/1969897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTFHUB-文件上传-文件头检查

开启题目 1.php内容&#xff1a; <?php eval($_POST[cmd]);?> 截屏截一个很小很小的图片&#xff0c;保存为 png 格式&#xff0c;把 1.png 和 1.php 放在同一文件夹&#xff0c;在此目录打开 cmd&#xff0c; 使用以下命令把 1.png 和 1.php 合成为图片马 copy 1.pn…

内存池化技术详解:提升C++程序性能的关键

目录 一. 引言 内存池化技术的概念与重要性 内存池化在现代C开发中的应用 二. 内存池化的基本原理 内存池化的工作机制 常见的内存池实现策略 三. 最新的内存池化技术 C23标准中的新特性 第三方库的最新进展 jemalloc和tcmalloc的使用和改进 四. 内存池化在多线程环…

ThreadLocal:线程本地变量的作用与应用

ThreadLocal&#xff1a;线程本地变量的作用与应用 1、简介2、作用3、应用场景4、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、简介 ThreadLocal 是Java中一个强大的工具类&#xff0c;用于创建线程局部变量。它为每个使用该…

Python教程(十):面向对象编程(OOP)

目录 专栏列表前言一、面向对象编程概述1.1 类和对象1.2 继承1.3 多态1.4 封装 二、Python 中的类和对象2.1 定义类2.2 __init__ 函数解释2.3 创建对象 三、继承3.1 基本继承3.2 创建子类对象 四、多态五、封装六. 访问限制七、综合实例结语 专栏列表 Python教程&#xff08;一…

MySQL~SQL语法

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系数据库管理系统&#xff08;RDBMS&#xff09;的标准化语言。 SQL 在标识符&#xff08;如表名、列名、函数名等&#xff09;的处理上通常是不区分大小写的&#xff0c;这…

如何手写一个SpringBoot框架

你好&#xff0c;我是柳岸花开。 在这篇文章中&#xff0c;我们将手写模拟SpringBoot的核心流程&#xff0c;让大家能够以一种简单的方式了解SpringBoot的大概工作原理。 项目结构 我们创建一个工程&#xff0c;包含两个模块&#xff1a; springboot模块&#xff0c;表示Spring…

Redis 有关列表的命令

List 也叫列表&#xff0c;一般用来操作和存储一组有顺序的数据&#xff1b; 索引与数组类似&#xff0c;从 0 开始&#xff1b; 1. 从列表头部添加 LPUSH 2. 获取列表内容 LRANGE LRANGE 键名称 起始位置 结束位置 注意&#xff1a; LPUSH 命令将添加的元素依次添加到列…

IEEE1801 UPF 编写指南-1.MSV设计

多电源电压&#xff08;MSV&#xff09;设计为核心技术使用多个电源电压&#xff0c;如图1-1“MSV设计示例”所示。顶层设计和实例inst_A在电压VDD1下操作&#xff0c;而实例inst_B在电压VDD2下操作&#xff0c;实例inst_C在电压VDD3下操作。 在相同操作电压下运行&#xff08;…

Chapter 23 数据可视化——地图

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、基础绘图二、视觉映射三、案例分析 前言 随着地理信息系统&#xff08;GIS&#xff09;技术的迅猛发展和大数据时代的到来&#xff0c;数据可视化已经成为分析和理…

供应链下生产计划有什么新要求?详解供应链下生产计划编制步骤!

在当今全球化和市场快速变化的商业环境中&#xff0c;供应链管理下的生产计划比以往任何时候都更为关键。企业不仅要应对需求的波动和供应的不确定性&#xff0c;还要在激烈的市场竞争中保持敏捷和效率。有效的生产计划已成为制造业乃至整个供应链成功的核心。本文将深入探讨供…

一款.NET开源、跨平台的DASH/HLS/MSS下载工具

前言 今天大姚给大家分享一款.NET开源&#xff08;MIT License&#xff09;、免费、跨平台的DASH/HLS/MSS下载工具&#xff0c;并且支持点播和直播&#xff08;DASH/HLS&#xff09;的内容下载&#xff1a;N_m3u8DL-RE。 网络流媒体传输协议介绍 DASH DASH是一种基于HTTP的…

更改ubuntu的主屏幕

一、【问题描述】 如果有多个屏幕连接到ubuntu&#xff0c;Ubuntu的这个上面的通知栏如果不在我们希望的位置&#xff0c;会让人很不舒服&#xff0c;这个是根据主屏幕位置显示的&#xff0c;这个文章水一下如何改这个 二、【解决方法】 总之就是两个命令&#xff0c;先查再改…

3.Java面试题之AQS

1. 写在前面 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个抽象类&#xff0c;用于实现同步器&#xff08;如锁、信号量、栅栏等&#xff09;。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…

condapytorch环境搭建笔记

1. 安装conda 官网安装地址&#xff1a;https://docs.anaconda.com/anaconda/install/linux/ 下载Installer curl -O https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh注&#xff1a;可以到这里查看和选择适合的版本&#xff1a;https://repo.anacon…

实验2-4-6 求交错序列前N项和

//实验2-4-6 求交错序列前N项和//本题要求编写程序&#xff0c;计算交错序列 1-2/33/5-4/75/9-6/11... 的前N项之和。 #include<stdio.h> #include<math.h> int main(){int n;scanf("%d",&n);//输入在一行中给出一个正整数N。double sum0;for(int i1…

SpringCloud Alibaba 微服务(三):OpenFeign

目录 前言 一、什么是OpenFeign&#xff1f; Feign 的实现 Feign 和 OpenFeign 的区别 二、OpenFeign的优点 三、基本用法 新建子工程 配置文件 服务注册 ​编辑 新建Controller 引入依赖 创建接口 启动类开启Feign注解 访问测试 四、FeignClient 标签的常用属性…

solidity抽象(abstract)合约(很常用)

当合约中至少有一个函数没有被实现&#xff0c; 或者合约没有为其所有的基本合约构造函数提供参数时&#xff0c; 合约必须被标记为 abstract。 即使不是这种情况&#xff0c;合约仍然可以被标记为 abstract&#xff0c; 例如&#xff0c;当您不打算直接创建合约时。 抽象&a…

Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo

Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo 1. 前提是咱们的Chatchat服务一起部署好了&#xff0c;可以参考 Langchain-Chatchat3.1版本docker部署流程——知识库问答 2. 搜索引擎 DuckDuckGo&#xff1a;该搜索引擎不需要key&#xff0c;但是需要全球上网服务&…

MongoDB change stream 详解

文章目录 什么是 Chang Streams实现原理故障恢复使用场景Spring Boot整合Chang Stream 什么是 Chang Streams Change Stream指数据的变化事件流&#xff0c;MongoDB从3.6版本开始提供订阅数据变更的功能。 Change Stream 是 MongoDB 用于实现变更追踪的解决方案&#xff0c;类…

MySQL基础练习题16-电影评分

题目 准备数据 分析数据 总结 题目 查找评论电影数量最多的用户名。如果出现平局&#xff0c;返回字典序较小的用户名。 查找在 February 2020 平均评分最高 的电影名称。如果出现平局&#xff0c;返回字典序较小的电影名称。 准备数据 ## 创建库 create database db; u…