繆 燕 孫 燕 陳曉娟 宋 偉
1(北京許繼電氣有限公司 北京 100085)2(武漢大學計算機學院 湖北 武漢 430074)
數據庫技術作為計算機系統軟件,一直以來都是信息系統中數據存儲的核心。傳統關系數據庫具備堅實的理論基礎、完備的配套工具和靈活的數據表達能力,因此以關系數據庫為代表的傳統數據庫系統在產業領域取得了巨大成功。
隨著計算機技術的發展,數據存儲管理變得越來越重要,無論從數據規模還是數據管理復雜度上都對數據存儲和管理提出了越來越高的要求。近年來數據庫已經應用到眾多新興應用領域,如社交網絡、移動數據、地理信息系統、圖數據管理等,各種半結構化、非結構化數據的內在特征和服務特性都使得傳統關系型數據庫效率低下甚至無能為力。關系數據庫具有統一的數據存儲和處理規范,在管理結構化數據方面具有優勢,但是在表達復雜語義方面則顯得效率低下。
面向對象模型及面向對象操作的出現,彌補了關系數據庫基于關系對象操作在復雜語義表達性和復雜語義操作方面存在的不足。但是面向對象數據庫由于對數據對象進行結構化封裝,又使得對象數據庫存在數據冗余大、數據表達靈活性差等缺點。為克服關系數據庫和對象數據庫的不足之處,出現了對象關系數據庫。對象關系數據庫具有關系數據庫表達靈活、理論完備的優勢,又支持面向對象特征的數據操作,具有語義表達能力強、數據對象存儲持久等諸多優勢。
近年隨著大數據應用的發展與普及,對象關系數據庫受到越來越廣泛的關注,知名的開源數據庫系統PostgreSQL就是一種對象關系數據庫系統。PostgreSQL數據庫在復雜數據管理領域擴張迅速,已被廣泛應用于地理信息系統、云數據庫、圖數據管理等諸多領域,但對于PostgreSQL的數據訪問授權管理則顯得有些滯后。
數據訪問授權是信息系統的基本核心功能,也是網絡安全等級保護的重要組成部分。傳統商用關系型數據庫如Oracle、SqlServer、DB2等都有一整套完備的數據訪問授權邏輯和實現,但是在對象關系數據庫中(以最新版PostgreSQL12為例)仍沒有嚴格意義上完備的強制訪問控制。這給對象關系數據庫系統在更多商業領域應用造成了巨大困難。
如何基于對象關系數據庫的數據模式和服務特點,設計適用于對象關系數據庫的強制訪問控制模型成為亟需解決的理論和應用問題。本文以PostgreSQL為研究對象,設計并實現了一種對象關系數據庫環境下的強制訪問控制方法,該訪問控制模型實現了完備的強制訪問控制邏輯,同時支持多數據源、細粒度授權的特點,通過在PostgreSQL12中的實驗證明,設計的強制訪問控制方法具有授權訪問靈活、數據維護開銷小的優點。
20世紀70年代,Bell等[1]首次提出可證明安全的強制訪問控制模型,稱為Bell-La Padula(BLP)模型,該模型針對操作系統安全,最初主要應用于軍事安全策略實現。此后,為了優化BLP模型,避免引發因使用強制訪問控制模型而造成的隱通道問題,國內外的學者們提出了多級安全關系數據模型,其中包括Sea View模型[2]和Jajodia-Sandhu模型[3]等。
在BLP強制訪問控制模型中,實體被分為主體和客體,每個實體都被賦予了相應的安全等級。模型通過比較主體和客體的安全等級來決定主體對客體的操作授權[4]。在BLP模型中,主體不能讀安全等級比自己高的客體,也不能寫安全等級比自己低的客體。因此,信息只能從低安全級向高安全級流動或者在同安全級之間流動,有效防止了由低安全等級的用戶讀取高安全等級的數據造成的信息泄露。然而當BLP模型的讀寫規則應用在數據庫系統中的時候,低安全等級的用戶擁有寫高安全等級數據的權限,可能因此造成不恰當的重寫操作,給數據安全帶來隱患[5]。為此研究者們提出了改進的BLP模型,只有當主體的安全等級和客體的安全等級相同時,主體才能對客體進行寫操作,從而避免了低安全等級用戶對高安全等級數據重寫所造成的問題。
除此之外,為了能讓BLP模型更好地應用于數據庫系統,出現了各類改進工作。文獻[6]對BLP模型進行進一步優化,使其契合屬性安全值的特點,形成一個靈活的基于屬性安全值的強制訪問控制模型。文獻[7]基于BLP模型提出了一種具有自主控制特性的強制訪問控制模型。文獻[8]從安全模型構建入手,對智能終端的Web操作系統進行抽象建模,并重定義BLP模型的元素,增強主客體的訪問控制以提高其機密性。
Sea View模型引入了多實例和多級關系。多實例和多級關系的存在解決了由于主鍵唯一性導致的隱通道問題。但因Sea View安全數據視圖模型標識粒度較細并定義了完整性規則,這導致一個寫操作會產生多個元組,且元組個數可能達到非關鍵字屬性個數的指數級,這些元組中得到屬性的產生是不合邏輯的。同時,其多級關系存取的處理也會嚴重降低系統的性能。
針對Sea View安全數據視圖模型中存在的問題,Jajodia-Sandhu模型[3]重新定義了多實例完整性,并且定義了空值完整性和實例間完整性,消除了Sea View模型中的多值依賴,提高了數據安全性和完整性,并且減少了寫操作產生的多實例的個數。不過由于該模型中的插入和更新操作仍然會存在著一定數量的多實例[9]。此后,Sandhu等[11]又在Jajodia-Sandhu模型的基礎上,吸收了Sea View模型的優點,并引入了Simith-Winslett模型[10]中基于信任的語義概念,提出了MLR綜合模型。該模型提供了元素粒度的強制訪問控制,定義了數據借用關系,即高安全等級的主體可以從低安全級別的主體借用數據,不過其控制較為復雜,在實現的過程中可能存在安全隱患。
此后,國內外數據庫安全領域的學者們針對各種數據庫的實際安全需求進行了大量的強制訪問控制研究。文獻[12]提出了一個安全數據庫訪問控制模型,包括一個多層關系模型和一個增強自主訪問控制能力的元素級粒度的授權,在多層關系模型中拓展了MLR模型,使其支持了傳遞借用和多值借用。文獻[13]提出一種新的云計算環境中數據分布式強制訪問控制算法。文獻[14]提出一種協作環境下具有時空約束的強制訪問控制模型,將任務、時間、空間等要素進行綜合考慮,既增強了訪問控制模型的安全性,又滿足了協作環境下訪問控制的靈活性。文獻[15]采用數據庫資源的染色標記方法,提出了一種基于染色標記的數據庫安全強制訪問控制體系。文獻[16]針對實時操作系統資源少、開銷小、實時性要求嚴格等特點,提出了一種針對RTOS的輕量級強制訪問控制模型。文獻[17]基于對象代理特性提出了一個適用于TOTEM數據庫的強制訪問控制模型。文獻[18]針對SQL注入、內部人員權限濫用等非法行為,提出可信計算環境下的數據庫強制行為控制(MBC)模型。
現有數據庫安全訪問控制研究重點側重關系數據庫環境中的數據授權訪問,但是并沒有考慮到對象關系數據庫給數據授權帶來的新問題,如數據對象之間的繼承關系、數據對象的溯源操作帶來的隱私泄露問題等。因此需要提出一種安全、實用的強制訪問控制邏輯和實現機制,以滿足目前對于對象關系數據庫的巨大應用需求。
現有對象關系數據庫的自主訪問控制安全性能有限,在實際應用場景中也存在授權機制不靈活的限制。現有對象關系數據庫訪問控制機制存在權限管理不當,可能引發秘密數據泄露,在很多方面也存在安全隱患,并且粗粒度的訪問控制也缺乏靈活性。目前的對象關系數據庫訪問控制中,可以進行訪問控制的數據庫對象的最小粒度是類,因此在PostgreSQL中使用訪問控制列表無法限制數據庫用戶對數據庫列級對象和行級對象的訪問,使得PostgreSQL的訪問控制機制并不能滿足實際應用中細粒度訪問控制的需求。
在對象關系數據庫實際應用中,用戶會根據不同的使用目的,生成不同類型的繼承類,包括SELECTED選擇型繼承類、JOIN連接型繼承類、UNION合并型繼承類和GROUP分組型繼承類。其中對于擁有多個數據源(即源類)的繼承類,僅僅只在其屬性上分配一個統一的安全標簽可能會造成部分源類的數據無法通過繼承類被合法用戶訪問的問題。為了讓基于對象關系特性的強制訪問控制模型為多源繼承類提供更為方便靈活的訪問控制,本文針對多源繼承類在理論和實際應用方面的特性,從更細的粒度上探討了各種繼承類中屬性級對象的安全等級管理,并在此基礎上闡述繼承類上細粒度訪問控制的過程。
為方便描述訪問控制規則及介紹對象安全等級管理方法,表1列出了本文中使用的符號及其意義。

