劉志鴻 王山東,2 李玲梅
1安徽工業大學計算機學院 安徽 243032 2河海大學地球科學與工程學院 江蘇 210098
本文研究不同用戶訪問地理信息共享平臺的安全性,并制定相應的策略尤為重要。在此提出了分兩個等級來進行安全訪問的方式:第一、低級安全訪問模型,主要是根據不同的數據圖層來進行訪問;第二、高級安全訪問模型,主要是結合ArcSDE與Oracle一起來進行訪問,并在此基礎上提出了基于角色管理的元組級標記的多級安全訪問控制模型。
用戶在訪問地理信息共享平臺時,首先通過應用程序客戶端提交對數據操作的請求,然后請求會通過Web服務器處理,接著通過GIS軟件(比如ArcGIS Server) 來進行處理空間數據,再通過數據庫引擎——中間件ArcSDE來訪問空間數據庫(如Oracle等)。本課題是以ARCGIS的系列產品作為實例系統來進行論述的,所以介紹并分析用戶訪問共享平臺中涉及到的ArcSDE數據庫引擎及多級安全訪問控制模型等相關知識很重要。
1.1.1 ArcSDE工作原理
依據空間數據管理的方式來看,ArcSDE可看成是一種連續的空間數據模型,從而可用關系數據庫系統(RDBMS)來管理空間地理數據。ArcSDE的主要功能有:(1)將應用程序中的空間信息導入到關系數據庫中,并交給它來管理;(2)從關系數據庫中讀取空間信息,并轉換為地理信息系統的應用程序能夠處理的數據格式。所以ArcSDE是空間數據進出數據庫的橋梁。采用中間件技術雖然多點麻煩,但它能很好地解決了地理信息共享平臺與空間數據庫訪問安全模式的限制問題。下面來介紹ArcSDE工作原理,如圖1所示。
(1) 對于客戶應用是最終用戶使用的軟件,比如ArcInfo等。
(2) 服務器端包括ArcSDE應用服務器、SQL引擎以及RDBMS。ArcSDE通過 SQL引擎執行空間數據的搜索,將搜索的結果在服務器端緩存并發回給客戶端來顯示。

