開發(fā)者的工作不再是簡單地編寫代碼,DevOps運(yùn)動(dòng)的興起和對(duì)于云原生技術(shù)(cloud-native technologies)的需求,如Containers和Serverless,大大地提高了開發(fā)者在IT公司中的作用。
這一變化意味著,開發(fā)者不僅要承擔(dān)責(zé)任,發(fā)布易于管理和擴(kuò)展的安全代碼,而且從安全角度來說,還對(duì)開發(fā)者充滿新的期望。
企業(yè)如何保證他們的開發(fā)者具有必備的安全技能,從而幫助團(tuán)隊(duì)開發(fā)和部署安全代碼?除了編寫代碼,開發(fā)者還應(yīng)該做哪些事來協(xié)助企業(yè)對(duì)于安全方面的需求?
我們可以通過當(dāng)前的云原生技術(shù)來回答這些問題。
開發(fā)者的角色轉(zhuǎn)變
在過去,開發(fā)者只負(fù)責(zé)寫代碼,然后將這些代碼上交給團(tuán)隊(duì)進(jìn)行測試、構(gòu)建、部署、監(jiān)控、然后進(jìn)行安全處理。
大多數(shù)企業(yè)都改變了這一過程,其中一個(gè)很大的原因是DevOps的出現(xiàn)。DevOps鼓勵(lì)開發(fā)者和IT Ops團(tuán)隊(duì)之間持續(xù)合作,這一驅(qū)動(dòng)理念是,當(dāng)開發(fā)者和IT Ops持續(xù)交流和合作時(shí),他們能夠更好地了解對(duì)方的痛點(diǎn),然后一同解決問題。
DevOps也有類似的運(yùn)動(dòng),如QAOps,這個(gè)運(yùn)動(dòng)強(qiáng)調(diào)將QA團(tuán)隊(duì)融入到DevOps工作流的剩余部分和DevSecOps中,能夠?qū)踩珳y試和操作集成到軟件交付周期的剩余階段中。
與此同時(shí),新云原生技術(shù)的出現(xiàn)賦予了開發(fā)者新的責(zé)任和義務(wù)。為了使編寫的應(yīng)用程序能夠在復(fù)雜的環(huán)境中(如Container和Serverless平臺(tái))穩(wěn)定、安全地運(yùn)行,開發(fā)者需要深度了解這些環(huán)境的特定要求。只編寫代碼,或者認(rèn)為IT Ops團(tuán)隊(duì)能夠在任何時(shí)候都能部署這些代碼,是遠(yuǎn)遠(yuǎn)不夠的。開發(fā)者也必須意識(shí)到部署的基礎(chǔ)設(shè)施和目標(biāo),并對(duì)他們的工作進(jìn)行相應(yīng)地調(diào)整。
讓開發(fā)者提高安全性
這也是典型企業(yè)開發(fā)者工作的轉(zhuǎn)變方式。我們現(xiàn)在要特別關(guān)注安全性,以及開發(fā)者是如何提高它們在安全操作過程中的角色作用,從而為整個(gè)企業(yè)創(chuàng)造效益。
讓開發(fā)者參與到安全性中的第一步就是使用DevSecOps模型(上面提到過)。DevSecOps不僅要求安全工程師同開發(fā)者和IT Ops開展密切的合作,也要提高開發(fā)者對(duì)于安全方面的專業(yè)知識(shí)。
開發(fā)者是否知道企業(yè)使用的部署技術(shù)所引發(fā)的一些典型的安全難題?他們是否知道如多層次(multi-layered)防御和白名單等IT安全策略?他們是否知道不同種類的安全威脅會(huì)影響到他們的應(yīng)用程序?
如果這些問題的答案都是不知道,那么你就應(yīng)該讓開發(fā)者學(xué)習(xí)安全知識(shí),因?yàn)檫@是實(shí)現(xiàn)完整DevSecOps工作流的唯一方法。
同時(shí),開發(fā)者能夠通過承擔(dān)更多的安全歸屬責(zé)任,從而擔(dān)任安全領(lǐng)域中的一個(gè)重要角色。換句話說,當(dāng)發(fā)現(xiàn)有漏洞時(shí),除了追究安全工程師的責(zé)任,也要追究開發(fā)者的責(zé)任。如果代碼是由開發(fā)者編寫的,并且在代碼中發(fā)現(xiàn)安全漏洞,那么開發(fā)者就要負(fù)責(zé)。企業(yè)應(yīng)該將漏洞和一致性檢測直接集成到構(gòu)建管線中,檢查每一個(gè)構(gòu)建的版本,并且配置最低安全基線。雖然安全工程師應(yīng)該對(duì)代碼進(jìn)行測試,以及在生產(chǎn)中對(duì)其進(jìn)行監(jiān)控,但是承擔(dān)安全責(zé)任的不應(yīng)該只有他們。
最后,讓開發(fā)者在編寫和處理安全測試,以及監(jiān)控安全團(tuán)隊(duì)部署的規(guī)則時(shí)擔(dān)負(fù)起重要的角色。即使安全測試和監(jiān)控不是開發(fā)者的主要義務(wù),但是讓開發(fā)者參與到這些過程中能夠幫助他們時(shí)刻意識(shí)到他們編寫的每一個(gè)應(yīng)用程序的安全狀態(tài),并且你也可以提供其它的角度和代碼專業(yè)知識(shí),讓整個(gè)安全團(tuán)隊(duì)受益。
筆者并不是認(rèn)為開發(fā)者是承擔(dān)安全風(fēng)險(xiǎn)的唯一角色,或者讓他們替代勤勤懇懇的安全團(tuán)隊(duì),任何有大型IT團(tuán)隊(duì)的企業(yè)都應(yīng)該繼續(xù)聘用安全領(lǐng)域的專家。
當(dāng)然,事實(shí)上,我們生活在一個(gè)復(fù)雜、云原生的環(huán)境之下,僅憑安全工程師并不能完全發(fā)現(xiàn)和解決所有的安全問題,開發(fā)者在安全方面的重要性不容小覷。通過賦予開發(fā)者更多的能力,讓他們在和安全相關(guān)的問題上實(shí)現(xiàn)人盡其才,企業(yè)應(yīng)該簡化安全操作,保證安全性處于應(yīng)用程序交付開始階段中最重要的位置。
原文作者:John Morello