Docker安全風(fēng)險(xiǎn),原來(lái)有這么多
Docker是一種開(kāi)源的基于LXC的應(yīng)用容器引擎,因其輕量、彈性伸縮、快速部署、可移植等優(yōu)勢(shì),在大型互聯(lián)網(wǎng)企業(yè)中被廣泛應(yīng)用。隨著Docker技術(shù)的發(fā)展與普及,其帶來(lái)安全問(wèn)題不容忽視。本文通過(guò)介紹Docker實(shí)現(xiàn)原理,對(duì)Docker所引入的安全脆弱性問(wèn)題分析總結(jié),對(duì)使用者在容器安全問(wèn)題方面提供指導(dǎo)性建議。
簡(jiǎn)介
Docker的設(shè)計(jì)理念是“Build,ShipandRunAnyApp,Anywhere”,可實(shí)現(xiàn)對(duì)應(yīng)用的封裝、部署、運(yùn)行等生命周期管理。應(yīng)用通過(guò)鏡像的方式部署于任何環(huán)境中,可避免各團(tuán)隊(duì)之間因溝通不暢產(chǎn)生的協(xié)作問(wèn)題,Docker現(xiàn)已成為企業(yè)實(shí)現(xiàn)DevOps目標(biāo)的重要工具。
基本概念
01.Docker鏡像(Image)
Docker鏡像是動(dòng)態(tài)容器的靜態(tài)表示,包括容器所要運(yùn)行時(shí)所需的程序、庫(kù)、資源以及相關(guān)配置。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后不會(huì)被改變。一個(gè)運(yùn)行著的Docker容器是一個(gè)鏡像的實(shí)例,多個(gè)容器可以共用一個(gè)鏡像。
Dockerfile是Docker用來(lái)構(gòu)建鏡像的腳本文件,包含自定義的指令和格式。用戶可以用統(tǒng)一的語(yǔ)法命令來(lái)根據(jù)需求進(jìn)行配置,在不同的平臺(tái)上進(jìn)行分發(fā),簡(jiǎn)化開(kāi)發(fā)人員構(gòu)建鏡像的復(fù)雜過(guò)程。
倉(cāng)庫(kù)(Repository)
倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,每個(gè)倉(cāng)庫(kù)中可包含多個(gè)具備不同標(biāo)簽的鏡像。倉(cāng)庫(kù)類似于Git工具,當(dāng)用戶創(chuàng)建自己的鏡像后可以上傳到公有或私有的倉(cāng)庫(kù),當(dāng)需要使用時(shí),從倉(cāng)庫(kù)下載過(guò)來(lái)即可。
容器(Container)
容器是Docker鏡像創(chuàng)建的實(shí)例,是靜態(tài)鏡像的運(yùn)行時(shí)的實(shí)體。其本質(zhì)是一個(gè)與宿主機(jī)系統(tǒng)共享內(nèi)核但與系統(tǒng)中的其他進(jìn)程資源相隔離的進(jìn)程,它可以被啟動(dòng)、停止、刪除。容器中會(huì)運(yùn)行特定的應(yīng)用,包含代碼和相關(guān)的依賴文件。每個(gè)運(yùn)行著的容器都有一個(gè)可寫(xiě)層(writablelayer,也稱為容器層containerlayer),它位于若干只讀層之上。運(yùn)行時(shí)的所有變化,包括對(duì)文件的寫(xiě)和更新,都會(huì)保存在這個(gè)層中。
02.Docker系統(tǒng)架構(gòu)
Docker使用了傳統(tǒng)的Client-Server架構(gòu),總架構(gòu)如圖1所示。用戶通過(guò)Dockerclient與Dockerdaemon建立通信。Dockerdaemon是Docker最核心的后臺(tái)進(jìn)程,一般運(yùn)行在宿主機(jī)之上,負(fù)責(zé)響應(yīng)來(lái)自Dockerclient的請(qǐng)求,根據(jù)請(qǐng)求類型創(chuàng)建出指定的Job,完成構(gòu)建、分發(fā)和運(yùn)行Docker容器的工作。API負(fù)責(zé)提供進(jìn)程交互的接口。Dockerdaemon、Dockerclient與API共同組成DockerEngine。Docker技術(shù)使用Docker鏡像來(lái)創(chuàng)建實(shí)例容器。鏡像可以從遠(yuǎn)程的倉(cāng)庫(kù)拉取,用戶也可以上傳鏡像到倉(cāng)庫(kù)中。
圖1Docker容器系統(tǒng)架構(gòu)
容器技術(shù)風(fēng)險(xiǎn)
容器技術(shù)是一種新型的技術(shù)革命,不僅存在傳統(tǒng)的主機(jī)安全問(wèn)題,還帶來(lái)了新型的安全威脅。本文主要介紹Docker容器技術(shù)引發(fā)的有別于傳統(tǒng)安全的脆弱性。
01.鏡像
容器基于容器鏡像文件啟動(dòng),鏡像的安全將影響到整個(gè)容器的安全,為此RuiShu等人對(duì)鏡像的安全漏洞進(jìn)行調(diào)研,并在其《DockerHub安全漏洞分析》一文中給出了一份鏡像的統(tǒng)計(jì)數(shù)據(jù)[2],數(shù)據(jù)如表1所示。
表1鏡像中所含漏洞數(shù)量統(tǒng)計(jì)[2]
由數(shù)據(jù)可以看出,無(wú)論是社區(qū)鏡像或官方鏡像都有較多的漏洞?,F(xiàn)總結(jié)容器鏡像安全脆弱性如下:
表2鏡像安全脆弱性
02.容器
基于鏡像文件運(yùn)行的容器是整個(gè)容器技術(shù)的核心,提供對(duì)外服務(wù),與用戶進(jìn)行交互,此部分如不安全,將會(huì)對(duì)整個(gè)平臺(tái)造成安全威脅,經(jīng)調(diào)研其安全脆弱性如下:
表3容器安全脆弱性
03.容器網(wǎng)絡(luò)
為了節(jié)約ip地址,Docker技術(shù)中網(wǎng)絡(luò)多使用橋接方式進(jìn)行連接。其在宿主機(jī)上創(chuàng)建一個(gè)虛擬的網(wǎng)橋Dokcer0,扮演了傳統(tǒng)交換機(jī)的角色,在各個(gè)網(wǎng)絡(luò)接口間自動(dòng)的進(jìn)行包轉(zhuǎn)發(fā),每創(chuàng)建一個(gè)新的容器,就為其增加一個(gè)虛擬網(wǎng)絡(luò)接口,并將該網(wǎng)絡(luò)接口連接到網(wǎng)橋Docker0,其脆弱性將會(huì)導(dǎo)致平臺(tái)上其他用戶的信息被泄漏甚至可用性被影響??赡艽嬖诘拇嗳跣匀缦拢?/p>
表4容器網(wǎng)絡(luò)安全脆弱性
04.容器機(jī)制
容器技術(shù)為容器的安全運(yùn)行提供保障,如果此技術(shù)機(jī)制不安全,那么容器作為其中的一部分,則是在不知不覺(jué)中將所有信息暴露在外了。
表5容器機(jī)制安全脆弱性
總結(jié)
Docker技術(shù)帶來(lái)的技術(shù)革命是讓人驚喜的,運(yùn)維人員利用Docker可以在隔離容器中并行運(yùn)行和管理應(yīng)用,獲得更好的計(jì)算密度。企業(yè)利用Docker可以構(gòu)建敏捷的軟件交付管道,以更快的速度為L(zhǎng)inux和WindowsServer應(yīng)用發(fā)布新功能,但安全性是重要方面,是不得不考慮的問(wèn)題。本文主要介紹了Docker技術(shù)存在的安全脆弱點(diǎn),意欲拋磚引玉。Docker技術(shù)安全能力還有很大的改進(jìn)空間。
參考文獻(xiàn)
[1]浙江大學(xué)SEL實(shí)驗(yàn)室.Docker容器與容器云(第二版)[M].北京郵電大學(xué)出版社北京,2016(10):28
[2]ShuR,GuX,EnckW.AStudyofSecurityVulnerabilitiesonDockerHub[C]//ACMonConferenceonDataandApplicationSecurityandPrivacy.ACM,2017:269-280.
[3]CombeT,MartinA,PietroRD.ToDockerorNottoDocker:ASecurityPerspective[J].IEEECloudComputing,2016,3(5):54-62.
[4]GrattafioriA.UnderstandingandhardeningLinuxcontainers[J].Whitepaper,NCCGroup,2016.
[5]魯濤,陳杰,史軍.Docker安全性研究[J/OL].計(jì)算機(jī)技術(shù)與發(fā)展,2018(06):1-6[2018-05-09].http://kns.cnki.net/kcms/detail/61.1450.TP.20180224.1521.064.html.
[6]GaoX,GuZ,KayaalpM,etal.ContainerLeaks:EmergingSecurityThreatsofInformationLeakagesinContainerClouds[C]//Ieee/ifipInternationalConferenceonDependableSystemsandNetworks.IEEE,2017:237-248.
[7]LippM,SchwarzM,GrussD,etal.Meltdown.arXivpreprint[J].arXivpreprintarXiv:1801.01207,2018.
【本文為51CTO專欄作者“中國(guó)保密協(xié)會(huì)科學(xué)技術(shù)分會(huì)”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】