圖1 ArcSDE工作原理
ArcSDE還提供了一種直接訪問數據庫的連接方式。它是由客戶端接口直接把請求轉換成SQL命令發送到RDBMS上,并解釋返回空間及屬性數據,最終顯示在客戶端。
1.1.2 ArcSDE數據存儲與管理
空間數據經過ArcSDE的轉換,RDBMS利用關系表來存儲帶有空間及屬性數據的空間信息。屬性數據存儲在業務表(Business-table,B表)中,其中每一個實體對應表中的一個元組??臻g數據存儲在特征表(Feature-table, F表)中,索引數據存儲在索引表(Index-table)中。而在關系數據庫管理系統中,比如:ORACLE,它可以把空間數據存儲在一張關系表中,所以可以利用關系數據庫來實現連續的、無縫的數據存儲。
ArcSDE所創建、管理并訪問的表被記錄下來的所有空間數據列的行為及屬性的相關信息,叫做空間元數據。下面介紹一下常用的元數據層表(layer-table)。
ArcSDE通過層表來管理圖層,同時對客戶端調用空間數據的操作做出響應。在層表中Layer-ID列是每個圖層的標識,即是層表的主鍵列;Table-name列用來指向每個圖層B表指針;Spatial-column列表示B表與F表進行關聯的列,也是空間列名。當用戶要將圖層數據存入空間數據庫的時候,SDE就會在數據庫中創建相對應的B表、F表及索引表,并將數據存入表格中,最終是在層表中生成一條描述空間圖層信息的記錄;當用戶要操作數據庫中的圖層時,ArcSDE根據Table-name列值找到圖層B表,根據 Spatial-column列值找到對應的F表,然后進行相應的運算,最終將結果返回給客戶端,從而讓用戶看見。在整個數據請求過程中,對用戶可見的表只有層表。
1.2.1 BLP模型
BLP模型是由Bell D.E.和LaPadula L.J.在1973年提出的一種典型的多級安全的模擬軍事訪問控制模型。它的出發點是維護整個系統的保密性,從而有效地防止信息泄露。它的核心思想是解決多級安全(Multilevel Security, MLS)問題的基礎。BLP通過制定主體對客體的訪問規則和操作權限管理來保證系統的安全性,BLP模型中基本控制方式有兩種:
(1) 強制存取控制(MAC):是通過主體(用戶)和客體(數據對象)安全級匹配規則來確定該主體是否被準許存取該客體。在多級安全模型中,MAC主要是使用“安全級”來操作的,其中主體和客體均可定義一定的安全級,安全級是由分層密級和非分層范疇構成的。分層密級簡稱密級,一般分為普通(U)、秘密(C)、機密(S)、絕密(TS)等,它們是線性有序的,通常按密級高低升序排列。其排列順序規定為:普通<秘密<機密<絕密。非分層范疇是一個類別的集合,每一個類別實際上是一個名稱,因而非分層范疇是一系列名稱的集合,它們彼此獨立,并且無序。例如{建筑物圖層,管線圖層},它們組成了一個非分層范疇。
多級安全模型的讀寫規則:(1)讀規則,若主體安全級的密級大于或等于客體安全級的密級,且主體的非分層范疇包含客體的非分層范疇時,則此主體才能讀該客體。這就是“向下讀規則”。(2)寫規則,若主體安全級的密級小于或等于客體安全級的密級,且主體的非分層范疇包含于客體的非分層范疇時,則該主體才能寫該客體。這就是“向上寫規則”。
(2) 自主存取控制(DAC):在BLP模型訪問控制策略中,對于主體擁有的客體,有權控制自己及別人對客體有哪些訪問權限。
1.2.2 多實例的多級安全模型
多級安全數據庫分級有:數據項級、屬性級、記錄級以及表級。這樣在一個關系表中包含了多種安全級的數據,我們稱這種關系為多級關系。而多實例是指在同一張數據庫關系表中,多個相同主鍵的元組可以同時存在。由于多實例的數據出現,導致了需要對原來的關系數據庫模型進行重新定義,也就產生了多實例的多級安全模型。下面對關系模式、關系實例下個定義。
定義1 關系模式定義:R(A1,C1,A2,C2… …A n , Cn,TC),Ai∈Di;其中,Ai表示數據屬性,Di表示Ai的值域,Ci是表示屬性 Ai相關聯的安全級,Ci定義在[Li,Hi]上,
Hi≥Li;TC為 (Li,Hi)元組的安全級,其中Li表示系統的低安全級,Hi表示系統的高安全級。在一個多級關系中,兩個或多個元組具有同一個主鍵,我們稱之為多實例,而原來的主鍵被稱之為外觀鍵(Apparent primary Key, AK),A1表示主鍵,這里的主鍵和一般關系數據庫中的主鍵是不一樣的,在此可以允許主鍵值重復出現。
定義 2 關系實例定義:多級關系實例用r(A1,C1 ,……,An,Cn,TC)表示,是不同元組(a1,c1 , … …an,cn,tc)的集合,其中:ai∈Di(Di為屬性值域)ci∈ [Li,Hi];或者ai=null,ci∈ [Li,Hi]Unull,tc≥ l u b{ci|ci≠null;i= 1……n} ,其中lub表示最小上界。
多級實例分實體多級實例及元素多級實例。實體多級實例是由具有相同的主鍵屬性值但主鍵屬性安全級不同的元組組成,這樣用戶就認為他們之間所描述的實體是不同的。而元素多級實例是由主鍵屬性值相同且安全級相同,但其它某些屬性的值及其安全級不同的元組組成,從而反映了不同安全級用戶對于同一實體在非主鍵屬性上的不同看法。
本文所講的低級安全訪問模型,主要是根據不同的數據圖層來進行安全訪問的,并以ARCGIS的系列產品作為實例系統來進行論述的,ArcGIS Server是用于發布企業級GIS應用程序的綜合平臺。對于它開發的地理信息共享平臺,將為各單位及各部門中各種類型的用戶提供信息資源共享,但是對某些敏感的、保密的、特殊的數據圖層,有些單位和用戶是不能共享的,甚至不能讀取的,并且共享平臺項目中的大量資源信息是ArcGIS Server利用數據圖層的形式來發布的。因此建立一套安全的訪問平臺的控制機制很重要,而本文的訪問機制的實現是利用了微軟NET 3.5框架的知識。
本文為了實現用戶及角色的動態創建及相關操作,NET3.5提供了Membership類和Roles類來專門負責,使用Membership類可以添加驗證、創建、刪除和查找用戶,改變密碼以及用戶相關的許多其他操作;使用Roles類可以添加和刪除角色,給用戶獲取角色,改變用戶的角色。
ArcGIS Server發布的地圖可以有多個圖層,而圖層是最小的數據組織單元,其類型也是相對穩定。不同的圖層顯示不同的實體集合的空間地理信息。通過 NET3.5提供的User.IsInRole()方式,可以方便地判斷登錄用戶所屬哪個角色,根據不同的角色,來隱藏某些敏感的、特殊的圖層。在開發的地理信息共享平臺中,通過遍歷地圖中所有的地圖服務,找到需要移除的圖層 ID,利用 ArcGIS Server API中IMapFunctionality接口中的SetLayerVisibility(layerId,false)方法,負責隱藏不需要的圖層。達到不同權限的用戶獲取到相應所屬角色圖層的目的,保證了用戶訪問的安全性,從而建立起了低級安全訪問模型。
通過分析多級安全訪問控制模型,以及根據ArcSDE存儲管理的方式,在多實例的多級安全數據模型的基礎上提出一種元組級標記(Tuple-level-tags)數據模型,稱之為基于角色管理的元組級標記的多級安全訪問控制模型,來表示空間數據在關系數據庫Oracle中的存儲。如表1所示元組級數據模型。

