2014-02-14 54 views
1

我正在開發一個MongoDB項目,我有一個場景,可以根據角色限制數據對用戶的可見性,例如,如果我有一個窗體文檔:定義自定義授權策略的最佳方式

{ 
    "testme1":"fooo", 
    "testme2":"foobar" 
} 

與角色"admin"的用戶可以同時看到"testme1""testme2",而"guest"只能看到"testme2"

什麼是動態定義這些授權規則的最佳方式,以便我的包裝API應該只按照規則獲取數據。我的做法是給用戶一個web「UI」來定義一個規則,並根據他的聲明在我的服務器中保存一個「XML」文件。請讓我知道,如果有人有一個更好的主意,或者如果他們是一些數據庫級別的方法來做到這一點

+0

通常我會說使用'views',但MongoDB不支持視圖。我們能否獲得關於您想要限制的數據結構的更多信息?應用程序如何識別限制哪些數據?你能否使用類似子查詢的東西(從限制可用數據的另一個查詢的結果中查詢數據)? – Daisetsu

+0

這對於數據庫堆棧交換可能是一個更好的問題。 – Daisetsu

+0

問題與數據庫無關,但過濾掉從中提取的數據 –

回答

0

在信息安全中有一個'行級安全'的概念。這意味着不同的用戶會以不同的方式看到相同的數據庫,某些行被忽略或模糊(仍然允許進行統計分析)。

最好的辦法可能是把你的JSON文件轉換成數據庫記錄。基本上解析你的JSON文件並將它們插入到數據庫表中。然後在表上實現行級安全性,並編寫存儲過程。

存儲過程將爲指定的特定用戶請求記錄,然後將結果轉換爲JSON腳本(或者可以在應用程序中執行轉換)。

+0

這取決於你的具體情況數據庫實現如何定義RLS策略。 – Daisetsu

+0

@Daisetu我們已經從RDBMS遷移到NoSQL以提高性能,並且不能僅僅爲了安全目的而將數據存儲在RDBMS中 –

+0

您可能希望將其包含在您的問題中。看起來你的雙手在數據庫層面被捆綁在一起。您可能必須創建自定義解決方案。 – Daisetsu

3

對於授權,您最好使用基於XACML 3.0策略的屬性級別訪問控制。

XACML