如何在开发生命周期之初改善软件质量

先人一步的企业正开始采用安全编程方法和工具,在软件开发生命周期的早期阶段处理安全问题。MaaS360 by Fiberlink公司的信息安全官David Lingenfelter说:“如果企业组织在软件开发生命周期的早期阶段采用安全编程方法,安全问题就比较少。”

对大多数云软件产品而言,开发和部署的节奏非常快,以至于如果在开发生命周期的开始阶段不兼顾安全,代码发布后,如果继续进行安全测试,随后会发现需要解决的问题。“这导致了第二次重大调整,没有采用安全编程方法的公司不得不发布更多的安全代码补丁,数量比改善产品的代码变更还要多。”

实施安全代码审查

一个合理的做法就是,一开始就执行安全代码审查。这有助于缓解新安全漏洞的一些威胁,无论是净化数据还是核实输入。这还可以帮助开发团队确立一套合适的安全编程方法,从而有助于尽量减少风险部位。此外,如果采用安全编程方法,发现和审查新安全漏洞的工作就不会沦为事后诸葛亮。

云应用程序和服务极具竞争力,而云的本质就是能够迅速变化、适应。这就需要迅速改变云服务,以便与对手不相上下,或者领先对手一步。Lingenfelter说:“一大挑战就是,安全的本质就是增加了开销,因为它延长了开发周期。”

这在传统老牌企业可能是个比较大的挑战。在项目启动后整合安全,甚至在生产环境中整合安全会给现有环境带来极大的破坏。这是由于,一开始可能会发现许多问题需要解决,不仅仅是代码方面,还有可能是整个流程方面。需要得到管理层的认可,才能面对这一现实:给开发生命周期增添安全将会在整个流程中增添一些障碍。这可能会阻碍或者延长升阶周期。别试图一下子实施所有安全做法,而是要逐渐分阶段实施。

将安全外包给PaaS

平台即服务(PaaS)提供商OutSystems公司的产品战略主管Sean Allen问道:“即使你让开发人员重视安全,但是如果你迫于赶期限,最初注意的事项有哪些会在开发周期的后期阶段也会注意到?要是根本没有一套严格的程序,最初注意的事项(比如安全)就会被忽略,因为你要么没有时间,要么认为这并不重要,或者是不想因浪费人才而分心。”

一种办法就是考虑采用合适的应用程序快速交付(RAD)平台。这有助于赶在最后期限前完工,可以处理开发安全应用程序的大多数繁琐事务。现代的RAD平台可以自动将安全纳入到开发的应用程序当中。

Allen说:“借助合适的基于云的安全RAD平台(作为PaaS来提供),你就让能自己准备好迎接最终的成功。你不仅一开始就奠定了安全基础,而且你开发的应用程序一开始就考虑到了安全。”

使用云端代码分析

就在不久前,企业组织要想确保其应用程序的安全性,还不得不购买成本高昂的软件包,并且安装在企业内部。Brian Russell是全美安全、健康和工程解决方案公司Leidos专门负责网络安全解决方案的工程师,他说:“如今,静态代码分析、动态代码分析和Web应用程序安全测试之类的工作现在可以通过云来实现,作为按需提供的服务。”他还负责云安全联盟(Cloud Security Alliance)的安全物联网项目。

IBM和惠普等传统的软件质量保证开发商分别通过各自的AppScan和Fortify产品线来提供这项服务。还有一些更新颖的方案,借助众包专家来审查代码,并提供发现的软件缺陷方面的报告。BugCrowd就是这方面的一个典例。Russell解释:“这些服务意味着,企业组织可以有效地外包这些关键的安全职能,不过有必要指出,企业自身仍然需要具备软件开发方面的专长。”

SDLC期间的不同活动

Russell建议,一个好的做法就是明确划定周期中每个阶段的安全活动。在软件设计阶段,确保执行威胁建模工作,发现代码的高价值方面,了解数据流动情况,并深入了解某人有可能如何滥用应用程序。

