近些年來,隨著云計(jì)算、微服務(wù)和容器技術(shù)的快速普及,不僅IT基礎(chǔ)架構(gòu)發(fā)生了巨大的變化,政企組織的業(yè)務(wù)交付模式也迎來巨大變遷,傳統(tǒng)的開發(fā)模式向敏捷開發(fā)和持續(xù)交付模式遷移,在業(yè)務(wù)應(yīng)用交付規(guī)模不斷擴(kuò)大、交付速度不斷提高、開發(fā)運(yùn)營場景一體化的大環(huán)境下,安全問題你真的重視么?
1“漏洞”帶來安全隱患
近年來,隨著軟件開源化趨勢(shì)成為主流,開源軟件已經(jīng)成為軟件供應(yīng)鏈的重要環(huán)節(jié),是軟件生態(tài)不可或缺的組成部分,可開源軟件的安全問題卻是很多組織所忽略和不知曉的。
Gartner的調(diào)查顯示,99%的組織在其信息系統(tǒng)中使用了開源軟件。Sonatype公司對(duì)3000家企業(yè)的開源軟件使用情況展開過調(diào)查,結(jié)果表明每年每家企業(yè)平均下載5000多個(gè)開源軟件。隨著開源技術(shù)快速形成生態(tài),企業(yè)用戶引入開源軟件已成大勢(shì)所趨,無法避免,不僅如此,隨著大型軟件開發(fā)過程中,開源組件的占比越來越高,加之軟件開發(fā)人員往往只關(guān)注自己開發(fā)的那部分代碼的安全性,忽視了采用的開源組件的安全質(zhì)量,最終導(dǎo)致成型軟件產(chǎn)品的系統(tǒng)安全問題越來越多。
所以在這樣的大時(shí)代背景下,開源軟件和工具已經(jīng)影響到了整個(gè)軟件行業(yè),一旦具有大規(guī)模用戶基礎(chǔ)的開源軟件存在安全漏洞,后果和影響是無法想象的。
在非100%自研發(fā)的今天,開源軟件的漏洞已然成為了軟件生態(tài)中安全漏洞的“罪魁禍?zhǔn)?rdquo;!
2安全檢查,沒那么簡單
隨著安全漏洞問題的不斷爆出,越來越多的組織也開始意識(shí)到安全問題的重要性,可隨著產(chǎn)品的開發(fā)生命周期越往后,其功能、接口、代碼量、數(shù)據(jù)、內(nèi)部關(guān)聯(lián)等越發(fā)的龐大和復(fù)雜,安全問題排查的難度、引發(fā)的修復(fù)成本也顯著增高。統(tǒng)計(jì)數(shù)據(jù)表明,隨著產(chǎn)品的開發(fā),生命周期越往后,安全問題引發(fā)的修復(fù)成本也成倍數(shù)增長。如下圖所示,如果到了發(fā)布階段,再去修復(fù)安全問題,那么帶來的成本將是毀滅性的。
那么問題來了,我們?cè)撛趺崔k呢?
3提升漏洞修復(fù)率- DevSecOps實(shí)踐
在以上背景下,DevSecOps應(yīng)運(yùn)而生。
DevSecOps又是什么呢?
簡單來說,DevSecOps可以理解為在DevOps基礎(chǔ)上嵌入了安全Security,即DevSecOps是糅合了開發(fā)、安全及運(yùn)營理念以創(chuàng)建解決方案的全新方法——一套由戰(zhàn)略驅(qū)動(dòng)的體系化方法論,一套流程與工具支撐,將安全能力嵌入到整個(gè)軟件開發(fā)體系中,在保證業(yè)務(wù)快速發(fā)展的情況下實(shí)現(xiàn)安全保障,即快又安全的發(fā)布可運(yùn)行的軟件。
DevSecOps這個(gè)概念最早是2017年美國RSA大會(huì)上提出的——DecSecOps是一種全新的安全理念與模式,它從DevOps的概念延伸和演變而來,其核心理念是:安全是IT團(tuán)隊(duì)中(包括開發(fā)、運(yùn)維及安全團(tuán)隊(duì))每個(gè)人的責(zé)任,需要貫穿從開發(fā)到運(yùn)營整個(gè)業(yè)務(wù)生命周期的每一個(gè)環(huán)節(jié),只有這樣才能提供有效的安全保障。DevSecOps通過加強(qiáng)內(nèi)部安全測試,主動(dòng)搜尋安全漏洞,及時(shí)修復(fù)漏洞、控制風(fēng)險(xiǎn),實(shí)現(xiàn)與業(yè)務(wù)流程的良好整合。
4DevSecOps的核心
DevSecOps的安全實(shí)踐主要集中于以下兩個(gè)方面:
l安全工作前移
采用安全在軟件開發(fā)前期介入的方式,降低解決安全問題的成本,前期介入的內(nèi)容包括對(duì)開發(fā)、維護(hù)人員的安全意識(shí)培訓(xùn)、安全開發(fā)規(guī)范的培訓(xùn)、安全需求(非功能需求)的導(dǎo)入、前期的代碼審計(jì)工作、基于白盒的安全測試、滲透測試等內(nèi)容。在運(yùn)營階段增加的內(nèi)容與前期開發(fā)階段類似,主要內(nèi)容集中在對(duì)新安全需求實(shí)現(xiàn)情況的驗(yàn)證以及軟件整體安全評(píng)估。
l安全工作與現(xiàn)有工作無縫對(duì)接
為了避免安全工作(例如:測試與評(píng)估、安全策略的部署等)成為開發(fā)瓶頸,使得應(yīng)用系統(tǒng)在最短周期內(nèi)實(shí)現(xiàn)其應(yīng)有的價(jià)值和安全屬性。DevSecOps采用快速迭代的開發(fā)方式,這就需要實(shí)現(xiàn)安全與開發(fā)工作實(shí)現(xiàn)無縫對(duì)接,將安全工作導(dǎo)入現(xiàn)有的開發(fā)工作流程和工具中,包括將安全需求導(dǎo)入至統(tǒng)一需求管理流程與工具、安全測試工作與持續(xù)集成/持續(xù)部署(CI/CD)對(duì)接、安全測試結(jié)果導(dǎo)入至缺陷管理工具等諸多環(huán)節(jié)。
這實(shí)際上就是對(duì)自動(dòng)化提出非常高的要求。
5DevSecOps實(shí)施方案
DevSecOps通常是將安全嵌入到DevOps的流程階段中,所以一般來說,DevSecOps的工具通常也是基于編碼、構(gòu)建、測試、配置、部署、監(jiān)控這六個(gè)階段嵌入的,如果要自行搭建DevSecOps的流水線需要至少在以上環(huán)節(jié)中加入相應(yīng)的工具并實(shí)現(xiàn)自動(dòng)化,具體分析如下:
1)開發(fā)階段
良好的編碼習(xí)慣更易于代碼本身的理解和更改。DevSecOps通過添加用于編寫良好和安全代碼的安全檢查來擴(kuò)展這些實(shí)踐。
傳統(tǒng)的單元測試,代碼審查,靜態(tài)代碼檢查等實(shí)踐可以擴(kuò)展到該階段的安全性檢查。為了不影響開發(fā)人員的工作效率,可以在代碼提交至代碼倉庫之前查找并修復(fù)常見的安全問題。
2)構(gòu)建階段
將代碼提交到代碼倉庫后,將執(zhí)行應(yīng)用程序的構(gòu)建和基本自動(dòng)化測試,以確保代碼始終可編譯可構(gòu)建。
同樣,需要在此階段添加安全性檢查,以檢測嚴(yán)重和高危安全性問題。如果發(fā)現(xiàn)嚴(yán)重問題,則需要進(jìn)行安全控制,設(shè)定構(gòu)建為失敗并發(fā)送警報(bào)通知。
3)測試階段
成功構(gòu)建后,通過選擇生成的工件并將其部署到容器或者測試環(huán)境來觸發(fā)測試階段。這些測試包括功能測試,集成測試,性能測試,高級(jí)SAST,安全性和DAST。
這個(gè)階段通常需要更多的時(shí)間和資源來執(zhí)行,并且遵循快速失敗方法優(yōu)先原則,即更費(fèi)勁和耗時(shí)的測試要盡可能后延,只有在其他測試都通過時(shí)才執(zhí)行。
4)配置階段
配置管理工具可以輕松地反復(fù)大規(guī)模部署和創(chuàng)建安全基礎(chǔ)架構(gòu)。通過標(biāo)準(zhǔn)化配置,配置管理工具可以減少與補(bǔ)丁管理相關(guān)的問題,最大限度地降低黑客可以利用未修補(bǔ)的服務(wù)器的風(fēng)險(xiǎn),并有助于減少不同環(huán)境之間的差異。值得一提的是,使用配置管理工具可以在中央代碼庫和版本控制下跟蹤配置信息。
5)部署階段
如果上述所有階段成功運(yùn)行,則需要準(zhǔn)備投入生產(chǎn)環(huán)境運(yùn)行。該階段目標(biāo)主要是驗(yàn)證在配置或部署時(shí)間內(nèi)是否存在任何錯(cuò)誤,這些錯(cuò)誤是否會(huì)降低系統(tǒng)的可靠性和彈性,是否可以在故障情況通過這些進(jìn)行攻擊。
該階段使用自動(dòng)化運(yùn)行時(shí)檢查和測試中發(fā)揮重要作用的地方,特別是發(fā)現(xiàn)安全違規(guī)和漏洞的安全問題,并突出了風(fēng)險(xiǎn),如訪問控制策略或防火墻規(guī)則的變化。
6)監(jiān)控階段
系統(tǒng)投入生產(chǎn)后,安全性不會(huì)終止,而是真正的開始。在DevSecOps中,自動(dòng)安全檢查和監(jiān)視反饋循環(huán)迭代是生產(chǎn)操作的基本部分。
持續(xù)監(jiān)控可以深入了解應(yīng)用程序正在接收的流量類型,并幫助識(shí)別惡意用戶的攻擊模式。
6總結(jié)
綜上,DevSecOps的工具主要是基于編碼、構(gòu)建、測試、配置、部署、監(jiān)控這6個(gè)階段嵌入的,如果要自行搭建DevSecOps的流水線,需要至少在以上環(huán)節(jié)中加入相應(yīng)的工具(參考工具如下圖),并實(shí)現(xiàn)自動(dòng)化。如果自行搭建較為困難,可借助開發(fā)平臺(tái)提供DevSecOps的能力,比如華為云DevCloud軟件開發(fā)平臺(tái)來進(jìn)行流水線的配置與開發(fā)。
當(dāng)你遇到安全問題或者想要預(yù)防安全問題發(fā)生,DevSecOps是一個(gè)很好的解決方案,希望您看完本文,對(duì)DevSecOps有所了解。
作為華為ICT基礎(chǔ)設(shè)施業(yè)務(wù)面向全球開發(fā)者的年度盛會(huì),華為開發(fā)者大會(huì)2021(Cloud)將于在深圳舉行。本屆大會(huì)以#每一個(gè)開發(fā)者都了不起#為主題,將匯聚業(yè)界大咖、華為科學(xué)家、頂級(jí)技術(shù)專家、天才少年和眾多開發(fā)者,共同探討和分享云、計(jì)算、人工智能等最新ICT技術(shù)在行業(yè)的深度創(chuàng)新和應(yīng)用。智能時(shí)代,每一個(gè)開發(fā)者都在創(chuàng)造一往無前的奔騰時(shí)代。世界有你,了不起!
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )