這幾年,隨著云計算和容器的普及,DevOps開始從互聯(lián)網(wǎng)向傳統(tǒng)行業(yè)滲透,普及很快,尤其是在金融、科技等IT及業(yè)務的行業(yè)。隨著DevOps的普及,DevSecOps也開始被一些企業(yè)關注。根據(jù)GitLab發(fā)布的2021年全球DevSecOps年度調(diào)查報告,36% 的受訪者團隊已經(jīng)使用了 DevOps 或者 DevSecOps 開發(fā)軟件;而 31.78% 的受訪者團隊在使用 Agile/Scrum。尤其是那些遷往云平臺的新興應用,DevSecOps的應用得到更多普及機會。而Synopsys發(fā)布的《2020年DevSecOps實踐和開源管理報告》也表明,DevSecOps在全球范圍內(nèi)迅速增長,總計63%的受訪者表示他們正在將一些DevSecOps活動融入其軟件開發(fā)計劃中。
DevSecOps的吸引力很大程度上源于企業(yè)對軟件的安全性、軟件的質(zhì)量和軟件生產(chǎn)的彈性的需求。而在日益激烈的市場競爭壓力之一,企業(yè)的這些需求將更加強烈,因此,DevSecOps未來發(fā)展前景被普遍看好,特別是在當期DevOps得到越來越廣泛頻普及的情況下。
為什么需要DevSecOps?
DevSecOps與DevOps的差別是前者比后者多了“Sec(Security)”上。實際上,這兩者之間的差別也正是體現(xiàn)在“安全”上。簡單地說,把Security納入到DevOps的體系之中,人人都是安全員,這就是DevSecOps。
眾所周知,DevOps顛覆了傳統(tǒng)的瀑布流模式,它打通了開發(fā)和運維之間聯(lián)系,讓兩者順利進行溝通、協(xié)作與整合,再通過自動化和持續(xù)迭代、持續(xù)集成的敏捷,實現(xiàn)了軟件的快速迭代和交付。但這個流程其實和安全關系不大,基本不涉及軟件的安全,或者說,軟件的安全性評估還是按照傳統(tǒng)的流程,處于軟件交付的最后階段。這就導致軟件安全檢查和評估要么被忽略(因為交付時間的壓力),或者軟件被迫延期交付,使得DevOps的效果大打折扣。
根據(jù)DevSecOps 社區(qū)發(fā)布的調(diào)研報告,雖然都認為安全很重要,但是連續(xù)3年接近一半的開發(fā)者承認他們基本沒有時間去處理安全問題。另一方面,相對運維人員的不足,安全人員在開發(fā)團隊中更為稀缺。
DevSecOps 的目的就是要設法改變這一現(xiàn)狀。DevSecOps通過在 DevOps 流程的每個階段或檢查點嵌入安全性檢查來消除 DevOps 和安全之間的障礙,從而更快、更安全地生成高質(zhì)量的代碼。DevSecOps是在軟件開發(fā)生命周期(SDLC)的早期引入安全性,目標是讓參與SDLC的每個人負責安全來開發(fā)更安全的應用程序,讓業(yè)務、技術和安全協(xié)同工作以開發(fā)出更安全的軟件。
DevSecOps的好處是在提高軟件安全性的同時提高開發(fā)團隊的開發(fā)效率,縮短交付時間,讓產(chǎn)品盡快上市。比如,由于DevSecOps將安全納入到最初的開發(fā)流程中,而不是等到最后到進行安全檢查之前,同時,安全專家不必等待開發(fā)周期徹底完成,這兩大因素進一步加快了產(chǎn)品交付速度。
其次,因為DevSecOps讓人人都是安全員,在軟件開發(fā)的早期就把漏洞發(fā)現(xiàn)納入到開發(fā)流程中來,借此降低修復的難度和成本,而且,就從商業(yè)角度來看,軟件安全性越好對后面的市場營銷越有利,從而提升軟件盈利能力。另一方面,DevSecOps由于將開發(fā)、運維和安全團隊聚集一起來處理安全問題,培養(yǎng)的這種跨團隊協(xié)作精神非常有助于產(chǎn)生出更快速有效的安全響應策略,有利于構建起更強大的安全設計模式。
讓DevSecOps真正落地
DevSecOps是在DevOps落地的前提下部署的,它和DevOps一樣非常重視協(xié)作,需要改變?nèi)藗兊年P鍵、調(diào)整流程、借力自動化工具。其中對企業(yè)轉(zhuǎn)向DevSecOps最大的阻力還是來自企業(yè)文化,一般而言,開發(fā)團隊不愿意改變自己的開發(fā)流程,更愿意繼續(xù)沿用傳統(tǒng)的開發(fā)方法。另一方面,DevSecOps特別強調(diào)將開發(fā)人員與安全人員統(tǒng)一起來,共同建立起協(xié)作環(huán)境。但這兩大團隊間總是存在一定程度的摩擦,甚至認定對方總在跟自己作對,這直接違背了DevSecOps的核心原則。只有改變這種狀況才能讓DevSecOps文化在組織內(nèi)落地、開花結果。
很多企業(yè)在引入DevSecOps的另一大常見挑戰(zhàn)在于,常有人認定安全保障會拖慢軟件開發(fā)工作速度、甚至阻礙創(chuàng)新。為了滿足業(yè)務需求,為了商業(yè)競爭,開發(fā)人員希望不斷加快代碼的交付速度。但是,安全團隊的核心重點在于保障代碼安全,而這兩個截然不同的目標導致團隊之間難以彼此理解、協(xié)同工作。
另外,安全人員的不足也可能影響DevSecOps的落地。如前所述,在開發(fā)流程中,安全人員原本就是相對缺乏的,而且就整個行業(yè)而言,相對于嚴峻的安全形勢(不斷爆出的安全漏洞與攻擊事件),安全人員也是不足的。根據(jù)Cybersecurity Ventures發(fā)布的報告,2021年全球網(wǎng)絡安全職位空缺將多達350萬個,因此,安全專家的不足很可能是很多中小型開發(fā)團隊面對的一個難題。
DevSecOps落地的另一個問題是自動化工具還需要優(yōu)化和豐富。和DevOps一樣,DevSecOps也非常依賴自動化的工具,需要借助工具來構建腳本、將源代碼進行編譯、進行軟件漏洞掃描。一個好用的自動化工具不僅要提供多種強大的功能、豐富的插件庫,還具備多種易于上手的用戶界面,其中一部分甚至能夠自動檢測易受攻擊的庫并及時加以替換。目前,在自動化工具方面主要以開源為主,這些工具的易用性、安全性還有不小的改進空間。
不過,盡管DevSecOps在落地過程中還存在這樣那樣的障礙,但是在改善軟件質(zhì)量、提高軟件安全性以及縮短交付期等壓力之下,作為應對這些需求最為有效的辦法之一的DevSecOps被認可、被部署應該是眾望所歸。顯然,這種需求越強烈,DevSecOps越是有望迎來自己的高速發(fā)展時期,這一時期相信不會太遠。