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 管道需要随着时间的推移而改进,而不是仅仅依靠同时实施所有安全更改。这将消除回溯或应用程序交付失败的可能性。
1 条评论