2012-03-04 77 views
1

我們當前使用連接字符串來驗證我們的數據庫憑據。由於成長和合規性,開發人員不再允許「查看」我們網站使用的數據庫憑證。解決這個問題的方法是使用集成身份驗證。我們計劃爲每個應用程序池設置一個用戶,然後允許用戶訪問數據庫。安全問題ASP.NET集成身份驗證

我的問題是:這種方法是否存在任何安全問題?迄今爲止,從連接字符串中刪除DB憑證,是否有更好的(更簡單或更簡單)的方法,我們應該/可以採取?

回答

0

如果您的連接字符串存儲在web.config文件中,那麼您可以創建該文件的一個單獨的生產版本,以供deverlopers看不到。與使用應用程序池的集成身份驗證相比,測試和設置更容易。

但有一句話警告:如果你限制了開發者那麼多,它會減慢它們的變化速度。由於世界其他地區一直在不斷移動,這通常會以應用程序成爲死亡遺留軟件包結束。如果你計劃增長,改進或擴展,這很危險。

+0

總而言之,我們別無選擇,只能限制開發者的訪問。 – 2012-03-04 15:05:54

+0

[薩班斯 - 奧克斯利法案](http://en.wikipedia.org/wiki/Sarbanes-Oxley_Act)?這將如何迫使您限制開發人員而不是系統管理員訪問? – Andomar 2012-03-04 15:16:43

+0

它迫使問題分離,作爲開發人員的人不能管理員訪問數據庫,也不能部署自己的代碼。至少根據安永會計師事務所。 – 2012-03-04 20:29:48

1

如果您需要保護和生產數據庫審計訪問,則Windows身份驗證比SQL身份驗證的一些原因是更好的選擇:

  1. 您可以控制誰可以完全通過NT訪問數據庫組和權限,這意味着你知道誰具體訪問數據庫。使用sql認證的訪問池僅受限於誰知道密碼。如果有n個知道密碼的人,那麼在某個特定時間跟蹤誰做了什麼是棘手的(但並非不可能)。

  2. 只有您的系統管理員需要知道訪問數據庫的NT標識的密碼;事實上,只有知道用戶名才能完成許多配置。

  3. 登錄和訪問可以在域級別跟蹤,比使用SQL Server登錄更容易。

什麼,它不會給你的是:

  1. 能力,以確保開發人員不能看到生產數據 - 無論誰寫的應用程序可以很容易地包括一些診斷程序,以選擇出的數據

  2. 確保生產數據僅保留在生產環境中 - 任何人對生產數據庫進行備份(比如將其恢復到UAT環境進行測試)可以輕鬆地公開生產數據。

此方法的問題已在其他帖子中討論;尤其是使用ASP.Net應用程序時,您必須考慮是否要使用模擬/授權(Web服務器可以充當訪問它的NT用戶)或可信用戶模型(您可以配置固定身份以訪問某些資源)。

這是由您正在使用的IIS版本進一步複雜。

+0

應用程序池不是用戶特定的,而是應用程序特定的。該應用程序仍將使用一個帳戶連接到數據庫。要使用最終用戶憑證登錄,您必須模擬最終用戶。模擬的副作用是連接池不再起作用。 – Andomar 2012-03-04 22:31:59

+0

您可以爲該應用程序創建一個以「可信用戶」身份運行的單個應用程序池,但是在執行任何操作時您還會捕獲當前用戶身份擊中該網站。對於連接池是真實的 - 但這僅僅是因爲它現在是模擬中每個用戶的實例,並且不能共享。 SOX通常是要確保你知道誰在做什麼,誰可以做什麼,並阻止他們做他們不應該做的事情;另外,在我以前的工作中,任何使用SQL身份驗證的應用程序都無法驗證SOX。 – dash 2012-03-04 22:34:49