介绍
随着 Devops 概念的普及,越来越多的事情都在往自动化方向发展。目前 Devops 可以使用的各类工具非常丰富,包括打包工具 Maven,代码扫描工具 Sonar,部署工具 Docker 等。本文将介绍一个新的可以集成到 Devops 工具链中的应用 SQLE,这个工具弥补了 Devops 中对 SQL 的合规性审核功能。
1.1、基础环境介绍
工具类型 | 工具名称 |
---|---|
操作系统 | Centos |
代码仓库 | gitlab |
Devops工具 | gitlab-runner |
sql审核工具 | sqle |
1.2、预期效果
在代码提交时自动触发sql的审核任务,并将扫描结果上传。
二、安装配置
2.1、各工具安装方式
gitlab:https://gitlab.cn/install/
gitlab-runner:https://docs.gitlab.com/runner/install/
sqle:https://actiontech.github.io/sqle-docs/docs/quick-usage
本次主要目的不在各种环境的安装,建议参考以上各官方文档进行安装
2.2、sqle中创建扫描任务
创建完成后我们可以看到这个任务,复制一下里面的访问凭证,后续需要使用这个访问凭证配置我们的cicd,之后我们的扫描结果将会可以在这个任务中查看。
2.3、自动化配置
2.3.1、首先需要在项目中,创建一个.gitliab-ci文件,这个文件是git触发gitlab-runner的入口,所有流水线任务均在此文件配置。
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就是上一步中的访问凭证
[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、cicd环境变量配置
cicd执行过程中需要使用scp以及ssh,传输文件调用扫描命令,我们需要给服务器配置证书登录。配置证书登录方式自行查找,这里就说一下在哪里添加变量。
2.3.2、完成
完成以上操作后,就可以在每次提交代码之后,看到对应的sql扫描记录。可以根据扫描情况,确定是否通过审核,是否可以上线。
三、总结
sqle的出现为Devops工具链又出了一个很好的工具,避免了一些sql上的性能问题,可以提前识别风险,改善风险,降低上线问题出现的概率。希望sqle以后越来越好
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。