專訪Docker與微軟高層:Docker容器安全
Docker和微軟想將目前受萬人矚目的Linux容器引入到Windows生態(tài)系統(tǒng),即2016年推出的下一代Windows Server中。在SearchWindowsServer與Docker CTO和微軟Azure CTO的第一部分訪談中,我們分享了兩家在將Docker工具輸出到Windows的過程中所做出的努力,容器對Windows銷量的影響以及新興的編排競爭市場。
在第二部分中,他們討論了不可避免的容器安全問題,并且表示正在采取措施來解決這些問題,包括Windows Server以及兩家公司未來伙伴關(guān)系等。
你可能聽說了有關(guān)容器安全的問題,這些擔(dān)憂是合理的嗎?如果真的存在安全問題,需要哪些改進呢?
Solomon Hykes:周圍有很多有關(guān)Docker和安全的聲音。根據(jù)我的經(jīng)驗,你真的需要有一種方法來辨識實際情況跟別人的危言聳聽。
重要的是要記住,90%的重?fù)?dān)不是由Docker低級系統(tǒng)構(gòu)建塊完成的,而是由底層操作系統(tǒng)完成的。我對所有有關(guān)Docker安全問題這種說法最大的保留在于,很多時候它與Docker的安全無關(guān);而是與Linux容器和專門的操作系統(tǒng)的安全有關(guān)。這要看你編排Docker所使用的系統(tǒng)類型。
因為到目前為止,Docker幾乎完全運行在Linux主機上,你會看到專家對Linux容器在隔離應(yīng)用方面的安全分析,我想這是一件好事。問題確實吸引了很多眼球。
現(xiàn)在,我們正在擴大操作系統(tǒng)的圍,并且Windows配置文件是完全不同的一回事......這將需要一個全新的安全分析方式,我想結(jié)果會是非常積極的。最重范要的,我想說安全是多層次的,安全的一個重要方面是更好的管理——更好地了解發(fā)生了什么。通常來說,自動化部署的好處以及更好地了解大量不同機器和容器之間的操作和運行是安全的最高獎賞。
總的來說,這種趨勢是積極的,但我們必須謹(jǐn)慎和小心。我們一直是第一個說,‘好吧,用這個配置要小心。這是在生產(chǎn)中是好的。’
微軟在安全問題上的看法是什么?
Mark Russinovich:容器和安全問題是一個非常廣泛的話題,你需要了解他人在說什么,比如容器管理或者容器的代碼。
我們在Windows Server中提供兩種容器類型。兩者有不同的容器代碼,以及不同的主機容器信任關(guān)系。舉個例子,在我們的云中,我們有多租戶(平臺即服務(wù)),主機代碼由客戶提供,我們稱這為敵意的多租戶環(huán)境,因為我們必須假設(shè)他們是敵對的,盡管有可能不是。我們對隔離所實現(xiàn)的代碼非常高。
當(dāng)然,我們信任Hyper-V是安全的,我們關(guān)注內(nèi)部代碼,這就是為什么Azure云即是基礎(chǔ)設(shè)施即服務(wù),也是平臺即服務(wù)。這些服務(wù)創(chuàng)建在虛擬機上,客戶A的代碼在1號虛擬機,客戶B的代碼在2號虛擬機。我們放心地把這些機器放在同一個服務(wù)器上,因為我們信任我們的hypervisor。
當(dāng)涉及到Windows Server容器,當(dāng)同一虛擬機上有兩部分不同的不受信任代碼時,我們不會對隔離的安全程度放心的。這是因為它們共享Windows操作系統(tǒng)內(nèi)核,如果操作系統(tǒng)被攻擊(通過拒絕服務(wù))或者提升特權(quán),這樣攻擊者可以破壞容器,并且訪問主機或其他客戶的容器。
所以這就是Hyper-V容器發(fā)揮作用的地方,這些基本建立在與Hyper-V虛擬機相同的技術(shù)之上。每個容器都有自己的Windows操作系統(tǒng)拷貝,該Windows操作系統(tǒng)拷貝優(yōu)化了在容器內(nèi)部運行的能力... ...這就是為什么我們通過敵意的多租戶代碼來保證隔離的安全性。
容器有多種類型,但是API部署代碼和鏡像是完全相同的,所以這其實在于你的決定。一個開發(fā)人員可以做決定,IT專業(yè)人士也可以。他們可以決定是否將它們應(yīng)用于Hpyer-V容器或Windows Server容器。當(dāng)然,你是不能改變代碼、應(yīng)用程序、鏡像和API的。,但是你可以標(biāo)記你的目標(biāo)容器類型。
Hykes:這是一個完美的有關(guān)隔離的例子。對于Docker,我們并不是要插足進來說Windows中的安全是如何實現(xiàn)的,或者Linux上的安全是如何實現(xiàn)的。我們的工作是與平臺廠商深入合作,從而理解不同的安全性配置文件,理解基礎(chǔ),然后共同開發(fā)出對開發(fā)人員非常重要的東西。
所以在Mark剛提到的場景中,這可能意味著我們依據(jù)刻客戶對應(yīng)用程序的信任情況提供一些不同的選項。你的部署環(huán)境中,有效負(fù)載是由相同的信任方所提供的么?或者從信任的第三方部署的?
例如,你是一個客戶,是一個某個平臺的提供商。我們會依據(jù)Docker接口為你提供一種簡單的方式,通過這種方式我們可以真正地提升安全性,而不是發(fā)明一些奇特的底層技術(shù)。當(dāng)然我們通過更有效的底層技術(shù)來讓更多的人真正地使用它們,我相信這個過程中安全是是一個大的瓶頸。
總會有讓人吃驚的技術(shù)來保護人們和系統(tǒng),但是只是用這些技術(shù)是不夠的,因為這些技術(shù)比較復(fù)雜,或者埋藏在堆棧的最底端。這種情況下,我們這樣的伙伴關(guān)系能夠讓這些技術(shù)閃閃發(fā)光。
與Linux環(huán)境相比,客戶希望從Windows環(huán)境中得到哪些不同?
Russinovich:Windows Server應(yīng)用程序兼容性,然后是信任配置文件。事實上這不關(guān)乎區(qū)別,而是為客戶提供他們需要的工具來支持Windows Server上的容器。
有些人建議微軟應(yīng)該收購Docker。我相信你聽說過,當(dāng)時你的反應(yīng)是什么?
Hykes:當(dāng)一段合作關(guān)系非常棒的時候,難免會出來這種說法。我想說這是一個好跡象。
Russinovich:我同意。