表1 正文符號表及意義
在詳細介紹對象關系數據庫的強制訪問控制規則之前,先對用到的基本概念進行定義。
(1) 安全級別序列。安全級別序列是一個有n個元素的有序序列,用SL=(sl1,sl2,…,sln)表示,其中sli(i=1,2,…,n)表示第i個元素,對于任意兩個元素sli和slj,若i (2) 類別范圍集合。類別范圍集合是一個有m個元素的集合,用CR={cr1,cr2,…,crm}表示,其中cri(i=1,2,…,m)表示第i個元素,對于任意兩個元素cri和crj,若i≠j,則有cri≠crj。 (3) 安全標簽。一個安全標簽SecL由一個安全級別元素和一個類別范圍集合組成,表示為SecL=sl:cr,其中sl∈SL為安全級別序列SL中的一個元素,cr為空集或者類別范圍集合CR中的一個或多個元素的集合。數據庫對象的安全標簽表示為SecLobj=SLobj:CRobj,請求訪問數據庫對象的主體的安全標簽表示為SecLsub=SLsub:CRsub。 (4) 安全等級。數據庫對象的安全等級由數據庫對象的安全標簽來體現。對于數據庫對象obj1和obj2,obj1的安全標簽SecLobj1表示為SLobj1:CRobj1,obj2的安全標簽SecLobj2表示為SLobj2:CRobj2。當且僅當SLobj1>SLobj2且CRobj1?CRobj2,認為obj1的安全等級高于obj2的安全等級;當且僅當SLobj1=SLobj2且CRobj1=CRobj2時,認為obj1的安全等級等obj2的安全等級。 (5) 源類。對象關系數據庫中存在著繼承關系,即通過特定的繼承規則從源類繼承部分或全部屬性值,這里的源類就是繼承類中部分屬性的數據源。一個繼承類可以有一個或多個源類,一個繼承類的n個源類用集合SC表示,SC={SCi|i=1,2,…,n}。 (6) 繼承類。繼承類中必定會有虛屬性,即根據規則從源類中繼承的屬性,這些屬性的內容并未實際存儲。同時繼承類中也可以新增屬性,這些屬性為繼承類中實際存儲的實屬性,繼承類中的實屬性個數可為0個或若干個。繼承類用IC表示,繼承類的第i個虛屬性表示為IC.vai,繼承類的第j個實屬性表示為IC.raj,則繼承類的安全標簽表示為SecLIC=SLIC:CRIC,繼承類的第i個虛屬性的安全標簽表示為SecLIC.vai=SLIC.vai:CRIC.vai,繼承類的第j個實屬性的安全標簽表示為SecLIC.raj=SLICIC.raj:CRIC.raj。 (7) UNION繼承類。UNION繼承類合并了若干個源類中共有屬性的選擇型繼承結果,用UIC表示,那么代表其安全等級的安全標簽表示為SecLUIC=SLUIC:CRUIC。 對象關系數據庫強制訪問控制的安全模型主要基于BLP(Bell-La Padula)安全模型,該模型如圖1所示。數據庫系統中的每一個數據庫對象都被分配一個安全標簽,這個安全標簽反映了數據庫對象的安全等級。數據庫中除了數據庫、源類、繼承類等數據庫對象被分配了安全標簽外,源類的實屬性、繼承類的虛屬性和實屬性也被分配了安全標簽。同時,對數據庫進行操作和訪問的主體也被授予了一個安全標簽。當主體訪問數據庫對象時,需要比較二者的安全標簽是否符合主體訪問數據庫對象管理規則。 圖1 對象關系數據庫的強制訪問安全模型 在對象關系數據庫中,具有多個源類的繼承類有兩種,分別是UNION繼承類和JOIN繼承類。其中,UNION繼承類存在著類中不同實例的同一屬性內容來源于多個源類中對應屬性的內容。下面將結合具體的例子說明這種多源類繼承類上在進行強制訪問控制時可能出現的問題。 假設音樂網站的數據庫中有兩個基本類,命名為vipmusic和freemusic,分別存儲付費歌曲和免費歌曲的信息。其中,vipmusic類和freemusic類中共有的屬性有編號number、歌名name、歌手singer和歌曲音頻內容context,不過付費歌曲的音頻內容只有在用戶付費成為會員后才能聽到,免費的歌曲音頻內容普通用戶和會員都可以聽到。為了方便在音樂網站的構建中對歌曲共有的屬性信息進行統一的獲取和處理,需要構建一個提供所有歌曲信息的更抽象的類。UNION繼承類便可以滿足這個需求,將vipmusic和freemusic兩個基本類作為源類,創建一個名為music的UNION繼承類,如圖2所示。 圖2 UNION繼承類中多數據源屬性示例 那么通過直接對UNION繼承類music進行查詢即可得到所有歌曲共有屬性的信息。music類中繼承自源類的屬性均為虛屬性,其擴展定義的屬性comment為實屬性,表示網站用戶對歌曲的評論,其中music類中所有實例的虛屬性內容都不是實際存儲在本地的,而是通過訪問源類vipmusic和freemusic中對應屬性的內容而得到的,實屬性的內容是實際存儲在本地的。 假設源類vipmusic中,除了表示歌曲音頻內容的context屬性之外的所有屬性安全級別為sl1,例如SLvipmusic.name=sl1,而context屬性的安全級別為sl5,即SLvipmusic.context=sl5。源類freemusic中,所有屬性的安全級別均為sl1,例如SLfreemusic.name=sl1,SLfreemusic.context=sl1。若UNION繼承類music的安全級別也為sl1,那么有music中除context屬性的以外的所有屬性的安全級別為sl1,context屬性安全級別為sl5。對于context外的其他屬性,顯然能訪問源類中這些屬性內容的用戶也能通過UNION繼承類music訪問到這些屬性內容。然而,只有安全級別大于等于sl5的用戶才可以通過music同時訪問到兩個源類中context屬性的內容。安全級別為sl1、sl2、sl3和sl4的用戶可以訪問源類freemusic中的context屬性內容,卻無法通過繼承類music而訪問到源類freemusic中的context屬性內容。因此,可以看到UNION繼承類上的強制訪問控制在某些情況下阻止了部分擁有源類數據訪問權限的用戶通過UNION繼承類訪問源類數據,從而影響了UNION繼承類在實際條件下的使用。 為了解決多源類繼承類中多數據源虛屬性的內容在強制訪問控制模型中的訪問受限問題,本文設計了多數據源虛屬性的安全等級細化方法,為多源類繼承類上靈活的細粒度訪問控制提供支持。 對于一個UNION繼承類UIC,其有m個源類SC={SCi|i=1,2,…,m},UIC有從這m個源類中繼承的n個虛屬性va={vaj|j=1,2,…,n}。這些虛屬性都是擁有多個數據源的虛屬性,且每個虛屬性的數據源為m個源類中與這個虛屬性相對應的屬性。 任一虛屬性va的安全標簽只有一個,表示為SecLUIC.va=SLUIC.va:CRUIC.va,其中SLUIC.va為va的安全級別,CRUIC.va為va的類別范圍,該安全標簽代表了va的安全等級。因此,UNION繼承類虛屬性va在所有UIC實例中對應內容都由同一個安全標簽SecLUIC.va來進行訪問控制。 為了支持多源類繼承類UIC中多數據源屬性上的細粒度訪問控制,設計了UIC虛屬性的安全等級細化方法,使得同一屬性中來自不同數據源的屬性內容擁有各自的安全等級。其具體表現為:對于有m個源類的UIC中的任一虛屬性va,設置一個安全標簽集SecLUIC.va,該安全標簽集合中默認有m個安全標簽,va中從一個源類繼承的屬性內容與一個安全標簽對應。UIC虛屬性va安全等級的細化實際上就是將UIC所有實例的va屬性內容根據數據源進行劃分,并為來自不同數據源的屬性內容分配與之對應的安全標簽。 1) 虛屬性va按數據源劃分。 由UIC類實例的介紹可知,UNION繼承類中的所有類實例集合表示為TUIC,將TUIC按照實例對應源類實例所屬類的不同進行劃分,可以得到: 2) 虛屬性va多安全標簽分配。 對TUIC.va中包含的其他m-1個分組,都按照相同的方法為其分配安全標簽,可以得到UIC中虛屬性va的安全標簽集合為: 各個安全標簽和虛屬性va按數據源進行劃分后的各個分組為一一對應關系。 為了進一步說明多源類繼承類中虛屬性的安全等級細化方法,下面將結合實際的例子對安全等級細化方法進行具體的介紹。此處同樣以圖2的UNION繼承類music為例,對于其中的虛屬性context,由于其內容繼承自兩個源類,因此context的屬性內容可以劃分為兩組,分組結果表示為: 為每個分組分配安全標簽以表示來自數據源的屬性內容的安全等級,由于此例中各級對象的類別范圍CR均未設置,因此安全標簽的內容只需考慮安全級別SL,則有: 經過以上處理的UNION繼承類中context虛屬性的安全標簽由之前的單一安全標簽變成了一個安全標簽集合,圖3直觀地展現了music繼承類中虛屬性context安全等級細化后的結果。 圖3 多數據源屬性安全等級細化示例 通過對同一虛屬性中來自不同源類的屬性內容進行劃分并添加安全標簽,多源類繼承類UIC中同一虛屬性繼承自不同數據源的屬性內容以分組為單位擁有了各自的安全標簽,從而實現了多源類繼承類中虛屬性的安全等級細化。 當數據庫用戶企圖訪問UNION繼承類中的虛屬性va中的部分屬性內容時,細粒度訪問控制機制可以通過獲取待訪問屬性內容對應的一個或者多個安全標簽進行更為具體的訪問控制。其具體過程為: (1) 獲取請求訪問多源類繼承類的用戶的安全標簽SecLsub,得到其安全級別SLsub和類別范圍CRsub。 (7) 在初步訪問結果PreResva中屬性va的所有屬性值都經過以上判斷后,若PreResva=?,則不返回任何va屬性內容給用戶。否則,將初步訪問結果PreResva中剩余的屬性內容作為最終訪問結果返回給用戶。 為了進一步說明多源類繼承類中的細粒度訪問控制機制,下面同樣將結合圖3中已進行虛屬性安全等級細化的UNION繼承類music為例,對多源類繼承類中進行細粒度訪問控制的流程和方法進行介紹。 假設音樂網站上有一普通用戶user,并且該普通用戶的安全標簽為SecLuser=SLuser:CRuser,其中安全級別SLuser的內容為sl3,CRuser的內容默認為空。用戶user請求訪問UNION繼承類music中歌曲名字包含“晴天”的歌曲內容。則采用細粒度訪問控制機制對用戶user的訪問請求進行控制的流程如下: 對初步訪問結果PreRescontext中的context虛屬性內容依次進行訪問權限判定后,PreRescontext={r18.context,r57.context}表示初步訪問結果經過訪問權限篩選后僅剩下music繼承類中第18個實例和第57個實例中的context屬性內容。最后,將PreRescontext作為訪問結果返回給用戶user。 由以上介紹可知,多源類繼承類中屬性級對象的強制訪問控制可以細化到具體的屬性內容,用戶可以訪問在多數據源屬性中其安全等級可以訪問到的所有數據,而屬性上安全等級高于用戶安全等級的屬性內容則不會包含在用戶的訪問結果中,從而很好地避免了多數據源屬性上單一安全標簽導致的用戶訪問受限的問題,實現了多源類繼承類上的細粒度訪問控制。 在多源數據上進行細粒度的訪問控制是為了在保證數據安全的前提下,最大限度地提高多源類數據中各虛屬性內容的可用性。為了實現這一目的,本文提出了基于多源數據的安全等級細化方法。該方法考慮到對象繼承數據庫中的主體是通過訪問繼承類中的虛屬性而得到源類中對應屬性內容的,因此若要對繼承類中的虛屬性進行粒度更細的訪問控制,需要對繼承類的虛屬性內容根據其繼承數據所在的源類的不同而進行分組,并為繼承自不同源類的數據分組分配相應的安全標簽,從而實現對多源類繼承類中同一虛屬性中來自不同數據源的數據分別進行互相獨立的訪問權限判斷。由于訪問權限的判斷完全是基于用戶的安全標簽和屬性內容安全標簽的比較的,所以同一虛屬性中各個內容分組安全標簽的設定將直接決定細粒度訪問控制的安全性。 SLsub≥SLSCi.a且CRsub?CRSCi.a SLsub≥SLUIC且CRsub?CRUIC 可以看出,用戶sub的安全等級大于等于SCi中a屬性的安全等級,即具備SCi中a屬性的訪問權限,并且用戶sub的安全等級大于等于va所在的繼承類UIC的安全等級,即具備了UIC的訪問權限。 由以上推理可得,按照基于多源數據的安全等級細化方法處理得到的虛屬性安全標簽集合中,同一虛屬性中繼承了不同源類對應屬性的內容分組的安全標簽和其各自對應的源類屬性的安全標簽存在著緊密聯系,以此可以通過判定用戶對虛屬性中各個內容分組的訪問權限來控制用戶對源類屬性內容的訪問,從而實現安全的細粒度強制訪問控制。 實驗在一臺主頻為4.00 GHz、內存為8 GB的PC機上進行,實驗平臺操作系統為Redhat 6.5。實驗數據集選用開源音樂數據集Million Song Dataset。 基于PostgreSQL12實現了本文提出的支持多數據源、細粒度授權的強制訪問控制模型,對該方法進行效率評估。目前還沒有一種針對對象關系數據庫的多源細粒度授權的訪問控制模型實現,因此將本文改進的系統(PostgreSQL12+)與PostgreSQL12系統的訪問控制功能進行比較。實驗選用10個類,10 000條數據,并逐漸增大數據規模進行數據隨機授權、隨機撤銷授權、查詢和更新操作,通過統計分析PostgreSQL12系統執行時間和本文改進系統(PostgreSQL12+)在執行時間上的差異,對設計的細粒度強制訪問模型給PostgreSQL12系統帶來的性能影響進行分析。 首先對授權效率進行對比分析,結果如圖4所示。可以看出,在10 000條數據里依次隨機授權100~1 000條數據給指定用戶,PostgreSQL12+在執行數據授權操作時所用的時間小于未使用強制訪問控制模型的PostgreSQL12系統執行相同操作時所用的時間。這是由于強制訪問控制模型通過細粒度授權規則優化了隨機授權方式,在一定程度上減小了隨機授權操作的時間開銷,使得PostgreSQL12+數據庫授權訪問更加靈活。 圖4 隨機授權操作執行時間對比圖 實驗分析了撤銷不同規模數據的時間開銷,結果如圖5所示。可以看出,在授權10 000條數據給用戶后依次隨機撤銷100~1 000條數據的授權,PostgreSQL12+在執行數據撤銷授權操作時所用的時間小于未使用強制訪問控制模型的PostgreSQL12系統執行相同操作時所用的時間,但相對而言,強制訪問控制模型對執行隨機撤銷授權操作的影響要更大于其對隨機授權操作的影響。這和系統執行隨機授權和隨機撤銷授權操作本身用時有一定關系,同時由于強制訪問控制模型使用基于多源數據的安全等級細化方法,在較大程度上減小了時間開銷,使得PostgreSQL12+數據庫的撤銷授權操作更加高效。 圖5 隨機撤銷授權操作執行時間對比圖 通過上述實驗分析可見,本文方法可以獲得更好的授權、撤銷權限效率,同時作為數據庫的訪問控制授權策略,也需要衡量其是否會對數據庫查詢本身產生影響。 設計實驗分析PostgreSQL12+的數據查詢效率,結果如圖6所示。可以看出,在10個類上進行查詢操作,對應的數據量分別為1 000~10 000條記錄,PostgreSQL12+在執行用戶查詢請求時所用的時間略大于PostgreSQL12系統執行用戶查詢請求所用時間,并且隨著數據規模的增大,消耗的時間也越多。因此可見強制訪問控制模型對PostgreSQL12系統的查詢性能是有一定影響的。究其原因,主要是對類中的各個屬性上的數據進行查詢時,均需要通過調用強制訪問控制的模塊進行處理,強制訪問控制的模塊對各個屬性進行了訪問權限判定后才能繼續查詢執行操作,造成了一定的時間延遲。但同時強制訪問控制模型在保證數據安全的前提下,最大限度地提高多源類數據中各虛屬性內容的可用性,改善了PostgreSQL12系統的性能。 圖6 查詢操作執行時間對比圖 綜合以上實驗可以看出,本文設計的強制訪問控制模型雖然在很小的程度上會降低PostgreSQL12數據庫的查詢效率,但是其也賦予PostgreSQL12數據庫授權訪問靈活、時間開銷小等優點,是一種實用的對象關系數據庫訪問控制解決方案。 本文設計了一種對象關系數據庫環境下的強制訪問控制模型,該模型適用于多數據源細粒度訪問授權,提高了對象關系數據庫在多數據源上進行強制訪問控制的靈活性,降低了數據庫授權及撤銷授權的時間開銷。在PostgreSQL12上的實驗表明該方法可以很好地為對象關系數據庫提供靈活高效的強制訪問控制。
2.2 強制訪問控制安全模型

2.3 基于多源數據的安全等級細化方法









2.4 細粒度訪問控制機制








2.5 安全性分析




3 實 驗
3.1 實驗環境
3.2 實驗方案設計
3.3 用戶授權實驗分析

3.4 用戶撤銷授權實驗分析

3.5 數據查詢實驗分析

3.6 實驗結果分析
4 結 語