適應(yīng)開(kāi)發(fā)優(yōu)先的云原生應(yīng)用安全模式
采用 CNAS 需要對(duì)我們保護(hù)應(yīng)用程序和基礎(chǔ)架構(gòu)的方式進(jìn)行重大改變。轉(zhuǎn)變是一個(gè)旅程,每個(gè)組織都不相同,甚至同一組織的不同部分也不同。
雖然選擇正確的道路是由你的決定,但為了讓它正確,模式和最佳實(shí)踐已經(jīng)開(kāi)始出現(xiàn)。在本文中,我提出了幾個(gè)可以考慮打破現(xiàn)狀的領(lǐng)域,以及如何打破現(xiàn)狀。
重新思考工具
除了組織架構(gòu)的改變,CNAS 和“開(kāi)發(fā)優(yōu)先”還需要重新評(píng)估你的工具包。鑒于這種新視角,你應(yīng)該重新考慮在技術(shù)解決方案中尋找的最重要特征,以及你希望如何捆綁工具。
有很多方法可以重新評(píng)估工具,但我建議關(guān)注三個(gè)主要領(lǐng)域:開(kāi)發(fā)工具采用、平臺(tái)范圍和治理方法。
開(kāi)發(fā)人員工具口徑
如果我們的目標(biāo)是讓開(kāi)發(fā)人員在日常工作中能夠構(gòu)建安全性,我們需要確保為他們提供針對(duì)該目標(biāo)進(jìn)行優(yōu)化的工具。如果你購(gòu)買(mǎi)專為審計(jì)人員設(shè)計(jì)的解決方案并要求開(kāi)發(fā)人員使用它們,那么你不太可能取得成功。
不出所料,開(kāi)發(fā)人員習(xí)慣于使用開(kāi)發(fā)人員慣用的工具。這些工具代表了整個(gè)行業(yè),圍繞著什么是優(yōu)秀的開(kāi)發(fā)者工具這一主題,已經(jīng)在行業(yè)內(nèi)發(fā)展了自己的最佳實(shí)踐。為了幫助你選擇開(kāi)發(fā)人員將采用的安全解決方案,你應(yīng)該根據(jù)開(kāi)發(fā)者工具最佳實(shí)踐評(píng)估這些工具,并了解它們的表現(xiàn)如何。
以下是優(yōu)秀的開(kāi)發(fā)者工具的一些常見(jiàn)特征:
成功的自助服務(wù)采用
實(shí)際上,所有成功的開(kāi)發(fā)工具都具有出色的自助服務(wù)用法,包括輕松的上手培訓(xùn)、直觀的工作流程和出色的文檔。這是開(kāi)發(fā)人員喜歡使用工具的方式,它迫使供應(yīng)商確保他們的工具與開(kāi)發(fā)人員相關(guān),而無(wú)需銷售人員推動(dòng)它。除非你想成為向開(kāi)發(fā)人員推廣工具的銷售人員,否則請(qǐng)尋找具有開(kāi)發(fā)人員自助服務(wù)采用的良好記錄的工具。
無(wú)縫集成到工作流程中
在大多數(shù)情況下,開(kāi)發(fā)工具經(jīng)常與開(kāi)發(fā)人員打交道,而不是要求他們?cè)俅蜷_(kāi)另一個(gè)工具。它們優(yōu)雅地集成到其 IDE、Git 和研發(fā)管道中,并在正確的時(shí)間點(diǎn)提供價(jià)值。集成不僅僅是技術(shù)鉤子;他們需要適應(yīng)工作流程和最佳實(shí)踐,否則將被拒絕采用。
豐富的API和自動(dòng)化友好
雖然需要固執(zhí)己見(jiàn)的集成才能開(kāi)始,但開(kāi)發(fā)工具也必須是瑞士軍刀。豐富的API和自動(dòng)化友好的客戶端(CLI/軟件開(kāi)發(fā)工具包[SDK])是強(qiáng)制性的,既可以將該工具調(diào)整到每個(gè)管道,又允許社區(qū)在其上進(jìn)行構(gòu)建。如果你不能在工具上構(gòu)建,它就不是一個(gè)偉大的開(kāi)發(fā)工具。
開(kāi)源和社區(qū)采用
開(kāi)發(fā)人員希望其他開(kāi)發(fā)人員來(lái)驗(yàn)證工具的可信度,而開(kāi)源采用是最好的指標(biāo)??吹介_(kāi)源項(xiàng)目集成了安全工具或基于此構(gòu)建的開(kāi)源項(xiàng)目,這些都是很好的開(kāi)發(fā)人員社區(qū)驗(yàn)證。在檢查安全工具時(shí),檢查它在開(kāi)源中的采用情況并得出自己的結(jié)論。
這些只是眾多開(kāi)發(fā)工具最佳實(shí)踐中的一小部分。如果你想了解更多關(guān)于開(kāi)發(fā)優(yōu)先安全性的特定安全建議,請(qǐng)繼續(xù)往下看。此外,在評(píng)估任何工具時(shí),請(qǐng)確保讓實(shí)際的應(yīng)用程序開(kāi)發(fā)人員參與進(jìn)來(lái),以便從現(xiàn)實(shí)生活中了解它與周圍環(huán)境的契合程度(如下圖所示)。

