Yearning-SQL审核平台

Yearning-SQL审核平台

调研平台俩个

archeryd-SQL审核查询平台

https://archerydms.com/

yearning-SQL审核查询平台

http://yearning.io/

Yearning 功能

Yearning 拥有多项实用型功能。助力DBA提升工作自动化,标准化。

img

Yearning 拥有以下功能:
 自动化SQL语句审核,可对SQL进行自动检测并执行
 DDL/DML语句执行后自动生成回滚语句
 审核/查询 审计功能
 支持LDAP登录/钉钉及邮件消息推送
 支持自定义审核工作流
 支持细粒度权限分配

语法支持

Yearning 目前兼容99%的Mysql 标准SQL语法。 但由于审核逻辑等因素的限制,对一些SQL语句并不能保证得到正确的反馈 已知不支持的语句类型有:

复杂的查询语句(多表,多函数,非必现。并不是所有复杂语句不支持)
 外键相关语句
 不支持跨库DML语句的回滚
 存储过程/触发器
仅代表当前语法支持进度,并不作为未来完成度.

img

主要功能

SQL 查询
查询工单
导出
自动补全,智能提示
查询语句审计
查询结果脱敏
SQL 审核
流程化工单
SQL语句语法检测
根据规则检测SQL语句合规性
自动生成DDL/DML回滚语句
历史审核记录
推送
E-mail 工单推送
钉钉 webhook 机器人工单推送
用户权限及管理
角色划分
基于用户的细粒度权限
注册
其他
todoList
LDAP 登录
动态审核规则配置
自定义审核层级
AutoTask 自动执行

Yearning 社区

使用及部署遇到了些困惑?欢迎加入Yearning社区(QQ群) 363323798
操作文档
https://next.yearning.io/guide/config/source.html

注意事项

Yearning 不依赖于任何第三方 SQL 审核工具作为审核引擎,内部已自己实现审核/回滚相关逻辑。

仅依赖 Mysql 数据库。

mysql 版本必须为5.7及以上版本(8.0及以上请将sql_mode 设置为空)并已事先自行安装完毕且创建 Yearning 库,字符集应为 UTF8mb4 (仅 Yearning 所需 mysql 版本)

Yearning 基于 1080p 分辨率开发仅支持 1080p 及以上显示器访问

对于设置页面配置重叠的问题请确认自己的分辨率以及是否进行了放大操作

扫描二维码关注公众号,回复: 14350944 查看本文章

请使用Chrome最新版本(不包括 360 等其他魔改版本)

创建mysql数据库,设置字符集

