本文將介紹數智化開發管理平臺豬齒魚Choerodon的權限體系,幫助豬齒魚用戶從自身需求出發,進行更細粒度的權限控制,本文也將對豬齒魚中所應用的 RBAC 權限模型和 HZERO(漢得企業級 PaaS 平臺)的角色權限體系進行簡要介紹,
一、RBAC 權限模型
豬齒魚 Choerodon 權限體系基于RBAC權限模型而建立,以下先簡要介紹下RBAC模型,
RBAC是Role Based Access Control的英文縮寫,意思是基于角色的訪問控制,RBAC認為權限的程序可以抽象概括為:判斷“Who是否可以對What進行How的訪問操作”這個邏輯運算式的值是否為True的求解程序,即,將權限問題轉換為Who、What、How的問題,Who、What、How構成了訪問權限三元組,其中who是權限的擁有者或主體(User、Role),What是資源或物件(Resource、Class),How指具體操作(View, Edit),
RBAC權限模型如下:

圖片來源于網路
相對于直接將權限授予用戶個人來說,RBAC權限模型增加了角色,授權會更加的靈活方便,角色可以理解為一定數量的權限集合,權限的載體,
RBAC主要包含四個子模型:RBAC0、RBAC1、RBAC2和RBAC3,整體又叫做RBAC96模型族,

圖片來源于網路
RBAC0:RBAC0是權限管理的核心部分,其他的版本都是建立在RBAC0的基礎上,簡單來說,RBAC0就是一個用戶擁有若干角色,每一個角色擁有若干權限,這樣就構造成“用戶-角色-權限”的授權模型,在這種模型中,用戶與角色之間,角色與權限之間,一般都是多對多的關系,并且將關系作為一個單獨的概念來使用,這樣可以在關系概念中加入一些其他的屬性,
RBAC1:RBAC1建立在RBAC0的基礎上,引入了角色繼承的概念,有了繼承,角色就有了上下級或者等級關系,每個等級權限不同,從而實作更細顆粒度的權限管理,比如:一個部門有正副經理,副經理的權限只有正經理的部分權限,這時候就可以采用RBAC1權限模型,
RBAC2:RBAC2在RBAC0模型的基礎之上,增加了角色約束,主要約束哪些操作是可進行的,哪些是不可進行,
RBAC3:RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分層,也包括可以增加各種限制,
二、HZERO角色
豬齒魚使用漢得企業級PaaS平臺HZERO作為微服務開發框架,豬齒魚的角色權限控制也使用了HZERO的角色權限體系,
HZERO是一個企業級PaaS平臺,結合漢得多年的專案實施經驗,抽象、封裝了大量的應用標準服務及功能,以幫助企業產品研發、專案實施更加高效便捷,避免大量產品和專案重復造輪子帶來的成本浪費,
在HZERO角色體系中,所有角色都是屬于平臺(超級)管理員或租戶(超級)管理員的子孫角色,平臺管理員擁有所有平臺級權限,創建平臺級權限集時,所有平臺級權限會被自動分配到平臺管理員上;租戶管理員擁有所有租戶級權限,創建租戶級權限集時,所有租戶級權限會被自動分配到租戶管理員上,所以,創建權限集后,只能由對應層級的超級管理員往下分配權限,
HZERO角色體系分創建體系和繼承體系,創建體系表現在父、子角色關系上,繼承體系表現在繼承角色關系上,兩種體系的區別是:在分配權限時,例如,在給租戶模板角色分配權限后,所有繼承自該租戶模板角色的角色將自動擁有該租戶模板角色被分配的權限,用戶可以一鍵往下分配繼承自該租戶角色模板的角色權限;創建體系則不能一鍵往下分配子角色的權限,在回收權限時,會回收整個創建體系、繼承體系的權限,
具體使用詳情可參考 HZERO角色管理檔案,
三、豬齒魚預定義角色
豬齒魚預定義角色是豬齒魚權限的基礎,由平臺默認創建,包括以下四個角色:
- 組織管理員角色模板:組織層所有權限
- 組織成員角色模板:組織層部分查看權限
- 專案所有者角色模板:專案層所有權限
- 專案成員角色模板:專案層部分操作權限
創建組織時,會基于這四個模板創建對應組織的相關角色,即所有組織的四個預定義角色,都繼承自這四個角色模板;通過HZERO的繼承體系,可以一鍵往下分配權限或者回收權限,
四、角色標簽
豬齒魚通過角色標簽區分是組織層角色還是專案層角色、區分對應用服務的Gitlab權限,以此實作業務權限的靈活管理與有效隔離,
使用平臺管理員角色,進入平臺管理-》HZERO選單-》角色管理選單,進入HZERO標簽管理界面,選擇角色標簽,可以查看豬齒魚的所有角色標簽及其含義,

