摘要:基于語義Web技術和擴展訪問控制標記語言(XACML),提出了一種具有語義的屬性訪問控制模型#65377;該模型利用XACML,可實現基于屬性的訪問控制;而利用語義Web技術,可降低屬性策略定義和維護的復雜性,同時也可保護用戶的敏感屬性#65377;
關鍵詞:基于屬性的訪問控制;語義Web技術;擴展訪問控制標記語言
中圖分類號:TP309.2文獻標志碼:A
文章編號:1001-3695(2007)10-0148-04
傳統授權是基于請求訪問資源實體的身份,或是基于直接或間接分配給這些實體的角色#65377;但在像Internet這樣的開放環境中,資源和請求者通常位于不同的安全域中,他們之間一般沒有先前建立的信任關系,互不知曉彼此的身份或角色#65377;因此身份信息(如用戶名#65380;口令#65380;身份證書)或角色信息并不能確定一個實體是否值得信任,基于身份或角色的訪問控制機制顯得不太適合#65377;相反,基于屬性的訪問控制機制比較適合于這種開放的環境[1]#65377;在ABAC中,授權決策是基于相關實體(如請求者#65380;資源#65380;環境)的屬性,而不僅僅是身份或角色,身份或角色只是一種特殊的屬性;ABAC比RBAC(rolebased acces control,基于角色的訪問控制)更加靈活#65380;使用范圍更廣,提供的控制粒度更細[2]#65377;
基于屬性訪問控制的靈活性也帶來了屬性策略定義和維護的復雜性,以及用戶敏感屬性暴露問題#65377;因為訪問控制決策所需的屬性可能來自不同的管理域,以不同的術語來表示和解釋,即其語義可能不完全相同,從而引出了語義互操作性的需求,這種語義互操作性問題只能用語義Web技術(尤其是ontology技術)來解決[3]#65377;因此,本文基于語義Web技術和基于屬性的訪問控制機制,提出了一種稱為具有語義的屬性訪問控制(semanticaware attributebased access control,SABAC)方法#65377;在SABAC方法中,將利用語義Web技術構造的推理引擎添加到原來的XACML[4]訪問控制架構上#65377;
1基于屬性的訪問控制和語義Web技術
1.1ABAC及存在的問題
基于屬性的訪問控制(ABAC)機制因其靈活性和適用性,已廣泛應用于開放和分布式的系統中,但也存在著策略管理和維護難度較大的問題#65377;ABAC中要利用用戶(主體)的屬性進行授權,這些屬性中可能包含用戶的敏感信息,如某資源的訪問條件是“成人才能訪問”,則授權決策要用到“成人”屬性(用fullAge表示)#65377;“成人”屬性可用“年齡”屬性(用age表示)來表示,如age>18;如果用戶不愿暴露其年齡,也可用“擁有駕馭證(用hasDriverLicense表示)”屬性表示他已是成人(因為只有成人才能擁有駕馭證),這就需要策略管理員事先考慮這些情況,使得策略的管理和維護變得非常復雜#65377;要解決這一問題,本文提議利用基于ontology的語義推理技術(語義Web技術),讓系統能自動根據已有的屬性推理出某些隱含的屬性,從而得出某些結論,既簡化了策略的管理復雜度,又解決了敏感屬性的保護問題#65377;
1.2本體和語義Web技術
語義Web技術就是要使用基于ontology的有精確語義的元數據(metadata)來標注人類能理解的信息內容,使機器#65380;代理也能理解,達到人機之間#65380; Web服務之間能互操作的目的#65377;為此需要建立標準化的元數據模型#65380;標準化(結構化)的語法和標準化的詞匯#65377;
在語義Web中,資源用元數據表示#65377;利用XML語法,以RDF[5,6]作為描述資源的語言,以RDF schema(RDFS)[7]來定義元數據模式#65377;RDF 的數據模型可以用一個三元組(subject,property,value)或(subject,predicate,object)表示對資源的描述#65377;其中:subject表示資源(resource),是被描述和說明的對象;property 是這個三元組所要表達的主體的屬性,屬性值由value來給出;predicate是與資源相關的property,而object是property的值#65377;可以將RDF 語句看做是一個有向標記圖,主體和客體是節點,謂詞是由主體指向客體的有向邊#65377;這些三元組的集合構成了RDF圖#65377;
RDFS基于類(class)概念和繼承性與簡單的結構來描述ontology#65377;Ontology是一種用于描述語義的#65380;概念化的顯式說明#65377;它通過定義屬性并建立一個分類層次結構,將不同的概念區別和組織起來,同時也通過屬性將概念相互聯系起來,從而建立起概念的語義空間,亦即對某一個領域內事物的共同理解#65377;這些概念和屬性的名字(即標志)構成了ontology的詞匯表#65377;在語義Web的交流/通信中,ontology擔當著語義溝通的重要角色,是其實現的關鍵技術之一#65377;Ontology需要用ontology語言描述和建構#65377;常用的ontology描述語言是OWL[8],它建立在RDFS之上并支持豐富的語義#65377;OWL 提供了三種表達能力遞增的子語言:OWL lite#65380;OWL DL#65380;OWL full#65377;其中OWL DL支持那些需要最強表達能力的推理系統的用戶,且這個推理系統能夠保證計算的完全性 (computational completeness,即所有的結論都能夠保證被計算出來) 和可判定性(decidability,即所有的計算都在有限的時間內完成);支持那些需要盡管沒有可計算性保證,但有最強的表達能力和完全自由的RDF語法的用戶#65377;
本體的處理和分析,需要使用推理引擎#65377;通過推理引擎(reasoner,inference engine,reasoning engine),可以從數據的暗示信息中得出新結論或通過組合獲取新的信息#65377;簡單的推理可由RDFS和OWL利用繼承性直接獲取,而復雜的推理則需要某種特殊的策略規則語言來實現,最有希望的語言是基于RuleML(rule markup language)的SWRL(semantic Web rule language)[9]#65377;
在進行規則或策略的推理過程中,通常需要獲取相關實體的屬性(值),這需要從屬性文檔中采用查詢(query)方式而得到,比較理想的查詢語言是SPARQL[10]#65377;
在本文提出的SABAC方法中,要用到上述的RDF(S)#65380;OWL#65380;SWRL和SPARQL等標準于推理引擎中#65377;
2SABAC模型
2.1基于XACML的SABAC實現框架
對于XACML來說,策略的評估主要是檢驗屬性條件是否成立,但它并不支持語義,沒有語義推理能力#65377;為了基于XACML實現SABAC,在不影響其他XACML工作機制的條件下,通過增加一個基于ontology的推理引擎(inference engine)到XACML架構上,完成不同屬性和屬性條件之間的映射,即當XACML PDP所需屬性沒有找到時,提議利用語義Web技術,讓推理引擎從包含在授權請求中的屬性和從PIP(policy information point)或AA(attribute authorities)處獲取的屬性中進行推理,進一步獲取授權決策所需的屬性#65377;
基于XACML的SABAC實現架構如圖1所示#65377;
模型的主要工作流程如下:
a)策略管理點PAP建立XACML策略,并提供給策略決策點PDP#65377;本文訪問控制策略是“只有成人才被允許訪問http://www.hust.edu.cn上的資源”#65377;XACML策略表示見2.4節#65377;
b)訪問請求者(以shb@hust.edu.cn標示)向策略執行點PEP(http://www.hust.edu.cn/index.html)發送訪問資源請求,其中包含請求者的age屬性,其值age≥18#65377;
c)PEP前傳此訪問請求給Context Handler,其中包含屬性age#65377;
d)Context handler建立一個XACML請求,并發送給PDP#65377;
e)PDP向context handler發送屬性請求,獲取授權決策所需的屬性fullAge和其他屬性#65377;
f)Context handler向策略信息點PIP發送屬性請求,獲取授權決策所需的屬性#65377;
g)PIP收集所需的屬性#65377;如果需要,從主體#65380;資源#65380;環境屬性中心(各自的AA)獲取所需屬性#65377;
h)PIP返回所需的屬性給context handler,但此時無法提供fullAge屬性#65377;
i)到此為止,所有操作均按XACML訪問控制流程執行#65377;但PDP決策所需的屬性fullAge沒有找到,因此需要利用語義Web技術,將先前獲取的各種attributes由context handler前傳給inference engine;再由它利用從OAP(ontology administration point)處獲取的ontology(本文采用的ontology見2.2節)知識,推理產生所需的屬性fullAge,推理結果用RDF/XML表示(見2.3節);然后,context handler利用RDF查詢語言SPARQL的DESCRIBE命令,從inference engine處獲取此屬性#65377;DESCRIBE命令格式為
DESCRIBE
j)Context handler將獲取的屬性(其中已包括屬性fullAge)發送給PDP#65377;
k)PDP依據XACML策略進行對訪問請求進行評估,并返回評估結果給context handler#65377;
l)Context handler將評估結果轉換成PEP能接收的格式,并前傳給PEP#65377;
2.2本文所用的ontology
以下說明如何用OWL來描述主體ontology#65377;假設請求訪問資源的主體subject有屬性age#65380;fullAge和hasDriverLicense,age有子屬性greaterThanorEqual#65377;基于SWRL和OWL的subject ontology如下本體樣例:
此ontology包含一個聲明(fullAge屬性可由hasDriverLicense屬性推導)和一個SWRL規則(fullAge屬性依賴于屬性age)#65377;SWRL規則可描述如下:subject(?x)∧ age (?x,?a) ∧greaterThanorEqual(?a,18)→fullAge(?x, true),即如果subject的age≥18,則fullAge為真(subject為成人)#65377;
2.3推理引擎的選取
推理引擎使用SWRL描述推理規則,根據規則推理產生PDP授權決策所需的屬性#65377;但SWRL在豐富OWL DL表達能力的同時,又超出了OWL DL的可判定子集,因此在選用推理引擎時,可用以下兩種方法:
a)限制SWRL的表達能力于OWL DL(即用戶在用SWRL編寫規則時,只用OWL DL的語法規則),選用基于OWL DL的推理引擎,如Pellet#65380;Racer#65380;Jess#65380;Jena等#65377;
b)直接選用支持SWRL規則的推理引擎,如Hoolet (http://owl.man.ac.uk/hoolet)和RacerPro 1.9(http://www.racersystems.com/products/racerpro)等#65377;
本文推理引擎采用能處理SWRL規則的擴展RacerPro#65377;RacerPro 1.9是一款集成化的圖形界面的工具箱,既提供OWL ontology編輯工具,又提供推理引擎#65377;它產生的擴展屬性用RDF/XML表示如下主體屬性#65377;從中可以看出,根據給定的ontology,推理引擎能推理出subject具有fullAge屬性,即該主體為成人#65377;
?xml version=\" 1.0\"?
rdf:RDF
xmlns :rdf=\"http://www.w3.org/1999/02/22rdfsyntaxns#\"
xmlns :rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"
xml ns: owl=\"http://www.w3, org/2002/07/owl#\"
xmlns:: swrl=\"http://www.wB.org/2OO3/ll/swrl#\"
owl:Class rdf:about=\"um:oasis:names:tc:xacml:l.0:policy:Subject\"/
owl:DatatypeProperty rdf.′ID=\"urn:example:age\"
rdfs:range rdf.′resource=\"http://www.w3.org/2001/XMLSchema#nonNegativelnteger\"/
rdfs:domain rdf.′resource=\"um:oasis:names:tc:xacml: 1.0:policy:Subject\"/
rdf.'type rdf.′ resource=\"http://www.w3 .org/2002/07/owl#FunctionalProperty\"/
/owl :DatatypeProperty
owl: DatatypeProperty rdf:about=\"um:example:hasDriverLicense\"
rdfs:range rdf.′resource=\"http ://www.w3.org/2001/XMLSchema#boolean\"/
rdfs:domain rdf.′resource=\"um:oasis:names:tc:xacml: 1.0:policy:Subject\"/
rdfitype rdf:resource=\"http://www.w3.org/2002/07/owl#FuncfionalProperty\"/
/owl :DatatypePropertyP
owl:DatatypeProperty rdf:about=\"um:example: fullAge\"
rdfs:range rdf:resource=\"http://www.w3.org/2001/XMLSchema#boolean\"/
rdfs:domain rdf:resource=\"um:oasis:names:tc:xacml: 1.0:policy:Subject\"/
rdf:type rdf.'resource=\"http://www.w3.org/2OO2/O7/owl#FunctionalProperty\"/
rdfs:subClassOf rdf:resource=\"um:example:hasDriverLicense\"/
/owl:DatatypeProperty
swrl:Variable rdf:ID=\"x\"/
swrl:Variable rdf.'ID=\"a\"/
swrl:Imp
swrl:body rdf:parseType=\"Collection\"
swrl: C lass Atom
swrl:classPredicate rdf.′resource=\"um:oasis:names:tc:xacml:1.0:policy:Subject\"/
swrl:argumentl rdf.′resource=\"#x\"/
/swrl :ClassAtom
swrl :DatavaluedProperty Atom
swrl :propertyPredicate rdfiresource=\"um:example:age\"/
swrl:argumentl rdf:resource=\"#x\"/
swrl:argument2 rdf:resource=\"#a\"/
/swrl :DatavaluedPropertyAtom
swrl:BuiltinAtom
swrl:builtin rdf.′resource=\"http ://www.w3 .org/2003 / 11/swrlb#greaterThanOrEqual\"/
swrl:argumentl rdf:resource=\"#a\"/
swrl:argument2 rdf.′datatype=\"http://www.w3.org/2001/XMLSchema#integer\"
18/rdf.'argument2
/swrl :BuiltinAtom
/swrl:body
swrl:head rdf.′parseType=\"Collection\"
swrl:DatavaluedPropertyAtom
swrl:propertyPredicate rdf:resource=\"urn:example:fullAge\"/
swrl:argumentl rdf:resource=\"#x\"/
swrl :argument2 rdf: datatype=\"http ://www.w3 .org/2001/XMLSchema#boolean\"
true/swrl:argument2
/swrl: DatavaluedProperty Atom
/swrl:head
/swrl:Imp
……
/rdf:RDF
?xml version=\"1.0\"?
rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22rdfsyntaxns#\"
Subject xmlns=\"urn:oasis:names:tc:xacml:1.0:context:\"rdf:about=\"mailto:anonymous@anonymous.edu.cn\"
age xmlns=\"urn:example:\"rdf:datatype=\"http://www.w3.org/2001/XML Schema#integer\"
30/age
fullAge xmlns=\"urn:example:\"rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\"
true/fullAge
Subject
……
/rdf:RDF
2.4XACML訪問控制策略
在訪問請求者向服務提供商請求訪問某種資源時,資源服務器端的PDP要評估請求是否滿足制定的訪問控制策略(規則),即請求中的屬性與策略中的屬性是否匹配,從而給出是允許還是拒絕的授權決策#65377;在具體實現時,PDP可采用Sun Microsystem 的XACML PDP[11]#65377;本文的訪問控制策略是“只有成人才被允許訪問資源”#65377;即如果fullAge為真,則subject被允許訪問資源#65377;此策略用XACML表示如下:
?xml version=\"1.0\"encoding=\"UTF8\"
Policy xmlns=\"urn:oasis:names:tc:xacml:1.0:policy\"PolicyId=\"SamplePolicy\"
RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:1.0:ruleCombiningalgorithm:permitoverrides\"
Target
SubjectsAnySubject//Subjects
ResourcesResource
ResourceMatch MatchId:\"urn:oasis:names:tc:xacml:1.0:function:regexpstringmatch\"
AttributeValue DataType=\"http:www.w3.org/2001/XMLSchema#string\"
http://www.example.org/restricted/
/AttributeValue/ResourceMatch
/Resource/Resources
ActionsAnyAction//Actions
/Target
Rule RuleId=\"SampleRule\"Effect=\"Permit\"
TargetSubjectsSubject
SubjectMatch MatchId=\"urn:oasis:names:tc:xacml:1.0:function:stringequal\"
AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#boolean\"
true/AttributeValue
SubjectAttributeDesignator AttributeId=\"urn:example:fullAge\"DataType=\"http://www.w3.org/2001/XMLSchema#boolean\"
SubjectMatch
/Subject/Subjects
ResourcesAnyResource//Resources
ActionsAction
ActionMatch MatchId:\"urn:oasis:names:tc:xacml:1.0:function:stringequal\"
AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\"
readAttributeValue
AttrobiteId=\"urn:oasis:names:tc:xacml:1.0:action:actionid\"
DataType=\"http://www.w3.org/2001/XMLSchema#string\"/
/ActionMatch
/Action/Actions
/Rule
……
/Policy
3結束語
面對開放分布式的環境,傳統的訪問控制模型和語言顯得不太合適#65377;盡管最近的一些技術(如XACML)可以利用資源請求者和資源的屬性來定義訪問控制規則,但它們并沒有利用語義Web的強大語義和推理能力#65377;本文利用語義Web技術對XACML進行了擴展,并以此為基礎實現了一種富有語義并基于屬性的訪問控制方法,該方法尤其適合于開放的分布式環境#65377;在以后的研究中,將進一步研究推理引擎的推理機制#65377;
參考文獻:
[1]YUAN E,TONG J.Attribute based access control (ABAC) for Web services[C]//Proc of the IEEE Conference on Web Services (ICWS’05).Orlando Florida:IEEE Computer Society,2005:561-569.
[2]沈海波,洪帆.面向Web服務的基于屬性的訪問控制研究[J].計算機科學,2006,33(4):92-96.
[3]PRIEBE T,DOBMEIER W,KAMPRATH N.Supporting attributebased access control with ontologies[C]//Proc of the 1st International Conference on Availability, Reliability and Security (ARES’06).Vienna:IEEE Computer Society Press,2006:465-472.
[4]OASIS Standard. Extensible access control markup language (XACML) version 1.0[EB/OL]. [2006-06-26].http://www.oasisopen.org/committees/xacml.
[5]KLYNE G,CARROLL J J.Resource description framework (RDF):concepts and abstract syntax [EB/OL].[2006-06-23].http://www.w3.org/TR/rdfconcepts/.
[6]BECKETT D.RDF/XML syntax specification [EB/OL].[20060618].http://www.w3.org/TR/rdfsyntaxgrammar/.
[7]BRICKLEY D,GUHA R V.RDF vocabulary description language 1.0:RDF schema [EB/OL].[2006-06-25].http://www.w3.org/ TR/rdfschema/.
[8]OWL Web ontology language overview [EB/OL].(2004-02-10).[2006-06-28].http://www.w3.org/TR/2004/RECowlfeatures20040210/.
[9]SWRL: a semantic Web rule language combining OWL and RuleML [EB/OL].[2006-06-28].http://www.daml.org/rules/proposal/.
[10]SPARQL query language for RDF [EB/OL].(2005-02-17)[2006-07-16].http://www.w3.org/TR/2005/WDrdfsqarqlquery20050217/.
[11]Sun’s XACML implementation programmer’s guide [K/OL].[2006-07-18]. http://sunxacml.sourceforge.net/guide.html.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”