Docker取代VM!是什麼讓Docker比VM或裸機更安全?

隨著互聯網技術的飛速發展和變革,近幾年容器技術可以說是非常火熱!

2014 年下半年騰訊遊戲開始在生產環境中使用 Docker,2015年阿里引入Docker的鏡像技術,隨著日益完善的Docker容器技術生態鏈,使得當下企業也逐漸實現容器化的業務部署,容器化“已”成為未來的發展趨勢。

Docker容器化的實現依賴於虛擬化技術的發展,所以在技術界出現了這樣一種聲音:“Docker將取代VM!”這種觀點是否正確呢?

Docker取代VM!是什麼讓Docker比VM或裸機更安全?

在互聯網+的大數據時代,對於技術考量最重要的條件是技術的安全性,今天小編就從技術的安全性上對兩種技術進行分析“Docker是否能夠取代VM?”

內核漏洞

近幾年,不少致命的Linux內核漏洞頻繁被爆出,這些漏洞對於容器和虛擬機有怎樣的影響呢?

Docker:內核攻擊對於容器化環境來說可能是致命性的,因為容器與主機共享相同的系統內核,因此單獨信任容器內置保護機制是不夠的。

容器的隔離性使得某個應用程序的漏洞不會直接影響到其他容器的應用程序,但是漏洞可能會破壞與其他容器所共享的單一的操作系統,進而影響機器上的其他容器。

Docker取代VM!是什麼讓Docker比VM或裸機更安全?

VM:而虛擬機在這一點上就不一樣,虛擬機擁有獨立的操作系統,針對某個應用程序的漏洞,只是影響單一的虛擬機,而不會影響機器上的其他虛擬機,以達到更加安全的效果。

如果漏洞允許代碼執行,那麼它將在主機操作系統上執行,而不是在容器內執行;如果此漏洞允許任意內存訪問,則攻擊者可以更改或讀取任何其他容器的任何數據。

數據分離

Docker取代VM!是什麼讓Docker比VM或裸機更安全?

Docker:在docker容器上,有一些非命名空間的資源:

  • SELinux
  • Cgroups
  • file systems under /sys, /proc/sys,
  • /proc/sysrq-trigger, /proc/irq, /proc/bus
  • /dev/mem, /dev/sd* file system
  • Kernel Modules

如果攻擊者可以利用當中的任意一個元素,都將擁有主機系統的操作權限。

VM:VM OS無法直接訪問任何這些元素。它將與管理程序通信,管理程序將對主機OS進行適當的系統調用。同時過濾掉無效的呼叫,增加一層安全性。

資源開銷

Docker:由於宿主機上的所有容器是共享相同的內核和相同的資源,如果對某些資源(CPU、內存、磁盤等)的訪問不受限制,那麼異常的容器將佔用整個宿主機的資源,從而影響其他容器的運行,影響應用程序。

Docker取代VM!是什麼讓Docker比VM或裸機更安全?

VM:在VM上,資源由管理程序定義,所以任何VM都不能拒絕來自任何資源的主機操作系統,因為管理程序本身可以配置為限制使用資源。

套接字問題

容器在默認情況下都安裝了docker Unix套接字(/var/run/docker.sock),此套接字,可以關閉、啟動或者創建新的鏡像。

當你的容器啟動並共享套接字的時候,你就給了容器操控宿主機的權限,它將可以啟動或終止其它容器,在宿主機拖入或創建鏡像,甚至寫入到宿主機的文件系統。正確配置和保護,可以使用docker容器實現高級別的安全性,但它的安全性還是低於正確配置的VM。

總結

容器的優勢在於是它使得業務的上雲部署更快,資源利用更高。但是在安全性上並沒有虛擬機那樣安全!Docker無法取代VM!

Docker取代VM!是什麼讓Docker比VM或裸機更安全?

PS:Docker安全遺留問題

  • 非root無法運行Docker daemon
  • User Namespace可以將host中的一個普通用戶映射成容器裡的root用戶
  • 容器的中心管理方式不利於第三方的任務編排
  • 對宿主機磁盤使用沒有限額配置
  • 容器共享帶寬,容易導致I/O問題

相關推薦

推薦中...