DevSecOps是一种现代的应用交付方法,它将安全贯穿于应用开发、部署和操作整个流程。鉴于现代应用程序的分布式特性,自动化被认为是持续集成安全分析和动态工作流威胁缓解的关键。作为DevOps原则的扩展,DevSecOps自动化有助于在整个开发过程中管理安全控制。
什么是 DevSecOps?
DevSecOps指的是在SDLC的初始阶段就将安全控制集成到DevOps管道中。该模型促进了开发人员、运营人员和安全团队协作以确保企业交付安全软件的文化。DevSecOps实践帮助组织采用左移方法,在应用生命周期的早期引入安全测试和合规性检查。
自动化是 DevSecOps 的核心,安全工具的持续监控和测试使 DevOps 团队和安全专家能够专注于增强业务意识的活动。DevSecOps 自动化简化了安全方法与持续集成和部署管道的集成,减少了手动执行安全分析时发生的错误数量。
DevSecOps 自动化的原则
DevSecOps 自动化的一些指导原则包括:
利用容器编排平台
容器可以部署在任何开发或生产环境中。由于每个容器都运行一个独立的实例,因此容器提供了从软件开发生命周期的初始阶段开始部署安全措施的最佳粒度。像Kubernetes这样的容器编排平台简化了容器的部署和管理,允许DevOps团队和安全专家之间的无缝协作。编排平台提供了各种部署模式,并提供了用于安全设计和部署云本地应用程序的架构和组件。
采用软件物料清单 (SBOM)
SBOM是代码库中使用的各种第三方和开源软件组件的清单。在SBOM中,安全专业人员可以列出部署管道中的所有直接和传递依赖项,从而更容易识别来自第三方集成的安全威胁。
SBOM的主要目的之一是提供足够的粒度和可见性,以便在现代应用程序中部署用于持续安全监控和测试的自动化安全工具。作为一个重要的结果,SBOM管理工具减轻了DevSecOps团队在帮助进行软件清单静态代码分析的同时,涉及审查开源软件的手工任务。SBOM还包含了用于安全分析的其他有价值的信息,包括第三方许可证、软件版本和相关补丁状态。
实施应用程序安全测试
应用程序安全测试(AST)涉及到可重复的安全检查,通过持续扫描来自动检查和评估代码的安全性。静态应用程序安全测试(SAST)是一种帮助分析软件源代码的安全风险和错误配置的机制,它在程序不运行时执行。与SAST不同,动态应用程序安全测试(DAST)是一种不需要访问源代码的黑盒安全测试方法。DAST是一种前端安全分析,安全研究人员在其中模拟攻击,以发现应用程序中的潜在安全问题。通过DAST,安全团队可以发现运行时安全问题,如服务器配置和身份验证缺陷,这些通常在生产环境中是可见的。
在开发管道中使用的其他应用程序安全(AppSec)机制包括交互应用程序安全测试(IAST)和运行时应用程序自我保护(RASP)。
安全编码实践培训
缓解生产中潜在问题的一种有效方法是首先确保它们不存在于代码中。为了使安全成为开发人员、安全专业人员和运营团队之间的共同责任,对每个利益相关者进行有关构建安全应用程序的培训非常重要。安全团队应该对开发人员进行安全编码实践方面的教育,以帮助他们在日常任务中采用安全第一的方法。培训还应包括为安全专业人员和开发人员之间的无缝协作建立沟通渠道。组织范围内的辅导还强制利益相关者对安全负责,推动自动化安全控制所需的关键行为改变。
实施威胁建模
在创建 DevSecOps 自动化平台时,安全工程师应该考虑系统中的所有弱点以及攻击者如何利用它们。威胁建模通过恶意行为者角度来扫描应用程序。持续的威胁建模可帮助安全专家了解应用程序的安全状况,这有助于为 DevSecOps 自动化部署正确的安全工具。威胁建模可作为建立协作 DevSecOps 文化的蓝图,因为它可以帮助每个团队更好地了解他们在维护应用程序和基础设施安全方面的角色和目标。
定义安全指标
安全指标使应用程序开发生命周期的关键利益相关者(包括运营团队、开发人员和安全专家)能够评估在安全环境中运行应用程序的复杂性。优化定义的指标可帮助安全工程师微调补救措施,以准确衡量和缓解网络威胁。持续监控工具还依赖度量数据来实时跟踪应用程序的性能和安全性。安全指标也常用于定义服务水平协议 (SLA)和服务水平目标 (SLO),以帮助衡量技术堆栈的各种软件组件的性能。
在将源代码部署到持续集成管道之前,开发人员依赖于 SAST、SCA 和验收测试流程的 DevSecOps 指标。
DevSecOps 自动化中一些常用的指标包括:
部署频率
平均修复时间 (MTTR)
正常运行时间/停机时间
补丁节奏
缺陷密度
入侵尝试和响应
第三方风险
安全等级
DevSecOps 中的自动化有什么好处?
通过 DevSecOps 管道实现自动化的一些优势包括:
更快地修复潜在的安全问题
在开发过程的早期集成安全性
消除了监控和合规性检查的手动任务,提高了开发人员的工作效率
支持整个 DevOps 管道的透明度和可见性,允许更轻松的监控和测试
能够在不牺牲安全性的情况下快速开发和部署应用程序
提供一致、可追溯、可重复和可扩展的基础设施安全措施
促进运营团队、DevOps 和安全专家之间加强协作
DevSecOps 指标的数据源是什么?
DevSecOps 指标的一些熟悉的数据源包括:
漏洞扫描系统
配置管理和版本控制系统
CI/CD 平台(例如,Jenkins)
变更请求接口
SAST 和 DAST 工具
应用程序安全监控工具