提升漏洞修复率,DevSec666
DevSecOps的核心
DevSecOps的安全实践主要集中于以下两个方面:
安全工作前移
采用安全在软件开发前期介入的方式,降低解决安全问题的成本,前期介入的内容包括对开发、维护人员的安全意识培训、安全开发规范的培训、安全需求(非功能需求)的导入、前期的代码审计工作、基于白盒的安全测试、渗透测试等内容。在运营阶段增加的内容与前期开发阶段类似,主要内容集中在对新安全需求实现情况的验证以及软件整体安全评估。
安全工作与现有工作无缝对接
为了避免安全工作(例如:测试与评估、安全策略的部署等)成为开发瓶颈,使得应用系统在最短周期内实现其应有的价值和安全属性。DevSecOps采用快速迭代的开发方式,这就需要实现安全与开发工作实现无缝对接,将安全工作导入现有的开发工作流程和工具中,包括将安全需求导入至统一需求管理流程与工具、安全测试工作与持续集成/持续部署(CI/CD)对接、安全测试结果导入至缺陷管理工具等诸多环节。
这实际上就是对自动化提出非常高的要求。
DevSecOps实施方案
DevSecOps通常是将安全嵌入到DevOps的流程阶段中,所以一般来说,DevSecOps的工具通常也是基于编码、构建、测试、配置、部署、监控这六个阶段嵌入的,如果要自行搭建DevSecOps的流水线需要至少在以上环节中加入相应的工具并实现自动化,具体分析如下:
1)开发阶段
良好的编码习惯更易于代码本身的理解和更改。 DevSecOps通过添加用于编写良好和安全代码的安全检查来扩展这些实践。
传统的单元测试,代码审查,静态代码检查等实践可以扩展到该阶段的安全性检查。为了不影响开发人员的工作效率,可以在代码提交至代码仓库之前查找并修复常见的安全问题。
2)构建阶段
将代码提交到代码仓库后,将执行应用程序的构建和基本自动化测试,以确保代码始终可编译可构建。
同样,需要在此阶段添加安全性检查,以检测严重和高危安全性问题。如果发现严重问题,则需要进行安全控制,设定构建为失败并发送警报通知。
3)测试阶段
成功构建后,通过选择生成的工件并将其部署到容器或者测试环境来触发测试阶段。这些测试包括功能测试,集成测试,性能测试,高级SAST,安全性和DAST。
这个阶段通常需要更多的时间和资源来执行,并且遵循快速失败方法优先原则,即更费劲和耗时的测试要尽可能后延,只有在其他测试都通过时才执行。
4)配置阶段
配置管理工具可以轻松地反复大规模部署和创建安全基础架构。通过标准化配置,配置管理工具可以减少与补丁管理相关的问题,最大限度地降低黑客可以利用未修补的服务器的风险,并有助于减少不同环境之间的差异。值得一提的是,使用配置管理工具可以在中央代码库和版本控制下跟踪配置信息。
5)部署阶段
如果上述所有阶段成功运行,则需要准备投入生产环境运行。该阶段目标主要是验证在配置或部署时间内是否存在任何错误,这些错误是否会降低系统的可靠性和弹性,是否可以在故障情况通过这些进行攻击。
该阶段使用自动化运行时检查和测试中发挥重要作用的地方,特别是发现安全违规和漏洞的安全问题,并突出了风险,如访问控制策略或防火墙规则的变化。
6)监控阶段
系统投入生产后,安全性不会终止,而是真正开始。在DevSecOps中,自动安全检查和监视反馈循环迭代是生产操作的基本部分。
持续监控可以深入了解应用程序正在接收的流量类型,并帮助识别恶意用户的攻击模式。
总结
综上,DevSecOps的工具主要是基于编码、构建、测试、配置、部署、监控这6个阶段嵌入的,如果要自行搭建DevSecOps的流水线,需要至少在以上环节中加入相应的工具(参考工具如下图),并实现自动化。如果自行搭建较为困难可借助平台提供DevSecOps的能力,比如华为云DevCloud软件开发平台来进行流水线的配置与开发。
当你遇到安全问题或者想要预防安全问题发生,DevSecOps是一个很好的解决方案,希望您看完本文,对DevSecOps有所了解。
- 点赞
- 收藏
- 关注作者
评论(0)