3分鐘快速瞭解豬齒魚權限

豬齒魚 Choerodon 數智化開發管理平臺 ,提供協作、測試、DevOps及容器等工具,幫助企業拉通軟件開發和項目管理的需求、設計、開發、部署、測試和運營全流程,全面滿足企業研發管理與工程效率需求,一站式提高管理效率和軟件研發質量,助力團隊效能更快更強更穩定,助推企業數智化轉型升級。

本文將介紹豬齒魚的權限體系,幫助豬齒魚用戶從自身需求出發,進行更細粒度的權限控制。本文也將對豬齒魚中所應用的 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等四個標籤。

首先介紹進行層級區分的兩個標籤:

  1. TENANT_ROLE:用於標識豬齒魚租戶層角色,該標籤有兩個含義,一是用於區分HZERO的角色與豬齒魚的角色,二是用於區分豬齒魚的組織層角色和項目層角色。
  2. PROJECT_ROLE:用於標識豬齒魚的項目層角色,含義同TENANT_ROLE。

值得注意的是,只有擁有以上兩個中任意一個標籤的角色,才能在管理中心-》角色管理進行查看和編輯。

另外,還有控制GitLab權限的兩個標籤:

  1. GITLAB_OWNER:當爲用戶分配擁有該角色標籤的角色時,會自動爲該用戶分配項目下所有應用服務在GitLab的Owner權限。
  2. 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

參考文檔

  1. 豬齒魚產品手冊鏈接: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
  2. RBAC模型: https://blog.csdn.net/qq_28988969/article/details/100995546
  3. RBAC的組成:https://zhuanlan.zhihu.com/p/158752542
  4. HZERO角色管理: https://open.hand-china.com/document-center/doc/component/161/16062?doc_id=154878&doc_code=28929

本文由豬齒魚技術團隊原創,轉載請註明出處:豬齒魚官網

關於豬齒魚

豬齒魚Choerodon數智化效能平臺,提供體系化方法論和協作、測試、DevOps及容器工具,幫助企業拉通需求、設計、開發、部署、測試和運營流程,一站式提高管理效率和質量。從團隊協同到DevOps工具鏈、從平臺工具到體系化方法論,豬齒魚全面滿足協同管理與工程效率需求,貫穿端到端全流程,助力團隊效能更快更強更穩定,幫助企業推動數智化轉型升級。戳此處試用豬齒魚

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章