2013-06-26 109 views
0

我有一個使用SQL Server 2012維護數據的Windows應用程序項目。爲每個用戶創建一個SQL Server登錄名

爲了確保我的應用程序,我決定創建一個SQL Server登錄在我的系統中每個用戶。

這是個好主意嗎?

+6

優點:非常細化的權限。缺點:很難維護,管理 - 這不值得。替代方法:創建一個Windows NT組,並將人員添加到該組中,如果您想直接對數據庫進行身份驗證。理想的情況下,每個團隊都應該代表您在申請中的角色,並獲得適當的權利。 – dash

+1

聽起來像是我的維修噩夢。你不能使用集成安全性嗎? – user1429080

+0

如果您不想使用集成安全性(預先存在的Windows憑據),那麼我會建議創建一個或多個Windows **組(可以向其添加用戶)併爲這些組創建登錄名。您可以擁有(a)普通用戶,(b)更多特權用戶,(c)管理員或任何分組是合理的 - 但您只需管理2,3,5個組登錄名**,而不是每個用戶一個。 –

回答

0

您可以嘗試創建訪問矩陣表以將數據訪問級別映射到每個用戶。然後,您可以根據登錄用戶的訪問級別顯示/隱藏應用程序中加載的數據。正如@dash所說,這將很難維持,但它可能比創建個人登錄更容易。其次,我認爲創建一個插入/更新/刪除腳本來編輯矩陣也比較容易,而不是讓DBA編輯SQL Server登錄。

1

如果你不使用Windows Authentication那麼這將是你最好的選擇。您還可以將用戶放入Roles並指定該用戶組的權限。

如果您需要每個用戶具有不同的權限,並且您需要精確地確定哪個用戶對每個數據庫實體(表,視圖,存儲過程,函數等)具有什麼權限,那麼創建新用戶將是要走的路。這將允許您優化每個帳戶,啓用/禁用帳戶,輕鬆授予/撤銷權限。

由於@dash指出這將是難以維持的,但我認爲有安全勝過維護大量基礎的粒度級別。

相關問題