關於RBAC(基於角色許可權控制)的一些思考

来源:http://www.cnblogs.com/uturobako/archive/2017/04/17/RBAC.html
-Advertisement-
Play Games

對於RBAC的一些思考 RBAC : Role Based Access Control 基於角色的訪問控制 問:引入 的目的是什麼? 答: 1. 在沒有role的時候,要決定一個角色有沒有許可權我們必須把角色和許可權綁定起來,引入role是為瞭解耦角色和許可權。 2. 解耦的好處表現在角色和許可權的變化比 ...


對於RBAC的一些思考

RBAC : Role Based Access Control

基於角色的訪問控制

問:引入角色的目的是什麼?
答:

  1. 在沒有role的時候,要決定一個角色有沒有許可權我們必須把角色和許可權綁定起來,引入role是為瞭解耦角色和許可權。
  2. 解耦的好處表現在角色和許可權的變化比起用戶和許可權的變化要慢很多

RBAC新解 : Resource based Access Control

基於資源的訪問控制

基於角色的訪問控制缺點:
原始代碼如下:

if (user.hasRole("Project Manager") ) {
    //show the project report button
} else {
    //don't show the button
}

如果公司要求新增一個也有許可權的角色叫“部門經理”,程式員就必須修改上面的代碼如下:

if (user.hasRole("Project Manager") || user.hasRole("Department Manager") ) {
    //show the project report button
} else {
    //don't show the button
}

當許可權對應的角色改變的時候,必須對古老的代碼進行修改,這樣的隱式許可權控制(隱式是對於操作來說的)對變化太敏感,是非常脆弱的,那麼有沒有更好的解決方案來解決這樣的變化呢?當然,那就是RBAC新解:

if (user.isPermitted("projectReport:view:12345")) {
    //show the project report button
} else {
    //don't show the button
}

通過判斷用戶有沒有這項操作許可權(操作許可權暴露在代碼中,所以被成為顯式許可權控制)進行工作
有種游戲框架系統component的感覺,如果一個實體擁有這個組件就擁有這項能力:
某個動物->擁有翅膀組件->可以飛
如果也用游戲框架思想來解釋RBAC舊解的話,就是這樣:
鳥類 -> 有翅膀 -> 可以飛
某個動物 -> 是鳥類 -> 可以飛
思考一下這兩種思維方式,第二種要求我們在設計的時候把游戲世界中出現的所有特殊動物定義出來,這樣的話事前設計就顯得非常重要,而且擴展起來很困難(如果可以飛的不止鳥類呢)。
所以我認為在大多數時候,基於資源是優於基於角色的


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、模塊的認識。 模塊:指的是把預先寫好的內容封裝成一個模塊,可用時直接調用,模塊又稱為庫 模塊又稱為標準庫和第三方庫。 標準庫,預設安裝好官方所公佈的庫 C:\Python35\Lib 第三方庫,是從網上下載下來需要安裝上去。C:\Python35\Lib\site-packages getpas ...
  • <!-- 占用一個節點對象 --><province> <city code="027">武漢</city> <city code="0716">荊州</city> <city code="0718">宜昌</city></province><!-- 占用第三個節點對象 --> JAVA代碼如下: ...
  • 繼承(inheritance)是面向對象編程的核心機制之一,沒有使用繼承的程式設計,就不能成為面向對象的程式設計。 1.繼承的定義 特殊類的對象擁有一般類的全部屬性與行為,稱為特殊類對一般類的繼承。一個類可以是多個一般類的特殊類,也可以從多個一般類中繼承屬性與行為,但在java語言中,不允許一個類從 ...
  • 本文大綱 一、簡介 二、緩存的概念 三、自定義實現緩存機制 四、什麼是Ehcache 五、Ehcache怎麼用 六、Spring對緩存的支持 七、Spring+Ehcache實現 八、Spring+Shiro+Ehcache實現 九、總結 一、簡介 在項目中,用到Shiro來做驗證授權的控制。但在實 ...
  • 這算是一個系列吧,記錄一下在準備秋招期間,所準備的C++面試題,望秋招順利。所有的面試題均來源於各大論壇,網路 ...
  • 1269 匈牙利游戲 2012年CCC加拿大高中生信息學奧賽 1269 匈牙利游戲 2012年CCC加拿大高中生信息學奧賽 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 鑽石 Diamond 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 鑽石 Diamond ...
  • 軟體開發模型:1.瀑布模型1)軟體概念階段 用戶需求2)需求分析 軟體需求3)架構設計 架構文檔4)詳細設計 模型設計5)編碼階段 代碼文檔6)測試階段瀑布模型的特點是在每個階段的工作都清晰詳盡,容易預估風險和開發成本,每個階段人員安排也非常清晰。瀑布模型的缺點是中途不能出現任何問題,例如客戶要改動 ...
  • 請允許我用22種編程語言,向各位親們祝福…… C:printf("祝大家聖誕節快樂"); C++ : cout<<"祝大家聖誕節快樂"; QBasic : Print "祝大家聖誕節快樂" Asp : Response.Write "祝大家聖誕節快樂" PHP : echo "祝大家聖誕節快樂"; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...