DevSecOps的實施步驟及其常見誤區(qū)
只要實施得當,DevOps足以為各類企業(yè)組織帶來豐碩的回報,比如改善團隊間的協(xié)作效果、加快產(chǎn)品上市速度、提高整體效率并提升客戶滿意度等等。但如果不切實考慮安全保障,那么以上一切積極因素都無法真正轉化為收益。忽略掉安全問題,一切利用DevOps改善工作流程的努力都將付之東流。DevSecOps則有望破解這一困局。
在本文中,我們將共同了解各類DevSecOps實施步驟及其常見誤區(qū)。
在DevOps出現(xiàn)之前,企業(yè)組織只在軟件開發(fā)生命周期(SDLC)的最后階段對產(chǎn)品進行安全檢查。由于關注重點主要集中在應用程序開發(fā)環(huán)節(jié)上,因此相當于變相認定安全性不及其他環(huán)節(jié)重要。到工程師開展安全檢查時,產(chǎn)品的大部分開發(fā)流程已經(jīng)結束,因此即使發(fā)現(xiàn)了安全缺陷,也意味著必須重新編寫無數(shù)行代碼——這無疑是一項費力且耗時的任務。也正因為如此,企業(yè)在這時候往往會選擇能修則修、能拖則拖。換言之,安全保障成了一種“安慰劑”,而不是真正值得大力推動及投入的重要工作。
過去十年以來,IT基礎設施經(jīng)歷了一場巨大的變化。但大多數(shù)安全性與合規(guī)性監(jiān)控工具并沒有同步實現(xiàn)升級。最終結果就是,大部分工具無法根據(jù)典型DevOps的需求快速測試代碼。
此外,網(wǎng)絡犯罪攻擊則以驚人的速度不斷擴大。Juniper Research發(fā)布的一份報告預測,隨著越來越多業(yè)務基礎設施的相互對接,2020年內單次數(shù)據(jù)泄露帶來的平均損失將超過1.5億美元。
很明顯,實施DevSecOps將帶來直接而積極的影響,成為我們手中抵御潛在攻擊挑戰(zhàn)的穩(wěn)固之盾。
安全性貫穿在DevOps流程的各個階段當中
“既要快速交付代碼,又要保障代碼安全”,這聽起來似乎是種相互矛盾的要求。但DevSecOps表示偏不信這個邪。
DevSecOps是一種以“安全生產(chǎn)、人人有責”的立場處理IT安全工作的方法。它要求將安全實踐納入到DevOps管道當中,希望借此實現(xiàn)安全保障在各個軟件開發(fā)工作環(huán)節(jié)中的全面滲透。但這種全流程保護的方法,明顯與以往只在軟件開發(fā)生命周期最終階段關注安全的傳統(tǒng)方法有所沖突。
如果企業(yè)已經(jīng)在推進DevOps,那么考慮轉向DevSecOps肯定是個好主意。DevSecOps的核心與DevOps原則高度契合,因此轉換工作并不會特別困難。通過轉換,企業(yè)能夠將來自不同學科的技術人員匯聚起來,全面增強現(xiàn)有安全流程。
DevSecOps的常見誤區(qū)
DevSecOps中也存在著不少誤區(qū)。比如說,”我們需要‘超級開發(fā)者’才能實現(xiàn)DevSecOps“。事實并非如此。DevSecOps的實施并不需要那種“超級英雄”級別的開發(fā)人員。只要配合適當?shù)募夹g與觀念培訓,充分引導員工們對DevSecOps給予關注,每個人都能成為這股浪潮中的弄潮兒。而且DevSecOps一直強調打破職能孤島,因此開發(fā)團隊應該吸納具有不同技能的人員,為他們提供關于DevSecOps流程及方法的培訓課程,最終與整個產(chǎn)品交付管道相匹配。所以,只要培養(yǎng)現(xiàn)有團隊即可,并不需要雇用一支全新的獨立軍團。
另外一個常見誤區(qū)是,”DevSecOps能替代敏捷化“。其實DevSecOps只是對敏捷化做出了補充,但本身并不能替代敏捷化。二者必須共存,才能保證企業(yè)最大限度提升自身業(yè)務收益。敏捷化強調促進協(xié)作并持續(xù)反饋,但與DevSecOps不同的是,敏捷化并不涉及軟件的測試、質量保證(QA)與生產(chǎn)等環(huán)節(jié)。DevSecOps則要求借敏捷之力全方位增強現(xiàn)有業(yè)務流程。
第三個誤區(qū)是,”肯花錢就能實現(xiàn)DevSecOps“。不盡然。我們能買的只是流程工具,例如用于發(fā)布管理和CI/CD的工具,但卻沒法直接買下整個DevSecOps流程。DevSecOps代表的是一種哲學、一種方法論。真正對業(yè)務產(chǎn)生直接影響的東西,也就是團隊間的高效協(xié)作以及團隊成員的責任心,是沒法直接買到的。
隨著越來越多的企業(yè)意識到DevSecOps的重要性,DevSecOps工程師也愈發(fā)受到人才市場的追捧。那么,最出色的工程師到底該擁有哪些特質?DevSecOps工程師角色本身,必須掌握一些補充性的技能,例如對DevOps核心原則、實踐及文化傾向的深刻理解。候選人還應該熟練掌握Python、Java及Ruby等語言。此外,優(yōu)秀的DevSecOps工程師還應該能輕松運用Chef、Puppet、Checkmarx以及ThreatModeler等程序。
除此之外,DevSecOps專業(yè)人士還需要了解風險評估與威脅建模技術的復雜性,理解最新網(wǎng)絡安全威脅、現(xiàn)代最佳實踐及其他相關軟件。在工作經(jīng)驗層面,擁有DevSecOps從業(yè)經(jīng)歷當然是最好的。但純IT安全(不涉及DevOps)從業(yè)經(jīng)驗也足以支撐起DevSecOps工程師們敏銳的安全嗅覺。
DevSecOps最佳實踐
在DevSecOps的規(guī)劃與實施過程中,這幾方面因素發(fā)揮著重要作用:
首先,安全編碼實踐。安全編碼的重要意義,在于開發(fā)出對安全漏洞具有較高抵御能力的軟件。而非安全的編碼實踐可能引發(fā)多種軟件安全風險,例如泄露企業(yè)組織內的機密信息。因此,最重要的是保證開發(fā)人員擁有充分的技能儲備,并積極在時間與成本投入方面給予支持。此外,企業(yè)還應建立并遵循編碼標準,幫助開發(fā)人員們編寫出更多高質量代碼。
第二,擁抱自動化。與DevOps一樣,自動化在DevSecOps中同樣至關重要。為了在CI/CD環(huán)境中讓安全保障速度與代碼交付速度相匹配,安全也必須邁向自動化新時代。沒有這一前提,大型企業(yè)組織根本無法有效保護開發(fā)者每天提交的大量代碼版本。
對于自動化安全測試,我們必須做出萬全的考慮。出于錯誤目的而選擇了錯誤的自動化工具,反而可能帶來巨大的危害。靜態(tài)應用程序安全測試(SAST)工具目前被廣泛應用于開發(fā)周期早期的持續(xù)檢測與問題識別方案。只有匹配實際需求選擇合適的安全自動化工具,產(chǎn)品的順利交付才能真正得到有效保障。
第三,左移方法。左移測試方法的核心,是在周期之初就將安全性融入應用程序之內,而不再等待交付鏈最后階段的到來。這種方式的主要優(yōu)勢在于加快潛在漏洞的識別速度并即刻加以解決。這種方法本身雖然好處多多,但也會帶來不少隱患。左移方法的一大常見挑戰(zhàn),就是會暫時中斷現(xiàn)有DevOps工作流程。這確實是個問題,但如果企業(yè)決意采用DevSecOps,那么左稱方法從長遠來看仍是一項不可或缺的最佳實踐。
第四,人員、流程與技術。在DevSecOps的成功實施方面,人員、流程與技術可謂三位一體,缺一而不可。哪怕其他條件再完備,如果員工對文化革新不感興趣,那么成熟有效的DevSecOps環(huán)境根本無從談起。雖然說服高層管理團隊接納這樣的重大轉變可能困難重重,但因安全態(tài)勢惡劣而頻繁引發(fā)的重大數(shù)據(jù)泄露事件應該引起大家的高度重視。所以除了安全專家的引導之外,盡可能發(fā)展安全擁護者對于DevSecOps的良好運作同樣至關重要。
任何流程都由多個環(huán)節(jié)組成,其中最重要的當然是工作流標準化與文檔化。一般來說,企業(yè)組織內的各個團隊需要執(zhí)行不同的流程,而DevSecOps則需要團隊共同商定統(tǒng)一流程、并通過協(xié)同執(zhí)行加強開發(fā)周期中的安全水平。同時,技術能夠幫助人們高效執(zhí)行DevSecOps流程,其具體實踐中涉及的常見技術包括自動化與配置管理、安全即代碼、自動合規(guī)性掃描以及主機強化等等。
如何實施DevSecOps
可以想見,DevSecOps的實施將是一個復雜的流程。我們現(xiàn)在將這個流程拆解成以下幾個具體步驟,雖然還沒有任何具體的、連續(xù)的路線圖式步驟設計,但其中大多涵蓋以下環(huán)節(jié)。
首先,一切以規(guī)劃為起點。規(guī)劃的戰(zhàn)略水平與簡潔程度將直接決定最終實施結果。因此,單靠對功能特性的描述還遠遠不夠,專家們還需要建立起測試驗收標準、用戶設計以及威脅模型。下一階段則是開發(fā)環(huán)節(jié),團隊應首先對現(xiàn)有實踐的成熟度開展評估。在此階段,大家可以通過多個來源收集資源以作為路線指導,也可以建立起代碼審查系統(tǒng)。由此支撐起的統(tǒng)一架構,將成為DevSecOps后期成功的重要基礎。
之后則是構建環(huán)節(jié),自動化構建工具無疑是這一階段中絕對的主角。利用此類工具,我們可以構建腳本、將源代碼組合為機器碼等。自動化構建工具不僅提供多種強大的功能、豐富的插件庫,還具備多種易于上手的用戶界面,其中一部分甚至能夠自動檢測易受攻擊的庫并及時加以替換。下一步則是測試,通過穩(wěn)定可靠的測試實踐將強大的自動化測試框架全面引入管道當中。部署工作通常通過IaC工具進行,由其自動執(zhí)行流程并加快軟件交付速度。
作為另一大關鍵步驟,運營維護無疑是運營團隊的一項常規(guī)職能?紤]到零日漏洞可能引發(fā)的巨大威脅,運營團隊必須給予關注;此外,運營團隊還需要重視人為錯誤蔓延,包括使用DevSecOps通過IaC工具快速高效地保護企業(yè)自有基礎設施。流程中的另一項重要因素,在于使用強大且持續(xù)性的監(jiān)控工具,借此保證安全系統(tǒng)能夠按預期形式運行。
規(guī)模擴展同樣不容忽視。虛擬化技術的出現(xiàn),意味著企業(yè)不再需要浪費資源來維護大型數(shù)據(jù)中心。相反,一旦發(fā)生任何威脅,企業(yè)也可以直接擴展IT基礎設施規(guī)模以消化突發(fā)沖擊。
以上只是DevSecOps實施中的一些基礎步驟。根據(jù)項目的具體規(guī)模與復雜性,路線圖可能還需要涵蓋另外一些特定附加步驟。
DevSecOps挑戰(zhàn)
當然,DevSecOps的實施也必然伴隨著一系列挑戰(zhàn)。
阻礙大部分企業(yè)轉向DevSecOps的頭號挑戰(zhàn),當數(shù)文化層面的抵觸情緒,畢竟人更喜歡待在自己熟悉的舒適區(qū)內。另外,在傳統(tǒng)軟件開發(fā)模式當中,安全保障更多屬于“馬后炮”式的措施,聊勝于無而已。
此外,DevSecOps還強調將開發(fā)人員與安全專家統(tǒng)一起來,共同建立起協(xié)作環(huán)境。但這兩大團隊間總是存在一定程度的摩擦,甚至認定對方總在跟自己作對。這種觀點導致二者“老死不相往來”,直接違背了DevSecOps的核心原則。只有改變這種兩頭,才能讓DevSecOps文化思維在企業(yè)內發(fā)展成熟、開花結果。
另一大常見挑戰(zhàn),在于人們往往認定安全保障會拖慢工作速度、甚至阻礙創(chuàng)新嘗試。為了滿足現(xiàn)代業(yè)務需求,開發(fā)人員希望不斷加快代碼的交付速度。但是,安全團隊的核心重點在于保障代碼安全,而這兩個截然不同的目標導致團隊之間難以彼此理解、協(xié)同工作。
根據(jù)Cybersecurity Ventures發(fā)布的報告,到2021年全球網(wǎng)絡安全職位空缺將多達350萬個。由此可以推斷,盡管安全漏洞與攻擊事件一直在不斷增加,但市場上仍然缺乏充足的網(wǎng)絡安全工程師人才。為此,安全專家稀缺很可能成為中小型企業(yè)機構的巨大難題。
與開發(fā)及安全團隊間的協(xié)作不同,運營與安全結合的復雜度往往更高。對于前兩者,我們只需要向開發(fā)人員傳授安全最佳實踐,并引導他們與安全團隊密切合作。雖然這一切確實會改變開發(fā)者的某些日常習慣,但總體來說變化不大。但在嘗試引導運營團隊與安全團隊協(xié)作時,情況就完全不同了。當運營工程師發(fā)現(xiàn)任何異常時,他們想到的往往并不是安全漏洞。對他們來說,最大的隱患往往來自軟件配置錯誤或者基礎設施故障。但對安全團隊來說,異常會讓他們本能地意識到可能存在潛在漏洞。因此,運營工程師們必須重新調整自己對運營環(huán)境的分析方法。
DevSecOps的助益
DevSecOps最重要、也最明顯的助益就是幫助提高整體安全性。如前所述,大家可以在管道的早期階段發(fā)現(xiàn)漏洞,由此降低修復難度。而且由于持續(xù)監(jiān)控到位,DevSecOps還能增強威脅搜尋能力。從商業(yè)角度來看,產(chǎn)品安全度越高、營銷難度就越低。
從SDLC的起步階段搜尋漏洞,意味著能夠以更低成本將其修復。多個團隊將聚集一處共同處理安全問題,由此改善問責能力。這種協(xié)作還有助于提出更加快速有效的安全響應策略,進而構建起更強大的安全設計模式。
DevSecOps還最大限度降低了安全瓶頸的出現(xiàn)頻率。在運行安全檢查之前,安全專家不必等待開發(fā)周期徹底完成。這兩大因素進一步加快了產(chǎn)品交付速度。
DevSecOps還能夠幫助企業(yè)更好地遵循行業(yè)標準法規(guī)!锻ㄓ脭(shù)據(jù)保護條例》(GDPR)等法規(guī)要求人們以更謹慎的態(tài)度處理數(shù)據(jù)。DevSecOps則為管理人員提供更全面的合規(guī)要求印象,以框架的形式降低合規(guī)性難度。
小結
毫無疑問,DevSecOps將徹底改變企業(yè)的安全實現(xiàn)方式。但出于種種原因,包括缺乏對DevSecOps本質的正確認識、員工態(tài)度消極、預算有限以及術語定義含糊不清等,不少中小型企業(yè)對于DevSecOps仍然抱有懷疑態(tài)度。
但必須承認,DevSecOps完全有能力從技術及業(yè)務層面為企業(yè)帶來巨大助益。雖然在起步階段總會有些小問題,但從長遠來看,DevSecOps的實施將幫助企業(yè)一步步脫胎換骨,助力迎來一條未曾設想的發(fā)展道路。

