软件质量管理安全篇从SDL到DevSe

近期在宋老师在一家互联网软件安全公司负责一块业务的运营工作,其实安全也是软件的一种质量属性,属于软件质量管理范畴。但发现很多,软件质量管理同学,居然对安全开发过程和实践没什么概念,这样显然是要落伍的哦。所以,本文给大家做个介绍,希望对大家有帮助。

01

什么是SDL

软件业随着windows及web应用出现,Saas和云应用发展,针对软件的攻击开始变得复杂和频繁,工业界也通过多种手段来修复安全问题,推动了诸如,杀毒软件、防火墙、反间谍软件的出现。但应用多种防护手段后,依然发生大型数据泄露事件和安全漏洞利用事件,大家意识到问题的根源还是是软件代码本身存在漏洞。因此,要回到整个开发过程中去解决安全问题。

美国国土安全部年草案“软件生命周期中的安全”描述:

安全软件和不安全的软件最关键区别在于描述、设计和开发软件等过程与实践中的性质。。。采用安全增强的过程和实践,尽可能早地修复软件开发生命周期中潜在的安全漏洞,比普遍采用的频繁开发和发布运行中软件补丁的方法更加经济实用。

著名的安全公司Fortify曾发布数据表明,需求分析层面纠正安全缺陷的成本,比现场修复的成本低倍。

业界认识到把安全从运维端左移到开发过程中,才是更优的选项。

基于安全要从源头抓起的思想,Microsoft提出的SDL安全开发生命周期模型(见下图),得到广泛应用。该模型在软件研发过程中加入了安全实践,帮助开发人员构建高安全性的软件,减少开发成本,并解决安全合规需求。

在实际软件开发中,需要将安全性实践集成到选择的软件开发生命周期的每个阶段,从需求分析到运维,其实无需考虑软件开发生命周期是瀑布式、敏捷还是DevOps。

国内的Seczone开源网安公司也提出S-SDLC(安全的软件开发生命周期),其可以看成是SDL的一种具体落地的实现工具与实践集。

下图是S-SDLC全景图

02

什么是DevOps?

根据百度百科对DevOps定义:

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

举几个例子:Facebook有数千名开发和运维人员,成千上万台服务器。平均来说一位运维人员负责台服务器(还认为自动化是可选的吗?)他们每天部署两次(环式部署,Deploymentring的概念)。Flickr每天部署10次。Netflix明确针对失败进行各种设计!他们的软件按照设计从最底层即可容忍系统失败,他们会在生产环境中进行全面的测试:每天通过随机关闭虚拟机的方式在生产环境中执行60次失败测试……并确保这种情况下一切依然可以正常工作。

而如果用传统手工的部署方式会遇到什么问题呢?

这些统计告诉我们:只需手工运行5条命令的情况下,成功部署的概率就已跌至86%。如需手工运行55条命令,成功部署的概率将跌至22%。如需手工运行条命令,成功部署的概率将趋近于0(仅2%)!

为真正敏捷的交付软件价值给客户,必须将敏捷扩展至运维端,才能实现真正的端到端的价值流动和及时客户反馈、快速迭代,持续集成、部署的自动化是这一方法体系的核心能力!

DevOps的知识体系如下图所示:

其实不难发现,DevOps依然归属于敏捷方法体系。

如果说敏捷开发,解决了产品-测试-开发一体化,提高软件对需求响应的灵活性,改善组织适应环境的能力。到DevOps,解决开发-测试-运维一体化的问题,使得组织的响应业务、持续反馈的能力更进一步加强,从而进一步提升环境适应能力,增强了组织竞争力。

业界很多专家认可,DevOps是敏捷方法体系的延伸,并不是与敏捷并列的一种新的方法体系。因此,无论是敏捷还是DevOps,其核心都是增量迭代模型。

自动化需要工具链的支撑,其中常用的框架可能如下图所示:

03

从DevOps到DevSecOps

DevOps促进了软件效能的大幅提升,但从历史上看,单纯使用敏捷方法开发软件时,几乎不包含安全性。这是由于敏捷方法专注于快速满足客户直接需求的功能,而安全性作为

潜在需求并未得到应有的重视。

据相关数据显示,年,预计全球互联网将连接亿个物联网设备。除了设备数量之外,DevOps在企业生态系统中的采用率已经达到了较高的水平,一些技术领先的公司每天还进行数以万次的项目构建。因而它也成为了对网络攻击者很有吸引力的目标。特斯拉基于云的DevOps平台被劫持是一个例子,它表明了为什么这些环境必须融合到企业的总体安全策略中,从而全面覆盖不断增长的攻击面。

随着连接的数量和广度在世界范围内呈指数级增长,将安全性集成到DevOps系统中比以往任何时候都更加重要,安全专家们也一直在探索。

DevSecOps通过在DevOps其生命周期阶段融入相关的安全实践,以帮助企业达成DevSec+SecOps的目标,使得近期DevSecOps成为业界


转载请注明:http://www.aierlanlan.com/rzfs/7714.html

  • 上一篇文章:
  •   
  • 下一篇文章: