權限體系設計:融合了組織和崗位的權限模型長啥樣?
文章從RBAC的基本原理出發,結合案例對權限設計中一個職位對應多個崗位的的情況進行了說明,并分享了相關權限模型,供大家一起參考和學習。
傳統RBAC與現實的距離
傳統的RBAC(基于角色的訪問權限控制)是一個經典的權限管理模型,基本原理是不直接對系統種的用戶賦權,而是通過角色作為系統用戶和系統資源之間的中介,將資源權限綁定到角色,再將角色綁定到用戶,來完成整個賦權的流程,從而簡化賦權和修改權限的過程。(多扯一句,這個理念和計算機軟件體系中,大家談到的,當你覺得一個系統太復雜的時候,就給它加一個中間層的“秘笈”不謀而合,可見“世間萬物皆有相通之理”)
上述的基礎的RBAC(維基上命名為RBAC0)簡單易懂,且容易落地。但是實際工作過程中,人們往往會在基礎的RBAC上疊加更多特性,來滿足現狀的需要。比如從用人制度上,一般都會采取“以崗定人”的用人制度。在權限體系中,當人員調換崗位需要更新此人員的各種權限的時候,只需要更新人員對應的組織關系,那么角色權限會自動進行調整,從而減少了管理人員的工作量,也更符合常見的調崗操作方式。
因此,今天我們來討論兩個方面的問題
- 組織架構的特點
- 如何建立組織,崗位和賬戶的關聯模型
先來了解一下組織架構的特點
01 組織架構的特點
組織一般是樹形結構。在同一層的組織里面,有不同的職位,每個職位的權限都不一樣。比如會計和出納擁有不同的權限。
在不同職位之間,存在權限的重合。比如辦公室主任除了擁有辦公室職員的基礎權限,主任還擁有更多的審批管理類權限。
同一個職位會對應多個崗位。同時還會存在一個人身兼多職也就是多個崗位的情況如下圖所示,副總經理這一級組織對應的崗位上,有兩人任職,趙子龍和趙德彪。同時趙子龍除了擔任副總經理的崗位,還擔任了總會計這一級組織里的負責人崗位。
02 組織,崗位,角色,帳號融合后的模型
以上面的組織架構為例,接下來會解密如何設計一個融合了組織和崗位的權限體系。
當然,在此之前需要我們對其一下術語。先來了解一下對每個名詞的定義吧。
- 帳號:每一個真實的人,登錄系統的場景,我們將這個真實的人用【帳號】來代表。
- 資源:系統中的每一個項,比如所有的菜單,所有的數據列表,所有的頁面等。
- 角色:【角色】代表對資源的CRUD控制權限。
- 組織:圖1所示就是一個組織架構
- 崗位:與人相對應,一個崗位只能對應一個人,但一人可以同時擔任多個崗位。
- 職位:同一個類型的崗位,組成一個職位
一般不會直接將【帳號】與【資源】綁定,原因在前言中也說了,這種粒度過細,會讓后期維護的時候非常復雜和耗時。為了方便賦權和后期的維護,可以將【職位】與【角色】綁定。同一個職位下的所有【崗位】擁有同樣的角色。如下圖所示。
說明:副總經理趙德彪,需要對應一個他自己的帳號。這個帳號只代表1個崗位,登陸后,系統檢查這個帳號代表的是崗位C,崗位C在組織架構中的職位是職位B。接下來,系統發現這個職位B對應了4個角色,即角色2~5。每個角色都分別代表了不同的對資源操作的權限,職位B擁有的是這4個角色權限的總和。最終總結起來,趙德彪登陸后,擁有操作資源A,操作資源C和…資源…的權限。
另外一位副總經理趙子龍,需要對應一個他自己的帳號。這個帳號代表了2個崗位,按照上面的邏輯推斷步驟,省略中間過程,最終總結起來就是,趙子龍登陸后,擁有查看資源A,操作資源B和操作資源C的權限。
03 總結
在這篇文章中,首先快速的過了一遍RBAC的基本原理,就是將帳號和角色綁定,角色與資源權限綁定,來實現簡單合理的權限控制。然后介紹了一個真實的“以崗定人”的組織架構,存在一個職位對應多個崗位,一人多崗的特點。最后給出了一個可實際操作的,包含如何設計帶有組織和崗位的權限模型,供參考。
歡迎大家一起討論。
本文由 @花生草 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
崗位和職位是一個意思吧
這個我理解是看公司的定義,個人理解崗位更你干得活有關系,職位是你在公司的地位;比如你的職位是XX部門負責人,崗位是XX項目群負責人之類的
你好,對于數據分類很多的系統,角色設置也會有很多,組織架構上下層的繼承性該如何處理呢?出現很多重復的角色或者差異性很小的角色又該如何去做職位權限的選擇呢?感謝回答
您好,不同崗位同屬同一職位,看您的圖,同一職位,角色權限相同,是不是就代表,不同崗位角色權限相同?
對于職位和崗位一層,有個疑問,謝謝解答~為何要封裝兩層呢,如果把崗位去掉,一個賬號對應多個職位,是不是也是可以實現同樣的目的,因為跟角色綁定的是職位,那么崗位的意義在哪里呢?
你好。很多時候可以看到,在一些小型單位里的權限體系,落地的方案是去掉組織架構這一層,將帳號-角色關聯來實現權限控制,可以參考我其他的文章。這里的權限體系中加入的組織架構這一層,是為了響應大型事業單位里非常重要的組織架構需求。已知,崗位是人事管理上的最小單位。比如有兩個人,一個是負責績效的hr,一個是負責薪酬的hr,不同的單位有自己的組織架構,ta們可能都是同一個職位,也可能是不同的職位,但是肯定是會對應兩個不同的崗位。為了滿足不同組織架構的權限需求,讓我們的設計具有普適性,和單位/公司的組織結構保持一致,是最省心的做法。
對于樓主提出的疑問,我感覺也可以取消崗位這層關系,甚至我覺得崗位和職位的含義是極其相近,如果是大家同為HR,一個管理績效一個管理薪酬,那么再多建立一個角色就好啦比如:IT部部門,職位產品經理,產品經理這個崗位又區分兩個角色,一個是運維產品,一個是設計產品。整個組織框架可以調整為 部門-職位-角色。
因為賬號可能因離職等原因注銷掉,崗位不會動