DevSecOps是一種保護(hù)軟件開(kāi)發(fā)的安全理念,充分吸收了“敏捷(agile)”和“精益開(kāi)發(fā)(lean startup)” 這兩種主流軟件開(kāi)發(fā)方法的成功經(jīng)驗(yàn),使用人工智能和機(jī)器學(xué)習(xí)提升軟件開(kāi)發(fā)自動(dòng)化水平。DevSecOps目前正在美國(guó)各軍種中大規(guī)模推廣應(yīng)用。本文主要介紹美海軍及海軍陸戰(zhàn)隊(duì)的應(yīng)用情況。
近日,美海軍信息戰(zhàn)中心(NIWC)大西洋分部首次向美海軍陸戰(zhàn)隊(duì)提供了“開(kāi)發(fā)、安全和運(yùn)行”,即DevSecOps。DevSecOps是一種商業(yè)最優(yōu)方法,它徹底改變了軟件產(chǎn)業(yè),近年來(lái)在美軍事領(lǐng)域取得了較大進(jìn)展。
圖1 海軍信息戰(zhàn)中心大西洋分部的企業(yè)工程團(tuán)隊(duì)正在部署DevSecOps開(kāi)發(fā)軟件
1
DevSecOps概述
DevSecOps是一種保護(hù)軟件開(kāi)發(fā)的安全理念,其核心是將安全貫徹至整個(gè)業(yè)務(wù)周期的每一個(gè)環(huán)節(jié)(包括開(kāi)發(fā)、安全、運(yùn)維)。從廣義上來(lái)說(shuō),DevSecOps意味著“更快地為客戶提供價(jià)值”。它將程序員(Dev)與系統(tǒng)管理員(Ops)聯(lián)系起來(lái),同時(shí)將安全性(Sec)嵌入到開(kāi)發(fā)的每個(gè)步驟中。
近年來(lái),DevSecOps模型充分吸收了“敏捷(agile)”和“精益開(kāi)發(fā)(lean startup)” 這兩種主流軟件開(kāi)發(fā)方法的成功經(jīng)驗(yàn),兩者因?qū)鹘y(tǒng)的“瀑布(waterfall)”式“規(guī)劃-設(shè)計(jì)-開(kāi)發(fā)-測(cè)試-交付”縮減為“最小變量產(chǎn)品(MVP)”而聞名?!熬骈_(kāi)發(fā)”不會(huì)耗費(fèi)幾年時(shí)間交付可能無(wú)法滿足客戶需求的產(chǎn)品,而是推廣一種“快速失效”的方法,每周或每?jī)芍馨才磐瞥鲆淮巫钚∽兞慨a(chǎn)品,讓客戶評(píng)分,以便開(kāi)發(fā)人員不斷改進(jìn)。下圖為美海軍“敏捷”和DevSecOps概念示意圖。
圖2 美海軍“敏捷”和DevSecOps概念
除了“敏捷”和“精益開(kāi)發(fā)”法,自動(dòng)化是DevSecOps環(huán)境中的一個(gè)關(guān)鍵驅(qū)動(dòng)因素。通過(guò)使用人工智能和機(jī)器學(xué)習(xí),DevSecOps的自動(dòng)化服務(wù)可持續(xù)報(bào)告平臺(tái)的功能健康狀況,包括與賽博攻擊、用戶數(shù)量、停機(jī)和降級(jí)相關(guān)的關(guān)鍵指標(biāo)。
2
美軍推動(dòng)DevSecOps發(fā)展
2018年5月,美空軍Kessel Run實(shí)驗(yàn)室與國(guó)防創(chuàng)新小組成功將DevSecOps方法應(yīng)用于軟件開(kāi)發(fā),在4個(gè)月內(nèi)實(shí)現(xiàn)一款簡(jiǎn)化版軟件部署;此后,《空軍快速采辦活動(dòng)指南》指出,“除非獲得許可,否則所有新項(xiàng)目均采用敏捷軟件開(kāi)發(fā)”。
2019年1月,美國(guó)防部《2018財(cái)年作戰(zhàn)試驗(yàn)鑒定報(bào)告》建議,采用DevSecOps等迭代遞增式采辦和鑒定方法,以數(shù)周甚至數(shù)日為周期快速形成軟件原型,提高軟件交付與部署能力。5月,國(guó)防部向國(guó)會(huì)提交國(guó)防創(chuàng)新委員會(huì)“軟件采辦與實(shí)踐”報(bào)告,建議重構(gòu)軟件采購(gòu)、開(kāi)發(fā)、部署流程,并將軟件開(kāi)發(fā)作為單獨(dú)的預(yù)算類別,以提高軟件快速部署和持續(xù)迭代能力;依據(jù)該報(bào)告,國(guó)防部制定了臨時(shí)軟件采辦框架。8月,國(guó)防部首席信息官發(fā)布《國(guó)防部體系開(kāi)發(fā)安全運(yùn)維基準(zhǔn)設(shè)計(jì)》1.0版,推動(dòng)全軍應(yīng)用敏捷的開(kāi)源軟件開(kāi)發(fā)模式。隨后,國(guó)防部立法提案請(qǐng)求國(guó)會(huì)在科研預(yù)算7個(gè)子類之后創(chuàng)建第8類預(yù)算,為軟件開(kāi)發(fā)提供明確的資金支持,并在2021財(cái)年啟動(dòng)8個(gè)軟件試點(diǎn)項(xiàng)目單元,為期2年,范圍涵蓋軟件全壽命周期。
3
OASIS——美國(guó)海軍DevSecOps實(shí)驗(yàn)室
兩年多前,美國(guó)空軍開(kāi)始接觸DevSecOps,是第一個(gè)成功利用DevSecOps概念的軍種。其成立的Kessel Run實(shí)驗(yàn)室在提高效率方面取得了巨大成功,并引起了國(guó)防部高層領(lǐng)導(dǎo)的注意。美海軍也效仿了空軍Kessel Run模式,NIWC遠(yuǎn)征戰(zhàn)部門(mén)的遠(yuǎn)征企業(yè)系統(tǒng)和服務(wù)(E2S2)團(tuán)隊(duì)于一年多前創(chuàng)立了作戰(zhàn)應(yīng)用和服務(wù)創(chuàng)新站(OASIS),以支持美國(guó)海軍陸戰(zhàn)隊(duì)負(fù)責(zé)計(jì)劃和資源的副司令提出的改進(jìn)企業(yè)軟件開(kāi)發(fā)的要求。2019年夏,E2S2實(shí)現(xiàn)了OASIS的初始運(yùn)行能力,通過(guò)實(shí)施近30項(xiàng)自動(dòng)化平臺(tái)服務(wù)和9項(xiàng)自動(dòng)化應(yīng)用開(kāi)發(fā)服務(wù),鞏固了NIWC大西洋分部DevSecOps的領(lǐng)導(dǎo)地位。這些覆蓋從業(yè)務(wù)運(yùn)營(yíng)到戰(zhàn)術(shù)系統(tǒng)的服務(wù),可能將是國(guó)防部未來(lái)解決方案。OASIS近期通過(guò)了軍方認(rèn)證。
NIWC大西洋分部執(zhí)行理事Peter C. Reddy表示,當(dāng)前,工業(yè)界商業(yè)部門(mén)的屬性已發(fā)生變化,例如物流公司實(shí)際上已是一家配備卡車的軟件公司。海軍部必須成為一家配備作戰(zhàn)人員的軟件公司,這是因?yàn)闊o(wú)數(shù)基于軟件的戰(zhàn)場(chǎng)任務(wù)可以立即受益于DevSecOps,這使得OASIS的未來(lái)與信息環(huán)境中的作戰(zhàn)密切相關(guān)。
NIWC大西洋分部企業(yè)工程團(tuán)隊(duì)負(fù)責(zé)人Jeff Hays表示,軟件工廠正在美國(guó)軍事組織中涌現(xiàn),但OASIS是獨(dú)一無(wú)二的。OASIS不關(guān)注單一渠道或單一平臺(tái),而是給技術(shù)專家提供最新的主流工具以及多重選擇。DevSecOps開(kāi)發(fā)指導(dǎo)Tony Stafford認(rèn)為,從多個(gè)維度來(lái)說(shuō),軟件工廠的概念是為了減少解決方案提供團(tuán)隊(duì)和用戶之間的摩擦,同時(shí)也最大限度地減少將工具交到作戰(zhàn)人員手中的時(shí)間和步驟。這就是為什么OASIS被設(shè)計(jì)成海軍企業(yè)的中心樞紐,負(fù)責(zé)發(fā)現(xiàn)并最大限度地減少低效工作。
4
DevSecOps優(yōu)勢(shì)
NIWC大西洋分部OASIS總監(jiān)Erik Gardner表示,DevSecOps將用戶反饋納入流程中,負(fù)責(zé)搭建產(chǎn)品的程序員能夠直接獲取最終用戶的想法。海軍陸戰(zhàn)隊(duì)在開(kāi)發(fā)未來(lái)戰(zhàn)場(chǎng)工具方面有直接的發(fā)言權(quán)。
DevSecOps的另一個(gè)主要吸引力在于節(jié)約開(kāi)支。NIWC大西洋分部企業(yè)工程和集成服務(wù)領(lǐng)域的技術(shù)專家Robert Neuman稱,與過(guò)去單一的“瀑布”流程不同,如果一個(gè)MVP失敗了,在資源方面不會(huì)產(chǎn)生巨大的影響,項(xiàng)目風(fēng)險(xiǎn)實(shí)際上降低了。“你可能會(huì)有一周時(shí)間倒退重來(lái),但這不是什么大事。”
5
美國(guó)海軍DevSecOps設(shè)計(jì)概念
美海軍對(duì)于應(yīng)用DevSecOps,提出了以下主旨:
先租再買(mǎi),先買(mǎi)再建:僅開(kāi)發(fā)海軍部任務(wù)獨(dú)一無(wú)二的定制能力;將DevSecOps能力作為一項(xiàng)專供本軍種的數(shù)字核心服務(wù)交付并使用;加強(qiáng)軟件工廠建設(shè)和工具網(wǎng)絡(luò)鋪設(shè),并實(shí)現(xiàn)渠道的差異化和局部控制;與國(guó)防部企業(yè)DevSecOps參考設(shè)計(jì)保持一致;使艦隊(duì)賽博司令部能夠看見(jiàn)并持續(xù)控制交付物和目標(biāo)環(huán)境;改變文化,實(shí)現(xiàn)敏捷式開(kāi)發(fā)具有跨工廠互操作性,促進(jìn)重復(fù)利用整合反饋環(huán),并能自助訪問(wèn)生產(chǎn)數(shù)據(jù)和開(kāi)發(fā)基線所有方面做到自動(dòng)化,包括功能測(cè)試將所有項(xiàng)目視為“基礎(chǔ)設(shè)施即代碼(Infrastructure as Code)”6
美國(guó)海軍及陸戰(zhàn)隊(duì)DevSecOps應(yīng)用情況
海軍陸戰(zhàn)隊(duì)業(yè)務(wù)運(yùn)營(yíng)支持服務(wù)(MCBOSS)是由OASIS團(tuán)隊(duì)開(kāi)發(fā)的第一項(xiàng)DevSecOps能力。MCBOSS是一個(gè)多平臺(tái)環(huán)境,包括PEGA、Appian、MarkLogic和Pivotal Cloud Foundry等服務(wù)。NIWC大西洋分部云工程師和DevSecOps負(fù)責(zé)人Jason Anderson指出,如果MCBOSS平臺(tái)是汽車,那么ADTS團(tuán)隊(duì)的服務(wù)將是汽油、石油和電力。
海軍還成立了一個(gè)名為應(yīng)用、開(kāi)發(fā)和測(cè)試服務(wù)(ADTS)的團(tuán)隊(duì),大部分自動(dòng)化測(cè)試和構(gòu)建工作是由該團(tuán)隊(duì)完成,使DevSecOps得以在MCBOSS環(huán)境下運(yùn)行,從而推動(dòng)OASIS總體目標(biāo)的實(shí)現(xiàn)。
在MCBOSS啟動(dòng)不久,海軍陸戰(zhàn)隊(duì)就開(kāi)始使用首個(gè)OASIS開(kāi)發(fā)的應(yīng)用程序——監(jiān)察長(zhǎng)(IG)案例行動(dòng)管理程序,該程序提供了對(duì)監(jiān)察長(zhǎng)調(diào)查相關(guān)數(shù)據(jù)的實(shí)時(shí)跟蹤。
最近,OASIS執(zhí)行了一個(gè)海軍創(chuàng)新科學(xué)與工程項(xiàng)目,以驗(yàn)證OASIS開(kāi)發(fā)的美國(guó)海軍陸戰(zhàn)隊(duì)?wèi)?yīng)用程序與海軍綜合海上網(wǎng)絡(luò)和企業(yè)服務(wù)(CANES)的互操作性。
軟件開(kāi)發(fā)高級(jí)科技經(jīng)理Kathryn Murphy表示,正在繼續(xù)與NIWC太平洋分部的同行合作,推動(dòng)整個(gè)海軍企業(yè)和國(guó)防部的DevSecOps解決方案?!霸贠ASIS等項(xiàng)目上持續(xù)取得成功的關(guān)鍵在于讓員工了解可用的軟件工廠,并準(zhǔn)備好成功使用它們。”
7
其他方面
將DevSecOps引入傳統(tǒng)組織需要在文化和理念上進(jìn)行相當(dāng)大的轉(zhuǎn)變。真正能實(shí)時(shí)解決實(shí)際問(wèn)題的軟件不僅需要強(qiáng)大的自動(dòng)化能力,還需要良好的傾聽(tīng)技能。在DevSecOps文化中,最好是對(duì)20個(gè)有相同問(wèn)題的人進(jìn)行20次不同的采訪,效果比閱讀需求文檔好。20人中可能有12人說(shuō)的話與紙上的完全不同。每個(gè)視角都很重要。
DevSecOps方法的支持者表示,在現(xiàn)代戰(zhàn)場(chǎng)上,快速變化的技術(shù)以閃電般的速度改變著局面,傳統(tǒng)的采辦流程根本無(wú)法將最新的軟件設(shè)備投入現(xiàn)代戰(zhàn)場(chǎng)。他們認(rèn)為必須轉(zhuǎn)換思維,改變不僅不可避免,而且必須持續(xù)進(jìn)行。OASIS總監(jiān)Erik Gardner認(rèn)為,軟件開(kāi)發(fā)需要在實(shí)踐和思維上進(jìn)行徹底的文化轉(zhuǎn)變,以加快解決作戰(zhàn)人員的問(wèn)題?!安粌H僅是舊的流程和規(guī)定導(dǎo)致了更晚的交付時(shí)間,”他說(shuō)?!岸夷壳凹夹g(shù)領(lǐng)域的現(xiàn)狀會(huì)把錯(cuò)誤的東西交到作戰(zhàn)人員手中。我們不能犯這樣的錯(cuò)誤。”