一文詳解To B權限設計

2020-12-25 人人都是產品經理

這是」一文」系列的第二篇。本篇主要介紹基於RBAC模型權限設計的方法。

01 什麼是RBAC模型權限?

我們先看下邊一個小場景:

小明同學想晚上10點後進入圖書館學習,就在晚上10點準備進入圖書館時被保安王大叔給攔住了,理由是只有圖書館管理員10點以後才能進入圖書館。

1. 怎麼樣才能讓小明同學在10點以後進入圖書館學習?

「讓小明同學偷偷溜進去?」 「給保安王大叔給好處?」

「還是讓小明同學去「某組織」申請成為「圖書館管理員」?」

看來還是申請成為「圖書館管理員」比較靠譜,雖然需要寫申請書,找老師籤字等走一系列的流程,雖然麻煩,但是這是晚上10點以後進入圖書館的正規途徑。

2. 進圖書館小場景和RBAC模型有什麼聯繫?

首先我們先看下百度百科的介紹

「RBAC(Role-Based Access Control):基於角色的訪問控制(RBAC)是實施面向企業安全策略的一種有效的訪問控制方式。」

「其基本思想是,對系統操作的各種權限不是直接授予具體的用戶,而是在用戶集合與權限集合之間建立一個角色集合。每一種角色對應一組相應的權限。一旦用戶被分配了適當的角色後,該用戶就擁有此角色的所有操作權限。」

看了百度百科介紹是不是感覺一臉懵?我們結合上邊的小場景去看:

  • 角色1:圖書館管理員
  • 角色2:保安      
  • 用戶:小明同學
  • 權限:晚上10點以後進入圖書館的權限
  • 系統:圖書館

「圖書館」將晚上10點以後進入圖書館的權限授權給「圖書館管理員」,只有「圖書館管理員」角色的權限才可以晚上10點進入圖書館。小明同學想晚上10點後進入圖書館,就需要成為「圖書館管理員」這個角色,直接將權限賦給小明是不可行的。如下圖:

通過小場景,我們簡單的理解了RBAC的基本概念,用「角色」將「用戶」與「權限」進行分割,實現「用戶」與「權限」的解耦。只要是小明同學屬於圖書館管理員角色,他就可以進入晚上10點後圖書館,其他同學如果也申請了圖書館管理角色,同理也是可以在晚上10點以後進入圖書館的。

有人問會有疑問,為什麼要設置「角色」,直接把權限賦予給「用戶」就行啦,不需要這麼麻煩呀。咱們接著往下看。

3. RBAC模型的特點

提升管理效率,降低授權複雜性

如果圖書館出了新規定,晚上10點禁止任何人進入圖書館。圖書館只需要將「圖書館管理員」角色下晚10點後進入圖書館權限關閉即可(如下圖)。反之,試想如果沒有「圖書館管理員」角色,直接將晚上10點以後進入圖書館權限賦給小明和其他同學。要取消權限就要對每個有權限的同學進行取消權限,大大增加了工作量。

適用企業管理變化

圖書館又發出新規定「圖書館出了新規定,晚上10點禁止任何人進入圖書館不合理,應該讓「保安」可以在晚上10點進入圖書館進行巡邏。」通過RBAC模型方式,直接將「保安」角色賦予「晚上10點以後進入圖書館」的權限就可以了。

02 RBAC模型權限設計方法

模型1:RBAC0

RBAC0是RBAC的基礎,RBAC1,RBAC2,RBAC3模型都是從RBAC0模型拓展而成。

RBAC0模型中用戶,角色,權限都是多對多關係。例如:實際中企業可能由於各種原因會出現一人承擔多個角色。比如擔任人力崗位同時,也會承擔行政的工作。

模型2:RBAC1

RBAC1在RBAC0的基礎上,加入角色繼承的概念。將角色下分成各個等級的小角色(如圖),子級權限繼承父級。如下圖,根據子級等級不同來分配更細粒度的權限。

例如:公司的財務總監可以看到整個公司所有部門的財務報表數據,而銷售部財務經理只能看到銷售部財務報表數據,在銷售部財務經理下可能還會設立其他崗位,比如財務專員,財務專員可能只有查看銷售部具體某個報表的權限。

模型3:RBAC2

RBAC2是對RBAC0在角色,權限上增加了限制條件,例如: 公司規定有人被賦予了財務角色,就不能再賦予他審計角色。這樣可以在一定程度上防止在年總審計時候,審計人與被審計人是同一個人。這就是角色互斥

用戶擁有的角色數,角色可以被賦予給多少用戶數,角色擁有的權限數都是可以被限制的,這就是基數限制

還有先決條件限制,比如想擁有高級產品經理,就必須先擁有產品經理角色。

