什么是DevOps?
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
为什么需要引入自动化代码扫描?
目前,安全防护只是特定团队的责任,一般是在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时,这样做没什么问题;但是随着现在项目迭代周期的加快,这种做法已经行不通了。采用 DevOps 可以有效推进快速频繁的开发周期(有时全程只有数周或数天),但是过时的安全措施则可能会拖累整个流程,即使最高效的 DevOps 计划也可能会放慢速度。
如何引入代码自动化扫描平台?
DevOps流程图分为计划、编码、构建、测试、发布、部署、运营、监控阶段,具体实现是在项目测试到部署阶段引入代码自动化扫描。
以下使用Jekins+git+mysql+sonarqube为例实现全自动代码扫描。
Jenkins安装
1.官网下载jenkins.war安装包
2.通过命令方式启动:java -jar jenkins.war --httpPort=9090
3.启动完成后记录生成的密码
4.访问http://localhost:8080/,进行插件安装
5.启动页面
mysql安装
首先官网下载相应版本,然后解压到相应目录下,首先path添加mysql的bin目录
对mysql进行配置初始化,路径端口如需更改需自行调整
CMD控制台(管理员)进入bin目录,进行初始化mysqld --initialize --user=mysql --console,成功后记录下控制台输出的初始密码Q(6aH.?.wiqo(后续可修改),用来登录
CMD控制台(管理员)进入bin目录,安装mysqld –install
启动服务net start mysql
连接mysql数据库,并且建立sonar的数据库和用户
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER "sonar" IDENTIFIED BY "password";
GRANT ALL ON sonar.* TO "sonar"@"%" IDENTIFIED BY "password";
GRANT ALL ON sonar.* TO "sonar"@"localhost" IDENTIFIED BY "password";
FLUSHPRIVILEGES;
sonarqube安装
修改sonar配置,\conf下sonar.properties中MySQL中配置,用户名和密码需要与设置保持一致
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=sonar123
sonar.sorceEncoding=UTF-8
sonar.login=sonar
sonar.password=sonar
进入sonar目录E:\sonarqube-7.6\bin\windows-x86-64,通过StartSonar.bat初始化并启动sonar,完成后访问http://localhost:9000/,初始密码admin/admin
启动后的sonar页面
持续集成
上面我们安装好了mysql、jenkins、sonarQube,现在进行持续集成
1.jenkins配置jdk和SonarQube Scanner
在sonar中生成令牌
2.新建item,并进行配置(本例中使用得是github上的代码库)
3.构建配置
4.点击构建可以看到构建正在进行
5.控制台可以看到详细信息
6.运行成功后可以在sonar上看到扫描结果
到此全部结束,这样在项目部署到环境上进行测试时,就可以同步检测代码相关漏洞情况。
杜元飞,从业7年,注册信息安全专业人员,对代码审计、渗透测试有丰富经验。作者邮箱:duyuanfei@cfca.com.cn,欢迎大家提出宝贵的建议!
声明:本文来自网安前哨,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。