编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2024-09-08 10:50:14 开源技术 9 ℃ 0 评论

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


主要功能

1.SQL 查询

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

2.SQL 审核

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

3.推送

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

4.用户权限及管理

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

5.其他

    • todoList
    • LDAP 登录
    • 动态审核规则配置
    • 自定义审核层级

6.AutoTask 自动执行

Yearning权限设计

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

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

1.权限种类

在Yearning中权限共分为2大类

  1. 角色权限
  2. 细粒度权限

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

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

2.设置用户权限

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

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

使用准备

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

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

1.创建用户

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

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

2.角色

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

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

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

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

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

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

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

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

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

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

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

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

如何使用

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

注意:

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

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

GITHUB:https://github.com/cookieY/Yearning

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表