容器給將安全性融入發(fā)展和操作過程中提供了一個千載難逢的機會,讓我們把握住這個機會。
當(dāng)企業(yè)開發(fā)應(yīng)用程序時,安全性仍被看做是一個事后考慮項,在應(yīng)用發(fā)布之前才會涉及。軟件容器的迅猛發(fā)展,為把安全性納入上游開發(fā)過程(或在devops術(shù)語中稱為“左移”)提供了一個難得的機會,并成為早期綜合性和整個軟件交付的管道。然而,大多數(shù)安全團隊不知道容器為何物,更不必說了解它們獨特的安全挑戰(zhàn)是什么了。
軟件容器可以被認(rèn)為是系統(tǒng)需求更為精簡的輕量級虛擬器。在運行時,容器共享主機的操作系統(tǒng)內(nèi)核,大大減少了信息處理量(只有兆字節(jié)),加快了運行速度。容器啟動一個虛擬器僅需幾秒而不是幾分鐘。
容器自21世紀(jì)初期就出現(xiàn)了,并于2007年被構(gòu)架到Linux中。因其占用空間小和便攜性,與虛擬器相比同樣的硬盤可以支持更多的容器,極大的減少了基礎(chǔ)設(shè)施成本,加快了更多應(yīng)用程序的運行速度。
然而,由于可用性問題,容器并未流行,直到Docker加入后改善了其可用性和對企業(yè)的適用性。如今容器——和Docker——變得炙手可熱。今年早些時候,摩根大通和梅隆銀行公開表示,他們正在尋求一種基于容器的發(fā)展戰(zhàn)略,證明了容器對傳統(tǒng)企業(yè)的發(fā)展有巨大的推動力,就像云之于谷歌、優(yōu)步和Yelp。
就像容器的卓越性一樣,它們也帶來了獨特的新風(fēng)險。通常情況下,只有在新技術(shù)出現(xiàn)時才會發(fā)生此類事件,因此安全意識并未構(gòu)建在容器內(nèi)部。如果容器不在你的雷達上,那么現(xiàn)在是時候加速了,因為它們很有可能已經(jīng)在你們公司內(nèi)部的某個地方開始運行。我列出了在使用容器時會面臨的5個獨特的問題。
1.容器圖像中的漏洞管理
圖像是構(gòu)建容器的基石。開發(fā)人員可以輕易地創(chuàng)建自己的圖像,或者從Docker 樞紐和其他集中開源注冊中心下載公共圖像。使容器的使用達到高度自動化,過程靈活。
從安全性和管理方式的角度看,信任容器圖像是貫穿整個軟件開發(fā)生命周期的關(guān)鍵考量。確保圖像的簽署和來源于一個可信的注冊處是保障安全的最佳做法。不過,堅持這些做法并不足以應(yīng)對審批和驗證代碼的核心挑戰(zhàn)。
在容器環(huán)境中,圖像被不斷地加入到企業(yè)的私人注冊處和樞紐,容器負(fù)責(zé)圖像的收入和輸出。即使列出了圖像的漏洞,基于對其公司安全事件和政策的考量,開發(fā)團隊也很少能提出解決辦法。例如,開發(fā)人員從一個注冊處中選取了一個有1000處漏洞的圖像。這個數(shù)字本身的上下波動并沒有可操作性。有多少諸如此類的漏洞發(fā)生呢?為什么?
放大開放源圖像的問題相對容易,特別是有多個圖層的圖像尤其容易。為加速資源配置在圖像中創(chuàng)建越多的圖層,軟件組件就會面臨越大的風(fēng)險,包括開放源組件。風(fēng)險會在不被掃描、驗證或修補的情況下產(chǎn)生。
我們已將發(fā)現(xiàn),由于企業(yè)沒有一個系統(tǒng)的容器漏洞評估體系,導(dǎo)致容器化措施施行受阻甚至擱淺。因此,一個不斷改進的漏洞評估和修復(fù)體系要作為完整的一部分被納入企業(yè)的IT風(fēng)險和治理計劃中去。
2.減少容器的攻擊面
減少攻擊面是保障安全性的基本原則。防止代碼漏洞進入環(huán)境是減少一個關(guān)鍵攻擊面的完美示例,需要注意的是,容器化有特定結(jié)構(gòu)和操作要素。主要是,除了要保障主機的安全性,更要保障容器中潛在的共享內(nèi)核架構(gòu)的安全性;這需要維護標(biāo)準(zhǔn)配置和容器配置文件。
不像在虛擬化環(huán)境中,虛擬機管理程序作為其控制點,任何用戶或服務(wù)訪問內(nèi)核根賬戶能夠查看和訪問所有所有容器共享Linux內(nèi)核。安全團隊可以依靠驗證的方法來強化內(nèi)核和主機,但這離用成熟和可復(fù)驗的方式來確保特定于容器環(huán)境中操作過程的安全還差得很遠(yuǎn)。
其中的很多過程是容器化中固有的。例如,容器本身依靠內(nèi)核以及一系列服務(wù)利用Docker防護程序通過系統(tǒng)調(diào)用。而Docker在調(diào)用開箱seccomp(安全計算模式)配置文件的能力有了顯著提高,這些文件只在默認(rèn)情況下禁用52系統(tǒng)調(diào)用,出于X64計算機中的313可用性,仍留下了一些開放的260系統(tǒng)調(diào)用。
另一個例子是把Docker防護程序綁定到Unix Docker訪問組或TCP端口從而允許容器互相交流,此外,也有提供給所用用戶根權(quán)限的作用。根開放可以減少運營摩擦,但是可能會使安全部門對違反最小特權(quán)訪問原則表示不滿。