繆 燕 孫 燕 陳曉娟 宋 偉
1(北京許繼電氣有限公司 北京 100085)2(武漢大學(xué)計(jì)算機(jī)學(xué)院 湖北 武漢 430074)
數(shù)據(jù)庫(kù)技術(shù)作為計(jì)算機(jī)系統(tǒng)軟件,一直以來(lái)都是信息系統(tǒng)中數(shù)據(jù)存儲(chǔ)的核心。傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)具備堅(jiān)實(shí)的理論基礎(chǔ)、完備的配套工具和靈活的數(shù)據(jù)表達(dá)能力,因此以關(guān)系數(shù)據(jù)庫(kù)為代表的傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)在產(chǎn)業(yè)領(lǐng)域取得了巨大成功。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)存儲(chǔ)管理變得越來(lái)越重要,無(wú)論從數(shù)據(jù)規(guī)模還是數(shù)據(jù)管理復(fù)雜度上都對(duì)數(shù)據(jù)存儲(chǔ)和管理提出了越來(lái)越高的要求。近年來(lái)數(shù)據(jù)庫(kù)已經(jīng)應(yīng)用到眾多新興應(yīng)用領(lǐng)域,如社交網(wǎng)絡(luò)、移動(dòng)數(shù)據(jù)、地理信息系統(tǒng)、圖數(shù)據(jù)管理等,各種半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的內(nèi)在特征和服務(wù)特性都使得傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)效率低下甚至無(wú)能為力。關(guān)系數(shù)據(jù)庫(kù)具有統(tǒng)一的數(shù)據(jù)存儲(chǔ)和處理規(guī)范,在管理結(jié)構(gòu)化數(shù)據(jù)方面具有優(yōu)勢(shì),但是在表達(dá)復(fù)雜語(yǔ)義方面則顯得效率低下。
面向?qū)ο竽P图懊嫦驅(qū)ο蟛僮鞯某霈F(xiàn),彌補(bǔ)了關(guān)系數(shù)據(jù)庫(kù)基于關(guān)系對(duì)象操作在復(fù)雜語(yǔ)義表達(dá)性和復(fù)雜語(yǔ)義操作方面存在的不足。但是面向?qū)ο髷?shù)據(jù)庫(kù)由于對(duì)數(shù)據(jù)對(duì)象進(jìn)行結(jié)構(gòu)化封裝,又使得對(duì)象數(shù)據(jù)庫(kù)存在數(shù)據(jù)冗余大、數(shù)據(jù)表達(dá)靈活性差等缺點(diǎn)。為克服關(guān)系數(shù)據(jù)庫(kù)和對(duì)象數(shù)據(jù)庫(kù)的不足之處,出現(xiàn)了對(duì)象關(guān)系數(shù)據(jù)庫(kù)。對(duì)象關(guān)系數(shù)據(jù)庫(kù)具有關(guān)系數(shù)據(jù)庫(kù)表達(dá)靈活、理論完備的優(yōu)勢(shì),又支持面向?qū)ο筇卣鞯臄?shù)據(jù)操作,具有語(yǔ)義表達(dá)能力強(qiáng)、數(shù)據(jù)對(duì)象存儲(chǔ)持久等諸多優(yōu)勢(shì)。
近年隨著大數(shù)據(jù)應(yīng)用的發(fā)展與普及,對(duì)象關(guān)系數(shù)據(jù)庫(kù)受到越來(lái)越廣泛的關(guān)注,知名的開源數(shù)據(jù)庫(kù)系統(tǒng)PostgreSQL就是一種對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。PostgreSQL數(shù)據(jù)庫(kù)在復(fù)雜數(shù)據(jù)管理領(lǐng)域擴(kuò)張迅速,已被廣泛應(yīng)用于地理信息系統(tǒng)、云數(shù)據(jù)庫(kù)、圖數(shù)據(jù)管理等諸多領(lǐng)域,但對(duì)于PostgreSQL的數(shù)據(jù)訪問授權(quán)管理則顯得有些滯后。
數(shù)據(jù)訪問授權(quán)是信息系統(tǒng)的基本核心功能,也是網(wǎng)絡(luò)安全等級(jí)保護(hù)的重要組成部分。傳統(tǒng)商用關(guān)系型數(shù)據(jù)庫(kù)如Oracle、SqlServer、DB2等都有一整套完備的數(shù)據(jù)訪問授權(quán)邏輯和實(shí)現(xiàn),但是在對(duì)象關(guān)系數(shù)據(jù)庫(kù)中(以最新版PostgreSQL12為例)仍沒有嚴(yán)格意義上完備的強(qiáng)制訪問控制。這給對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)在更多商業(yè)領(lǐng)域應(yīng)用造成了巨大困難。
如何基于對(duì)象關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模式和服務(wù)特點(diǎn),設(shè)計(jì)適用于對(duì)象關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)制訪問控制模型成為亟需解決的理論和應(yīng)用問題。本文以PostgreSQL為研究對(duì)象,設(shè)計(jì)并實(shí)現(xiàn)了一種對(duì)象關(guān)系數(shù)據(jù)庫(kù)環(huán)境下的強(qiáng)制訪問控制方法,該訪問控制模型實(shí)現(xiàn)了完備的強(qiáng)制訪問控制邏輯,同時(shí)支持多數(shù)據(jù)源、細(xì)粒度授權(quán)的特點(diǎn),通過在PostgreSQL12中的實(shí)驗(yàn)證明,設(shè)計(jì)的強(qiáng)制訪問控制方法具有授權(quán)訪問靈活、數(shù)據(jù)維護(hù)開銷小的優(yōu)點(diǎn)。
20世紀(jì)70年代,Bell等[1]首次提出可證明安全的強(qiáng)制訪問控制模型,稱為Bell-La Padula(BLP)模型,該模型針對(duì)操作系統(tǒng)安全,最初主要應(yīng)用于軍事安全策略實(shí)現(xiàn)。此后,為了優(yōu)化BLP模型,避免引發(fā)因使用強(qiáng)制訪問控制模型而造成的隱通道問題,國(guó)內(nèi)外的學(xué)者們提出了多級(jí)安全關(guān)系數(shù)據(jù)模型,其中包括Sea View模型[2]和Jajodia-Sandhu模型[3]等。
在BLP強(qiáng)制訪問控制模型中,實(shí)體被分為主體和客體,每個(gè)實(shí)體都被賦予了相應(yīng)的安全等級(jí)。模型通過比較主體和客體的安全等級(jí)來(lái)決定主體對(duì)客體的操作授權(quán)[4]。在BLP模型中,主體不能讀安全等級(jí)比自己高的客體,也不能寫安全等級(jí)比自己低的客體。因此,信息只能從低安全級(jí)向高安全級(jí)流動(dòng)或者在同安全級(jí)之間流動(dòng),有效防止了由低安全等級(jí)的用戶讀取高安全等級(jí)的數(shù)據(jù)造成的信息泄露。然而當(dāng)BLP模型的讀寫規(guī)則應(yīng)用在數(shù)據(jù)庫(kù)系統(tǒng)中的時(shí)候,低安全等級(jí)的用戶擁有寫高安全等級(jí)數(shù)據(jù)的權(quán)限,可能因此造成不恰當(dāng)?shù)闹貙懖僮?,給數(shù)據(jù)安全帶來(lái)隱患[5]。為此研究者們提出了改進(jìn)的BLP模型,只有當(dāng)主體的安全等級(jí)和客體的安全等級(jí)相同時(shí),主體才能對(duì)客體進(jìn)行寫操作,從而避免了低安全等級(jí)用戶對(duì)高安全等級(jí)數(shù)據(jù)重寫所造成的問題。
除此之外,為了能讓BLP模型更好地應(yīng)用于數(shù)據(jù)庫(kù)系統(tǒng),出現(xiàn)了各類改進(jìn)工作。文獻(xiàn)[6]對(duì)BLP模型進(jìn)行進(jìn)一步優(yōu)化,使其契合屬性安全值的特點(diǎn),形成一個(gè)靈活的基于屬性安全值的強(qiáng)制訪問控制模型。文獻(xiàn)[7]基于BLP模型提出了一種具有自主控制特性的強(qiáng)制訪問控制模型。文獻(xiàn)[8]從安全模型構(gòu)建入手,對(duì)智能終端的Web操作系統(tǒng)進(jìn)行抽象建模,并重定義BLP模型的元素,增強(qiáng)主客體的訪問控制以提高其機(jī)密性。
Sea View模型引入了多實(shí)例和多級(jí)關(guān)系。多實(shí)例和多級(jí)關(guān)系的存在解決了由于主鍵唯一性導(dǎo)致的隱通道問題。但因Sea View安全數(shù)據(jù)視圖模型標(biāo)識(shí)粒度較細(xì)并定義了完整性規(guī)則,這導(dǎo)致一個(gè)寫操作會(huì)產(chǎn)生多個(gè)元組,且元組個(gè)數(shù)可能達(dá)到非關(guān)鍵字屬性個(gè)數(shù)的指數(shù)級(jí),這些元組中得到屬性的產(chǎn)生是不合邏輯的。同時(shí),其多級(jí)關(guān)系存取的處理也會(huì)嚴(yán)重降低系統(tǒng)的性能。
針對(duì)Sea View安全數(shù)據(jù)視圖模型中存在的問題,Jajodia-Sandhu模型[3]重新定義了多實(shí)例完整性,并且定義了空值完整性和實(shí)例間完整性,消除了Sea View模型中的多值依賴,提高了數(shù)據(jù)安全性和完整性,并且減少了寫操作產(chǎn)生的多實(shí)例的個(gè)數(shù)。不過由于該模型中的插入和更新操作仍然會(huì)存在著一定數(shù)量的多實(shí)例[9]。此后,Sandhu等[11]又在Jajodia-Sandhu模型的基礎(chǔ)上,吸收了Sea View模型的優(yōu)點(diǎn),并引入了Simith-Winslett模型[10]中基于信任的語(yǔ)義概念,提出了MLR綜合模型。該模型提供了元素粒度的強(qiáng)制訪問控制,定義了數(shù)據(jù)借用關(guān)系,即高安全等級(jí)的主體可以從低安全級(jí)別的主體借用數(shù)據(jù),不過其控制較為復(fù)雜,在實(shí)現(xiàn)的過程中可能存在安全隱患。
此后,國(guó)內(nèi)外數(shù)據(jù)庫(kù)安全領(lǐng)域的學(xué)者們針對(duì)各種數(shù)據(jù)庫(kù)的實(shí)際安全需求進(jìn)行了大量的強(qiáng)制訪問控制研究。文獻(xiàn)[12]提出了一個(gè)安全數(shù)據(jù)庫(kù)訪問控制模型,包括一個(gè)多層關(guān)系模型和一個(gè)增強(qiáng)自主訪問控制能力的元素級(jí)粒度的授權(quán),在多層關(guān)系模型中拓展了MLR模型,使其支持了傳遞借用和多值借用。文獻(xiàn)[13]提出一種新的云計(jì)算環(huán)境中數(shù)據(jù)分布式強(qiáng)制訪問控制算法。文獻(xiàn)[14]提出一種協(xié)作環(huán)境下具有時(shí)空約束的強(qiáng)制訪問控制模型,將任務(wù)、時(shí)間、空間等要素進(jìn)行綜合考慮,既增強(qiáng)了訪問控制模型的安全性,又滿足了協(xié)作環(huán)境下訪問控制的靈活性。文獻(xiàn)[15]采用數(shù)據(jù)庫(kù)資源的染色標(biāo)記方法,提出了一種基于染色標(biāo)記的數(shù)據(jù)庫(kù)安全強(qiáng)制訪問控制體系。文獻(xiàn)[16]針對(duì)實(shí)時(shí)操作系統(tǒng)資源少、開銷小、實(shí)時(shí)性要求嚴(yán)格等特點(diǎn),提出了一種針對(duì)RTOS的輕量級(jí)強(qiáng)制訪問控制模型。文獻(xiàn)[17]基于對(duì)象代理特性提出了一個(gè)適用于TOTEM數(shù)據(jù)庫(kù)的強(qiáng)制訪問控制模型。文獻(xiàn)[18]針對(duì)SQL注入、內(nèi)部人員權(quán)限濫用等非法行為,提出可信計(jì)算環(huán)境下的數(shù)據(jù)庫(kù)強(qiáng)制行為控制(MBC)模型。
現(xiàn)有數(shù)據(jù)庫(kù)安全訪問控制研究重點(diǎn)側(cè)重關(guān)系數(shù)據(jù)庫(kù)環(huán)境中的數(shù)據(jù)授權(quán)訪問,但是并沒有考慮到對(duì)象關(guān)系數(shù)據(jù)庫(kù)給數(shù)據(jù)授權(quán)帶來(lái)的新問題,如數(shù)據(jù)對(duì)象之間的繼承關(guān)系、數(shù)據(jù)對(duì)象的溯源操作帶來(lái)的隱私泄露問題等。因此需要提出一種安全、實(shí)用的強(qiáng)制訪問控制邏輯和實(shí)現(xiàn)機(jī)制,以滿足目前對(duì)于對(duì)象關(guān)系數(shù)據(jù)庫(kù)的巨大應(yīng)用需求。
現(xiàn)有對(duì)象關(guān)系數(shù)據(jù)庫(kù)的自主訪問控制安全性能有限,在實(shí)際應(yīng)用場(chǎng)景中也存在授權(quán)機(jī)制不靈活的限制?,F(xiàn)有對(duì)象關(guān)系數(shù)據(jù)庫(kù)訪問控制機(jī)制存在權(quán)限管理不當(dāng),可能引發(fā)秘密數(shù)據(jù)泄露,在很多方面也存在安全隱患,并且粗粒度的訪問控制也缺乏靈活性。目前的對(duì)象關(guān)系數(shù)據(jù)庫(kù)訪問控制中,可以進(jìn)行訪問控制的數(shù)據(jù)庫(kù)對(duì)象的最小粒度是類,因此在PostgreSQL中使用訪問控制列表無(wú)法限制數(shù)據(jù)庫(kù)用戶對(duì)數(shù)據(jù)庫(kù)列級(jí)對(duì)象和行級(jí)對(duì)象的訪問,使得PostgreSQL的訪問控制機(jī)制并不能滿足實(shí)際應(yīng)用中細(xì)粒度訪問控制的需求。
在對(duì)象關(guān)系數(shù)據(jù)庫(kù)實(shí)際應(yīng)用中,用戶會(huì)根據(jù)不同的使用目的,生成不同類型的繼承類,包括SELECTED選擇型繼承類、JOIN連接型繼承類、UNION合并型繼承類和GROUP分組型繼承類。其中對(duì)于擁有多個(gè)數(shù)據(jù)源(即源類)的繼承類,僅僅只在其屬性上分配一個(gè)統(tǒng)一的安全標(biāo)簽可能會(huì)造成部分源類的數(shù)據(jù)無(wú)法通過繼承類被合法用戶訪問的問題。為了讓基于對(duì)象關(guān)系特性的強(qiáng)制訪問控制模型為多源繼承類提供更為方便靈活的訪問控制,本文針對(duì)多源繼承類在理論和實(shí)際應(yīng)用方面的特性,從更細(xì)的粒度上探討了各種繼承類中屬性級(jí)對(duì)象的安全等級(jí)管理,并在此基礎(chǔ)上闡述繼承類上細(xì)粒度訪問控制的過程。
為方便描述訪問控制規(guī)則及介紹對(duì)象安全等級(jí)管理方法,表1列出了本文中使用的符號(hào)及其意義。
表1 正文符號(hào)表及意義
在詳細(xì)介紹對(duì)象關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)制訪問控制規(guī)則之前,先對(duì)用到的基本概念進(jìn)行定義。
(1) 安全級(jí)別序列。安全級(jí)別序列是一個(gè)有n個(gè)元素的有序序列,用SL=(sl1,sl2,…,sln)表示,其中sli(i=1,2,…,n)表示第i個(gè)元素,對(duì)于任意兩個(gè)元素sli和slj,若i (2) 類別范圍集合。類別范圍集合是一個(gè)有m個(gè)元素的集合,用CR={cr1,cr2,…,crm}表示,其中cri(i=1,2,…,m)表示第i個(gè)元素,對(duì)于任意兩個(gè)元素cri和crj,若i≠j,則有cri≠crj。 (3) 安全標(biāo)簽。一個(gè)安全標(biāo)簽SecL由一個(gè)安全級(jí)別元素和一個(gè)類別范圍集合組成,表示為SecL=sl:cr,其中sl∈SL為安全級(jí)別序列SL中的一個(gè)元素,cr為空集或者類別范圍集合CR中的一個(gè)或多個(gè)元素的集合。數(shù)據(jù)庫(kù)對(duì)象的安全標(biāo)簽表示為SecLobj=SLobj:CRobj,請(qǐng)求訪問數(shù)據(jù)庫(kù)對(duì)象的主體的安全標(biāo)簽表示為SecLsub=SLsub:CRsub。 (4) 安全等級(jí)。數(shù)據(jù)庫(kù)對(duì)象的安全等級(jí)由數(shù)據(jù)庫(kù)對(duì)象的安全標(biāo)簽來(lái)體現(xiàn)。對(duì)于數(shù)據(jù)庫(kù)對(duì)象obj1和obj2,obj1的安全標(biāo)簽SecLobj1表示為SLobj1:CRobj1,obj2的安全標(biāo)簽SecLobj2表示為SLobj2:CRobj2。當(dāng)且僅當(dāng)SLobj1>SLobj2且CRobj1?CRobj2,認(rèn)為obj1的安全等級(jí)高于obj2的安全等級(jí);當(dāng)且僅當(dāng)SLobj1=SLobj2且CRobj1=CRobj2時(shí),認(rèn)為obj1的安全等級(jí)等obj2的安全等級(jí)。 (5) 源類。對(duì)象關(guān)系數(shù)據(jù)庫(kù)中存在著繼承關(guān)系,即通過特定的繼承規(guī)則從源類繼承部分或全部屬性值,這里的源類就是繼承類中部分屬性的數(shù)據(jù)源。一個(gè)繼承類可以有一個(gè)或多個(gè)源類,一個(gè)繼承類的n個(gè)源類用集合SC表示,SC={SCi|i=1,2,…,n}。 (6) 繼承類。繼承類中必定會(huì)有虛屬性,即根據(jù)規(guī)則從源類中繼承的屬性,這些屬性的內(nèi)容并未實(shí)際存儲(chǔ)。同時(shí)繼承類中也可以新增屬性,這些屬性為繼承類中實(shí)際存儲(chǔ)的實(shí)屬性,繼承類中的實(shí)屬性個(gè)數(shù)可為0個(gè)或若干個(gè)。繼承類用IC表示,繼承類的第i個(gè)虛屬性表示為IC.vai,繼承類的第j個(gè)實(shí)屬性表示為IC.raj,則繼承類的安全標(biāo)簽表示為SecLIC=SLIC:CRIC,繼承類的第i個(gè)虛屬性的安全標(biāo)簽表示為SecLIC.vai=SLIC.vai:CRIC.vai,繼承類的第j個(gè)實(shí)屬性的安全標(biāo)簽表示為SecLIC.raj=SLICIC.raj:CRIC.raj。 (7) UNION繼承類。UNION繼承類合并了若干個(gè)源類中共有屬性的選擇型繼承結(jié)果,用UIC表示,那么代表其安全等級(jí)的安全標(biāo)簽表示為SecLUIC=SLUIC:CRUIC。 對(duì)象關(guān)系數(shù)據(jù)庫(kù)強(qiáng)制訪問控制的安全模型主要基于BLP(Bell-La Padula)安全模型,該模型如圖1所示。數(shù)據(jù)庫(kù)系統(tǒng)中的每一個(gè)數(shù)據(jù)庫(kù)對(duì)象都被分配一個(gè)安全標(biāo)簽,這個(gè)安全標(biāo)簽反映了數(shù)據(jù)庫(kù)對(duì)象的安全等級(jí)。數(shù)據(jù)庫(kù)中除了數(shù)據(jù)庫(kù)、源類、繼承類等數(shù)據(jù)庫(kù)對(duì)象被分配了安全標(biāo)簽外,源類的實(shí)屬性、繼承類的虛屬性和實(shí)屬性也被分配了安全標(biāo)簽。同時(shí),對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作和訪問的主體也被授予了一個(gè)安全標(biāo)簽。當(dāng)主體訪問數(shù)據(jù)庫(kù)對(duì)象時(shí),需要比較二者的安全標(biāo)簽是否符合主體訪問數(shù)據(jù)庫(kù)對(duì)象管理規(guī)則。 圖1 對(duì)象關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)制訪問安全模型 在對(duì)象關(guān)系數(shù)據(jù)庫(kù)中,具有多個(gè)源類的繼承類有兩種,分別是UNION繼承類和JOIN繼承類。其中,UNION繼承類存在著類中不同實(shí)例的同一屬性內(nèi)容來(lái)源于多個(gè)源類中對(duì)應(yīng)屬性的內(nèi)容。下面將結(jié)合具體的例子說(shuō)明這種多源類繼承類上在進(jìn)行強(qiáng)制訪問控制時(shí)可能出現(xiàn)的問題。 假設(shè)音樂網(wǎng)站的數(shù)據(jù)庫(kù)中有兩個(gè)基本類,命名為vipmusic和freemusic,分別存儲(chǔ)付費(fèi)歌曲和免費(fèi)歌曲的信息。其中,vipmusic類和freemusic類中共有的屬性有編號(hào)number、歌名name、歌手singer和歌曲音頻內(nèi)容context,不過付費(fèi)歌曲的音頻內(nèi)容只有在用戶付費(fèi)成為會(huì)員后才能聽到,免費(fèi)的歌曲音頻內(nèi)容普通用戶和會(huì)員都可以聽到。為了方便在音樂網(wǎng)站的構(gòu)建中對(duì)歌曲共有的屬性信息進(jìn)行統(tǒng)一的獲取和處理,需要構(gòu)建一個(gè)提供所有歌曲信息的更抽象的類。UNION繼承類便可以滿足這個(gè)需求,將vipmusic和freemusic兩個(gè)基本類作為源類,創(chuàng)建一個(gè)名為music的UNION繼承類,如圖2所示。 圖2 UNION繼承類中多數(shù)據(jù)源屬性示例 那么通過直接對(duì)UNION繼承類music進(jìn)行查詢即可得到所有歌曲共有屬性的信息。music類中繼承自源類的屬性均為虛屬性,其擴(kuò)展定義的屬性comment為實(shí)屬性,表示網(wǎng)站用戶對(duì)歌曲的評(píng)論,其中music類中所有實(shí)例的虛屬性內(nèi)容都不是實(shí)際存儲(chǔ)在本地的,而是通過訪問源類vipmusic和freemusic中對(duì)應(yīng)屬性的內(nèi)容而得到的,實(shí)屬性的內(nèi)容是實(shí)際存儲(chǔ)在本地的。 假設(shè)源類vipmusic中,除了表示歌曲音頻內(nèi)容的context屬性之外的所有屬性安全級(jí)別為sl1,例如SLvipmusic.name=sl1,而context屬性的安全級(jí)別為sl5,即SLvipmusic.context=sl5。源類freemusic中,所有屬性的安全級(jí)別均為sl1,例如SLfreemusic.name=sl1,SLfreemusic.context=sl1。若UNION繼承類music的安全級(jí)別也為sl1,那么有music中除context屬性的以外的所有屬性的安全級(jí)別為sl1,context屬性安全級(jí)別為sl5。對(duì)于context外的其他屬性,顯然能訪問源類中這些屬性內(nèi)容的用戶也能通過UNION繼承類music訪問到這些屬性內(nèi)容。然而,只有安全級(jí)別大于等于sl5的用戶才可以通過music同時(shí)訪問到兩個(gè)源類中context屬性的內(nèi)容。安全級(jí)別為sl1、sl2、sl3和sl4的用戶可以訪問源類freemusic中的context屬性內(nèi)容,卻無(wú)法通過繼承類music而訪問到源類freemusic中的context屬性內(nèi)容。因此,可以看到UNION繼承類上的強(qiáng)制訪問控制在某些情況下阻止了部分擁有源類數(shù)據(jù)訪問權(quán)限的用戶通過UNION繼承類訪問源類數(shù)據(jù),從而影響了UNION繼承類在實(shí)際條件下的使用。 為了解決多源類繼承類中多數(shù)據(jù)源虛屬性的內(nèi)容在強(qiáng)制訪問控制模型中的訪問受限問題,本文設(shè)計(jì)了多數(shù)據(jù)源虛屬性的安全等級(jí)細(xì)化方法,為多源類繼承類上靈活的細(xì)粒度訪問控制提供支持。 對(duì)于一個(gè)UNION繼承類UIC,其有m個(gè)源類SC={SCi|i=1,2,…,m},UIC有從這m個(gè)源類中繼承的n個(gè)虛屬性va={vaj|j=1,2,…,n}。這些虛屬性都是擁有多個(gè)數(shù)據(jù)源的虛屬性,且每個(gè)虛屬性的數(shù)據(jù)源為m個(gè)源類中與這個(gè)虛屬性相對(duì)應(yīng)的屬性。 任一虛屬性va的安全標(biāo)簽只有一個(gè),表示為SecLUIC.va=SLUIC.va:CRUIC.va,其中SLUIC.va為va的安全級(jí)別,CRUIC.va為va的類別范圍,該安全標(biāo)簽代表了va的安全等級(jí)。因此,UNION繼承類虛屬性va在所有UIC實(shí)例中對(duì)應(yīng)內(nèi)容都由同一個(gè)安全標(biāo)簽SecLUIC.va來(lái)進(jìn)行訪問控制。 為了支持多源類繼承類UIC中多數(shù)據(jù)源屬性上的細(xì)粒度訪問控制,設(shè)計(jì)了UIC虛屬性的安全等級(jí)細(xì)化方法,使得同一屬性中來(lái)自不同數(shù)據(jù)源的屬性內(nèi)容擁有各自的安全等級(jí)。其具體表現(xiàn)為:對(duì)于有m個(gè)源類的UIC中的任一虛屬性va,設(shè)置一個(gè)安全標(biāo)簽集SecLUIC.va,該安全標(biāo)簽集合中默認(rèn)有m個(gè)安全標(biāo)簽,va中從一個(gè)源類繼承的屬性內(nèi)容與一個(gè)安全標(biāo)簽對(duì)應(yīng)。UIC虛屬性va安全等級(jí)的細(xì)化實(shí)際上就是將UIC所有實(shí)例的va屬性內(nèi)容根據(jù)數(shù)據(jù)源進(jìn)行劃分,并為來(lái)自不同數(shù)據(jù)源的屬性內(nèi)容分配與之對(duì)應(yīng)的安全標(biāo)簽。 1) 虛屬性va按數(shù)據(jù)源劃分。 由UIC類實(shí)例的介紹可知,UNION繼承類中的所有類實(shí)例集合表示為TUIC,將TUIC按照實(shí)例對(duì)應(yīng)源類實(shí)例所屬類的不同進(jìn)行劃分,可以得到: 2) 虛屬性va多安全標(biāo)簽分配。 對(duì)TUIC.va中包含的其他m-1個(gè)分組,都按照相同的方法為其分配安全標(biāo)簽,可以得到UIC中虛屬性va的安全標(biāo)簽集合為: 各個(gè)安全標(biāo)簽和虛屬性va按數(shù)據(jù)源進(jìn)行劃分后的各個(gè)分組為一一對(duì)應(yīng)關(guān)系。 為了進(jìn)一步說(shuō)明多源類繼承類中虛屬性的安全等級(jí)細(xì)化方法,下面將結(jié)合實(shí)際的例子對(duì)安全等級(jí)細(xì)化方法進(jìn)行具體的介紹。此處同樣以圖2的UNION繼承類music為例,對(duì)于其中的虛屬性context,由于其內(nèi)容繼承自兩個(gè)源類,因此context的屬性內(nèi)容可以劃分為兩組,分組結(jié)果表示為: 為每個(gè)分組分配安全標(biāo)簽以表示來(lái)自數(shù)據(jù)源的屬性內(nèi)容的安全等級(jí),由于此例中各級(jí)對(duì)象的類別范圍CR均未設(shè)置,因此安全標(biāo)簽的內(nèi)容只需考慮安全級(jí)別SL,則有: 經(jīng)過以上處理的UNION繼承類中context虛屬性的安全標(biāo)簽由之前的單一安全標(biāo)簽變成了一個(gè)安全標(biāo)簽集合,圖3直觀地展現(xiàn)了music繼承類中虛屬性context安全等級(jí)細(xì)化后的結(jié)果。 圖3 多數(shù)據(jù)源屬性安全等級(jí)細(xì)化示例 通過對(duì)同一虛屬性中來(lái)自不同源類的屬性內(nèi)容進(jìn)行劃分并添加安全標(biāo)簽,多源類繼承類UIC中同一虛屬性繼承自不同數(shù)據(jù)源的屬性內(nèi)容以分組為單位擁有了各自的安全標(biāo)簽,從而實(shí)現(xiàn)了多源類繼承類中虛屬性的安全等級(jí)細(xì)化。 當(dāng)數(shù)據(jù)庫(kù)用戶企圖訪問UNION繼承類中的虛屬性va中的部分屬性內(nèi)容時(shí),細(xì)粒度訪問控制機(jī)制可以通過獲取待訪問屬性內(nèi)容對(duì)應(yīng)的一個(gè)或者多個(gè)安全標(biāo)簽進(jìn)行更為具體的訪問控制。其具體過程為: (1) 獲取請(qǐng)求訪問多源類繼承類的用戶的安全標(biāo)簽SecLsub,得到其安全級(jí)別SLsub和類別范圍CRsub。 (7) 在初步訪問結(jié)果PreResva中屬性va的所有屬性值都經(jīng)過以上判斷后,若PreResva=?,則不返回任何va屬性內(nèi)容給用戶。否則,將初步訪問結(jié)果PreResva中剩余的屬性內(nèi)容作為最終訪問結(jié)果返回給用戶。 為了進(jìn)一步說(shuō)明多源類繼承類中的細(xì)粒度訪問控制機(jī)制,下面同樣將結(jié)合圖3中已進(jìn)行虛屬性安全等級(jí)細(xì)化的UNION繼承類music為例,對(duì)多源類繼承類中進(jìn)行細(xì)粒度訪問控制的流程和方法進(jìn)行介紹。 假設(shè)音樂網(wǎng)站上有一普通用戶user,并且該普通用戶的安全標(biāo)簽為SecLuser=SLuser:CRuser,其中安全級(jí)別SLuser的內(nèi)容為sl3,CRuser的內(nèi)容默認(rèn)為空。用戶user請(qǐng)求訪問UNION繼承類music中歌曲名字包含“晴天”的歌曲內(nèi)容。則采用細(xì)粒度訪問控制機(jī)制對(duì)用戶user的訪問請(qǐng)求進(jìn)行控制的流程如下: 對(duì)初步訪問結(jié)果PreRescontext中的context虛屬性內(nèi)容依次進(jìn)行訪問權(quán)限判定后,PreRescontext={r18.context,r57.context}表示初步訪問結(jié)果經(jīng)過訪問權(quán)限篩選后僅剩下music繼承類中第18個(gè)實(shí)例和第57個(gè)實(shí)例中的context屬性內(nèi)容。最后,將PreRescontext作為訪問結(jié)果返回給用戶user。 由以上介紹可知,多源類繼承類中屬性級(jí)對(duì)象的強(qiáng)制訪問控制可以細(xì)化到具體的屬性內(nèi)容,用戶可以訪問在多數(shù)據(jù)源屬性中其安全等級(jí)可以訪問到的所有數(shù)據(jù),而屬性上安全等級(jí)高于用戶安全等級(jí)的屬性內(nèi)容則不會(huì)包含在用戶的訪問結(jié)果中,從而很好地避免了多數(shù)據(jù)源屬性上單一安全標(biāo)簽導(dǎo)致的用戶訪問受限的問題,實(shí)現(xiàn)了多源類繼承類上的細(xì)粒度訪問控制。 在多源數(shù)據(jù)上進(jìn)行細(xì)粒度的訪問控制是為了在保證數(shù)據(jù)安全的前提下,最大限度地提高多源類數(shù)據(jù)中各虛屬性內(nèi)容的可用性。為了實(shí)現(xiàn)這一目的,本文提出了基于多源數(shù)據(jù)的安全等級(jí)細(xì)化方法。該方法考慮到對(duì)象繼承數(shù)據(jù)庫(kù)中的主體是通過訪問繼承類中的虛屬性而得到源類中對(duì)應(yīng)屬性內(nèi)容的,因此若要對(duì)繼承類中的虛屬性進(jìn)行粒度更細(xì)的訪問控制,需要對(duì)繼承類的虛屬性內(nèi)容根據(jù)其繼承數(shù)據(jù)所在的源類的不同而進(jìn)行分組,并為繼承自不同源類的數(shù)據(jù)分組分配相應(yīng)的安全標(biāo)簽,從而實(shí)現(xiàn)對(duì)多源類繼承類中同一虛屬性中來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)分別進(jìn)行互相獨(dú)立的訪問權(quán)限判斷。由于訪問權(quán)限的判斷完全是基于用戶的安全標(biāo)簽和屬性內(nèi)容安全標(biāo)簽的比較的,所以同一虛屬性中各個(gè)內(nèi)容分組安全標(biāo)簽的設(shè)定將直接決定細(xì)粒度訪問控制的安全性。 SLsub≥SLSCi.a且CRsub?CRSCi.a SLsub≥SLUIC且CRsub?CRUIC 可以看出,用戶sub的安全等級(jí)大于等于SCi中a屬性的安全等級(jí),即具備SCi中a屬性的訪問權(quán)限,并且用戶sub的安全等級(jí)大于等于va所在的繼承類UIC的安全等級(jí),即具備了UIC的訪問權(quán)限。 由以上推理可得,按照基于多源數(shù)據(jù)的安全等級(jí)細(xì)化方法處理得到的虛屬性安全標(biāo)簽集合中,同一虛屬性中繼承了不同源類對(duì)應(yīng)屬性的內(nèi)容分組的安全標(biāo)簽和其各自對(duì)應(yīng)的源類屬性的安全標(biāo)簽存在著緊密聯(lián)系,以此可以通過判定用戶對(duì)虛屬性中各個(gè)內(nèi)容分組的訪問權(quán)限來(lái)控制用戶對(duì)源類屬性內(nèi)容的訪問,從而實(shí)現(xiàn)安全的細(xì)粒度強(qiáng)制訪問控制。 實(shí)驗(yàn)在一臺(tái)主頻為4.00 GHz、內(nèi)存為8 GB的PC機(jī)上進(jìn)行,實(shí)驗(yàn)平臺(tái)操作系統(tǒng)為Redhat 6.5。實(shí)驗(yàn)數(shù)據(jù)集選用開源音樂數(shù)據(jù)集Million Song Dataset。 基于PostgreSQL12實(shí)現(xiàn)了本文提出的支持多數(shù)據(jù)源、細(xì)粒度授權(quán)的強(qiáng)制訪問控制模型,對(duì)該方法進(jìn)行效率評(píng)估。目前還沒有一種針對(duì)對(duì)象關(guān)系數(shù)據(jù)庫(kù)的多源細(xì)粒度授權(quán)的訪問控制模型實(shí)現(xiàn),因此將本文改進(jìn)的系統(tǒng)(PostgreSQL12+)與PostgreSQL12系統(tǒng)的訪問控制功能進(jìn)行比較。實(shí)驗(yàn)選用10個(gè)類,10 000條數(shù)據(jù),并逐漸增大數(shù)據(jù)規(guī)模進(jìn)行數(shù)據(jù)隨機(jī)授權(quán)、隨機(jī)撤銷授權(quán)、查詢和更新操作,通過統(tǒng)計(jì)分析PostgreSQL12系統(tǒng)執(zhí)行時(shí)間和本文改進(jìn)系統(tǒng)(PostgreSQL12+)在執(zhí)行時(shí)間上的差異,對(duì)設(shè)計(jì)的細(xì)粒度強(qiáng)制訪問模型給PostgreSQL12系統(tǒng)帶來(lái)的性能影響進(jìn)行分析。 首先對(duì)授權(quán)效率進(jìn)行對(duì)比分析,結(jié)果如圖4所示??梢钥闯?,在10 000條數(shù)據(jù)里依次隨機(jī)授權(quán)100~1 000條數(shù)據(jù)給指定用戶,PostgreSQL12+在執(zhí)行數(shù)據(jù)授權(quán)操作時(shí)所用的時(shí)間小于未使用強(qiáng)制訪問控制模型的PostgreSQL12系統(tǒng)執(zhí)行相同操作時(shí)所用的時(shí)間。這是由于強(qiáng)制訪問控制模型通過細(xì)粒度授權(quán)規(guī)則優(yōu)化了隨機(jī)授權(quán)方式,在一定程度上減小了隨機(jī)授權(quán)操作的時(shí)間開銷,使得PostgreSQL12+數(shù)據(jù)庫(kù)授權(quán)訪問更加靈活。 圖4 隨機(jī)授權(quán)操作執(zhí)行時(shí)間對(duì)比圖 實(shí)驗(yàn)分析了撤銷不同規(guī)模數(shù)據(jù)的時(shí)間開銷,結(jié)果如圖5所示??梢钥闯?,在授權(quán)10 000條數(shù)據(jù)給用戶后依次隨機(jī)撤銷100~1 000條數(shù)據(jù)的授權(quán),PostgreSQL12+在執(zhí)行數(shù)據(jù)撤銷授權(quán)操作時(shí)所用的時(shí)間小于未使用強(qiáng)制訪問控制模型的PostgreSQL12系統(tǒng)執(zhí)行相同操作時(shí)所用的時(shí)間,但相對(duì)而言,強(qiáng)制訪問控制模型對(duì)執(zhí)行隨機(jī)撤銷授權(quán)操作的影響要更大于其對(duì)隨機(jī)授權(quán)操作的影響。這和系統(tǒng)執(zhí)行隨機(jī)授權(quán)和隨機(jī)撤銷授權(quán)操作本身用時(shí)有一定關(guān)系,同時(shí)由于強(qiáng)制訪問控制模型使用基于多源數(shù)據(jù)的安全等級(jí)細(xì)化方法,在較大程度上減小了時(shí)間開銷,使得PostgreSQL12+數(shù)據(jù)庫(kù)的撤銷授權(quán)操作更加高效。 圖5 隨機(jī)撤銷授權(quán)操作執(zhí)行時(shí)間對(duì)比圖 通過上述實(shí)驗(yàn)分析可見,本文方法可以獲得更好的授權(quán)、撤銷權(quán)限效率,同時(shí)作為數(shù)據(jù)庫(kù)的訪問控制授權(quán)策略,也需要衡量其是否會(huì)對(duì)數(shù)據(jù)庫(kù)查詢本身產(chǎn)生影響。 設(shè)計(jì)實(shí)驗(yàn)分析PostgreSQL12+的數(shù)據(jù)查詢效率,結(jié)果如圖6所示??梢钥闯觯?0個(gè)類上進(jìn)行查詢操作,對(duì)應(yīng)的數(shù)據(jù)量分別為1 000~10 000條記錄,PostgreSQL12+在執(zhí)行用戶查詢請(qǐng)求時(shí)所用的時(shí)間略大于PostgreSQL12系統(tǒng)執(zhí)行用戶查詢請(qǐng)求所用時(shí)間,并且隨著數(shù)據(jù)規(guī)模的增大,消耗的時(shí)間也越多。因此可見強(qiáng)制訪問控制模型對(duì)PostgreSQL12系統(tǒng)的查詢性能是有一定影響的。究其原因,主要是對(duì)類中的各個(gè)屬性上的數(shù)據(jù)進(jìn)行查詢時(shí),均需要通過調(diào)用強(qiáng)制訪問控制的模塊進(jìn)行處理,強(qiáng)制訪問控制的模塊對(duì)各個(gè)屬性進(jìn)行了訪問權(quán)限判定后才能繼續(xù)查詢執(zhí)行操作,造成了一定的時(shí)間延遲。但同時(shí)強(qiáng)制訪問控制模型在保證數(shù)據(jù)安全的前提下,最大限度地提高多源類數(shù)據(jù)中各虛屬性內(nèi)容的可用性,改善了PostgreSQL12系統(tǒng)的性能。 圖6 查詢操作執(zhí)行時(shí)間對(duì)比圖 綜合以上實(shí)驗(yàn)可以看出,本文設(shè)計(jì)的強(qiáng)制訪問控制模型雖然在很小的程度上會(huì)降低PostgreSQL12數(shù)據(jù)庫(kù)的查詢效率,但是其也賦予PostgreSQL12數(shù)據(jù)庫(kù)授權(quán)訪問靈活、時(shí)間開銷小等優(yōu)點(diǎn),是一種實(shí)用的對(duì)象關(guān)系數(shù)據(jù)庫(kù)訪問控制解決方案。 本文設(shè)計(jì)了一種對(duì)象關(guān)系數(shù)據(jù)庫(kù)環(huán)境下的強(qiáng)制訪問控制模型,該模型適用于多數(shù)據(jù)源細(xì)粒度訪問授權(quán),提高了對(duì)象關(guān)系數(shù)據(jù)庫(kù)在多數(shù)據(jù)源上進(jìn)行強(qiáng)制訪問控制的靈活性,降低了數(shù)據(jù)庫(kù)授權(quán)及撤銷授權(quán)的時(shí)間開銷。在PostgreSQL12上的實(shí)驗(yàn)表明該方法可以很好地為對(duì)象關(guān)系數(shù)據(jù)庫(kù)提供靈活高效的強(qiáng)制訪問控制。2.2 強(qiáng)制訪問控制安全模型
2.3 基于多源數(shù)據(jù)的安全等級(jí)細(xì)化方法
2.4 細(xì)粒度訪問控制機(jī)制
2.5 安全性分析
3 實(shí) 驗(yàn)
3.1 實(shí)驗(yàn)環(huán)境
3.2 實(shí)驗(yàn)方案設(shè)計(jì)
3.3 用戶授權(quán)實(shí)驗(yàn)分析
3.4 用戶撤銷授權(quán)實(shí)驗(yàn)分析
3.5 數(shù)據(jù)查詢實(shí)驗(yàn)分析
3.6 實(shí)驗(yàn)結(jié)果分析
4 結(jié) 語(yǔ)