最近幾年,國內(nèi)越來越多的企業(yè)和軟件開發(fā)團(tuán)隊(duì)開始踐行 DevOps 的研發(fā)模式。隨著 DevOps 的發(fā)展,研發(fā)安全保障的思維和技術(shù)也在進(jìn)一步演化,其中,一個重要思想是 DevSecOps。但是,行業(yè)中關(guān)于 DevSecOps 的具體實(shí)踐分享比較少,很多企業(yè)只能“摸著石頭過河”。DevSecOps 誕生的背景是什么?它如何在企業(yè)落地?企業(yè)怎樣在內(nèi)部塑造 DevSecOps 的文化?…… 針對上述問題,InfoQ 記者采訪了騰訊云產(chǎn)品安全負(fù)責(zé)人、騰訊安全云鼎實(shí)驗(yàn)室安全總監(jiān) Fooying。
1
從 DevOps 到 DevSecOps
當(dāng)今,隨著云計(jì)算普及,微服務(wù)等基礎(chǔ)架構(gòu)的成熟,業(yè)務(wù)高速發(fā)展帶來對開發(fā)運(yùn)維更高效的要求,企業(yè)開發(fā)運(yùn)維模型也從傳統(tǒng)的瀑布模型演變到敏捷模型再到 DevOps。更敏捷的開發(fā)運(yùn)維模式、更快的交付,甚至更小化的可行性產(chǎn)品,這些包含了文化、流程、機(jī)制、工具等變化和要求,“其實(shí),這都給安全帶來了挑戰(zhàn)”。Fooying 說:“所以,必然需要新的安全模式或方法去適應(yīng)這種變化,保障安全地及時有效性?!?/p>
而 DevSecOps 正是一種解決方案。它是一套基于 DevOps 體系的全新 IT 安全實(shí)踐的框架和模型,糅合了開發(fā)、安全及運(yùn)營理念。
2
DevSecOps 詮釋
眾所周知,Gartner 在 2012 年首次提出 DevSecOps 理念。四年后,它發(fā)布了一份名為《DevSecOps: How to Seamlessly integrate Security into DevOps》的報告。
這份報告的核心理念是:安全是全體 IT 團(tuán)隊(duì)所有成員的責(zé)任,要貫穿到業(yè)務(wù)生命周期的每一個環(huán)節(jié)。對應(yīng) DevOps 快速交付和靈活響應(yīng)變化,DevSecOps 的價值是在不犧牲安全性的前提下,快速落地和實(shí)施安全。
除了強(qiáng)調(diào)每個人都對安全負(fù)責(zé),DevSecOps 還強(qiáng)調(diào)安全前置,以及要柔和的、嵌入到企業(yè)現(xiàn)有的開發(fā)流程體系。
從 DevSecOps 工具鏈來看,它分為十個階段,分別是計(jì)劃(Plan)、創(chuàng)建(Create)、驗(yàn)證(Verify)、預(yù)發(fā)布(Preprod)、發(fā)布(Release)、預(yù)防(Prevent)、檢測(Detect)、 響應(yīng)(Respond)、預(yù)測(Predict)、適應(yīng)(Adapt)。其中,預(yù)防(Prevent)舊稱配置(Configure)。
在 Fooying 看來,DevSecOps 有三個關(guān)鍵點(diǎn):人和文化、流程、技術(shù)。
在人和文化方面,“傳統(tǒng)安全里,業(yè)務(wù)發(fā)展優(yōu)先,安全是‘以后’才會發(fā)生的事情,甚至安全被視為業(yè)務(wù)發(fā)展的阻礙,而 DevSecOps 強(qiáng)調(diào)的是人人參與安全,人人為安全負(fù)責(zé),安全是大家的事?!彼f。
在流程方面,要更多地考慮整合流程,建立相關(guān)安全流程,加強(qiáng)不同團(tuán)隊(duì)間的協(xié)作。同時,安全需要低入侵、柔和的嵌入開發(fā)和運(yùn)維流程。
在技術(shù)方面,通過構(gòu)建安全工具鏈,實(shí)現(xiàn)更多的自動化安全檢測。
此外,落地實(shí)踐上,隨著 DevSecOps 整體理論和實(shí)踐的不斷成熟,行業(yè)專家也提出了一些實(shí)踐的關(guān)鍵點(diǎn),比如 2018 年,有專家提出“Golden Pipeline”黃金管道,強(qiáng)調(diào)自動化工具鏈支撐,與 CI/CD 流程的集成;2019 年,有專家在 RSAC 上提出 DevSecOps 九大實(shí)踐關(guān)鍵因素和文化融合七個階段,強(qiáng)調(diào)文化融合和實(shí)踐效果度量;2020 年,有人則提出風(fēng)險管理、合規(guī)與治理融入 DevSecOps,聚焦組織內(nèi)部 DevSecOps 轉(zhuǎn)型,強(qiáng)調(diào)人的因素。
3
騰訊 DevSecOps 的落地實(shí)踐
隨著業(yè)務(wù)發(fā)展和產(chǎn)品的快速迭代,安全始終跟不上業(yè)務(wù)的腳步,“再多的安全人力也不夠”,騰訊希望通過落地 DevSecOps,解決安全效率以及持續(xù)降低安全修復(fù)成本。
Fooying 說:“整體的實(shí)踐是跟研發(fā)運(yùn)營模式一起變更的。最早從工具鏈和 CI/CD 流程中安全的嵌入開始,希望通過提供好用、易用的安全工具,讓業(yè)務(wù)在更早階段參與安全,用安全工具實(shí)現(xiàn)自動化地收斂安全問題?!?/p>
在落地過程中,第一大難題是 DevSecOps 文化的塑造。文化塑造絕非易事,也非一時之功,它需要企業(yè)持續(xù)花費(fèi)時間和精力。
Fooying 表示,“雖然我們總是通過安全事件反向驅(qū)動,讓業(yè)務(wù)團(tuán)隊(duì)更重視安全,但其實(shí)安全是生命線,它是業(yè)務(wù)的增值和保障。在騰訊云,大部分的業(yè)務(wù)團(tuán)隊(duì)都很重視安全,只是業(yè)務(wù)團(tuán)隊(duì)有業(yè)績的訴求,所以如何在兩者之間尋求平衡,這是很重要的。”
簡言之,核心點(diǎn)在于怎樣在保障安全有效性的同時能滿足業(yè)務(wù)的快速迭代。
為了讓 DevSecOps 的文化深入組織、深入員工,騰訊采取了以下措施:
在安全文化塑造上,與 HR、QA 團(tuán)隊(duì)進(jìn)行常規(guī)的安全培訓(xùn)與意識宣傳,提高大家的安全意識,讓大家了解安全工具的使用;
在業(yè)務(wù)團(tuán)隊(duì),設(shè)置安全接口人。因?yàn)樽屗腥硕贾匾暟踩?、懂安全,這很難,所以需要先搭橋梁,讓作為橋梁的接口人配合安全團(tuán)隊(duì)推進(jìn)一些安全工作,再影響到整個業(yè)務(wù)團(tuán)隊(duì);
在度量等維度,安全團(tuán)隊(duì)和 QA 團(tuán)隊(duì)一起,在質(zhì)量體系中建立安全質(zhì)量體系,比如安全信譽(yù)積分,來實(shí)現(xiàn)對不同團(tuán)隊(duì)的安全度量;
嘗試“安全卓越榜”等安全榮譽(yù)體系,通過正向激勵讓業(yè)務(wù)團(tuán)隊(duì)認(rèn)知和重視安全工作等。
對騰訊而言,DevSecOps 落地的第二大難題是缺少統(tǒng)一的研發(fā)運(yùn)營流程與平臺。
安全的落地需要依托研發(fā)運(yùn)營流程,而騰訊內(nèi)部不同團(tuán)隊(duì)之間使用的工具、平臺和流程差異比較大,那么,無論是工具鏈的構(gòu)建,還是流程的安全建設(shè)與安全管控等,情況都比較復(fù)雜。
為解決這個問題,F(xiàn)ooying 他們最開始希望通過強(qiáng)制規(guī)范等方式要求業(yè)務(wù)團(tuán)隊(duì)統(tǒng)一,但這種方式阻力太大,不現(xiàn)實(shí),因此,他們又換了一種思路:
在必要環(huán)節(jié),安全團(tuán)隊(duì)進(jìn)行額外投入;
針對與研發(fā)運(yùn)營流程和平臺強(qiáng)結(jié)合的安全動作,安全進(jìn)行不同流程和平臺的適配;
而其他安全團(tuán)隊(duì)可控度較高的安全動作維度,安全團(tuán)隊(duì)提供多檢測方式和能力的支持,統(tǒng)一封裝與輸出到一個平臺。
簡言之,通過多種方式來滿足業(yè)務(wù)團(tuán)隊(duì)的不同需求,但整體上,F(xiàn)ooying 他們會把握一個點(diǎn),即安全數(shù)據(jù)結(jié)構(gòu)統(tǒng)一,以及數(shù)據(jù)的統(tǒng)一回傳。這樣,業(yè)務(wù)團(tuán)隊(duì)不管采用哪種方式、哪個平臺,他們都能通過數(shù)據(jù)確認(rèn)產(chǎn)品接入安全流程的完整度、安全動作覆蓋率以及有效性。
“一切的基礎(chǔ)就是資產(chǎn)的關(guān)聯(lián)和統(tǒng)一維護(hù),這是挺大的工作量,比如獨(dú)立提交的靜態(tài)代碼掃描的源碼包如何與具體產(chǎn)品關(guān)聯(lián),可能更多是通過流程等方式輔助進(jìn)行?!彼f。
在工具層面,據(jù) Fooying 介紹:騰訊內(nèi)部大部分的安全工具是自研的,也采購了部分工具。他們選擇工具主要關(guān)注工具能力、性能、易用性和擴(kuò)展性。
能力上,維度比較多,包括檢出率、漏報率、支持的風(fēng)險類型數(shù)、支持的開發(fā)語言數(shù)、檢測規(guī)則等知識庫更新及時性等。
性能上,會關(guān)注掃描速度、資源占用等?!霸诎踩度肓鞒毯?,比如一次掃描花費(fèi)的時間會直接影響整體流程的時間,而效率與對業(yè)務(wù)的影響又是 DevSecOps 落地的核心點(diǎn)”。
易用性上,主要是使用體驗(yàn)等維度,比如報告的導(dǎo)出可讀性、建立掃描任務(wù)是否簡單、業(yè)務(wù)團(tuán)隊(duì)是否能直接上手。
擴(kuò)展性上,不同公司有不同的業(yè)務(wù)特性,要考慮針對不同的編程語言、框架等不同環(huán)境是否快速方便,甚至非安全團(tuán)隊(duì)也能用起來,是否影響業(yè)務(wù)流程,是否支持新爆發(fā)風(fēng)險的檢出,檢出結(jié)果是否需要安全團(tuán)隊(duì)或業(yè)務(wù)團(tuán)隊(duì)去處置等。
整體而言,騰訊的 DevSecOps 實(shí)踐分為三個階段:
階段一,把之前模式的安全建設(shè)或風(fēng)險收斂;
階段二,為解決 DevOps 的挑戰(zhàn),從工具鏈開始的 DevSecOps 嘗試落地。最初是整合和能力建設(shè),來提供好用以及嵌入 CI/CD 的安全檢查流程;
階段三,除工具鏈的建設(shè)外,更多是度量體系、文化、流程等方面的建立和完善。
Fooying 表示,“目前,我們正處于第二階段到第三階段間,進(jìn)行持續(xù)的能力補(bǔ)充與建設(shè),同時,開始文化塑造、度量和流程體系等方面的建設(shè)?!?/p>
據(jù)悉,騰訊正持續(xù)推進(jìn) DevSecOps 的落地 ,現(xiàn)在主要推進(jìn)工具鏈的建設(shè),并針對一些新的、重點(diǎn)的安全場景進(jìn)行能力補(bǔ)齊和增強(qiáng),比如容器安全、API 安全、開源組件等安全檢測能力的建設(shè);
其次,在已有的研發(fā)運(yùn)營流程中柔性嵌入安全動作,主要基于 CI/CD 平臺和流程的安全嵌入以及應(yīng)用推廣;
再者,質(zhì)量度量體系的建設(shè),以及安全意識和培訓(xùn)等文化意識建設(shè)從原來的辦公行為安全、漏洞防范傾向于安全工具的使用、編碼安全的宣導(dǎo)以及安全責(zé)任的傳播;
最后,以此整體體系和安全能力為基礎(chǔ),細(xì)分產(chǎn)品安全的多個場景,比如第三方產(chǎn)品、私有化產(chǎn)品、自研產(chǎn)品等,實(shí)現(xiàn)不同場景的適配應(yīng)用與運(yùn)營保障,比如 2020 年對騰訊會議的安全建設(shè)與保障。
在新嘗試上,F(xiàn)ooying 他們主要關(guān)注能力的補(bǔ)齊以及流程的落地。能力上,重點(diǎn)做開源組件及容器相關(guān)的安全,因?yàn)檫@兩個維度如今成為一些主要的安全風(fēng)險。流程上,除了 CI/CD 的安全嵌入和質(zhì)量紅線的建立,更多是針對不同類型的產(chǎn)品,包括第三方產(chǎn)品、私有化產(chǎn)品、自研產(chǎn)品,進(jìn)行精細(xì)化體系建設(shè)與運(yùn)營,以及整體安全質(zhì)量度量的事。
4
DevSecOps 成功落地的關(guān)鍵
通過 DevSecOps 的落地,不僅實(shí)現(xiàn)了對業(yè)務(wù)的快速安全支持和保障,保證了業(yè)務(wù)及產(chǎn)品的安全穩(wěn)定。同時,安全效率的提高也降低了安全團(tuán)隊(duì)的人力投入。并且,文化和度量體系的建立對安全建設(shè)的價值體現(xiàn)更加明顯。
DevSecOps 在騰訊的實(shí)踐,讓 Fooying 對 DevSecOps 有了更深的理解和認(rèn)識。在他看來,企業(yè)能否成功落地 DevSecOps 取決于三個方面:
第一,工具鏈的建設(shè),主要是 AST、SCA 等。只有具備相關(guān)的能力,才有后續(xù)的落地,其中的關(guān)鍵是 CI/CD 流程的安全嵌入;
第二,人和文化非常重要。不僅有業(yè)務(wù)團(tuán)隊(duì)對安全的重視,而且不同團(tuán)隊(duì)的協(xié)作同樣是讓更多安全動作落地的必要因素,甚至包括老大們對安全的重視和投入;
第三,體系和流程的建立。值得注意的是,企業(yè)一定要結(jié)合自己業(yè)務(wù)的情況進(jìn)行,這樣才能讓事情事半功倍。