劉志鴻 王山東,2 李玲梅
1安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 安徽 243032 2河海大學(xué)地球科學(xué)與工程學(xué)院 江蘇 210098
本文研究不同用戶訪問(wèn)地理信息共享平臺(tái)的安全性,并制定相應(yīng)的策略尤為重要。在此提出了分兩個(gè)等級(jí)來(lái)進(jìn)行安全訪問(wèn)的方式:第一、低級(jí)安全訪問(wèn)模型,主要是根據(jù)不同的數(shù)據(jù)圖層來(lái)進(jìn)行訪問(wèn);第二、高級(jí)安全訪問(wèn)模型,主要是結(jié)合ArcSDE與Oracle一起來(lái)進(jìn)行訪問(wèn),并在此基礎(chǔ)上提出了基于角色管理的元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制模型。
用戶在訪問(wèn)地理信息共享平臺(tái)時(shí),首先通過(guò)應(yīng)用程序客戶端提交對(duì)數(shù)據(jù)操作的請(qǐng)求,然后請(qǐng)求會(huì)通過(guò)Web服務(wù)器處理,接著通過(guò)GIS軟件(比如ArcGIS Server) 來(lái)進(jìn)行處理空間數(shù)據(jù),再通過(guò)數(shù)據(jù)庫(kù)引擎——中間件ArcSDE來(lái)訪問(wèn)空間數(shù)據(jù)庫(kù)(如Oracle等)。本課題是以ARCGIS的系列產(chǎn)品作為實(shí)例系統(tǒng)來(lái)進(jìn)行論述的,所以介紹并分析用戶訪問(wèn)共享平臺(tái)中涉及到的ArcSDE數(shù)據(jù)庫(kù)引擎及多級(jí)安全訪問(wèn)控制模型等相關(guān)知識(shí)很重要。
1.1.1 ArcSDE工作原理
依據(jù)空間數(shù)據(jù)管理的方式來(lái)看,ArcSDE可看成是一種連續(xù)的空間數(shù)據(jù)模型,從而可用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RDBMS)來(lái)管理空間地理數(shù)據(jù)。ArcSDE的主要功能有:(1)將應(yīng)用程序中的空間信息導(dǎo)入到關(guān)系數(shù)據(jù)庫(kù)中,并交給它來(lái)管理;(2)從關(guān)系數(shù)據(jù)庫(kù)中讀取空間信息,并轉(zhuǎn)換為地理信息系統(tǒng)的應(yīng)用程序能夠處理的數(shù)據(jù)格式。所以ArcSDE是空間數(shù)據(jù)進(jìn)出數(shù)據(jù)庫(kù)的橋梁。采用中間件技術(shù)雖然多點(diǎn)麻煩,但它能很好地解決了地理信息共享平臺(tái)與空間數(shù)據(jù)庫(kù)訪問(wèn)安全模式的限制問(wèn)題。下面來(lái)介紹ArcSDE工作原理,如圖1所示。
(1) 對(duì)于客戶應(yīng)用是最終用戶使用的軟件,比如ArcInfo等。
(2) 服務(wù)器端包括ArcSDE應(yīng)用服務(wù)器、SQL引擎以及RDBMS。ArcSDE通過(guò) SQL引擎執(zhí)行空間數(shù)據(jù)的搜索,將搜索的結(jié)果在服務(wù)器端緩存并發(fā)回給客戶端來(lái)顯示。
圖1 ArcSDE工作原理
ArcSDE還提供了一種直接訪問(wèn)數(shù)據(jù)庫(kù)的連接方式。它是由客戶端接口直接把請(qǐng)求轉(zhuǎn)換成SQL命令發(fā)送到RDBMS上,并解釋返回空間及屬性數(shù)據(jù),最終顯示在客戶端。
1.1.2 ArcSDE數(shù)據(jù)存儲(chǔ)與管理
空間數(shù)據(jù)經(jīng)過(guò)ArcSDE的轉(zhuǎn)換,RDBMS利用關(guān)系表來(lái)存儲(chǔ)帶有空間及屬性數(shù)據(jù)的空間信息。屬性數(shù)據(jù)存儲(chǔ)在業(yè)務(wù)表(Business-table,B表)中,其中每一個(gè)實(shí)體對(duì)應(yīng)表中的一個(gè)元組??臻g數(shù)據(jù)存儲(chǔ)在特征表(Feature-table, F表)中,索引數(shù)據(jù)存儲(chǔ)在索引表(Index-table)中。而在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中,比如:ORACLE,它可以把空間數(shù)據(jù)存儲(chǔ)在一張關(guān)系表中,所以可以利用關(guān)系數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)連續(xù)的、無(wú)縫的數(shù)據(jù)存儲(chǔ)。
ArcSDE所創(chuàng)建、管理并訪問(wèn)的表被記錄下來(lái)的所有空間數(shù)據(jù)列的行為及屬性的相關(guān)信息,叫做空間元數(shù)據(jù)。下面介紹一下常用的元數(shù)據(jù)層表(layer-table)。
ArcSDE通過(guò)層表來(lái)管理圖層,同時(shí)對(duì)客戶端調(diào)用空間數(shù)據(jù)的操作做出響應(yīng)。在層表中Layer-ID列是每個(gè)圖層的標(biāo)識(shí),即是層表的主鍵列;Table-name列用來(lái)指向每個(gè)圖層B表指針;Spatial-column列表示B表與F表進(jìn)行關(guān)聯(lián)的列,也是空間列名。當(dāng)用戶要將圖層數(shù)據(jù)存入空間數(shù)據(jù)庫(kù)的時(shí)候,SDE就會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建相對(duì)應(yīng)的B表、F表及索引表,并將數(shù)據(jù)存入表格中,最終是在層表中生成一條描述空間圖層信息的記錄;當(dāng)用戶要操作數(shù)據(jù)庫(kù)中的圖層時(shí),ArcSDE根據(jù)Table-name列值找到圖層B表,根據(jù) Spatial-column列值找到對(duì)應(yīng)的F表,然后進(jìn)行相應(yīng)的運(yùn)算,最終將結(jié)果返回給客戶端,從而讓用戶看見(jiàn)。在整個(gè)數(shù)據(jù)請(qǐng)求過(guò)程中,對(duì)用戶可見(jiàn)的表只有層表。
1.2.1 BLP模型
BLP模型是由Bell D.E.和LaPadula L.J.在1973年提出的一種典型的多級(jí)安全的模擬軍事訪問(wèn)控制模型。它的出發(fā)點(diǎn)是維護(hù)整個(gè)系統(tǒng)的保密性,從而有效地防止信息泄露。它的核心思想是解決多級(jí)安全(Multilevel Security, MLS)問(wèn)題的基礎(chǔ)。BLP通過(guò)制定主體對(duì)客體的訪問(wèn)規(guī)則和操作權(quán)限管理來(lái)保證系統(tǒng)的安全性,BLP模型中基本控制方式有兩種:
(1) 強(qiáng)制存取控制(MAC):是通過(guò)主體(用戶)和客體(數(shù)據(jù)對(duì)象)安全級(jí)匹配規(guī)則來(lái)確定該主體是否被準(zhǔn)許存取該客體。在多級(jí)安全模型中,MAC主要是使用“安全級(jí)”來(lái)操作的,其中主體和客體均可定義一定的安全級(jí),安全級(jí)是由分層密級(jí)和非分層范疇構(gòu)成的。分層密級(jí)簡(jiǎn)稱(chēng)密級(jí),一般分為普通(U)、秘密(C)、機(jī)密(S)、絕密(TS)等,它們是線性有序的,通常按密級(jí)高低升序排列。其排列順序規(guī)定為:普通<秘密<機(jī)密<絕密。非分層范疇是一個(gè)類(lèi)別的集合,每一個(gè)類(lèi)別實(shí)際上是一個(gè)名稱(chēng),因而非分層范疇是一系列名稱(chēng)的集合,它們彼此獨(dú)立,并且無(wú)序。例如{建筑物圖層,管線圖層},它們組成了一個(gè)非分層范疇。
多級(jí)安全模型的讀寫(xiě)規(guī)則:(1)讀規(guī)則,若主體安全級(jí)的密級(jí)大于或等于客體安全級(jí)的密級(jí),且主體的非分層范疇包含客體的非分層范疇時(shí),則此主體才能讀該客體。這就是“向下讀規(guī)則”。(2)寫(xiě)規(guī)則,若主體安全級(jí)的密級(jí)小于或等于客體安全級(jí)的密級(jí),且主體的非分層范疇包含于客體的非分層范疇時(shí),則該主體才能寫(xiě)該客體。這就是“向上寫(xiě)規(guī)則”。
(2) 自主存取控制(DAC):在BLP模型訪問(wèn)控制策略中,對(duì)于主體擁有的客體,有權(quán)控制自己及別人對(duì)客體有哪些訪問(wèn)權(quán)限。
1.2.2 多實(shí)例的多級(jí)安全模型
多級(jí)安全數(shù)據(jù)庫(kù)分級(jí)有:數(shù)據(jù)項(xiàng)級(jí)、屬性級(jí)、記錄級(jí)以及表級(jí)。這樣在一個(gè)關(guān)系表中包含了多種安全級(jí)的數(shù)據(jù),我們稱(chēng)這種關(guān)系為多級(jí)關(guān)系。而多實(shí)例是指在同一張數(shù)據(jù)庫(kù)關(guān)系表中,多個(gè)相同主鍵的元組可以同時(shí)存在。由于多實(shí)例的數(shù)據(jù)出現(xiàn),導(dǎo)致了需要對(duì)原來(lái)的關(guān)系數(shù)據(jù)庫(kù)模型進(jìn)行重新定義,也就產(chǎn)生了多實(shí)例的多級(jí)安全模型。下面對(duì)關(guān)系模式、關(guān)系實(shí)例下個(gè)定義。
定義1 關(guān)系模式定義:R(A1,C1,A2,C2… …A n , Cn,TC),Ai∈Di;其中,Ai表示數(shù)據(jù)屬性,Di表示Ai的值域,Ci是表示屬性 Ai相關(guān)聯(lián)的安全級(jí),Ci定義在[Li,Hi]上,
Hi≥Li;TC為 (Li,Hi)元組的安全級(jí),其中Li表示系統(tǒng)的低安全級(jí),Hi表示系統(tǒng)的高安全級(jí)。在一個(gè)多級(jí)關(guān)系中,兩個(gè)或多個(gè)元組具有同一個(gè)主鍵,我們稱(chēng)之為多實(shí)例,而原來(lái)的主鍵被稱(chēng)之為外觀鍵(Apparent primary Key, AK),A1表示主鍵,這里的主鍵和一般關(guān)系數(shù)據(jù)庫(kù)中的主鍵是不一樣的,在此可以允許主鍵值重復(fù)出現(xiàn)。
定義 2 關(guān)系實(shí)例定義:多級(jí)關(guān)系實(shí)例用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} ,其中l(wèi)ub表示最小上界。
多級(jí)實(shí)例分實(shí)體多級(jí)實(shí)例及元素多級(jí)實(shí)例。實(shí)體多級(jí)實(shí)例是由具有相同的主鍵屬性值但主鍵屬性安全級(jí)不同的元組組成,這樣用戶就認(rèn)為他們之間所描述的實(shí)體是不同的。而元素多級(jí)實(shí)例是由主鍵屬性值相同且安全級(jí)相同,但其它某些屬性的值及其安全級(jí)不同的元組組成,從而反映了不同安全級(jí)用戶對(duì)于同一實(shí)體在非主鍵屬性上的不同看法。
本文所講的低級(jí)安全訪問(wèn)模型,主要是根據(jù)不同的數(shù)據(jù)圖層來(lái)進(jìn)行安全訪問(wèn)的,并以ARCGIS的系列產(chǎn)品作為實(shí)例系統(tǒng)來(lái)進(jìn)行論述的,ArcGIS Server是用于發(fā)布企業(yè)級(jí)GIS應(yīng)用程序的綜合平臺(tái)。對(duì)于它開(kāi)發(fā)的地理信息共享平臺(tái),將為各單位及各部門(mén)中各種類(lèi)型的用戶提供信息資源共享,但是對(duì)某些敏感的、保密的、特殊的數(shù)據(jù)圖層,有些單位和用戶是不能共享的,甚至不能讀取的,并且共享平臺(tái)項(xiàng)目中的大量資源信息是ArcGIS Server利用數(shù)據(jù)圖層的形式來(lái)發(fā)布的。因此建立一套安全的訪問(wèn)平臺(tái)的控制機(jī)制很重要,而本文的訪問(wèn)機(jī)制的實(shí)現(xiàn)是利用了微軟NET 3.5框架的知識(shí)。
本文為了實(shí)現(xiàn)用戶及角色的動(dòng)態(tài)創(chuàng)建及相關(guān)操作,NET3.5提供了Membership類(lèi)和Roles類(lèi)來(lái)專(zhuān)門(mén)負(fù)責(zé),使用Membership類(lèi)可以添加驗(yàn)證、創(chuàng)建、刪除和查找用戶,改變密碼以及用戶相關(guān)的許多其他操作;使用Roles類(lèi)可以添加和刪除角色,給用戶獲取角色,改變用戶的角色。
ArcGIS Server發(fā)布的地圖可以有多個(gè)圖層,而圖層是最小的數(shù)據(jù)組織單元,其類(lèi)型也是相對(duì)穩(wěn)定。不同的圖層顯示不同的實(shí)體集合的空間地理信息。通過(guò) NET3.5提供的User.IsInRole()方式,可以方便地判斷登錄用戶所屬哪個(gè)角色,根據(jù)不同的角色,來(lái)隱藏某些敏感的、特殊的圖層。在開(kāi)發(fā)的地理信息共享平臺(tái)中,通過(guò)遍歷地圖中所有的地圖服務(wù),找到需要移除的圖層 ID,利用 ArcGIS Server API中IMapFunctionality接口中的SetLayerVisibility(layerId,false)方法,負(fù)責(zé)隱藏不需要的圖層。達(dá)到不同權(quán)限的用戶獲取到相應(yīng)所屬角色圖層的目的,保證了用戶訪問(wèn)的安全性,從而建立起了低級(jí)安全訪問(wèn)模型。
通過(guò)分析多級(jí)安全訪問(wèn)控制模型,以及根據(jù)ArcSDE存儲(chǔ)管理的方式,在多實(shí)例的多級(jí)安全數(shù)據(jù)模型的基礎(chǔ)上提出一種元組級(jí)標(biāo)記(Tuple-level-tags)數(shù)據(jù)模型,稱(chēng)之為基于角色管理的元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制模型,來(lái)表示空間數(shù)據(jù)在關(guān)系數(shù)據(jù)庫(kù)Oracle中的存儲(chǔ)。如表1所示元組級(jí)數(shù)據(jù)模型。
表1 元組級(jí)數(shù)據(jù)模型
所表示的符號(hào)名稱(chēng)及意義和多級(jí)實(shí)例的多級(jí)安全模型中是一樣的,可以把它當(dāng)成是多級(jí)安全模型中的一個(gè)特殊情況:即Ci=TC( 2 ≤i≤n),此模型定義中沒(méi)有“上寫(xiě)”數(shù)據(jù)流,這樣可以保證高安全級(jí)數(shù)據(jù)信息的完整性,研究的地理信息共平臺(tái)中密級(jí)取值集合為{非密(U),秘密(C),機(jī)密(S),絕密(TS)},從而本論文所描述的高級(jí)訪問(wèn)控制模型就構(gòu)建起來(lái)了。
本文所研究是在地理信息共享平臺(tái)上面的安全訪問(wèn)的機(jī)制,根據(jù)基于角色管理的元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制模型的讀寫(xiě)策略,我們主要從安全級(jí)劃分與非分層范疇的定義來(lái)考慮。
(1) 安全級(jí)劃分原則
根據(jù)此控制模型核心是要強(qiáng)制訪問(wèn)控制,以及主體及客體的安全級(jí)是用集合有序?qū)π问奖硎荆喝纾紮C(jī)密,{交通線路圖層}>,根據(jù)多級(jí)系統(tǒng)安全級(jí)是由分層的密級(jí)和非分層的范疇組成,對(duì)于地理信息共享平臺(tái)中所采集的小區(qū)空間數(shù)據(jù)中,保密級(jí)可以劃分為無(wú)密(U)<秘密(C)<機(jī)密(S)<絕密(TS),非分層的范疇可以表示為集合{建筑物圖層,管線圖層,交通路線圖層,綠化圖層}中的一個(gè)子集。
(2) 非分層范疇比較原則
地理信息共享平臺(tái)通過(guò) ArcSDE把空間數(shù)據(jù)保存到Oracle數(shù)據(jù)庫(kù)中,數(shù)據(jù)層次是:地圖—圖層—空間實(shí)體,用戶所見(jiàn)的地圖由圖層構(gòu)成,如在采集一個(gè)小區(qū)的空間數(shù)據(jù)時(shí),地圖構(gòu)成可由交通線路圖層、建筑物圖層、綠化區(qū)圖層及管線圖層等疊加構(gòu)成。每一圖層經(jīng)過(guò)ArcSDE引擎處理后對(duì)應(yīng)著數(shù)據(jù)庫(kù)中的二維表,而圖層里的每個(gè)實(shí)體對(duì)應(yīng)表中的一個(gè)元組。應(yīng)用程序是通過(guò)ArcSDE里的層表來(lái)管理空間數(shù)據(jù)的,用戶只能看見(jiàn)層表。因此基于角色管理的方式,可以把主體安全級(jí)中的非分層范疇用該主體所屬角色權(quán)限訪問(wèn)的表范疇表示,客體的非分層范疇用該圖層表所表示的信息范疇來(lái)表示,這樣平臺(tái)在設(shè)計(jì)時(shí)變得簡(jiǎn)單些,根據(jù)元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制模型,僅僅需要直接進(jìn)行保密級(jí)別的判斷就可以。對(duì)于一個(gè)角色可以訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)對(duì)象(如元組、表、視圖等),這樣某一主體可以很容易地實(shí)現(xiàn)訪問(wèn)綠化圖層和建筑物圖層。地理信息共享平臺(tái)處理用戶訪問(wèn)的流程圖如圖2所示:首先用戶發(fā)出訪問(wèn)地理信息共享平臺(tái)的請(qǐng)求,然后通過(guò)系統(tǒng)的身份認(rèn)證,如果失敗,經(jīng)過(guò)審計(jì)就結(jié)束請(qǐng)求。接著對(duì)用戶進(jìn)行權(quán)限的認(rèn)證,如果失敗,同樣結(jié)束。緊接著經(jīng)過(guò)基于角色管理的元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制策略的檢查,如果失敗,也是結(jié)束,否則用戶就可以進(jìn)行空間數(shù)據(jù)的存取操作,當(dāng)用戶存取完想要的數(shù)據(jù)之后,最終結(jié)束用戶的請(qǐng)求。
圖2 共享平臺(tái)處理流程圖
(3) 讀寫(xiě)策略制定
通過(guò)上面的討論,依據(jù)BLP模型所講的讀寫(xiě)策略。在此用λ(s),λ(o)分別表示主體和客體的安全級(jí)標(biāo)記,它由密級(jí)和非分層范疇構(gòu)成。若主體能讀客體,則有λ(s) ≥λ(o);若主體能夠?qū)懣腕w,則有λ(o) ≥λ(s)。這樣保證了“下讀上寫(xiě)”的規(guī)則,數(shù)據(jù)僅僅在同級(jí)之間或者從低級(jí)向高級(jí)流動(dòng)。依據(jù)元組級(jí)標(biāo)記數(shù)據(jù)模型,在此對(duì) BLP模型的寫(xiě)策略進(jìn)行改進(jìn),規(guī)定寫(xiě)只能在同安全級(jí)間進(jìn)行,不能“向上寫(xiě)”,從而制定了它的讀寫(xiě)策略。
地理信息共享平臺(tái)是為政府、企業(yè)進(jìn)行數(shù)據(jù)共享和數(shù)據(jù)交換的公共平臺(tái),所以研究其訪問(wèn)安全性至關(guān)重要,本文采用分兩個(gè)等級(jí)的方式來(lái)進(jìn)行處理,并提出了基于角色管理的元組級(jí)標(biāo)記的多級(jí)安全訪問(wèn)控制模型。然而還存在許多不足之處,應(yīng)該從多層次多角度來(lái)考慮安全訪問(wèn),比如可以深入研究一下信息在網(wǎng)絡(luò)傳輸及訪問(wèn)過(guò)程中的加解密方面的問(wèn)題;還有此訪問(wèn)控制模型還存在信息泄露、數(shù)據(jù)冗余度大以及隱通道問(wèn)題,這些都是以后需要改進(jìn)地方。
[1]李軍,彭凱等著.政務(wù)地理空間信息資源管理與共享服務(wù)應(yīng)用[M].北京大學(xué)出版社.2009.
[2]潘瑜春,鐘耳順,梁軍.基于空間數(shù)據(jù)庫(kù)技術(shù)的地籍管理系統(tǒng)研究[J].地理研究.2003.
[3]桂潤(rùn)堂,鐘霞,薛重生.基于ArcSDE空間數(shù)據(jù)庫(kù)引擎技術(shù)的應(yīng)用研究[J].微機(jī)發(fā)展.2003.
[4]余莉,何隆華.基于ArcSDE的礦產(chǎn)數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用.2009.
[5]張成才,孫喜梅,黃慧.SDE的實(shí)體—關(guān)系模型空間數(shù)據(jù)管理方式研究[J].計(jì)算機(jī)工程與應(yīng)用.2003.
[6]李佳田,劉洪斌,武偉,王春曉.基于 SDE 的數(shù)據(jù)應(yīng)用研究[J].微機(jī)發(fā)展.2003.