GitLab SAST:如何将Klocwork与GitLab一起使用

GitLab SAST是GitLab和Klocwork的结合,GitLab是一种覆盖了整个DevOps生命周期的集成解决方案,Klocwork是一个静态代码分析和应用安全静态测试(SAST)工具。当将这两个工具一起使用时,可以为软件开发团队提供一个强大的GitLab SAST解决方案。这里,我们将阐明GitLab SAST的优势。

本文将包含如下几个部分:

  • GitLab是什么?
  • 为什么GitLab用户应该使用Klocwork
  • 如何使用GitLab和Klocwork
  • 如何设置GitLab SAST
  • GitLab SAST看起来怎么样

GitLab是什么?

GitLab是一个基于web的DevOps生命周期工具,它为wiki、问题跟踪和CI/CD Pipeline功能提供了一个Git存储库管理器。它由Gitlab Inc.开发,于2011年发布。

软件开发团队已经使用GitLab来统一开发人员的工作流程,并缩短DevOps周期时间——这使他们能够开发出更高质量的软件。

GitLab被来自各行各业的软件开发团队所使用,这些行业包括航空航天和国防、汽车、医疗设备以及视频游戏开发等。

为什么GitLab用户应该使用Klocwork

GitLab是一个流行的DevOps生命周期工具,因为它缩短了周期时间,降低了工程风险,帮助确保了应用程序更安全,并连接了缓冲器和工作台。因此,许多开发人员也使用像Klocwork这样的静态应用程序安全测试(SAST)工具来对GitLab进行补充是有道理的。

Klocwork如何对GitLab进行补充

Klocwork是一个静态代码分析和SAST工具,它被设计用来优化诸如CI/CD Pipeline之类的DevSecOps流程。

差异分析

通过使用来自服务器的系统上下文数据,Klocwork能够只分析已更改的文件,同时提供差异分析(Differential Analysis)结果,就像对整个系统进行了分析一样。这尽可能地缩短了您分析新代码和已更改代码的时间。

集成分析

通过使用来自服务器的系统上下文数据,Klocwork能够对您软件项目当前的健康状况进行快照。在每次集成分析(Integrated Analysis)之后,Klocwork会提供一个列表(列出检测到的编码问题),以及关于代码的其他报告。通过定期运行集成分析(Integrated Analysis),您能够提高代码的质量,确保代码库的一致性。

如何使用GitLab和Klocwork

由于Klocwork提供了一个命令行界面和灵活的工具来适应大多数工作流程,因此有很多方法可以将Klocwork的静态分析工具集成到像GitLab这样的持续集成系统中。这里列举的一个例子是如何使用开发人员的代码版本分支,将Klocwork集成到DevSecOps工作流程中。

 

上图设计的工作流程简单地展示了:开发人员如何创建各自的代码版本分支,以开发新的功能或解决已知的缺陷。一旦解决了新功能或bug,代码就会合并到主分支中,准备发布。

通过Klocwork的工具,您可以使用集成分析(Integration Analysis)工具在代码库中创建已知问题的基线。然后,这些结果通过web门户对所有人可见,并可以推迟到更晚的日期或被分配去修复。这个集成分析还提供了差异分析所用的完整的项目上下文和现有的问题数据。

有了差异分析(Differential Analysis),现在可以在服务器端检查开发人员是否提交了新的缺陷,并且如果代码版本分支被合并,是否会增加项目的技术债务。

然后,对其进行配置,可以通过GitLab向开发人员提供反馈:他们的提交包含了新的缺陷,因为他们新开发的代码不符合预设的质量检验标准(比如,无新的缺陷)。

如何设置GitLab SAST

下面是关于如何设置GitLab SAST的详细步骤说明:

1.安装GitLab

首先,您需要安装GitLab。如果您已经安装了,请跳到下一步。

安装GitLab:

  1. about.gitlab.com上点击安装GitLab
  2. 选择您喜欢的GitLab Omnibus包。
  3. 安装和配置必要的依赖项。
  4. 添加GitLab包存储库并安装该包。
  5. 浏览主机名并登录。
  6. 设置您的沟通偏好。
  7. 发布GitLab。

2. 安装Klocwork

接下来,您将下载Klocwork

如果您还没有使用Klocwork,您可以开始免费试用。

如果您已经是Klocwork的用户,请下载最新版本。

3. 配置GitLab运行脚本

运行脚本需要配置Klocwork分析将在哪里进行,可以通过ssh连接到现有的机器,也可以通过配置Klocwork的docker镜像来实现。

Klocwork为差异分析和集成分析提供了分析工具包,这意味着通过复制和解压缩工具包可以很容易地将其部署到机器上。

还应该为该运行脚本配置一个标记,以确定该运行脚本能够进行Klocwork分析,然后可以在工作步骤中使用该标记。在本文的这些示例中,已经使用了‘klocwork’标记。

4. Klocwork集成分析

集成分析提供了现有问题的基线、完整的项目上下文、web门户的健康状况概述以及趋势。它是Klocwork分析的主干,在这个例子中,我们将它配置为只在提交到主分支上运行,假定工作流程应该来自于提交触发。

