一、简介

Yearning 是面向中小型企业的轻量级MySQL SQL语句审核平台,提供查询审计、SQL审核等多种功能。
主要功能

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

二、部署

下载地址 https://github.com/cookieY/Yearning/releases
Yearning-v3.1.4-linux-amd64.zip

2.1 创建目录并解压

创建一个yearning目录,将安装包上传并解压
image.png

2.2 修改配置文件

vim conf.toml

[Mysql]
Db = "Yearning"
Host = "127.0.0.1"   #必须是127的这个地址
Port = "3306"
Password = "xxxx"   #mysql数据库的密码
User = "root"   

[General]   #数据库加解密key,只可初始化时更改一次
SecretKey = "dbcjqheupqjsuwsm"
# SecretKey 是 token/数据库密码加密/解密的 salt,此 key 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息

image.png

2.3 在mysql创建对应的库

create database Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2.4 初始化和安装

./Yearning install
1683252211992.jpg
启动,默认8000端口./Yearning run 或者 ./Yearning run --push "ip" -port "指定端口号"
后台运行nohup ./Yearning run -b "ip" -p "端口号" > /data/yearning/Yearning/log/yearning.log 2>&1 &
nohup sh seata-server.sh > ./seata.log 2>&1 &
1683252241094.jpg

2.5 验证登录

打开浏览器输入 http://ip:8000
默认账号/密码:admin/Yearning_admin
1683253652884.jpg
image.png

三、使用

附名词释义:
数据库四大语言:

  • DDL (数据定义语言)

数据定义语言 - Data Definition Language,用来定义数据库的对象,如数据表、视图、索引等。
如:create、drop、alter、truncate

  • DML (数据操纵语言)

数据处理语言 - Data Manipulation Language,在数据库表中更新,增加和删除记录。如 update、insert、delete等,不包含查询。

  • DCL (数据控制语言)

数据控制语言 – Data Control Language,指用于设置用户权限和控制事务语句。如grant、revoke、if…else、while、begin transaction

  • DQL (数据查询语言)

数据查询语言 – Data Query Language,数据表记录的查询。

3.1 修改个人信息

登录账户后,可以修改超管的相关信息,设置新密码等。
image.png

3.2 添加用户

在 “管理” 中找到 “用户”,可以添加新用户。
image.png

3.3 自定义SQL审核流程

  • 流程名称 (顾名思义)
  • 阶段名称 (当前设置的流程阶段的名称)
  • 阶段类型 (当前阶段的类型,共分两种:1.审核 2.执行) 每个流程的末端阶段的步骤类型必须为执行类型,否则该流程下的审核工单将无法成功完结并执行
  • 审核人员 (指定当前阶段审核人员范围,可多选)
  • 添加 (点击后将该阶段添加至流程中)

image.png

3.4 配置数据源

在新建数据源中填写相关信息,新建数据源,注意下面的用户名和密码是mysql的。
image.png

新建好后,可以在 “详情” 查看,并配置数据源(排除的数据库),针对用户设置对应数据源的权限
image.png

3.5 设置权限

admin:所有权限(查询,数据更改,表结构变更)
DQL:数据查询权限
DML:数据操作权限(insert、update、delete)
DDL:数据定义权限(添加/删除字段、添加/删除索引等)

点击 “新建权限组”,设置一个名称,并分配对应的权限
对于不同的权限组,可以设置不同的数据源权限
image.png

3.6 设置用户权限

可以给不同的用户设置不同的权限
image.png

3.7 工单申请及审批

  • 工单申请

根据需要选择【DML/DDL/查询】中的一种进行工单申请
image.png

填入数据库、说明及sql语句,右键点击“sql检测”,没有异常即可点击提交
image.png

  • 查看工单申请记录

点击“我的工单”即可看到刚刚提交的
image.png

  • 工单审核及执行

按照审核流程的节点一级一级审批,如果有执行权限,可直接执行工单。
在“审核”一栏点击“工单”,点击需要审批工单后面的“详情”
image.png

在代码栏右键点击“sql检测”后,“同意”按钮会变亮,点击同意即可。
image.png

此时工单会转发到 admin 超管那里,超管用户同意后,工单便会执行(当流程最后节点人员通过后将会自动执行该工单)
再查看“我的工单”会发现已执行完成,整个工单审批流程结束
image.png

3.8 审核规则

默认关闭,可以根据实际需要来打开某些规则。在SQL检测时,将按照设置的规则进行检测。
image.png

3.9 自动任务

配置相关任务后可以对符合条件的SQL语句自动执行,无需执行人手动执行。例如下图对 delete 类的语句自动执行
image.png

3.10 设置

  • 消息推送(钉钉推送、邮件推送等)

以下演示钉钉推送

  1. 在钉钉新建测试群,并添加机器人,因为 yearning 需要填写webhook秘钥,所以安全设置选择“加签”

image.png

  1. 在设置界面,输入 webhook地址 和 webhook秘钥 ,点击“hook测试”,看到钉钉群有新消息,即说明设置成功

image.png
image.png

  1. 用户提交工单审核进行测试,钉钉群可以正常接收到推送

image.png

  • 设置LDAP登录

image.png

  • 进阶设置:可以设置查询最大limit数,自定义环境(默认定义了Aliyun、AWS)等
  • 数据清除:可以按时间删除工单记录

image.png

参考文档:
简介 · GitBook
安装部署Yearning_yearning部署_keke_俩个科的博客-CSDN博客
安装 - 《Yearning v3.0 教程》 - 书栈网 · BookStack
Yearning安装及使用 - coolw - 博客园

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