虛擬機器、容器與沙箱三者的相同與異同
首先,什麼是沙箱?
它本身就是一種線下生活現象的虛擬化。現實世界裡,小孩子們在沙地、沙灘上用木板隔離出一個方盒子,在盒子裡堆砌、創造各種東西 - 城堡、房屋、山丘... 這就是一個沙箱。
它有兩個根本特點:
1、它有邊界,透過木板設定了遊戲創造的範圍只在圍牆內;
2、它的遊戲材料是沙,任何的創造,一抹就平,瞬間無影無蹤不留痕跡。
這兩個特點,在計算機世界被模擬了。在一臺裝置(不管是一臺伺服器還是一個手機,我們稱之為“宿主”)中,透過軟硬體手段的結合,可以模擬出一個“管控”區域,它的裡面是預先指定、劃分出來的運算與儲存資源,與宿主的其他資源完全隔離。應用程式碼可以被丟到這個區域裡執行,即使它是病毒、木馬、DDoS攻擊軟體,它也只能在這麼一個資源受限的模擬世界折騰,它就像在Matrix裡的人,看不到宿主裡其他的平行世界,甚至不知道宿主的存在,無法濫用宿主資源從而毀滅宿主(和其他平行世界)。此外,任何這樣的區域,既然是模擬的,不管裡面跑著什麼,都可以被“一鍵刪除”,一切歸零。
虛擬機器、容器和沙箱是什麼關係?
虛擬機器和容器技術都可以看作是沙箱的不同表現。
虛擬機器和容器。前者是對硬體的虛擬化,後者則更像是作業系統的虛擬化。兩者都提供了沙箱的能力:虛擬機器透過硬體級抽象提供,而容器則使用公共核心提供程式級的隔離。
具體來說:
容器是一種對應用進行打包、分享和部署的現代化方式。與把所有功能打包為單一軟體的單體應用,容器化應用或微服務的設計目標是專注於單一任務。容器中包含要完成這一任務所需的所有依賴專案(包、庫和一些二進位制檔案)。正因如此,容器化應用是平臺無關的,能夠在任何作業系統上執行,並不在意其版本或者已部署軟體。這給開發人員帶來了極大的方便!
當容器在主機上完成部署之後,每個容器的資源,例如檔案系統、程式和網路棧都會被安置在一個虛擬的隔離環境之中,其它容器無法訪問這一隔離環境。這個技術能夠在一個叢集內同時執行幾百或幾千個容器,容器化應用能夠輕鬆的透過複製容器例項的方式進行伸縮。
容器執行時為每個容器模擬一個作業系統,虛擬機器(VMM)則為每個虛擬機器模擬一個硬體環境,容器共享主機作業系統的核心以及物理硬體,虛擬機器共享主機的物理硬體。因為容器從主機上共享的資源更多,它們對儲存、記憶體以及 CPU 的利用比虛擬機器更加有效。然而共享越多,其代價就是容器之間、容器和主機之間的信任邊界就越模糊。虛擬機器和容器的架構差異如下:
虛擬機器和容器的架構差異
相對於名稱空間隔離技術而言,虛擬化硬體隔離通常會有更好的安全邊界。容器(程式)中逃出的攻擊者,往往比虛擬機器中逃出的攻擊者具有更大的威脅。名稱空間和 cgroup 的弱隔離是造成這種風險的原因。
這些安全性方面的擔憂,促使開發人員不斷為容器構建更強的信任邊界。具體的解決方式就是建立一個真正的沙箱容器。以近期瞭解的 前端安全沙箱技術 FinClip為例,這是一種嵌入式安全沙箱,又被稱之為小程式容器,它的本質其實是建立在Security Capability model基礎上的瀏覽器核心的擴充套件,其沙箱的特點,體現在三個方面:
1、沙箱內小程式之間的隔離。
2、沙箱對執行其中的小程式程式碼,隔離其對宿主環境的資源訪問。
3、沙箱隔離了宿主對於沙箱中執行的小程式所產生的資料。
具體來說,FinClip 為業務程式碼提供 一個封閉的安全沙箱,有效對抗外部程式碼的干擾和資料 洩露風險;第三方App只能透過SDK暴露的介面啟動SDK,SDK完全管控對業務 程式碼所需要的執行環境以及業務程式碼所有對外通訊,可以透過多種機制保證網路 通訊不被攔截和干擾;SDK 內部使用獨立的瀏覽器核心,執行環境與系統瀏覽器 完全隔離 (在 Android 上)。
這種安全沙箱中執行的主要是輕應用、小程式,在應用正規化上相容網際網路主流的小程式規範,應用落地的門檻很低,能迅速投入應用。對於對接大量外部應用的企業來說,這個設計是非常巧妙的。換句話說,不管小程式的“供應商”是誰,它們的程式碼都被隔離、同時也被保護在沙箱環境中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017183/viewspace-2923446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 虛擬機器、容器和沙箱是什麼關係?虛擬機
- 虛擬機器與容器的混合管理實踐虛擬機
- 技術界中的虛擬機器、容器和沙箱的關係虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 由淺入深 docker 系列:(4) 容器與虛擬機器Docker虛擬機
- 虛擬機器、容器與沙盒技術有什麼區別?虛擬機
- 虛擬機器可以ping同宿主機,宿主機ping不通虛擬機器虛擬機
- 虛擬機器與宿主機的網路連線虛擬機
- Java虛擬機器8:虛擬機器效能監控與故障處理工具Java虛擬機
- 虛擬機器與偵錯程式的討論虛擬機
- 虛擬機器+FunASR的安裝與使用虛擬機
- Docker容器和虛擬機器區別Docker虛擬機
- vmware虛擬機器與主機檔案共享虛擬機
- 虛擬機器VMWARE與其網路配置(包你玩轉虛擬機器)(轉)虛擬機
- 主機與virtualbox虛擬機器的互ping虛擬機
- 沙盒化容器:是容器還是虛擬機器虛擬機
- 編譯器GCC與Clang的異同編譯GC
- 雲伺服器與虛擬主機的區別伺服器
- 虛擬主機、VPS、雲伺服器三者的區別伺服器
- 虛擬機器與電腦主機網路配置虛擬機
- VMware虛擬機器與主機共享資料夾虛擬機
- VM和Container 虛擬機器和容器AI虛擬機
- Docker,容器,虛擬機器和紅燒肉Docker虛擬機
- 虛擬機器已死,容器才是未來?虛擬機
- Hadoop叢集--linux虛擬機器Hadoop安裝與配置、克隆虛擬機器HadoopLinux虛擬機
- Java虛擬機器:JVM架構與垃圾回收Java虛擬機JVM架構
- Java虛擬機器05——物件分配與回收策略Java虛擬機物件
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- Windows 與 虛擬機器VirtualBox 共享掛載Windows虛擬機
- Oracle VirtualBox 配置宿主機與虛擬機器互訪Oracle虛擬機
- Java虛擬機器執行機制與相關概念Java虛擬機
- 虛擬機器與主機互傳檔案方法分享虛擬機
- 淺析Java虛擬機器結構與機制[轉]Java虛擬機
- session與cookie的異同SessionCookie
- JVM虛擬機器-垃圾回收機制與垃圾收集器概述JVM虛擬機
- 深入理解JVM虛擬機器11:Java記憶體異常原理與實踐JVM虛擬機Java記憶體
- 殊途同歸:SaaS與應用虛擬化薦
- 虛擬機器和容器的對比 Virtual Server VS Docker虛擬機ServerDocker