大家好,我是湯師爺~
什麼是許可權?
許可權,簡單來說,是系統中控制使用者行為的一套規則和機制,用來限制每個使用者在系統中可以訪問的頁面、功能和檢視的資訊。
許可權系統透過設定不同的使用者角色,並將許可權分配給這些角色,來控制使用者在系統中可使用的功能和可檢視的資訊。這是企業進行許可權管理的有效工具。
許可權的設定通常基於使用者的角色和職責。例如,在新零售 SaaS 系統中,運營人員需要管理商品和訂單,但他們不需要也不應該訪問財務資料。相反,財務人員需要檢視交易和財務報表,但不需要操作商品、庫存。
透過許可權控制,系統確保每個使用者只能在其職責範圍內操作,既提高了工作效率,又保護了敏感資訊。
為什麼需要許可權系統
在 SaaS 系統中,如果沒有許可權管理,所有使用者都可以隨意訪問和修改系統中的資料,這將導致混亂和安全隱患。
企業的資料通常包含財務報表、客戶資料、商業機密等敏感資訊。如果所有員工都能訪問這些資料,可能會導致資訊洩露,甚至被出售給商家的競爭對手,給企業帶來嚴重後果。
許可權系統有助於規範業務流程,提高員工工作效率。不同崗位有不同的職責和許可權,例如,財務人員需要檢視和處理財務資料,而銷售人員則需要管理客戶資訊。如果沒有明確的許可權劃分,員工可能會接觸到與自身職責無關的工作,導致職責不清,影響工作效率。
許可權系統還便於審計和追責。當出現問題時,企業可以透過許可權日誌追蹤到具體的操作人員,明確責任歸屬。
總的來說,許可權系統是企業資訊保安和規範管理的重要保障。它確保不同崗位的員工只能在授權範圍內操作,既提高了工作效率,又保護了企業的核心利益。
因此,構建一個完善的許可權系統對於任何注重安全和效率的企業來說都至關重要。
許可權模型方案
設計許可權系統時,我們可以借鑑多種技術模型,每種模型都有其獨特的特點和適用場景。
常見的許可權模型包括 ACL(訪問控制列表)、RBAC(基於角色的訪問控制)等。這些模型各有優劣,適用於不同規模和複雜程度的系統。
在實際應用中,我們需要深入分析業務需求,權衡各種模型的利弊,並根據系統的具體情況靈活設計和調整。接下來,讓我們一起探討幾種常見的許可權模型。
ACL 模型
首先,讓我們探討一下ACL模型,全稱為Access Control List,即訪問控制列表。這是一種直接而簡潔的許可權管理方式。ACL模型主要包含兩個關鍵元素:
- 使用者(User):系統的實際使用者,可以是個人、組織或系統實體。
- 許可權(Permission):明確定義使用者可以執行的操作或訪問的資源,如檢視報表、編輯文件等。
ACL模型特別適合許可權需求相對簡單、直接的系統環境。當系統功能點較少,使用者與許可權之間可以建立清晰、直接的對應關係時,ACL模型能夠提供高效、易於管理的許可權控制方案。
RBAC0 模型
接下來,介紹一下 RBAC0 模型。作為角色許可權控制的基礎模型,RBAC 代表 Role-Based Access Control,即基於角色的訪問控制。這種模型透過引入"角色"的概念,巧妙地解決了使用者與許可權之間的複雜關係。
在 RBAC0 模型中,我們不再直接將許可權賦予使用者,而是透過角色這個中間層來實現許可權分配。這種設計帶來了極大的靈活性和可管理性。
例如,當一個新員工加入企業時,我們只需要為其分配適當的角色,而不必逐一設定許可權。同樣,當某個角色的許可權需要調整時,我們只需修改該角色的許可權設定,所有擁有該角色的使用者都會自動更新許可權。RBAC0 模型的核心組成元素:
- 使用者(User):系統的實際使用者,可以是個人、組織或系統實體。
- 角色(Role):角色是一系列許可權的集合,它像一座橋樑,連線了使用者和許可權。系統管理員可以根據業務需求建立不同的角色,如"運營經理"、"門店店長"等。一個角色可以擁有多種許可權,而一個使用者也可以被賦予多個角色,這種多對多的關係大大增強了系統的靈活性。
- 許可權(Permission):定義了使用者可以在系統中執行的具體操作。許可權可以是粗粒度的,如訪問某個模組的許可權;也可以是細粒度的,如對某條資料的增刪改查許可權。許可權的設計需要充分考慮業務需求和安全性,既要保證使用者能夠高效工作,又要防止越權操作。常見的許可權型別包括頁面訪問許可權、功能操作許可權、資料檢視許可權等。
RBAC1 模型
RBAC1 模型是 RBAC0 模型的進階版本,引入了角色繼承這一關鍵概念。這一擴充套件為許可權系統帶來了更高的靈活性和效率。
RBAC1 模型允許角色之間建立層級關係。在這種結構中,高階角色不僅擁有自身的特定許可權,還能自動繼承低階角色的所有許可權。
這種設計模擬了現實世界中的組織結構,使得許可權系統更貼近實際需求。
RBAC2 模型
RBAC2模型在RBAC0模型的基礎上引入了角色約束控制機制,增加了責任分離關係。
這種模型規定了在分配許可權給角色、將角色賦予使用者,以及使用者啟用某個角色時必須遵守的強制性規則。RBAC2模型主要包含以下三種約束:
1、互斥關係角色
這種約束確保同一使用者不能同時擁有相互制約的角色。例如,在運營部門中,使用者運營和渠道運營可能被設定為互斥角色。
一個使用者只能被分配其中一個角色,不能同時擔任兩者。這種設定體現了職責分離的原則,有助於防止權力過度集中和潛在的利益衝突。
2、基數約束
這種約束限制了角色分配的數量和範圍。它可以限制一個角色可以分配給的使用者數量,控制單個使用者可以擁有的角色數目,以及一個角色可以擁有的許可權數量。
透過這種方式,系統可以有效地控制高階許可權的分配,防止許可權過度擴散,從而增強系統的安全性和可管理性。
3、先決條件角色
這種約束建立了角色之間的依賴關係。如果使用者想要獲得某個高階角色,必須先獲得其下級角色。這種設計確保了使用者在獲得更高許可權之前,已經具備了必要的經驗和資格。
總體來說,不同的許可權模型有不同的適用場景:
- ACL 模型:適用於小型、簡單的系統,許可權需求不復雜。
- RBAC0 模型:引入角色,方便管理,適用於一般的許可權需求。
- RBAC1 模型:增加角色繼承,適用於許可權層級分明的系統。
- RBAC2 模型:增加角色約束控制,適用於對許可權管理要求高的系統。
選擇合適的許可權模型,需要根據系統的規模、複雜程度和安全需求來決定。
本文已收錄於,我的技術網站:tangshiye.cn 裡面有,演算法Leetcode詳解,面試八股文、BAT面試真題、簡歷模版、架構設計,等經驗分享。