2013-02-05 106 views
0

我剛開始指出一個項目,這將是一個相當先進的數據庫與一個相當簡單的MVC前端,可通過互聯網訪問,我不確定如何處理的用戶,我可以看到兩個選項:用戶管理 - SQL Server內置vs自定義用戶列表

選項1 - 使用SQL服務器內置的登錄/用戶在處理用戶身份驗證,並使用內置的用戶訪問控制誰可以訪問什麼(幾乎所有的東西會被選擇或存儲過程)。

選項2 - 用我自己的用戶列表(哈希鹽漬密碼)和我自己的訪問控制列表(可能使用傳遞到另一個PROC PROC名稱和OBJECT_NAME(@@PROCID)),並完成所有寫操作通過一個/讀取數據庫的應用程序配置文件,可訪問所有程序/視圖。

我已經搜索,但無法找到任何理由我應該選擇一個在另一個,任何人都可以共享鏈接或提供原因爲什麼一個更好,另一個(或者如果有兩個明顯的問題)?

如果您需要更多詳情,請告訴我。

回答

0

如果通過連接池使用SQL身份驗證(每個用戶都有選項1),那麼性能會比較差。你會爲每個用戶獲得共享,但這仍然意味着100或1000的連接。有解決方法,但解決方案開始開始做像選項2的選項1工作,所以你不妨使用選項2.

我見過一些解決方案,創建SQL帳戶做inital身份驗證每個用戶(通過一個基於單個應用程序的SQL帳戶),其餘的則像選項2一樣工作(再次通過一個基於單個應用程序的SQL帳戶)。這些案例使用了大量的SQL帳戶,因此每個用戶可以擁有一組視圖,並模仿架構。作爲模式&自SQL Server 2005以來,別名已經可用,因此出於這個原因選擇選項2是不值得的。

最後,不要使用SQL Server應用程序角色 - 它們是不好的安全措施。 Brian Kelly在一篇關於他們的文章(http://www.sqlservercentral.com/articles/Security/sqlserversecurityprosandconsofapplicationroles/1116/)中涵蓋了一些問題(pos & cons)。

+0

似乎像標準配置文件的選項2將是最好的,是否有任何標準方法或最佳做法,如何從應用程序級別(而不是數據庫級別)最好地保護用戶? – bendataclear

相關問題