DevSecOps改进了DevOps,以确保安全仍然是流程的重要部分。
到目前为止,DevOps在IT界已经得到了很好的理解,但是并不是完美的。假设已经在一个项目的现代应用程序交付中实现了所有DevOps工程实践。到达了开发管道的末端,但是一个渗透测试团队(内部或外部)发现了一个安全缺陷,并提出了一个报告。现在必须重新启动所有流程,并要求开发人员修复缺陷。
在基于devops的软件开发生命周期(SDLC)系统中,这并不是一件非常乏味的事情,但是确实会消耗时间并影响交付进度。如果从SDLC一开始就集成了安全性,那么可能已经跟踪到了这个小故障并在运行中消除了它。但是在上面的场景中,将安全性推到开发管道的末尾,会导致更长的开发生命周期。
这就是引入DevSecOps的原因,以自动化的方式整合了整个软件交付周期。
在现代DevOps方法中,组织广泛使用容器来承载应用程序,看到了Kubernetes和Istio的大量使用。然而,这些工具也有自己的弱点。例如,云本地计算基金会(CNCF)最近完成了Kubernetes安全审计,发现了几个问题。DevOps管道中使用的所有工具在管道中运行时都需要进行安全检查,DevSecOps推动管理员监控工具的存储库,以便进行升级和补丁。
DevSecOps是什么?
与DevOps一样,DevSecOps是开发人员和IT运营团队在开发和部署软件应用程序时遵循的一种心态或文化。将主动的和自动的安全审计和渗透测试集成到敏捷应用程序开发中。
要使用DevSecOps,需要:
从SDLC开始引入安全的概念,以最小化软件代码中的漏洞。
确保每个人(包括开发人员和IT运营团队)都在他们的任务中承担遵循安全实践的责任。
在DevOps工作流的开始阶段集成安全控制、工具和流程。这将在软件交付的每个阶段启用自动安全检查。
DevOps一直致力于在开发和发布过程中包括安全性——以及质量保证(QA)、数据库管理,以及所有其他方面。然而,DevSecOps是该过程的一个改进,以确保安全作为该过程的一个重要部分永远不会被遗忘。
理解DevSecOps管道
在一个典型的DevOps管道中有不同的阶段;典型的SDLC流程包括计划、代码、构建、测试、发布和部署等阶段。在DevSecOps中,每个阶段都应用特定的安全检查。
计划:执行安全性分析并创建一个测试计划,以确定在何处、如何以及何时进行测试。
代码:部署linting工具和Git控件来保护密码和API密钥。
构建:在构建用于执行的代码时,合并静态应用程序安全性测试(SAST)工具,以便在部署到生产环境之前跟踪代码中的缺陷。这些工具是特定于编程语言的。
测试:使用动态应用程序安全性测试(DAST)工具在运行时测试应用程序。这些工具可以检测与用户身份验证、授权、SQL注入和api相关端点相关的错误。
发布:在发布应用程序之前,使用安全分析工具执行彻底的渗透测试和漏洞扫描。
部署:在运行时完成上述测试后,将安全构建发送到生产环境中进行最终部署。
DevSecOps工具
工具可用于SDLC的每个阶段。有些是商业产品,但大多数是开源的。在下一篇文章中,将更多地讨论在管道的不同阶段使用的工具。
随着继续看到构建在现代IT基础设施上的企业安全威胁的复杂性的增加,DevSecOps将扮演更重要的角色。然而,DevSecOps管道需要随着时间的推移而改进,而不是简单地依赖于同时实现所有安全更改。这将消除回溯或应用程序交付失败的可能性。