初步瞭解權限管理模型

爲什麼需要權限管理?

  • 安全性:防止誤操作、人爲破壞、數據泄露。
  • 數據隔離:不同的權限能看到的以及操作的數據不同
  • 明確職責:不同的角色所做的操作和所看到的數據不同

權限管理的核心是什麼?

  • 用戶-權限
       人員少,功能固定,或者特別簡單的系統。比如 MySQL 就是屬於這種權限管理模式
  • RBAC(Role-Based Access Control)
       基於角色的權限訪問控制。在 RBAC 中權限與角色相關聯,用戶綁定所對應的角色從而得到這些角色的權限,這種關聯簡化了權限的管理。
       在一個組織中,角色是爲了完成某種工作而創造出來的,用戶則依據他的責任和資格賦予相應的角色。並且,用戶也可以很容易的從 A 角色切換成 B 角色。角色可以根據新的需求和系統的合併來賦予新的權限。權限也可以從某個角色中回收。
       RBAC 模型主要關注於 角色-用戶-權限之間的關係,角色和用戶是多對多的關係,角色和權限是多對多的關係。
    如果現實中,有很多人都有相同的權限,RBAC 可以拓展出 group 這個概念的,group 是可以解決多角色相同權限的問題,比如:A 部門的資料,只能 A 部門的人員看,那麼用戶的賬號就直接賦予 A 部門這個角色組就好了。
       RBAC 模型還支持著名的三大安全原則:最小權限原則、責任分離原則、數據抽象原則。
    圖片來源於網絡,侵刪

理想中的權限管理?

  • 實現角色級的權限管理
       角色級的權限管理都是基於 RBAC 模型實現的。這種模型幾乎能覆蓋所有場景,同時能夠滿足需求的不斷變化,許多臨時的調整也能很好的應對。基於 RBAC 的權限的管理,很好的完成了對權限的抽象,只需要根據不同的場景進行不同的實現就好。相對於直接對用戶綁定權限,RBAC 可以對用戶進行更好的擴展。
  • 可實現功能級、數據級權限
       功能級權限就是功能權限管理技術,一般就使用 RBAC 權限管理模型。功能級權限管理系統會提供如下功能:
        1、角色管理系統由用戶定義角色賦予權限;
        2、用戶角色管理界面,由用戶給系統用戶賦予角色;
        3、支持用戶定義權限。
        目前數據級權限管理沒有統一的技術,大體上採用的是如下技術:
       1、硬編碼,這種情況居多,但是弊端非常顯然,耦合性高,不易測試,不易維護;
       2、使用規則引擎,有一些企業將這種邏輯用規則的形式體現出來。這可以解決很多問題,但是規則引擎並不是專業用於權限管理,所以對於一些複雜的權限管理就顯得力不從心了;
       3、使用第三方專業軟件。
  • 簡單易操作,能夠實現各種需求
       所有涉及到權限相關的都能有相關的頁面可操作,同時能提供一個頁面能查詢到一個用戶當前的權限列表。需要的頁面如下:
       1、權限管理界面;
       2、角色管理界面;
       3、用戶管理界面;
       4、角色和權限關係維護界面;
       5、用戶和角色關係維護界面。

開源的權限管理項目

  • Spring Security
       是一個能夠爲基於 Spring 的企業應用系統,提供聲明式的安全控制解決方案的安全框架。
       它提供了一組可以在 Spring 應用上下文配置的 Bean,充分利用了 Spring 控制反轉、依賴注入和麪向切面編程功能。對已有系統提供聲明式的安全訪問控制功能,減少了爲企業系統安全控制編寫大量重複代碼的工作。
  • Apache Shiro
       Shiro 是一個強大且易用的 Java 安全框架,執行身份驗證、授權、密碼學和會話管理。Shiro 有易於理解的 API。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章