隨著Docker的崛起,Linux LXC以及其他的容器供應商已經多次提出了云計算容器技術對于企業應用是否具有足夠安全性的問題。
當然,這項新技術比傳統基于管理處許的虛擬機具有更低的實用性,這主要是因為這項技術本身仍然是相當的不成熟。然而,由于其性能方面的優勢是顯而易見的,因此業內對于容器技術的安全性并未多做討論。
什么是云計算容器?
容器技術在很多方面都不同于諸如VMware和VirtualBox這樣的技術。
首先,容器通常有一個目的,那就是要托管一個網絡服務器或一個數據庫。從技術上講,容器與虛擬機之間的根本區別在于虛擬機模擬虛擬硬件,它需要一個系統管理程序,因此它需要比云計算容器技術更多的磁盤空間和更強大的處理能力。這樣一來,云計算容器就成為了受云計算供應商安全性程序垂青的組件。例如,Docker就與所有的主要云計算服務供應商有著一個合作伙伴關系,如亞馬遜、微軟以及谷歌等。
毫無疑問,容器技術是非常有用的,它能夠提供更好的便攜性和定制化,同時減少資源消耗和成本支出,但是與其他眾多"流行的"技術類似,安全性是阻礙其進一步發展的因素。
云計算容器技術的安全性問題
容器技術的最大問題在于,它們缺少一個像虛擬機所擁有的安全邊界。從理論上來說,如果一名黑客能夠在底層操作系統中找到一個漏洞,那么他就同樣可以利用這個漏洞來獲得訪問容器的權限。反之的可能性也是理論上存在的,黑客可以找到容器的漏洞,進而利用它來獲得訪問底層服務器的權限。
更糟糕的是,Docker和其他的容器技術采用了一些可作為“root”超級用戶運行的功能(Docker表示,在上個月發布的1.8版本中已經解決了root權限問題)。這個問題可能會對云計算供應商環境帶來更大的影響,我們可以想象:所有的云計算服務都通過容器進行部署,而一名黑客能夠突破一個容器,并訪問相同硬件上的其他容器。對于云計算供應商和云計算用戶來說,這個問題都有可能是災難性的。所以,容器技術的部署需要深思熟慮。
容器的另一個問題是實際的創建過程。例如,如果某一家企業創建了它自己的容器,那么其安全性水平將起決于企業本身的能力;如果工作人員沒有很好地開發、保護和管理它,那么容器可能就無法實現其預期效益——也許使用預制的容器可能會更好。但是,需要引起注意的是,如果企業需要從一個存儲庫中獲得一個容器,它可能并不能確切地知道正在下載什么內容;例如,如果容器有一個記錄按鍵操作的技術可將用戶名和密碼上傳至遠程服務器,那么會怎么樣?
這些安全問題都是較為普遍存在的,因為業界對于容器安全方面的研究還投入不多。此外,對于如何確保其安全性也沒有一個明確的指導意見。
簡單而言,在業內把容器技術和虛擬機的安全性劃上等號之前,還是有很多工作要做的。但是,這項工作已經開始。Docker在2015年八月發布了一個重大的安全更新,其中就包括了名為Docker 內容信任的新功能,這個新功能主要是通過為容器庫提供一個基于公共密鑰的簽名機制來實現容器部署的安全性,從而在一定程度上緩解這一問題。
確保云計算容器安全性的最佳實踐
如果某一家企業是從公共庫中獲取Docker容器的,那么它應當尋找那些由新的Docker內容信任系統簽名的Docker容器,以便于確保它下載的是一個合法的容器。其他需要注意的關鍵點包括:確保禁用不需要的功能、確保只有受信任的用戶能夠操作控制容器的守護進程。此外,還應啟用容器間的防火墻以限制不同容器之間的交互。
當容器技術變得越來越安全時,它們將在大多數企業中占據一席之地。標準部署匹配容器化優勢將為業內用戶帶來便于部署、較低的資源要求以及成本降低等諸多好處。例如,想要部署數據庫系統的IT團隊能夠很容易地獲得一個MySQL容器,而這個容器中已經準備好了所有的必備組件,這樣就大大縮短了系統部署所需的時間。對于容器技術來說, 最可能的應用場景將是成為虛擬機的配合角色而不是取代它們。在企業部署應用中,這兩種技術都有其立足之所。
總之,容器是一個很好的技術,應考慮將其納入商業應用。配合虛擬機技術,它們能夠節省時間和金錢,但是它們的部署卻是需要費一番思量的,當然其來源也應是可信的。