Bob Violino
隨著越來越多的企業(yè)將數(shù)據(jù)和工作負(fù)載遷移到云上,很多企業(yè)都依賴于容器——將代碼及其相關(guān)項(xiàng)封裝在一起的軟件單元,以便應(yīng)用程序在不同的計(jì)算環(huán)境之間遷移時(shí)能夠可靠地運(yùn)行。Clemson大學(xué)遺傳與生物化學(xué)系的云架構(gòu)師Cole McKnight表示,容器化被認(rèn)為是一種以安全方式部署應(yīng)用程序和服務(wù)的強(qiáng)大技術(shù)。
McKnight介紹說,Docker和Singularity等容器引擎提供了一種方法來為具體應(yīng)用程序?qū)嵤┖头职l(fā)最佳實(shí)踐安全策略,而不是依靠某個用戶來配置安全安裝。McKnight說:“K8s、Mesos或者Docker Swarm等容器編排平臺集成了安全機(jī)制,專門用于部署和執(zhí)行容器。其結(jié)果是產(chǎn)生了易于配置的生態(tài)系統(tǒng),用于開發(fā)和部署容器。”
McKnight說,這些技術(shù)把交付安全應(yīng)用程序和服務(wù)傳統(tǒng)上所涉及的很多復(fù)雜問題抽象化了,而一些開發(fā)團(tuán)隊(duì)認(rèn)為這在一定程度上能保證安全。問題是,容器實(shí)現(xiàn)不是萬無一失的,開發(fā)團(tuán)隊(duì)在使用它們時(shí)所犯的錯誤可能會造成安全問題,而不是解決安全問題。
McKnight說:“實(shí)施安全容器時(shí),最常見的錯誤是只關(guān)注容器本身?!彼f,采用鏡像安全的最佳實(shí)踐非常重要,但開發(fā)人員通常是把重點(diǎn)放在鏡像的安全性上,而沒有考慮執(zhí)行環(huán)境。
McKnight說:“容器內(nèi)的任何安全機(jī)制都無法保護(hù)其免受主機(jī)的攻擊。承載容器引擎的每臺計(jì)算機(jī)必須在每一層都受到保護(hù),以防出現(xiàn)任何傳統(tǒng)上可被利用的漏洞?!?/p>
McKnight說,容器引擎和容器編排平臺(如果適用)必須配置為能夠正確使用集成的容器安全機(jī)制?!八?,容器的安全是以主機(jī)操作系統(tǒng)和網(wǎng)絡(luò)為基礎(chǔ)的?!?h3>2.認(rèn)為代碼庫是安全的
獨(dú)立網(wǎng)絡(luò)安全顧問Tony Asher指出,在部署容器時(shí),一些企業(yè)會犯錯誤,把代碼庫包括在內(nèi),并認(rèn)為它們是安全的。Asher說:“這包括開發(fā)套件中的庫。更為嚴(yán)重的是,通常為了加快開發(fā)而引入了第三方庫。”
Asher說,安全問題在于這些應(yīng)用程序代碼庫中可能存在漏洞?!熬幾g應(yīng)用程序,并將其引入到產(chǎn)品容器中可能會導(dǎo)致漏洞攻擊而帶來嚴(yán)重風(fēng)險(xiǎn)?!?/p>
為了解決這個問題,Asher建議企業(yè)在考慮導(dǎo)入第三方庫時(shí),把庫限制在應(yīng)用程序容器滿足其成功標(biāo)準(zhǔn)所需的范圍內(nèi),掃描代碼以查找漏洞,并應(yīng)用安全檢查過程。
風(fēng)險(xiǎn)投資公司ClearSky的管理合伙人Jay Leek說,給容器太多特權(quán)是很常見的,攻擊者可以濫用這些特權(quán)來利用容器不應(yīng)該訪問但確實(shí)能夠訪問的資源。Leek說:“在此,應(yīng)該應(yīng)用最小特權(quán)原則,但要執(zhí)行運(yùn)行時(shí)行為監(jiān)視,以確保能夠檢測到濫用任何必要的應(yīng)用程序特權(quán)的情況?!?/p>
McKnight說,一種常見的做法是在執(zhí)行環(huán)境中以特權(quán)方式運(yùn)行容器。他說:“取決于主機(jī)的軟件堆棧,這會有所不同?!钡窃谥鳈C(jī)環(huán)境中給予容器不必要的特權(quán)會帶來嚴(yán)重的問題,不僅會導(dǎo)致容器被攻破,主機(jī)也會被攻破。
McKnight說,當(dāng)需要特權(quán)時(shí),應(yīng)該謹(jǐn)慎地以精細(xì)的粒度給予特權(quán)?!白罴褜?shí)踐是避免在主機(jī)環(huán)境中為容器配置了全部權(quán)限。”
類似的,要以同樣的理念來設(shè)計(jì)在執(zhí)行時(shí)需要公開給公共網(wǎng)絡(luò)的容器。McKnight說:“應(yīng)該只開放絕對必要的通道,而不是配置全部策略導(dǎo)致容器公開而受到攻擊?!?/p>
在網(wǎng)絡(luò)方面,需要仔細(xì)考慮容器的數(shù)據(jù)和進(jìn)程公開給其他實(shí)體的方式。McKnight說:“容器安全還是以傳統(tǒng)操作系統(tǒng)和網(wǎng)絡(luò)安全為基礎(chǔ)?!北仨殭z查容器與外部卷、網(wǎng)絡(luò)和進(jìn)程之間的任何交互。
企業(yè)在部署容器時(shí)通常忽略的另一個因素是它們所基于的鏡像。McKnight說:“開發(fā)人員通常會犯的錯誤是,在將另一方開發(fā)的鏡像集成到他們的解決方案之前,不對其進(jìn)行適當(dāng)?shù)臋z查。”
在從公共注冊表部署容器或者將其用作基本鏡像之前,應(yīng)對其進(jìn)行掃描以查找惡意軟件和漏洞。McKnight說,此外,企業(yè)應(yīng)該有一名經(jīng)驗(yàn)豐富的開發(fā)人員徹底檢查鏡像,找出不必要的漏洞。
McKnight說:“如果認(rèn)為推送到公共注冊表處的鏡像是安全的,這可能是非常危險(xiǎn)的,特別是用它們構(gòu)建其他鏡像時(shí)。”
Asher指出,不可變鏡像是不會改變的。他說:“這是Docker、K8s和其他容器解決方案的一個原則?!痹诹阈湃蔚幕ヂ?lián)網(wǎng)上部署系統(tǒng)和數(shù)據(jù)時(shí),應(yīng)建立一個確保完整性的流程。
不可變鏡像有一些優(yōu)點(diǎn),例如可預(yù)測、可銷售以及可實(shí)現(xiàn)自動恢復(fù)。Asher說,還有完整性,這是安全的核心目標(biāo)之一。
Asher說:“當(dāng)產(chǎn)品容器不遵循不可變原則時(shí),應(yīng)用程序支持就能夠連接上它們并進(jìn)行修改。這種行為會引發(fā)多重安全隱患。具體來說,它會破壞容器的完整性?!?/p>
最令人擔(dān)憂的風(fēng)險(xiǎn)之一是惡意行為者將容器修改為包含惡意代碼。Asher說,這會對企業(yè)造成重大影響。監(jiān)控容器的完整性可以極大地降低這種風(fēng)險(xiǎn)。
Asher說:“改進(jìn)并糾正部署流程,以防止產(chǎn)品容器發(fā)生變化。一定要在質(zhì)量保證和測試環(huán)境中進(jìn)行更改,而且更改是得到批準(zhǔn)的,然后部署新的不可變鏡像以替換舊鏡像?!?/p>
Bob Violino目前在紐約,是Insider Pro、Computerworld、CIO、CSO、InfoWorld和Network World的特約撰稿人。
原文網(wǎng)址
https://www.csoonline.com/article/3541149/6-common-container-security-mistakes-to-avoid.html