💡 如何在流水线中集成与利用 SAST,实现自动化代码平安扫描?
近日,在「DevSecOps 软件平安开发实际」课程上,极狐 (GitLab) 高级业余服务交付工程师欧阳希、极狐(GitLab) 后端工程师黄松,分享了 动态平安扫描与破绽检测的 WHAT-WHY-HOW,并演示无缝连接极狐 GitLab 合并申请与议题性能,帮忙大家进一步把握 SAST 技术。
以下内容整顿自本次直播,你也能够点击👉观看视频回放或下载 PPT。Enjoy~
软件开发生命周期中,会遇到各种各样的平安问题。泛滥开发人员都在寻求一个自动化排查危险和破绽的工具,使其成为高质量软件研发的“好助手”。
极狐 GitLab 作为一体化平安 DevOps 平台,内置七大平安性能,无缝嵌入 CI/CD,实现平安自动检测,生成平安报告,联合破绽治理性能,造成欠缺的破绽追踪管理机制,最终利用发现问题、追踪问题、修复问题的闭环,来帮忙用户构建纵深进攻体系。
本次课程分享源代码扫描工具,包含 KICS 和 SAST 这两个笼罩不同层面的形式:
- KICS 扫描 :扫描 IaC(基础设施即代码) 源代码中的破绽与危险;
- SAST 扫描 :扫描 软件我的项目中源代码文件 引入的平安危险。
在极狐 GitLab 中,源代码平安扫描工作流如下图:
- 每次提交代码或变更时,触发流水线动态代码扫描;
- 扫描后果在 MR 中间接展现,并显示破绽级别(高、中、低等);
- 在 MR 中点击对应的安全漏洞就能够实现破绽追踪治理;
- 修复平安问题后再次提交代码,从新检测,审核通过后才能够合并到主分支。
上面,咱们别离开展 KICS 和 SAST 介绍。
KICS 保障基础设施即代码(IaC)平安
KICS 是什么?
KICS(Keeping Infrastructure as Code Secure)次要用来 在开发晚期发现 IaC(基础设施即代码)中的一些安全漏洞、合规问题以及谬误配置等。
极狐 GitLab CI/CD 内建了 KICS 模板,反对对代码仓库的 IaC(基础设施即代码)进行动态扫描。
KICS 应用条件
- 应用极狐 GitLab CI/CD;
- 应用极狐 GitLab Runner 并应用 K8s 或 Docker 的 Executor;
- 应用过程中零碎主动拉取平安扫描镜像。
KICS 扫描后果
- KICS 扫描动态代码源代码中蕴含的安全漏洞;
- 扫描后果将被保留在流水线产物 Job Artifect 中;
- 扫描后果进行分类,包含 Critical,High,Middle,Low 级别平安危险。
KICS 扫描领域
包含但不限于以下自动化工具:
- Ansible;
- Azure Resource Manager;
- CloudFormation;
- Dockerfile;
- Docker Compose;
- Kubernetes;
- OpenAPI;
- Google Deployment Manager;
- gRPC;
- Terraform。
如何配置 KICS?
应用极狐 GitLab CI/CD 配置 KICS IaC 平安扫描:
- 在寄存相干 IaC 代码的极狐 GitLab 仓库中增加 .gitlab-ci.yml 配置文件并增加 IaC 扫描模板,如下内容:
- 提交该变更,零碎主动触发 CI/CD 流水线进行平安扫描。
可参考极狐 GitLab IaC 扫描官网文档定制化配置扫描规定 GitLab Infrastructure as Code (IaC) Scanning。
KICS 扫描后果如何出现?
极狐 GitLab CI/CD 流水线执行实现后,针对扫描后果输入平安报告,在 2 分钟内即可展现在流水线产物中,如下图:
KICS 扫描后果如何应用?
KICS IaC 扫描无缝连接极狐 GitLab 合并申请以及议题:
➤ 我的项目管理者
- 可疾速定位 MR 中引入的平安问题,并指派相干人员进行修复;
- 能够针对相干的代码段进行评论,疏导开发者解决问题并进行问题留痕。
➤ 开发者
- 可依据极狐 GitLab 的 IaC 扫描后果疾速创立相干议题,针对中高风险问题进行精准跟踪,并指派相干人员解决该问题;
- 可通过标签为各类平安问题设置危险等级,并记录相干问题的解决过程和耗时。
SAST
SAST 是什么?
软件中的破绽和弱点很常见:84% 的软件破绽都是利用应用层的破绽。软件相干问题的普遍性是应用利用平安测试工具的次要动机,SAST 就是其中之一。
SAST(Static Application Security Testing)动态应用程序平安测试,俗称动态剖析,是一种应用程序的平安测试伎俩,呈现较早,次要是 通过剖析源代码来发现潜在的安全漏洞,从而确保软件平安。
SAST 属于白盒测试,剖析后果可能准确到代码行数,而且通常是在代码编译之前进行,因而属于 SDLC 晚期,修复问题的老本绝对较低。
如上图所示,同属于源代码阶段的平安测试还有前文说到的基础设施即代码扫描,以及 DAST 动态应用程序平安测试、许可证合规、密钥检测。
优良的 SAST 工具具备什么特点?
➤ 更好的集成性和综合性
- 与软件生命周期紧密结合,能和议题、合并申请集成;
- 反对更全面的语言框架,不须要离开应用多个开源计划。
➤ 更好的可视化和报告性能
- 检测后能生成具体的破绽报告,反对弱小的破绽治理性能。
➤ 更好的扩展性和定制性
- 可能对立各种动态分析器的接口,减小用户学习老本;
- 能反对扩大自定义分析器,满足简单场景需要。
如上文极狐 GitLab 平安扫描工作流所介绍,极狐 GitLab 将 SAST 与 MR 无缝集成,在创立 MR 时,触发 CI/CD 进行 SAST 剖析,最终的后果会展现在 MR 中,开发人员可通过创立 Issue 来对相应的 SAST 破绽进行追踪治理;当批改后从新提交代码,再次触发 CI/CD Pipeline,在确认无误后,方可合入代码。
其中,极狐 GitLab 的分析器,基于第三方代码剖析工具的封装,对立解决逻辑和输入格局,反对自定义,反对多种语言,包管理器,框架等,诸如 Java、Go、.Net、JavaScript、Node.js 等。
如何启用 SAST?
以极狐 GitLab 为例:
SAST 的执行流程如下图,极狐 GitLab 反对通过两种形式启用 SAST:
➤ 形式 1:在 UI 中配置 SAST
根底配置蕴含 4 项:
- Image prefix:自定义剖析镜像的命名空间;
- Excluded paths:批改时记得手动加上默认值;
- Stage:流水线阶段;
- Search maximum depth:语言确定阶段搜寻深度,具体分析是整个源码。
➤ 形式 2:在 CI/CD YAML 中配置 SAST
只须要在极狐 GitLab CI/CD 中退出如下两行代码即可使能 SAST:
include:
- template: Security/SAST.gitlab-ci.yml
具体配置内容可参考官网文档 动态应用程序平安测试(SAST)。
以上,就是对于 SAST 的根底反对和利用分享。
同时,咱们提供了 极狐 GitLab 旗舰版 30 天收费体验 机会,欢送到极狐 GitLab 官网申请试用,解锁更多 DevSecOps 实际。