SQL审核平台 Archery 之使用进阶二

一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述SQL审核平台 Archery 之使用进阶二相关的知识,希望能为你提供帮助。
一、系统配置?    系统配置是 系统管理里面二个重点配置项之一,是整个 Archery 的核心部分,是关系到 Archery 平台是否能够正常的走完一个 SQL审批流程的最基本保证。系统配置设置不对,审批流程就无从 " 走起 " ,所以,对系统配置要要比较深刻的认识。
?    系统配置里面包括以下几个部分 --- Inception配置、功能模块配置、通知配置、其他配置,下面一一简单说明下。
1、Inception配置

SQL审核平台 Archery 之使用进阶二

文章图片

1)Inception
  • 去哪儿网团队开发的一个集审核、执行、备份及生成回滚语句与一身的 mysql 运维工具(审核引擎)
  • 开发语言C/C++ ,目前只支持C/C++接口、python接口,在 Mysql 源码的基础上改造过的
  • 由于某些原因,此项目已经长久不更新并且不再开源了,因此很多人把目光转向了 Goincepion
2)Goinception
  • 一个集审核、执行、备份及生成回滚语句与一身的Mysql运维工具,基于自定义规则的审核结果
  • Goinception 是基于 TiDB 的语法解析器,是和 Inception 审核工具的重构,是完全开源免费的
3)使用说明
  • Archery 默认集成了 Inception 和 Goinception 两个工具,使用哪一个都可以,第一行有 " 选择开关"
  • 系统有提示(截图中红色小字),默认 Inception 由于脱敏解析 ,Goinception 由于进行SQL的审核执行
  • Archery平台在刚部署安装好之后,两个必须选择一个并填写上相关的信息
    • 如果选择使用 Inception ,则在截图中对应的 第一行、第四行、第五行进行相关操作 --- 第一行打开按钮开关显示为 " ON " ," INCEPTION_HOST" 和 " INCEPTION_PORT" 分别填写中系统里面对应的 Docker 镜像名和端口即可,这里分别填写 " inception" 、" 6669" ,在 LINUX终端里面通过命令 " docker ps " 查看
    • 同样的道理,如果选择使用 Goinception ,则在第二行、第三行 分别填写 " goinception" 、" 4000"
    • 根据 Archery的系统提示,考虑到 inception 的具体情况,还是建议根据系统提示来,选择使用 Goinception
4)Mysql 备份功能
  • 配置备份
    • 这里填写的是Archery平台共用的数据库地址,当然也可以选择其他数据库。填写自身的数据库的话,不用去另外设置访问和使用权限了,填写别的数据库注意授权操作。
    • 数据库账号密码 " root " / " 123456 " 是系统默认的,也可以更改 (个人觉得没有必要,比较只有管理员才能够权限进行系统配置的),如果不知道,查看容器 archery 里面的 config.toml 文件,里面对数据库备份操作的相关定义,配置文件路径为 /opt/archery/src/docker-compose/inception 。
    • 要使用数据库的上线备份功能,还有开启这个功能,具体位置中下一个 " 配置块" --- " SQL上线" 里面,开启第三行的 " ENABLE_BACKUP_SWITCH" 启用备份功能
SQL审核平台 Archery 之使用进阶二

文章图片

5)SQL申请提交测试    使用账号 testuser001 、testuser002 、testuser003 分别进行SQL上线申请、SQL上线审核、SQL上线执行操作
SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