方法一:MySQL 命令
# utf8 
CREATE DATABASE  `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
# utf8mb4
CREATE DATABASE  `Yearning` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

进入mysql,输入 show variables like “%char%”; 查看当前数据库编码:

image-20220630133025763

方法二:修改/etc/my.cnf 文件
[client]
default-character-set = utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

然后,重启Mysql服务:

`/etc/init.d/mysqld stop /etc/init.d/mysqld start`

Yearning 下载

Yearning-go 提供二进制下载包

下载地址 https://github.com/cookieY/Yearning/releases

image-20220630105148680

请选择最新版本 在 Assets 中选择 Yearning-x.x.x.linux-amd64.zip 包进行下载

如需进行代码修改或自己编译请移步至二次开发页面

image-20220630110238697

Yearning 目录结构

image-20220630111518469

1.填写配置文件

image-20220630112806963

cat conf.toml
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "xxxx"
User = "root"

[General]   #数据库加解密key,只可更改一次。
SecretKey = "dbcjqheupqjsuwsm"

关于 SecretKey

SecretKey 是 token/数据库密码加密/解密的 salt。

建议所有用户在初次安装 Yearning 之前将 SecretKey 更改(不更改将存在安全风险)

**格式: 大小写字母均可, 长度必须为 16 位 如长度不是16位将会导致无法新建数据源**

**特别注意:**

**此 key 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息**

使用帮助

./Yearning --help

image-20220630112907859

2.初始化及安装

./Yearning install

如要再次安装,请先把 yearning 库下所有表删除,否则重复执行无效
image-20220630133343534

初始化成功!
初始化成功!
用户名: admin
密码:Yearning_admin
请通过./Yearning run 运行,默认地址:http://<host>:8000

3.启动服务

默认启动

./Yearning run

参数启动

./Yearning run --push "172.27.80.35" -port "8000"

root@192:/usr/local/Yearning# ./Yearning run --port "8008" #修改端口

image-20220630133759172

image-20220630133818251

打开浏览器 http://127.0.0.1:8000

默认账号/密码:admin/Yearning_admin

docker安装采用本地mysql数据库

Yearning 是基于[Inception](https://so.csdn.net/so/search?q=Inception&spm=1001.2101.3001.7020)的web可视化SQL审核平台,其本身只提供可视化交互页面并不具备sql审核的能力。所以必须搭配Inception一起使用。 Inception 安装参考 [MySQL 审核工具 Inception](https://blog.csdn.net/kk185800961/article/details/84863216)

创建数据库

CREATE DATABASE Yearning CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
grant all on Yearning.* to 'yearning'@'%' identified by 'sMHcsff32wUv38';

MySQL里的表介绍:

mysql> show tables;
+----------------------------+
| Tables_in_yearning         |
+----------------------------+
| core_accounts              |      # 保存用户信息
| core_auto_tasks            |      # 自动任务
| core_data_sources          |      # 数据源
| core_global_configurations |      # 管理--设置详细信息
| core_graineds              |      # 用户权限
| core_query_orders          |      # 查询审计记录
| core_query_records         |      # 查询审计旁边的详细记录
| core_role_groups           |      # 权限组
| core_rollbacks             |      # 回滚sql
| core_sql_orders            |      # 工单审计记录
| core_sql_records           |      # 工单审计旁边的详细记录
| core_workflow_details      |		# 我的工单
| core_workflow_tpls         |		# 流程模板
+----------------------------+
13 rows in set (0.01 sec)

启动

方式一
docker run -d   --name yearning   --restart always   -p 8000:8000   -e MYSQL_USER=yearning   -e MYSQL_ADDR=192.168.2.202:3306   -e MYSQL_PASSWORD=sMHcsff32wUv38   -e MYSQL_DB=Yearning   -e TZ="Asia/Shanghai"   test/yearning:latest
方式二
docker run -d \
  --name yearning \
  --restart always \
  -p 8000:8000 \
  -e MYSQL_USER=yearning \
  -e MYSQL_ADDR=xxxxx:3306 \
  -e MYSQL_PASSWORD=sMHcsff32wUv38 \
  -e MYSQL_DB=Yearning \
  -e TZ="Asia/Shanghai" \
  test/yearning:latest

默认密码:admin/Yearning_admin

images镜像

image-20220701164521415

搭建完成

image-20220701164603004

docker-compose搭建yearningSQL审计平台

准备工作

1.关闭防火墙和selinux

2.安装好docker

安装docker-compose

[root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost ~]# sudo chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose version
docker-compose version 1.27.1, build 509cfb99
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

创建目录

mkdir -p /data/docker/mysql/3306/data/db
mkdir -p /data/docker/var/run/
mkdir -p /data/docker/mysql/3306/data/conf
touch /data/docker/var/run/mysql-3306.sock

编写docker-compose.yaml文件

image-20220701174841617

root@debian:/yearning# docker images |grep yearning
test/yearning                   latest    3bd14792c8f1   5 months ago    29.4MB
version: '3.5'

services:
  mysql:
    image: mysql:5.7
    container_name: yearning-mysql
    volumes:
      - /data/docker/mysql/3306/data/db:/var/lib/mysql/
      - /data/docker/var/run/mysql-3306.sock:/var/run/mysql.sock
      - /data/docker/mysql/3306/data/conf:/etc/mysql/conf.d
    ports:
      - 3306:3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: yearning
      MYSQL_USER: yearning
      MYSQL_PASSWORD: 123456
      TZ: Asia/Shanghai
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

  yearning:
    image: test/yearning:latest
    container_name: yearning-web
    environment:
      MYSQL_USER: yearning
      MYSQL_PASSWORD: 123456
      MYSQL_ADDR: mysql
      MYSQL_DB: yearning
    ports:
      - 8000:8000
    depends_on:
      - mysql
    restart: always

image-20220701175000032

启动
docker-compose up -d

image-20220701175039253

访问

image-20220701175106452

账号:admin
密码:Yearning_admin

三、基本使用

首先当然是登陆界面,登陆的默认账号密码在初始化的时候已经提示:用户名: admin密码:Yearning_admin。Yearning推荐使用Chrome浏览器。

img

服务更新

Yearning采用自动表结构同步 无需手动更新表结构。只需停止原服务并替换安装包后重新启动即可

在一些特殊的升级情况中(破坏性变更)需要手动进行数据同步操作.如在版本更新公告中并无提示破坏性升级则无视以下命令!

./Yearning migrate
进来后是首页

首页中可以看到当前的用户数、数据源、工单数、查询数、个人信息、工单提交统计、高频库、以及工单趋势。

image-20220630134519621

历史的工单

在我的工单界面可以看到历史的工单,执行状态,执行信息,是否备份等等。。

image-20220630134922582

DML审核

DML相关SQL提交审核,SQL语法高亮/自动补全
image-20220630140424684

数据库管理

添加/编辑/删除 数据源

image-20220630140551705

用户权限

image-20220630140618449

基础设置和进阶设置

image-20220630140703320

审核规则

Yearning采用二级/多级的审核模式,可根据实际需求变更相关使用流程,执行人角色必须在开启多级审核之后才可指定(开启请前往设置页面),如果需要将多级审核改为二级审核,请先确保所有多级审核的工单都已确认执行。否则未执行工单将无法找回。当多级审核关闭后系统并不会自动将角色为执行人的用户重置角色,请自行重置相应用户角色

二级审核流程:

  • 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单
  • 2.管理员收到消息后在审核工单页面审核该工单请求并执行/驳回 对应工单
  • 3.执行记录将会记录在该管理员用户下

多级审核流程:

  • 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单,
  • 2.管理员收到消息后在审核工单页面审核该工单请求并同意/驳回 对应工单并选择对应执行人(执行人必须是角色为执行人的用户)
  • 3.执行人收到工单后 执行/驳回该工单
  • 4.执行记录将会记录在该执行人用户下

设置SQL检测规则

image-20220630140739838

使用流程

打开管理-用户,先来创建提交人和审核人用户

image-20220630141855658

image-20220630141913328

打开管理-数据库,添加要操作的数据库信息

image-20220630142221937

打开管理-权限组,勾选数据库

image-20220630151113165

打开管理-流程模板

image-20220630151154561

打开管理-审核规则,按照企业要求设定审核条件

image-20220630151213455

设置完毕需要给用户授权数据库

image-20220630151234177

三,用户提交工单

用户使用管理员分配的用户名和密码登录

image-20220630151254602

工单提交

image-20220630151309793

image-20220630151318660

image-20220630151331322

查看已提交的工单并通知管理员进行审核

image-20220630151348397

管理理员用户收到工单并执行

image-20220630151403326

就可以查看到数据库中的表,建好了。

image-20220630151415378

yearning相关报错排查


1-排查yearning-SQL审核问题


遇到问题
问题一:docker-compose启动的yearning,访问web出现登陆不上默认账号admin
解决方法:查看docker容器 logs日志,报错没有配置对mysql数据库

问题二:docker-compose启动的yearning,访问web出现登陆不上默认账号admin
解决方法:docker-compose启动的mysql,访问连接不到,解决方法暂时更换成本地mysql数据库




1-debian10安装非docker版本数据库
2-授权本地mysql-yearning库,用户权限

问题原因:
问题-1:mysql启动完成,登陆mysql报错
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc
解决方法:查找相关文档是缺少,依赖做软连接也不行,彻底解决  sudo apt install libncurses5


问题-2:docker启动的yearning,登陆web账号没有报错,发现yearning版本有点低,缺少权限组管理,
解决方法:更换yearning相关镜像,拉取不到,采取群里找yearning相关最新镜像,已经更换到v2.8版本左右

问题-3:更换yearning-v2.8版本镜像,出现登陆web账号提示账号密码不正确
解决方法:查看相关mysql表,没有插入相关账号权限字段,最后原因 创建yearning库 是区分大小写的Yearning

陆不上默认账号admin
解决方法:docker-compose启动的mysql,访问连接不到,解决方法暂时更换成本地mysql数据库

1-debian10安装非docker版本数据库
2-授权本地mysql-yearning库,用户权限

问题原因:
问题-1:mysql启动完成,登陆mysql报错
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc
解决方法:查找相关文档是缺少,依赖做软连接也不行,彻底解决 sudo apt install libncurses5

问题-2:docker启动的yearning,登陆web账号没有报错,发现yearning版本有点低,缺少权限组管理,
解决方法:更换yearning相关镜像,拉取不到,采取群里找yearning相关最新镜像,已经更换到v2.8版本左右

问题-3:更换yearning-v2.8版本镜像,出现登陆web账号提示账号密码不正确
解决方法:查看相关mysql表,没有插入相关账号权限字段,最后原因 创建yearning库 是区分大小写的Yearning


猜你喜欢

转载自blog.csdn.net/tianmingqing0806/article/details/125563433