本申請涉及數(shù)據(jù)訪問技術(shù),具體涉及一種應(yīng)用程序數(shù)據(jù)訪問隔離方法。本申請同時(shí)涉及一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置。
背景技術(shù):
個人電腦、智能手機(jī)等終端設(shè)備已經(jīng)成為了人們生活中不可或缺的組成部分,這些終端設(shè)備上通常安裝有多個應(yīng)用程序,為人們提供天氣咨詢、購物、聊天、攝像、發(fā)送電子郵件等多種服務(wù)功能。各應(yīng)用程序通常會在文件系統(tǒng)的目錄中存儲與本程序運(yùn)行相關(guān)的數(shù)據(jù),應(yīng)用程序根據(jù)運(yùn)行的需求對所述數(shù)據(jù)進(jìn)行訪問。為了保證整個系統(tǒng)運(yùn)行的穩(wěn)定性及安全性,通常需要在不同的應(yīng)用程序之間提供數(shù)據(jù)訪問隔離機(jī)制。
其中,比較簡單易行的隔離機(jī)制是:應(yīng)用程序之間處于完全互相隔離的狀態(tài),即,每個應(yīng)用程序都只能訪問自己的數(shù)據(jù),而不能訪問其他應(yīng)用程序的數(shù)據(jù)。采用這種嚴(yán)格的隔離方案可以避免出現(xiàn)某些應(yīng)用程序惡意訪問其他應(yīng)用程序數(shù)據(jù)的情況,但在實(shí)際應(yīng)用中,部分應(yīng)用程序(例如相同廠家出品的某些互信應(yīng)用程序)之間又需要共享數(shù)據(jù),而嚴(yán)格的隔離機(jī)制,造成互信應(yīng)用程序之間的數(shù)據(jù)共享困難。
針對上述問題,某些系統(tǒng)允許部分應(yīng)用程序之間可以互訪數(shù)據(jù),例如安卓(android)系統(tǒng),其允許具有相同簽名的app(安裝在手機(jī)上的應(yīng)用程序)互相訪問數(shù)據(jù),例如:使用相同的私鑰簽署需要數(shù)據(jù)共享功能的app,然后使用manifest文件給這些app分配相同的用戶id,即uid,這些具有相同uid的app即可互相訪問數(shù)據(jù)、實(shí)現(xiàn)彼此之間的數(shù)據(jù)共享。android的隔離機(jī)制實(shí)際上是基于uid的隔離,其本質(zhì)是:相同作者的app可以互相訪問數(shù)據(jù)。
上述基于uid的隔離方案雖然在數(shù)據(jù)隔離的基礎(chǔ)上實(shí)現(xiàn)了部分app的數(shù)據(jù)共享,但是由于具有相同簽名這一強(qiáng)制性要求,維度單一,不夠靈活,限制了應(yīng)用程序數(shù)據(jù)訪問隔離的自由度,無法滿足實(shí)際應(yīng)用中相對復(fù)雜的應(yīng)用程序數(shù)據(jù)隔離需求。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例提供一種應(yīng)用程序數(shù)據(jù)隔離方法,以解決現(xiàn)有的隔離方案過于簡單、無法滿足復(fù)雜的應(yīng)用程序數(shù)據(jù)隔離需求的問題。本申請實(shí)施例還提供一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置。
本申請?zhí)峁┮环N應(yīng)用程序數(shù)據(jù)訪問隔離方法,包括:
接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求;
判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中;
若是,允許第一應(yīng)用程序執(zhí)行訪問操作,否則拒絕執(zhí)行訪問操作;
其中,每個應(yīng)用程序?qū)儆谝粋€域、并且具有標(biāo)識其所屬域的域?qū)傩?,屬于同一個域的應(yīng)用程序可以互相訪問數(shù)據(jù);不同域之間具有預(yù)先設(shè)定的層級關(guān)系、以及基于層級關(guān)系的應(yīng)用程序數(shù)據(jù)訪問規(guī)則。
可選的,應(yīng)用程序的域?qū)傩允遣捎萌缦路绞筋A(yù)先設(shè)置的:
在安裝應(yīng)用程序時(shí),根據(jù)安裝包攜帶的配置信息設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
可選的,應(yīng)用程序的域?qū)傩允歉鶕?jù)預(yù)設(shè)規(guī)則預(yù)先設(shè)置的。
可選的,所述預(yù)先設(shè)定的層級關(guān)系包括:直接或者間接包含的父子域關(guān)系;
所述基于層級關(guān)系的應(yīng)用程序數(shù)據(jù)訪問規(guī)則包括:子域中的應(yīng)用程序可以訪問父域中的應(yīng)用程序的數(shù)據(jù),其他屬于不同域的應(yīng)用程序不可以互相訪問數(shù)據(jù)。
可選的,所述判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,包括:
判斷第一應(yīng)用程序是否滿足以下數(shù)據(jù)訪問條件中的任意一項(xiàng):與第二應(yīng)用程序?qū)儆谕挥?,或者第一?yīng)用程序所屬域是第二應(yīng)用程序所屬域的子域;
若是,則判定所述第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,否則判定不在所述域中。
可選的,在所述接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求之前,執(zhí)行下述操作:
為各應(yīng)用程序分別分配唯一的應(yīng)用程序標(biāo)識,為預(yù)先設(shè)定的各域分別分配唯一的組,每個組具有唯一的組標(biāo)識;
為各應(yīng)用程序的數(shù)據(jù)指定相應(yīng)應(yīng)用程序所屬域?qū)?yīng)的組標(biāo)識;
將各應(yīng)用程序標(biāo)識添加到應(yīng)用程序所屬域?qū)?yīng)的組內(nèi)、以及所屬域的父域?qū)?yīng)的組內(nèi);
所述判斷第一應(yīng)用程序是否滿足數(shù)據(jù)訪問條件中的任意一項(xiàng),包括:
判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi);若在,則判定第一應(yīng)用程序滿足所述數(shù)據(jù)訪問條件中的任意一項(xiàng),否則判定不滿足。
可選的,所述方法在基于linux的軟件系統(tǒng)中運(yùn)行,所述應(yīng)用程序標(biāo)識為uid,所述組標(biāo)識為gid;
所述判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi),是利用linux的權(quán)限控制機(jī)制實(shí)現(xiàn)的。
可選的,所述應(yīng)用程序數(shù)據(jù)包括:在預(yù)先設(shè)定的、對應(yīng)于應(yīng)用程序的目錄中的數(shù)據(jù)。
可選的,在所述接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求之前,包括:
動態(tài)調(diào)整第一應(yīng)用程序和/或第二應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述動態(tài)調(diào)整第一應(yīng)用程序和/或第二應(yīng)用程序的域?qū)傩裕ǎ?/p>
根據(jù)接收到的域?qū)傩哉{(diào)整指令,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩?;或者?/p>
根據(jù)預(yù)先設(shè)定的定時(shí)授權(quán)方案,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩浴?/p>
相應(yīng)的,本申請還提供一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置,包括:
訪問請求接收單元,用于接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求;
權(quán)限判斷單元,用于判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中;
允許訪問單元,用于當(dāng)所述權(quán)限判斷單元的輸出為是時(shí),允許第一應(yīng)用程序執(zhí)行訪問操作;
拒絕訪問單元,用于當(dāng)所述權(quán)限判斷單元的輸出為否時(shí),拒絕第一應(yīng)用程序執(zhí)行訪問操作。
可選的,所述裝置包括:
第一域?qū)傩栽O(shè)置單元,用于在安裝應(yīng)用程序時(shí),根據(jù)安裝包攜帶的配置信 息設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述裝置包括:
第二域?qū)傩栽O(shè)置單元,用于根據(jù)預(yù)設(shè)規(guī)則預(yù)先設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述權(quán)限判斷單元,具體用于判斷第一應(yīng)用程序是否滿足以下數(shù)據(jù)訪問條件中的任意一項(xiàng):與第二應(yīng)用程序?qū)儆谕挥?,或者第一?yīng)用程序所屬域是第二應(yīng)用程序所屬域的子域;若是,則判定所述第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,否則判定不在所述域中。
可選的,所述裝置還包括在所述訪問請求接收單元之前觸發(fā)的下列單元:
應(yīng)用及組標(biāo)識分配單元,用于為各應(yīng)用程序分別分配唯一的應(yīng)用程序標(biāo)識,為預(yù)先設(shè)定的各域分別分配唯一的組,每個組具有唯一的組標(biāo)識;
數(shù)據(jù)標(biāo)識指定單元,用于為各應(yīng)用程序的數(shù)據(jù)指定相應(yīng)應(yīng)用程序所屬域?qū)?yīng)的組標(biāo)識;
應(yīng)用標(biāo)識添加單元,用于將各應(yīng)用程序標(biāo)識添加到應(yīng)用程序所屬域?qū)?yīng)的組內(nèi)、以及所屬域的父域?qū)?yīng)的組內(nèi);
所述權(quán)限判斷單元,具體用于判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi);若在,則判定所述第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,否則判定不在所述域中。
可選的,所述權(quán)限判斷單元,具體用于利用linux的權(quán)限控制機(jī)制,判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi)。
可選的,所述裝置包括:
域?qū)傩詣討B(tài)調(diào)整單元,用于在所述訪問請求接收單元工作之前,動態(tài)調(diào)整第一應(yīng)用程序和/或第二應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述域?qū)傩詣討B(tài)調(diào)整單元,具體用于根據(jù)接收到的域?qū)傩哉{(diào)整指令,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩?;或者,根?jù)預(yù)先設(shè)定的定時(shí)授權(quán)方案,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩浴?/p>
與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):
本申請?zhí)峁┑膽?yīng)用程序數(shù)據(jù)訪問隔離方法,在接收到第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求后,判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具 有訪問權(quán)限的域中,若是,允許第一應(yīng)用程序執(zhí)行訪問操作,否則拒絕執(zhí)行訪問操作;其中,每個應(yīng)用程序?qū)儆谝粋€域、并且具有標(biāo)識其所述域的域?qū)傩?,屬于同一個域的應(yīng)用程序可以互相訪問數(shù)據(jù),不同域之間具有預(yù)先設(shè)定的層級關(guān)系、以及基于層級關(guān)系的應(yīng)用程序數(shù)據(jù)訪問規(guī)則。
本申請?zhí)峁┑纳鲜龇椒?,由于采用了基于域的、且具有層級關(guān)系的數(shù)據(jù)隔離方案,通過在不同域間設(shè)定基于層級的數(shù)據(jù)訪問規(guī)則,相當(dāng)于從多個維度實(shí)現(xiàn)數(shù)據(jù)隔離機(jī)制,能夠?yàn)閼?yīng)用程序提供合理的數(shù)據(jù)訪問權(quán)限,靈活地實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享。特別是在不同域之間引入基于直接或者間接包含的父子域關(guān)系,能夠清晰的構(gòu)建樹形共享關(guān)系,滿足非對稱的應(yīng)用程序數(shù)據(jù)訪問需求。
此外,如果需要改變應(yīng)用程序之間的數(shù)據(jù)訪問關(guān)系,只需要動態(tài)調(diào)整應(yīng)用程序的域?qū)傩约纯?,簡便易行,從而允許相同應(yīng)用程序在不同的系統(tǒng)中具有不同的數(shù)據(jù)訪問能力,以滿足實(shí)際應(yīng)用中的安全性需求。
附圖說明
圖1是本申請的一種應(yīng)用程序數(shù)據(jù)訪問隔離方法的實(shí)施例的流程圖;
圖2是本申請的一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置的實(shí)施例的示意圖。
具體實(shí)施方式
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實(shí)施的限制。
在本申請中,分別提供了一種應(yīng)用程序數(shù)據(jù)隔離方法,以及一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置,在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說明。
本申請?zhí)峁┑膽?yīng)用程序數(shù)據(jù)訪問隔離方法,其核心在于:預(yù)先為每個應(yīng)用程序設(shè)定標(biāo)識其所屬域的域?qū)傩?、以及不同域間基于層級關(guān)系的數(shù)據(jù)訪問規(guī)則,在接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求時(shí),若第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,則允許第一應(yīng)用程序執(zhí)行訪問操作,否則不允許。
與單純基于相同uid的數(shù)據(jù)訪問隔離方案相比較,本申請的技術(shù)方案由于采用了基于域的、且具有層級關(guān)系的數(shù)據(jù)隔離方案,相當(dāng)于從多個維度實(shí)現(xiàn)數(shù)據(jù)隔離機(jī)制,能夠?yàn)閼?yīng)用程序提供合理的數(shù)據(jù)訪問權(quán)限,靈活地實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享。
本申請?zhí)峁┑膽?yīng)用程序數(shù)據(jù)訪問隔離方法,在具體實(shí)施時(shí),可以由獨(dú)立的服務(wù)提供方實(shí)施,應(yīng)用程序之間的數(shù)據(jù)訪問請求提交給所述服務(wù)提供方,由服務(wù)提供方判斷是否允許訪問;也可以由被訪問的應(yīng)用程序,即:數(shù)據(jù)提供方,在接收數(shù)據(jù)訪問請求后實(shí)施本方法進(jìn)行判斷,并根據(jù)本方法的判斷結(jié)果做出相應(yīng)的處理。下面對本申請的實(shí)施例進(jìn)行詳細(xì)說明。
請參考圖1,其為本申請的一種應(yīng)用程序數(shù)據(jù)訪問隔離方法的實(shí)施例的流程圖。在實(shí)施本申請?zhí)峁┑姆椒ㄖ?,可以先進(jìn)行域的劃分、設(shè)置不同域之間的層級關(guān)系和應(yīng)用程序數(shù)據(jù)訪問規(guī)則,并對應(yīng)用程序的域?qū)傩赃M(jìn)行設(shè)置。
本實(shí)施例所述的域,是指邏輯上的應(yīng)用程序集合,在具體實(shí)施時(shí),可以遵循某種預(yù)設(shè)規(guī)則進(jìn)行域的劃分,例如,可以根據(jù)應(yīng)用程序所隸屬的公司進(jìn)行域的劃分,即:將出自相同公司的應(yīng)用程序組成一個域;可以根據(jù)應(yīng)用程序的作者進(jìn)行域的劃分,即:將出自相同作者的應(yīng)用程序組成一個域;也可以根據(jù)應(yīng)用程序的功能進(jìn)行域的劃分,例如,將與支付相關(guān)的應(yīng)用程序組成一個域。在具體實(shí)施時(shí),還可以采用不同于上述方式的其他方式預(yù)先進(jìn)行域的劃分,本實(shí)施例不對具體的劃分方式進(jìn)行限定。
每個應(yīng)用程序?qū)儆谝粋€域,屬于同一個域的應(yīng)用程序可以互相訪問數(shù)據(jù),不同域之間具有預(yù)先設(shè)定的層級關(guān)系,以及基于層級關(guān)系的應(yīng)用程序數(shù)據(jù)訪問規(guī)則。在具體實(shí)施時(shí),可以根據(jù)具體需求為域設(shè)置層級屬性,并且預(yù)先設(shè)定處于不同層級、以及相同層級的域之間的數(shù)據(jù)訪問關(guān)系,例如:處于不同層級的域中的應(yīng)用程序不能互相訪問彼此的數(shù)據(jù),而處于相同層級的兄弟域中的應(yīng)用程序可以互相訪問彼此數(shù)據(jù)等。采用這種方式設(shè)置數(shù)據(jù)訪問規(guī)則,相當(dāng)于在域劃分這一維度的基礎(chǔ)上,增加了層級關(guān)系維度,從而可以從多個維度實(shí)現(xiàn)數(shù)據(jù)隔離機(jī)制,能夠?yàn)閼?yīng)用程序提供合理的數(shù)據(jù)訪問權(quán)限,靈活地實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享。
優(yōu)選地,本實(shí)施例提供基于父子域的優(yōu)選實(shí)施方式,即:不同域之間的層級關(guān)系包括:直接或者間接包含的父子域關(guān)系,相應(yīng)的,所述基于層級關(guān)系的 應(yīng)用程序數(shù)據(jù)訪問規(guī)則包括:子域中的應(yīng)用程序可以訪問父域中的應(yīng)用程序的數(shù)據(jù),其他屬于不同域的應(yīng)用程序之間不可以互相訪問數(shù)據(jù),其中包括父域中的應(yīng)用程序也不可以訪問子域中的應(yīng)用程序的數(shù)據(jù)。采用上述基于父子域的數(shù)據(jù)訪問規(guī)則,由于具有相同父域的子域中的應(yīng)用程序能夠通過父域共享數(shù)據(jù),從而能夠清晰的構(gòu)建樹形共享關(guān)系,同時(shí)由于父域中的應(yīng)用程序不可以訪問子域中的應(yīng)用程序數(shù)據(jù),因此可以滿足非對稱的應(yīng)用程序數(shù)據(jù)訪問需求。
需要說明的是,所述父子域關(guān)系可以是直接包含的、也可以是間接包含的。在本實(shí)施例中,將直接包含或者間接包含某一子域的域,稱為所述子域的父域,同樣的道理,將直接包含或者間接包含于某一父域的域,稱為所述父域的子域。例如,域b是域a的子域,域c是域b的子域,則域a直接包含域b、間接包含域c,那么對于域a來說,域b和域c都是其子域,對于域c來說,域a和域b都是其父域。本實(shí)施例重點(diǎn)描述基于父子域的優(yōu)選實(shí)施方式。
在本實(shí)施例中,每個應(yīng)用程序?qū)儆谇覂H屬于一個域,并且用域?qū)傩詷?biāo)識其所屬的域。每個應(yīng)用程序的域?qū)傩酝ǔJ穷A(yù)先設(shè)置好的,例如可以在安裝應(yīng)用程序時(shí)根據(jù)安裝包攜帶的配置信息設(shè)置應(yīng)用程序的域?qū)傩?,也可以采用預(yù)設(shè)規(guī)則進(jìn)行設(shè)置,或者結(jié)合上述兩類信息為應(yīng)用程序設(shè)置域?qū)傩浴?/p>
下面通過一個具體的例子,說明應(yīng)用程序域?qū)傩缘脑O(shè)置方式。在本例子中,每個應(yīng)用程序都有唯一的package信息,該信息可以從安裝包攜帶的配置信息中獲取,其構(gòu)成方式為:package=app.domain,其中,app為應(yīng)用程序的名稱,domain信息為可選的。進(jìn)行應(yīng)用程序域?qū)傩栽O(shè)置的預(yù)設(shè)規(guī)則為:首先根據(jù)規(guī)則表初步判斷應(yīng)用程序所屬的域,對于未在規(guī)則表中顯式指定的應(yīng)用程序、以及進(jìn)行初步判斷后的應(yīng)用程序,可以根據(jù)其唯一的package信息中包含的domain信息進(jìn)一步判斷其所屬的域。
例如:某系統(tǒng)預(yù)先劃分以下域:trust、pay、dom、sub、cc、g1、g2,其中trust和cc是處于同一層級的域,trust域是dom域、sub域以及pay域的父域,dom域是sub域的父域,cc域是g1域和g2域的父域;此外,在所述系統(tǒng)中已安裝了package信息分別如下所示的一系列應(yīng)用程序:a0.sub.dom、a1.sub.dom、a2.dom、b0、b1、f1.g1.cc、f2.g1.cc、f3.g2.cc、f4.cc。
預(yù)設(shè)規(guī)則表的語法為:所屬域名:[package=?],規(guī)則表的具體內(nèi)容為:
trust:package=a0.sub.dom
trust:package=a1.sub.dom
trust:package=a2.dom
trust.pay:package=b0
trust.pay:package=b1
根據(jù)上述預(yù)先設(shè)定的規(guī)則以及規(guī)則表,為每個應(yīng)用程序指定其所屬的域,得到如下所示的從屬關(guān)系,其中冒號后面為域直接包含的應(yīng)用程序的名稱。
trust:
--dom:a2
--sub:a0,a1
--pay:b0,b1
cc:f4
--g1:f1,f2
--g2:f3
通過上述方式確定每個應(yīng)用程序所屬的域,并相應(yīng)設(shè)置應(yīng)用程序的域?qū)傩?,例如a0應(yīng)用程序的域?qū)傩詾閟ub域。
上述給出了基于預(yù)設(shè)規(guī)則設(shè)置應(yīng)用程序域?qū)傩缘睦?,在具體實(shí)施時(shí),可以采用不同于上述方式的其他方式設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
在為應(yīng)用程序設(shè)置域?qū)傩院?,可以?zhí)行本實(shí)施例的步驟101-步驟103,實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)訪問隔離。下面對各個步驟逐一進(jìn)行說明。
步驟101、接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求。
應(yīng)用程序?yàn)榱藢?shí)現(xiàn)其功能,通常會維護(hù)與本應(yīng)用程序運(yùn)行相關(guān)的應(yīng)用程序數(shù)據(jù),并在需要的時(shí)候訪問所述數(shù)據(jù),執(zhí)行讀寫操作等。應(yīng)用程序及其數(shù)據(jù)之間的對應(yīng)關(guān)系通常由承載應(yīng)用程序的系統(tǒng)負(fù)責(zé)維護(hù)。
所述應(yīng)用程序數(shù)據(jù)包括:在預(yù)先設(shè)定的、對應(yīng)于應(yīng)用程序的目錄中的數(shù)據(jù),以安卓系統(tǒng)為例,運(yùn)行于該系統(tǒng)中的每個應(yīng)用程序,都有預(yù)先設(shè)定的、與之對應(yīng)的應(yīng)用程序目錄(目錄名通常是應(yīng)用程序在androidmanifest.xml文件中定義的包的名稱),位于該目錄下的以數(shù)據(jù)文件形式承載的數(shù)據(jù),通常就稱為所述應(yīng)用程序的數(shù)據(jù)。
應(yīng)用程序通常對自己的數(shù)據(jù)具有絕對的訪問權(quán)限,但是不同應(yīng)用程序間的數(shù)據(jù)訪問則需要進(jìn)行必要的訪問隔離控制,當(dāng)?shù)谝粦?yīng)用程序發(fā)起訪問第二應(yīng)用程序數(shù)據(jù)的相關(guān)調(diào)用操作后,實(shí)施本方法的應(yīng)用程序或者系統(tǒng)就會接收到所述訪問請求。
步驟102、判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,若是,執(zhí)行步驟103,否則,執(zhí)行步驟104。
本步驟可以根據(jù)第一應(yīng)用程序以及第二應(yīng)用程序的域?qū)傩?、以及預(yù)先設(shè)定的域內(nèi)及域間數(shù)據(jù)訪問規(guī)則,判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中。
對于采用了基于父子域的優(yōu)選實(shí)施方式,本步驟則可以判斷第一應(yīng)用程序是否滿足以下數(shù)據(jù)訪問條件中的任意一項(xiàng):與第二應(yīng)用程序?qū)儆谕挥?,或者第一?yīng)用程序所屬域是第二應(yīng)用程序所屬域的子域。只要滿足任意一項(xiàng),則說明第一應(yīng)用程序在對第二應(yīng)用程序具有訪問權(quán)限的域中。
優(yōu)選地,為了便于進(jìn)行上述判斷,在具體應(yīng)用中可以引入組的概念,并采用如下實(shí)施方式:在執(zhí)行本步驟之前:為各應(yīng)用程序分別分配唯一的應(yīng)用程序標(biāo)識(id),為預(yù)先設(shè)定的各域分別分配唯一的組(group),每個組具有唯一的組標(biāo)識(groupid),為各應(yīng)用程序的數(shù)據(jù)指定相應(yīng)應(yīng)用程序所屬域?qū)?yīng)的組標(biāo)識,并將各應(yīng)用程序標(biāo)識添加到應(yīng)用程序所屬域?qū)?yīng)的組內(nèi)、以及所屬域的父域?qū)?yīng)的組內(nèi)。那么本步驟則可以直接判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi),若在,則說明第一應(yīng)用程序在對第二應(yīng)用程序具有訪問權(quán)限的域中,否則,說明第一應(yīng)用程序不在所述域中。
仍沿用上面所列舉的具體例子進(jìn)行說明,為各應(yīng)用程序分配的id以及為各域分配的groupid如下所示:
trust(groupid=1000):
--dom(groupid=1001):a2(id=101)
--sub(groupid=1002):a0(id=102),a1(id=103)
--pay(groupid=1003):b0(id=104),b1(id=105)
cc(groupid=1004):f4(id=106)
--g1(groupid=1005):f1(id=107),f2(id=108)
--g2(groupid=1006):f3(id=109)
各個組包含的應(yīng)用程序標(biāo)識如下:
groupid=1000包含的應(yīng)用程序標(biāo)識:101、102、103、104、105
groupid=1001包含的應(yīng)用程序標(biāo)識:101、102、103
groupid=1002包含的應(yīng)用程序標(biāo)識:102、103
groupid=1003包含的應(yīng)用程序標(biāo)識:104、105
groupid=1004包含的應(yīng)用程序標(biāo)識:106、107、108、109
groupid=1005包含的應(yīng)用程序標(biāo)識:107、108
groupid=1006包含的應(yīng)用程序標(biāo)識:109
如果本實(shí)施例中的第一應(yīng)用程序?yàn)閍0,第二應(yīng)用程序?yàn)閍2,由于為第二應(yīng)用程序數(shù)據(jù)指定的組標(biāo)識為1001,而第一應(yīng)用程序a0的標(biāo)識102在被訪問數(shù)據(jù)(即,第二應(yīng)用程序數(shù)據(jù))的組標(biāo)識所對應(yīng)的groupid=1001的組內(nèi),因此本步驟的判斷結(jié)果為第一應(yīng)用程序a0在對第二應(yīng)用程序a2具有訪問權(quán)限的域中,可以執(zhí)行后續(xù)步驟103。
同樣的道理,如果本實(shí)施例中的第一應(yīng)用程序?yàn)閍2,第二應(yīng)用程序?yàn)閍0,由于為第二應(yīng)用程序數(shù)據(jù)指定的組標(biāo)識為1002,而第一應(yīng)用程序a2的標(biāo)識101不在被訪問數(shù)據(jù)(即,第二應(yīng)用程序數(shù)據(jù))的組標(biāo)識所對應(yīng)的groupid=1002的組內(nèi),因此本步驟的判斷結(jié)果為第一應(yīng)用程序a2不在對第二應(yīng)用程序a0具有訪問權(quán)限的域中,執(zhí)行后續(xù)步驟104。
對于其他應(yīng)用程序之間的數(shù)據(jù)訪問操作,本步驟的判斷過程也都是類似的,此處不再贅述。通過上述對應(yīng)用程序a0、a2彼此間的數(shù)據(jù)訪問權(quán)限的判斷過程,可以看出,采用基于父子域的數(shù)據(jù)訪問隔離方案,不僅從多個維度實(shí)現(xiàn)數(shù)據(jù)隔離機(jī)制,能夠?yàn)閼?yīng)用程序提供合理的數(shù)據(jù)訪問權(quán)限,靈活地實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享,而且可以滿足非對稱的應(yīng)用程序數(shù)據(jù)訪問需求。
在具體實(shí)施時(shí),如果本方法在基于linux的系統(tǒng)中實(shí)施,那么上述判斷過程可以利用linux的權(quán)限控制機(jī)制實(shí)現(xiàn),從而簡化實(shí)施過程:為每個應(yīng)用程序分配的應(yīng)用程序標(biāo)識為系統(tǒng)內(nèi)唯一的uid,為各個域分配的組標(biāo)識為系統(tǒng)內(nèi)唯一的gid,那么當(dāng)?shù)谝粦?yīng)用程序訪問第二應(yīng)用程序數(shù)據(jù)時(shí),linux系統(tǒng)會自動檢查uid是否在gid對應(yīng)的group中,并返回相應(yīng)的檢查結(jié)果,從而完成本步驟的判斷。
步驟103、允許第一應(yīng)用程序執(zhí)行訪問操作。
執(zhí)行到本步驟,說明第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,因此允許第一應(yīng)用程序執(zhí)行訪問操作,例如,第一應(yīng)用程序可以讀取與第二應(yīng)用程序相對應(yīng)的目錄下的數(shù)據(jù)文件。
步驟104、拒絕第一應(yīng)用程序執(zhí)行訪問操作。
執(zhí)行到本步驟,說明第一應(yīng)用程序不在對第二應(yīng)用程序具有訪問權(quán)限的域 中,因此拒絕第一應(yīng)用程序執(zhí)行訪問操作,例如:不允許第一應(yīng)用程序讀取與第二應(yīng)用程序相對應(yīng)的目錄下的數(shù)據(jù)文件。
至此,通過上述步驟101-104,對本實(shí)施例提供的應(yīng)用程序數(shù)據(jù)訪問隔離方法進(jìn)行了詳細(xì)說明。在實(shí)際應(yīng)用中,應(yīng)用程序的域?qū)傩酝ǔJ穷A(yù)先設(shè)置好的,但是也可能會出現(xiàn)需要調(diào)整應(yīng)用程序所屬域的情況,因此本實(shí)施例所述的應(yīng)用程序的域?qū)傩允强蓜討B(tài)調(diào)整的,從而能夠根據(jù)需求在應(yīng)用程序運(yùn)行過程中改變其域?qū)傩?,允許相同的應(yīng)用程序在不同的系統(tǒng)中具有不同的數(shù)據(jù)訪問能力,以滿足實(shí)際應(yīng)用中的安全性等需求。具體實(shí)現(xiàn)可以是:在接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求之前,動態(tài)調(diào)整第一應(yīng)用程序和/或第二應(yīng)用程序的域?qū)傩裕旅娣謨煞N情況作進(jìn)一步說明。
1)可以根據(jù)接收到的域?qū)傩哉{(diào)整指令,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩?。例如,本?shí)施例中的第一應(yīng)用程序在起始階段被認(rèn)為是屬于安全領(lǐng)域的,因此為其設(shè)置了對應(yīng)于安全領(lǐng)域的域?qū)傩裕承┨厥馐录l(fā)生后,第一應(yīng)用程序的性質(zhì)被重新確定,因而需要調(diào)整第一應(yīng)用程序所屬的域,并相應(yīng)修改第一應(yīng)用程序的域?qū)傩?,以防止其出現(xiàn)危害,在具體實(shí)施時(shí),可以根據(jù)負(fù)責(zé)監(jiān)控應(yīng)用程序安全性的服務(wù)端發(fā)送的域?qū)傩哉{(diào)整指令,調(diào)整第一應(yīng)用程序的域?qū)傩浴?/p>
2)可以根據(jù)預(yù)先設(shè)定的定時(shí)授權(quán)方案,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩?。例如,本?shí)施例中的第一應(yīng)用程序在某個授權(quán)時(shí)間范圍內(nèi),可以具備訪問某些應(yīng)用程序數(shù)據(jù)的特殊權(quán)利,而在非授權(quán)時(shí)間范圍內(nèi),則不具備訪問能力,相當(dāng)于回收了其特殊權(quán)利,在這種情況下可以根據(jù)預(yù)先設(shè)定的定時(shí)授權(quán)方案,動態(tài)調(diào)整第一應(yīng)用程序的域?qū)傩浴?/p>
綜上所述,本實(shí)施例提供的應(yīng)用程序數(shù)據(jù)訪問隔離方法,由于采用了基于域的、且具有層級關(guān)系的數(shù)據(jù)隔離方案,通過在不同域間設(shè)定基于層級的數(shù)據(jù)訪問規(guī)則,相當(dāng)于從多個維度實(shí)現(xiàn)數(shù)據(jù)隔離機(jī)制,能夠?yàn)閼?yīng)用程序提供合理的數(shù)據(jù)訪問權(quán)限,靈活地實(shí)現(xiàn)應(yīng)用程序之間的數(shù)據(jù)共享。特別是引入基于直接或者間接包含的父子域關(guān)系,能夠清晰的構(gòu)建樹形共享關(guān)系,滿足非對稱的應(yīng)用程序數(shù)據(jù)訪問需求。
此外,如果需要改變應(yīng)用程序之間的數(shù)據(jù)訪問關(guān)系,只需要動態(tài)調(diào)整應(yīng)用程序的域?qū)傩约纯桑啽阋仔?,從而可以滿足實(shí)際應(yīng)用中的安全性需求,并允許相同應(yīng)用程序在不同的系統(tǒng)中具有不同的數(shù)據(jù)訪問能力。
在上述的實(shí)施例中,提供了一種應(yīng)用程序數(shù)據(jù)訪問隔離方法,與之相對應(yīng)的,本申請還提供一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置。請參看圖2,其為本申請的一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置的實(shí)施例示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。
本實(shí)施例的一種應(yīng)用程序數(shù)據(jù)訪問隔離裝置,包括:訪問請求接收單元201,用于接收第一應(yīng)用程序?qū)Φ诙?yīng)用程序數(shù)據(jù)的訪問請求;權(quán)限判斷單元202,用于判斷第一應(yīng)用程序是否在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中;允許訪問單元203,用于當(dāng)所述權(quán)限判斷單元的輸出為是時(shí),允許第一應(yīng)用程序執(zhí)行訪問操作;拒絕訪問單元204,用于當(dāng)所述權(quán)限判斷單元的輸出為否時(shí),拒絕第一應(yīng)用程序執(zhí)行訪問操作。
可選的,所述裝置包括:
第一域?qū)傩栽O(shè)置單元,用于在安裝應(yīng)用程序時(shí),根據(jù)安裝包攜帶的配置信息設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述裝置包括:
第二域?qū)傩栽O(shè)置單元,用于根據(jù)預(yù)設(shè)規(guī)則預(yù)先設(shè)置應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述權(quán)限判斷單元,具體用于判斷第一應(yīng)用程序是否滿足以下數(shù)據(jù)訪問條件中的任意一項(xiàng):與第二應(yīng)用程序?qū)儆谕挥?,或者第一?yīng)用程序所屬域是第二應(yīng)用程序所屬域的子域;若是,則判定所述第一應(yīng)用程序在對第二應(yīng)用程序數(shù)據(jù)具有訪問權(quán)限的域中,否則判定不在所述域中。
可選的,所述裝置還包括在所述訪問請求接收單元之前觸發(fā)的下列單元:
應(yīng)用及組標(biāo)識分配單元,用于為各應(yīng)用程序分別分配唯一的應(yīng)用程序標(biāo)識,為預(yù)先設(shè)定的各域分別分配唯一的組,每個組具有唯一的組標(biāo)識;
數(shù)據(jù)標(biāo)識指定單元,用于為各應(yīng)用程序的數(shù)據(jù)指定相應(yīng)應(yīng)用程序所屬域?qū)?yīng)的組標(biāo)識;
應(yīng)用標(biāo)識添加單元,用于將各應(yīng)用程序標(biāo)識添加到應(yīng)用程序所屬域?qū)?yīng)的組內(nèi)、以及所屬域的父域?qū)?yīng)的組內(nèi);
所述權(quán)限判斷單元,具體用于判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi);若在,則判定所述第一應(yīng)用程序在對第二應(yīng)用程序數(shù) 據(jù)具有訪問權(quán)限的域中,否則判定不在所述域中。
可選的,所述權(quán)限判斷單元,具體用于利用linux的權(quán)限控制機(jī)制,判斷第一應(yīng)用程序的標(biāo)識是否在被訪問數(shù)據(jù)的組標(biāo)識所對應(yīng)的組內(nèi)。
可選的,所述裝置包括:
域?qū)傩詣討B(tài)調(diào)整單元,用于在所述訪問請求接收單元工作之前,動態(tài)調(diào)整第一應(yīng)用程序和/或第二應(yīng)用程序的域?qū)傩浴?/p>
可選的,所述域?qū)傩詣討B(tài)調(diào)整單元,具體用于根據(jù)接收到的域?qū)傩哉{(diào)整指令,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩?;或者,根?jù)預(yù)先設(shè)定的定時(shí)授權(quán)方案,調(diào)整相應(yīng)應(yīng)用程序的域?qū)傩浴?/p>
本申請雖然以較佳實(shí)施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。
在一個典型的配置中,計(jì)算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
1、計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件 和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。