为项目编辑“.gitlab-ci.yml” :

Klocwork服务器和相关项目的文件中引入变量可以简化配置。

集成分析(Integration Analysis)是基于命令行的,这里它被过滤了,只作为测试阶段的一部分在主分支上运行。使用的捕获、分析和加载流程与往常一样,但是有一个更改:使用提交引用作为Klocwork基线构建的名称。这在之后的差异分析中也会被用作参考。

5. Klocwork差异分析

随着集成分析的执行,而且项目中至少有一个可用的基线,现在不需要先前的本地分析数据就可以快速地对代码变更进行分析。

在项目的同一个yml文件中,还可以配置差异分析(Differential Analysis)。这一次在除了主分支(即任何开发人员的代码版本分支)之外的所有分支上运行,配置差异分析以运行Klocwork差异工具‘kwciagent’。所采取的步骤如下:

  1. 使用Klocwork的工具捕获构建数据。
  2. 生成一个文本文件,该文件应该包含这个提交中已更改文件的列表,不需要任何格式(每行一个文件)。显示的是一个git diff命令生成的示例,它需要引用diff,我们可以使用最后的基线构建名称。
  3. 使用‘kwciagent create’为Klocwork创建一个本地工作区。
  4. 运行分析,但是它被过滤只在更改的文件上运行,绕过作为参数的diff列表文本文件。
  5. 还可以为检测到的‘新’问题(如果有的话)创建一个工件,这里是创建一个xml。
  6. 通过检查工件的问题阈值,也可能导致CI运行失败。在这个例子中,如果存在任何新问题,就会导致CI运行失败。

GitLab SAST看起来怎么样

随着代码版本分支的创建和拉取请求的提交,您将可以获得分析运行的概况:

在上述的差异分析(Differential Analysis)中,请注意:由于与基线相关的代码引入了新的问题,运行被标记为失败。它还通过打勾和交叉显示:它在第二阶段失败了,这在当前的例子中意味着构建是成功的,但测试阶段失败了。

在拉取请求中,现在可以查看在开发功能分支中的构建测试过程是否成功,并提供关于合并的警告。

还请注意:在配置过程中,它被配置为存档diff结果文件和更改列表,可以从管道运行中下载。

GitLab SAST——完整的循环

随着拉取请求可以对合并显示警告,使得解决缺陷并重新提交成为了可能。GitLab将自动地对新的提交运行差异分析,并更新拉取请求的状态。

一旦合并到主分支中,一个完整的集成就会再次执行,以创建新的基线,捕获合并所做的更改,显示如下图。

开始使用GitLab SAST

今天就开始使用GitLab和Klocwork优化您的DevSecOps流程吧。

                                                                                                            “原创内容,转载请标明出处”

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Klocwork 介绍 Klocwork - 源代码缺陷自动分析工具概述:Klocwork 软件是 Klocwork 公司基于专利技术分析引擎开发的,综合应用了多种近年来 最先进的静态分析技术,是出色的软件静态分析软件。Klocwork 产品与其它同类产品相比, 具有很多突出的特征:Klocwork 支持的语言种类多,能够分析 C、C++和 Java 代码;能够发 现的软件缺陷种类全面,既包括软件质量缺陷,又包括安全漏洞方面的缺陷,还可以分析对软 件架构、编程规则的违反情况;软件分析功能全面,既能分析软件的缺陷,又能进行可视化的 架构分析、优化;能够分析软件的各种度量;能够提供与多种主流 IDE 开发环境的集成;能 够分析超大型软件(上千万代码行)。主要功能: 缺陷检测提供多角度的各种缺陷类型的分析。自动化的缺陷检测功能易于使用,定制灵活,具有图 形化的构建和报表管理图形界面,拥有业界领先的消息过滤器,极具柔性的配置,和强大的学 习调整知识库;Klocwork 能够分析 C/C++和 Java 代码,生成代码问题报告,能够发现的缺陷 类型举例。(详细参见附录): C/C++缺陷类型样例 空指针释放 内存管理问题(如:内存泄漏) 数组越界 未初始化数据使用 编码风格问题(如:在条件中赋值) Java 缺陷类型样例 效率错误(如:空的 finalize 方法) 可维护性问题(如:空的 catch 从句) 可靠性问题(如资源泄漏) 安全漏洞检测Klocwork 确信软件安全性是软件质量中一个重要的、并越来越受重视的方面。同样的, 所有的 Klocwork 安全漏洞分析是基于市场领先的缺陷检测能力,从原来的缺陷检测分离出来 单独的安全漏洞检测和违反推荐的安全代码最佳实践的缺陷检测。 能够检测到的安全漏洞类型 举例(详细参见附录) C/C++安全漏洞分类 访问控制缺陷 缓冲区溢出 DNS 欺骗 忽略返回值 注入缺陷 不安全的存储 未经验证的用户输入 Java 安全漏洞分类 拒绝服务 注入缺陷(如:SQL 注入、进程注入等) 未经验证的输入 移动代码安全 有漏洞的会话管理 跨站点脚本 出错处理不当

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值