6)查看数据库
  • 查看 SQL上线正常是否
    查看数据库实例129 下面的test1290 数据库的 info 表
    mysql> use test1290; Database changed mysql> show tables; +--------------------+ | Tables_in_test1290 | +--------------------+ | info| +--------------------+ 1 row in set (0.00 sec)mysql> select * from info; +------+---------+------+---------+ | id| name| age| address | +------+---------+------+---------+ |11 | LAOWANG |20 | CHINA| |12 | TOM|20 | USA| +------+---------+------+---------+ 2 rows in set (0.00 sec)

  • 查看备份情况
    查看备份数据库,Archery所在的数据库
    [root@test238 ~]# docker ps | grep mysql fe0dbd6fa742mysql:5.7"docker-entrypoint.s…"2 days agoUp 44 hours0.0.0.0:3306-> 3306/tcp, 33060/tcpmysql[root@test238 ~]# docker exec -it fe bash root@fe0dbd6fa742:/# mysql -uroot -p123456mysql> show databases; +--------------------------+ | Database| +--------------------------+ | information_schema| | 10_6_2_129_3306_test1290 | | archery| | inception| | mysql| | performance_schema| | sys| +--------------------------+ 7 rows in set (0.00 sec)mysql> use 10_6_2_129_3306_test1290; mysql> show tables; +------------------------------------+ | Tables_in_10_6_2_129_3306_test1290 | +------------------------------------+ | $_$inception_backup_information$_$ | | info| +------------------------------------+ 2 rows in set (0.00 sec)mysql> select * from $_$inception_backup_information$_$; +-------------------------+-------------------+------------------+------------------+----------------+-----------------------------------------------------------------------+------------+----------+-----------+------+---------------------+--------+ | opid_time| start_binlog_file | start_binlog_pos | end_binlog_file| end_binlog_pos | sql_statement| host| dbname| tablename | port | time| type| +-------------------------+-------------------+------------------+------------------+----------------+-----------------------------------------------------------------------+------------+----------+-----------+------+---------------------+--------+ | 1645413284_162_00000001 | mysql-bin.000001|3561 | mysql-bin.000001 |3844 | insert into info (id,name,age,address) values(99,\\"OKOK\\",50,\\"USA\\") | 10.6.2.129 | test1290 | info| 3306 | 2022-02-21 11:14:44 | INSERT | | 1645424594_172_00000001 | mysql-bin.000001|3844 | mysql-bin.000001 |4126 | insert into info (id,name,age,address) values(444,\\"YOYO\\",40,\\"JP\\") | 10.6.2.129 | test1290 | info| 3306 | 2022-02-21 14:23:14 | INSERT | | 1645588761_231_00000001 | mysql-bin.000001|4845 | mysql-bin.000001 |5127 | insert into info (id,name,age,address) values(12,\\"TOM\\",20,\\"USA\\")| 10.6.2.129 | test1290 | info| 3306 | 2022-02-23 11:59:21 | INSERT | +-------------------------+-------------------+------------------+------------------+----------------+-----------------------------------------------------------------------+------------+----------+-----------+------+---------------------+--------+ 3 rows in set (0.00 sec)# 上面的第三条,就是刚才的SQL上线的内容。换一种形式查看,就比较清晰明了了。 mysql> select * from $_$inception_backup_information$_$\\G; *************************** 1. row *************************** opid_time: 1645413284_162_00000001 start_binlog_file: mysql-bin.000001 start_binlog_pos: 3561 end_binlog_file: mysql-bin.000001 end_binlog_pos: 3844 sql_statement: insert into info (id,name,age,address) values(99,\\"OKOK\\",50,\\"USA\\") host: 10.6.2.129 dbname: test1290 tablename: info port: 3306 time: 2022-02-21 11:14:44 type: INSERT *************************** 2. row *************************** opid_time: 1645424594_172_00000001 start_binlog_file: mysql-bin.000001 start_binlog_pos: 3844 end_binlog_file: mysql-bin.000001 end_binlog_pos: 4126 sql_statement: insert into info (id,name,age,address) values(444,\\"YOYO\\",40,\\"JP\\") host: 10.6.2.129 dbname: test1290 tablename: info port: 3306 time: 2022-02-21 14:23:14 type: INSERT *************************** 3. row *************************** opid_time: 1645588761_231_00000001 start_binlog_file: mysql-bin.000001 start_binlog_pos: 4845 end_binlog_file: mysql-bin.000001 end_binlog_pos: 5127 sql_statement: insert into info (id,name,age,address) values(12,\\"TOM\\",20,\\"USA\\") host: 10.6.2.129 dbname: test1290 tablename: info port: 3306 time: 2022-02-23 11:59:21 type: INSERT 3 rows in set (0.00 sec)

2、功能模块配置    这个区域主要要三块 --- SQL 上线 、SQL查询 、SQL优化,下面一一进行说明.
SQL审核平台 Archery 之使用进阶二

文章图片

