• Yearning-SQL审核平台


    Yearning-SQL审核平台

    调研平台俩个

    archeryd-SQL审核查询平台

    https://archerydms.com/
    
    • 1

    yearning-SQL审核查询平台

    http://yearning.io/
    
    • 1

    Yearning 功能

    Yearning 拥有多项实用型功能。助力DBA提升工作自动化,标准化。

    img

    Yearning 拥有以下功能:
     自动化SQL语句审核,可对SQL进行自动检测并执行
     DDL/DML语句执行后自动生成回滚语句
     审核/查询 审计功能
     支持LDAP登录/钉钉及邮件消息推送
     支持自定义审核工作流
     支持细粒度权限分配
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    语法支持

    Yearning 目前兼容99%的Mysql 标准SQL语法。 但由于审核逻辑等因素的限制,对一些SQL语句并不能保证得到正确的反馈 已知不支持的语句类型有:

    复杂的查询语句(多表,多函数,非必现。并不是所有复杂语句不支持)
     外键相关语句
     不支持跨库DML语句的回滚
     存储过程/触发器
    仅代表当前语法支持进度,并不作为未来完成度.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    img

    主要功能

    SQL 查询
    查询工单
    导出
    自动补全,智能提示
    查询语句审计
    查询结果脱敏
    SQL 审核
    流程化工单
    SQL语句语法检测
    根据规则检测SQL语句合规性
    自动生成DDL/DML回滚语句
    历史审核记录
    推送
    E-mail 工单推送
    钉钉 webhook 机器人工单推送
    用户权限及管理
    角色划分
    基于用户的细粒度权限
    注册
    其他
    todoList
    LDAP 登录
    动态审核规则配置
    自定义审核层级
    AutoTask 自动执行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    Yearning 社区

    使用及部署遇到了些困惑?欢迎加入Yearning社区(QQ群) 363323798
    
    • 1
    操作文档
    https://next.yearning.io/guide/config/source.html
    
    • 1

    注意事项

    Yearning 不依赖于任何第三方 SQL 审核工具作为审核引擎,内部已自己实现审核/回滚相关逻辑。

    仅依赖 Mysql 数据库。

    mysql 版本必须为5.7及以上版本(8.0及以上请将sql_mode 设置为空)并已事先自行安装完毕且创建 Yearning 库,字符集应为 UTF8mb4 (仅 Yearning 所需 mysql 版本)

    Yearning 基于 1080p 分辨率开发仅支持 1080p 及以上显示器访问

    对于设置页面配置重叠的问题请确认自己的分辨率以及是否进行了放大操作

    请使用Chrome最新版本(不包括 360 等其他魔改版本)

    创建mysql数据库,设置字符集

    方法一:MySQL 命令
    # utf8 
    CREATE DATABASE  `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    • 1
    • 2
    # utf8mb4
    CREATE DATABASE  `Yearning` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    
    • 1
    • 2
    • 3

    进入mysql,输入 show variables like “%char%”; 查看当前数据库编码:

    image-20220630133025763

    方法二:修改/etc/my.cnf 文件
    [client]
    default-character-set = utf8mb4
    
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    
    [mysql]
    default-character-set = utf8mb4
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    然后,重启Mysql服务:

    `/etc/init.d/mysqld stop /etc/init.d/mysqld start`
    
    • 1

    Yearning 下载

    Yearning-go 提供二进制下载包

    下载地址 https://github.com/cookieY/Yearning/releases
    
    • 1

    image-20220630105148680

    请选择最新版本 在 Assets 中选择 Yearning-x.x.x.linux-amd64.zip 包进行下载

    如需进行代码修改或自己编译请移步至二次开发页面

    image-20220630110238697

    Yearning 目录结构

    image-20220630111518469

    1.填写配置文件

    image-20220630112806963

    cat conf.toml
    [Mysql]
    Db = "Yearning"
    Host = "127.0.0.1"
    Port = "3306"
    Password = "xxxx"
    User = "root"
    
    [General]   #数据库加解密key,只可更改一次。
    SecretKey = "dbcjqheupqjsuwsm"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    关于 SecretKey

    SecretKey 是 token/数据库密码加密/解密的 salt。
    
    建议所有用户在初次安装 Yearning 之前将 SecretKey 更改(不更改将存在安全风险)
    
    **格式: 大小写字母均可, 长度必须为 16 位 如长度不是16位将会导致无法新建数据源**
    
    **特别注意:**
    
    **此 key 仅可在初次安装时更改!之后不可再次更改!如再次更改会导致之前已存放的数据源密码无法解密,最终导致无法获取相关数据源信息**
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使用帮助

    ./Yearning --help
    
    • 1

    image-20220630112907859

    2.初始化及安装

    ./Yearning install
    
    • 1

    如要再次安装,请先把 yearning 库下所有表删除,否则重复执行无效
    image-20220630133343534

    初始化成功!
    初始化成功!
    用户名: admin
    密码:Yearning_admin
    请通过./Yearning run 运行,默认地址:http://<host>:8000
    
    • 1
    • 2
    • 3
    • 4

    3.启动服务

    默认启动

    ./Yearning run
    
    • 1

    参数启动

    ./Yearning run --push "172.27.80.35" -port "8000"
    
    root@192:/usr/local/Yearning# ./Yearning run --port "8008" #修改端口
    
    • 1
    • 2
    • 3

    image-20220630133759172

    image-20220630133818251

    打开浏览器 http://127.0.0.1:8000

    默认账号/密码:admin/Yearning_admin

    docker安装采用本地mysql数据库

    Yearning 是基于[Inception](https://so.csdn.net/so/search?q=Inception&spm=1001.2101.3001.7020)的web可视化SQL审核平台,其本身只提供可视化交互页面并不具备sql审核的能力。所以必须搭配Inception一起使用。 Inception 安装参考 [MySQL 审核工具 Inception](https://blog.csdn.net/kk185800961/article/details/84863216)
    • 1

    创建数据库

    CREATE DATABASE Yearning CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    grant all on Yearning.* to 'yearning'@'%' identified by 'sMHcsff32wUv38';
    
    • 1
    • 2

    MySQL里的表介绍:

    mysql> show tables;
    +----------------------------+
    | Tables_in_yearning         |
    +----------------------------+
    | core_accounts              |      # 保存用户信息
    | core_auto_tasks            |      # 自动任务
    | core_data_sources          |      # 数据源
    | core_global_configurations |      # 管理--设置详细信息
    | core_graineds              |      # 用户权限
    | core_query_orders          |      # 查询审计记录
    | core_query_records         |      # 查询审计旁边的详细记录
    | core_role_groups           |      # 权限组
    | core_rollbacks             |      # 回滚sql
    | core_sql_orders            |      # 工单审计记录
    | core_sql_records           |      # 工单审计旁边的详细记录
    | core_workflow_details      |		# 我的工单
    | core_workflow_tpls         |		# 流程模板
    +----------------------------+
    13 rows in set (0.01 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    启动

    方式一
    docker run -d   --name yearning   --restart always   -p 8000:8000   -e MYSQL_USER=yearning   -e MYSQL_ADDR=192.168.2.202:3306   -e MYSQL_PASSWORD=sMHcsff32wUv38   -e MYSQL_DB=Yearning   -e TZ="Asia/Shanghai"   test/yearning:latest
    
    • 1
    方式二
    docker run -d \
      --name yearning \
      --restart always \
      -p 8000:8000 \
      -e MYSQL_USER=yearning \
      -e MYSQL_ADDR=xxxxx:3306 \
      -e MYSQL_PASSWORD=sMHcsff32wUv38 \
      -e MYSQL_DB=Yearning \
      -e TZ="Asia/Shanghai" \
      test/yearning:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    默认密码:admin/Yearning_admin

    images镜像

    image-20220701164521415

    搭建完成

    image-20220701164603004

    docker-compose搭建yearningSQL审计平台

    准备工作

    1.关闭防火墙和selinux

    2.安装好docker

    安装docker-compose

    [root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    [root@localhost ~]# sudo chmod +x /usr/local/bin/docker-compose
    [root@localhost ~]# docker-compose version
    docker-compose version 1.27.1, build 509cfb99
    docker-py version: 4.3.1
    CPython version: 3.7.7
    OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建目录

    mkdir -p /data/docker/mysql/3306/data/db
    mkdir -p /data/docker/var/run/
    mkdir -p /data/docker/mysql/3306/data/conf
    touch /data/docker/var/run/mysql-3306.sock
    
    • 1
    • 2
    • 3
    • 4

    编写docker-compose.yaml文件

    image-20220701174841617

    root@debian:/yearning# docker images |grep yearning
    test/yearning                   latest    3bd14792c8f1   5 months ago    29.4MB
    
    • 1
    • 2
    version: '3.5'
    
    services:
      mysql:
        image: mysql:5.7
        container_name: yearning-mysql
        volumes:
          - /data/docker/mysql/3306/data/db:/var/lib/mysql/
          - /data/docker/var/run/mysql-3306.sock:/var/run/mysql.sock
          - /data/docker/mysql/3306/data/conf:/etc/mysql/conf.d
        ports:
          - 3306:3306
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: yearning
          MYSQL_USER: yearning
          MYSQL_PASSWORD: 123456
          TZ: Asia/Shanghai
        command:
          - --character-set-server=utf8mb4
          - --collation-server=utf8mb4_unicode_ci
    
      yearning:
        image: test/yearning:latest
        container_name: yearning-web
        environment:
          MYSQL_USER: yearning
          MYSQL_PASSWORD: 123456
          MYSQL_ADDR: mysql
          MYSQL_DB: yearning
        ports:
          - 8000:8000
        depends_on:
          - mysql
        restart: always
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    image-20220701175000032

    启动
    docker-compose up -d
    
    • 1

    image-20220701175039253

    访问

    image-20220701175106452

    账号:admin
    密码:Yearning_admin
    
    • 1
    • 2

    三、基本使用

    首先当然是登陆界面,登陆的默认账号密码在初始化的时候已经提示:用户名: admin密码:Yearning_admin。Yearning推荐使用Chrome浏览器。

    img

    服务更新

    Yearning采用自动表结构同步 无需手动更新表结构。只需停止原服务并替换安装包后重新启动即可

    在一些特殊的升级情况中(破坏性变更)需要手动进行数据同步操作.如在版本更新公告中并无提示破坏性升级则无视以下命令!

    ./Yearning migrate
    
    • 1
    进来后是首页

    首页中可以看到当前的用户数、数据源、工单数、查询数、个人信息、工单提交统计、高频库、以及工单趋势。

    image-20220630134519621

    历史的工单

    在我的工单界面可以看到历史的工单,执行状态,执行信息,是否备份等等。。

    image-20220630134922582

    DML审核

    DML相关SQL提交审核,SQL语法高亮/自动补全
    image-20220630140424684

    数据库管理

    添加/编辑/删除 数据源

    image-20220630140551705

    用户权限

    image-20220630140618449

    基础设置和进阶设置

    image-20220630140703320

    审核规则

    Yearning采用二级/多级的审核模式,可根据实际需求变更相关使用流程,执行人角色必须在开启多级审核之后才可指定(开启请前往设置页面),如果需要将多级审核改为二级审核,请先确保所有多级审核的工单都已确认执行。否则未执行工单将无法找回。当多级审核关闭后系统并不会自动将角色为执行人的用户重置角色,请自行重置相应用户角色

    二级审核流程:

    • 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单
    • 2.管理员收到消息后在审核工单页面审核该工单请求并执行/驳回 对应工单
    • 3.执行记录将会记录在该管理员用户下

    多级审核流程:

    • 1.使用人根据自己拥有的权限向对应的工单提交单元(DDL,DML)提交工单,
    • 2.管理员收到消息后在审核工单页面审核该工单请求并同意/驳回 对应工单并选择对应执行人(执行人必须是角色为执行人的用户)
    • 3.执行人收到工单后 执行/驳回该工单
    • 4.执行记录将会记录在该执行人用户下

    设置SQL检测规则

    image-20220630140739838

    使用流程

    打开管理-用户,先来创建提交人和审核人用户

    image-20220630141855658

    image-20220630141913328

    打开管理-数据库,添加要操作的数据库信息

    image-20220630142221937

    打开管理-权限组,勾选数据库

    image-20220630151113165

    打开管理-流程模板

    image-20220630151154561

    打开管理-审核规则,按照企业要求设定审核条件

    image-20220630151213455

    设置完毕需要给用户授权数据库

    image-20220630151234177

    三,用户提交工单

    用户使用管理员分配的用户名和密码登录

    image-20220630151254602

    工单提交

    image-20220630151309793

    image-20220630151318660

    image-20220630151331322

    查看已提交的工单并通知管理员进行审核

    image-20220630151348397

    管理理员用户收到工单并执行

    image-20220630151403326

    就可以查看到数据库中的表,建好了。

    image-20220630151415378

    yearning相关报错排查

    
    1-排查yearning-SQL审核问题
    
    
    遇到问题
    问题一:docker-compose启动的yearning,访问web出现登陆不上默认账号admin
    解决方法:查看docker容器 logs日志,报错没有配置对mysql数据库
    
    问题二:docker-compose启动的yearning,访问web出现登陆不上默认账号admin
    解决方法:docker-compose启动的mysql,访问连接不到,解决方法暂时更换成本地mysql数据库
    
    
    
    
    1-debian10安装非docker版本数据库
    2-授权本地mysql-yearning库,用户权限
    
    问题原因:
    问题-1:mysql启动完成,登陆mysql报错
    mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc
    解决方法:查找相关文档是缺少,依赖做软连接也不行,彻底解决  sudo apt install libncurses5
    
    
    问题-2:docker启动的yearning,登陆web账号没有报错,发现yearning版本有点低,缺少权限组管理,
    解决方法:更换yearning相关镜像,拉取不到,采取群里找yearning相关最新镜像,已经更换到v2.8版本左右
    
    问题-3:更换yearning-v2.8版本镜像,出现登陆web账号提示账号密码不正确
    解决方法:查看相关mysql表,没有插入相关账号权限字段,最后原因 创建yearning库 是区分大小写的Yearning
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    陆不上默认账号admin
    解决方法:docker-compose启动的mysql,访问连接不到,解决方法暂时更换成本地mysql数据库

    1-debian10安装非docker版本数据库
    2-授权本地mysql-yearning库,用户权限

    问题原因:
    问题-1:mysql启动完成,登陆mysql报错
    mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc
    解决方法:查找相关文档是缺少,依赖做软连接也不行,彻底解决 sudo apt install libncurses5

    问题-2:docker启动的yearning,登陆web账号没有报错,发现yearning版本有点低,缺少权限组管理,
    解决方法:更换yearning相关镜像,拉取不到,采取群里找yearning相关最新镜像,已经更换到v2.8版本左右

    问题-3:更换yearning-v2.8版本镜像,出现登陆web账号提示账号密码不正确
    解决方法:查看相关mysql表,没有插入相关账号权限字段,最后原因 创建yearning库 是区分大小写的Yearning

    
    
    • 1
  • 相关阅读:
    08.29xpath 和css选择器元素定位练习
    Open3D 点云分割之区域生长
    OS Audit file could not be created; failing after 6 retries
    arcgis搭建离线地图服务WMTS
    05.Django配置
    如何优化PlantUML流程图(时序图)
    A2L文件内容详细解析
    软件测试——功能性测试(1)
    人体神经元细胞模式图示,神经元细胞结构模式图
    自定义指令,获取焦点
  • 原文地址:https://blog.csdn.net/tianmingqing0806/article/details/125563433