Mary+Branscombe
您的開(kāi)發(fā)人員正在使用開(kāi)源軟件——即使您不了解它。本文介紹了怎樣進(jìn)行控制,為什么要這樣做。
最近,SAS嚴(yán)肅地向企業(yè)發(fā)出呼吁,企業(yè)應(yīng)限制其使用的開(kāi)源項(xiàng)目的數(shù)量。在以SAS為主導(dǎo)的市場(chǎng)上,這看起來(lái)好像是在抗議數(shù)據(jù)科學(xué)和分析開(kāi)源R編程語(yǔ)言的興起。但是,在這種抗議中隱藏著很好的一點(diǎn)是:使用開(kāi)源軟件意味著知道您正在使用什么,這樣您可以跟蹤和維護(hù)它。
大多數(shù)企業(yè)并不知道開(kāi)發(fā)人員使用多少開(kāi)源軟件,以及可能會(huì)暴露出什么樣的漏洞。您無(wú)法對(duì)那些自己所依賴(lài)的、但是不熟悉的開(kāi)源項(xiàng)目進(jìn)行安全評(píng)估或者補(bǔ)丁管理。
Sonatype的2016年軟件供應(yīng)鏈研究發(fā)現(xiàn),第三方組件占典型企業(yè)Java應(yīng)用程序中的百分之八十至九十,而企業(yè)下載的十六個(gè)組件中就會(huì)有一個(gè)存在安全漏洞。老一些組件的安全漏洞是新版本的三倍之多,企業(yè)應(yīng)用程序中一半以上組件的使用年限已經(jīng)超過(guò)兩年。在發(fā)現(xiàn)Heartbleed漏洞兩年后,Cisco安全研究在2015年測(cè)試的一半以上的OpenSSL版本仍然很脆弱。
2014年,Veracode發(fā)現(xiàn)在其掃描的5,000個(gè)應(yīng)用程序中,企業(yè)Web應(yīng)用程序中使用的開(kāi)源軟件和第三方組件在每個(gè)應(yīng)用程序中平均引入了24個(gè)已知漏洞。
開(kāi)源軟件監(jiān)控和管理服務(wù)公司W(wǎng)hiteSource首席執(zhí)行官兼聯(lián)合創(chuàng)始人Rami Sass告訴CIO.com:“即使已經(jīng)知道他們?cè)谑褂瞄_(kāi)源軟件的軟件公司也需要通過(guò)工具來(lái)更好地進(jìn)行管理。企業(yè)很少知道他們正在使用多少開(kāi)源軟件?,F(xiàn)在,銀行等企業(yè)、金融服務(wù)公司、媒體公司都有大型軟件工程部門(mén)。他們通常會(huì)驚訝地發(fā)現(xiàn),開(kāi)源軟件的應(yīng)用非常廣泛,而人工清查這些軟件并對(duì)其進(jìn)行跟蹤的少之又少。平均來(lái)說(shuō),實(shí)際的組件數(shù)量是他們所認(rèn)為的數(shù)量的三倍。有時(shí)候高達(dá)十倍?!?/p>
這并不是說(shuō),您不應(yīng)該讓開(kāi)發(fā)人員使用開(kāi)源軟件,特別是如果您正在遷移到DevOps,因?yàn)樵谶@一領(lǐng)域有許多可用的工具,如果您自己編寫(xiě)代碼,其實(shí)很難勝過(guò)競(jìng)爭(zhēng)對(duì)手。Sass說(shuō):“企業(yè)使用開(kāi)源軟件是有道理的,因?yàn)槟M_(kāi)發(fā)人員專(zhuān)注于您的核心業(yè)務(wù)。您所需要的很多東西已經(jīng)有了;您想重新使用已經(jīng)經(jīng)過(guò)測(cè)試而且有社區(qū)進(jìn)行維護(hù)的代碼,這樣您就不用自己去做那些繁重的編程工作。這就是為什么每個(gè)人都喜歡開(kāi)源軟件的原因——但不幸的是,開(kāi)源軟件有其自身的問(wèn)題?!?/p>
開(kāi)源軟件許可責(zé)任
過(guò)去,企業(yè)往往最關(guān)心開(kāi)源軟件的許可問(wèn)題。Sass指出,“開(kāi)源軟件是免費(fèi)的,但它附帶了許多條款。”開(kāi)源軟件許可對(duì)于商業(yè)組織來(lái)說(shuō)可能是雷區(qū)。越來(lái)越多的項(xiàng)目使用MIT和Apache許可之類(lèi)的寬松許可,這些許可對(duì)代碼重新分配的要求非常少,而其他許可的要求卻很苛刻。谷歌最近關(guān)于如何使用開(kāi)源軟件的指導(dǎo)內(nèi)容包括有關(guān)AGPL等許可在內(nèi)部被禁止的說(shuō)明,之所以如此是因?yàn)橛邪l(fā)布衍生產(chǎn)品代碼的要求。
即使是聲稱(chēng)是公共域或者“免費(fèi)使用”的軟件項(xiàng)目,您都需要仔細(xì)考慮,因?yàn)榘衍浖旁诠灿虿⒉皇且患∈?。如果您是商業(yè)企業(yè),您應(yīng)避免在非商業(yè)應(yīng)用中使用免費(fèi)的東西,其中包括許多知識(shí)共享許可。
這并不意味著您必須避免使用開(kāi)源軟件,而是要知道使用開(kāi)源項(xiàng)目而接受其許可的后果。開(kāi)源軟件項(xiàng)目相互聯(lián)系的特性可能會(huì)使其變得更加復(fù)雜,例如,許多使用npm軟件包管理器的用戶(hù)發(fā)現(xiàn),在對(duì)軟件包名稱(chēng)進(jìn)行爭(zhēng)論后,開(kāi)發(fā)人員并沒(méi)有發(fā)布其他數(shù)千個(gè)項(xiàng)目依賴(lài)的軟件包。
Sass說(shuō):“一個(gè)開(kāi)源組件會(huì)依賴(lài)于許多其他開(kāi)源組件。每當(dāng)一個(gè)開(kāi)發(fā)人員處理開(kāi)源軟件組件時(shí),他們都會(huì)帶來(lái)其背后所依賴(lài)的所有關(guān)系樹(shù),而通常您根本不了解這些。您應(yīng)該查看自己有多少開(kāi)源組件,但大多數(shù)企業(yè)并不知情?!?/p>
采用所謂的“copyleft”許可,例如GPL,通常需要您發(fā)布對(duì)代碼所做的任何修改。Sass說(shuō):“一般企業(yè)將使用一些有GPL許可的開(kāi)源組件。在300個(gè)組件中,可能一兩個(gè)或者三個(gè)是GPL。這對(duì)他們來(lái)說(shuō)簡(jiǎn)直就是新聞?!?/p>
除了知道您使用的是什么樣的開(kāi)源軟件之外,您還需要跟蹤開(kāi)發(fā)人員可能為其提供代碼的開(kāi)源項(xiàng)目。對(duì)此,一種方法是使用GitHub Business。雖然大多數(shù)企業(yè)認(rèn)為GitHub Business是一種云服務(wù),避免了他們?cè)谧约悍?wù)器上運(yùn)行GitHub Business的麻煩,但它也可以讓您控制自己企業(yè)中有哪些身份的開(kāi)發(fā)人員使用GitHub存儲(chǔ)庫(kù)并對(duì)其有貢獻(xiàn)。
GitHub產(chǎn)品設(shè)計(jì)高級(jí)總監(jiān)Connor Sears告訴CIO.com:“我們的客戶(hù)想要的是,更多的直接聯(lián)系開(kāi)發(fā)人員和項(xiàng)目、社區(qū),這就是GitHub所做的。這么多的開(kāi)源軟件代碼對(duì)我們的客戶(hù)是有價(jià)值的。他們從中受益,他們也想對(duì)其做出貢獻(xiàn)。他們希望使用我們合作伙伴貢獻(xiàn)的各種平臺(tái)工具?!?/p>
GitHub Business與您現(xiàn)有的身份管理工具相集成,無(wú)論是Azure Active Directory、Okta還是其他SAML和SCIM兼容的身份系統(tǒng),例如OneLogin和Shibboleth。這意味著如果您企業(yè)的開(kāi)發(fā)人員下載開(kāi)源軟件代碼,并反過(guò)來(lái)為項(xiàng)目做出貢獻(xiàn),或者將其分配給一個(gè)內(nèi)部項(xiàng)目,即使他們離職,不是從他們的個(gè)人GitHub登錄,而是從官方公司賬戶(hù)登錄,您也要繼續(xù)對(duì)其控制。
開(kāi)源軟件安全
使用開(kāi)源軟件的另一個(gè)關(guān)鍵問(wèn)題是在發(fā)現(xiàn)安全問(wèn)題后一定要更新。Sass說(shuō):“當(dāng)開(kāi)發(fā)人員采用了有漏洞的開(kāi)源組件,并將其置入到軟件中時(shí),那么您會(huì)很容易受到攻擊,您的客戶(hù)也容易受到攻擊。”
然而,真正的問(wèn)題并不在于有漏洞,因?yàn)榭偸谴嬖诼┒?,關(guān)鍵是沒(méi)有打補(bǔ)丁?!澳倳?huì)找到過(guò)時(shí)的庫(kù),總是會(huì)發(fā)現(xiàn)有的組件有漏洞,幾乎總是會(huì)找到企業(yè)不打算使用的許可?!?/p>
“開(kāi)源的好處是,一旦知道這些問(wèn)題,問(wèn)題就很容易解決。通常不需要花費(fèi)大量的精力去更新組件,盡管有時(shí)會(huì)出現(xiàn)兼容性問(wèn)題。通常來(lái)說(shuō),開(kāi)源社區(qū)的人們已經(jīng)在努力解決這些問(wèn)題了?!?
系統(tǒng)地應(yīng)用這些補(bǔ)丁意味著跟蹤和管理您所使用的開(kāi)源軟件,就像您的供應(yīng)鏈中的任何其他部分一樣,而手動(dòng)進(jìn)行這些工作的效率非常低。軟件組合分析工具,例如WhiteSource、Black Duck、Palamida(最近被Flexera收購(gòu))、Sonatype Nexus、Synopsys或者Veracode都能夠幫助您自動(dòng)完成這些工作。
例如,WhiteSource擁有Visual Studio Team Services和Jenkins等流行源代碼管理工具和服務(wù)的插件,并且內(nèi)置到Visual Studio 2017中,因此可以自動(dòng)收集開(kāi)發(fā)人員使用的開(kāi)源組件的詳細(xì)信息,并生成報(bào)告,顯示發(fā)現(xiàn)了哪些安全漏洞,以及您需要做什么工作來(lái)解決這些問(wèn)題。您還可以獲取這些組件所使用的許可的報(bào)告,甚至根據(jù)許可問(wèn)題或者安全漏洞來(lái)設(shè)置政策。
Sass說(shuō):“您可以同時(shí)擁有許可的黑名單和白名單;客戶(hù)經(jīng)常會(huì)有像GPL這樣的許可黑名單,以及像MIT這樣的寬松許可白名單。您還可以制定有關(guān)安全漏洞的政策。如果開(kāi)發(fā)人員引入了一個(gè)有已知漏洞的新的開(kāi)源庫(kù),那我們可以阻止他。我們還可以主動(dòng)給您發(fā)送推送通知,提醒您正在使用的庫(kù)中新發(fā)現(xiàn)了漏洞;我們不用等您去運(yùn)行報(bào)告?!?/p>
通過(guò)開(kāi)發(fā)服務(wù)器或者通過(guò)與像Git、GitHub、JIRA和Artefactory這樣的系統(tǒng)進(jìn)行集成,該政策可以直接置入到您現(xiàn)有的開(kāi)發(fā)人員工作流程中?!叭绻谶M(jìn)行集成,并且開(kāi)發(fā)人員引入了使用GPL許可或者具有影響非常嚴(yán)重的安全漏洞的新庫(kù),那么該政策會(huì)生效;開(kāi)發(fā)將失敗,開(kāi)發(fā)人員將收到關(guān)于問(wèn)題庫(kù)的通知。當(dāng)有人嘗試向存儲(chǔ)庫(kù)中添加新代碼時(shí),您可以對(duì)照政策并阻止他。如果您添加了安全漏洞影響程度中等或者較低的庫(kù),我們可以將通知發(fā)送給安全主管,這樣會(huì)有更多的人參與到?jīng)Q策過(guò)程中。”
“我們可以把它看作是監(jiān)管轉(zhuǎn)移,所以會(huì)更早地出現(xiàn)在開(kāi)發(fā)過(guò)程中,自動(dòng)執(zhí)行合規(guī)中涉及的一些工作。我們能夠盡早找到一個(gè)問(wèn)題;我們可以阻止組件進(jìn)入到您的環(huán)境中?!?/p>
WhiteSource還有一個(gè)瀏覽器插件,旨在幫助開(kāi)發(fā)人員更好地選擇要采用哪些開(kāi)源組件。當(dāng)開(kāi)發(fā)人員訪問(wèn)引用開(kāi)源組件的網(wǎng)頁(yè)時(shí),該插件將它們與WhiteSource的數(shù)據(jù)庫(kù)相匹配,并顯示一個(gè)彈出窗口,其中包含許可的詳細(xì)信息,任何已知的漏洞以及公司的政策。Sass說(shuō):“我們根據(jù)您企業(yè)的政策進(jìn)行測(cè)試,并告訴開(kāi)發(fā)人員是否將獲得批準(zhǔn)。我們還列出了組件在企業(yè)中應(yīng)用到了哪些地方;您可以看到是否有另一個(gè)團(tuán)隊(duì)使用相同的版本,或者您正在查看的組件的其他版本。”
如果您要遵守受監(jiān)管的財(cái)務(wù)標(biāo)準(zhǔn),例如PCI-DSS或者FS-ISAC指南,則需要制定關(guān)于使用開(kāi)源軟件和第三方組件的政策。還沒(méi)有像其他行業(yè)中企業(yè)廣泛采用的開(kāi)源軟件的標(biāo)準(zhǔn)政策,但Sass認(rèn)為很快就會(huì)有,特別是美國(guó)政府已經(jīng)開(kāi)始為自己制定這些政策。他建議:“政府應(yīng)進(jìn)入開(kāi)源領(lǐng)域。他們現(xiàn)在應(yīng)公開(kāi)他們有多少比例的代碼是開(kāi)源的,他們應(yīng)通過(guò)某種政策來(lái)進(jìn)行規(guī)范。一旦這樣做,大企業(yè)就會(huì)緊隨其后?!?/p>
首席信息官不可能對(duì)企業(yè)開(kāi)發(fā)人員使用的大量開(kāi)源組件視而不見(jiàn)。相反,他們應(yīng)該開(kāi)始跟蹤和管理,以確保有關(guān)許可和安全的問(wèn)題都在掌控之中。Sass說(shuō):“好處遠(yuǎn)遠(yuǎn)超過(guò)了缺點(diǎn)。您只需要對(duì)此進(jìn)行管理,就可以使用開(kāi)源軟件,利用它提高您的生產(chǎn)效率,而不必有所擔(dān)心。”
而對(duì)于SAS限制開(kāi)發(fā)團(tuán)隊(duì)使用開(kāi)源軟件數(shù)量的呼吁呢?“管他呢?!?/p>
Mary Branscombe是一位自由撰稿人,二十多年來(lái)一直致力于技術(shù)寫(xiě)作,主題涵蓋從編程語(yǔ)言、Windows和Office的早期版本,到最早的網(wǎng)絡(luò)以及消費(fèi)類(lèi)小工具和家庭娛樂(lè)等各個(gè)方面。
原文網(wǎng)址:
http://www.cio.com/article/3191889/open-source-tools/how-to-track-and-secure-open-source-in-your-enterprise.html