這一篇讓你徹底搞懂 SaaS 產品的數據權限設計!
數據權限是SaaS產品必不可少的功能,明確權限管控的顆粒度,保障數據安全。本文作者對如何SaaS 產品的數據權限該如何設計展開了分析,希望對你有幫助。
最近正好在做數據權限這塊的產品設計,同時拆解完紛享銷客的 PaaS 平臺后,又受到了新的啟發。事實上,我發現不少 SaaS 的產品經理都沒有接觸過數據權限這塊的產品設計 —— 通常,如果經歷過從0-1的 SaaS 產品過程的話,就會知道數據權限是一開始就需要設計和開發的。
本篇就來和大家講講如何設計數據權限產品功能。
一、數據權限是什么?
我想如果面試的時候來問產品經理這個問題,估計會得到很多不一樣的答案。簡單的回答可能就是“對系統的數據進行訪問控制”,而這相當于沒有回答。
實際上,我認為要從三個方面回答這個問題。
- 一是控制登錄人訪問的數據范圍,不該看的不能看;
- 二是控制登錄人操作數據的行為,不該管的不能管;
- 三是控制登錄人能夠查看的業務對象屬性,敏感的屬性要管控。
數據權限一是控制登錄人訪問的數據范圍,不該看的不能看;二是控制登錄人操作數據的行為,不該管的不能管;三是控制登錄人能夠查看的業務對象屬性,敏感的屬性要管控。
二、怎么控制數據權限?
我們來看看應該怎么來控制登錄人的數據權限,這里可以分為數據范圍權限控制、數據操作權限控制和業務對象字段權限控制。
1. 數據范圍權限控制
B 端客戶內部的業務對象通常來說會按管理層級劃分管轄范圍,比如我曾經做過的物業平臺,他們會按小區(也叫物業項目)、片區、分公司、大區和總部五個層級來劃分管轄范圍。
這里的小區其實就是一個基礎的授權業務對象,然后將多個小區集合起來會形成片區。同時,經營小區的會是具有法人資質的主體,即分公司。多個分公司又會按地理區域劃分到不同的大區,最后到總部管轄全部的業務數據。這個時候,我們就需要支持從基礎的業務對象到更大范圍的數據授權。
比如下面幾個場景:
- A 小區的物業項目經理授權 A 小區,他只能看到 A 小區的各類業務數據(報修、投訴、收費等等);
- B 片區的物業片區經理授權 B 片區,他能夠看到 B 片區下的全部小區的各類業務數據,包括以后在 B 片區再新增的小區。
- C 公司的物業分公司總經理授權 C公司,他能夠看到C 公司下的全部小區的各類業務數據,包括以后在C 公司再新增的小區。
- D 大區的物業大區經理授權D大區,他能夠看到D 大區下的全部小區的各類業務數據,包括以后在 D大區下各個分公司新增的小區。
- 總部的集團領導可以看到全部的小區各類業務數據。
通常來說,不同層級的授權方式是互斥的,也就是一個人不能說既按小區級別授權又按片區級別授權。同時,同一個層級的,是支持授權多個的。
對于 B 端客戶的外部業務對象,因為不存在管轄層級,往往是通過分配的方式進行。即將一個或多個業務對象分配給某類角色或某個員工,登錄人只能看到分配給自己的業務對象。典型的就是 CRM 系統的客戶公海資源,員工只能看到分配給自己的客戶。
2. 業務對象操作權限控制
業務對象操作權限是指對業務對象以及業務對象屬性能夠進行的操作。典型的業務對象的操作就是新增、刪除、編輯、查看、導出、改變業務對象狀態(如市場線索轉銷售線索)等等。比方說,我們控制 A 員工只能查看客戶信息,不能新增、編輯、刪除和導出客戶信息。
3. 業務對象字段權限控制
業務對象字段的顆粒度就更小一點,是針對某個類型的業務對象,約束登錄人能查看、編輯或導出業務對象的哪些屬性。業務對象屬性在技術上對應的是數據表的字段。
舉個例子,CRM 系統的“客戶”這個業務對象,會有名稱、地址、電話、級別、所屬行業等等信息。我們就可以控制A 員工(或角色)只能查看客戶名稱、級別和所屬行業,不允許查看地址和電話。
三、數據權限產品設計
接下來我們看數據權限的產品怎么設計。
1. 數據范圍權限設計
數據范圍權限控制首先我們要明確系統的基礎業務對象,比如物業平臺的小區、房地產管理的樓盤、WMS的倉庫、線下商超的門店等等,這些都可以作為基礎的授權業務對象。然后,基于基礎業務對象構建管理層級,劃分到不同層級的不同集合里。之后,就可以授權某個角色或人員擁有的管轄范圍,下面是一個示例。
給業務對象分配成員的比較簡單,基于業務對象添加成員或者移除成員即可,在文檔協作類產品非常常見。
2. 業務對象操作權限設計
控制業務對象的操作權限,我們首先要基于某類業務對象定義好這類業務對象有哪些操作,然后再勾選某個角色或人員有能夠進行哪些操作。
業務對象的操作涉及如下信息:
- 操作名稱:比如操作按鈕的名稱;
- 操作標識:系統全局唯一的標識,前端可以通過這個標識來決定是否展示相應的操作入口;
- 顯示方式:即操作入口是隱藏還是禁用。隱藏是比較常見的操作,但是禁用的話可以讓登錄人知道他沒有這個權限,如果需要可以找他們內部的管理員開通。
- 對應數據接口:即對應操作的數據接口,這個是防止有人知道了數據接口,繞過操作按鈕直接訪問接口來獲得數據,通過同時禁止數據接口的訪問權的安全等級會更高一些。
下面是紛享銷客的業務對象操作權限控制的界面,大家可以參考一下。
3. 字段操作權限設計
字段操作權限和業務對象操作權限類似,我們也需要先定義好業務對象的字段屬性,主要的信息如下:
- 名稱:字段的顯示名稱,如姓名、手機號等都是字段的名稱;
- 數據表字段名:對應業務對象數據表的字段名,技術上需要通過這個字段名來控制字段的權限;
- 顯示方式:即未授權該字段時該如何顯示,目前有兩種做法,一是直接隱藏;二是脫敏。直接隱藏比較簡單,但是可能會引起頁面布局不美觀;脫敏則是隱藏掉部分的內容,比如手機號中間4位使用“*”號替代,這種方式的好處是頁面布局不需要改動,但需要開發做一定的處理。
- 是否必選:有些字段是不能來控制權限的,比如客戶名稱,如果客戶名稱都不顯示了,那么這條數據都沒有意義了,因此需要定義業務對象的主要字段是必須勾選的,不可以禁止相應的字段權限。
字段的操作一般只有讀取、編輯和導出,因此字段操作上不需要單獨管理。下面同樣給出了紛享銷客的字段授權的界面,供大家參考。
四、總結
總的來說,數據權限的授權分為三個方面,業務對象范圍授權、業務對象操作授權和業務對象字段授權。
為了實現這三個方式的授權,我們在產品設計上需要支持業務對象范圍的劃分、業務對象操作的定義和業務對象字段的定義,如下圖所示。之后,我們就可以配置某個角色或人員的數據權限了。
數據權限是SaaS產品必不可少的功能。企業的數據很多涉及敏感信息,包括商業機密信息等等,因此必須在產品規劃之初就明確權限管控的顆粒度,以及按何種方式管理數據權限。希望看了本篇之后,能夠給大家一些參考和啟發。
專欄作家
產品海豚灣,公眾號:產品海豚灣(ID:pm-dophin-bay),人人都是產品經理專欄作家。技術出身的產品經理,從事過 C 端產品和 B 端產品設計,擅長 SaaS 產品設計、產品架構設計和需求分析。負責的B 端產品完成了完整的從0到1,從1到 N 的過程,成功簽約行業百強客戶。
本文原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
請教個問題,如果同一個用戶在不同的資源下,操作權限不一致,如何設計?
比如,第一個物業公司的權限管控案例,如果張三負責多個片區的管理,他是A片區的物業總經理(操作權限較大),同時他也是B片區的樓棟管家(操作權限較?。_@種情況下,權限如何設計?
每個用戶有什么權限是根據這個用戶分配了什么角色決定的,想你說的這種;建兩個角色給這個用戶分配上就行了:1個角色是A區物業總經理,一個是B片區管家
角色控制的是操作權限,數據權限可不是通過角色控制的。
請問這個場景您這邊是如何解決的?我們也遇到這個問題,同一個人在系統中有不同的崗位,且不同崗位的數據權限需要不同
數據范圍產品設計可以講的更深入一些,這塊是核心。比如按照組織架構、獨立分配,獨立分配又可以按照屬性(部門等等)過濾條件分配,這樣才能構建一個比較貼近實際業務需要的數據權限。
很棒!請教個問題,字段權限這個受菜單限制么,還是整個系統這個字段全部限制了?
這個應該是每個菜單里的字段,其他菜單即使同名也是算另一個字段。有的會通過引用或關聯等方式將兩個菜單的字段連接起來,可能會讓你覺得是同一個字段
一般人員都會有一個人員類型的字段,可以在角色的基礎上再通過這個人員類型字段去判斷字段權限。