開(kāi)源代碼能夠?yàn)樵骗h(huán)境帶來(lái)靈活性和敏捷性。但是是否有任何的快速方法能夠確保其安全性呢?
如今,大多數(shù)應(yīng)用開(kāi)發(fā)人員都整合使用來(lái)自于開(kāi)源開(kāi)發(fā)項(xiàng)目的代碼來(lái)作為降低開(kāi)發(fā)時(shí)間和提供整體代碼品質(zhì)的一種方法。該代碼可以是一個(gè)實(shí)際云套件(例如OpenStack)或支持工具(從編譯器到存儲(chǔ)管理器)和各種各樣的應(yīng)用模塊的一部分。
但是使用數(shù)以百計(jì)可用代碼庫(kù)作為開(kāi)源代碼來(lái)源,同時(shí)還試圖挑選出最合適的開(kāi)源代碼,將是一個(gè)可能為惡意軟件打開(kāi)方便之門的復(fù)雜任務(wù)。除了代碼有被黑的風(fēng)險(xiǎn),代碼還存在著可能的質(zhì)量問(wèn)題。為了確保用戶正在使用著可靠的和安全的開(kāi)源代碼,應(yīng)確認(rèn)相關(guān)代碼是精心設(shè)計(jì)和歸檔的,同時(shí)為廣泛使用而嚴(yán)格測(cè)試的。
其他用戶的共識(shí)往往是代碼質(zhì)量問(wèn)題的最佳第一導(dǎo)向。開(kāi)源社區(qū)對(duì)于這類問(wèn)題一向是知無(wú)不言言無(wú)不盡的,整個(gè)社區(qū)都愿意警告用戶遠(yuǎn)離低質(zhì)代碼。例如,OpenStack代碼是經(jīng)過(guò)高度審查和嚴(yán)密控制的;因?yàn)榇嬖谥鴩@著OpenStack的龐大開(kāi)發(fā)人員與用戶群,所以任何問(wèn)題都會(huì)很快地浮出水面。而發(fā)現(xiàn)代碼質(zhì)量問(wèn)題的其他資源是Programmers Stack Exchange 或 Stack Overflow。
但是,對(duì)于惡意軟件而言,那是完全不同的。有時(shí),一個(gè)問(wèn)題可能會(huì)在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)處于休眠狀態(tài)或未被發(fā)現(xiàn)。例如,一個(gè)流行的開(kāi)源框架Ruby on Rails的一個(gè)未被發(fā)現(xiàn)漏洞就存在了六年。
為了確保用戶部署安全的開(kāi)源代碼,我們應(yīng)深入到引擎內(nèi)部。使用最被認(rèn)可和信任的開(kāi)源代碼庫(kù)(例如GitHub和OpenStack的影像服務(wù))作為資源。還有一些應(yīng)用商店提供了來(lái)自于可信任供應(yīng)商的簽名代碼,它們擁有在整個(gè)代碼生命周期內(nèi)檢查代碼簽名的能力。
其次,應(yīng)尋找使用常用代碼而避免傾向嘗試其他的代碼,因?yàn)檫@是不同的。所謂“常用”意味著有很多測(cè)試人員已經(jīng)運(yùn)行過(guò)代碼,同時(shí)代碼能夠按照規(guī)范正常運(yùn)行。
但是,這一切都趕不上Ruby on Rails問(wèn)題。使用常用開(kāi)源代碼跟蹤開(kāi)放網(wǎng)絡(luò)應(yīng)用安全項(xiàng)目中的應(yīng)用程序漏洞列表。
版本管理也是很重要的,因?yàn)樗梢源_保開(kāi)源代碼的安全性。除非業(yè)內(nèi)公認(rèn)它是安全的,否則不要在用戶云中實(shí)施新的代碼版本。另一方面,請(qǐng)務(wù)必一起更新代碼版本以確保關(guān)閉已知安全漏洞。一個(gè)版本管理器將有助于版本管理。
在過(guò)去的幾年中,開(kāi)源代碼應(yīng)用已走過(guò)了漫長(zhǎng)的道路,它已經(jīng)是如今的支柱發(fā)展了。它能夠幫助開(kāi)發(fā)團(tuán)隊(duì)更快地實(shí)施新的云應(yīng)用,在小心應(yīng)用下這些應(yīng)用的安全性可媲美內(nèi)部代碼。