确保CI/CD管道的安全性
关键要点
- CI/CD管道是软件开发过程的基础,对其安全性至关重要。
- 提前识别和缓解安全风险能够提高网络安全的主动性。
- 实施健康的开发环境、代码审核、测试和持续监控是提升安全性的有效策略。
在现代软件开发中,持续集成/持续交付(CI/CD)管道已成为程序开发的基石。因此,确保开发者能够满足并超越最重要的安全措施显得尤为重要。与其在生产后发现,导致业务受到损害,不如在早期就重视 安全,从源头消除风险。
通过在软件开发生命周期的早期识别和缓解风险,组织可以转变为一种主动的网络安全状态。尽管考虑到网络犯罪分子的战术变化快速且复杂,这里总结了四个关键步骤以及一系列安全负责人可以使用的工具和策略,以便将基于风险的漏洞管理融入CI/CD管道中:
步骤1:创建健康的开发环境
组织及其软件开发团队应该在软件开发的初始阶段,即规划阶段时,就开始思考安全问题。在制定产品路线图时,团队可以执行特定任务,例如威胁建模和软件工件的供应链级别(SLSAs)。威胁建模能帮助识别潜在攻击区域,提出相应对策以减轻风险。通过从对手的角度出发,团队可以不断评估环境,强化防御,抵御现实世界的模拟攻击。
SLSA框架在规划阶段内特别有用。它作为判断CI/CD管道安全性的通用语言,包括一系列控制措施、标准和最佳实践,帮助避免供应链攻击和防止被利用。
步骤2:确保代码健康
开发团队无法保护看不见的内容。因此,必须对整个CI/CD管道有清晰的可视化,理解所组成的所有代码及其相互关系。这还要求密切监控所有可能的入口点。软件团队可以通过执行软件组成分析(SCA)和使用软件材料清单(SBOM)来实现这一点,后者在跟踪代码库中的所有开源和第三方组件方面发挥着重要作用。此外,开发团队还应添加静态应用安全测试(SAST)。SAST工具用于检查应用源代码、汇编代码、字节码和二进制文件中的潜在安全缺陷。开发者可以在早期或接近周期结束时使用这些工具,以确保代码库的安全性。当然,部署这些工具并不能完全取代安全专业人员的手动代码审核,因为什么工具也无法做到完美。
开发者还应考虑使用代码签名服务。在软件开发生命周期(SDLC)的这一阶段,这些工具通过在代码上盖上数字签名来验证其真实性,确保开发者可以信任代码并且未被篡改。
步骤3:测试代码
在这一阶段,需不断测试软件,尤其是在添加新功能时。开发者可以利用动态应用安全测试(DAST)来通过模拟攻击从外部分析构建。与只能发现静态环境中缺陷的SAST工具不同,DAST工具能够检测动态、不停变化环境中的运行时缺陷。在测试阶段,还要使用容器扫描工具,因为容器在应用开发中的使用已成为云计算中的一种趋势。
超越代码的界限,进行安全接收测试至关重要,以确保现有的安全控制措施足够强大,能够保护整个系统。这包括检查依赖关系中的漏洞、测试不安全的配置设置和验证认证与权限控制是否正常工作。无论是通过自动化工具进行,还是手动完成,最好两者结合,都应将安全接收测试视为确保CI/CD管道健康的必需环节。
步骤4:实践持续监控
团队的环境、代码和测试策略现在已经建立运行,接下来需要采取预防措施,确保CI/CD管道始终保持安全。这个过程应始终保持“未完成”状态,因为它的任务永远不会完全结束。要想实现真正的成功,安全必须拥抱持续监控的理念。在这里,身份与访问管理(IAM)