閱讀372 返回首頁    go 阿裏雲 go 技術社區[雲棲]


RBAC在CSD下的參考實現

序言:

        權限模塊是MIS係統中不可或缺的重要組成。員工在進行正常的訪問前,服務器往往都需要認證員工的身份。確認員工是否授權,也就是進行訪問控製。訪問控製管理允許被授權的主體(個體或團體組織)對某些資源的訪問,同時拒絕向非授權的主體提供服務。權限模塊的邏輯模型一般形式如下:

       誰(員工/角色)對什麼(應用模塊)是否具有某種操作的授權(授權狀態:grant、deny、revoke等)。即who + what + how操作模型。

       目前業界比較流行的授權模型有RBAC、ACL等。本文主要闡述CSD權限控製模塊的邏輯組成,童鞋們可以根據項目的實際情況和具體架構,在可維護性、靈活性、完整性等方麵對目前的權限模型進行自己的靈活定製。

1. 什麼是RBAC?

       關於訪問控製,人們提出了各種保護數據並加以控製的安全模型,如自主訪問控製(Discretionary Access Control,DAC)、強製訪問控製(MandatoryAccess Control,MAC),它們通常都是基於員工-組的安全模型。而RBAC(Role-Based Access Control)具有簡化管理的優越性,它更適合大型係統的管理應用。訪問控製策略體現在RBAC模型裏是員工-角色、角色-權限和角色-角色之間的關係。NIST(National Institute ofStandards and Technology)製定的RBAC模型體係由4個模型組成,分別是基本模型RBAC0,角色分級模型RBAC1,角色限製模型RBAC2和統一模型RBAC3。

2. RBAC模型體係簡介

      2.1. RBAC0

       (1). U:表示用戶集;R:表示角色集;P:表示權限集;S:表示會話集:

       (2). PR:P×R,是權限到角色的多對多指派:

       (3). UA:U×R,是用戶到角色的多對多指派:

       (4). SU:S→U,會話和用戶的單一映射,user(sn)表示創建會話sn的用戶;

       (5). SR:S→R,會話和角色子集的映射,roles(sn)表示會話sn對應的角色集合;

       (6). 會話sn具有的權限集 P(sn)。

      2.2. RBAC1 & RBAC2

        RBAC1引入角色繼承關係,(一般繼承關係,受限繼承關係),RBAC2模型增加了責任分離關係,它規定了角色被授予員工,或者權限被授予角色時,以及當員工在某一時刻激活某一角色時,所應遵循的強製性規則。

      2.3. RBAC3

        RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關係,又提供了責任分離關係

3.RBAC模型的實現

         這裏,主要從授權模型權限校驗兩部分來討論實現思路。

       3.1 授權模型

         建立如下授權模型:

       下麵,針對授權模型中的幾個關鍵部分進行一下描述:

      A. 授權

       按照RBAC模型,在授權時分為配置資源以及資源的操作、授予角色對資源的操作權限,分配角色給員工這幾步來完成,其中:

       a. 資源配置以及資源的操作需要維護資源與資源操作之間的關聯模型。

       b. 授予角色對資源的的操作權限需要維護資源與角色之間的關聯模型。

       c. 分配角色給員工需要維護角色與員工之間的關聯模型。

       d. 權限的繼承通過角色的自關聯完成,即角色可擁有子角色,子角色繼承父角色的權限

     B. 權限的排斥與包含

       權限的排斥與包含,是通過在資源的操作權限模型中,增加自關聯模型以及定義哪些資源的操作權限是排斥和包含的,在授權時可以看到同樣需要維護的隻是資源權限的自關聯模型。

      3.2 資源權限校驗

       根據上麵的授權模型,在作資源權限校驗的時候需要經過以下幾個步驟:

       A.  判斷員工所在的角色是否擁有對資源進行操作的權限;

       B. 遞歸遍曆員工所在角色的父角色,判斷是否擁有對資源進行操作的權限;

       備注:整個過程是一個遞歸過程,當遍曆員工本身的角色找不到相應的操作權限時,開始進行父類角色的遞歸查找。可以看出,它和JVM加載class前進行唯一加載判斷的法則有著一致的順序:自底向下判斷是否加載過(是否具有操作權限)。

        C. 數據權限的校驗

       RBAC模型將數據映射為RBAC中的資源,對數據的操作則映射為資源的操作,然後將此資源以及資源的操作構成的權限授予角色,將角色分配給員工完成數據權限的授權過程。

       備注:該模型包含數據權限的繼承(自關聯資源模型),數據權限授予主體的多樣性。

4.CSD的權限控製模型

       CSD權限控製引入了員工和組織機構之間的關聯模型,但角色之間的簡單繼承關係帶來了大量的數據冗餘,下麵是CSD的權限控製ER模型:

備注:

涉及到的數據表如下:

APP_USER:登錄用戶相關信息

APP_ROLE:係統角色表

APP_PERMISSION:係統權限表

APP_ORG:組織信息表

APP_ROLE_PERMISSION:角色和權限對應表

APP_USER_ROLE_ORG:用戶在組織中具有的角色信息表

最後更新:2017-04-02 22:16:36

  上一篇:go servlet注意事項
  下一篇:go 我用JS寫的一段創建TABLE,添加行,模煳匹配,根據CHECKBOX刪除內容,創建標題的代碼(刪除完再添加行有計數器的BUG)