該頁面上可編輯的只有TENANT_ROLE、PROJECT_ROLE、GITLAB_OWNER、GITLAB_DEVELOPER等四個標簽,
首先介紹進行層級區分的兩個標簽:
- TENANT_ROLE:用于標識豬齒魚租戶層角色,該標簽有兩個含義,一是用于區分HZERO的角色與豬齒魚的角色,二是用于區分豬齒魚的組織層角色和專案層角色,
- PROJECT_ROLE:用于標識豬齒魚的專案層角色,含義同TENANT_ROLE,
值得注意的是,只有擁有以上兩個中任意一個標簽的角色,才能在管理中心-》角色管理進行查看和編輯,
另外,還有控制GitLab權限的兩個標簽:
- GITLAB_OWNER:當為用戶分配擁有該角色標簽的角色時,會自動為該用戶分配專案下所有應用服務在GitLab的Owner權限,
- GITLAB_DEVELOPER:同GITLAB_OWNER,會自動為該用戶分配專案下所有應用服務在GitLab的Developer權限,
以上兩個標簽的設定主要是為了解決用戶擁有專案下的選單權限,但是,在實際操作程序中,卻沒有GitLab權限而操作失敗這一問題;但是因為這兩個標簽是給專案下所有應用服務分配權限,所以需謹慎使用,該標簽需要配合PROJECT_ROLE標簽使用,
附:豬齒魚GitLab權限說明
1.豬齒魚的組織所有者、專案所有者角色,默認擁有gitlab_owner角色標簽,擁有專案下所有應用服務在GitLab的Owner權限;
2.對于專案成員默認沒有Gitlab任何權限,可根據需要在代碼管理界面,給用戶分配具體的權限,包括Guest、Repoter等角色;
3.對于自定義角色,可根據需求選擇GITLAB_OWNER或者GITLAB_DEVELOPER角色標簽,
五、自定義角色
了解了角色標簽的含義,我們可以開始創建自定義角色,
您可以在組織層或平臺層找到自定義角色的入口:組織層-》管理中心-》角色管理;平臺層-》角色管理,
1. 組織層角色管理
可以創建、編輯該組織下的所有自定義角色,創建專案層角色時,必須要選擇GitLab角色標簽,以避免擁有選單權限,但是沒有GitLab權限,從而導致操作失敗的情況;在該界面創建的角色,會根據角色層級的不同,自動分配TENANT_ROLE或PROJECT_ROLE角色標簽,且父級角色都是該組織的組織管理員,
具體使用詳情可參考 角色管理幫助手冊,
2.平臺層角色管理
除了創建和編輯角色外,還可以復制和繼承角色,以快速創建自定義角色,比如:您想要創建某個組織層角色(該角色需要擁有組織管理員除了創建專案的操作外的所有權限)時,您可選擇組織管理員角色,點擊“復制”,角色標簽選擇TENANT_ROLE,然后再去掉創建專案權限集即可,
具體使用詳情可參考 HZERO角色管理檔案,
綜上,豬齒魚的權限體系相對完善,豬齒魚用戶不僅可以一鍵分配或回收角色權限,方便快捷地進行權限管理;也可創建自定義角色,進行更細粒度的權限控制,滿足自身的定制化需求,
如果您想嘗試豬齒魚的權限體系,歡迎您申請試用豬齒魚: https://choerodon.com.cn/#/iam/register-organization
參考檔案
- 豬齒魚產品手冊鏈接:https://open.hand-china.com/document-center/doc/product/10177/10608?doc_id=170160&doc_code=37618#%E8%A7%92%E8%89%B2%E7%AE%A1%E7%90%86
- RBAC模型: https://blog.csdn.net/qq_28988969/article/details/100995546
- RBAC的組成:https://zhuanlan.zhihu.com/p/158752542
- HZERO角色管理: https://open.hand-china.com/document-center/doc/component/161/16062?doc_id=154878&doc_code=28929
本文由豬齒魚技術團隊原創,轉載請注明出處
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413023.html
標籤:其他

