一個(gè)虛擬網(wǎng)卡和對應(yīng)驅(qū)動程序的方式來實(shí)現(xiàn),也可以有其它的方式實(shí)現(xiàn)VPN的創(chuàng)建,本申請不做限定。而后,在VPN模塊創(chuàng)建完成后,可通過VPN模塊將用戶在當(dāng)前容器的輸入的鑒權(quán)信息發(fā)送給服務(wù)器,以由服務(wù)器端的服務(wù)模塊確定是否鑒權(quán)通過,該鑒權(quán)信息可以是用戶名密碼或指定的鑒權(quán)信息,若服務(wù)器確定鑒權(quán)通過,則在服務(wù)器與容器實(shí)例之間成功建立起VPN鏈接,基于該NPN鏈接,服務(wù)器可向容器實(shí)例提供各種網(wǎng)絡(luò)服務(wù)。后面,容器內(nèi)部的應(yīng)用程序如果需要獲取網(wǎng)絡(luò)服務(wù),都需要通過該VPN模塊的轉(zhuǎn)發(fā)。
[0089]205、若有,則用戶設(shè)備在第一容器實(shí)例中啟動應(yīng)用程序。
[0090]206、在應(yīng)用程序啟動后,用戶設(shè)備通過第一容器實(shí)例對應(yīng)的專有通信通道與服務(wù)器之間進(jìn)行數(shù)據(jù)通信。
[0091]用戶設(shè)備可以通過虛擬專用網(wǎng)絡(luò)VPN與服務(wù)器進(jìn)行數(shù)據(jù)通信,即容器內(nèi)部的應(yīng)用如果需要獲取網(wǎng)絡(luò)服務(wù),都可通過VPN的轉(zhuǎn)發(fā)。由于VPN可以通過特殊的加密的通訊協(xié)議在連接在網(wǎng)絡(luò)上的位于不同地方的兩個(gè)或多個(gè)企業(yè)內(nèi)部網(wǎng)之間建立一條專有的通訊線路,這樣通過VPN這種采用加密及身份驗(yàn)證等安全技術(shù)可保證連接用戶的可靠性及傳輸數(shù)據(jù)的安全和保密性,因而可保證容器內(nèi)應(yīng)用程序與服務(wù)器端通信的安全性。其中,容器實(shí)例的網(wǎng)絡(luò)策略,例如是否具備拷貝功能、禁止訪問的網(wǎng)絡(luò)地址等,可以由VPN本身的策略控制,也可以由服務(wù)器對應(yīng)的網(wǎng)絡(luò)策略進(jìn)行控制,VPN的網(wǎng)絡(luò)策略也可以由服務(wù)器策略進(jìn)行下發(fā)。
[0092]此外,用戶設(shè)備可采用加密的聯(lián)合文件系統(tǒng)(Another Un1nFS,AUFS)對容器實(shí)例對應(yīng)的數(shù)據(jù)進(jìn)行輸入/輸出I/O層讀寫。加密的AUFS為改造后的AUFS,負(fù)責(zé)當(dāng)前容器數(shù)據(jù)的本地讀寫,為容器內(nèi)應(yīng)用程序的文件讀寫提供文件系統(tǒng)級的加密讀寫支持。AUFS可通過加密組件將應(yīng)用程序讀寫的數(shù)據(jù)存儲到本地磁盤,這樣可使得一旦應(yīng)用程序運(yùn)行在某個(gè)容器的進(jìn)程空間,則該應(yīng)用程序只能訪問該容器實(shí)例所擁有的資源,保證了容器內(nèi)部數(shù)據(jù)的安全性,不同的容器之間可以實(shí)現(xiàn)讀寫內(nèi)容的隔離,容器和宿主機(jī)器之間也可以實(shí)現(xiàn)內(nèi)容的安全隔離,這樣,容器外部的應(yīng)用程序不能訪問加密后的磁盤數(shù)據(jù),不同容器之間訪問不到其它容器產(chǎn)生的數(shù)據(jù)。其中,將容器實(shí)例對應(yīng)的數(shù)據(jù)可寫至本地緩存中,這樣可以保證容器實(shí)例運(yùn)行應(yīng)用程序的連續(xù)性,例如當(dāng)應(yīng)用程序運(yùn)行在某一容器實(shí)例中時(shí)突然斷網(wǎng),那么緩存至本地的數(shù)據(jù)可以使得應(yīng)用程序在再次連接網(wǎng)絡(luò)時(shí),可以使得應(yīng)用程序根據(jù)本地緩存的數(shù)據(jù)繼續(xù)正常運(yùn)行。
[0093]這樣,采用容器內(nèi)部的加密組件讀寫磁盤數(shù)據(jù),可只操作AUFS提供的虛擬磁盤,即使不是企業(yè)內(nèi)部發(fā)布相關(guān)的應(yīng)用程序,也可以在容器內(nèi)部運(yùn)行,更加靈活和方便的滿足用戶的辦公需求。一旦應(yīng)用程序進(jìn)入某個(gè)容器的進(jìn)程空間運(yùn)行,該應(yīng)用程序只能訪問該容器所擁有的資源,這樣保障了容器內(nèi)部數(shù)據(jù)的安全性,同時(shí)又可以使用更多的應(yīng)用程序。
[0094]其中,該應(yīng)用程序可以是用戶設(shè)備本地的應(yīng)用程序,也可以是在容器實(shí)例啟動后,從服務(wù)器下載得到的,或者是通過第三方網(wǎng)絡(luò)服務(wù)下載得到的,本申請不做限定。
[0095]207、用戶設(shè)備通過定時(shí)器模式或事件觸發(fā)模式觸發(fā)獲取容器實(shí)例的更新數(shù)據(jù)。
[0096]當(dāng)容器內(nèi)應(yīng)用程序讀寫的數(shù)據(jù)通過加密組件寫到本地存儲上之后,可以和服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)同步。
[0097]數(shù)據(jù)同步的策略可以采用定時(shí)器模式,也可以采用事件觸發(fā)模式。所謂定時(shí)器模式,即每一段時(shí)間,由同步組件主動發(fā)起同步請求或是由服務(wù)器端主動發(fā)起同步請求,事件觸發(fā)模式是指由用戶事件或是應(yīng)用程序或是由服務(wù)器端管理員來發(fā)起的同步請求;通過該同步請求觸發(fā)用戶設(shè)備獲取本地最新的所述容器實(shí)例的更新數(shù)據(jù)。
[0098]208、用戶設(shè)備將更新數(shù)據(jù)發(fā)送到服務(wù)器。
[0099]具體地,對于同一個(gè)用戶設(shè)備來說,可以在同一設(shè)備上使用不同的容器實(shí)例,以接入到不同的數(shù)據(jù)中心或相同數(shù)據(jù)中心的不同的企業(yè)或部門。同樣的,也可以在不同的設(shè)備上使用同一個(gè)配置的容器實(shí)例,這樣,用戶設(shè)備可將容器實(shí)例同一賬號的更新數(shù)據(jù)發(fā)送至服務(wù)器。
[0100]示例性的,例如當(dāng)某一容器實(shí)例中的應(yīng)用程序在與服務(wù)器通信的過程中,容器實(shí)例會定期接收到服務(wù)器發(fā)送的同步請求,那么用戶設(shè)備可將該容器實(shí)例上一次接收到同步請求和此次接收到同步請求之間緩存至本地的數(shù)據(jù)發(fā)送到服務(wù)器。
[0101]209、服務(wù)器將更新數(shù)據(jù)同步到不同用戶設(shè)備中同一賬號的其它用戶設(shè)備。
[0102]這樣,使得容器實(shí)例和服務(wù)器可以進(jìn)行同步,在不同用戶設(shè)備上可以實(shí)現(xiàn)對統(tǒng)一容器實(shí)例的同步以達(dá)到同一容器實(shí)例在不同設(shè)備上的同步。這樣,在不同設(shè)備上,可以采用同一賬號登陸同一容器實(shí)例進(jìn)行無差別辦公。
[0103]示例性的,當(dāng)容器實(shí)例中運(yùn)行某一應(yīng)用程序并與服務(wù)器進(jìn)行通信時(shí),可在該容器實(shí)例與服務(wù)器建立連接時(shí)通知服務(wù)器該容器實(shí)例所在的用戶設(shè)備的唯一標(biāo)識。這樣當(dāng)服務(wù)器與容器實(shí)例建立連接后,會將該容器實(shí)例登錄服務(wù)器的賬號和用戶設(shè)備的唯一標(biāo)識對應(yīng)存儲到服務(wù)器中,當(dāng)多個(gè)用戶設(shè)備都使用該容器實(shí)例的賬號登錄到服務(wù)器時(shí),服務(wù)器會記錄到同一賬號下的多個(gè)用戶設(shè)備的唯一標(biāo)識。于是,當(dāng)服務(wù)器保存了該賬號下的任一用戶設(shè)備發(fā)送的該容器實(shí)例的更新數(shù)據(jù)后,如果接收到另一用戶設(shè)備發(fā)送的該容器實(shí)例的登錄請求,那么服務(wù)器就將更新數(shù)據(jù)發(fā)送給該另一用戶設(shè)備,使得更新數(shù)據(jù)可以同步到不同用戶設(shè)備中同一賬號的其它用戶設(shè)備。
[0104]此外,如果用戶需要切換容器實(shí)例界面,當(dāng)用戶設(shè)備接收到容器實(shí)例切換請求時(shí),將當(dāng)前容器實(shí)例的窗口界面切換至容器實(shí)例切換請求指定的容器實(shí)例的窗口界面。示例性的,可先根據(jù)切換后的容器實(shí)例的標(biāo)識獲取切換后的容器實(shí)例的Z序值以及初始窗口界面,然后根據(jù)Z序值和初始窗口界面完成窗口在用戶設(shè)備的顯示,例如通過SurfaceFlinger模塊刷新當(dāng)前用戶設(shè)備的FrameBuffer內(nèi)容為指定的容器實(shí)例窗口界面。當(dāng)然,也可以根據(jù)該方法從宿主機(jī)器界面切換到某個(gè)容器界面下。
[0105]如果服務(wù)器端需要移除某個(gè)容器實(shí)例,可向用戶設(shè)備發(fā)送擦除指令,容器管理服務(wù)模塊在得到該擦除指令后,可將擦除指令指示的第二容器實(shí)例和第二容器實(shí)例對應(yīng)的用戶數(shù)據(jù)移除。
[0106]示例性的,例如在用戶設(shè)備丟失的情況下,用戶想要使得用戶設(shè)備某一容器實(shí)例中的數(shù)據(jù)不泄露,可通過服務(wù)器向該用戶設(shè)備發(fā)送擦除指令,使得該容器實(shí)例及其對應(yīng)的本地緩存數(shù)據(jù)移除,以實(shí)現(xiàn)在設(shè)備丟失的情況下對容器實(shí)例及其緩存數(shù)據(jù)的遠(yuǎn)程擦除。
[0107]本發(fā)明實(shí)施例提供一種數(shù)據(jù)通信方法,應(yīng)用于用戶設(shè)備,用戶設(shè)備包括:硬件層、運(yùn)行在硬件層上的宿主機(jī)、以及運(yùn)行在宿主機(jī)上的至少一個(gè)容器,宿主機(jī)中具有若干個(gè)容器實(shí)例,每個(gè)容器實(shí)例分別對應(yīng)不同的容器,用戶設(shè)備在接收到運(yùn)行應(yīng)用程序的啟動指令時(shí),確定應(yīng)用程序是否在安全模式下運(yùn)行,若是,則與服務(wù)器之間進(jìn)行安全認(rèn)證,若安全認(rèn)證通過,則用戶設(shè)備在用戶選定的第一容器實(shí)例中啟動應(yīng)用程序,并通過第一容器實(shí)例對應(yīng)的專有通信通道與服務(wù)器之間進(jìn)行數(shù)據(jù)通信,這樣,對于移動辦公而言,在不修改應(yīng)用的基礎(chǔ)上,采用容器技術(shù),可實(shí)現(xiàn)應(yīng)用在手持設(shè)備的安全隔離的環(huán)境中運(yùn)行,并通過專有通信通道,保證企業(yè)數(shù)據(jù)的安全性,能夠解決移動辦公場景中定制化開發(fā)或改造用戶軟件實(shí)施難度大的問題。
[0108]應(yīng)用上述容器技術(shù),本發(fā)明實(shí)施例提供一種基于容器的BYOD移動辦公平臺,如圖3所示,為基于容器的BYOD典型部署結(jié)構(gòu)圖和內(nèi)部邏輯示意圖。圖3中列舉了三臺用戶設(shè)備(手持設(shè)備,例如手機(jī)、平板電腦等)和一個(gè)數(shù)據(jù)中心(服務(wù)器,為用戶設(shè)備的訪問提供服務(wù),以及指令下發(fā)等)的部署結(jié)構(gòu)和設(shè)備內(nèi)部的組件。
[0109]其中,數(shù)據(jù)中心包含的主要組件有:
[0110]服務(wù)器端數(shù)據(jù),即容器實(shí)例模版和容器實(shí)例在服務(wù)器端的備份;容器實(shí)例模版是容器運(yùn)行的源程序,是操作系統(tǒng)的鏡像文件。容器實(shí)例為容器內(nèi)應(yīng)用程序的運(yùn)行提供運(yùn)行環(huán)境。
[0111]服務(wù)模塊,可提供和用戶設(shè)備(例如Android設(shè)備)間的通訊能力,為用戶設(shè)備的訪問提供服務(wù),以及相關(guān)指令下發(fā)功能,即為用戶設(shè)備組件提供對應(yīng)的網(wǎng)絡(luò)服務(wù),例如虛擬專用網(wǎng)絡(luò)VPN策略控制、數(shù)據(jù)同步服務(wù)和集中式鑒權(quán)等。
[0112]用戶設(shè)備包含的主要組件有:
[0113]本地存儲器(local storage),宿主機(jī)器即用戶設(shè)備上的存儲模塊或內(nèi)置磁盤,存儲宿主機(jī)器或是容器實(shí)例寫入的數(shù)據(jù);
[0114]容器,運(yùn)行在宿主機(jī)器上的容器實(shí)例,為容器內(nèi)的應(yīng)用提供運(yùn)行環(huán)境;
[0115]VPN,容器中負(fù)責(zé)和數(shù)據(jù)中心交互的專有網(wǎng)絡(luò)模塊;
[0116]同步組件,負(fù)責(zé)容器和數(shù)據(jù)中心進(jìn)行數(shù)據(jù)同步的模塊,該模塊屬于對應(yīng)的容器,SP一個(gè)容器對應(yīng)一同步組件;
[0117]加密的聯(lián)合文件系統(tǒng)AUFS,為改造后