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