<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          關(guān)于DevSecOps,你應(yīng)該知道這些 | IDCF

          共 6959字,需瀏覽 14分鐘

           ·

          2021-05-11 15:57


          來源:CIO Talk
          作者:馬景賀 


          一、什么是DevSecOps


          DevSecOps

          軟件的開發(fā)從來都不是某個(gè)部門或者團(tuán)隊(duì)的單打獨(dú)斗,為了聯(lián)合開發(fā)和運(yùn)維,DevOps誕生了;同樣地,為了聯(lián)合安全和運(yùn)維,SecOps誕生了;三人為眾力量大,于是開發(fā)、運(yùn)維、安全強(qiáng)強(qiáng)聯(lián)手,就誕生了DevSecOps。

          對(duì)比DevOps的概念,可以將DevSecOps理解為: 

          DevSecOps 描述了一個(gè)組織的文化和具體實(shí)踐,這些文化和實(shí)踐能夠打破開發(fā)、安全、運(yùn)維部門之間的壁壘,使得開發(fā)、運(yùn)維和安全能夠通過通力協(xié)作和敏捷開發(fā)來提高工作效率,實(shí)現(xiàn)軟件的更快速、更安全交付。


          二、DevOps不香了嗎



          傳統(tǒng)的保障安全的方法基本都是被放在整個(gè)軟件開發(fā)生命周期的后期集中進(jìn)行,雖然它耗時(shí)較長,但在瀑布研發(fā)模式下也還能被很好的執(zhí)行。但隨著更多企業(yè)開始進(jìn)行數(shù)字化轉(zhuǎn)型和敏捷轉(zhuǎn)型,軟件應(yīng)用發(fā)布的周期在不斷被縮短,頻率在不斷被提升。頂級(jí)的敏捷團(tuán)隊(duì)甚至能做到一天發(fā)布多次。
          這時(shí),傳統(tǒng)的保障安全的方法已經(jīng)完全不能跟上這樣快節(jié)奏的應(yīng)用發(fā)布速度。雖然大部分敏捷研發(fā)團(tuán)隊(duì)都已經(jīng)采用了DevOps來保障發(fā)布質(zhì)量,但DevOps中沒有關(guān)注到安全部分,因此不能及時(shí)檢測并修復(fù)軟件中的安全漏洞。此時(shí),DevSecOps應(yīng)運(yùn)而生了。
          其實(shí),安全一直以來都是IT行業(yè)的重要一環(huán),但是大家通常都很少提及安全這塊兒,原因是什么呢?
          • 滯后型:在以前的開發(fā)模式中,安全往往是置于軟件開發(fā)的最后階段,在半年甚至一年發(fā)布一個(gè)版本的時(shí)候,這種模式的弊端并沒有顯得太突兀。就像鳳凰項(xiàng)目一樣,安全團(tuán)隊(duì)甚至有好幾個(gè)月的時(shí)間去完成安全工作。
          • 甩鍋型:我是開發(fā),安全與我無關(guān);我是測試,安全與我無關(guān);我是安全,漏洞是開發(fā)引入的,測試沒有測試出來,安全與我無關(guān)。
          • 狹隘型: 安全問題只有一種:被黑客利用漏洞攻擊了。其余的配置錯(cuò)誤,敏感信息泄漏,權(quán)限管理混亂,都不是安全問題,只是因?yàn)椴恍⌒摹?/span>
          • 僥幸型: 全世界這么多軟件,就算被攻擊,怎么會(huì)輪到我呢?
          • 勢利型: 增加安全必然增加成本,雇傭?qū)I(yè)的安全人員,選用專業(yè)的安全工具,進(jìn)行專業(yè)的安全測試。然而,能給我?guī)淼氖找嬗卸嗌伲?/span>
          在市場變化如此之快的今天,加之企業(yè)上云已成歷史之趨。據(jù)Gartner調(diào)查,利用漏洞的平均時(shí)間,已經(jīng)從以前的45天縮短到了如今的15天。這也就意味著只有兩周左右的時(shí)間留給團(tuán)隊(duì)來修復(fù)系統(tǒng)。所以前那種留給安全團(tuán)隊(duì)足夠的時(shí)間去解決安全問題的時(shí)代已經(jīng)不復(fù)存在了,如果還本著上述思路去做產(chǎn)品,很容易造成在網(wǎng)絡(luò)上"裸奔"的局面。
          安全問題必須從一開始就著手。不光要跑得快,還要跑得安全,否則就像開車,超速還不系安全帶,結(jié)果真的很可能就是"開車一時(shí)爽,親人兩行淚"。這也就是為什么現(xiàn)在要把安全融入到DevOps,完成DevOps到DevSecOps的轉(zhuǎn)型。

          三、DevSecOps 更香



          3.1 DevSecOps 的最大特點(diǎn)
          DevSecOps 相比于DevOps最大的一個(gè)特點(diǎn)就是: 安全。安全融入和安全左移是兩個(gè)主要方面:
          • 安全融入:在軟件開發(fā)的整個(gè)生命周期中都融入安全,從設(shè)計(jì)到上線之后的運(yùn)維、監(jiān)控階段。安全貫穿始終。
          • 安全左移(security shifting left):傳統(tǒng)開發(fā)模式下,安全都是在開發(fā)的最后階段介入,甚至上線之前。在DevSecOps 模式下,安全在計(jì)劃階段就介入,在軟件的生命周期中,可以看到左移了。
          這種嵌入安全的DevOps模式,除了DevOps所能帶來的好處外,還有下文所示的其他好處。
          3.2 DevSecOps 的好處
          1) 風(fēng)險(xiǎn)可控
          在產(chǎn)品設(shè)計(jì)之初就引入安全機(jī)制,在產(chǎn)品全生命周期的都實(shí)施風(fēng)險(xiǎn)管控,漏洞管理,安全檢測??煽氐娘L(fēng)險(xiǎn)能增加產(chǎn)品上線的信心和保證產(chǎn)品的質(zhì)量。這也是軟件開發(fā)所一直追求的。
          2) 降低成本,提高效益
          在產(chǎn)品開發(fā)甚至計(jì)劃階段就引入安全機(jī)制,能夠做到早檢測,早修復(fù)。就像新冠病毒一樣,早發(fā)現(xiàn),早治療,早康復(fù),避免了病癥加重帶來的救治壓力與死亡風(fēng)險(xiǎn)的增加。與此同時(shí),安全的產(chǎn)品總是受歡迎的,也會(huì)帶來更多的客戶。雖然在初期,不會(huì)在短期內(nèi)看到明顯的效果,但是DevSecOps是個(gè)長期的目標(biāo),從長遠(yuǎn)看,是能夠做到降低成本,提高效益的。
          測試領(lǐng)域有一個(gè)原理:在需求階段發(fā)現(xiàn)并修復(fù)一個(gè)缺陷或問題如果如需要花費(fèi)一美分,那么在開發(fā)階段修復(fù)同樣的問題則需要花費(fèi)十美分;在測試階段話花費(fèi)一美元,在生產(chǎn)環(huán)境則需要十美元。
          可以看出在軟件開發(fā)生命周期中,越靠后,修復(fù)缺陷的成本就越高。
          3) 安全事故的恢復(fù)時(shí)間縮短
          不同于以往,發(fā)現(xiàn)漏洞時(shí),需要在每套環(huán)境上對(duì)漏洞逐個(gè)修復(fù)。如今采用不可變基礎(chǔ)設(shè)施的時(shí)候,直接對(duì)部署環(huán)境所對(duì)應(yīng)的鏡像做修復(fù)之后,重新生成多套安全的環(huán)境(這里面的不可變基礎(chǔ)設(shè)施以及包含的pet/cattle的模型,會(huì)在后續(xù)的基礎(chǔ)設(shè)施即代碼,也即Infrastructure as Code 中會(huì)詳細(xì)介紹)。
          根據(jù)Red Hat的統(tǒng)計(jì)數(shù)據(jù),他們的客戶在不采用DevSecOps模式時(shí),在生產(chǎn)環(huán)境上通過動(dòng)態(tài)掃描發(fā)現(xiàn)漏洞后,修復(fù)漏洞的平均時(shí)間是174天,但是采用DevSecOps模式后,時(shí)間變?yōu)?2天;如果是開發(fā)階段就用靜態(tài)掃描發(fā)現(xiàn)漏洞,不采用DevSecOps模式的時(shí)候,修復(fù)的平均時(shí)間是113,而采用DevSecOps模式后,時(shí)間變?yōu)?2天。
          4) 團(tuán)隊(duì)協(xié)作、安全意識(shí)、責(zé)任意識(shí)的提高
          在DevSecOps 模型中,安全不再僅僅是安全團(tuán)隊(duì)的工作,而是人人為安全負(fù)責(zé)。開發(fā),運(yùn)維,安全團(tuán)隊(duì)需要通力協(xié)作來解決已知安全問題,并積極發(fā)現(xiàn)潛在的安全問題。
          3.3 DevSecOps 的實(shí)施
          DevSecOps 的實(shí)施可以從以下幾個(gè)方面入手:
          1) 組織(Organization)
          火車跑得快,全靠車頭帶,組織的作用在任何一次轉(zhuǎn)型中都是非常重要的。組織可以將如下實(shí)踐加入到產(chǎn)品的全生命周期開發(fā)過程中:
          • 文化建設(shè):打造開發(fā),運(yùn)維,安全團(tuán)隊(duì)共擔(dān)責(zé)任、相互信任、不推諉的文化。團(tuán)隊(duì)之間,團(tuán)隊(duì)內(nèi)部都能形成大家認(rèn)可和遵守的公約。比如,代碼層面的漏洞由開發(fā)團(tuán)隊(duì)負(fù)責(zé),基礎(chǔ)設(shè)施的漏洞由運(yùn)維負(fù)責(zé)等,這樣團(tuán)隊(duì)之間安全責(zé)任比較明確。而針對(duì)于團(tuán)隊(duì)內(nèi)部,比如開發(fā)團(tuán)隊(duì),可以約定每一個(gè)開發(fā)人員提交代碼之前必須要借助于安裝在IDE中的安全插件,完成本地代碼掃描和測試才能提交代碼。
          • 團(tuán)隊(duì)管理:組建規(guī)模合適的團(tuán)隊(duì)(比如two pizza team),團(tuán)隊(duì)與團(tuán)隊(duì)之間的溝通要方便,快捷。這里所說的溝通,不僅指開發(fā)內(nèi)部團(tuán)隊(duì)的溝通,運(yùn)維團(tuán)隊(duì)內(nèi)部的溝通,安全團(tuán)隊(duì)內(nèi)部的溝通,更重要的開發(fā),運(yùn)維,安全這種跨部門團(tuán)隊(duì)之間的溝通。可以用實(shí)時(shí)通訊工具,如slack等實(shí)現(xiàn)團(tuán)隊(duì)內(nèi)、跨團(tuán)隊(duì)的協(xié)同工作。
          • 報(bào)告共享:與安全相關(guān)的報(bào)告,不管是成功案例還是失敗案例,都應(yīng)該各個(gè)團(tuán)隊(duì)共享,通過學(xué)習(xí)案例來改進(jìn)系統(tǒng)設(shè)計(jì),強(qiáng)化實(shí)施和增強(qiáng)事件響應(yīng)能力。比如代碼掃描報(bào)告,測試覆蓋報(bào)告,鏡像掃描報(bào)告等。
          • 組織培訓(xùn):對(duì)于安全來講,意識(shí)比任何事情都重要。對(duì)于大多數(shù)從事軟件開發(fā)的人員來講,安全的認(rèn)知僅限于代碼層面,公司法規(guī),安全審計(jì),權(quán)限管理等都從未考慮。通過組織安全培訓(xùn),可以讓每個(gè)人明確安全的范圍到底有多大,每個(gè)人擔(dān)負(fù)的責(zé)任有哪些。
          2) 流程(Process)
          流程的設(shè)計(jì)可以遵循以下幾點(diǎn):
          • 流程意味著標(biāo)準(zhǔn)化,流程的制定應(yīng)該由多團(tuán)隊(duì)共同參與,明確各個(gè)團(tuán)隊(duì)所承擔(dān)的安全責(zé)任,以及對(duì)應(yīng)階段中的一些安全閾值設(shè)定,比如有高危漏洞,CI/CD Pipeline 就要終止,阻止代碼的提交(持續(xù)集成階段)或者上線(測試階段),只有高危漏洞解決了,才能繼續(xù)往下走;如果測試覆蓋率低于80%,就不可以部署此版本到生產(chǎn)線;已有漏洞的解決,在迭代內(nèi)以50%的速率遞減等等。這種適合多個(gè)團(tuán)隊(duì)的流程,方便管理的同時(shí),也便于推廣。
          • 如果能夠自動(dòng)化的,應(yīng)該采用相應(yīng)的工具來盡可能的實(shí)現(xiàn)自動(dòng)化,以此來減少人工干預(yù)。比如可能由安全人員來手動(dòng)執(zhí)行的靜態(tài)安全測試(SAST),動(dòng)態(tài)安全測試(DAST),由測試人員手動(dòng)執(zhí)行的壓力測試等,可以進(jìn)行自動(dòng)化改造,最好是融入到CI/CD Pipeline中。以期做到持續(xù)測試。
          • 流程應(yīng)該高度透明,比如測試可以看到開發(fā)在代碼提交前是否執(zhí)行了單元測試,安全團(tuán)隊(duì)可以看到開發(fā)在代碼提交之前是否執(zhí)行了敏感信息檢測,代碼靜態(tài)掃描等,還有覆蓋率的閾值設(shè)置及結(jié)果都應(yīng)該是公開透明的。這種透明,不是為了讓各自找證據(jù)用來甩鍋,而是要培養(yǎng)團(tuán)隊(duì)之間的相互信任。完全的可見性會(huì)驅(qū)動(dòng)全面的信任。
          • 要將安全加入流程,形成端到端的安全交付流程,不是一蹴而就的??梢砸孕〔介_始,比如先在持續(xù)集成加入諸如代碼掃描,敏感信息檢測步驟,然后循序漸進(jìn),在持續(xù)測試,持續(xù)交付,持續(xù)部署,持續(xù)運(yùn)維,持續(xù)監(jiān)控中加入相應(yīng)的安全步驟(后面章節(jié)會(huì)介紹)。每個(gè)步驟都應(yīng)該形成一個(gè)閉環(huán),通過反饋來做到持續(xù)改進(jìn)。這種改進(jìn)可以按照迭代的方式來進(jìn)行。
          3) 技術(shù)和工具(Technology & Tools)
          技術(shù)和工具從來都是文化落地實(shí)踐的最有力手段,也是一個(gè)企業(yè)的安生立命之本,優(yōu)秀的技術(shù)和工具能夠縮短軟件開發(fā)周期,提高開發(fā)效率。同時(shí)這些技術(shù)和工具會(huì)進(jìn)一步促進(jìn)文化的發(fā)展。
          可以將一些新興的技術(shù)融入到現(xiàn)有流程,比如可以借助人工智能AI(人工智能)和ML(機(jī)器學(xué)習(xí)),來幫助人們解決安全問題。AI和ML,可以通過對(duì)大量數(shù)據(jù)的深度學(xué)習(xí)和分析,發(fā)現(xiàn)既有漏洞中的假陽性漏洞,還能發(fā)現(xiàn)潛在漏洞。比如通過對(duì)log中大量404,400的分析,來確定是真的遭受到了惡意攻擊還是應(yīng)用程序自身或者外圍子系統(tǒng)出現(xiàn)了異常。AI和ML的操作是自動(dòng)、連續(xù)并且持續(xù)的。在某種程度上,能夠減少團(tuán)隊(duì)的一些工作量。
          有數(shù)據(jù)統(tǒng)計(jì),現(xiàn)在能自動(dòng)修復(fù)的漏洞數(shù)量不及發(fā)現(xiàn)漏洞數(shù)量的1%,借助于AI和ML,在2023年這種比例要達(dá)到10%以上。
          也可以讓既有的工具在DevSecOps模式中,發(fā)揮重要作用。具體的實(shí)踐細(xì)節(jié)可以參考下面即將講述的第四部分。
          其實(shí),任何文化或者技術(shù)的落地,都可以從上述三個(gè)方面入手,分別對(duì)應(yīng)的是"人,流程,工具",也就是常說的PPT模型(People,Process,Tool)。

          四、DevSecOps CI/CD 實(shí)踐案例



          4.1 基于云平臺(tái)的一些安全工作
          可以按照下圖所示的模型來展開,基于云平臺(tái),容器交付模式下應(yīng)用程序的安全工作,這也是個(gè)人實(shí)際工作的經(jīng)驗(yàn)總結(jié):
          • 應(yīng)用程序:應(yīng)用程序是IT最核心的產(chǎn)物,也是價(jià)值的真正體現(xiàn)。安全是貫穿在應(yīng)用程序的整個(gè)生命周期中的。常用的包括威脅建模,SAST,DAST,IAST,滲透測試。當(dāng)然還有包括代碼風(fēng)格檢測,性能、功能測試、壓力測試等其他手段。從源碼到產(chǎn)品,從靜態(tài)到動(dòng)態(tài),都有相應(yīng)安全手段。
          SAST(Static Application Security Testing): 也稱為白盒測試,通過分析應(yīng)用的源碼,字節(jié)碼,二進(jìn)制文件來發(fā)現(xiàn)安全漏洞,一般在軟件的開發(fā),測試階段進(jìn)行。
          DAST(Dynamic Application Security Testing): 在應(yīng)用處于運(yùn)行狀態(tài)時(shí),通過模擬外部攻擊,查看應(yīng)用程序應(yīng)對(duì)攻擊的反應(yīng)來確定,是否存在漏洞。一般在軟件的測試或者維護(hù)階段進(jìn)行。 
          IAST(Interactive Application Security Testing):兼具SAST和DAST特點(diǎn)的一種安全測試手段,也是這幾年比較流行的一種方法,IAST還能夠?qū)τ谝恍┸浖蚣苓M(jìn)行安全檢測。
          • 鏡像 & 容器:可以說容器技術(shù)的發(fā)展極大的促進(jìn)了云計(jì)算的發(fā)展,容器交付模式也大大縮短了應(yīng)用程序開發(fā)周期。對(duì)于鏡像,可以通過鏡像掃描來掃描出鏡像漏洞;鏡像簽名可以防止鏡像被惡意篡改;制作沒有漏洞的基礎(chǔ)鏡像,確保多個(gè)項(xiàng)目應(yīng)用的基礎(chǔ)鏡像是安全的。最小權(quán)限確保了應(yīng)用程序所在的容器是以非root權(quán)限運(yùn)行的。
          一般來說,一些鏡像倉庫都會(huì)帶有鏡像掃描功能,比如JFrog,阿里的ACR。也可以根據(jù)自己的需要利用開源產(chǎn)品搭建,比如Clair,Xray,Anchore,Trivy等。
          • 云平臺(tái):云平臺(tái)的安全是最大的安全,如果云平臺(tái)不安全,那么在上面進(jìn)行再多安全操作和防護(hù)都是沒有意義的。在租用云平臺(tái)的時(shí)候,必須要理清楚租用的云平臺(tái)的網(wǎng)絡(luò),數(shù)據(jù),租戶管理等等,是否能達(dá)標(biāo)公司要求的安全標(biāo)準(zhǔn)。
          此外,像認(rèn)證授權(quán),漏洞管理,安全合規(guī),敏感信息管理等安全手段適用于所有層次的工作。
          4.2 嵌入安全的CI/CD Pipeline
          不同層面的不同手段,可以在軟件開發(fā)的不同階段展開,如下圖:
          上面講到的安全左移(Security Shifting Left) 在上面的圖中就比較容易理解了,相比于以前將安全滯后的開發(fā)模式,安全的發(fā)起往往在測試階段,甚至更靠后;而現(xiàn)在在一開始的計(jì)劃階段就引入安全機(jī)制,比如在設(shè)計(jì)的時(shí)候就采用威脅建模方式,來識(shí)別、量化和解決與應(yīng)用程序相關(guān)的安全風(fēng)險(xiǎn);編碼階段可以利用IDE的一些安全插件來完成代碼掃描。這樣漏洞能盡早發(fā)現(xiàn),反饋能盡早獲取,漏洞也能盡早修復(fù)。
          4.3 一些開源的安全工具
          工具名稱作用作用階段地址
          git-secrets代碼中敏感信息檢測編碼階段https://github.com/awslabs/git-secrets
          sonarqube代碼質(zhì)量檢測編碼階段、構(gòu)建階段https://www.sonarqube.org/
          SAST/DAST相關(guān)工具SAST/DAST檢測編碼階段、測試階段、運(yùn)維階段https://www.gartner.com/doc/reprints?id=1-6JR0995&ct=190419&st=sb
          vault敏感數(shù)據(jù)管理任意階段https://www.vaultproject.io/
          Clair/Xray/Anchore鏡像掃描構(gòu)建階段中鏡像打包環(huán)節(jié)Clair: https://github.com/quay/clair 和 Xray: https://github.com/atom-archive/xray 和 Anchore: https://anchore.com/
          Terraform管理基礎(chǔ)設(shè)施,基礎(chǔ)設(shè)施即代碼部署階段https://www.terraform.io/

          五、路漫漫其修遠(yuǎn)兮,吾將上下而求索



          DevOps的發(fā)展已過十多年,但是安全的發(fā)展卻一直伴隨著IT行業(yè)的發(fā)展。在DevOps中融入安全本就不是一蹴而就的事情,需要軟件開發(fā)生命周期內(nèi)的所有人都參與進(jìn)來。絕對(duì)安全是不存在的,也是做不到的,但是我們可以用持續(xù)改進(jìn)的方式去避免更多的由人禍引發(fā)的安全事故。我相信我們有能力讓我們的產(chǎn)品變得更加安全!
          參考資料
          • https://devops.com/the-state-of-devops-report-2019-is-out/

          • https://www.recordedfuture.com/vulnerability-management-prioritization/

          • https://medium.com/@Joachim8675309/devops-concepts-pets-vs-cattle-2380b5aab313

          • https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code

          • https://www.redhat.com/en/topics/devops/what-is-devsecops

          • https://www.recordedfuture.com/vulnerability-management-prioritization/

          • https://www.plutora.com/blog/devsecops-guide

          • https://www.gartner.com/doc/reprints?id=1-6JR0995&ct=190419&st=sb

          • https://devops.com/devops-and-security-the-path-to-devsecops/

          • https://www.kiuwan.com/blog/the-benefits-of-a-devsecops-approach-to-the-sdlc/

          作者:馬景賀

          馬景賀,人稱小馬哥,曾做過LTE 4G網(wǎng)絡(luò)協(xié)議開發(fā),后轉(zhuǎn)向DevOps,對(duì)于Cloud Native DevSecOps進(jìn)行布道,喜歡研究docker,kubernetes,istio等Cloud Native相關(guān)技術(shù),樂于分享,運(yùn)營著DevOps SIG公眾號(hào)。在大連DevOps社區(qū)活動(dòng)上,舉辦DevOps Workshop活動(dòng)。

          2021 IDCF 公開課招生ing

          5月25日,徐磊老師線上課程《基于BoatHouse的DevOps實(shí)戰(zhàn)訓(xùn)練營》開課,現(xiàn)在有早鳥優(yōu)惠,快快報(bào)名吧~

          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  开心激情站中文字幕 | 99热这里都是精品 | 国产色黄网站 | 秋霞无码av | 日韩91在线 |