藏在“隱秘角落”里的容器問題,你敢說都知道?

McKnight說,這些技術(shù)把交付安全應(yīng)用程序和服務(wù)傳統(tǒng)上所涉及的很多復(fù)雜問題抽象化了,而一些開發(fā)團(tuán)隊(duì)認(rèn)為這在一定程度上能保證安全。問題是,容器實(shí)現(xiàn)不是萬無一失的,開發(fā)團(tuán)隊(duì)在使用它們時所犯的錯誤可能會造成安全問題,而不是解決安全問題。

隨著越來越多的企業(yè)將數(shù)據(jù)和工作負(fù)載遷移到云上,很多企業(yè)都依賴于容器——將代碼及其相關(guān)項(xiàng)封裝在一起的軟件單元,以便應(yīng)用程序在不同的計(jì)算環(huán)境之間遷移時能夠可靠地運(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ì)在使用它們時所犯的錯誤可能會造成安全問題,而不是解決安全問題。

1

太專注于容器本身

McKnight說:“實(shí)施安全容器時,最常見的錯誤是只關(guān)注容器本身。”他說,采用鏡像安全的最佳實(shí)踐非常重要,但開發(fā)人員通常是把重點(diǎn)放在鏡像的安全性上,而沒有考慮執(zhí)行環(huán)境。

McKnight說:“容器內(nèi)的任何安全機(jī)制都無法保護(hù)其免受主機(jī)的攻擊。承載容器引擎的每臺計(jì)算機(jī)必須在每一層都受到保護(hù),以防出現(xiàn)任何傳統(tǒng)上可被利用的漏洞。”

McKnight說,容器引擎和容器編排平臺(如果適用)必須配置為能夠正確使用集成的容器安全機(jī)制。“所以,容器的安全是以主機(jī)操作系統(tǒng)和網(wǎng)絡(luò)為基礎(chǔ)的。”

2

認(rèn)為代碼庫是安全的

獨(dú)立網(wǎng)絡(luò)安全顧問Tony Asher指出,在部署容器時,一些企業(yè)會犯錯誤,把代碼庫包括在內(nèi),并認(rèn)為它們是安全的。Asher說:“這包括開發(fā)套件中的庫。更為嚴(yán)重的是,通常為了加快開發(fā)而引入了第三方庫。”

Asher說,安全問題在于這些應(yīng)用程序代碼庫中可能存在漏洞。“編譯應(yīng)用程序,并將其引入到產(chǎn)品容器中可能會導(dǎo)致漏洞攻擊而帶來嚴(yán)重風(fēng)險。”

為了解決這個問題,Asher建議企業(yè)在考慮導(dǎo)入第三方庫時,把庫限制在應(yīng)用程序容器滿足其成功標(biāo)準(zhǔn)所需的范圍內(nèi),掃描代碼以查找漏洞,并應(yīng)用安全檢查過程。

3

給予容器

不必要的特權(quán)

風(fēng)險投資公司ClearSky的管理合伙人Jay Leek說,給容器太多特權(quán)是很常見的,攻擊者可以濫用這些特權(quán)來利用容器不應(yīng)該訪問但確實(shí)能夠訪問的資源。Leek說:“在此,應(yīng)該應(yīng)用最小特權(quán)原則,但要執(zhí)行運(yùn)行時行為監(jiān)視,以確保能夠檢測到濫用任何必要的應(yīng)用程序特權(quán)的情況。”

McKnight說,一種常見的做法是在執(zhí)行環(huán)境中以特權(quán)方式運(yùn)行容器。他說:“取決于主機(jī)的軟件堆棧,這會有所不同。”但是在主機(jī)環(huán)境中給予容器不必要的特權(quán)會帶來嚴(yán)重的問題,不僅會導(dǎo)致容器被攻破,主機(jī)也會被攻破。

McKnight說,當(dāng)需要特權(quán)時,應(yīng)該謹(jǐn)慎地以精細(xì)的粒度給予特權(quán)。“最佳實(shí)踐是避免在主機(jī)環(huán)境中為容器配置了全部權(quán)限。”

4

過度公開容器

類似的,要以同樣的理念來設(shè)計(jì)在執(zhí)行時需要公開給公共網(wǎng)絡(luò)的容器。McKnight說:“應(yīng)該只開放絕對必要的通道,而不是配置全部策略導(dǎo)致容器公開而受到攻擊。”

在網(wǎng)絡(luò)方面,需要仔細(xì)考慮容器的數(shù)據(jù)和進(jìn)程公開給其他實(shí)體的方式。McKnight說:“容器安全還是以傳統(tǒng)操作系統(tǒng)和網(wǎng)絡(luò)安全為基礎(chǔ)。”必須檢查容器與外部卷、網(wǎng)絡(luò)和進(jìn)程之間的任何交互。

5

未能正確檢查鏡像

企業(yè)在部署容器時通常忽略的另一個因素是它們所基于的鏡像。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)為推送到公共注冊表處的鏡像是安全的,這可能是非常危險的,特別是用它們構(gòu)建其他鏡像時。”

6

不尊重

不可變鏡像的原則

Asher指出,不可變鏡像是不會改變的。他說:“這是Docker、K8s和其他容器解決方案的一個原則。”在零信任的互聯(lián)網(wǎng)上部署系統(tǒng)和數(shù)據(jù)時,應(yīng)建立一個確保完整性的流程。

不可變鏡像有一些優(yōu)點(diǎn),例如可預(yù)測、可銷售以及可實(shí)現(xiàn)自動恢復(fù)。Asher說,還有完整性,這是安全的核心目標(biāo)之一。

Asher說:“當(dāng)產(chǎn)品容器不遵循不可變原則時,應(yīng)用程序支持就能夠連接上它們并進(jìn)行修改。這種行為會引發(fā)多重安全隱患。具體來說,它會破壞容器的完整性。”

最令人擔(dān)憂的風(fēng)險之一是惡意行為者將容器修改為包含惡意代碼。Asher說,這會對企業(yè)造成重大影響。監(jiān)控容器的完整性可以極大地降低這種風(fēng)險。

Asher說:“改進(jìn)并糾正部署流程,以防止產(chǎn)品容器發(fā)生變化。一定要在質(zhì)量保證和測試環(huán)境中進(jìn)行更改,而且更改是得到批準(zhǔn)的,然后部署新的不可變鏡像以替換舊鏡像。”

作者:Bob Violino目前在紐約,是Insider Pro、Computerworld、CIO、CSO、InfoWorld和Network World的特約撰稿人。

編譯:Charles

原文網(wǎng)址:https://www.csoonline.com/article/3541149/6-common-container-security-mistakes-to-avoid.html

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論