简明指南:DevSecOps及其在CI/CD管线中的重要性
什么是DevSecOps以及它的重要性?了解DevSecOps管道和它在CI/CD管道中的实施。同时,了解各种安全基准。
利用持续集成和交付(CI/CD),如今许多企业实现了软件开发生命周期的自动化。CI/CD是DevOps流程的一部分,旨在加速软件开发,同时尽量减少错误。持续交付将整个软件发布过程自动化,直至生产,而持续集成则自动生产和测试代码。然而,安全仍然拥有一个重要的问题。这给我们带来了一个关键的问题,为什么安全是一个首要关注的问题?
CI/CD管道通过提供几个好处来增强你的软件开发能力。 这些好处包括更少的代码修改,更短的修复问题的平均时间,更可靠的测试,更快的发布周期,更少的产品积压,以及更多的客户满意度。
不幸的是,黑客们也在利用CI/CD管道中的漏洞。他们有能力窃取数据,挖掘加密货币,并在程序中引入恶意软件。因此,行业领导者创建了DevSecOps方法来保护它。
什么是DevSecOps,以及为什么我们应该使用它?
DevSecOps是一种理论,主张将安全程序整合到DevOps流程中。它也被用来定义一个强调持续交付和安全的软件开发生命周期。在SDLC的结论中发现安全缺陷可能是非常令人沮丧的。通过将DevSecOps(SDLC)引入CI/CD管道的最佳实践,鼓励安全参与成为软件开发生命周期的一个重要组成部分。
通过 DevSecOps创建一个简化的流程。在不放慢交付周期的情况下进行安全测试,它与精益技术是一致的。它使团队能够在发现问题的时候解决问题,而不是等待攻击的发生。这使得所有三个团队都能从敏捷方法论中获益,而不影响编写安全代码的目标。
DevSecOps与CI/CD的关系
你使用的每一个开源库都可能成为安全漏洞的温床。随着大量的开发人员同时在多个项目上工作,手动测试并不是一个可扩展的选择。DevSecOps通过确保软件交付物的安全,不断为CI/CD管道提供服务。DevSecOps还可以验证项目中使用的任何外部库的真实性,以及与许可证相关的风险和漏洞等。任何机密信息,如密码或登录信息,都会和代码一起放入git仓库。
将自动安全检查与CI/CD相结合,可以对任何阶段可能存在的安全漏洞发出早期警告。这使得你的企业在扩张时具有可行性。
DevSecOps管道的步骤
DevSecOps流水线与典型的DevOps流水线有一点不同。DevOps管道包括--计划、代码、构建、测试、发布和部署。在DevSecOps管道中,特定的安全检查是在DevOps周期的每个阶段进行的。通常情况下,DevSecOps管道包括以下五个步骤
- 规划--通过做安全分析,为测试的方式、地点和时间准备一个计划。
- 代码--使用提示工具和Git控制来保护API密钥和敏感密码。
- 构建 - 使用SAST(静态应用测试)工具,在生产部署前追踪错误。
- 测试 - 在测试时,利用DAST或动态应用程序安全测试工具进行错误检测,这与用户认证、SQL注入和API端点直接相关。
- 发布 - 漏洞扫描和渗透测试过程是使用安全分析工具进行的。就在发布代码之前使用这些工具。
使用DevSecOps在CI/CD管线中实施安全性
充分利用SAST和DAST工具
SAST代码分析器在你的代码和导入的库中寻找安全缺陷。选择一个与你的编程语言兼容的SAST扫描器,因为这些工具是为特定的编程语言定制的。SAST有可能显示假阳性,所以建议谨慎行事。误报会使团队感到沮丧,以至于停止响应来自受损管道的通知。
与SAST不同,动态应用安全测试工具或DAST在你的程序从外部运行时进行验证,就像入侵者一样。由于它们与外部应用程序一起工作,DAST扫描器不需要任何特定的语言。将这两种策略整合到我们的工作流程中,为你提供任何安全缺陷的早期通知。
管理秘密
秘密包含敏感信息,需要特别注意。秘密和凭证也被云工作负载用来访问对其运行至关重要的额外资源和服务。有各种方法来分享这些秘密。在使用虚拟机镜像或容器将系统部署为软件包时,可以将秘密直接植入镜像。通过这样做,它只能在工作负载执行时在一个文件中被访问。另一种保存秘密的方法是加密并将其保存在源控制中。然后,工作负载在收到解密密钥后可以检索、解密和使用秘密。
了解你的依赖性
我们还需要考虑到应用程序的依赖关系,将其作为一个额外的攻击面。首先要了解依赖关系和任何已知的弱点,这是至关重要的。我们可以对程序进行分析,并为其制定一个软件材料清单,以协助我们完成这项工作。
最后,我们可以持续监测我们的Kubernetes集群中正在发生的事情,就像我们偶尔检查注册表中保存的图像一样。通过这样做,将确保没有可疑的活动,如不寻常的网络查询,运行有重要CVE的镜像等。
容器安全基准
容器化技术广受欢迎。它涉及到使用容器将你的应用程序放入无服务器的基础设施。虽然容器总体上是安全的,但是互联网安全中心(CIS)提供了 在任何应用程序中正确使用容器的指南。对于使用docker和Kubernetes的人来说,遵循这些基准是必须的。
IST SP 800-190
美国政府国家标准与技术研究所(NIST)在其应用容器安全指南中,将容器描述为一种虚拟化的操作系统。
PCI
协助保护零售和电子商务部门的数据的框架是支付卡行业(PCI)标准。
HIPAA
医疗保健领域的病人数据保护受《健康保险可携性和责任法案》(HIPAA)的约束。
总结
显然,DevSecOps是对你的CI/CD管道的一个有价值的补充,可以将安全与持续交付相结合。如果你有任何其他重要的DevSecOps实施要点,请在下面的评论中告诉我们。