王 歡
(中國(guó)移動(dòng)通信集團(tuán)安徽有限公司,安徽 合肥 230001)
近年來,云計(jì)算模式逐漸被業(yè)界認(rèn)可和接受。平臺(tái)即服務(wù)(Platform-as-a-Service,PaaS)作為云計(jì)算3大服務(wù)之一,同樣實(shí)現(xiàn)了快速發(fā)展。容器技術(shù)憑借其彈性敏捷的特性和活躍強(qiáng)大的社區(qū)支持,逐漸成為推動(dòng)PaaS發(fā)展的核心技術(shù)。容器技術(shù)是一種輕量的虛擬化方式,此處的輕量主要是相較于虛擬化技術(shù)。例如,虛擬化技術(shù)通常在Hypervisor層實(shí)現(xiàn)對(duì)硬件資源的虛擬化,Hypervisor為虛擬機(jī)提供了虛擬的運(yùn)行平臺(tái),管理虛擬機(jī)的操作系統(tǒng)運(yùn)行。其中,每個(gè)虛擬機(jī)都有自己的操作系統(tǒng)、系統(tǒng)庫以及應(yīng)用[1]。而容器并沒有Hypervisor層,每個(gè)容器和主機(jī)共享硬件資源和操作系統(tǒng)。容器技術(shù)在操作系統(tǒng)層面實(shí)現(xiàn)了對(duì)計(jì)算機(jī)系統(tǒng)資源的虛擬化,在操作系統(tǒng)中通過對(duì)CPU、內(nèi)存以及文件系統(tǒng)等資源的隔離、劃分和控制,實(shí)現(xiàn)進(jìn)程之間透明的資源使用。
作為容器技術(shù)的一種具體實(shí)現(xiàn),Docker(一種開源的應(yīng)用容器引擎)近年來受到越來越多的關(guān)注,在某種程度上已經(jīng)成為了容器技術(shù)的代表。Docker在設(shè)計(jì)上采用了常見的客戶機(jī)/服務(wù)器(Client/Server,C/S)架構(gòu),在主機(jī)運(yùn)行Docker服務(wù)程序,Docker Client根據(jù)需求向Docker服務(wù)程序發(fā)出相關(guān)的請(qǐng)求[2]。為了實(shí)現(xiàn)集群管理,Docker官方還提供了一個(gè)遠(yuǎn)程管理接口的REST API,允許通過傳輸控制協(xié)議(Transmission Control Protocol,TCP)遠(yuǎn)程訪問Docker服務(wù)。在使用Docker Swarm時(shí),Docker節(jié)點(diǎn)上會(huì)開放一個(gè)TCP端口2375,綁定在0.0.0.0上。開啟這種沒有任何加密和訪問控制的Docker Remote API服務(wù)非常危險(xiǎn),尤其是將默認(rèn)的2375端口暴露到互聯(lián)網(wǎng)中,一旦被攻擊者發(fā)現(xiàn),攻擊者無需認(rèn)證即可訪問到容器數(shù)據(jù),從而導(dǎo)致敏感信息泄露。此外,攻擊者也可以惡意刪除容器上的數(shù)據(jù)或利用容器自身特性直接訪問主機(jī)上的敏感信息,獲取服務(wù)器root權(quán)限,對(duì)敏感文件進(jìn)行修改并最終完全控制服務(wù)器[3]。
開發(fā)者通常會(huì)在Docker官方的Docker Hub倉(cāng)庫下載鏡像,這些鏡像一部分來源于開發(fā)鏡像內(nèi)相應(yīng)軟件的官方組織,但還有大量鏡像來自第三方組織或個(gè)人。在整個(gè)應(yīng)用生命周期中,開發(fā)人員、測(cè)試人員以及運(yùn)維人員會(huì)根據(jù)不同需求下載并運(yùn)行鏡像,在容器運(yùn)行前進(jìn)行鏡像檢查非常重要。除了Docker Hub外,還有大量的第三方鏡像倉(cāng)庫,包括DaoCloud、阿里云等。這些第三方鏡像倉(cāng)庫在為獲取鏡像提供方便的同時(shí),也存在潛在的安全風(fēng)險(xiǎn),如下載鏡像內(nèi)軟件本身是否包含漏洞、下載的鏡像是否被惡意植入后門、鏡像在傳輸過程中是否被篡改等[4]。
由于容器與主機(jī)共享內(nèi)核,因此可能會(huì)存在容器隔離失效的安全風(fēng)險(xiǎn)。攻擊者只要攻破容器操作系統(tǒng)內(nèi)核,就可以訪問主機(jī)上的文件系統(tǒng)或進(jìn)入其他容器,導(dǎo)致容器隔離失效。主機(jī)的文件系統(tǒng)被掛載到多個(gè)容器的目錄里,不同的容器可以訪問同一個(gè)目錄,只要進(jìn)入某個(gè)容器中,就可以通過共同掛載目錄訪問其他容器的文件系統(tǒng),這樣可能會(huì)引起信息泄露或內(nèi)容篡改等安全問題。
容器安全防護(hù)平臺(tái)由基礎(chǔ)功能層、核心功能層、接口層以及可視化層組成,基于自動(dòng)學(xué)習(xí)等新技術(shù)對(duì)容器全生命周期進(jìn)行自適應(yīng)安全防護(hù)和統(tǒng)一管理,包括鏡像安全、容器安全、微服務(wù)安全以及網(wǎng)絡(luò)安全等?;A(chǔ)功能層針對(duì)容器集群的基線、鏡像、倉(cāng)庫、主機(jī)等基礎(chǔ)運(yùn)行環(huán)境進(jìn)行安全審查,保障容器集群的運(yùn)行穩(wěn)定。核心功能層基于安全左移理念實(shí)現(xiàn)開發(fā)安全、運(yùn)行安全、微服務(wù)安全以及運(yùn)行環(huán)境安全管理,形成容器安全閉環(huán)管理。接口層通過能力的完善和接口開放達(dá)成與現(xiàn)有平臺(tái)數(shù)據(jù)對(duì)接,提供主流接口格式,支持自定義接口擴(kuò)展,可以實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一管控。可視化層通過對(duì)數(shù)據(jù)簡(jiǎn)潔明了的展示,構(gòu)建容器安全的整體監(jiān)控和防護(hù)體系。
1.1.1 容器資產(chǎn)識(shí)別
首先,支持查看運(yùn)行容器相關(guān)信息,包含容器名、容器狀態(tài)、容器啟動(dòng)時(shí)間、運(yùn)行用戶、停止時(shí)間、鏡像創(chuàng)建時(shí)間、容器宿主機(jī)狀態(tài)以及宿主機(jī)IP。其次,支持查看管理容器內(nèi)的所部署Web服務(wù)相關(guān)信息,包括容器名、啟動(dòng)用戶、進(jìn)程路徑以及進(jìn)程命令行。最后,支持查看數(shù)據(jù)庫容器內(nèi)的數(shù)據(jù)庫應(yīng)用信息,包括容器名、版本、監(jiān)聽端口、二進(jìn)制路徑以及配置文件路徑。
1.1.2 容器訪問可視化
首先,支持以容器拓?fù)鋱D的方式展示業(yè)務(wù)容器之間的調(diào)用關(guān)系;其次,支持從集群、命名空間、運(yùn)行服務(wù)、容器名等維度進(jìn)行展示;最后,支持訪問關(guān)系詳情、進(jìn)站源IP、出站目的IP、關(guān)聯(lián)信息以及安全狀態(tài)等的展示。
1.1.3 鏡像文件安全防護(hù)
對(duì)制作的鏡像文件進(jìn)行靜態(tài)和動(dòng)態(tài)安全掃描,及時(shí)發(fā)現(xiàn)鏡像文件中的安全漏洞、木馬病毒、涉密文件以及環(huán)境變量,保證進(jìn)入生產(chǎn)環(huán)境的是安全鏡像。此外,還需要對(duì)鏡像的來源和歷史操作行為進(jìn)行分析,對(duì)非法來源和有安全問題的鏡像禁止運(yùn)行。
1.1.4 容器運(yùn)行保護(hù)
對(duì)容器運(yùn)行過程進(jìn)行全程安全監(jiān)控,對(duì)容器訪問宿主機(jī)的資源進(jìn)行細(xì)粒度控制,防止有越權(quán)訪問破壞容器隔離性的行為。對(duì)容器內(nèi)應(yīng)用進(jìn)行安全漏洞識(shí)別和網(wǎng)絡(luò)威脅檢測(cè),從而保證容器內(nèi)應(yīng)用的安全。對(duì)容器的相關(guān)運(yùn)行環(huán)境(如鏡像倉(cāng)庫、容器守護(hù)進(jìn)程以及容器編排集成工具)進(jìn)行安全風(fēng)險(xiǎn)識(shí)別及控制,支持查看風(fēng)險(xiǎn)結(jié)果詳細(xì)信息,包括危險(xiǎn)程度、風(fēng)險(xiǎn)描述信息、風(fēng)險(xiǎn)類型、風(fēng)險(xiǎn)特征、風(fēng)險(xiǎn)修復(fù)建議、存在風(fēng)險(xiǎn)的主機(jī)以及集群信息。
1.1.5 容器鏡像安全檢查
首先,支持對(duì)鏡像進(jìn)行病毒木馬和Webshell檢查并告警,檢查結(jié)果包含文件名、文件路徑等,告警信息包括名稱、級(jí)別、時(shí)間、影響節(jié)點(diǎn)、影響鏡像以及處理建議等。其次,支持應(yīng)用漏洞檢測(cè),檢測(cè)出鏡像內(nèi)的應(yīng)用漏洞風(fēng)險(xiǎn),檢查結(jié)果包括危險(xiǎn)程度、漏洞名稱、漏洞類型、漏洞風(fēng)險(xiǎn)特征、存在漏洞的應(yīng)用及應(yīng)用版本、應(yīng)用修復(fù)版本等。同時(shí)支持查看漏洞所在鏡像層Layer信息,包括層指令、LayerID。最后,支持鏡像阻斷能力,阻斷存在指定病毒木馬文件Hash、指定漏洞編號(hào)、指定軟件包或軟件包版本、特權(quán)啟動(dòng)、特定許可證書以及指定敏感信息規(guī)則的鏡像運(yùn)行。
1.1.6 容器入侵檢測(cè)
首先,支持實(shí)時(shí)檢測(cè)Web后門并告警,告警信息包括名稱、級(jí)別、鏡像影響、處理建議、受感染容器、發(fā)現(xiàn)時(shí)間以及容器名。其次,支持容器暴力破解檢測(cè)并展示暴力破解詳細(xì)信息,包括最近攻擊時(shí)間、攻擊來源、被攻擊節(jié)點(diǎn)以及歷史攻擊次數(shù)。再次,支持病毒檢測(cè),可以實(shí)時(shí)告警上報(bào)病毒木馬入侵事件,告警信息包括文件名、文件路徑、受感染容器以及發(fā)現(xiàn)時(shí)間。最后,支持容器逃逸檢測(cè),可以檢測(cè)出容器的敏感權(quán)限、利用漏洞逃逸等逃逸風(fēng)險(xiǎn)行為并告警上報(bào)。
1.1.7 容器審計(jì)日志
容器安全防護(hù)平臺(tái)支持容器審計(jì)日志功能,能夠查看容器內(nèi)的進(jìn)程啟動(dòng)日志事件和事件相關(guān)的容器名、容器ID、進(jìn)程名、進(jìn)程命令行以及進(jìn)程PID等詳細(xì)信息。
1.1.8 管理中心
容器安全防護(hù)平臺(tái)提供圖形頁面管理功能,支持容器相關(guān)資產(chǎn)的查看、管理以及安全事件的告警和綜合處理。管理中心支持以Web形式進(jìn)行登錄,登錄系統(tǒng)后可以查看該用戶已授權(quán)的資源,用戶可以對(duì)其擁有的資源進(jìn)行操作。其中,管理員用戶可以重置自身及其他用戶的密碼。
容器安全防護(hù)平臺(tái)采用全球獨(dú)創(chuàng)的容器基因檢測(cè)技術(shù),基于機(jī)器學(xué)習(xí)對(duì)容器全生命周期進(jìn)行深度分析學(xué)習(xí)并建立安全模型,為每一個(gè)容器生成運(yùn)行白名單,可以應(yīng)對(duì)容器未知威脅,真正實(shí)現(xiàn)自適應(yīng)防護(hù)。該技術(shù)可以為鏡像生成自動(dòng)修復(fù)的配置文件,支持鏡像的全流程安全閉環(huán)管理。將創(chuàng)新的行為學(xué)習(xí)方式與規(guī)則進(jìn)行互補(bǔ),有效提高入侵檢測(cè)的準(zhǔn)確性,大大提升平臺(tái)的安全檢測(cè)能力和服務(wù)橫向擴(kuò)展能力。與市場(chǎng)上同類產(chǎn)品相比,容器安全防護(hù)平臺(tái)是國(guó)內(nèi)唯一云原生容器安全防護(hù)產(chǎn)品,運(yùn)行在容器集群中可以對(duì)容器的網(wǎng)絡(luò)、微服務(wù)、集群自身的安全進(jìn)行防護(hù),處于行業(yè)領(lǐng)先水平[5]。
平臺(tái)采用微服務(wù)開發(fā)框架,將鏡像安全、容器運(yùn)行防護(hù)、集群安全、微服務(wù)安全以及主機(jī)安全進(jìn)行了細(xì)分,每個(gè)服務(wù)彼此獨(dú)立,一個(gè)服務(wù)的啟停上下線不會(huì)影響其他服務(wù)的運(yùn)行。平臺(tái)采用全容器化部署,防護(hù)和監(jiān)控模式靈活切換,支持多集群同時(shí)管理。平臺(tái)引入了容器調(diào)度引擎Kubernetes(簡(jiǎn)稱K8s)來管理、調(diào)度、啟動(dòng)服務(wù)集群,其最大可管理的集群節(jié)點(diǎn)高達(dá)5 000個(gè)。平臺(tái)能自動(dòng)感知服務(wù)實(shí)例POD狀態(tài),若發(fā)生意外停止或人為刪除,可立即啟動(dòng)新的服務(wù)實(shí)例副本。這些提供相同服務(wù)的實(shí)例POD通過K8s中Service和Proxy模塊將集群訪問流量動(dòng)態(tài)負(fù)載均衡到各個(gè)實(shí)例上,同時(shí)也可以將常見的Nginx或Haproxy等反向代理負(fù)載均衡器軟件放到K8s集群中運(yùn)行,充分保障平臺(tái)運(yùn)行的穩(wěn)定性。
容器安全平臺(tái)核心功能組件皆以容器形式交付,所有組件均使用旁路部署模式,在客戶現(xiàn)有的業(yè)務(wù)架構(gòu)下不需要任何改動(dòng)即可無感知地部署到客戶環(huán)境中,實(shí)現(xiàn)所部署節(jié)點(diǎn)的容器資產(chǎn)可視化、合規(guī)檢查以及安全防護(hù)。所有組件全部部署在K8s集群,在管理集群部署統(tǒng)一管控平臺(tái),其中所有K8s集群都會(huì)部署防御容器和服務(wù)端。數(shù)據(jù)庫可以同樣部署在管控平臺(tái),也可以部署在集群外。K8s集群部署服務(wù)端會(huì)受到管控集群的任務(wù)調(diào)度器控制,從而實(shí)現(xiàn)多集群的管理。
容器安全防護(hù)平臺(tái)使用純?nèi)萜鞣翘貦?quán)旁路部署,所有組件受Kubernetes管理調(diào)度。在部署時(shí)會(huì)設(shè)置資源限制,容器本身具有天然的隔離性,每個(gè)容器具有獨(dú)立的進(jìn)程間通信、文件系統(tǒng)掛載點(diǎn)、隔離網(wǎng)絡(luò)協(xié)議棧、進(jìn)程號(hào)、用戶、主機(jī)名以及域名,容器安全組件不會(huì)影響到主機(jī)服務(wù)和容器服務(wù)。容器使用CGroup進(jìn)行資源限制,容器安全組件資源占用超出時(shí)會(huì)觸發(fā)內(nèi)存溢出(Out Of Memory,OOM)被重啟,避免大量占用主機(jī)資源,造成主機(jī)僵死情況。容器安全組件在每一個(gè)機(jī)器上只會(huì)占用機(jī)器有限的資源,不會(huì)對(duì)任何主機(jī)上的主機(jī)服務(wù)和容器服務(wù)造成影響。
引入新的容器集群和機(jī)器時(shí)進(jìn)行合規(guī)檢測(cè),保障容器運(yùn)行環(huán)境安全,防止不安全的配置造成容器逃逸或集群入侵事件。容器防護(hù)平臺(tái)能夠?qū)θ萜骷凹哼M(jìn)行合規(guī)審計(jì),支持主流的安全檢測(cè)標(biāo)準(zhǔn)?;诋a(chǎn)品提供可視化的檢測(cè)結(jié)果和修復(fù)建議,用戶可以自行修復(fù)不合規(guī)的檢測(cè)項(xiàng)。
引入新容器業(yè)務(wù)需要保障業(yè)務(wù)鏡像安全,使用平臺(tái)鏡像掃描功能可以及時(shí)發(fā)現(xiàn)鏡像中存在的漏洞和木馬病毒,根據(jù)用戶需要實(shí)現(xiàn)自定義阻斷,包括高危漏洞鏡像阻斷、攜帶敏感信息鏡像阻斷等。
在日常運(yùn)營(yíng)中,可以開啟容器安全的入侵行為黑名單,通過告警功能結(jié)合容器網(wǎng)絡(luò)連接拓?fù)鋵?shí)現(xiàn)容器入侵影響范圍的快速判斷,使用容器網(wǎng)絡(luò)隔離實(shí)現(xiàn)容器入侵屏蔽治理。
“護(hù)網(wǎng)”和“重?!逼陂g不會(huì)引入新業(yè)務(wù)并增加新的集群,用戶需要關(guān)注運(yùn)行時(shí)的安全,細(xì)致檢查容器所有行為,防范未知攻擊和加密攻擊。此外,用戶還需要關(guān)注集群的自身漏洞和可被利用的集群漏洞,借助使用容器平臺(tái)的集群滲透測(cè)試功能來進(jìn)行事前檢測(cè)。
根據(jù)中國(guó)移動(dòng)磐基PaaS平臺(tái)安徽節(jié)點(diǎn)建設(shè)項(xiàng)目要求,安徽公司信息系統(tǒng)部組織了磐基PaaS平臺(tái)安徽節(jié)點(diǎn)工程建設(shè)工作,建設(shè)內(nèi)容包括彈性計(jì)算平臺(tái)、容器云門戶、開發(fā)交付體系、微服務(wù)體系、組件管理以及容器云運(yùn)營(yíng)運(yùn)維。同步上線容器安全防護(hù)平臺(tái),滿足“三同步”及容器安全管控要求。容器安全防護(hù)平臺(tái)具備容器資產(chǎn)識(shí)別、容器訪問可視化、鏡像安全檢查、容器入侵檢測(cè)、運(yùn)行環(huán)境安全監(jiān)測(cè)、容器審計(jì)以及運(yùn)行合規(guī)檢查等功能。在DevOps剛啟動(dòng)時(shí),對(duì)Docker file進(jìn)行掃描,沒有命中阻斷規(guī)則可以進(jìn)行構(gòu)建。實(shí)時(shí)監(jiān)控掃描代碼倉(cāng)庫,在鏡像構(gòu)建后對(duì)其進(jìn)行掃描,保障鏡像安全,沒有命中阻斷規(guī)則時(shí)可以上傳到鏡像倉(cāng)庫。在傳輸過程中實(shí)現(xiàn)鏡像的認(rèn)證簽名,防止篡改,保障鏡像的傳輸安全。對(duì)從倉(cāng)庫上傳到主機(jī)上的鏡像進(jìn)行掃描,沒有命中阻斷規(guī)則時(shí)可以啟動(dòng)。
系統(tǒng)上線后運(yùn)行穩(wěn)定,已經(jīng)監(jiān)控B域整個(gè)集群,包括20多個(gè)節(jié)點(diǎn)、1 500多個(gè)容器以及2 200多個(gè)鏡像,最大支持3 000個(gè)容器的全生命周期監(jiān)控。對(duì)外提供了新容器鏡像自動(dòng)監(jiān)測(cè)、漏洞掃描以及高危鏡像自動(dòng)阻斷等功能,新集群、新節(jié)點(diǎn)配置便捷。容器安全防護(hù)平臺(tái)的建設(shè)和投入使用不僅解決了安徽移動(dòng)IT容器云項(xiàng)目建設(shè)時(shí)部分安全能力與IT基礎(chǔ)設(shè)施虛擬化、容器化不匹配的問題,而且也解決了部分安全機(jī)制與一體化開發(fā)交付不匹配的現(xiàn)狀。
安徽移動(dòng)容器安全防護(hù)平臺(tái)的建設(shè)為PaaS容器平臺(tái)提供了自主可控的安全防護(hù),可以應(yīng)對(duì)容器全生命周期存在的安全風(fēng)險(xiǎn)。從容器運(yùn)行的基礎(chǔ)環(huán)境安全、容器軟件供應(yīng)鏈安全、容器運(yùn)行時(shí)安全、各類微服務(wù)應(yīng)用接口安全以及針對(duì)異常行為的微隔離與阻斷等維度采取針對(duì)性措施,提升了PaaS平臺(tái)的安全防護(hù)能力,為IT容器云的發(fā)展奠定基礎(chǔ)。