① 後台產品的基石:許可權管理體系設計
簡而言之,我們日常使用的互聯網應用,有一些需要做數據/信息的呈現,管理維護這些數據/信息的產品,就是後台產品。舉個例子,在音樂app中有很多的歌曲、專輯、歌手等的內容,這些內容都需要在曲庫後台中進行上傳、信息關聯等操作,這里的曲庫後台就是一個後台產品。
後台產品中有大量的數據,需要較多的人員來對這些數據進行管理,不同人分別負責管理自己的數據。且不同的人,在整個數據管理流程中,需要進行的操作不同。那麼此時,我們就需要對這些人員的許可權進行不同的定義,具體人員可以看什麼,不可以看什麼,從而確保數據的穩定性,降低數據泄露的風險。同樣用曲庫後台舉例子,有的人負責維護華語音樂,有的人負責英語音樂,那麼負責話語音樂的人,不可以操作英語音樂的數據。在負責華語音樂的人中,有的人負責上傳歌曲源,有的人負責整理音樂,打包成歌單呈現給用戶,那麼負責上傳歌曲源的人,不可以去進行歌單的編輯。
人員層級的劃分是做許可權管理的基礎,幾乎稍有規模的公司,都會有人員管理層級的劃分,我們稱之為組織結構,在組織結構中,明確指定人員的匯報關系、負責的業務模塊、人員的崗位等等。
組織結構的一個簡單示意圖如下,節點用於對業務模塊、工作范疇進行劃分。在一個業務模塊內,不同職能的人員,用崗位來進行區分,例如研發進行功能的開發,QA進行功能的驗證測試。
許可權管理體系可以劃分為三個層級:功能許可權、數據許可權、按鈕/欄位許可權
1,功能許可權:定義人員是否可以訪問某個頁面。例如曲庫後台,曲庫資源的管理人員,可以訪問曲庫資源的管理頁面,不可以訪問歌單資源的管理頁面。
2,數據許可權:定義人員在頁面中,可查看的數據的范圍。例如曲庫後台,曲庫資源的管理人員中,華語音樂管理員可查看華語音樂,不可查看英語音樂。
3,按鈕/欄位許可權:定義人員針對查看到的數據,可以進行的操作,或可查看的欄位。例如曲庫後台有歌曲的上傳和刪除的操作,曲庫資源的管理人員中,上傳資源的人員只能看到上傳按鈕,不可查看歌曲的刪除按鈕。只可查看歌曲的基礎信息,不可查看歌曲的定價信息。
從上圖和上面的描述舉例中,可以看出來,這三層許可權控制是逐漸遞進的關系,從最基本頁面訪問,到具體數據信息操作,對於許可權的粒度管理越來越細致。
那麼基於這個理論基礎,在設計上如何實現呢?
1,功能許可權:頁面是具體功能的一個實現,而功能的使用與人員的職能相關,結合我們前面講的組織結構可以得出,功能許可權與崗位密切相關。因此我們做許可權配置時,可以考慮將崗位與頁面許可權綁定,這樣在崗位人員更替的過程中,只要崗位職能不變,那麼我們對崗位和頁面許可權的綁定就是無需變更的。例如編輯人員擁有曲庫編輯頁的許可權,運營人員擁有歌單編輯頁的許可權。
2,數據許可權:同崗位的人員負責不同范圍的數據,那我們可以通過定義人員可查看自己負責標簽范疇內的數據來實現數據許可權的管控。如果數據量特別大,同崗位的人員也需拆分給不同的管理人員來管理,甚至管理人員還是多層級的,那麼此時就需要藉助組織節點一起定義數據許可權,最末級節點人員查看自己標簽范疇內的數據,上級節點的人員查看自己下級節點人員的數據匯總。
3,按鈕/欄位許可權:按鈕/欄位許可權本質上還是對一個功能的控制,只是這個功能內嵌於頁面內,比頁面的顆粒度更細,所以按鈕/欄位許可權可以和功能許可權一樣,與崗位綁定。
上述的三層許可權體系可以滿足我們基礎的許可權控制的需求了,但是在一些特殊的情況下,有一些上述體系不能滿足需求的情況,該怎麼去拓展這個許可權控制體系呢?以下列舉了一些。
對於崗位通用的許可權,我們可以用崗位與許可權綁定來配置。若同崗位員工的工作模塊不同,有一些許可權不可直接賦予崗位,而是與具體人員關聯時,可以抽象出一層虛擬角色,這些角色集成一個工作模塊的特殊許可權,然後將角色直接賦予具體的人員。這樣可以用虛擬角色來進行許可權的規范管理,同時又能滿足同崗位人員需要配置特殊許可權的情況。
組織結構中的崗位和節點上下級關系,定義好了人員的全部許可權。當對象的組織崗位關系不可調整,但是需要添加對象的各項許可權時,我們可以通過加成許可權來實現。加成許可權就是指人員擁有自身所在組織崗位的許可權,同時還可以擁有特殊配置的許可權。
這個特殊配置的許可權怎麼配呢?
這個配置的基礎結構時,配置對象在某些系統中擁有某些節點崗位的全部許可權。我們把配置對象、某些系統、某些節點崗位拆開描述如下。
1,配置對象:這個要臨時添加許可權的對象,可能是員工,可能是某組織節點全部人員,甚至某崗位全部人員,因此這個配置對象可以根據需求去拓展,支持多選。
2,某些系統:一個大的後台中可以進一步拆分系統,如果需要限制是這個加成許可權只在部分系統生效,那我們可以增加生效系統的配置。
3,某些節點崗位:這個就是配置對象具體需要什麼節點崗位的許可權,在某些節點崗位這一環節中配置。
這個是最簡單的,可以通過添加人員的白名單和黑名單來解決。白名單中的員工,默認賦予全部數據的許可權。黑名單中的員工,默認不擁有任何數據的許可權。
白名單和黑名單的賦予,支持給通過節點、崗位、人員來配置,操作更靈活方便。
以上是我對後台產品許可權設計體系的一些分享,希望對進行後台產品設計的初級同學有一些幫助,歡迎留言一起交流。
② 在資料庫中,什麼是許可權,管理許可權的內容是什麼
我就用 Oracle 來舉個例子:
GRANT SELECT 某表 TO 某用戶
就是允許某用戶, SELECT 某表, 這個就是 許可權
也就是 某用戶, 可以做某件事情。
GRANT SELECT 某表 TO 某用戶 WITH ADMIN OPTION
WITH ADMIN OPTION 就是管理許可權
就是說, 允許某用戶, SELECT 某表的同時
還允許 這個「某用戶」 把這個許可權,給其他的用戶。
③ 資料庫的許可權管理
超級管理員可以對資料庫增刪改查,可以添加登錄帳號,可以給用戶分配許可權。
普通用戶操作資料庫的許可權是由超級管理員來分配的,