先人一步的企业正开始采用安全编程方法和工具,在软件开发生命周期的早期阶段处理安全问题。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建议:“务必要与支持真正的动态云环境的安全厂商合作,那样才能够无缝、低成本地搭建安全基础设施,以支持整个软件开发生命周期。”‘
原文标题:Improve software quality by paying early attention to application security