SQLE+GitLab-Runner 快速实现 SQL 自动审核

介绍

随着 Devops 概念的普及,越来越多的事情都在往自动化方向发展。目前 Devops 可以使用的各类工具非常丰富,包括打包工具 Maven,代码扫描工具 Sonar,部署工具 Docker 等。本文将介绍一个新的可以集成到 Devops 工具链中的应用 SQLE,这个工具弥补了 Devops 中对 SQL 的合规性审核功能。

1.1 基础环境介绍

工具类型 工具名称
操作系统 CentOS
代码仓库 GitLab
Devops工具 GitLab-Runner
SQL 审核工具 SQLE

1.2 预期效果

在代码提交时自动触发 SQL 的审核任务,并将扫描结果上传。

安装配置

2.1 各工具安装方式

本次主要目的不在各种环境的安装,建议参考以下各官方文档进行安装。

2.2 SQLE 中创建扫描任务

创建完成后我们可以看到这个任务,复制一下里面的访问凭证,后续需要使用这个访问凭证配置我们的 CI/CD,之后我们的扫描结果将会可以在这个任务中查看。

2.3 自动化配置

2.3.1 配置文件

首先需要在项目中,创建一个 .gitliab-ci 文件。这个文件是 Git 触发 GitLab-Runner 的入口,所有流水线任务均在此文件配置。

yaml 复制代码
stages: 
  - sqle

# SQLE 执行扫描
master-deploy:
  image: ubuntu:20.04-ssh
  stage: sqle
  before_script:
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY"
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  script:
    - scp -r ../rbac centos@IP:/opt/code/
    - ssh centos@IP "cd /opt/code/ && scannerd mybatis -D /opt/code/rbac/src/main/resources/ -N auto --token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJhdXRvIiwiZXhwIjoxNzI5ODQxODg3LCJpc3MiOiJhY3Rpb250ZWNoIGRtcyIsInVpZCI6IjcwMDIwMCJ9.XBVBlVPGFDp-Isu39pBKgVDpYkr_PKJ-KavbnIB55yI -P 10001"
  only:
    - master
  tags:
    - gitlab-runner

注意:替换 IP

2.3.2 配置简要说明

通过一个 ubuntu:20.04-ssh 容器,将代码上传到我们 SQLE 所在服务器,并执行 SQLE 扫描。

scannerd 是 SQLE 自带的扫描客户端,使用方法如下,其中的 Token 就是上一步中的访问凭证。

bash 复制代码
[root@sqle-server bin]# ./scannerd mybatis --help
Parse MyBatis XML file

Usage:
  SQLE mybatis [flags]

Flags:
  -D, --dir string         xml directory
  -h, --help               help for mybatis
  -S, --skip-error-query   skip the statement that the scanner failed to parse from within the xml file

Global Flags:
  -H, --host string    sqle host (default "127.0.0.1")
  -N, --name string    audit plan name
  -P, --port string    sqle port (default "10000")
  -A, --token string   sqle token
  • only:表示 GitLab 中的分支
  • tag:表示 GitLab-Runner 的 tag

2.3.3 CI/CD 环境变量配置

CI/CD 执行过程中需要使用 scp 以及 ssh 传输文件调用扫描命令,我们需要给服务器配置证书登录。配置证书登录方式自行查找,这里就说一下在哪里添加变量。

2.3.2 完成

完成以上操作后,就可以在每次提交代码之后,看到对应的 SQL 扫描记录。可以根据扫描情况,确定是否通过审核,是否可以上线。

总结

SQLE 的出现为 Devops 工具链又出了一个很好的工具,避免了一些 SQL 上的性能问题,可以提前识别风险,改善风险,降低上线问题出现的概率。希望 SQLE 以后越来越好!

更多技术文章,请访问:opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

相关推荐
Cengineering1 分钟前
sqlalchemy 加速数据库操作
数据库
Cikiss23 分钟前
微服务实战——平台属性
java·数据库·后端·微服务
小小不董36 分钟前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba
无敌少年小旋风1 小时前
MySQL 内部优化特性:索引下推
数据库·mysql
柒小毓1 小时前
将excel导入SQL数据库
数据库
bug菌¹1 小时前
滚雪球学Oracle[2.5讲]:数据库初始化配置
数据库·oracle·数据库初始化·初始化配置
一休哥助手1 小时前
Redis 五种数据类型及底层数据结构详解
数据结构·数据库·redis
翔云1234562 小时前
MVCC(多版本并发控制)
数据库·mysql
代码敲上天.2 小时前
数据库语句优化
android·数据库·adb
盒马盒马2 小时前
Redis:zset类型
数据库·redis