開(kāi)發(fā)人員友好的安全工具示例
平臺(tái)范圍
當(dāng)前主流的 AST 平臺(tái)主要關(guān)注自定義代碼,也許還有應(yīng)用使用的開(kāi)源庫(kù)。工具套件主要由 SAST、DAST 和 IAST 組成,最近又添加了 SCA。當(dāng)你擁抱更廣泛的云原生應(yīng)用程序范圍時(shí),請(qǐng)重新考慮平臺(tái)的構(gòu)成。
首先,讓我們考慮一下哪些工具從成為單一平臺(tái)的一部分中受益。它們可以分為下面幾個(gè)部分:
共享用戶:如果不同的工具是為不同的主要用戶設(shè)計(jì)的,那么它們幾乎不需要成為單個(gè)平臺(tái)的一部分,因?yàn)樗鼈儫o(wú)論如何都會(huì)單獨(dú)使用。
共享工作流:如果以類似的方式使用多個(gè)工具并集成到用戶工作流的類似點(diǎn)中,則可以通過(guò)組合它們來(lái)節(jié)省集成時(shí)間以及用戶的時(shí)間和精力,而無(wú)需使用多個(gè)單獨(dú)的工具。
共享優(yōu)先級(jí):如果來(lái)自不同工具的行動(dòng)項(xiàng)應(yīng)彼此優(yōu)先排序,則共享積壓工作可以提高效率和結(jié)果。
價(jià)值倍增:最后,工具共享平臺(tái)的最強(qiáng)驅(qū)動(dòng)力是當(dāng)工具一起使用可以增強(qiáng)每個(gè)工具的價(jià)值。這個(gè)標(biāo)準(zhǔn)自然解釋了為什么像SAST和SCA這樣的技術(shù)非常適合單一平臺(tái)。兩者都為相同的開(kāi)發(fā)人員用戶提供服務(wù),運(yùn)行掃描并在相同的位置吸引用戶,并共享同一開(kāi)發(fā)人員需要優(yōu)先考慮的安全漏洞的積壓。在高級(jí) SCA 解決方案中,SAST 技術(shù)可以指示你的自定義代碼是否調(diào)用庫(kù)中易受攻擊的代碼,從而提供更高的準(zhǔn)確性,從而增加價(jià)值。
當(dāng)你考慮將容器和 IaC 安全性添加到 SAST 和 SCA 的同一平臺(tái)時(shí),相同的邏輯也適用:
共享用戶:容器和 IaC 現(xiàn)在由開(kāi)發(fā)人員保護(hù),就像 SAST 和 SCA 一樣,他們寧愿沒(méi)有多個(gè)不同的產(chǎn)品需要花時(shí)間學(xué)習(xí)和參與。
共享工作流:保護(hù)容器和 IaC 需要跨生命周期的集成,例如 IDE、Git 和構(gòu)建集成,就像 SAST 和 SCA 一樣。
共享優(yōu)先級(jí):同一個(gè)開(kāi)發(fā)人員需要花費(fèi)周期來(lái)修復(fù)容器或 IaC 漏洞,或者代碼或庫(kù)中的漏洞 —— 所有這些都是保護(hù)應(yīng)用的積壓工作。
價(jià)值倍增:保護(hù)這些組件有多種方式。掃描容器需要探索內(nèi)部的應(yīng)用程序,了解基礎(chǔ)設(shè)施配置有助于確定代碼和庫(kù)的漏洞優(yōu)先級(jí),了解跨組件的流程有助于緩解問(wèn)題;這正是你在對(duì)漏洞進(jìn)行分類時(shí)所做的。
即使 CNAS 范圍擴(kuò)大,這種邏輯仍然有效,我鼓勵(lì)你將 CNAS 工具視為一個(gè)平臺(tái)。一個(gè)簡(jiǎn)單的準(zhǔn)則是,Git 存儲(chǔ)庫(kù)中的任何內(nèi)容都可能與其周圍的文件相關(guān),并遵循相同的開(kāi)發(fā)工作流。因此,CNAS 平臺(tái)應(yīng)有助于保護(hù)存儲(chǔ)庫(kù)中的所有內(nèi)容(整個(gè)云原生應(yīng)用)。
DAST 和 IAST 在這樣一個(gè)平臺(tái)上是有點(diǎn)尷尬的參與者。盡管它們處理保護(hù)應(yīng)用程序,但它們通常需要不同的工作流程。由于運(yùn)行它們所花費(fèi)的時(shí)間,很難將它們放入構(gòu)建管道或 IDE 掃描中。在我看來(lái),這是一個(gè)技術(shù)問(wèn)題,而不是一個(gè)合乎邏輯的問(wèn)題,一旦 IAST 和 DAST 解決方案發(fā)展到對(duì)管道更加友好,它有望得到解決。
治理和賦權(quán)方法
采用開(kāi)發(fā)優(yōu)先的安全方法需要不同類型的協(xié)作。我們需要的工具不是專注于廣播和執(zhí)行自上而下的任務(wù),而是幫助我們協(xié)作構(gòu)建安全應(yīng)用程序的工具。
這聽(tīng)起來(lái)可能很明顯,但在實(shí)踐中,這與許多安全工具的工作方式有很大的不同。讓我們深入研究一些具體的例子,以了解這意味著什么。
首先,開(kāi)發(fā)人員需要有能力平衡業(yè)務(wù)需求與安全風(fēng)險(xiǎn)。這意味著,例如,允許他們決定不修復(fù)發(fā)現(xiàn)的漏洞并繼續(xù)將其部署到生產(chǎn)環(huán)境。對(duì)某些人來(lái)說(shuō),這是一個(gè)可怕的命題,但這是實(shí)現(xiàn)獨(dú)立團(tuán)隊(duì)的唯一方法。請(qǐng)注意,忽略漏洞仍應(yīng)要求提供(且可審核)原因,并且某些約束應(yīng)為硬杠杠(通常出于合規(guī)性原因),但作為默認(rèn)立場(chǎng),決策應(yīng)留給開(kāi)發(fā)人員。
其次,開(kāi)發(fā)人員需要能夠管理他們的安全風(fēng)險(xiǎn),這需要看到他們項(xiàng)目中的所有漏洞。這不僅需要包括漏洞列表,還需要包括確定優(yōu)先級(jí)所需的所有信息,例如可利用性和資產(chǎn)映射。對(duì)此類信息保持透明可能會(huì)帶來(lái)一些風(fēng)險(xiǎn),但這是擴(kuò)展安全性的唯一方法;要賦予開(kāi)發(fā)人員權(quán)力,你必須信任他們提供這些敏感數(shù)據(jù)。
第三,安全團(tuán)隊(duì)?wèi)?yīng)該投資于跟蹤和推動(dòng)安全控制的采用,甚至超過(guò)他們的產(chǎn)出。開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該管理其漏洞積壓工作,但安全團(tuán)隊(duì)需要幫助他們成功做到這一點(diǎn)。開(kāi)發(fā)優(yōu)先安全治理意味著跟蹤采用了哪些控件及其輸出的處理情況,并與開(kāi)發(fā)團(tuán)隊(duì)合作改進(jìn)這些統(tǒng)計(jì)信息,而不是突出顯示他們應(yīng)該修復(fù)的漏洞。
這些只是評(píng)估治理工具和技術(shù)時(shí)要考慮的幾個(gè)示例。關(guān)鍵是要擁抱平臺(tái)心態(tài);它的目標(biāo)是幫助開(kāi)發(fā)團(tuán)隊(duì)成功構(gòu)建安全軟件,而不是跟蹤安全漏洞本身。
重新思考優(yōu)先事項(xiàng)
最后但并非最不重要的一點(diǎn)是,CNAS 需要重新考慮應(yīng)用程序安全優(yōu)先級(jí)。如果開(kāi)發(fā)人員需要保護(hù)整個(gè)云原生應(yīng)用程序,你希望他們最關(guān)注哪些方面?
從歷史上看,IT安全控制主導(dǎo)了更大的預(yù)算,并且比應(yīng)用程序安全控制獲得了更多 CISO 的關(guān)注。這種不平衡可能有歷史原因,但歸根結(jié)底,它代表了 CISO 關(guān)于如何最好地使用他們的資金來(lái)降低組織風(fēng)險(xiǎn)的觀點(diǎn)。
換句話說(shuō),CISO 認(rèn)為,由于未修補(bǔ)的服務(wù)器或配置錯(cuò)誤的基礎(chǔ)架構(gòu)而導(dǎo)致的違規(guī)風(fēng)險(xiǎn)大于代碼中的自定義漏洞的風(fēng)險(xiǎn)。這種看法有相當(dāng)多的數(shù)據(jù)來(lái)支持它,顯示了歷史違規(guī)行為及其原因。此外,它很容易理解;對(duì)于攻擊者來(lái)說(shuō),大規(guī)模運(yùn)行已知的漏洞并尋找一扇敞開(kāi)的門(mén)要比對(duì)應(yīng)用程序進(jìn)行逆向工程并找到自定義缺陷以使其通過(guò)要容易得多。
云不會(huì)減少這個(gè)等式;事實(shí)上,云加強(qiáng)了這個(gè)等式。采用云意味著使用更多的基礎(chǔ)設(shè)施和更多的服務(wù)器,它們往往更容易公開(kāi)訪問(wèn),并且它們由不太熟悉管理它們的團(tuán)隊(duì)(開(kāi)發(fā)人員)定義,并配備了不太成熟的工具。
然而,雖然以前的平衡是在IT安全預(yù)算和應(yīng)用程序安全預(yù)算之間,但現(xiàn)在一切都在應(yīng)用程序安全世界中。在構(gòu)建云原生應(yīng)用程序時(shí),相同的開(kāi)發(fā)人員需要保護(hù)其自定義代碼,管理其開(kāi)源使用中的漏洞,并使服務(wù)器和基礎(chǔ)架構(gòu)具有彈性。同一個(gè)應(yīng)用程序安全團(tuán)隊(duì)需要幫助他們做到這一點(diǎn),并在他們之間分配相同的預(yù)算。
因此,我們回到開(kāi)場(chǎng)白:你希望如何分配寶貴的開(kāi)發(fā)人員的時(shí)間和有限的CNAS預(yù)算?
丟掉開(kāi)發(fā)人員自己的設(shè)備和應(yīng)用程序安全預(yù)算并讓開(kāi)發(fā)人員的注意力集中在保護(hù)自定義代碼上。應(yīng)用程序安全成熟度模型、行業(yè)最佳實(shí)踐以及團(tuán)隊(duì)中個(gè)人的個(gè)人體驗(yàn)都錨定在云前的世界中,其中自定義代碼是開(kāi)發(fā)人員必須保護(hù)的大部分內(nèi)容。購(gòu)買(mǎi) SAST 和 DAST 等工具通常是應(yīng)用程序安全新領(lǐng)導(dǎo)者名單上的第一件事,很少受到挑戰(zhàn)。
但是,考慮到 CNAS 的范圍,這仍然是你時(shí)間和金錢(qián)的最佳利用嗎?由于已知漏洞或配置錯(cuò)誤而導(dǎo)致的違規(guī)風(fēng)險(xiǎn)仍然高于自定義代碼缺陷的風(fēng)險(xiǎn),即使開(kāi)發(fā)人員是配置它的人。如果你同意,難道不應(yīng)該告訴你的開(kāi)發(fā)人員和應(yīng)用程序安全團(tuán)隊(duì)首先要專注于保護(hù)這些層,然后才能處理他們的自定義代碼嗎?
這不是一個(gè)容易回答的問(wèn)題。我不會(huì)假設(shè)知道你的優(yōu)先事項(xiàng)應(yīng)該是什么,因?yàn)檫@些優(yōu)先事項(xiàng)會(huì)因組織而異。但是,鑒于CNAS的范圍更廣,我強(qiáng)烈建議你在內(nèi)部進(jìn)行此對(duì)話并重新考慮你的優(yōu)先事項(xiàng)。
結(jié)論
改變你處理應(yīng)用程序安全性的方式不僅僅是一種思考練習(xí)。它具有非常真實(shí)的下游影響,包括人們的職業(yè)生涯,預(yù)算分配以及對(duì)保持組織安全的最佳方式的重新評(píng)估。它需要擺脫一些關(guān)于你過(guò)去如何做事的肌肉記憶,而不是在選擇解決方案時(shí)回到第一原則,這需要寶貴的時(shí)間和精力。
好消息是,你不必一次完成所有操作。我在本文中概述的變化相互關(guān)聯(lián),但可以按照自己的節(jié)奏應(yīng)用。我建議你選擇與你最相關(guān)的那些內(nèi)容,或者選擇你認(rèn)為更重要的其他變化,并讓這些變化繼續(xù)下去。你將逐步調(diào)整安全功能以適應(yīng)云原生現(xiàn)實(shí)。
本文翻譯自:https://go.snyk.io/rs/677-THP-415/images/CNAS_OReilly.pdf如若轉(zhuǎn)載,請(qǐng)注明原文地址















 
 
 















 
 
 
 