赞
踩
有人的地方就有江湖,有江湖的地方就有争论,豆花是甜的好还是咸的好?医学是中医好还是西医好?计算机语言是Java好还是php好?在我看来,豆花甜也好,咸也罢,用咱们中国老话来讲,这就是个仁者见仁智者见智的事。
在软件安全开发领域亦是如此,近年“DevSecOps“真可谓是个炙手可热的词汇,三两交谈时刻,若是谈话内容不带个它,都好似落伍了一般,宣扬它的文章铺天盖地,更有甚者爆出SDL已死的论调。在我看来,凡事都无绝对,就事论事而言,踩一捧一并不那么合适,况且,这两者并不是长江后浪推前浪的关系。
一谈到软件安全开发, SDLC、SDL、S-SDLC、DevSecOps这几个词或多或少会被大家提及,那么它们分别是什么意思呢?
SDLC(Software Development Life Cycle)
软件开发生存周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则。即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
SDL(Security Development Lifecycle)
安全开发生命周期,是微软提出的从安全角度指导软件开发过程的管理模式,在需求分析、设计、代码开发到发布所有阶段,都引入安全和隐私原则。SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段,SDL只是一个方法指导。
S-SDLC(Secure Software Development Life Cycle)
安全软件开发生命周期,由OWASP中国团队独立发布并主导的研究项目,面向Web和APP开发厂商的安全工程方法。S-SDLC的理念来源于微软SDL,最终目标是帮助用户减少安全问题,并使用该方法从软件开发的每个阶段去提升安全级别,以此来实现软件整体的安全级别。它跟SDL的区别是它更关注的是SDL的落地化,是SDL的一种落地方法。
DevSecOps(Development Security Operation)
是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合,它是一种文化取向、自动化方法和平台设计方法。有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想,更有甚者,说它是一种哲学。说它是哲学也不无道理,是将安全融到每一个阶段中,你中有我,我中有你,每个人都对安全负责。人、流程以及技术,是它的三个关键点。
业务性质分为瀑布式和敏捷式,所以,SDLC和DevOps是一家人的,可以理解为,DevOps是由多个小的SDLC组合的,业务需求的爆发增长,推动着敏捷开发的迭代周期不断缩短,倒逼研发模式向DevOps转型。
S-SDLC和DevSecOps是一家人,都属于SDL模型的一种方法,前者 是瀑布开发嵌入安全,后者是敏捷开发嵌入安全。
- 横向分层的大系统,预测型(瀑布),先设计好
- SDLC+ Security-->S-SDLC
-
- 纵向解耦的小系统,持续交付
- DevOps+Security-->DevSecOps
也有把基于SDL的S-SDLC比喻成集团军作战,DevSecOps比喻成单兵作战,其实也不难理解,当年微软提出SDL的时候,主要的应用场景是windows系统软件或者office这样的工具软件,开发周期非常漫长,并且,当时需求也相对明确,变化也相对可控,不像当下,最大的不变就是变化。所以,当时的复杂性和团队规模非常的庞大,版本迭代的成本异常之高,每个阶段交付的容错率极低。并且,这类系统或软件,并不需要高频次的部署和交付,在这种场景下,瀑布模式相对更合适。软件的质量是最高考量因素,所以在安全的实践下,对项目的效率和进度影响并不那么的重要,所以把SDL为基底的瀑布模式的S-SDLC能够很好的落地,并取得成功。
安全开发的开山鼻祖是微软的SDL,它更多的是一种模型,一种理念,更多的是强调人、文档、制度的推进,而后衍生出来的S-SDLC和DevSecOps是两种具体的解决方法,各有千秋,没有优劣之分,只是应用场景不同罢了,或许,目前业界实际情况确实是DevSecOps大行其道,究其根本并不是因为它俩的优劣势,而是业务类型数量的区别,敏捷型业务远多于瀑布型业务,再深入一点就是这个快时代的世界,让一切,不得不加速前进。这里引入某位神秘大佬的原话:敏捷型业务开发,也有一部分原因是为了适应甲方爸爸不断为了业绩思想发散产生每时每刻都在变化的莫名需求,以及出于各种需求的奇思妙想。总之,原因是多样的,这一切,都值得我们深思~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。