先人一步的企業(yè)正開始采用安全編程方法和工具,在軟件開發(fā)生命周期的早期階段處理安全問題。MaaS360 by Fiberlink公司的信息安全官David Lingenfelter說:“如果企業(yè)組織在軟件開發(fā)生命周期的早期階段采用安全編程方法,安全問題就比較少。”
對(duì)大多數(shù)云軟件產(chǎn)品而言,開發(fā)和部署的節(jié)奏非常快,以至于如果在開發(fā)生命周期的開始階段不兼顧安全,代碼發(fā)布后,如果繼續(xù)進(jìn)行安全測(cè)試,隨后會(huì)發(fā)現(xiàn)需要解決的問題。“這導(dǎo)致了第二次重大調(diào)整,沒有采用安全編程方法的公司不得不發(fā)布更多的安全代碼補(bǔ)丁,數(shù)量比改善產(chǎn)品的代碼變更還要多。”
實(shí)施安全代碼審查
一個(gè)合理的做法就是,一開始就執(zhí)行安全代碼審查。這有助于緩解新安全漏洞的一些威脅,無論是凈化數(shù)據(jù)還是核實(shí)輸入。這還可以幫助開發(fā)團(tuán)隊(duì)確立一套合適的安全編程方法,從而有助于盡量減少風(fēng)險(xiǎn)部位。此外,如果采用安全編程方法,發(fā)現(xiàn)和審查新安全漏洞的工作就不會(huì)淪為事后諸葛亮。
云應(yīng)用程序和服務(wù)極具競(jìng)爭(zhēng)力,而云的本質(zhì)就是能夠迅速變化、適應(yīng)。這就需要迅速改變?cè)品?wù),以便與對(duì)手不相上下,或者領(lǐng)先對(duì)手一步。Lingenfelter說:“一大挑戰(zhàn)就是,安全的本質(zhì)就是增加了開銷,因?yàn)樗娱L(zhǎng)了開發(fā)周期。”
這在傳統(tǒng)老牌企業(yè)可能是個(gè)比較大的挑戰(zhàn)。在項(xiàng)目啟動(dòng)后整合安全,甚至在生產(chǎn)環(huán)境中整合安全會(huì)給現(xiàn)有環(huán)境帶來極大的破壞。這是由于,一開始可能會(huì)發(fā)現(xiàn)許多問題需要解決,不僅僅是代碼方面,還有可能是整個(gè)流程方面。需要得到管理層的認(rèn)可,才能面對(duì)這一現(xiàn)實(shí):給開發(fā)生命周期增添安全將會(huì)在整個(gè)流程中增添一些障礙。這可能會(huì)阻礙或者延長(zhǎng)升階周期。別試圖一下子實(shí)施所有安全做法,而是要逐漸分階段實(shí)施。
將安全外包給PaaS
平臺(tái)即服務(wù)(PaaS)提供商OutSystems公司的產(chǎn)品戰(zhàn)略主管Sean Allen問道:“即使你讓開發(fā)人員重視安全,但是如果你迫于趕期限,最初注意的事項(xiàng)有哪些會(huì)在開發(fā)周期的后期階段也會(huì)注意到?要是根本沒有一套嚴(yán)格的程序,最初注意的事項(xiàng)(比如安全)就會(huì)被忽略,因?yàn)槟阋礇]有時(shí)間,要么認(rèn)為這并不重要,或者是不想因浪費(fèi)人才而分心。”
一種辦法就是考慮采用合適的應(yīng)用程序快速交付(RAD)平臺(tái)。這有助于趕在最后期限前完工,可以處理開發(fā)安全應(yīng)用程序的大多數(shù)繁瑣事務(wù)。現(xiàn)代的RAD平臺(tái)可以自動(dòng)將安全納入到開發(fā)的應(yīng)用程序當(dāng)中。
Allen說:“借助合適的基于云的安全RAD平臺(tái)(作為PaaS來提供),你就讓能自己準(zhǔn)備好迎接最終的成功。你不僅一開始就奠定了安全基礎(chǔ),而且你開發(fā)的應(yīng)用程序一開始就考慮到了安全。”
使用云端代碼分析
就在不久前,企業(yè)組織要想確保其應(yīng)用程序的安全性,還不得不購(gòu)買成本高昂的軟件包,并且安裝在企業(yè)內(nèi)部。Brian Russell是全美安全、健康和工程解決方案公司Leidos專門負(fù)責(zé)網(wǎng)絡(luò)安全解決方案的工程師,他說:“如今,靜態(tài)代碼分析、動(dòng)態(tài)代碼分析和Web應(yīng)用程序安全測(cè)試之類的工作現(xiàn)在可以通過云來實(shí)現(xiàn),作為按需提供的服務(wù)。”他還負(fù)責(zé)云安全聯(lián)盟(Cloud Security Alliance)的安全物聯(lián)網(wǎng)項(xiàng)目。
IBM和惠普等傳統(tǒng)的軟件質(zhì)量保證開發(fā)商分別通過各自的AppScan和Fortify產(chǎn)品線來提供這項(xiàng)服務(wù)。還有一些更新穎的方案,借助眾包專家來審查代碼,并提供發(fā)現(xiàn)的軟件缺陷方面的報(bào)告。BugCrowd就是這方面的一個(gè)典例。Russell解釋:“這些服務(wù)意味著,企業(yè)組織可以有效地外包這些關(guān)鍵的安全職能,不過有必要指出,企業(yè)自身仍然需要具備軟件開發(fā)方面的專長(zhǎng)。”
SDLC期間的不同活動(dòng)
Russell建議,一個(gè)好的做法就是明確劃定周期中每個(gè)階段的安全活動(dòng)。在軟件設(shè)計(jì)階段,確保執(zhí)行威脅建模工作,發(fā)現(xiàn)代碼的高價(jià)值方面,了解數(shù)據(jù)流動(dòng)情況,并深入了解某人有可能如何濫用應(yīng)用程序。
在開發(fā)階段,充分利用安全開發(fā)最佳實(shí)踐,比如代碼安全審查。Russell補(bǔ)充說:“采用結(jié)對(duì)編程之類的做法也是明智之舉,這同時(shí)帶來了功能和安全方面的好處,如果之前已有所投入,訓(xùn)練開發(fā)人員掌握安全編程做法,更是明智。”
新代碼進(jìn)入到整合階段后,就要充分利用持續(xù)整合(CI)軟件來整合代碼,并且定期測(cè)試以查找軟件缺陷。在軟件開發(fā)生命周期(SDLC)的這個(gè)環(huán)節(jié),適合使用基于云的軟件保證服務(wù),其中許多服務(wù)直接整合到CI環(huán)境中。還有一些服務(wù)(比如Veracode提供的服務(wù))可以對(duì)二進(jìn)制代碼執(zhí)行靜態(tài)分析,而不是非得提供整個(gè)代碼庫(kù)。Web應(yīng)用程序部署后,繼續(xù)使用基于云的服務(wù),這些服務(wù)可以定期掃描,查找運(yùn)行中軟件所存在的安全漏洞。
Russell提醒道:“與軟件配套的安全基礎(chǔ)設(shè)施不應(yīng)該在最后擴(kuò)充上去了事。就最初的架構(gòu)和實(shí)施而言,網(wǎng)絡(luò)防火墻、Web應(yīng)用程序防火墻和身份管理系統(tǒng)應(yīng)該是設(shè)計(jì)的一部分。”在過去,由于這些安全硬件設(shè)備需要高昂成本,很難將這種安全基礎(chǔ)設(shè)施部署到開發(fā)環(huán)境中。
安全廠商們正開始擯棄資本成本高企的安全硬件設(shè)備,改用可以迅速部署、價(jià)格靈活的虛擬安全設(shè)備。這讓安全得以一開始就在云端成為開發(fā)流程的一部分。隨著開發(fā)人員編寫軟件、擴(kuò)建系統(tǒng),虛擬安全環(huán)如同虛擬安全設(shè)備那樣已經(jīng)實(shí)施到位。Russell建議:“務(wù)必要與支持真正的動(dòng)態(tài)云環(huán)境的安全廠商合作,那樣才能夠無縫、低成本地搭建安全基礎(chǔ)設(shè)施,以支持整個(gè)軟件開發(fā)生命周期。”‘
原文標(biāo)題:Improve software quality by paying early attention to application security