本技術(shù)涉及虛擬化,尤其涉及一種數(shù)據(jù)處理方法、裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、容器是一種輕量級(jí)的虛擬化技術(shù),其利用林納克斯(linux)內(nèi)核支持的命名空間(namespace)和將進(jìn)程按組管理(cgroup)技術(shù),將應(yīng)用(application,app)及其依賴包(運(yùn)行環(huán)境bins/libs,具體為運(yùn)行app所需的所有文件)隔離在一個(gè)獨(dú)立運(yùn)行環(huán)境中,如圖1所示,圖1為一種運(yùn)行容器的計(jì)算設(shè)備(如服務(wù)器)的架構(gòu)示意圖?;A(chǔ)設(shè)施可以是計(jì)算設(shè)備的硬件,主機(jī)操作系統(tǒng)采用linux內(nèi)核,其中namespace技術(shù)用來(lái)實(shí)現(xiàn)容器之間的隔離,cgroup技術(shù)用來(lái)實(shí)現(xiàn)容器資源的分配,資源具體為分給該容器的虛擬處理器(virtualisedcentral?processing?unit,vcpu)和內(nèi)存。容器引擎(也可以稱為容器運(yùn)行時(shí))類似虛擬機(jī)管理器(virtual?machine?monitor,vmm),運(yùn)行在主機(jī)操作系統(tǒng)中,用來(lái)管理容器。跟虛擬機(jī)(virtual?machine,vm)自帶操作系統(tǒng)的特性相比,容器不存在操作系統(tǒng),容器是作為進(jìn)程運(yùn)行在主機(jī)操作系統(tǒng)中,所以容器的啟動(dòng)速度比虛擬機(jī)快,特別適合輕量級(jí)的應(yīng)用,并且一個(gè)主機(jī)可以同時(shí)運(yùn)行上千個(gè)容器(進(jìn)程)。
2、但是,容器畢竟作為一個(gè)進(jìn)程運(yùn)行在主機(jī)操作系統(tǒng)中,而且不同容器之間共享同一個(gè)操作系統(tǒng)內(nèi)核,一旦該操作系統(tǒng)內(nèi)核被攻破,那么容器之間的隔離性將被破壞,也就是說(shuō),一旦攻擊者攻破了操作系統(tǒng)內(nèi)核,其將能操控運(yùn)行在該操作系統(tǒng)內(nèi)核上的所有容器。
3、因此,如何保證計(jì)算設(shè)備中容器的安全性,防止攻擊者竊取容器中的用戶數(shù)據(jù)(包括容器中存儲(chǔ)以及容器正在使用的用戶數(shù)據(jù)),已成為本領(lǐng)域面臨的重大問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種數(shù)據(jù)處理方法、裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),能夠降低容器受到攻擊者攻擊的風(fēng)險(xiǎn),提升容器的安全性,從而提升容器中的用戶數(shù)據(jù)的安全性。
2、第一方面,提供一種數(shù)據(jù)處理方法,應(yīng)用于計(jì)算設(shè)備,計(jì)算設(shè)備的硬件資源被劃分為富執(zhí)行環(huán)境(rich?execution?environment,ree)側(cè)和可信執(zhí)行環(huán)境(trustedexecution?environment,tee)側(cè),tee側(cè)包括一個(gè)或多個(gè)容器,該方法包括如下步驟:處理器在ree側(cè)獲取待處理數(shù)據(jù),然后在tee側(cè)運(yùn)行第一容器對(duì)待處理數(shù)據(jù)進(jìn)行處理,第一容器為tee側(cè)包括的一個(gè)或多容器中的任一容器。
3、上述方案中,由于容器位于計(jì)算設(shè)備的tee側(cè),當(dāng)計(jì)算設(shè)備的處理器運(yùn)行ree側(cè)的主機(jī)操作系統(tǒng)內(nèi)核時(shí),tee的硬件安全特性保護(hù)tee側(cè)的容器被禁止ree側(cè)主機(jī)操作系統(tǒng)內(nèi)核訪問(wèn),因此,即便攻擊者攻破了ree側(cè)的主機(jī)操作系統(tǒng)內(nèi)核,也不能操控運(yùn)行在tee側(cè)的容器,從而起到保護(hù)計(jì)算設(shè)備中容器的安全的作用,進(jìn)而起到保護(hù)容器中的用戶數(shù)據(jù)的安全性的作用。
4、在一種可能的實(shí)現(xiàn)方式中,tee側(cè)包括一個(gè)或多個(gè)vm,一個(gè)或多個(gè)vm中的每個(gè)vm包括一個(gè)或多個(gè)容器中的至少一個(gè)容器。
5、在該實(shí)現(xiàn)方式中,由于tee側(cè)不同的vm中包括不同的容器,即便攻擊者攻破了某個(gè)vm中的某個(gè)容器,其也僅僅能操控運(yùn)行在該vm中的容器,并不能操控運(yùn)行在另一vm中的容器,因此,可以進(jìn)一步起到保護(hù)計(jì)算設(shè)備中容器的安全的作用,提升用戶數(shù)據(jù)的安全性。
6、在一種可能的實(shí)現(xiàn)方式中,處理器在ree側(cè)獲取的待處理數(shù)據(jù)為經(jīng)過(guò)加密的數(shù)據(jù),處理器在tee側(cè)運(yùn)行第一容器對(duì)待處理數(shù)據(jù)進(jìn)行處理之前,會(huì)獲取tee側(cè)存儲(chǔ)的對(duì)加密數(shù)據(jù)進(jìn)行解密的解密密鑰,然后使用解密密鑰對(duì)加密數(shù)據(jù)進(jìn)行解密,得到待處理數(shù)據(jù)。
7、在該實(shí)現(xiàn)方式中,由于待處理數(shù)據(jù)在ree側(cè)為加密狀態(tài),而且解密密鑰存儲(chǔ)于tee側(cè),ree側(cè)的主機(jī)操作系統(tǒng)內(nèi)核以及軟件(如虛擬機(jī)管理器、普通vm等)均無(wú)法獲取tee側(cè)存儲(chǔ)的解密密鑰,因此即便攻擊者攻破了ree側(cè)的主機(jī)操作系統(tǒng)內(nèi)核以及軟件,竊取到加密數(shù)據(jù),也無(wú)法解密得到待處理數(shù)據(jù)的明文,如此可以滿足用戶數(shù)據(jù)不被ree側(cè)的主機(jī)操作系統(tǒng)內(nèi)核以及軟件竊取的需求,進(jìn)一步提升用戶數(shù)據(jù)安全。
8、在一種可能的實(shí)現(xiàn)方式中,上述處理器在確定第一容器為安全容器的情況下,在tee側(cè)運(yùn)行第一容器。
9、具體地,處理器可以將第一容器的配置信息(如虛擬處理器核類型、虛擬處理器核數(shù)量、內(nèi)存地址等)、第一容器上安裝的app名稱和第一容器的鏡像的哈希值等,在ree側(cè)提供給用戶進(jìn)行安全性度量,即由用戶確定第一容器是滿足自身預(yù)期的安全容器,還是存在安全性威脅的非安全容器。在處理器獲取到用戶確定第一容器是滿足自身預(yù)期的安全容器的反饋的情況下,處理器確定第一容器是安全容器,運(yùn)行第一容器處理用戶數(shù)據(jù),否則,處理器確定第一容器是非安全容器,不運(yùn)行第一容器處理用戶數(shù)據(jù)。
10、實(shí)施該實(shí)現(xiàn)方式,處理器在確定容器安全的情況下,才運(yùn)行容器處理用戶數(shù)據(jù),可以避免使用不安全的容器處理用戶數(shù)據(jù),不僅可以提升容器的安全性,還可以提升容器中用戶數(shù)據(jù)的安全性。
11、在一種可能的實(shí)現(xiàn)方式中,上述處理器在確定計(jì)算設(shè)備為安全設(shè)備的情況下,在tee側(cè)運(yùn)行第一容器。
12、具體地,處理器可以將計(jì)算設(shè)備的證書(shū)在ree側(cè)提供給用戶進(jìn)行合法性檢查,即由用戶確定計(jì)算設(shè)備是滿足自身預(yù)期的安全設(shè)備,還是存在安全性威脅的非安全設(shè)備。在處理器獲取到用戶確定計(jì)算設(shè)備是滿足自身預(yù)期的安全設(shè)備的反饋的情況下,處理器確定計(jì)算設(shè)備是安全設(shè)備,運(yùn)行第一容器處理用戶數(shù)據(jù),否則,處理器確定計(jì)算設(shè)備是非安全設(shè)備,不運(yùn)行第一容器處理用戶數(shù)據(jù)。
13、實(shí)施該實(shí)現(xiàn)方式,處理器在確定計(jì)算設(shè)備安全的情況下,才運(yùn)行容器處理用戶數(shù)據(jù),可以避免使用不安全的計(jì)算設(shè)備運(yùn)行容器處理用戶數(shù)據(jù),不僅可以提升容器的安全性,還可以提升容器中用戶數(shù)據(jù)的安全性。
14、在一種可能的實(shí)現(xiàn)方式中,上述處理器在ree側(cè)獲取待處理數(shù)據(jù)之前,可以通過(guò)如下方式創(chuàng)建第一容器:處理器在ree側(cè)獲取待創(chuàng)建的一個(gè)或多個(gè)vm的配置信息,并在tee側(cè)根據(jù)配置信息創(chuàng)建一個(gè)或多個(gè)vm,之后處理器在ree側(cè)獲取第一容器的鏡像,并在ree側(cè)獲取用于創(chuàng)建第一容器的第一vm的標(biāo)識(shí),之后處理器在tee側(cè)根據(jù)第一vm的標(biāo)識(shí)在第一vm中,根據(jù)第一容器的鏡像創(chuàng)建第一容器,第一vm屬于上述一個(gè)或多個(gè)vm。
15、通過(guò)上述實(shí)現(xiàn)方式,在tee側(cè)創(chuàng)建vm,在tee側(cè)的vm中創(chuàng)建容器,可以實(shí)現(xiàn)vm級(jí)別的容器隔離。
16、在一種可能的實(shí)現(xiàn)方式中,上述第一方面或者第一方面的任一可能的實(shí)現(xiàn)方式提供的方法還包括如下步驟:處理器在ree側(cè)獲取針對(duì)第一容器的生命周期的第一管理命令,處理器在tee側(cè)根據(jù)第一管理命令對(duì)第一容器執(zhí)行以下操作的一種或任意組合:?jiǎn)?dòng)第一容器、停止第一容器、移除第一容器、遷移第一容器、查看第一容器的鏡像和移除第一容器的鏡像。
17、該實(shí)現(xiàn)方式能夠?qū)崿F(xiàn)對(duì)tee側(cè)的容器的生命周期進(jìn)行管理。
18、在一種可能的實(shí)現(xiàn)方式中,上述第一方面或者第一方面的任一可能的實(shí)現(xiàn)方式提供的方法還包括如下步驟:處理器在ree側(cè)獲取針對(duì)第一容器的第二管理命令,處理器在tee側(cè)根據(jù)第二管理命令對(duì)第一容器執(zhí)行以下操作的一種或任意組合:安裝應(yīng)用程序、啟動(dòng)應(yīng)用程序、關(guān)閉應(yīng)用程序、升級(jí)應(yīng)用程序、卸載應(yīng)用程序和遷移應(yīng)用程序。
19、該實(shí)現(xiàn)方式能夠?qū)崿F(xiàn)對(duì)tee側(cè)的容器中的應(yīng)用程序進(jìn)行管理。
20、在一種可能的實(shí)現(xiàn)方式中,上述ree側(cè)部署有容器運(yùn)行時(shí)和第一虛擬機(jī)管理器,tee側(cè)部署有第二虛擬機(jī)管理器,第一容器所屬的vm中部署有容器代理模塊,處理器在ree側(cè)執(zhí)行的操作由處理器運(yùn)行容器運(yùn)行時(shí)和第一虛擬機(jī)管理器協(xié)同執(zhí)行,處理器在tee側(cè)執(zhí)行的操作由處理器運(yùn)行第二虛擬機(jī)管理器和容器代理模塊協(xié)同執(zhí)行。
21、在一種可能的實(shí)現(xiàn)方式中,第一容器所屬的vm中包括輸入輸出設(shè)備虛擬化(virtualised?input/output,virtio)前端驅(qū)動(dòng)程序,第一虛擬機(jī)管理器包括virtio后端驅(qū)動(dòng)程序,上述第一方面或者第一方面的任一可能的實(shí)現(xiàn)方式提供的方法還包括如下步驟:處理器運(yùn)行virtio前端驅(qū)動(dòng)程序和virtio后端驅(qū)動(dòng)程序協(xié)同模擬得到供第一容器使用的虛擬化i/o設(shè)備。
22、該實(shí)現(xiàn)方式能夠?qū)崿F(xiàn)第一容器通過(guò)虛擬化i/o設(shè)備進(jìn)行i/o通信。
23、在一種可能的實(shí)現(xiàn)方式中,tee側(cè)包括用于virtio前端驅(qū)動(dòng)程序與virtio后端驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)傳輸?shù)牡谝粌?nèi)存,ree側(cè)包括第二內(nèi)存,第二虛擬機(jī)管理器中部署有內(nèi)存同步模塊,內(nèi)存同步模塊包括第一內(nèi)存和第二內(nèi)存的映射關(guān)系,上述第一方面或者第一方面的任一可能的實(shí)現(xiàn)方式提供的方法還包括如下步驟:處理器運(yùn)行內(nèi)存同步模塊根據(jù)第一內(nèi)存和第二內(nèi)存的映射關(guān)系,將第一內(nèi)存中的第一數(shù)據(jù)同步至第二內(nèi)存,其中,第一數(shù)據(jù)為virtio前端驅(qū)動(dòng)程序需發(fā)送給virtio后端驅(qū)動(dòng)程序的數(shù)據(jù),或者,處理器運(yùn)行內(nèi)存同步模塊根據(jù)第一內(nèi)存和第二內(nèi)存的映射關(guān)系,將第二內(nèi)存中的第二數(shù)據(jù)同步至第一內(nèi)存,其中,第二數(shù)據(jù)為virtio前端驅(qū)動(dòng)程序需接收的來(lái)自virtio后端驅(qū)動(dòng)程序的數(shù)據(jù)。
24、該實(shí)現(xiàn)方式能夠?qū)崿F(xiàn)第一容器對(duì)virtio后端驅(qū)動(dòng)程序的讀/寫(xiě)操作,從而實(shí)現(xiàn)第一容器的讀/寫(xiě)需求。
25、第二方面,提供一種數(shù)據(jù)處理裝置,該裝置可以應(yīng)用于計(jì)算設(shè)備,該計(jì)算設(shè)備的硬件資源被劃分為ree側(cè)和tee側(cè),tee側(cè)包括一個(gè)或多個(gè)容器,該裝置包括:
26、獲取模塊,用于在ree側(cè)獲取待處理數(shù)據(jù);
27、處理模塊,用于在tee側(cè)運(yùn)行第一容器對(duì)待處理數(shù)據(jù)進(jìn)行處理,第一容器為tee側(cè)包括的一個(gè)或多個(gè)容器中的任一容器。
28、在一種可能的實(shí)現(xiàn)方式中,tee側(cè)包括一個(gè)或多個(gè)vm,一個(gè)或多個(gè)vm中的每個(gè)vm包括一個(gè)或多個(gè)容器中的至少一個(gè)容器。
29、在一種可能的實(shí)現(xiàn)方式中,獲取模塊在ree側(cè)獲取的待處理數(shù)據(jù)為經(jīng)過(guò)加密的數(shù)據(jù),處理模塊在tee側(cè)運(yùn)行第一容器對(duì)待處理數(shù)據(jù)進(jìn)行處理之前,還用于在tee側(cè)獲取tee側(cè)存儲(chǔ)的解密密鑰,然后使用解密密鑰對(duì)加密數(shù)據(jù)進(jìn)行解密,得到待處理數(shù)據(jù)。
30、在一種可能的實(shí)現(xiàn)方式中,處理模塊具體用于:在確定第一容器為安全容器的情況下,在tee側(cè)運(yùn)行第一容器。
31、在一種可能的實(shí)現(xiàn)方式中,處理模塊具體用于:在確定計(jì)算設(shè)備為安全設(shè)備的情況下,在tee側(cè)運(yùn)行第一容器。
32、在一種可能的實(shí)現(xiàn)方式中,獲取模塊還用于在ree側(cè)獲取待創(chuàng)建的一個(gè)或多個(gè)vm的配置信息,處理模塊還用于在tee側(cè)根據(jù)配置信息創(chuàng)建一個(gè)或多個(gè)vm,獲取模塊還用于在ree側(cè)獲取第一容器的鏡像,以及在ree側(cè)獲取用于創(chuàng)建第一容器的第一vm的標(biāo)識(shí),然后,處理模塊還用于在tee側(cè)根據(jù)第一vm的標(biāo)識(shí)在第一vm中,根據(jù)第一容器的鏡像創(chuàng)建第一容器,第一vm屬于上述一個(gè)或多個(gè)vm。
33、在一種可能的實(shí)現(xiàn)方式中,獲取模塊用于在ree側(cè)獲取針對(duì)第一容器的生命周期的第一管理命令,處理模塊用于在tee側(cè)根據(jù)第一管理命令對(duì)第一容器執(zhí)行以下操作的一種或任意組合:?jiǎn)?dòng)第一容器、停止第一容器、移除第一容器、遷移第一容器、查看第一容器的鏡像和移除第一容器的鏡像。
34、在一種可能的實(shí)現(xiàn)方式中,獲取模塊用于在ree側(cè)獲取針對(duì)第一容器的第二管理命令,處理模塊用于在tee側(cè)根據(jù)第二管理命令對(duì)第一容器執(zhí)行以下操作的一種或任意組合:安裝、啟動(dòng)、關(guān)閉、升級(jí)、卸載和遷移app。
35、在一種可能的實(shí)現(xiàn)方式中,ree側(cè)部署有容器運(yùn)行時(shí)和第一虛擬機(jī)管理器,tee側(cè)部署有第二虛擬機(jī)管理器,第一容器所屬的vm中部署有容器代理模塊,處理器在ree側(cè)執(zhí)行的操作由處理器運(yùn)行容器運(yùn)行時(shí)和第一虛擬機(jī)管理器協(xié)同執(zhí)行,處理器在tee側(cè)執(zhí)行的操作由處理器運(yùn)行第二虛擬機(jī)管理器和容器代理模塊協(xié)同執(zhí)行。
36、在一種可能的實(shí)施例中,處理模塊還用于模擬得到供第一容器使用的虛擬化i/o設(shè)備。
37、在一種可能的實(shí)現(xiàn)方式中,處理模塊還用于根據(jù)第一內(nèi)存和第二內(nèi)存的映射關(guān)系,將第一內(nèi)存中的第一數(shù)據(jù)同步至第二內(nèi)存,第一數(shù)據(jù)為virtio前端驅(qū)動(dòng)程序需發(fā)送給所述virtio后端驅(qū)動(dòng)程序的數(shù)據(jù),或者,用于根據(jù)第一內(nèi)存和第二內(nèi)存的映射關(guān)系,將第二內(nèi)存中的第二數(shù)據(jù)同步至第一內(nèi)存,第二數(shù)據(jù)為virtio前端驅(qū)動(dòng)程序需接收的來(lái)自virtio后端驅(qū)動(dòng)程序的數(shù)據(jù)。其中,第一內(nèi)存為tee側(cè)包括的用于virtio前端驅(qū)動(dòng)程序與virtio后端驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)傳輸?shù)膬?nèi)存,第二內(nèi)存為ree側(cè)的內(nèi)存,virtio前端驅(qū)動(dòng)程序部署于第一容器所屬的虛擬機(jī),virtio后端驅(qū)動(dòng)程序部署于ree側(cè)的第一虛擬機(jī)管理器。
38、關(guān)于第二方面提供的數(shù)據(jù)處理裝置以及第二方面的任一種實(shí)現(xiàn)方式的相關(guān)有益效果和描述可以參見(jiàn)前述第一方面以及第一方面的任一種實(shí)現(xiàn)方式的相關(guān)有益效果和描述,在此不再贅述。
39、第三方面,提供一種計(jì)算設(shè)備,所述計(jì)算設(shè)備包括處理器和存儲(chǔ)器;所述處理器用于執(zhí)行所述存儲(chǔ)器存儲(chǔ)的指令,使得所述計(jì)算設(shè)備實(shí)現(xiàn)如上述第一方面或者第一方面的任意可能的實(shí)現(xiàn)方式提供的方法。
40、第四方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有指令,所述指令用于實(shí)現(xiàn)如上述第一方面或者第一方面的任意可能的實(shí)現(xiàn)方式提供的方法。
41、第五方面,提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序被計(jì)算設(shè)備讀取并執(zhí)行時(shí),使得所述計(jì)算設(shè)備執(zhí)行如上述第一方面或者第一方面的任意可能的實(shí)現(xiàn)方式提供的方法。