一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述SQL审核平台 Archery 之使用进阶二相关的知识,希望能为你提供帮助。
一、系统配置?
系统配置是 系统管理里面二个重点配置项之一,是整个 Archery 的核心部分,是关系到 Archery 平台是否能够正常的走完一个 SQL审批流程的最基本保证。系统配置设置不对,审批流程就无从 "
走起 "
,所以,对系统配置要要比较深刻的认识。
?
系统配置里面包括以下几个部分 --- Inception配置、功能模块配置、通知配置、其他配置,下面一一简单说明下。
1、Inception配置
文章图片
1)Inception
- 去哪儿网团队开发的一个集审核、执行、备份及生成回滚语句与一身的 mysql 运维工具(审核引擎)
- 开发语言C/C++ ,目前只支持C/C++接口、python接口,在 Mysql 源码的基础上改造过的
- 由于某些原因,此项目已经长久不更新并且不再开源了,因此很多人把目光转向了 Goincepion
- 一个集审核、执行、备份及生成回滚语句与一身的Mysql运维工具,基于自定义规则的审核结果
- Goinception 是基于 TiDB 的语法解析器,是和 Inception 审核工具的重构,是完全开源免费的
- 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
- 如果选择使用 Inception ,则在截图中对应的 第一行、第四行、第五行进行相关操作 --- 第一行打开按钮开关显示为 "
ON "
,"
INCEPTION_HOST"
和 "
INCEPTION_PORT"
分别填写中系统里面对应的 Docker 镜像名和端口即可,这里分别填写 "
inception"
、"
6669"
,在 LINUX终端里面通过命令 "
docker ps "
查看
- 配置备份
- 这里填写的是Archery平台共用的数据库地址,当然也可以选择其他数据库。填写自身的数据库的话,不用去另外设置访问和使用权限了,填写别的数据库注意授权操作。
- 数据库账号密码 " root " / " 123456 " 是系统默认的,也可以更改 (个人觉得没有必要,比较只有管理员才能够权限进行系统配置的),如果不知道,查看容器 archery 里面的 config.toml 文件,里面对数据库备份操作的相关定义,配置文件路径为 /opt/archery/src/docker-compose/inception 。
- 要使用数据库的上线备份功能,还有开启这个功能,具体位置中下一个 " 配置块" --- " SQL上线" 里面,开启第三行的 " ENABLE_BACKUP_SWITCH" 启用备份功能
文章图片
5)SQL申请提交测试 使用账号 testuser001 、testuser002 、testuser003 分别进行SQL上线申请、SQL上线审核、SQL上线执行操作
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
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)
文章图片
1)SQL上线
文章图片
" SQL上线 " 这里涉及四小块,下面分别说明
- 第一块 --- 使用正则表达式相关语句的提交通过的设置,一般很少使用
- 第二块 --- " ENABLE_BACKUP_SWITCH " ,这个是是否开启对上线SQL的备份功能,上没有介绍这里不再赘述了
- 第三块 ---关于开启自动审批相关的,感觉这个功能比较 " 鸡肋" 吧,审批流程的重点就是让别人去审核并决定是否通过并且执行提交的SQL语句,如果自动审批,可能是在语法放面可以 " 把关" ,但是在其他方面不能够进行把控
- 第四块 --- 开启SQL上线手动确认,开启之后,我们走个申请流程看看
文章图片
文章图片
文章图片
文章图片
文章图片
? 可以看到,开启这个对应SQL审核提交人和中间的审核人是没有影响的,就是到了最后的审批执行人,在操作界面这里多了一个手动执行的按钮,下面用两副截图对三个按钮 (立即执行、手动执行、定时执行) 进行一个说明吧。
文章图片
文章图片
2) SQL查询
文章图片
3)SQL优化? 关于 SQL查询 和 SQL优化 相关的设置
- SQL查询包括 开启脱敏、使用 * 号匹配符、设置超时时间、管理员权限限制这四个方面
- SQL优化是关于是否使用 SQLADVISOR 、SOAR 进行SQL优化的设置
3、通知配置? 通知配置指的是让SQL上线申请提交这个流程,通过第三方的工具,实现在SQL提交之后,后面的审批和执行流程的整个动作,由这些工具去实现智能通知的功能,然后经由第三方工具的界面直接跳转到Archery的操作界面里面,直接进行对SQL审核的审批或者执行动作。
? Archery平台集成了下面第三方工具 ---邮件、钉钉、企业微信、飞书等。
? 结合公司的情况,我们采用 DingDing 来实现这个功能。具体在前面的 Archery & & DingDing 一文中有具体的说明和介绍,这里就不再再次说明了。
文章图片
4、其他配置 " 其他配置" 一共七项 --- " INDEX_PATH_URL" 、" BINLOG2SQL" 、" DEFAULT_AUTHGROUP" 、 " DEFAULT RESOURCE_GROUP" 、" LOCK_TIME_THRESHOLD" 、" LOCK_CNT_THRESHOLD" 、" SIGN_UP_ENABLED "
- 第一行,是关于系统首页路径设置和更改的,一般不会使用到此项设置。
- 第二行,实关于 BINLOG2SQL 调用户相关的,此能够基本也不会应用到。
- 第三、四行是关于资源组、权限组和用户进行关联的操作,一般也不需要特别设置。
- 第五、六行是设置账号登录失败的进行锁定的操作的,登录失败一定次数后自动锁定自定义的时间,个人感觉,这个功能稍微有点用。
- 第七行,是关于是否让没有账号的人自动注册申请用户账号。这个不建议开启,第一原因是每个申请的话用户名称可能不统一,不方便后面管理。第二个是申请账号的时候不知道关联到哪些组。第三个原因是做了精确权限管理后,普通账号根本就没有申请权限。所以在账号那一块,还是由管理员来创建。
文章图片
二、同类其他软件介绍 1、YearingSQL 审核平台
- Yearning SQL 审计平台 基于 Vue.js 与 Django 的整套 Msql-Sql 审核平台解决方案
- Yearning SQL 审计平台 基于Inception 的SQL检测及执行
- Yearning SQL 审计平台 只能够支持 Mysql数据库 进行Sql 提交、审批和执行的操作
文章图片
文章图片
推荐阅读
- 静态模型一键动态化,教你如何集成动作捕捉能力
- (服务注册)
- 2022年区块链影响最大的四个行业
- CentOS Linux 8生命周期结束
- 管理数百个Kubernetes集群需要什么()
- 教你如何在 AlertManager 报警通知中展示监控图表
- k8s系列-07-kubespray方案基础环境准备
- 云原生改造到底有多难
- Manjaro gnome安装搜狗输入法