岑義濤 發(fā)表于:14年07月01日 13:19 [轉(zhuǎn)載] DOIT.com.cn
從Docker容器漏洞談Docker 安全
近日,一篇在Docker博客上發(fā)表的文章顯示,Docker的容器已經(jīng)被突破,并且能夠遍歷宿主機(jī)的文件了。由于Docker的輕量,快速等等優(yōu)點(diǎn),讓Docker在PaaS[注]領(lǐng)域愈發(fā)火熱,自然也就吸引了安全人員對(duì)其進(jìn)行研究。這篇文章無(wú)疑將Docker推進(jìn)了一個(gè)新紀(jì)元:放開(kāi)應(yīng)用,想想安全。
不要給用戶root權(quán)限
該文章的作者強(qiáng)調(diào):只有在容器內(nèi)以 root 權(quán)限運(yùn)行不受信任的應(yīng)用程序,才有可能觸發(fā)這個(gè)漏洞。而這是我們不推薦的運(yùn)行 Docker Engine 的方式。
這句話可以分兩個(gè)層次來(lái)解讀,首先就是root權(quán)限的使用,其次是何為不受信任的應(yīng)用程序。
Docker并不是虛擬機(jī),Docker本來(lái)的用法也不是虛擬機(jī)。舉個(gè)簡(jiǎn)單的例子,普通的虛擬機(jī)租戶root和宿主root是分開(kāi)的,而Docker的租戶root和宿主root是同一個(gè)root。一旦容器內(nèi)的用戶從普通用戶權(quán)限提升為root權(quán)限,他就直接具備了宿主機(jī)的root權(quán)限,進(jìn)而進(jìn)行幾乎無(wú)限制的操作。這是為什么呢?因?yàn)镈ocker原本的用法是將進(jìn)程之間進(jìn)行隔離,為進(jìn)程或進(jìn)程組創(chuàng)建隔離開(kāi)的運(yùn)行空間,目的就是為了隔離有問(wèn)題的應(yīng)用,而進(jìn)程之間的限制就是通過(guò)namespace和cgroup來(lái)進(jìn)行隔離與配額限制。每一個(gè)隔離出來(lái)的進(jìn)程組,對(duì)外就表現(xiàn)為一個(gè)container(容器)。在宿主機(jī)上可以看到全部的進(jìn)程,每個(gè)容器內(nèi)的進(jìn)程實(shí)際上對(duì)宿主機(jī)來(lái)說(shuō)是一個(gè)進(jìn)程樹(shù)。也就是說(shuō),Docker是讓用戶以為他們占據(jù)了全部的資源,從而給用戶一個(gè)“虛擬機(jī)”的感覺(jué)。
第二,何為不受信任的應(yīng)用程序?來(lái)源不明的應(yīng)用程序,或者二進(jìn)制代碼等等,以及有漏洞的應(yīng)用程序,都可以稱為不受信任的應(yīng)用程序。舉個(gè)例子,在Docker容器中只運(yùn)行基礎(chǔ)的Apache服務(wù)器和MySQL數(shù)據(jù)庫(kù),可能大家認(rèn)為這樣的環(huán)境用root也沒(méi)問(wèn)題,但是如果Apache或者M(jìn)ySQL有不為人所知的漏洞被利用,那么這兩個(gè)應(yīng)用也就成為了不受信任的應(yīng)用。因此在以root運(yùn)行應(yīng)用程序,或是在考慮安全環(huán)境的時(shí)候,需要以一切皆不可信的態(tài)度來(lái)對(duì)Docker環(huán)境進(jìn)行安全加固。
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.