软件安全开发:从SDL到DevSecOps

admin 2022年6月11日01:54:52评论229 views字数 3589阅读11分57秒阅读模式

01
前言

“FSRC经验分享”系列文章,旨在分享焦点安全工作过程中的经验和成果,包括但不限于漏洞分析、运营技巧、SDL推行、等保合规、自研工具等。

欢迎各位安全从业者持续关注!


软件安全开发:从SDL到DevSecOps

全文约3580字  推荐阅读时间 10分钟


02
本文简介

互联网企业敏捷开发、高迭代,严格按照SDL实施安全管控措施,可能会因为实施过程太过繁重而导致措施不能有效落地。本文结合焦点前期实施SDL过程中遇到的问题,介绍了DevSecOps相关内容,并介绍公司目前已经实现、计划实现的自动化工具/安全管控措施如何嵌入DevSecOps流程。


我们公司在DevSecOps上才刚刚开始,有些地方还不成熟,文中也只是我们实施部署过程中的一些经验和思考,敬请各位指正!


03
SDL

SDL(安全开发生命周期)是21世纪初期由微软提出的。其尝试从流程、管理的角度解决软件面临的安全风险,探索在各软件开发环节加入安全过程、把控安全风险,确保每个环节交付到下一环节的交付物都安全可控。

SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每个阶段每都增加了相应的安全活动,以减少软件开发过程中产生的漏洞数量,在上线前将安全风险降到最低。

软件安全开发:从SDL到DevSecOps


【备注】SDL代表的是以瀑布模式的S-SDLC(安全软件开发生命周期),主要基于微软的软件产品开发场景。微软此前产品主要是系统级软件或者工具软件,开发周期相对较长、需求范围相对明确,而且变化相对可控并不会太频繁。同时,系统复杂性和团队规模很大,每次软件系统进行迭代和返工的成本极高,必须保证每个阶段交付的正确性,并不需要密集的部署和交付,在开发与运维之间有明显的阶段。这种场景下,是比较适合采用瀑布模式的。



实施难点


互联网企业敏捷开发、高迭代,严格按照上图实施SDL,最后可能会因为实施过程太过繁重而导致措施不能有效落地。若强行要求各个环节实施安全管控措施,也会影响项目正常上线。

在实施SDL过程中,最大的困难是如何将各项安全技术与软件生命周期各阶段有效结合,在尽可能少的影响项目工作的情况下,尽可能早地发现、消除安全风险。我们在实施过程中主要遇到的困难有:

  • 业务团队认为安全是安全部门的事情,与其关系不大,安全项目的推动在一定程度上增加了额外的工作量

  • 版本更新迭代快,在每个版本发布过程中都完成实施SDL,仅靠人力无法满足

  • 提供的自动化工具有限,同时因各个业务团队工作流程差异,需要进行针对性的调整,实施效果不显著

  • 存在一个问题多次出现的情况,使得安全团队处于被动的状态



04
转型的几个关键词

为了能够解决上述遇到的困难,更敏捷(不拖研发进度后腿)、更傻瓜化(不给研发设置能力门槛)的将安全技术、管控措施融入到软件生命周期各阶段,我们开始向DevSecOps转型。

在开始了解DevSecOps之前,需要理解下面几个看起来比较相似的关键词:

  • SDL: Security Development Lifecycle,安全开发生命周期

  • S-SDLC: Secure Software Development Life Cycle , 安全软件开发生命周期

  • SDLC: Software Development Life Cycle, 软件开发生命周期

  • DevOps: Development 和 Operations 的组合,是一组过程、方法与系统的统称

  • DevSecOps: 在DevOps模式下提出的安全模式


他们的关系简要可以用下图概述

软件安全开发:从SDL到DevSecOps



05
DevOps

DevSecOps是在DevOps模式下提出的安全模式,因此先简单了解下DevOps。


DevOps 是 Development 和 Operations 的组合,是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。



DevOps的模型


DevOps是一种敏捷模型,但跟早期的敏捷模型又存在一定的区别。早期的敏捷模主要是在开发环节,开发测试的关系并不是在开发工作都完成后再进行测试工作,而是开发测试不断交替、迭代的过程。但是运维部署工作还是在最后。


早期的敏捷模型如下:

软件安全开发:从SDL到DevSecOps


后来,随着互联网企业业务高速发展,同时对开发运维的要求也越来越高,企业开发运维模型从早期的敏捷模型演变到DevOps,将敏捷扩展至运维端。


软件安全开发:从SDL到DevSecOps


