我們有一個內置的asp.net網站,運行在Windows安全的IIS上。根據我的理解(並觀察),這意味着每個線程都使用連接到該網站的用戶的憑據運行。SQL連接字符串安全
該網站連接到SQL Server 2014數據庫。我們使用SQL Server用戶名和密碼進行連接。看看MSDN我發現不建議使用SQL Server身份驗證。
登錄的SQL Server帳戶的密碼。 不建議。爲了保持高度的安全性,我們強烈建議您使用集成安全性或Trusted_Connection關鍵字。 SqlCredential是爲使用SQL Server身份驗證的連接指定憑據的更安全的方式。
由於對網站刪除Windows安全性是不是一種選擇,我看到遵循MSDN建議的唯一選擇是:
忽略MS的建議,並使用SQL身份繼續爲我們
給每個網站用戶與當前SQL Server憑證具有相同的SQL Server訪問權限。這意味着如果任何用戶直接連接到服務器,他們可以運行自己的查詢,而不是限於我們編碼的內容。也許某種防火牆規則可以解決這個問題。該業務不是這個想法的粉絲(我不是)
給每個用戶連接訪問權限(沒有其他權限)並使用應用程序角色在用戶通過網站連接時提供權限。
每次連接到SQL Server時,都應該在模擬有權訪問的域用戶的線程上完成。
這些選項聽起來都沒有比使用SQL Server用戶名和密碼更好。
建議連接數據庫的方式是什麼?
號這取決於Web應用程序的配置,但它很可能將其連接到SQL服務器作爲_Application pool_憑據。實際上,將Windows憑據傳遞到SQL Server –
這是一個非常具有挑戰性的過程......這是您的選項4,這是許多Web應用程序的功能。 –
對不起@ Nick.McDermaid,你是否說過許多使用Windows安全性運行的Web應用程序(即System.Threading.Thread.CurrentPrincipal =查看站點的用戶)會在每次連接時模仿另一個通用用戶開銷到SQL?你能舉出這是最佳實踐的例子嗎? – Greg