Yearning-SQL审核平台
调研平台俩个
archeryd-SQL审核查询平台
https://archerydms.com/
yearning-SQL审核查询平台
http://yearning.io/
Yearning 功能
Yearning 拥有多项实用型功能。助力DBA提升工作自动化,标准化。
Yearning 拥有以下功能:
自动化SQL语句审核,可对SQL进行自动检测并执行
DDL/DML语句执行后自动生成回滚语句
审核/查询 审计功能
支持LDAP登录/钉钉及邮件消息推送
支持自定义审核工作流
支持细粒度权限分配
语法支持
Yearning 目前兼容99%的Mysql 标准SQL语法。 但由于审核逻辑等因素的限制,对一些SQL语句并不能保证得到正确的反馈 已知不支持的语句类型有:
复杂的查询语句(多表,多函数,非必现。并不是所有复杂语句不支持)
外键相关语句
不支持跨库DML语句的回滚
存储过程/触发器
仅代表当前语法支持进度,并不作为未来完成度.
主要功能
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 及以上显示器访问
对于设置页面配置重叠的问题请确认自己的分辨率以及是否进行了放大操作
请使用Chrome最新版本(不包括 360 等其他魔改版本)
创建mysql数据库,设置字符集
方法一:MySQL 命令
CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `Yearning` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
进入mysql,输入 show variables like “%char%”; 查看当前数据库编码:
方法二:修改/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
请选择最新版本 在 Assets 中选择 Yearning-x.x.x.linux-amd64.zip 包进行下载
如需进行代码修改或自己编译请移步至二次开发页面
Yearning 目录结构
1.填写配置文件
cat conf.toml
[Mysql]
Db = "Yearning"
Host = "127.0.0.1"
Port = "3306"
Password = "xxxx"
User = "root"
[General]
SecretKey = "dbcjqheupqjsuwsm"
关于 SecretKey
SecretKey 是 token/数据库密码加密/解密的 salt。
建议所有用户在初次安装 Yearning 之前将 SecretKey 更改(不更改将存在安全风险)
**格式: 大小写字母均可, 长度必须为 16 位 如长度不是16位将会导致无法新建数据源**
**特别注意:**
**此 key 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息**
使用帮助
./Yearning --help
2.初始化及安装
./Yearning install
如要再次安装,请先把 yearning 库下所有表删除,否则重复执行无效
初始化成功!
初始化成功!
用户名: 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
打开浏览器 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 |
| 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镜像
搭建完成
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文件
root@debian:/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
启动
docker-compose up -d
访问
账号:admin
密码:Yearning_admin
三、基本使用
首先当然是登陆界面,登陆的默认账号密码在初始化的时候已经提示:用户名: admin密码:Yearning_admin。Yearning推荐使用Chrome浏览器。
服务更新
Yearning采用自动表结构同步 无需手动更新表结构。只需停止原服务并替换安装包后重新启动即可
在一些特殊的升级情况中(破坏性变更)需要手动进行数据同步操作.如在版本更新公告中并无提示破坏性升级则无视以下命令!
./Yearning migrate
进来后是首页
首页中可以看到当前的用户数、数据源、工单数、查询数、个人信息、工单提交统计、高频库、以及工单趋势。
历史的工单
在我的工单界面可以看到历史的工单,执行状态,执行信息,是否备份等等。。
DML审核
DML相关SQL提交审核,SQL语法高亮/自动补全
数据库管理
添加/编辑/删除 数据源
用户权限
基础设置和进阶设置
审核规则
Yearning采用二级/多级的审核模式,可根据实际需求变更相关使用流程,执行人角色必须在开启多级审核之后才可指定(开启请前往设置页面),如果需要将多级审核改为二级审核,请先确保所有多级审核的工单都已确认执行。否则未执行工单将无法找回。当多级审核关闭后系统并不会自动将角色为执行人的用户重置角色,请自行重置相应用户角色
二级审核流程:
- 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单
- 2.管理员收到消息后在审核工单页面审核该工单请求并执行/驳回 对应工单
- 3.执行记录将会记录在该管理员用户下
多级审核流程:
- 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单,
- 2.管理员收到消息后在审核工单页面审核该工单请求并同意/驳回 对应工单并选择对应执行人(执行人必须是角色为执行人的用户)
- 3.执行人收到工单后 执行/驳回该工单
- 4.执行记录将会记录在该执行人用户下
设置SQL检测规则
使用流程
打开管理-用户,先来创建提交人和审核人用户
打开管理-数据库,添加要操作的数据库信息
打开管理-权限组,勾选数据库
打开管理-流程模板
打开管理-审核规则,按照企业要求设定审核条件
设置完毕需要给用户授权数据库
三,用户提交工单
用户使用管理员分配的用户名和密码登录
工单提交
查看已提交的工单并通知管理员进行审核
管理理员用户收到工单并执行
就可以查看到数据库中的表,建好了。
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
|