Yearning是一款非常好用的SQL数据库审核管理工具,能够帮助用户进行SQL查询、SQL审核、SQL推送、导入导出、审核记录查询、用户权限及管理等操作,能够有效帮助用户检测SQL语句进行二次开发,能够有效的提升用户工作效率,有需要的用户欢迎下载使用!
我的工单
对于执行失败/驳回的工单点击执行信息后可以重新修改sql并提交
对于执行成功的工单可以点击执行信息查看回滚语句并且快速提交SQL
提交工单-DDL
如果想获取表结构详细信息,必须选填表名并完整填写工单信息。
所有的SQL只有在检测后错误等级为0时提交按钮才会激活。
如下拉列表框内没有相关数据源显示请联系管理员是否赋予相应数据源权限
提交工单-DML
查询语句请走查询页面不要将查询语句放入DML审核
查询
如果开启查询审核,提交该查询申请后需对应审核人同意后方可查询。
超级管理员在设置页面开启数据导出功能后,查询申请页面才会显示数据导出按钮
由于导出数据为.csv格式 如导出数据中有json等以含有逗号的数据会造成数据分隔异常的问题(csv 默认使用逗号分隔)
获取表结构功能必须点击相应表名此为前置条件
快速提交功能仅支持同查询数据源的DML语句(查询数据源必须为读写类型)
如下拉列表框内没有相关数据源显示请联系管理员是否赋予相应数据源权限
工单审核
实时刷新开关默认打开,如需删除记录请先关闭该开关。
如定时工单的时间小于当前时间,执行该工单将会立即执行(请确保Yearning所在环境时区与使用者时区一致,否则会导致定时执行异常!)
目前仅支持延时工单中止,其他工单执行后无法中止!
执行成功的工单可点击执行信息按钮后查看回滚语句
查询审核
点击全部中止按钮将会中止所有用户的查询权限 如没有在设置页面开启查询审核开关,则默认用户查询申请提交后自动获得查询权限。 用户查询时限请在设置页面进行设置。
点击清除空查询工单,可删除无查询记录的空查询工单(此情况多发生于用户申请了查询工单后并没有查询的情况)
用户管理
当多级审核关闭后系统并不会自动将角色为执行人的用户重置角色,请自行重置相应用户角色。
数据库管理
所有添加的数据源应在添加之前点击测试连接按钮进行连接性测试,保证连接性。
数据源分为查询数据源/非查询数据源/读写数据源。查询数据源仅会出现在细粒度权限的查询数据源范围内。非查询数据源同理。(对于查询与执行数据源应拆分为二,保障线上执行数据源不会因为查询慢sql影响业务)默认为读写数据源。此类别添加后无法通过编辑进行修改,请慎重添加。
数据源详细信息处密码为假密码展示并不会回传真实密码信息(并不妨碍编辑修改密码)确保安全性
设置
ldap设置请参考 yearning ldap配置
目前ldap并没有实现基于filter的过滤搜索,仅支持全局搜索。
由于ldap测试并没有进行dc搜索(管路员用户并不需要dc搜索),所以测试成功并不代表ldap用户100%可访问.即填对了ldap管理员用户信息但SCBASE信息填写有误.
目前脱敏规则为无差别化脱敏,不管查询什么库只要该字段符合脱敏规则就会自动隐式显示
输入框配置,必须点击添加按钮,使配置添加后保存才生效。
所有设置均即时生效,其他用户刷新页面后即可。
审核规则
数值型规则0值都为不受限制。
开启检查时间字段默认值,所有时间类型字段都必须设置默认值且默认值必须为CURRENT_TIMESTAMP
osc相关规则请参考相关工具参数说明。
OSCMinTableSize当表体积大于该值时如果启动osc则走osc执行。
受制于各种条件影响, 影响行数判断并不一定准确,走主键及索引的语句会提交准确性,仅作为部分参考,如预测结果偏移量较大。可考虑语句性能是否存在可优化空间或提高影响行数上限。(影响行数基于explain)
文本类型输入框填写多值时请使用英文逗号分隔 (例如:charset范围,collate范围)
AutoTask
用户可通过改功能设置自动执行任务。当提交的dml语句符合相应任务条件。将会自动执行,无需审核人审核。
该功能仅限dml语句使用。请慎重使用!
1、SQL查询
查询导出
查询自动补全
2、SQL审核
流程化工单
SQL语句检测
SQL语句执行
SQL回滚
SQL自动审核执行
3、历史审核记录
4、查询审计
5、推送
E-mail工单推送
自定义webhook消息推送
6、其他
LDAP登陆
用户权限及管理
权限组划分
自定义审核层级
注意事项
Yearning 不依赖于任何第三方 SQL 审核工具作为审核引擎,内部已自己实现审核/回滚相关逻辑。
仅依赖 Mysql 数据库。
mysql 版本必须为5.7及以上版本(8.0及以上请将sql_mode 设置为空)并已事先自行安装完毕且创建 Yearning 库,字符集应为 UTF8mb4 (仅 Yearning 所需 mysql 版本)
Yearning 基于 1080p 分辨率开发仅支持 1080p 及以上显示器访问
对于设置页面配置重叠的问题请确认自己的分辨率以及是否进行了放大操作
请使用 Chrome 最新版本(不包括 360 等其他魔改版本)
Yearning 下载
Yearning-go 提供二进制下载包
请选择最新版本 在 Assets 中选择 Yearning-x.x.x.linux-amd64.zip 包进行下载
如需进行代码修改或自己编译请移步至二次开发页面
Yearning 目录结构
Yearning(SQL审核平台)
1.填写配置文件
Yearning(SQL审核平台)
关于 SecretKey
SecretKey 是 token/数据库密码加密/解密的 salt。
建议所有用户在初次安装 Yearning 之前将 SecretKey 更改(不更改将存在安全风险)
格式: 大小写字母均可, 长度必须为 16 位 如长度不是16位将会导致无法新建数据源
特别注意:
此 key 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息
使用帮助
Yearning(SQL审核平台)
2.初始化数据结构
./Yearning -m
请务必在-s 启动前首先执行-m 初始化操作!
如要再次初始化,请先把 yearning 库下所有表删除,否则重复执行无效
3.启动服务
默认启动
./Yearning -s
参数启动
./Yearning -s -b "172.27.80.35" -p "8000"
打开浏览器 http://172.27.80.35:8000
默认账号/密码:admin/Yearning_admin
注意事项
语法支持
Yearning 目前兼容99%的Mysql 标准SQL语法。
但由于审核逻辑等因素的限制,对一些SQL语句并不能保证得到正确的反馈
已知不支持的语句类型有:
复杂的查询语句(多表,多函数,非必现。并不是所有复杂语句不支持)
外键相关语句
不支持跨库DML语句的回滚
存储过程/触发器
影响行数
Yearning采用Explain分析SQL语句的影响行数。由于Explain生成的影响行数受主键,索引等其他因素的影响,并不能100%保证其准确性。其更多的是反应了该语句导致的全表扫描行数,所以对于误差较大的语句具有一定的优化参考意义。
预检查
Yearning采用预检查的方法进行SQL检测,对于同一工单内添加并编辑的语句会产生字段不存在的错误。(在2.3.0版本开始将逐步兼容)
例如
ALTER TABLE core_data_sources ADD t1 int( 11) DEFAULT 0 COMMENT '已退换货数量';
ALTER TABLE core_data_sources ADD t2 int( 11) DEFAULT 0 COMMENT '申请中数量' AFTER t1;
该工单第二条语句依赖第一条语句创建的字段。由于当前数据库并没有t1这个字段,所以该工单检测时会报错t1字段不存在的问题。
语句本身没有问题因为在mysql执行中是逐条执行并检测。当第一条执行后表内生成该字段,第二条执行前检测自然也就正常。
使用osc
Yearning采用exec调用pt-osc的方式使用pt功能。管理员需在规则设置页面中填写相关pt-osc配置,并打开osc使用开关。 需要注意的是,使用pt-osc的DDL语句不得含有 dbname.tablename 这样的写法!请符合pt-osc写法!
生成回滚语句
Yearning 采用解析binlog方式的方式获得回滚语句。由于Mysql replication协议限制,必须拥有SUPER/REPLICATION SLAVE, REPLICATION CLIENT ,ALL PRIVILEGES 权限的账号才可以获得binlog流。所以,如想体验生成回滚语句备份功能,请确保对应填写的数据源账号拥有相应权限,同时对应数据源应开启binlog功能。