四種經典權限模型
自主權限控制 (DAC,Discretionary Access Control)
強制權限控制 (MAC,Mandatory Access Control)
角色權限控制 (RBAC,Role-based Access Control)
屬性權限控制 (ABAC,Attribute-based Access Control)
DAC
根據主體(如用戶、進程或 I/O 設備等)的身份和他所屬的群組,限制對客體的訪問。所謂的自主,是因為擁有訪問權限的主體,可以直接(或間接)地將訪問權限賦予其他主體(除非受到強制存取控制的限制)。
最常見的例子是 unix 檔案系統的權限,使用者可修改檔案的權限,賦予給其他使用者。
跟 DAC 相反的是 MAC。
MAC
MAC 可限制主體或發起者存取或對物件或目標執行某種操作的能力,常用在作業系統。
主體通常是一個行程或執行緒,物件可能是檔案、目錄、TCP/UDP埠、共享記憶體段、I/O裝置等。主體和物件各自具有一組安全屬性。每當主體嘗試存取物件時,都會由作業系統核心強制限制授權規則,逐一檢查安全屬性並決定是否可進行存取。
任何主體對任何物件的任何操作都將根據一組授權規則(也稱策略)進行測試,決定操作是否允許。在資料庫管理系統中也存在存取控制機制,也可以套用強制存取控制,物件為 table/view/procedure。
RBAC
一個用戶擁有若干角色,一個角色擁有若干權限。形成「用戶 - 角色 - 權限(系統資源)」 的授權模型。在這種模型中,用戶與角色之間,角色與權限(系統資源)之間,是多對多的關係。
RBAC 模型是目前最常用的權限模型,一般來說實作時就是在處理用户、角色、權限之間的關係。RBAC模型,其實可以看成是靜態的、單組屬性的ABAC模型。
ABAC
也稱為policy-based access control (PBAC) or claims-based access control (CBAC)
這是一種標籤的機制,在被存取的資源上,貼上標籤。再將標籤配置給 User 或是 Role,這樣可決定 User/Role 是否能存取該資源。
ABAC是個可以以最細顆粒度來管理權限的模型。它可以讓設計者,利用任何一個用户屬性、環境屬性,或者多個屬性之間的交集、並集等來組合出動態的權限判斷邏輯。
References
熟悉這四種權限管理模型,產品迭代才能心裏有數_人人都是產品經理 - MdEditor