表1 元組級數據模型
所表示的符號名稱及意義和多級實例的多級安全模型中是一樣的,可以把它當成是多級安全模型中的一個特殊情況:即Ci=TC( 2 ≤i≤n),此模型定義中沒有“上寫”數據流,這樣可以保證高安全級數據信息的完整性,研究的地理信息共平臺中密級取值集合為{非密(U),秘密(C),機密(S),絕密(TS)},從而本論文所描述的高級訪問控制模型就構建起來了。
本文所研究是在地理信息共享平臺上面的安全訪問的機制,根據基于角色管理的元組級標記的多級安全訪問控制模型的讀寫策略,我們主要從安全級劃分與非分層范疇的定義來考慮。
(1) 安全級劃分原則
根據此控制模型核心是要強制訪問控制,以及主體及客體的安全級是用集合有序對形式表示:如<機密,{交通線路圖層}>,根據多級系統安全級是由分層的密級和非分層的范疇組成,對于地理信息共享平臺中所采集的小區空間數據中,保密級可以劃分為無密(U)<秘密(C)<機密(S)<絕密(TS),非分層的范疇可以表示為集合{建筑物圖層,管線圖層,交通路線圖層,綠化圖層}中的一個子集。
(2) 非分層范疇比較原則
地理信息共享平臺通過 ArcSDE把空間數據保存到Oracle數據庫中,數據層次是:地圖—圖層—空間實體,用戶所見的地圖由圖層構成,如在采集一個小區的空間數據時,地圖構成可由交通線路圖層、建筑物圖層、綠化區圖層及管線圖層等疊加構成。每一圖層經過ArcSDE引擎處理后對應著數據庫中的二維表,而圖層里的每個實體對應表中的一個元組。應用程序是通過ArcSDE里的層表來管理空間數據的,用戶只能看見層表。因此基于角色管理的方式,可以把主體安全級中的非分層范疇用該主體所屬角色權限訪問的表范疇表示,客體的非分層范疇用該圖層表所表示的信息范疇來表示,這樣平臺在設計時變得簡單些,根據元組級標記的多級安全訪問控制模型,僅僅需要直接進行保密級別的判斷就可以。對于一個角色可以訪問多個數據庫對象(如元組、表、視圖等),這樣某一主體可以很容易地實現訪問綠化圖層和建筑物圖層。地理信息共享平臺處理用戶訪問的流程圖如圖2所示:首先用戶發出訪問地理信息共享平臺的請求,然后通過系統的身份認證,如果失敗,經過審計就結束請求。接著對用戶進行權限的認證,如果失敗,同樣結束。緊接著經過基于角色管理的元組級標記的多級安全訪問控制策略的檢查,如果失敗,也是結束,否則用戶就可以進行空間數據的存取操作,當用戶存取完想要的數據之后,最終結束用戶的請求。

圖2 共享平臺處理流程圖
(3) 讀寫策略制定
通過上面的討論,依據BLP模型所講的讀寫策略。在此用λ(s),λ(o)分別表示主體和客體的安全級標記,它由密級和非分層范疇構成。若主體能讀客體,則有λ(s) ≥λ(o);若主體能夠寫客體,則有λ(o) ≥λ(s)。這樣保證了“下讀上寫”的規則,數據僅僅在同級之間或者從低級向高級流動。依據元組級標記數據模型,在此對 BLP模型的寫策略進行改進,規定寫只能在同安全級間進行,不能“向上寫”,從而制定了它的讀寫策略。
地理信息共享平臺是為政府、企業進行數據共享和數據交換的公共平臺,所以研究其訪問安全性至關重要,本文采用分兩個等級的方式來進行處理,并提出了基于角色管理的元組級標記的多級安全訪問控制模型。然而還存在許多不足之處,應該從多層次多角度來考慮安全訪問,比如可以深入研究一下信息在網絡傳輸及訪問過程中的加解密方面的問題;還有此訪問控制模型還存在信息泄露、數據冗余度大以及隱通道問題,這些都是以后需要改進地方。
[1]李軍,彭凱等著.政務地理空間信息資源管理與共享服務應用[M].北京大學出版社.2009.
[2]潘瑜春,鐘耳順,梁軍.基于空間數據庫技術的地籍管理系統研究[J].地理研究.2003.
[3]桂潤堂,鐘霞,薛重生.基于ArcSDE空間數據庫引擎技術的應用研究[J].微機發展.2003.
[4]余莉,何隆華.基于ArcSDE的礦產數據庫管理系統開發[J].計算機應用.2009.
[5]張成才,孫喜梅,黃慧.SDE的實體—關系模型空間數據管理方式研究[J].計算機工程與應用.2003.
[6]李佳田,劉洪斌,武偉,王春曉.基于 SDE 的數據應用研究[J].微機發展.2003.