專利名稱:訪問控制策略生成方法及裝置的制作方法
技術領域:
本發明涉及訪問控制技術,特別涉及一種訪問控制策略生成方法及裝置,屬于網
絡應用領域。
背景技術:
為了保證網絡具有足夠的安全性,國際標準化組織I SO在其網絡安全體系的設 計標準(IS07498-2)中,定義了五大安全服務功能,包括身份認證服務、訪問控制服務、 數據保密服務、數據完整性服務以及不可否認服務。其中,訪問控制服務是針對越權使用 資源的防御措施,用于防止用戶在未授權的情況下對各種資源的隨意訪問,從而使計算機 系統能夠在合法的范圍內被使用。訪問控制可以有效的阻止非法用戶對系統資源的訪 問,以及合法用戶對系統資源的非法訪問。現有的訪問控制策略主要包括自主訪問控制 (Discretionary Access Control,以下簡稱DAC)策略、強制訪問控制(Mandatoty Access Control,以下簡稱MAC)策略,基于標識的訪問控制(Identity Based Access Control,以 下簡稱IBAC)策略和基于角色的訪問控制(Role Based Access Control,以下簡稱RBAC) 策略。 上述傳統的訪問控制策略雖然能夠適用于不同的領域,但本質上都是封閉式的, 不支持對系統未定義用戶的授權,因此,上述訪問控制策略均不具備足夠的靈活性和可擴 展性。例如,為解決面向服務的體系結構(Service-Oriented Architecture,以下簡稱 S0A)環境下訪問控制的問題,可以利用RBAC策略為S0A構建安全體系。但由于RBAC僅僅 將用戶的功能或職責屬性定義為角色,未考慮用戶的其它屬性,并且RBAC未考慮用戶訪問 的客體的除標識之外的其它屬性以及與SOA環境相關的安全屬性,所以其難以適用于多種 商業應用場景。為解決現有的訪問控制策略靈活性和可擴展性差的問題,基于屬性的訪問 控制(Attribute Based Access control,以下簡稱ABAC)策略被提出,ABAC是基于IBAC 和RBAC中策略定義標識或角色的局限性而做出擴展和改進,其基本思想是基于主體,資 源或者可操作上下文的相關屬性進行策略定義。在訪問控制的范疇內,一般會考慮到基于 主體、資源(即客體)、授權、環境這四種實體屬性進行策略定義,換言之,四種實體屬性可 包括主體屬性、資源屬性、授權屬性和環境屬性,并且ABAC策略可以基于任意的主體、資源 或環境屬性的組合來定義策略。與傳統的訪問控制策略不同,ABAC策略基于請求者的屬性 對其訪問進行授權,不需要預先定義用戶,因此具有很好的靈活性和動態可擴展性。所以相 比于IBAC策略和RBAC策略,ABAC策略具有更加豐富的語義,能夠提供更加細粒度的訪問 控制。 針對ABAC的規范問題,高級結構化信息標準組織(Organization for theAdvancement of Structured Information Standards,以下簡禾爾0ASIS)提出了二個 標準,包括安全斷言標記語言(Security Assertion Mark卯Language,以下簡稱SAML) 禾口可J廣展i方問控制t示記i吾言(extensible AccessControl Markup Language, XACML)。其 中XACML標準對ABAC提供了良好的支持, 一方面,它為ABAC策略提出了一個訪問控制框架,定義了參與訪問控制的執行流程的關鍵實體及各實體之間的交互關系;另一方面,它定 義了一種基于XML的訪問控制策略定義語言,可以描述多種訪問控制策略。XACML在策略 定義、策略索引以及策略組織方面給出了良好的解決方法;該標準還給出了策略定義時的 各種實體可參考屬性,用于定義策略的常用數據類型和能夠施加于常用數據之上的常用函 數,為策略定義提供了很好的基礎設施。除此之外,XACML還定義了用于策略執行點接受請 求和給與應答的標準XML格式,這對于異構的系統間實現訪問控制提供了很好的支持。因 此,XACML被公認為是一種可以對ABAC策略進行準確而全面描述的標準,利用XACML進行 表達的ABAC策略(即基于XACML的ABAC策略)具有很強的實用性。
但基于XACML的ABAC策略也存在如下問題XACML作為一種特定的XML規范,雖 然其可以實現對ABAC策略準確的描述,但基于XACML的ABAC策略語法復雜、語句冗長,當 用戶定義基于XACML的ABAC策略時,需要首先理解XACML的描述方法并通過人工方式寫出 復雜的基于XACML進行表達的ABAC策略,這對于用戶來講難以掌握和應用,導致了用戶難 于定義基于XACML的ABAC策略;并且在用戶定義基于XACML的ABAC策略時,通過人工方式 寫出復雜的基于XACML的ABAC策略過程中容易出現錯誤。
發明內容
本發明的目的是針對現有技術中存在的問題,提出一種訪問控制策略生成方法及
裝置,從而解決現有技術中用戶難于定義基于XACML的ABAC策略以及通過人工方式寫出復
雜的基于XACML的ABAC策略過程中容易出現錯誤的問題。 為實現上述目的,本發明提供了一種訪問控制策略生成方法,包括 根據用戶通過預先建立的基于屬性的訪問控制ABAC策略視圖模板輸入的ABAC策
略信息,生成ABAC策略表達式; 根據預先設置的ABAC策略視圖模板與可擴展訪問控制標記語言XACML模板之間 的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。
為實現上述目的,本發明還提供了一種訪問控制策略生成裝置,包括
生成模塊,用于根據用戶通過預先建立的ABAC策略視圖模板輸入的ABAC策略信 息,生成ABAC策略表達式; 轉換模塊,用于根據預先設置的ABAC策略視圖模板與XACML模板之間的映射規 則,將所述ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。
本發明的技術方案中根據輸入的ABAC策略信息生成ABAC策略表達式,再通過設 置的映射規則將ABAC策略表達式自動轉換成基于XACML的ABAC策略,在此過程中用戶只 需通過ABAC策略視圖模板輸入一些簡單的ABAC策略信息,無需以人工方式寫出復雜的基 于XACML的ABAC策略,減輕了用戶的負擔,便于用戶理解和操作,從而解決了用戶難于定義 基于XACML的ABAC策略的問題;同時由于基于XACML的ABAC策略是自動生成的,避免了用 戶以人工方式寫出復雜的基于XACML的ABAC策略過程中容易出現錯誤的問題,從而保證了 基于XACML的ABAC策略的準確性。 下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
圖1為本發明訪問控制策略生成方法實施例一的流程圖; 圖2為本發明訪問控制策略生成方法實施例二的流程圖; 圖3為本發明ABAC策略視圖模板的結構示意圖; 圖4為本發明XACML模板的結構示意圖; 圖5為本發明XACML模板的整體結構示意圖; 圖6為本發明ABAC策略視圖模板與XACML模板之間的映射規則的結構示意圖; 圖7為本發明將ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策 略的方法的流程圖; 圖8為本發明實體約束表達式轉換成XACML策略模板中元素的示意圖; 圖9為本發明原子約束表達式轉換為XACML模板〈A卯ly〉的流程圖; 圖10為本發明原子約束表達式轉換成的XACML策略模板中元素的示意圖; 圖11為本發明復合約束表達式的多叉樹的結構示意圖; 圖12為本發明多叉樹轉換成的XACML策略模板中元素的示意圖; 圖13為本發明訪問控制裝置實施例一的結構示意圖; 圖14為本發明訪問控制裝置實施例二的結構示意圖。
具體實施例方式
圖1為本發明訪問控制策略生成方法實施例一的流程圖,如圖1所示,該方法包 括 步驟101、根據用戶通過預先建立的ABAC策略視圖模板輸入的ABAC策略信息,生 成ABAC策略表達式; 步驟102、根據預先設置的ABAC策略視圖模板與XACML模板之間的映射規則,將 ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。 本實施例的技術方案中根據輸入的ABAC策略信息生成ABAC策略表達式,再通過 設置的映射規則將ABAC策略表達式自動轉換成基于XACML的ABAC策略,在此過程中用戶 只需通過ABAC策略視圖模板輸入一些簡單的ABAC策略信息,無需以人工方式寫出復雜的 基于XACML的ABAC策略,減輕了用戶的負擔,便于用戶理解和操作,從而解決了用戶難于定 義基于XACML的ABAC策略的問題;同時由于該方法中基于XACML的ABAC策略是自動生成 的,避免了用戶以人工方式寫出復雜的基于XACML的ABAC策略過程中容易出現錯誤的問 題,從而保證了基于XACML的ABAC策略的準確性。 圖2為本發明訪問控制策略生成方法實施例二的流程圖,如圖2所示,
步驟201、建立ABAC策略視圖模板; ABAC策略視圖模板是直接面向用戶的ABAC策略表達,用戶可以通過該ABAC策略 視圖模板輸入ABAC策略信息。實際操作中,ABAC策略視圖模板可以向用戶提供一個進行策 略定義的視圖界面,用戶可以根據該視圖界面的提示輸入自己所需的ABAC策略信息,從而 完成對ABAC策略的定義。圖3為本發明ABAC策略視圖模板的結構示意圖,如圖3所示,由 于XACML模板在結構上具有樹狀結構的特征,所以ABAC策略視圖模板也是以樹狀結構表示 的,樹狀結構是以節點的形式組織屬性定義和策略定義中的各個元素。ABAC策略視圖模板
6可包括屬性定義和策略定義二個部分,屬性定義可包括主體屬性集、資源屬性集、授權屬性 集和環境屬性集四種實體屬性集。每個實體屬性集均包括多個實體屬性,即多個原子屬性。 策略定義可包括若干策略,每個策略包括若干規則,每條規則均可包括主體約束集、資源約 束集、授權約束集和環境約束集四種實體約束集。每個實體約束集均可包括多個實體約束, 即多個原子約束和多個復合約束。用戶可以通過定義各類實體屬性集下包括的原子屬性進 行屬性定義,即定義實體約束中要使用的原子屬性;用戶還可以通過定義各個實體約束集 包括的原子約束和/或復合約束進行安全策略的定義。其中,原子約束還可稱為簡單約束 (Simple Rule,簡稱SR),其可以通過例如(屬性,操作符,屬性值)表達式或者(屬性,操 作符,屬性)表達式來表示;復合約束(Complex Rule,簡稱CR)為各原子約束的任意的邏 輯復合,例如al、a2和a3為三個原子約束表達式,則al and(a2 or a3)即為一條復合約束 表達式。采用樹狀結構組織ABAC策略視圖模板,對于用戶來說易于理解、便于操作,并且可 以使ABAC策略視圖模板中的元素與XACML模板中的元素實現完全映射以保證從ABAC策略 表達式到基于XACML的ABAC策略轉換的順利進行。
步驟202 、建立XACML模板; 本實施例中可以利用XACML標準中定義的38種元素對ABAC策略進行描述,從而 生成基于XACML的ABAC策略。例如,其常用的元素包括〈Policy〉(策略)、〈Rule〉(規則)、 〈Target〉(目標)、〈A卯ly〉(請求)、〈Condition〉(條件)等,實際應用中,可以根據需要 利用XACML定義的元素中的其它元素對ABAC策略進行描述。圖4為本發明XACML模板的 結構示意圖,如圖4所示,XACML模板為樹狀結構,圖4的XACML模板中僅列出了一些外層 的元素,例如圖4中的〈Policy〉、〈Rule〉、〈Target〉、〈A卯ly〉以及〈Condition〉元素,其中 〈Policy〉和〈Rule〉為XACML模板的二種頂層元素,而內層的元素在此沒有詳細列出,并且 該XACML模板僅為一種示例,不能成為對本發明技術方案的限制。 其中,〈Target〉本質上是一個布爾表達式,其固定元素結構表達了一種固定 的邏輯關系。〈Target〉可中以包括四個實體元素集合,分別是〈Sub jects〉(主體)、 〈Resources〉(資源)、〈Actions〉(授權)禾口 〈Enviro騰nts〉(環境),每一個實體元素 集合中可以包含一個或多個相應的實體元素,例如,〈Subjects〉中可以包括一個或多個 〈Subject〉、 〈Resource〉中可以包括一個或多個〈Resource〉、 〈Action〉中可以包括一個或 多個〈Action〉以及〈Environment〉中可以包括一個或多個〈Environment〉。上述每一個實 體元素還可以包括一個或多個相應的實體匹配元素,分別是〈SubjectMatch〉(主體匹配)、 〈ResourceMatch〉(資源匹配)、〈ActionMatch〉(授權匹配)禾口 〈Enviro騰ntMatch〉(環境 匹配)。上述〈Target〉中的元素用于描述具體的ABAC策略,因圖4僅為XACML模板的示意 圖,所以上述〈Target〉中的元素在圖4中未示出。 〈Condition〉本質上也是一個布爾表達式,用來表示資源訪問請求應滿足的約束 條件。當某一請求通過〈Rule〉中〈Target〉的評估,如果該〈Rule〉中〈Condition〉存在, 則使用〈Condition〉進行進一步的計算。 〈Target〉與〈Condition〉的區別在于〈Target〉具有固定的元素結構和計算邏 輯,〈Condition〉雖然不具備上述特點,但是它更加靈活,策略編寫者甚至可以使用各種元 素在〈Condition〉中構造和〈Target〉相同的結構;〈Target〉中最終表達的是一種屬性值 與屬性間的簡單匹配關系,這是因為〈Target〉的作用是索引,考慮到效率問題,其匹配關系不能定義的過于復雜,而在〈Condition〉中,可以定義更加復雜的匹配關系,比如可以在 表達式中的屬性值、屬性和子表達式中任取二種以構造具有實際意義的匹配關系。
為進一步說明XACML模板中的各種元素,可參見圖5,圖5為本發明XACML模板的 整體結構示意圖。 一條策略〈Policy〉中必須包含一個目標〈Target〉元素,用于在策略查 找的過程中,確定策略是否適合用于對指定的請求進行訪問控制。 一條策略中可以包含0 條、1條或多條規則〈Rule〉,策略中提供了標準的規則組合算法來處理多條規則對同一請 求進行評估時出現的沖突,其中當策略中包含0條規則時表示該條策略不對訪問請求進行 控制。規則是表達訪問控制策略語義的最小元素,包括實體約束,實體約束的邏輯表達式構 成條件〈Condition〉,該條件用來對請求進行評估,以便于使規則給出決策結果。規則不能 獨立存在,它必須被封裝在某條策略中。基于XACML的ABAC策略中的規則主要在〈Target〉 或〈Condition〉元素中定義。 步驟203、設置ABAC策略視圖模板與XACML模板之間的映射規則;
設置的ABAC策略視圖模板與XACML模板之間的映射規則要符合以下原則保證 ABAC策略表達式轉換成基于XACML的ABAC策略過程中,ABAC策略表達式中的各個實體約 束不丟失,以及各實體約束間的邏輯關系不改變。 在上述原則下,設置的ABAC策略視圖模板與XACML模板之間的映射規則可以如圖 6所示,圖6為本發明ABAC策略視圖模板與XACML模板之間的映射規則的結構示意圖。ABAC 策略視圖模板與XACML模板之間的映射規則可包括以下二個部分ABAC策略視圖模板中實 體屬性集與XACML模板中元素之間的映射以及ABAC策略視圖模板中實體約束集與XACML 模板中元素之間的映射。其中,ABAC策略視圖模板的實體屬性集中的每個實體屬性均直接 映射到XACML模板中〈Target〉或者〈Condition〉中的元素Attribute ID (屬性標識)。而 ABAC策略視圖模板中的實體約束集中的實體約束可映射到〈Target〉中的〈Entity〉或者 〈Condition>中的〈Apply>。 步驟204、根據用戶通過ABAC策略視圖模板輸入的ABAC策略信息,生成ABAC策略 表達式; 用戶通過ABAC策略視圖模板輸入ABAC策略信息,ABAC策略信息可以包括屬性定 義以及策略定義中各元素(具體參見圖3)的內容,例如,用戶可以輸入各實體屬性集中的 原子屬性的內容、各實體約束集中的原子約束以及復合約束的內容,以及策略名,規則名等 ABAC策略信息。特別地,用戶輸入的ABAC策略信息可以為空集,原子屬性的內容、各實體約 束集中的原子約束以及復合約束的內容等均為空集,即用戶可以不輸入上述ABAC策略信息。
根據用戶輸入的ABAC策略信息生成ABAC策略表達式。該ABAC策略表達式在包 括原子屬性表達式的基礎上,根據策略定義的需要還可以包括原子約束表達式和/或復合 約束表達式。特別地,ABAC策略表達式還可以為空策略,即ABAC策略表達式中既不包括原 子屬性表達式,也不包括原子約束表達式和復合約束表達式,ABAC策略表達式為一個空集 合。 步驟205、根據ABAC策略視圖與XACML模板之間的映射規則,將ABAC策略表達式 轉換成符合XACML模板的基于XACML的ABAC策略; 具體參見圖7,圖7為本發明將ABAC策略表達式轉換成符合XACML模板的基于 XACML的ABAC策略的方法的流程圖,步驟205具體包括
步驟2051 、將ABAC策略表達式中的原子屬性表達式轉換成XACML模板中 〈Target>或者〈Condition>中的Attribute ID ; 步驟2052 、將所述ABAC策略表達式中的原子約束表達式和/或復合約束表達式轉 換成XACML模板的〈Rule〉中的〈Target〉中的〈Entity〉或者〈Condition〉中的〈A卯ly〉;
ABAC策略視圖模板中,各實體約束集中的實體約束之間的關系是平等的,根據其 生成的各表達式之間的關系也是平等的。而在XACML策略模板中,〈Target〉和〈Condition〉 中雖然都可以容納各實體約束集中的實體約束表達式,但是二者的結構和作用有所不同。 〈Target〉 一般容納原子約束表達式,用于確定策略或規則是否適合用于對某一請求進行決 策;〈Condition〉是規則的主體,一般由復雜的布爾表達式構成,用于對請求進行決策。因 為布爾表達式過于復雜會影響策略的驗證效率,所以應將能被快速決策的實體約束表達式 放在〈Target〉中,這一方面能夠利用〈Target〉中實體約束表達式的過濾作用避免不必要 的〈Condition〉驗證,另一方面也減小了 〈Condition〉的復雜度,從而提高策略的驗證效 率。 因此,為保證最終生成的基于XACML的ABAC策略具有良好的驗證效率,首先將所 述ABAC策略表達式中的原子約束表達式和/或復合約束表達式按照分類規則進行分類處 理,也就是按照各表達式的復雜程度進行分類,其中,原子約束表達式可以是如(第一操作 數,操作符,第二操作數)形式的表達式,其中,第一操作數可以為屬性,第二操作數可以為 屬性或者屬性值,即(第一操作數,操作符,第二操作數)可以為(屬性,操作符,屬性值) 或者(屬性,操作符,屬性)形式的表達式,其表示屬性與屬性值或兩個不同的屬性之間的 關系運算,其中,屬性和屬性值可以為簡單類型值,具體分類規則如下
l)SRO :形如(屬性,操作符,屬性值)的原子約束表達式,其中屬性為各種實體的 id、主體白勺ip—address或dns—name白勺——禾中。 2)SR1 :形如(屬性,操作符,屬性值)的原子約束表達式,其中屬性不屬于各種實 體的id,主體的ip-address或者dns-n咖e。 3)SR2:SR0、SR1之外的原子約束表達式,例如(屬性,操作符,屬性)形式的原子 約束表達式。
基于上述對原子約束表達式的分類,進一步對復合約束表達式進行分類
l)CRO :由SR0中原子約束表達式之間的"或"關系構成的復合約束表達式。
2)CR1 :由SR0和SR1中原子約束表達式之間的"或"關系構成的復合約束表達式。
3)CR2 :由SR0和SR1中原子約束表達式之間的"與"關系構成的復合約束表達式。
4)CR3 :CR0、CR1以及CR2之外的其它復合約束表達式。 綜上所述,按照上述分類規則,可得到如下分類結果原子約束表達式可分為 SRO、 SR1和SR2三種類型,而復合約束表達式可分為CRO、 CR1、 CR2和CR3四種類型。
將分類結果按照分配規則轉換成XACML模板〈Rule〉或者〈Condition〉;分配規則 主要包括各分類結果中各實體約束表達式的復雜程度、各個分類結果中各實體約束表達式 間的相關性大小以及〈Target〉的長度三方面因素。 具體地,可以參見圖8,圖8為本發明實體約束表達式轉換成XACML策略模板中元 素的示意圖。XACML模板中〈Target〉中的〈Entities〉可分為三種類型①〈Entities〉中 只包含一個〈Entity〉,并且〈Entity〉中只包含一個〈EntityMatch〉;②〈Entities〉中包含多個〈Entity〉,每個〈Entity〉中只包含一個〈EntityMatch〉;③〈Entities〉中包含一個 〈Entity〉,并且〈Entity〉中包含多個〈EntityMatch〉。上述XACML模板中〈Entities〉的數 量可以為多個,〈Condition〉中〈A卯ly〉的數量也可以為多個,圖中僅示出一個作為示例。 圖8中,SR0型原子約束表達式轉換成類型①的〈Entity〉,因類型①的〈Entities〉中只包 含一個〈Entity〉,〈Entity〉中只包含一個〈EntityMatch〉,所以轉換成〈Entity〉的實際過 程就是轉換成〈Entity〉中的〈EntityMatch〉;部分CR0中的復合約束表達式轉換成類型 ②中的一個〈Entity〉,部分CRl中的復合約束表達式轉換成類型②中的另一個〈Entity〉, 因類型②的〈Entities〉中每個〈Entity〉中只包含 一 個〈EntityMatch〉,所以轉換成 〈Entity〉的實際過程就是轉換成〈Entity〉中的〈EntityMatch〉;部分SR1型原子約束表達 式轉換成類型③的〈Entity〉中的一個〈EntityMatch〉,部分CR2型的復合約束表達式轉換 成類型③的〈Entity〉中的另一個〈EntityMatch〉 ;SR1中的其它原子約束表達式每個轉換 成〈Condition〉中的一個〈Apply〉,CRl中的其它復合約束表達式每個轉換成〈Condition〉 中的一個或多個〈A卯ly〉,CR2中的其它復合約束表達式每個轉換成〈Condition〉中的一個 或多個〈Apply〉。圖8中的轉換是在對各種約束進行分類的基礎上,再按照分配規則進行分 配的結果,該分配規則充分考慮了各分類結果中各實體約束表達式的復雜程度、各個分類 結果內部各實體約束表達式間的相關性大小以及〈Target〉的長度,按照上述分類規則以 及分配規則轉換成的基于XACML的ABAC策略,具有良好的驗證效率。圖8中的示例中轉換 成〈Entity〉或〈Apply〉的實體約束表達式均包括原子約束表達式和復合約束表達式,實際 策略定義過程中還可以包括僅有原子約束表達式或者僅有復合約束表達式的情況。
在轉換過程中,按照分配規則將所述分類結果中適合轉換成XACML模板〈Rule〉中 的〈Target〉中的〈Entity〉的原子約束表達式和/或復合約束表達式轉換成〈Rule〉中的 〈Target〉中的〈Entity〉。在具體執行過程中,將分類結果分別放入到不同的List(列表) 中,即將不同類型的原子約束表達式和復合約束表達式放入不同的List,然后對List進行 掃描篩選,List中的原子約束表達式或復合約束表達式位置越靠前其優先級越高,然后將 原子約束表達式或復合約束表達式進行分解,按照分配規則,將其中適合轉換成〈Target〉 的原子約束表達式和/或復合約束表達式轉換成〈Target〉中的〈Entity〉,在轉換過程中原 子約束表達式或復合約束表達式按優先級依次轉換,對優先級高的原子約束表達式或復合 約束表達先進行轉換。將未轉換成〈Target〉的原子約束表達式和/或復合約束表達式轉 換成XACML模板〈Rule〉中的〈Condition〉中的〈A卯ly〉。 其中,原子約束表達式轉換成〈Rule〉中的元素〈Condition〉中的〈Apply〉的步驟 可如圖9所示,圖9為本發明原子約束表達式轉換為XACML模板〈A卯ly〉的流程圖,原子 約束表達式為(第一操作數,操作符,第二操作數)形式的原子約束表達式,其轉換過程包 括 步驟2061 、創建〈A卯ly〉; 步驟2062、將原子約束表達式的操作符轉換成〈A卯ly〉中的Functionld ; 步驟2063、將原子約束表達式的第一操作數轉換成〈A卯ly〉中的元素; 步驟2064、將原子約束表達式的第二操作數轉換成〈A卯ly〉中的元素。 具體地,可參見圖10,圖10為本發明原子約束表達式轉換成的XACML策略模板中
元素的示意圖,本實施例中原子約束表達式為(第一操作數,操作符,第二操作數),將操作符轉換成〈A卯ly〉中的Functionld,具體地,轉換成操作符對應的XACML元素,即以XACML 語言表達的操作符;將第一操作數轉換成〈Apply〉中的元素,具體地,轉換成第一操作數對 應的XACML元素,即以XACML語言表達的第一操作數;將第二操作數轉換成〈A卯ly〉中的元 素,具體地,轉換成第二操作數對應的XACML元素,即以XACML語言表達的第二操作數。圖 10中的轉換后的"操作符"、"第一操作數"和"第二操作數"具體應為其對應的XACML元素, 在此僅作為一種示例以說明原子約束表達式的轉換過程。 其中,復合約束表達式轉換成〈Rule〉中的元素〈Condition〉中的〈A卯ly〉可采用 樹的遍歷這一運算方法,本實施例中采用的是先序遍歷。 首先,將復合約束表達式按照優先級順序轉換成多叉樹,優先級順序是指復合約 束表達式中的各元素從左到右的排列順序; 例如,對于復合約束表達式al and a2 and a3 or(a4 or a5)and a6,其轉換成的 多叉樹可參見圖11,圖11為本發明復合約束表達式的多叉樹的結構示意圖,圖11中的多叉 樹包括多個節點,分別為al、a2、a3、a4、a5、a6、and禾P or,其中,al、 a2、 a3、 a4、 a5、 a6為 原子約束表達式,and和or為邏輯連接詞,并且多叉樹分為多個層次。
其次,對多叉樹中的節點進行先序遍歷,將遍歷到的節點依次轉換成〈Condition〉 中的〈A卯ly〉; 多叉樹先序遍歷的節點依次為or、 and、 al、 a2、 a3、 and、 or、 a4、 a5和a6,按照上 述順序將遍歷到的節點依次轉換成〈Condition〉中的〈A卯ly〉。其中,將遍歷到的邏輯連接 詞轉換成〈Apply〉中的Functionld ;將遍歷到的原子約束表達式轉換成〈A卯ly〉。具體地, 可參見圖12,圖12為本發明多叉樹轉換成的XACML策略模板中元素的示意圖,以圖11中的 多叉樹為例。將頂層的邏輯連接詞or轉換為〈A卯ly〉中的Functionld ;將原子約束表達 式al、a2、a3的邏輯連接詞and轉換成〈A卯ly〉中的Functionld,該〈Apply〉為or轉換成 的〈A卯ly〉的下一層;將原子約束表達式al、 a2、 a3轉換成〈A卯ly〉中的元素,該〈Apply〉 為and轉換成的〈Apply〉,也就是說該〈Apply〉中Functionld中的and表明了 al、 a2、 a3 的邏輯關系;將另一個邏輯連接詞and轉換成另一個〈A卯ly〉中的Functionld,該〈A卯ly〉 與al、 a2、 a3的邏輯連接詞and轉換成的〈A卯ly〉為并列關系;將原子約束表達式a4、 a5 的邏輯連接詞or轉換為〈A卯ly〉中的Functionld,該〈A卯ly〉為邏輯連接詞and轉換成的 〈A卯ly〉的下一層;將原子約束表達式a4、 a5轉換成〈A卯ly〉中的元素,該〈A卯ly〉為or 轉換成的〈A卯ly〉,也就是說該〈A卯ly〉中Functionld中的or表明了 a4、a5的邏輯關系; 將原子約束表達式a6轉換成〈A卯ly〉中的元素,〈Apply〉為頂層的邏輯連接詞or轉換成 的〈A卯ly〉。其中對al、a2、a3、a4、a5和a6的轉換與原子約束表達式轉換成〈Condition〉 中的〈A卯ly〉的方法相同,可以參見圖9和圖10,此處不再詳細描述。圖12中的轉換后的 "操作符"、各個"第一操作數"和各個"第二操作數"具體應為其對應的XACML元素,在此僅 作為一種示例以說明復合約束表達式的轉換過程。 由上述轉換過程可以得出,多叉樹的層次數對應〈Condition〉中〈A卯ly〉的層次 數。如果多叉樹的某層的節點為邏輯連接詞,則節點轉換后對應該層的〈Apply〉中只含有 Functionld這一個元素,并且該元素的值為邏輯連接詞代表的邏輯關系。如果某層節點 為al、 a2等原子約束表達式,則原子約束表達式中的二個操作數轉換為〈Appl y>中的元 素,如果多叉樹的某一層包含多個節點,那么這些節點每個轉換為一個〈A卯ly〉,轉換成的
11〈A卯ly〉是并列關系,并且這些〈A卯ly〉的邏輯關系為其上層〈A卯ly〉的Functionld中所 指示的邏輯關系。 步驟2053、對所有〈Target〉中的〈Entity〉中的〈Resource〉進行取并集處理,生 成〈Policy〉中的〈Target〉。 〈Policy〉中的〈Target〉起到對策略進行索引的作用,但由于ABAC策略視圖模板 的策略中并不直接包含各實體約束,因此需要利用策略中的每條規則轉換成的〈Rule〉中 的〈Target〉來構造〈Policy〉的〈Target〉。 特別地,當ABAC策略表達式為空策略時,其轉換成的基于XACML的ABAC策略為空
隹A 朱n o 本實施例的技術方案中根據輸入的ABAC策略信息生成ABAC策略表達式,再通過 設置的映射規則將ABAC策略表達式自動轉換成基于XACML的ABAC策略,在此過程中用戶 只需通過ABAC策略視圖模板輸入一些簡單的ABAC策略信息,無需以人工方式寫出復雜的 基于XACML的ABAC策略,減輕了用戶的負擔,便于用戶理解和操作,從而解決了用戶難于定 義基于XACML的ABAC策略的問題;同時由于該方法中基于XACML的ABAC策略是自動生成 的,避免了用戶以人工方式寫出復雜的基于XACML的ABAC策略過程中容易出現錯誤的問 題,從而保證了基于XACML的ABAC策略的準確性。 圖13為本發明訪問控制裝置實施例一的結構示意圖,如圖13所示,該裝置包括相 互連接的生成模塊1和轉換模塊2。生成模塊1根據用戶通過預先建立的ABAC策略視圖 模板輸入的ABAC策略信息,生成ABAC策略表達式;轉換模塊2根據預先設置的ABAC策略 視圖模板與XACML模板之間的映射規則,將生成模塊1生成的ABAC策略表達式轉換成符合 XACML模板的基于XACML的ABAC策略。 圖14為本發明訪問控制裝置實施例二的結構示意圖,如圖14所示,本實施例在實 施例一的基礎上增設了第一建立模塊3、第二建立模塊4以及設置模塊5。第一建立模塊3 分別與生成模塊1以及設置模塊5連接,第二建立模塊4與設置模塊5連接,設置模塊5與 轉換模塊2連接。第一建立模塊3建立ABAC策略視圖模板;第二建立模塊4建立XACML模 板;設置模塊5設置第一建立模塊3建立的ABAC策略視圖模板與第二建立模塊4建立的 XACML模板之間的映射規則;用戶通過第一建立模塊3建立的ABAC策略視圖模板輸入ABAC 策略信息,并由第一建立模塊3將ABAC策略信息發送給生成模塊1。 本實施例中的訪問控制裝置根據用戶輸入的ABAC策略信息生成ABAC策略表達 式,再通過設置的映射規則將ABAC策略表達式自動轉換成基于XACML的ABAC策略,在此過 程中用戶只需通過ABAC策略視圖模板輸入一些簡單的ABAC策略信息,無需以人工方式寫 出復雜的基于XACML的ABAC策略,減輕了用戶的負擔,便于用戶理解和操作,從而解決了 用戶難于定義基于XACML的ABAC策略的問題;同時由于訪問控制裝置可以自動生成基于 XACML的ABAC策略,避免了用戶以人工方式寫出復雜的基于XACML的ABAC策略過程中容易 出現錯誤的問題,從而保證了基于XACML的ABAC策略的準確性。 最后應說明的是以上實施例僅用以說明本發明的技術方案而非對其進行限制, 盡管參照較佳實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依 然可以對本發明的技術方案進行修改或者等同替換,而這些修改或者等同替換亦不能使修 改后的技術方案脫離本發明技術方案的精神和范圍。
權利要求
一種訪問控制策略生成方法,其特征在于,包括根據用戶通過預先建立的基于屬性的訪問控制ABAC策略視圖模板輸入的ABAC策略信息,生成ABAC策略表達式;根據預先設置的ABAC策略視圖模板與可擴展訪問控制標記語言XACML模板之間的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。
2. 根據權利要求1所述的方法,其特征在于,所述ABAC策略表達式包括原子屬性表達式。
3. 根據權利要求2所述的方法,其特征在于,所述ABAC策略表達式還包括原子約束表 達式和/或復合約束表達式。
4. 根據權利要求l所述的方法,其特征在于,所述根據用戶通過預先建立的ABAC策略 視圖模板輸入的ABAC策略信息,生成ABAC策略表達式之前還包括建立所述ABAC策略視圖模板。
5. 根據權利要求1所述的方法,其特征在于,所述根據預先設置的ABAC策略視圖模 板與XACML模板之間的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的基于 XACML的ABAC策略之前還包括建立所述XACML模板。
6. 根據權利要求1所述的方法,其特征在于,所述根據預先設置的ABAC策略視圖模 板與XACML模板之間的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的基于 XACML的ABAC策略之前還包括設置所述ABAC策略視圖模板與所述XACML模板之間的映射規則。
7. 根據權利要求1至6任一所述的方法,其特征在于,所述根據預先設置的ABAC策略 視圖模板與XACML模板之間的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的 基于XACML的ABAC策略包括將所述ABAC策略表達式中的原子屬性表達式轉換成XACML模板的規則〈Rule〉中的目 標〈Target〉或者條件〈Condition〉中的屬性標識Attribute ID ;將所述ABAC策略表達式中的原子約束表達式和/或復合約束表達式轉換成XACML模 板的〈Rule〉中的〈Target〉中的實體〈Entity〉或者〈Condition〉中的請求〈Apply〉;對所有〈Rule〉中的〈Target〉中的〈Entity〉中的資源〈Resource〉進行取并集處理, 生成策略〈Policy〉的〈Target〉。
8. 根據權利要求7所述的方法,其特征在于,將所述ABAC策略表達式中的原子約束表 達式和/或復合約束表達式轉換成XACML模板的〈Rule〉中的〈Target〉中的〈Entity〉或 者〈Condition〉中的〈A卯ly〉包括將所述ABAC策略表達式中的原子約束表達式和/或復合約束表達式按照分類規則進 行分類處理,得出分類結果;按照分配規則將所述分類結果中適合轉換成XACML模板〈Rule〉中的〈Target〉中的 〈Entity〉的原子約束表達式和/或復合約束表達式轉換成〈Rule〉中的〈Target〉中的 〈Entity> ;將分類結果中未轉換成〈Target〉中的〈Entity〉的原子約束表達式和/或復合約束表 達式轉換成XACML模板〈Rule〉中的元素〈Condition〉。
9. 一種訪問控制策略生成裝置,其特征在于,包括生成模塊,用于根據用戶通過預先建立的ABAC策略視圖模板輸入的ABAC策略信息,生 成ABAC策略表達式;轉換模塊,用于根據預先設置的ABAC策略視圖模板與XACML模板之間的映射規則,將 所述ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。
10. 根據權利要求9所述的裝置,其特征在于,還包括 第一建立模塊,用于建立所述ABAC策略視圖模板; 第二建立模塊,用于建立所述XACML模板;設置模塊,用于設置所述ABAC策略視圖模板與所述XACML模板之間的映射規則。
全文摘要
本發明公開了一種訪問控制策略生成方法及裝置。方法包括根據用戶通過預先建立的基于屬性的訪問控制ABAC策略視圖模板輸入的ABAC策略信息,生成ABAC策略表達式;根據預先設置的ABAC策略視圖模板與可擴展訪問控制標記語言XACML模板之間的映射規則,將所述ABAC策略表達式轉換成符合XACML模板的基于XACML的ABAC策略。本發明中用戶只需通過ABAC策略視圖模板輸入一些簡單的ABAC策略信息,無需以人工方式寫出復雜的基于XACML的ABAC策略,從而解決了用戶難于定義基于XACML的ABAC策略的問題,并且避免了用戶以人工方式寫出復雜的基于XACML的ABAC策略過程中容易出現錯誤的問題,從而保證了基于XACML的ABAC策略的準確性。
文檔編號H04L29/06GK101771683SQ20091007611
公開日2010年7月7日 申請日期2009年1月7日 優先權日2009年1月7日
發明者倪文婷, 江川, 葛琨, 郎波, 雷凱 申請人:北京航空航天大學