其主要的几个特点如下:

  • 相互合作:软件行业快速发展,为了能够按时交付产品和服务,开发部门跟运维部门必须紧密合作

  • 企业文化与理念:需要自上而下设计,促进开发部门、运维部门和质量保障部门之间的沟通、协作与整合

  • 自动化:所有的操作都不需要人工参与,全部依赖系统自动完成。譬如持续交付过程必须自动化才有可能完成快速迭代



DevOps的核心要素


DevOps核心要素:持续集成(CI)、持续交付(CD)、持续部署(CD)


软件安全开发:从SDL到DevSecOps

持续集成

软件安全开发:从SDL到DevSecOps


续集成是指开发人员提交新代码后,立即进行自动构建、自动测试。

根据测试结果,判断新代码跟原有代码是否正确集成在一起。


软件安全开发:从SDL到DevSecOps

持续交付

软件安全开发:从SDL到DevSecOps


持续交付是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的“类生产环境”中,交付给质量团队或用户测试。

如果代码没有问题,可以继续手动部署到生产环境中。


软件安全开发:从SDL到DevSecOps

持续部署

软件安全开发:从SDL到DevSecOps


当新增的代码在“类生产环境”中运行一段时间后,就可以持续部署。自动部署到生产环境。



06
DevSecOps

把Sec塞进DevOps不只是技术与工具变更那么简单,更重要的是思维方式和内部流程的转变,DevSecOps强调的是:

  • 人人为安全负责,人人参与安全构建

  • 自动化工具,将安全嵌入到开发到运维的每个阶段

  • 进一步的流程融入,加强不同团队间的协作


在DevSecOps学习过程中,发现原先SDL的安全措施是可以用到DevSecOps的。在原来的基础上,更多地融入流程、更深入地开展自动化。实施过程中需要有意识地建立安全文化,让相关人意识到人人需要为安全负责,安全是大家都要参与的事情。



DevSecOps工具链


DevSecOps成功实施的关键因素是自动化。在软件开发生命周期各个阶段开展不同的安全工作,都需要不同的工具支撑。

在实施SDL过程中,我们已经面向项目组推行了自动化测试工具DAST、IAST、SAST,但是这对于DevSecOps的落地还远远不足。


以下是腾讯云在构建DevSecOps所需要的安全工具链,整体阶段分为:创建、计划、适应、预测、响应、预防、检测、预发布、发布、验证


在不同阶段需要开展不同的安全工作,都需要不同的工具支撑。

软件安全开发:从SDL到DevSecOps



焦点的DevSecOps


参考腾讯云的DevSecOps最佳实践,将部门内已经开展、即将开展的工作嵌入到DevSecOps各阶段,所需系统、工具以自研为主,部分外部采购。具体如下:

软件安全开发:从SDL到DevSecOps



DevSecOps的难点


DevSecOps的工作还处于开展初始阶段,无论是工具、流程还是安全文化目前都不能支撑其有效实施。

  • 目前DevOps落实还不成熟,无法有效实现自动化,部分关键工作还需要人工介入

  • 缺少能够支撑DevSecOps开展的工具

  • 开发运维人员安全主人翁意识不足

在公司还未完善DevOps流程时,部分环节的工作需要人工介入。以上都需要


07
SDL or DevSecOps?

不管是SDL还是DevSecOps,强调的都是安全左移,即尽可能早地在软件开发生命周期各阶段嵌入安全措施,能够更容易降低安全风险。我们可以根据自身的实际需求,选择合适的安全开发模型。

选择时建议从以下几个方面考虑:

  • 需求范围是否明确

  • 需求变更是否频繁

  • 是否可以将系统拆分成可交付增量

  • 是否需要密集部署和交付

  • 开发与运维之间是否有明显的阶段区分


08
参考资料及免责声明

从SDL到DevSecOps:始终贯穿开发生命周期的安全

https://www.fooying.com/from_sdl_to_devsecops_security_in_dev/


小米安全运营实践:基于DevSecOps框架的思考与实践

https://www.secrss.com/articles/31259


The Product Managers’ Guide to Continuous Delivery and DevOps

https://www.mindtheproduct.com/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/


本文中提到的相关资源已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。


软件安全开发:从SDL到DevSecOps

本文编辑:小错






软件安全开发:从SDL到DevSecOps
精彩推荐




数据安全从0到1——焦点数据安全建设漫谈

隐私安全到底离我们有多近

APP的安全合规,到底涉及什么规?

焦点安全,因你而变

焦点科技漏洞提交网址:https://security.focuschina.com



原文始发于微信公众号(焦点安全应急响应中心):软件安全开发:从SDL到DevSecOps

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月11日01:54:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   软件安全开发:从SDL到DevSecOpshttp://cn-sec.com/archives/1108008.html

发表评论

匿名网友 填写信息