浅谈应用安全之S-SDLC和DevSecOps(一)

微信公众号:hobby云说

前言

有人的地方就有江湖,有江湖的地方就有争论,豆花是甜的好还是咸的好?医学是中医好还是西医好?计算机语言是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是什么关系?

业务性质分为瀑布式和敏捷式,所以,SDLC和DevOps是一家人的,可以理解为,DevOps是由多个小的SDLC组合的,业务需求的爆发增长,推动着敏捷开发的迭代周期不断缩短,倒逼研发模式向DevOps转型。

三、S-SDLC和DevSecOps是什么关系?

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大行其道,究其根本并不是因为它俩的优劣势,而是业务类型数量的区别,敏捷型业务远多于瀑布型业务,再深入一点就是这个快时代的世界,让一切,不得不加速前进。这里引入某位神秘大佬的原话:敏捷型业务开发,也有一部分原因是为了适应甲方爸爸不断为了业绩思想发散产生每时每刻都在变化的莫名需求,以及出于各种需求的奇思妙想。总之,原因是多样的,这一切,都值得我们深思~

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
系统声明周期是指一个软件系统从开发、维护到最终退役的整个过程。它包含了计划、需求分析、设计、开发、测试、部署、运维与维护等阶段。 在系统声明周期中,敏捷开发是一种灵活的开发方法论。它强调快速反馈、迭代开发和持续改进。敏捷开发注重通过与用户的密切合作、迭代开发和快速交付来适应变化的需求。它采用小规模团队,拥有高度自主性,能够迅速反应和更改开发计划。 敏捷开发和SDLC(软件开发生命周期)是密切相关的。SDLC是指传统的软件开发过程中,从需求分析到软件发布的各个阶段,采用瀑布流式逐步推进的方法。而敏捷开发则是针对SDLC的一种改进,通过迭代和增量的方式逐步开发软件。 在对比上,敏捷开发更加适应变化,注重自组织的团队合作,更能够快速响应需求变化和适应市场环境。而SDLC注重规划和预测,更强调事先规划和执行计划。 总的来说,敏捷开发强调灵活性和快速迭代,更适用于需求多变的项目,可以快速响应用户需求和市场变化。而SDLC更适合较为稳定的项目,可以通过预先规划和执行计划来确保项目的进展。 在实际应用中,可以根据项目的特点和需求选择合适的方法论。有些项目可能倾向于SDLC,有些则更适合敏捷开发。而在具体的开发过程中,也可以结合两者的优点,采取混合的方法论,以适应具体的需求和项目特点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hobby云说

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值