Docker安全風險,原來有這么多
Docker是一種開源的基于LXC的應用容器引擎,因其輕量、彈性伸縮、快速部署、可移植等優勢,在大型互聯網企業中被廣泛應用。隨著Docker技術的發展與普及,其帶來安全問題不容忽視。本文通過介紹Docker實現原理,對Docker所引入的安全脆弱性問題分析總結,對使用者在容器安全問題方面提供指導性建議。
簡介
Docker的設計理念是“Build,ShipandRunAnyApp,Anywhere”,可實現對應用的封裝、部署、運行等生命周期管理。應用通過鏡像的方式部署于任何環境中,可避免各團隊之間因溝通不暢產生的協作問題,Docker現已成為企業實現DevOps目標的重要工具。
基本概念
01.Docker鏡像(Image)
Docker鏡像是動態容器的靜態表示,包括容器所要運行時所需的程序、庫、資源以及相關配置。鏡像不包含任何動態數據,其內容在構建之后不會被改變。一個運行著的Docker容器是一個鏡像的實例,多個容器可以共用一個鏡像。
Dockerfile是Docker用來構建鏡像的腳本文件,包含自定義的指令和格式。用戶可以用統一的語法命令來根據需求進行配置,在不同的平臺上進行分發,簡化開發人員構建鏡像的復雜過程。
倉庫(Repository)
倉庫是集中存放鏡像文件的場所,每個倉庫中可包含多個具備不同標簽的鏡像。倉庫類似于Git工具,當用戶創建自己的鏡像后可以上傳到公有或私有的倉庫,當需要使用時,從倉庫下載過來即可。
容器(Container)
容器是Docker鏡像創建的實例,是靜態鏡像的運行時的實體。其本質是一個與宿主機系統共享內核但與系統中的其他進程資源相隔離的進程,它可以被啟動、停止、刪除。容器中會運行特定的應用,包含代碼和相關的依賴文件。每個運行著的容器都有一個可寫層(writablelayer,也稱為容器層containerlayer),它位于若干只讀層之上。運行時的所有變化,包括對文件的寫和更新,都會保存在這個層中。
02.Docker系統架構
Docker使用了傳統的Client-Server架構,總架構如圖1所示。用戶通過Dockerclient與Dockerdaemon建立通信。Dockerdaemon是Docker最核心的后臺進程,一般運行在宿主機之上,負責響應來自Dockerclient的請求,根據請求類型創建出指定的Job,完成構建、分發和運行Docker容器的工作。API負責提供進程交互的接口。Dockerdaemon、Dockerclient與API共同組成DockerEngine。Docker技術使用Docker鏡像來創建實例容器。鏡像可以從遠程的倉庫拉取,用戶也可以上傳鏡像到倉庫中。
圖1Docker容器系統架構
容器技術風險
容器技術是一種新型的技術革命,不僅存在傳統的主機安全問題,還帶來了新型的安全威脅。本文主要介紹Docker容器技術引發的有別于傳統安全的脆弱性。
01.鏡像
容器基于容器鏡像文件啟動,鏡像的安全將影響到整個容器的安全,為此RuiShu等人對鏡像的安全漏洞進行調研,并在其《DockerHub安全漏洞分析》一文中給出了一份鏡像的統計數據[2],數據如表1所示。
表1鏡像中所含漏洞數量統計[2]
由數據可以看出,無論是社區鏡像或官方鏡像都有較多的漏洞。現總結容器鏡像安全脆弱性如下:
表2鏡像安全脆弱性
02.容器
基于鏡像文件運行的容器是整個容器技術的核心,提供對外服務,與用戶進行交互,此部分如不安全,將會對整個平臺造成安全威脅,經調研其安全脆弱性如下:
表3容器安全脆弱性
03.容器網絡
為了節約ip地址,Docker技術中網絡多使用橋接方式進行連接。其在宿主機上創建一個虛擬的網橋Dokcer0,扮演了傳統交換機的角色,在各個網絡接口間自動的進行包轉發,每創建一個新的容器,就為其增加一個虛擬網絡接口,并將該網絡接口連接到網橋Docker0,其脆弱性將會導致平臺上其他用戶的信息被泄漏甚至可用性被影響。可能存在的脆弱性如下:
表4容器網絡安全脆弱性
04.容器機制
容器技術為容器的安全運行提供保障,如果此技術機制不安全,那么容器作為其中的一部分,則是在不知不覺中將所有信息暴露在外了。
表5容器機制安全脆弱性
總結
Docker技術帶來的技術革命是讓人驚喜的,運維人員利用Docker可以在隔離容器中并行運行和管理應用,獲得更好的計算密度。企業利用Docker可以構建敏捷的軟件交付管道,以更快的速度為Linux和WindowsServer應用發布新功能,但安全性是重要方面,是不得不考慮的問題。本文主要介紹了Docker技術存在的安全脆弱點,意欲拋磚引玉。Docker技術安全能力還有很大的改進空間。
參考文獻
[1]浙江大學SEL實驗室.Docker容器與容器云(第二版)[M].北京郵電大學出版社北京,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].計算機技術與發展,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專欄作者“中國保密協會科學技術分會”原創稿件,轉載請聯系原作者】