Docker對企業(yè)云安全產(chǎn)生的影響是怎樣的?
Docker給應(yīng)用虛擬化帶來了改進,但這對安全性又意味著什么?在本文中,專家Ed Moyle介紹了Docker以及它對企業(yè)和云安全的影響。
如果你是應(yīng)用開發(fā)人員或者虛擬環(huán)境的系統(tǒng)管理員,在過去一年左右的時間,你肯定聽到了不少關(guān)于Docker的消息。這個針對Linux應(yīng)用容器虛擬化的平臺現(xiàn)在非常“火爆”,Docker為開發(fā)團隊帶來的靈活性以及給數(shù)據(jù)中心帶來的性能優(yōu)勢可能帶來革命性變化。
但是,安全專業(yè)人員可能不太熟悉Docker。很多人可能還沒有聽說過Docker,而對于知道Docker的人,他們可能想要了解這個工具的安全性,他們會問:Docker會如何改變我們的安全配置?隨著Docker使用變得更加普遍,我們應(yīng)該應(yīng)該考慮什么問題?我們現(xiàn)有的安全機制是否適合Docker環(huán)境?
在本文中,我們將深入探討Docker,什么是Docker、它為什么如此受歡迎以及一些安全方面的問題。
如果你是安全專業(yè)人員,你需要了解Docker,首先因為考慮到其流行程度,你會想知道在短期內(nèi)如何保護它。其次,Docker很重要,因為它可能最終提供一些長期的安全優(yōu)勢(這取決于你如何利用它)。下面讓我們看看Docker及其對企業(yè)安全的影響。
什么是Docker?
簡而言之,Docker是基于Linux的開源應(yīng)用容器抽象化和虛擬化機制。雖然“基于Linux的開源”很好理解,但“應(yīng)用容器抽象化”可能讓人困惑。開始你可能會覺得它很復(fù)雜,但這個概念本身其實很簡單。從本質(zhì)上講,Docker可以幫助創(chuàng)建獨立虛擬環(huán)境(即容器),在這個環(huán)境中應(yīng)用可以“做自己的事情”。這個虛擬容器為應(yīng)用提供了對底層操作系統(tǒng)的自己的半私人化(和隔離的)“視圖”,包括存儲、網(wǎng)絡(luò)、流程等資源。在很多方面,這在概念上類似于OS虛擬化。然而,想一想虛擬OS鏡像中應(yīng)用不關(guān)心或?qū)iT使用的“開銷”。例如,對于運行相同LAMP堆棧的兩個Web應(yīng)用,這個底層堆棧在這兩個應(yīng)用之間有多少差異?從整體OS安裝的百分比來看,并不是那么多,對嗎?僅虛擬化應(yīng)用(例如使用Docker Engine)讓虛擬或物理OS實例隔離應(yīng)用,這反過來又允許創(chuàng)建更輕更小的應(yīng)用程序包,僅包含它們運行所需要的東西。
開發(fā)人員發(fā)現(xiàn)這個概念很強大,因為這可以為他們的應(yīng)用帶來更便攜更容易定制的容器,這意味著他們只需花更少的時間來定制OS環(huán)境,同時有更多的時間來開發(fā)應(yīng)用功能。數(shù)據(jù)中心團隊也發(fā)現(xiàn)這個概念的價值,因為它可以實現(xiàn)更有效的資源利用,從而實現(xiàn)數(shù)據(jù)中心更高的分配密度(例如更多的應(yīng)用和更少的資源來支持它們)。
Docker安全性如何?
從安全的角度來看,應(yīng)用虛擬化聽起來很吸引人。有些安全專家可能會認為這是利用chroot來沙箱化文件系統(tǒng)的概念的延伸--或者作為FreeBSD下“jail”的直接模擬,這兩種都是隔離底層系統(tǒng)與單個應(yīng)用的方法。雖然從這個角度來看有一些優(yōu)勢,但也有一些不同之處需要注意,安全專家在評估Docker安全以及圍繞其構(gòu)建控制時也應(yīng)該注意這些問題。首先,直到最近才出現(xiàn)自動驗證官方Docker鏡像完整性的方法。官方鏡像包含支持應(yīng)用運行的核心實用程序和軟件。這可能是官方版本的Linux基本鏡像、中間件組件(例如MySQL或postgreSQL)或前端組件(例如Apache或WordPress)。
10月發(fā)布的1.3版本帶來的變化是支持自動化數(shù)字簽名驗證,以便這些官方鏡像的用戶可以確保鏡像在下載前沒有被篡改。因為這個功能,篡改官方鏡像在長期來看不再是問題。然而,由于可能還是會存在一些1.3版本前的部署,你應(yīng)該做的事情(針對1.3版本前的部署)是提供你下載的鏡像,并安裝一些額外的審查。
毫無疑問,解決1.3版本前的安裝是一個好主意。與任何軟件一樣,Docker引擎本身可能存在漏洞。例如,最新的1.3.2更新解決了一些明顯的安全問題--破壞容器之間的分隔,有個漏洞允許鏡像放松安全限制,另一個漏洞允許任意文件系統(tǒng)寫入(由此執(zhí)行代碼)。這些問題應(yīng)該作為很好的例子來說明,為什么確保安全性和保持軟件更新那么重要。
第二個需要記住的是,應(yīng)用容器不一定會執(zhí)行與管理程序在“切片”之間實現(xiàn)的相同水平的隔離。管理程序已經(jīng)做了相當多的工作來確保應(yīng)用相互隔離,其指導(dǎo)方針是,“傳統(tǒng)虛擬化技術(shù)(Xen、VMware、KVM等部署的技術(shù))被認為比容器更安全,因為它們提供額外水平的隔離。容器可以發(fā)出系統(tǒng)調(diào)用到主機內(nèi)核,而完整的虛擬機只能發(fā)出管理程序調(diào)用到主機虛擬機管理程序,這一般會產(chǎn)生更小的攻擊面。”
這個指導(dǎo)可以并且應(yīng)該影響你企業(yè)的使用情況。在短期內(nèi)你要謹慎考慮你對該隔離機制的信任度。例如,如果你在評估多租戶情況,其中你對應(yīng)用旁邊運行的程序只有有限或更少的控制(例如在公共云的情況),你可能需要謹慎選擇放到這個環(huán)境的應(yīng)用。這樣的用例可能適合低敏感度的應(yīng)用,你可能不會考慮轉(zhuǎn)移HR或總賬系統(tǒng)到這樣的環(huán)境。
安全優(yōu)勢體現(xiàn)在?
就實用性而言,如果應(yīng)用得當,使用應(yīng)用容器可能帶來安全優(yōu)勢。首先,從管理的角度來看可以帶來優(yōu)勢,這可以幫助降低復(fù)雜性。降低復(fù)雜性本身又可以幫助提高安全性。例如,與在多個不同虛擬OS實例應(yīng)用相同的控制相比,為使用應(yīng)用容器的單個平臺添加安全機制、系統(tǒng)更新或硬化技術(shù)要更加簡單。
其次,雖然現(xiàn)在應(yīng)用容器可能無法執(zhí)行與管理程序相同水平的隔離,但它提供更好的保護,因為在“庫存”Web服務(wù)器,一個應(yīng)用的感染可能意味著整個系統(tǒng)的感染。
從安全的角度來看,有些事情非常重要而需要慎重對待,但同時也有一些優(yōu)勢。根據(jù)你使用的情況,Docker可以成為你的安全工具包中的重要組成部分,這絕對是值得你關(guān)注的工具。