4637字,看懂从DevOps到DevSecOps的进化之路
作者:周紀海 周一帆 馬松松 陶芬 楊偉強 程勝聰 陳亞平
來源:大數(shù)據(jù)DT(ID:hzdashuju)
維基百科上,DevOps(Development和Operations的組合詞)是指一種重視軟件開發(fā)人員(Dev)和IT運維技術人員(Ops)之間溝通合作的文化、運動或慣例。通過自動化軟件交付和架構變更的流程,使構建、測試、發(fā)布軟件能夠更加快捷、頻繁和可靠。
現(xiàn)在,即使對了解過DevOps甚至是已經(jīng)在使用這種研發(fā)模式的人來說,也難以定義到底什么是DevOps。有些觀點認為,DevOps區(qū)別于傳統(tǒng)的瀑布模式,基于敏捷模式,并將敏捷思想和實踐從開發(fā)擴展到運維(也有激進的觀點認為它完全不同于這兩種研發(fā)模式),是一種新的思維模式和行動方法。
01 DevOps發(fā)展簡史
在2008年舉辦的敏捷大會上,Patrick Debois和Andrew Clay Shafer首次提議討論了“敏捷基礎架構”這個話題。在第二年的敏捷大會上,兩名Flickr員工做了題為“10+ Deploys per Day: Dev and Ops Cooperation at Flickr”(“每天10次部署”)的演講,這可以看作開創(chuàng)了我們現(xiàn)在所說的DevOps的概念。
之后它激發(fā)著Patrick在同年10月于比利時根特市舉辦了第一屆DevOpsDays,這代表著DevOps推廣的開始。
從那以后,DevOps借助DevOpsDays在全球范圍內傳播,并于2019年達到頂峰—全球有80座城市在2019年舉辦了DevOpsDays。2019年10月28日到30日,全球各個國家和城市的DevOps活動組織者和推廣者齊聚比利時根特市,舉辦了DevOpsDays十周年慶典。
相比歐美國家,DevOpsDays進入中國相對較晚,2017年3月18日北京舉辦了第一屆中國DevOpsDays,并于接下來幾年陸續(xù)在上海和深圳也分別舉辦了DevOpsDays峰會。
由于DevOpsDays對中國DevOps行業(yè)的影響,2018年7月22日,中國DevOps社區(qū)成立,并迅速發(fā)展到全國18個城市,通過本地化的DevOps Meetup等小型活動在各個城市繼續(xù)推廣DevOps。
除了DevOpsDays,另一個標志性事件是Alanna Brown在2012年起草了第一版年度 《DevOps現(xiàn)狀報告》。從2012年起,這份年度報告就被DevOps業(yè)界和從業(yè)人士作為了解DevOps現(xiàn)狀的參考以及DevOps發(fā)展方向的風向標。
另外,2013年Gene Kim出版了小說體的《鳳凰項目》一書,通過描述一家正在經(jīng)歷DevOps轉型的企業(yè),生動形象地向讀者介紹了轉型過程中的思想碰撞,以及各種問題和相關的解決方法。
2016年,Gene Kim聯(lián)合Jez Humble、Patrick Debois和John Wills合力出版了DevOps業(yè)界最具權威的經(jīng)典著作:《DevOps實踐指南》。圖1-1給出了DevOps 10多年的發(fā)展歷程。
▲圖1-1 DevOps發(fā)展史
02 DevOps理念
DevOps的目標是提升整個研發(fā)效能,進行更便捷、更快速、更可靠的交付,從而提高產(chǎn)品競爭優(yōu)勢。DevOps模糊了以往研發(fā)模式中開發(fā)、測試、運維等崗位和角色的界限,加強了他們之間的協(xié)作,甚至鼓勵將各個角色從傳統(tǒng)的專家團隊的組織結構,重新編制成全功能團隊,用以加強協(xié)作(如圖1-2所示)。
▲圖1-2 DevOps組織結構轉變
技術層面上,則通過流水線和一系列自動化機制、成熟可伸縮的基礎設施(如云)等,使開發(fā)人員獲得更高的效能,從而更加頻繁且快速地將代碼變?yōu)楫a(chǎn)品,并從這種快速中獲得持續(xù)不斷的反饋和驗證,以獲得更高的可靠性。
為了能夠達到DevOps的目標:更便捷、更頻繁地進行更可靠的交付,除了思維模式和文化以外,DevOps也需要一些技術和工具來支撐。也是得益于一些基礎設施和工具的發(fā)展和成熟,才使得越來越多的公司能夠踐行DevOps。
從目前業(yè)界的最佳實踐來看,DevOps技術和理念主要包括幾個關鍵的要素:持續(xù)集成(Continuous Integration,CI)、持續(xù)交付(Continuous Delivery,CD)、微服務(Microservice)、自動化測試、基礎設施即代碼(Infrastructure as Code,隱含了虛擬化、容器、自動編排、配置即代碼等技術和理念)、監(jiān)控和日志(Monitoring and Logging)等。業(yè)界圍繞DevOps已經(jīng)形成了一系列的工具集合和解決方案。
最終,通過文化意識的改變和自動化工具的使用,DevOps能夠帶來的價值也是很明顯的,包括更快的研發(fā)交付速度、更快的產(chǎn)品創(chuàng)新和嘗試速度;有效地管理了更大規(guī)模的系統(tǒng),并能夠提供更可靠的質量;從文化角度,深化了研發(fā)各角色之間的協(xié)作。不僅僅是互聯(lián)網(wǎng)行業(yè),包括很多傳統(tǒng)的金融、零售、制造等行業(yè)也在嘗試DevOps。
在如圖1-3所示的傳統(tǒng)模式下,在整個研發(fā)流程(需求、開發(fā)和測試)完成之后和上線前需要進行安全評審,以保證應用的安全性。因此,簡單來說,整個軟件開發(fā)的交付周期就是研發(fā)時長加上安全評估的時長。
▲圖1-3 從傳統(tǒng)模式到DevOps模式
在DevOps模式下,我們通過自動化、敏捷開發(fā)、團隊協(xié)作、微服務設計等DevOps理念和技術手段,提高了研發(fā)效能。研發(fā)階段的時長縮短了,從而也減少了整個交付周期的時長,提高了交付速度和效率。
然而,由于傳統(tǒng)的DevOps模式?jīng)]有考慮安全,因此上線前的安全評審時長并沒有改變。從圖1-3可以清晰地看出,在DevOps成熟的情況下,團隊繼續(xù)提高研發(fā)效能的瓶頸已經(jīng)不在研發(fā)階段,而是在上線前的安全評審階段。
那么,如何在DevOps模式下進一步改進研發(fā)效能,提高交付效率呢?另外,從安全的角度考慮,瀑布模式下的傳統(tǒng)應用安全模式(比如SDL)已經(jīng)無法跟上DevOps模式下越來越快的交付速度了,因此需要摸索出一套適合不停迭代和快速交付的全新應用安全模式的方法論。
03 從DevOps到DevSecOps
上一節(jié)我們用一個圖簡單描述了從傳統(tǒng)研發(fā)模式到DevOps模式的轉變。然而,傳統(tǒng)DevOps主要考慮速度和質量,并沒有考慮信息安全。所以,在DevOps比較成熟的情況下,信息安全就變成了研發(fā)效能繼續(xù)改進的瓶頸。
DevSecOps的最終目的就是通過安全左移到開發(fā)測試團隊,使安全評審階段的時長變短,從而進一步縮短交付周期(如圖1-4所示)。并且它可以在更早的階段發(fā)現(xiàn)并修復安全漏洞,從而減少上線前發(fā)現(xiàn)安全漏洞的返工成本。
▲圖1-4 從DevOps模式到DevSecOps模式
DevSecOps是Gartner在2012年就提出的概念,其原始術語是DevOpsSec。2017年RSA峰會之后,DevSecOps開始成為世界熱門話題。DevSecOps延續(xù)了DevOps的理念,其設計與執(zhí)行仍然處于Agile的框架之下。
DevSecOps的目標是將安全嵌入到DevOps的各個流程中(需求、架構、開發(fā)、測試等),從而實現(xiàn)安全的左移,讓所有人為安全負責,將安全性從被動轉變?yōu)橹鲃?#xff0c;最終讓團隊可以更快、更安全地開發(fā)出質量更好的產(chǎn)品。
所謂安全左移,在實踐中就是為了讓團隊對他們開發(fā)的內容負責,通過將安全等工作(比如測試安全)從部署前的安全評審階段左移到更早的階段,從而更早、更快地發(fā)現(xiàn)并解決安全問題,而不是等到幾天后部署時才發(fā)現(xiàn),或者幾個月后再發(fā)出滲透測試報告。
DevSecOps的出現(xiàn)并非偶然,它是軟件持續(xù)交付演進的必然產(chǎn)物。在這種新型軟件交付模式下,安全行為會散落在軟件交付的各個階段,而安全的職責也會落在各個階段的參與者身上,而不再是主責落在安全團隊身上。DevSecOps可以給研發(fā)效能提供諸多好處,主要表現(xiàn)在以下三個方面(見圖1-5):
▲圖1-5 DevSecOps相比DevOps的好處
1. 交付更快
DevSecOps通過自動化安全工具掃描,無感地左移了部分傳統(tǒng)模式中在上線前最后階段進行的安全掃描工作,使整個交付周期變得更短,交付速度因此變得更快。比如在圖1-5中,由于安全評審階段時長的減少(T7),交付周期從DevOps模式下的T1,變成了DevSecOps模式下的“T1–T7”。
2. 節(jié)省成本
DevSecOps由于在SDLC前期階段發(fā)現(xiàn)并且修正安全隱患和漏洞,避免了傳統(tǒng)模式中在上線前最后階段進行安全掃描發(fā)現(xiàn)高危安全漏洞后進行的返工,從而從流程上節(jié)省了成本。
比如在圖1-5中,在上線前發(fā)現(xiàn)高危安全漏洞返工修復安全漏洞后,整個開發(fā)、測試和安全評審流程又要重新走一遍,因此額外消耗的成本就是T2時間下的人力。
在DevSecOps模式下,由于安全左移到了開發(fā)或者測試階段,因此,如果高危安全漏洞在開發(fā)階段被發(fā)現(xiàn),那么額外耗費的人力也僅僅是開發(fā)時長T4下的人力,節(jié)省下來的是“T2–T4”時長下的人力。
而如果高危安全漏洞是在測試階段被發(fā)現(xiàn)的,那么返工額外消耗的人力就是“T4 + T5”下的人力,因此節(jié)省下來的就是“T2–T4–T5”下的人力。
3. 控制風險
DevSecOps減少了開發(fā)團隊對安全部門/團隊的依賴,通過安全左移讓開發(fā)團隊具備發(fā)現(xiàn)和修正部分安全隱患和漏洞的能力。
另外,在傳統(tǒng)模式下,安全部門/團隊往往扮演“警察”的角色為企業(yè)的安全提供保障,因此有時會因為安全隱患或者風險從而阻止或者延遲開發(fā)團隊交付上線。基于這種關系,因為大家的目的不同,開發(fā)團隊和安全團隊的關系往往并不是那么融洽,有時甚至會產(chǎn)生矛盾。
然而,DevSecOps的目的是通過將安全左移最終讓所有人為安全負責。因此,將不再有安全“警察”的角色來監(jiān)督開發(fā)團隊,而是開發(fā)團隊為自己開發(fā)的產(chǎn)品的安全性負責。
雖然DevSecOps是DevOps演進的必然結果,但是在DevSecOps實踐落地的過程中,仍然面臨來自技術、流程、人和文化諸多方面的困難和挑戰(zhàn)(如圖1-6所示)。其中技術挑戰(zhàn)主要來源于兩個方面:
由于DevSecOps是一個全新的概念,因此市場上可選擇的開源和商用工具并不太多。
現(xiàn)有的很多DevSecOps工具也并不成熟(比如誤報率、專業(yè)性要求高等問題),所以也增加了DevSecOps工具在推廣和使用過程中的難度。
▲圖1-6 實現(xiàn)DevSecOps的挑戰(zhàn)
相比來自技術的挑戰(zhàn),人和文化方面的挑戰(zhàn)則影響更大。對于程序員來說,他們的主要工作是寫代碼,所以很多程序員可能缺乏相關的安全意識,并且簡單地認為安全不是他們的職責,而是安全團隊的職責。
美國威脅檢測公司Threat Stack針對北美大中小企業(yè)200多名安全、開發(fā)和運維專業(yè)人員的一項調查和報告表明,DevSecOps仍然停留在理論階段。造成這種情況的主要原因一是信息安全知識和能力并沒有得到普及,二是缺少高層的支持,業(yè)務領導者甚至對此并不鼓勵。
報告中指出,只有27%的運維團隊和18%的開發(fā)團隊配備了安全專家;超過44%的開發(fā)人員沒有接受過任何安全編碼的培訓;42%的運維人員沒有接受過基本安全實踐方面的培訓。
因此,就算有些開發(fā)人員有安全方面的意識,但他們可能不具備安全編碼和修復安全漏洞的能力,所以需要相關的安全培訓。然而,信息安全畢竟是一門獨立的學科,因此也增加了程序員的學習成本。
最后,與DevOps剛出現(xiàn)時一樣,作為一個全新的概念,DevSecOps的理念還沒有得到普及,因此很多時候得不到高級管理層的支持。
報告中也指出,52%的公司承認會削減安全措施,以便在截止日期前完成業(yè)務目標。68%的受訪企業(yè)CEO不允許因為安全問題讓業(yè)務交付變慢。從這個報告可以看出,如果沒有管理層自上而下的支持,DevSecOps的推動會非常緩慢,甚至停滯不前。
針對以上種種挑戰(zhàn),DevSecOps也給出了對應的最佳實踐(見圖1-7),以便進一步在企業(yè)里進行推廣。比如在技術層面,DevSecOps最佳實踐強調自動化信息安全,甚至將安全掃描進一步左移到IDE階段,更早發(fā)現(xiàn)并修復問題,從而節(jié)省成本。
▲圖1-7 DevSecOps最佳實踐
另外,安全指標也可以作為質量門禁,用來保障交付的安全性。人和文化層面強調持續(xù)培訓和安全意識的培養(yǎng),以及DevSecOps負責人和開發(fā)團隊里DevSecOps“專家”等新角色的定義。流程層面強調定期的代碼審查、紅藍對抗,通過DevSecOps度量發(fā)現(xiàn)研發(fā)過程中的瓶頸,以及評估DevSecOps改進的效果。
關于作者:周紀海,英國倫敦帝國理工學院博士,擁有10年以上多家國際大型銀行(巴克萊銀行、匯豐銀行等)和騰訊的DevOps/DevSecOps轉型和落地的工作經(jīng)驗。從2018-2021年,在國內外30多個技術峰會、論壇和社區(qū)上分享過DevOps和DevSecOps經(jīng)驗。
周一帆,匯豐科技中國高級信息安全分析師、注冊信息安全工程師、云安全工程師。在中國和新加坡?lián)碛卸嗄甑慕鹑诳萍寂c信息安全行業(yè)工作經(jīng)驗。目前主要從事應用系統(tǒng)架構安全審查、安全風險評估和DevSecOps的實施與落地工作。
馬松松,騰訊安全專家,擁有13年基礎安全領域的工作經(jīng)驗。目前團隊主要負責研發(fā)漏洞管控相關的規(guī)范、流程以及自動化系統(tǒng)的建設和運營工作。自2019年開始關注和推動 DevSecOps在騰訊內部的探索和落地。
陶芬,武漢大學信息安全專業(yè)碩士,在國內大型互聯(lián)網(wǎng)公司百度工作十余年,負責企業(yè)內DevSecOps落地和數(shù)據(jù)安全能力建設以及運營實踐。
楊偉強,匯豐科技中國信息安全部門總負責人,在大型跨國金融信息安全領域工作15年,主要研究方向包括安全開發(fā)、安全架構以及威脅建模等。
本文摘編自《DevSecOps實戰(zhàn)》,經(jīng)出版方授權發(fā)布。(ISBN:9787111695653)
延伸閱讀《DevSecOps實戰(zhàn)》
點擊上圖了解及購買
轉載請聯(lián)系微信:DoctorData
推薦語:本書通過描述一家大型互聯(lián)網(wǎng)企業(yè)和一家大型傳統(tǒng)銀行的DevSecOps轉型的過程,幫助讀者淺顯易懂并且有代入感地了解如何將DevSecOps在企業(yè)內部落地和實踐。基于各類行業(yè)特點的DevSecOps實施與落地方法,是本書的主要技術要點。
干貨直達👇
Kubernetes集群中要監(jiān)控哪些組件?采集哪些指標?
真實案例,手把手教你構建用戶畫像
手把手教你用Python實現(xiàn)查找算法
9種深度學習算法簡介
更多精彩👇
在公眾號對話框輸入以下關鍵詞
查看更多優(yōu)質內容!
讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
大數(shù)據(jù)?|?云計算?|?數(shù)據(jù)庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?數(shù)學?|?算法?|?數(shù)字孿生
據(jù)統(tǒng)計,99%的大咖都關注了這個公眾號
👇
總結
以上是生活随笔為你收集整理的4637字,看懂从DevOps到DevSecOps的进化之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是元宇宙、新基建、赛博空间?7个最火
- 下一篇: 人口简史:我们曾经差一点就彻底没了