在开发阶段,充分利用安全开发最佳实践,比如代码安全审查。Russell补充说:“采用结对编程之类的做法也是明智之举,这同时带来了功能和安全方面的好处,如果之前已有所投入,训练开发人员掌握安全编程做法,更是明智。”

新代码进入到整合阶段后,就要充分利用持续整合(CI)软件来整合代码,并且定期测试以查找软件缺陷。在软件开发生命周期(SDLC)的这个环节,适合使用基于云的软件保证服务,其中许多服务直接整合到CI环境中。还有一些服务(比如Veracode提供的服务)可以对二进制代码执行静态分析,而不是非得提供整个代码库。Web应用程序部署后,继续使用基于云的服务,这些服务可以定期扫描,查找运行中软件所存在的安全漏洞。

Russell提醒道:“与软件配套的安全基础设施不应该在最后扩充上去了事。就最初的架构和实施而言,网络防火墙、Web应用程序防火墙和身份管理系统应该是设计的一部分。”在过去,由于这些安全硬件设备需要高昂成本,很难将这种安全基础设施部署到开发环境中。

安全厂商们正开始摈弃资本成本高企的安全硬件设备,改用可以迅速部署、价格灵活的虚拟安全设备。这让安全得以一开始就在云端成为开发流程的一部分。随着开发人员编写软件、扩建系统,虚拟安全环如同虚拟安全设备那样已经实施到位。Russell建议:“务必要与支持真正的动态云环境的安全厂商合作,那样才能够无缝、低成本地搭建安全基础设施,以支持整个软件开发生命周期。”

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2015-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

了解物联网生态系统

27120
来自专栏资深Tester

软件测试人员是选择大公司好,还是选择小公司好

1.3K50
来自专栏WeTest质量开放平台团队的专栏

把机器变成人!WeTest云测GDOC现场分享精选

答应各位的GDOC现场分享终于整理成文了。特地精选了最重要、干货的部分呈现给大家。

15830
来自专栏IMWeb前端团队

前端进阶之路小思

? 有人说产品开发过程中web前端没有结论,只有随需求不停的修改,但是项目必须要有阶段性的结论,作为一个前端开发,如何避免为了某一个需求而陷入反复更改的困境呢...

218100
来自专栏互联网数据官iCDO

为什么说手机应用危在旦夕

前言:手机应用市场的发展前景如何?作者讲述了11个正在发生的情况和趋势,何去何从,就交给你自己来判断吧。 APP的下载量正在逐步放缓 据某app分析公司研究显示...

28960
来自专栏云市场·精选汇

什么样的网站才是好的网站?

经常会碰到这样的建站客户。“你好,我想做个网站,一个好的网站。”嗯,好。客户提要求了,要做一个好的网站,那“好的网站”要如何去评判了?

42290
来自专栏Java后端技术栈

架构师升级步骤和平时的工作内容!

对于程序员来说,架构师是职业发展的一道坎,如果跨过去了,后面就前途无量了,否则可能一直得做着代码coding的事情。本文将从“如何升级”和“平时工作内容”两方面...

10120
来自专栏Java进阶架构师

好文 | 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容

之前有网友说想看架构师升级的文章,所以写了本文。先给本文中架构师做个定义:第一,能力上达到(似乎是废话),第二,公司肯承认,不仅能给架构师的头衔,更能按架构师的...

11510
来自专栏Keegan小钢

小钢聊全栈

全栈正在变得越来越流行,很多人都有意愿或正在往全栈的方向去发展。我自己也一直在往这个方向不断提升自己,到目前为止,算是略有小成,勉强称得上是一个合格的全栈架构师...

11540
来自专栏Golang语言社区

十大游戏开发引擎优缺点对比:你会选哪个?

游戏引擎作为开发商研发游戏时必备的工具,每一款引擎的运用都关乎自家大作未来的销量,所以游戏商们对引擎的选择也非常小心翼翼。现在,手游、页游等新兴平台的表现又非常...

1.9K110

扫码关注云+社区

领取腾讯云代金券