最後還有一種是動態的限制用戶及其擁有的角色,如果一個用戶可以擁有兩個角色,在運行是只能使用一個角色,這就是運行互斥。例如:未申請具體角色登錄系統,角色為「通用角色」。通用角色可以使用系統崗位角色申請功能,同時也能使用系統中已對「通用角色」開通權限的功能,例如查看運維電話、幫助手冊。

模型4:RBAC3

RBAC3=RBAC1+RBAC2

RBAC3集成了RBAC1的角色分級繼承,同時也包括RBAC2中的各種限制。如下圖

03 實例復盤

1. 前期分析

A系統(企業內部營銷域平臺)是我最近在參與項目之一,主要職責一部分是設計後臺功能,這其中就包含了權限設計。

對於A系統的權限設計,我是從下邊三個點出發進行分析:

什麼人用?

用戶從哪來?

作為企業內部使用的營銷系統,用戶主體部分都是企業員工。其中少部分為供應商團隊用戶。企業內部員工通過與人力系統進行組織對接,打通人力系統與A系統用戶數據。員工可以直接使用統一企業帳號(portal)進行登錄。供應商團隊用戶是沒有portal的,這部分帳號需要進行創建分配。

什麼身份(角色)

在找到「人」之後就要進行開始「身份」調研了。「身份」調研階段是跟進在整個業務調研階段中,例如在調研中會梳理到實際業務組織架構。雖然已經確認有了人力系統組織架構,但是根據實際經驗往往人力架構與實際業務中架構會有一些差異。

