一、简介
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目录,将安装包上传并解压
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 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息
2.3 在mysql创建对应的库
create database Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.4 初始化和安装
./Yearning install
启动,默认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 &
2.5 验证登录
打开浏览器输入 http://ip:8000
默认账号/密码:admin/Yearning_admin
三、使用
附名词释义:
数据库四大语言:
- 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 修改个人信息
登录账户后,可以修改超管的相关信息,设置新密码等。
3.2 添加用户
在 “管理” 中找到 “用户”,可以添加新用户。
3.3 自定义SQL审核流程
- 流程名称 (顾名思义)
- 阶段名称 (当前设置的流程阶段的名称)
- 阶段类型 (当前阶段的类型,共分两种:1.审核 2.执行) 每个流程的末端阶段的步骤类型必须为执行类型,否则该流程下的审核工单将无法成功完结并执行
- 审核人员 (指定当前阶段审核人员范围,可多选)
- 添加 (点击后将该阶段添加至流程中)
3.4 配置数据源
在新建数据源中填写相关信息,新建数据源,注意下面的用户名和密码是mysql的。
新建好后,可以在 “详情” 查看,并配置数据源(排除的数据库),针对用户设置对应数据源的权限
3.5 设置权限
admin:所有权限(查询,数据更改,表结构变更)
DQL:数据查询权限
DML:数据操作权限(insert、update、delete)
DDL:数据定义权限(添加/删除字段、添加/删除索引等)
点击 “新建权限组”,设置一个名称,并分配对应的权限
对于不同的权限组,可以设置不同的数据源权限
3.6 设置用户权限
可以给不同的用户设置不同的权限
3.7 工单申请及审批
- 工单申请
根据需要选择【DML/DDL/查询】中的一种进行工单申请
填入数据库、说明及sql语句,右键点击“sql检测”,没有异常即可点击提交
- 查看工单申请记录
点击“我的工单”即可看到刚刚提交的
- 工单审核及执行
按照审核流程的节点一级一级审批,如果有执行权限,可直接执行工单。
在“审核”一栏点击“工单”,点击需要审批工单后面的“详情”
在代码栏右键点击“sql检测”后,“同意”按钮会变亮,点击同意即可。
此时工单会转发到 admin 超管那里,超管用户同意后,工单便会执行(当流程最后节点人员通过后将会自动执行该工单)
再查看“我的工单”会发现已执行完成,整个工单审批流程结束
3.8 审核规则
默认关闭,可以根据实际需要来打开某些规则。在SQL检测时,将按照设置的规则进行检测。
3.9 自动任务
配置相关任务后可以对符合条件的SQL语句自动执行,无需执行人手动执行。例如下图对 delete 类的语句自动执行
3.10 设置
- 消息推送(钉钉推送、邮件推送等)
以下演示钉钉推送
- 在钉钉新建测试群,并添加机器人,因为 yearning 需要填写webhook秘钥,所以安全设置选择“加签”
- 在设置界面,输入 webhook地址 和 webhook秘钥 ,点击“hook测试”,看到钉钉群有新消息,即说明设置成功
- 用户提交工单审核进行测试,钉钉群可以正常接收到推送
- 设置LDAP登录
- 进阶设置:可以设置查询最大limit数,自定义环境(默认定义了Aliyun、AWS)等
- 数据清除:可以按时间删除工单记录
参考文档:
简介 · GitBook
安装部署Yearning_yearning部署_keke_俩个科的博客-CSDN博客
安装 - 《Yearning v3.0 教程》 - 书栈网 · BookStack
Yearning安装及使用 - coolw - 博客园