2008-11-17 88 views
5

有一些商業產品的在那裏,這給你一個窗口配置您的應用程序和後端SQL Server數據庫基礎安裝。通常,它會詢問您是否要使用Windows或SQL Server身份驗證連接到數據庫。他們中的大多數提出建議使用Windows身份驗證,然後用分配到db_owner數據庫角色的網絡服務帳戶配置數據庫。 據我所知,Windows身份驗證更安全,因爲你不必存儲憑證在web.config中,並將它們發送線時驗證到SQL Server,但對於生產環境中,網絡服務帳戶是一種安全的配置一個db_owner?我們應該注意哪些具體的風險?Windows身份驗證和網絡服務帳戶作爲的db_owner


感謝StingyJack,

我聽到你說的話,他們將不得不登錄到數據庫作爲網絡服務用戶至上雖然。有沒有簡單的方法來做到這一點?

我真正想弄明白的是,是否有任何固有的風險與默認分配了db_owner角色的網絡服務帳戶有關。

回答

1

是,應用程序(和它的任何用戶)可以可能執行任何DBO可以對數據庫執行。 DROP TABLE,SELECT * FROM PASSWORDS等。

如果您設置了針對SQL注入的預防性措施,並且已經用適當的應用程序層安全性編寫了您的應用程序,那麼使用Windows Auth和dbo可能會沒問題。

如果您正在使用非常敏感的數據的工作,不信任的應用程序(還),還是希望儘可能的安全,那麼你將不得不在數據庫層實現安全。

例如,用戶X可以訪問表的視圖a和b和圖c和用戶Y僅有權訪問視圖C。您的應用程序必須以適當的用戶身份連接才能訪問正確的對象。

1

登錄到數據庫作爲網絡服務(域\機器$)將是非常困難的(我不知道,但一些的l33t haxor大概可以),除非你是在網絡上盒的服務。

沒有密碼,它不是互動,它有非常有限的權利(除非「本地系統」)。

的主要問題是SQL注入攻擊。 這些適用於通過數據庫服務器的任何連接。

具有的db_owner額外的風險是DROP TABLE,甚至刪除數據庫類型的攻擊。 沒有的db_owner,它仍然是危險的,例如 「SELECT * FROM用戶表WHERE 1 = 1」 的攻擊。

不幸的是,你有商業或第三方應用程序沒有選擇使用存儲的特效,至少許可等

您可以減少安裝後雖然權利。

3

使用網絡服務作爲的db_owner可能對很多環境的確定。

如果你想有一個更高的安全性,只需創建一個單獨的Windows帳戶,授予它是在SQL Server需要的最低權限,然後改變這個新帳戶的上下文中運行應用程序。

的特定風險將是:

  • 一個網絡服務的環境下編寫得很糟糕的應用程序運行可以允許所有的網絡服務訪問其他數據的未授權訪問。你減輕創建的所有應用程序單獨的帳戶風險。
  • 的db_owner可能更多的訪問比應用程序真正需要的,如果你是妥協,這意味着濫用/開發更具潛力。您可以通過挑選常識權限授予減少這種頗有幾分。把它太遠,你將有收益遞減和更多的支持頭疼,雖然。