1)SQL上线
SQL审核平台 Archery 之使用进阶二

文章图片

  " SQL上线 " 这里涉及四小块,下面分别说明
  • 第一块 --- 使用正则表达式相关语句的提交通过的设置,一般很少使用
  • 第二块 --- " ENABLE_BACKUP_SWITCH " ,这个是是否开启对上线SQL的备份功能,上没有介绍这里不再赘述了
  • 第三块 ---关于开启自动审批相关的,感觉这个功能比较 " 鸡肋" 吧,审批流程的重点就是让别人去审核并决定是否通过并且执行提交的SQL语句,如果自动审批,可能是在语法放面可以 " 把关" ,但是在其他方面不能够进行把控
  • 第四块 --- 开启SQL上线手动确认,开启之后,我们走个申请流程看看
SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

?    可以看到,开启这个对应SQL审核提交人和中间的审核人是没有影响的,就是到了最后的审批执行人,在操作界面这里多了一个手动执行的按钮,下面用两副截图对三个按钮 (立即执行、手动执行、定时执行) 进行一个说明吧。
SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片

2) SQL查询
SQL审核平台 Archery 之使用进阶二

文章图片

3)SQL优化?    关于 SQL查询 和 SQL优化 相关的设置
  • SQL查询包括 开启脱敏、使用 * 号匹配符、设置超时时间、管理员权限限制这四个方面
  • SQL优化是关于是否使用 SQLADVISOR 、SOAR 进行SQL优化的设置
    由于 Archery平台最主要的功能是进行SQL上线的提交和后面的审批,因此这两个功能一般很少使用,笔者这里也没有去做更多的研究说明
3、通知配置?    通知配置指的是让SQL上线申请提交这个流程,通过第三方的工具,实现在SQL提交之后,后面的审批和执行流程的整个动作,由这些工具去实现智能通知的功能,然后经由第三方工具的界面直接跳转到Archery的操作界面里面,直接进行对SQL审核的审批或者执行动作。
 
?    Archery平台集成了下面第三方工具 ---邮件、钉钉、企业微信、飞书等。
?    结合公司的情况,我们采用 DingDing 来实现这个功能。具体在前面的 Archery & & DingDing 一文中有具体的说明和介绍,这里就不再再次说明了。
 
SQL审核平台 Archery 之使用进阶二

文章图片

4、其他配置    " 其他配置" 一共七项 --- " INDEX_PATH_URL" 、" BINLOG2SQL" 、" DEFAULT_AUTHGROUP" 、 " DEFAULT RESOURCE_GROUP" 、" LOCK_TIME_THRESHOLD" 、" LOCK_CNT_THRESHOLD" 、" SIGN_UP_ENABLED "
  • 第一行,是关于系统首页路径设置和更改的,一般不会使用到此项设置。
  • 第二行,实关于 BINLOG2SQL 调用户相关的,此能够基本也不会应用到。
  • 第三、四行是关于资源组、权限组和用户进行关联的操作,一般也不需要特别设置。
  • 第五、六行是设置账号登录失败的进行锁定的操作的,登录失败一定次数后自动锁定自定义的时间,个人感觉,这个功能稍微有点用。
  • 第七行,是关于是否让没有账号的人自动注册申请用户账号。这个不建议开启,第一原因是每个申请的话用户名称可能不统一,不方便后面管理。第二个是申请账号的时候不知道关联到哪些组。第三个原因是做了精确权限管理后,普通账号根本就没有申请权限。所以在账号那一块,还是由管理员来创建。
SQL审核平台 Archery 之使用进阶二

文章图片

二、同类其他软件介绍 1、YearingSQL 审核平台
  • Yearning SQL 审计平台 基于 Vue.js 与 Django 的整套 Msql-Sql 审核平台解决方案
  • Yearning SQL 审计平台 基于Inception 的SQL检测及执行
  • Yearning SQL 审计平台 只能够支持 Mysql数据库 进行Sql 提交、审批和执行的操作
2、YearingSQL 审核平台界面截图【SQL审核平台 Archery 之使用进阶二】
SQL审核平台 Archery 之使用进阶二

文章图片

SQL审核平台 Archery 之使用进阶二

文章图片


    推荐阅读