容器被譽為是將應用程序部署到服務器上的非常有效的手段。容器(例如基于Docker開源標準的容器)比虛擬機消耗更少的資源,并且容器的設計更容易,且實例化和提供更快。
然而,與虛擬機不同,容器并不是100%與底層主機操作系統(通常是Linux或Window Server)或服務器上的驅動程序或其他應用程序隔離的。
虛擬機是一個完整的虛擬化服務器,通過被稱為虛擬機管理程序的軟件分配磁盤空間、處理器周期和I/O資源。在虛擬機中可以找到真實服務器上的所有內容:操作系統、設備驅動程序、應用程序、配置文件和網絡連接。
換句話說,從底層起,是裸機、服務器的主機操作系統、管理程序,然后是一個或多個虛擬機,每個虛擬機都有自己的操作系統、驅動程序和應用程序。
相比之下,容器中的所有內容都共享底層主機操作系統、設備驅動程序和一些配置文件。例如Docker,它提供一個或多個容器,而不是管理程序。每個容器只保存應用程序。這些應用程序依賴于主機操作系統和驅動程序,它也與在同一臺服務器上運行的其他容器共享。
容器的好處是:開銷更小
如果在Linux服務器上有20臺Linux虛擬機,則需要使用內存和CPU資源運行21個Linux實例,其中20個是虛擬機,另一個運行主機。啟動所有這些Linux實例需要一定的時間,并且開銷很大。
另一方面,所有這些Linux虛擬機都是相互隔離的,事實上,它們甚至可能是不同版本的Linux.在VM模型中,這完全沒問題。
相反,如果在Linux服務器上有20個容器,則只需要一個Linux副本運行。啟動一個容器非常快,并且消耗的資源要少得多,只有一個Linux內核和一組共享庫。
但是,一個容器中的出現安全問題可能會泄漏并影響其他容器或其應用程序。
虛擬機的好處:更強的隔離
現代微處理器、主機操作系統(Linux和Windows)以及虛擬機管理程序(VMware ESX,Citrix XenServer和Microsoft Hyper-V)中的技術可在每個虛擬機之間提供基于硬件的隔離。這種保護是同心環:每個環都受到較高編號的環的保護,其中0環位于中心,與應用隔離。
在虛擬機系統中,主機操作系統的內核在0環中運行,這意味著什么都無法達到。管理程序在環1中運行。而單個虛擬機在環2中運行,因此無法訪問環1內的管理程序或操作系統。
更重要的是,管理程序可以使用它的環1權限來執行規則,防止一個VM訪問另一個VM的內存、應用程序或資源。
由于Docker Daemon不是環1管理程序,而是簡單的環2應用程序,所以在容器中事物并不是同樣安全的。因此,硬件中沒有任何東西可以完全阻止一個容器對底層服務器進行更改,或者訪問其他容器的內存、存儲或設置。雖然有軟件保護,但它們并非難以穿透。
如何保護容器
基于容器的服務器的安全性應視為適合“friends and family”:我們應該了解并信任在該服務器上運行的所有應用程序。
但是我們不需要知道或信任在服務器上運行的其他虛擬機上的應用程序,這就是為什么云托管公司使用虛擬機而不是容器來隔離客戶的軟件和數據的原因。
保護容器不易受到傷害,可以歸結為以下幾種常見方法。首先,最小化容器化軟件的攻擊面,以便在受到攻擊時,將數據泄漏的危險性降到最小。
另一個是嚴格控制對容器的訪問,并且如果有必要,需要在自己的服務器上隔離特別敏感的容器。
一定要研究使用的容器系統以及底層主機操作系統。例如,那些在Red Hat Linux上運行的容器應該查看公司的“十層容器安全”文檔。其他必讀內容是Docker的“容器安全入門”和Microsoft的“在Azure容器服務中確保Docker容器安全”。
容器是將應用程序部署到云中的最快、最有效的方式,并且比虛擬機的資源效率更高。目前的問題是容器不像虛擬機那樣安全。但只要在使用容器的時候考慮到這一點,你將能夠得到更好的體驗。
-
容器
+關注
關注
0文章
495瀏覽量
22062 -
虛擬機
+關注
關注
1文章
917瀏覽量
28202
發布評論請先 登錄
相關推薦
評論