龙空技术网

GitHub精选 | Yearning-轻量级MySQL语句审核平台

GitHub精选 1128

前言:

眼前小伙伴们对“mysqlgithub”可能比较重视,各位老铁们都需要了解一些“mysqlgithub”的相关知识。那么小编在网络上汇集了一些有关“mysqlgithub””的相关资讯,希望小伙伴们能喜欢,我们快快来了解一下吧!

《GitHub精选》是我们分享Github中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个基于 Go 写的高颜值、开源 SQL 审核平台,Yearning 面向中小型企业的轻量级MySQL SQL语句审核平台.提供查询审计,SQL审核等多种功能。

主要功能

1.SQL 查询

查询工单导出自动补全,智能提示查询语句审计查询结果脱敏

2.SQL 审核

流程化工单SQL语句语法检测根据规则检测SQL语句合规性自动生成DDL/DML回滚语句历史审核记录

3.推送

E-mail 工单推送钉钉 webhook 机器人工单推送

4.用户权限及管理

角色划分基于用户的细粒度权限注册

5.其他

todoListLDAP 登录动态审核规则配置自定义审核层级

6.AutoTask 自动执行

Yearning权限设计

Yearning中用户先以角色的形式分为三大类,分别为 提交人/操作人/超级管理员。其中超级管理员角色为可见管理页面角色, 提交人/操作人为非可见管理页面角色。通过角色Yearning在细粒度权限划分之前先将用户分类。使管理类权限不会出现在使用者细粒度权限划分中

可根据每个用户的实际需求配置相应ddl/dml/查询数据源。每一类权限相互独立互不干扰。

1.权限种类

在Yearning中权限共分为2大类

角色权限细粒度权限

角色权限: 提交人/操作人/超级管理员 该权限主要用来划定各用户权限边界并规定功能入口

细粒度权限: DML/DDL/查询的数据源访问权限,查询上级审核人

2.设置用户权限

1.超级管理员可在权限组页面创建相应权限组,并赋予权限组相关权限。

2.超级管理员在用户权限页面中选择用户并赋予权限(单个用户可授予多个权限组且当权限组权限重复时自动去重)

使用准备

在正式使用Yearning前,你需要先设置如下setup(请务必花几分钟时间阅读!)。

创建用户并确认其角色创建权限组并将权限组赋予给对应的用户添加数据源信息为数据源创建自定义审核规则在设置页面配置各项配置信息根据需求调整自定义审核规则

1.创建用户

在Yearning中用户可以通过以下方式创建:

管理->用户 页面admin用户自行创建用户。打开 管理->设置 页面中的允许注册配置并保存。 由注册人自行点击yearning登录页面左上角注册按钮进行注册。配置 管理->设置 页面中的Ldap的信息并保存。 ldap用户可在yearning登录页面中勾选ldap登录进行用户注册/登录操作。

2.角色

Yearning的用户角色分别为:提交人,操作人,超级管理员(仅admin用户) 三类。

提交人: 仅拥有提交的工单,查询的功能

操作人: 在提交人权限的基础上,拥有审核/执行工单的功能

超级管理员: 在前两者的权限基础上,拥有平台管理/配置/审核规则设置等管理员权限。

注意: 角色是粗粒度的,其目的是为了划分出多个不同属性的用户群从而对不同的用户展示处不同的前端页面导航信息。而更细粒度的权限(例如:允许用户查询哪个数据源,允许用户提交哪个数据源的工单)则通过权限组来进行赋权。

对于除了admin用户以外的所有用户,在创建账号时(通过注册/ldap登录)统一为提交人角色。如需更改角色应由admin用户通过 管理->用户 页面进行更改。

3.创建权限组并将权限组赋予给对应的用户

通过管理->权限组 页面,admin可以创建/编辑/删除权限组。权限组提供了多种细粒度的权限管控(yearning目前权限管控仅下沉到数据源级别)如下所示:

允许DDL工单提交的数据源范围允许DML工单提交的数据源范围允许查询工单提交的数据源范围查询的上级审核人范围

创建完权限组后请通过管理->用户页面,选择你需要赋予权限组的用户点击该用户对应的权限按钮进行权限组赋权。

一个用户可以被赋予多个权限组,多权限组下该用户会集成2个权限组的全部权限

一个权限组也可以对多个用户进行赋权

如何使用初始化Yearning启动juno(可以通过-p 指定端口 默认端口为50001)填写conf.toml内GrpcAddr参数(默认127.0.0.1:50001)进行调试

注意:

juno与Yearning 必须共用同一个数据库且共用同一份配置文件(如juno与Yearning不在同一台主机,则需拷贝一份cofnig.toml文件与juno放在同级目录。且Yearning项目内的config.toml文件中GrpcAddr配置项填写为juno所在主机的ip及端口)

由于当前juno仅只有linux版本,建议基于mac/windows平台开发的开发者使用docker启动juno。

GITHUB:

标签: #mysqlgithub