23

DevOps模式下的代码自动化安全检测实践

 3 years ago
source link: https://www.secrss.com/articles/24165
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

什么是DevOps?

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

为什么需要引入自动化代码扫描?

目前,安全防护只是特定团队的责任,一般是在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时,这样做没什么问题;但是随着现在项目迭代周期的加快,这种做法已经行不通了。采用 DevOps 可以有效推进快速频繁的开发周期(有时全程只有数周或数天),但是过时的安全措施则可能会拖累整个流程,即使最高效的 DevOps 计划也可能会放慢速度。

如何引入代码自动化扫描平台?

DevOps流程图分为计划、编码、构建、测试、发布、部署、运营、监控阶段,具体实现是在项目测试到部署阶段引入代码自动化扫描。

67jIrmE.jpg!web

以下使用Jekins+git+mysql+sonarqube为例实现全自动代码扫描。

Jenkins安装

1.官网下载jenkins.war安装包

2.通过命令方式启动:java -jar jenkins.war --httpPort=9090

3.启动完成后记录生成的密码

4.访问http://localhost:8080/,进行插件安装

5.启动页面

aYVfamj.jpg!web

mysql安装

首先官网下载相应版本,然后解压到相应目录下,首先path添加mysql的bin目录

对mysql进行配置初始化,路径端口如需更改需自行调整

CMD控制台(管理员)进入bin目录,进行初始化mysqld --initialize --user=mysql --console,成功后记录下控制台输出的初始密码Q(6aH.?.wiqo(后续可修改),用来登录

CMD控制台(管理员)进入bin目录,安装mysqld –install

启动服务net start mysql

连接mysql数据库,并且建立sonar的数据库和用户

<code>CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;</code><code>CREATE USER "sonar" IDENTIFIED BY "password";</code><code>GRANT ALL ON sonar.* TO "sonar"@"%" IDENTIFIED BY "password";</code><code>GRANT ALL ON sonar.* TO "sonar"@"localhost" IDENTIFIED BY "password";</code><code>FLUSHPRIVILEGES;</code>

sonarqube安装

修改sonar配置,\conf下sonar.properties中MySQL中配置,用户名和密码需要与设置保持一致

<code>sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false</code><code> sonar.jdbc.username=root</code><code> sonar.jdbc.password=sonar123</code><code> sonar.sorceEncoding=UTF-8</code><code> sonar.login=sonar</code><code> sonar.password=sonar</code>

进入sonar目录E:\sonarqube-7.6\bin\windows-x86-64,通过StartSonar.bat初始化并启动sonar,完成后访问http://localhost:9000/,初始密码admin/admin

启动后的sonar页面

3aauayr.jpg!web

持续集成

上面我们安装好了mysql、jenkins、sonarQube,现在进行持续集成

1.jenkins配置jdk和SonarQube Scanner

M3mmquR.jpg!web

R3eMBnN.jpg!web 在sonar中生成令牌

bAr2mim.jpg!web 2.新建item,并进行配置(本例中使用得是github上的代码库)

6J7ZJv7.jpg!web

3.构建配置

jYRfMjf.jpg!web 4.点击构建可以看到构建正在进行

V7b6beU.jpg!web

5.控制台可以看到详细信息

aMf6Zr3.jpg!web

6.运行成功后可以在sonar上看到扫描结果

qqEzm2a.jpg!web

到此全部结束,这样在项目部署到环境上进行测试时,就可以同步检测代码相关漏洞情况。

杜元飞,从业7年,注册信息安全专业人员,对代码审计、渗透测试有丰富经验。 作者邮箱:[email protected],欢迎大家提出宝贵的建议!

声明:本文来自网安前哨,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 [email protected]


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK