2016-08-14 87 views
0

因此,我正在使用多租戶數據庫(MySQL,Java JDBC)開發項目。每個租戶可以被視爲一個「組」,每個「組」有多個「用戶」。我的主要困惑是如何最好地保證這一點,所以一個組的成員只能訪問該組中的數據,即使它們都使用單獨的憑據登錄。爲用戶和用戶組提供安全訪問的Web應用程序

如果我只是有一個基於組的登錄,它會很簡單:每個組一個模式,一個數據庫用戶可以訪問每個模式。這可能會導致訪問將被完全限制,因爲如果沒有該組的密碼,則無法訪問該模式。

與用戶一樣,我稱之爲「應用程序用戶」,事情變得複雜。每個應用程序用戶都將與一個組相關聯,並且當該應用程序用戶登錄時,他們需要訪問與其關聯的組。實質上,它們以應用程序用戶身份登錄,並被授予數據庫用戶的憑據。

現在,這個想法似乎笨拙和不安全。如果JDBC應用程序層允許訪問任何數據庫級別的用戶帳戶,則該安全性變得毫無意義,因爲它很容易繞過。

我想我正在尋找關於如何最好地保護這種環境的指導。謝謝。

+0

我沒有看到這個設置的任何特殊之處。只要有一個「租戶」表,其中每條記錄都是用戶和租戶之間的關係(給定用戶可能與多個租戶關聯)。除此之外,使用與單個租戶設置相同的安全性。 –

回答

0

繼承人不是爲不同的租戶分配不同的數據庫用戶,只是使用一張表來存儲所有組的數據。一個表用於所有應用程序用戶,第三個關係表用於將組或成員ID與其各自組成員的用戶ID鏈接起來。 每當任何應用程序用戶請求組資源或數據時,如果用戶有權訪問組數據,請檢入關係表。祝你好運

+0

由於您不必重複連接到不同的數據庫,因此執行速度會相對較快,對所有用戶而言都是如此。 –

+0

這很簡單。也許我正在過度看待事物。這可能是一次學術活動,但我的重點之一是安全。使用你的方法,如果有人可以突破應用程序並直接訪問數據庫,所有的數據都是脆弱的。事實上,網站管理員也可以訪問這種情況下的所有數據。 – user2223059

相關問題