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