通過前期業務調研後我們整理出組織架構,在組織架構梳理中明確了組織中父子級對應關係,在前期調研中也許明確出崗位角色中是否有「限制條件」,例如崗位角色是否有唯一性限制,如下圖所示中每個分公司裡只有一個運營總監,銷售總監等等。(RBAC2中基數限制

用什麼功能(權限)

功能權限分為功能權限與數據權限。

功能權限指的角色在系統內操作範圍,例如角色A可以點擊報表導出按鈕或者管理員角色在系統中可以看到後臺管理菜單並可以對其進行操作。

數據權限指的角色在系統中可操作的數據範圍,例如報表中只顯示該角色的數據範圍內數據,比如上海公司的運營總監查看數據權限只是上海分公司內的,同時篩選數據條件範圍也只限於其權限內。

通過前期業務調研針對不同的業務場景流程,在設計相關功能時需整理出功能權限表,權限表體現需要標註具體功能可以對哪些角色可見,功能內某個按鈕具體操作權限。有了這份表格,我們可以在系統上線初始化時,將角色的權限配置好,方便用戶上線後即用。

2. 設計階段

在梳理了用戶,角色,權限(功能&數據)關係後,就要著手進行功能設計了。

根據用戶流向策略,繪製出了如下後臺業務流程圖(初版)。

用戶來源主要是來自人力組織對接與自行創建分配用戶。人力崗位與角色在對接中形成組織對接關係,在具體功能權限賦予時,需要系統運營人員根據實際業務需求進行配置。

基於初版流程圖,先整體設計出後臺功能架構。

用戶中心:帳號管理   數據管理

角色中心:角色管理   角色功能管理  角色組織崗位管理  角色數據管理

組織管理:組織對接

用戶心中:帳號管理主要功能為帳號創建,查看,刪除,導出,修改,帳號狀態修改(停用/凍結).針對供應商帳號可以該功能模塊進行創建,其他操作可以對所有帳號進行。數據管理主要展示用戶的數據權限查看,導出,刪除。

角色中心:角色管理主要功能為角色創建,查看,刪除,導出,修改。角色功能管理是角色與功能權限進行配置。角色組織崗位管理為角色與組織崗位關係的查看、導出。角色數據管理可為角色進行數據模板配置,用戶在提報角色數據權限時,只能根據數據模板設置進行相應權限提報。

組織管理:組織對接功能與人力系統進行組織對接。

3. 場景演練

張三是新入職新員工,其崗位是上海分公司一級銷售代表。在入職後張三需要使用A系統進行日常辦公。因為A系統與人力系統有組織對接,所以張三直接使用portal帳號密碼登錄即可,登錄後需要進行角色與數據權限申請。

申請時角色默認為組織對接后角色,數據權限申請範圍是該角色可選擇數據權限。例如張三崗位為上海分公司一級銷售代表,其角色為一級銷售代表,那麼張三進入申請功能時角色默認為一級銷售代表。但申請數據數據權限時只能選擇上海,品牌選擇現在為全部或多選(數據權限是通過角色數據管理進行配置)。張三選擇完數據權限,提交申請後,審批由張三的上一級領導進行操作,審批通過後張三可以以一級銷售代表的角色身份登錄系統開展業務。

下圖為新員工角色數據權限流程圖。

後記

由於該項目暫時還未正式上線,所以復盤的時隱藏了大部分信息,例如原型圖。可能會導致大家閱讀起來比較困難,後續我會根據實際情況不斷更新項目實例。

給大家一點建議:整體權限設計應該在項目開始時就要貫穿其中,優秀的後臺權限設計方案,必定是依靠著前臺清晰的功能設計而生成的。所以儘量多參與項目調研階段與需求分析階段,最好整體都參與其中。

在整個項目權限設計中思想都是基於RBAC模型去設計的,RBAC模型的特點之一也是可以靈活多變的支持企業組織架構的伸縮,同時也提高了運維管理的效率。遺憾點是在設計初期並未考慮到分公司自行運營A系統的長遠需求(近幾年並不會實際落地),沒有在設計時提出「租戶」或者「用戶組」概念。

 

本文由 @Sean 原創發布於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議

相關焦點

  • 經驗總結:B端產品的數據權限設計
    上一篇給大家介紹了「功能權限」設計,本篇主要介紹「數據權限」設計,做B端用戶中心近半年,從一頭霧水到產品上線,總結出來一些經驗,希望能夠給到大家一些幫助。「功能權限」控制的是用戶登錄系統後能看到哪些模塊,操作哪些按鈕;而「數據權限」控制的是用戶能夠看到的數據範圍。
  • B端產品設計:用戶角色權限系統設置
    所以這就需要B端產品能夠根據每個用戶的需求去「自定義功能」,就是系統的設計要靈活,系統管理者可以靈活配置自己想要的權限以及管理自己的員工。2. RBAC模型在傳統權限模型中,我們直接把權限賦予用戶。RBAC模型的基本思想就是,對系統操作的各種權限不是直接授予具體的用戶,而是在用戶集合與權限集合之間建立一個角色集合。每一種角色對應一組相應的權限。
  • B端產品權限設計,別踩了坑才想起我
    權限的設計我們看上面的圖,也能發現權限點的控制不是單一的維度,有交易管理、物流管理這種大模塊,也有導出訂單、查看詳情這種小按鈕。總的來說,權限點的控制會體現在這些方面:模塊權限,頁面權限,操作權限,欄位權限,帳號權限。下面一一來看:1.
  • 產品經理之用戶角色權限的管理設計模式
    一、用戶、角色、權限的說明1、RBAC的權限設計模型(Role-Based Access Control,基於角色的訪問控制)RBAC支持三個著名的安全原則:最小權限原則,責任分離原則和數據抽象原則比如財務在操作用作借款、存款等抽象權限或者也可以理解為做一頓飯誰做廚師,誰做顧客這樣理解應該算是簡單粗暴了吧!
  • 復盤大集中模式下的角色權限設計
    RBAC模型是通過分離權限與用戶的耦合關係,將權限關聯在角色上,用戶通過扮演適當的角色獲得合適的權限的權限管理方式。本文在RBAC模型的基礎下,整理權限設計過程中的客戶場景、總結設計思路。不同組織架構下的權限模型1)基礎權限模型適用場景:場景一 、場景二基礎權限模型適用於單個單位或組織架構相對扁平的企業。
  • 如何對權限管理平臺進行產品設計?
    本篇以筆者做過的一個權限管理平臺為例,講解下權限管理的設計思路。項目背景本次是為培訓機構搭建一套信息化系統,包括一個權限管理平臺、以及5個業務系統。這裡就不對業務系統做一一的描述了。其中權限管理平臺由總部運營人員進行管理與維護。
  • 權限體系設計:融合了組織和崗位的權限模型長啥樣?
    文章從RBAC的基本原理出發,結合案例對權限設計中一個職位對應多個崗位的的情況進行了說明,並分享了相關權限模型,供大家一起參考和學習。在權限體系中,當人員調換崗位需要更新此人員的各種權限的時候,只需要更新人員對應的組織關係,那麼角色權限會自動進行調整,從而減少了管理人員的工作量,也更符合常見的調崗操作方式。
  • 權限獲取頁面可以這樣設計
    編輯導讀:權限的設計對於APP產品來說,是一個系統的底層設計,在初期設計時,一定要結合用戶的具體使用場景來開展業務,避免做無用功。本文從三個方面對權限設計展開了梳理分析,對權限設計感興趣的童鞋不要錯過。
  • 後臺權限管理設計思路:三種模型分析
    編輯導語:任何系統/產品搭建時,最先考慮的都應該是權限管理模塊,而且權限管理模塊的清晰、穩定是平臺產品健康發展的基石,權限管理核心考慮的問題是用戶與權限的關係。本文作者對三種不同權限管理的版本展開了梳理分析,與大家分享。
  • 一次完整的http請求詳解
    Http請求的一次詳解:(1) 客戶端輸入URL(2) 客戶端檢測緩存:有緩存且較新,客戶端直接讀取本地緩存進行資源展示有緩存但是不新,準備http請求包,發送至服務端進行緩存校驗備註:http1.0中Expire、http1.1中是Cache-Control根據發起http請求: 請求報文包含:
  • 五人表決器電路設計方案匯總(五款模擬電路邏輯圖及原理圖詳解)
    打開APP 五人表決器電路設計方案匯總(五款模擬電路邏輯圖及原理圖詳解) 發表於 2018-01-18 09:18:07 本文為大家帶來五款五人表決器電路設計方案
  • Shiro權限管理框架(一):Shiro的基本使用
    通常我們的角色及權限信息都是存放在資料庫中,所以Realms也可以算是一個權限相關的Dao層,SecurityManager在進行鑑權時會從Realms中獲取權限信息。範圍大的過濾器要放在後面,/**這條如果放在前面,那麼一來就匹配上了,就不會繼續再往後走了。
  • 創造與魔法家園權限設置 家園權限給與
    現在我們來說說設施權限,設施的權限分三種: ①擁有者權限。當然東西都是你的,你可以使用收回改名和 給予管理者權限,使用者權限。 ②管理者權限。可以使用收回使用設施,給予使用者權限,但是不能改名。 ③使用者權限。
  • 2B產品的用戶權限管理問題與RBAC模型
    ToB產品的用戶角色問題》中,我們討論了 2B產品的用戶角色設計 問題,著重探討了在整個系統中,用戶和角色的關係,並基於業務過程對角色進行了場景的細分,並詳細的解釋了為什麼要在做產品原型設計之前分析業務角色,設計各個角色的關係。本文則討論如何基於用戶角色進行權限管理。
  • 一文詳解HDMI製造過程
    打開APP 一文詳解HDMI製造過程 線纜行業朋友圈 發表於 2021-01-09 11:17:48 隨著HDMI2.1認證的開啟
  • Shiro 權限校驗分析
    Shiro 概述Shiro 是一款 Apache 提供的權限校驗框架, Shiro 同時也是一個強大且易用的 Java 安全框架,執行身份驗證、授權、密碼學和會話管理。使用 Shiro 的易於理解的 API,您可以快速、輕鬆地獲得任何應用程式,從最小的行動應用程式到最大的網絡和企業應用程式,特別是今天對權限校驗和管理特別嚴格,大家有必要對shiro 有一個基本的認識和學習。
  • 熟悉這四種權限管理模型,產品迭代才能心裡有數
    反過來,也就是說,無論設計何種權限管理的模型,都是基於這三個基本要素來展開。本文聚焦於目前應用最廣的RBAC模型,但在這裡提出三個基本要素,主要是為了幫助大家更好的理解權限管理,不至於在眾多權限模型中迷失。不同的公司或軟體提供商,設計了無數種控制用戶訪問功能或資源的方法。
  • Google Play 下架原因之權限
    Enjoy出海-移動開發者出海服務平臺權限請求對用戶而言必須合理。您只能對實現 Play 商店內的商品詳情中宣傳的現有應用功能或服務所需的權限發出請求。您不得將對用戶或設備數據的訪問權限用於未披露、未實現或未經許可的功能或用途。此外,您不得銷售通過這些權限取得的個人或敏感數據。
  • 電腦軟體權限設置在哪裡 電腦修改軟體權限的方法
    現在無論是工作還是學習大家都離不開電腦,在操作電腦的過程中,為了體驗更多的功能,我們會在裡面安裝各種各樣的軟體,可是這些軟體的操作權限很大,有的用戶想要對其進行更改,那電腦軟體權限設置在哪裡呢?我們又該怎麼修改軟體權限呢?下面本文就來為大家分享具體的操作方法。
  • 重生文《小棉襖》《重生之夫郎歸來》「種田(b)甜文(l)」
    ① 《小棉襖》作者:城南花開主角:盛夏,金雲安重生文,金雲安是女主盛夏的媽媽,睚眥必報,不吃半點虧的媽,以和為貴,百事忍為先的女兒。盛夏是的確有點點小小小的膽小怕事的感覺,但是人善被人欺,親媽就跟她說,別人一欺負就要還回去。文不是以愛情為主線!ps:女主的媽媽原本是非常優秀的傳統大家閨秀,富家大小姐,並非變態sha人,多年前的事情,她本來是最大受害者,走投無路,絕望之下,思想走極端了。