2013-08-26 105 views
3

我學習的Apache四郎,我發現這篇文章:資源的訪問控制VS基於角色的訪問控制

The New RBAC: Resource-Based Access Control

而筆者說:

...... 。如果您想要,您可以將行爲(權限)直接分配給角色。從這個意義上說,你仍然會有一個基於角色的訪問控制安全策略 - 只是你會有明確的RBAC策略 而不是傳統的隱式策略。

但是這引出了一個問題 - 爲什麼要停止角色?您可以將 行爲直接分配給用戶或組,或安全策略可能允許的任何其他行爲。

看來作者寧願直接存儲用戶和權限的關係而不是通過角色。

雖然它似乎這是簡單明瞭的,我有一些問題:

  1. 是否有他們兩個人之間的任何本質上的區別?

  2. 數據庫模式。

在基於角色的訪問控制角色,通常我們使用三個表來描述這種關係:

user 
role 
user_role 

沒有,如果我使用基於資源訪問控制,什麼是建設中的表通常的做法?

+0

ABAC XACML是最好的已經存在的系統,我知道了。 閱讀這篇也許有助於瞭解的話題更好:http://stackoverflow.com/questions/18622678/rest-api-use-endpoint-properties-in-authorization-model/18640223#18640223 – inf3rno

+0

有關詳細信息,請閱讀本文章:https://stormpath.com/blog/new-rbac-resource-based-access-control –

回答

6

這是我第一次聽說基於資源的訪問控制。

我會非常小心地沿着這條路走下去。在授權的世界上有本質上2個標準:

  • 基於角色的訪問控制(RBAC),如通過NIST標準化和數以千計的應用程序和框架的與從主供應商(CA,甲骨文,IBM支持實現。 ..)
  • 基於屬性的訪問控制(ABAC)被標準化爲NIST(也是​​),同樣也很好地由IBM,Oracle和Axiomatics等供應商實現。

基於資源的訪問控制似乎是由Stormpath發明並且僅由它們支持的模型。這可能是好的,但它只會適用於他們的環境。

基於角色和基於屬性的訪問控制是NIST和其他標準化機構(例如OASIS(其中SAML和XACML在10年前定義並且今天仍然受支持)支持的)被廣泛接受的範例。

您的問題是:爲什麼您基於角色的訪問控制不夠?你有沒有角色爆炸問題?它不夠表現力嗎?你需要實現用戶,資源和上下文之間的關係嗎?

ABAC和XACML可以讓你做到這一點。我在YouTube上發佈了一個簡單的視頻,用於處理基於屬性的訪問控制。有一個look

的底線是RBAC和ABAC是跨多個應用程序和層的工作標準。基於資源的訪問控制只針對Apache Shiro。

+0

怎麼做時參數的路線是發展這項工作?如果在我們處理請求之前我們可能不能訪問資源,對吧? –

+0

是的,這是正確的 –

+0

在這種情況下什麼被認爲是最佳實踐? –