Sql-Server

在多台伺服器上共享服務帳戶有哪些風險(如果有)?

  • November 16, 2020

我將域帳戶用於 SQL Server 服務帳戶。有時,當我有多個邏輯或主題相關的伺服器時,我會為所有伺服器上的服務帳戶使用同一組域帳戶。每個伺服器上的使用者帳戶權限可能不同,但通常有很多重疊。

我的問題的要點是:可以訪問一個實例但不能訪問另一個實例的使用者可以利用共享服務帳戶來訪問另一台伺服器嗎?

這是我要解決的具體情況:

  • 我有兩台帶有預設 SQL 實例的伺服器,分別稱為 org-sql-1 和 org-sql-2。
  • 我為每個服務使用一個域帳戶,所以我有 mydomain\orgDBService、mydomain\orgAgentService 等(雖然我不確定這是否嚴格相關——我想如果我使用一個單一的佔所有服務)。
  • 但是我在兩台伺服器上重用了這些域帳戶,因此 org-sql-1 和 org-sql-2 上的數據庫服務都在 mydomain\orgDBService 下執行。

迄今為止,我從未特別質疑過安全隱患,因為這些伺服器具有共同的用途和使用者群,即使特定的使用者權限可能不同。

現在,我們要添加第三個實例,我們稱之為 org-sql-rpt。這個主題與其他主題非常吻合,但有一個關鍵區別:我們將允許外部合作夥伴(即不是我們組織的員工)訪問此伺服器,如下所示:

  • 他們的憑據將擁有(屬於 db_owner)幾個數據庫。
  • 但它們不屬於任何伺服器角色(當然,除了公共的)。
  • 在啟用此伺服器之前,他們可能在有限的時間內擁有對作業系統桌面的管理員訪問權限。
  • 他們不會知道服務帳戶的密碼。

鑑於此,我是否應該擔心將域帳戶重用為這個新實例的服務帳戶?這個人是否有任何風險可以使用他們在 org-sql-rpt 上的合法憑據來訪問 org-sql-1 或 org-sql-2?(即任何可以通過使用不同的服務帳戶憑據來減輕的風險?)

還是出於其他原因,這只是一個普遍的壞主意?

編輯

新實例將託管數據庫、集成和報告服務(至少目前是這樣)。沒有分析服務。

外部使用者將擁有提升的數據庫權限,但沒有明確的實例權限。例如,他們將無法創建登錄、作業或報告。

風險緩解將表明為每台機器上的每個服務創建一個單獨的帳戶。根據微軟自己的建議,創建必要帳戶所需的工作量極少,但不這樣做所帶來的未知風險相當高。

Microsoft 最佳實踐建議對所有服務使用單獨的服務帳戶。

有關詳細資訊,請參閱http://msdn.microsoft.com/en-us/library/ms144228.aspx#isolated_services

重點是:

隔離服務

隔離服務降低了一項被破壞的服務可能被用來破壞其他服務的風險。要隔離服務,請考慮以下準則:

在單獨的 Windows 帳戶下執行單獨的 SQL Server 服務。盡可能為每個 SQL Server 服務使用單獨的、低權限的 Windows 或本地使用者帳戶。有關詳細資訊,請參閱配置 Windows 服務帳戶和權限。

還有一個關於保護 SQL Server 的 KB,其中提到瞭如何正確配置服務帳戶:

http://support.microsoft.com/kb/2160720

選擇服務帳戶時,請考慮最小權限原則。服務帳戶應該具有完成其工作所需的權限,並且沒有更多權限。您還需要考慮帳戶隔離;服務帳戶不僅應該彼此不同,而且它們不應該被同一伺服器上的任何其他服務使用。不要向 SQL Server 服務帳戶或服務組授予其他權限。權限將通過組成員身份授予或直接授予服務 SID,其中支持服務 SID。有關詳細資訊,請參閱聯機叢書主題設置 Windows 服務帳戶。

Technet 在http://technet.microsoft.com/en-us/library/ms143504.aspx上有一篇題為“配置 Windows 服務帳戶和權限”的文章,其中有這麼說:

安全說明:始終使用盡可能低的使用者權限執行 SQL Server 服務。盡可能使用 MSA 或虛擬帳戶。如果 MSA 和虛擬帳戶不可用,請使用特定的低權限使用者帳戶或域帳戶,而不是 SQL Server 服務的共享帳戶。為不同的 SQL Server 服務使用不同的帳戶。不要向 SQL Server 服務帳戶或服務組授予其他權限。權限將通過組成員身份授予或直接授予服務 SID,其中支持服務 SID。

上一段中的“MSA”是指“託管服務帳戶”,這是在 Windows 7 或 Windows Server 2008 R2 及更高版本上安裝的預設設置。託管服務帳戶實際上對每台機器都是唯一的。

順便說一句,在配置多個伺服器以在同一個服務帳戶下執行時,我考慮的一個問題是帳戶鎖定。如果您對所有 SQL Server 使用單個服務帳戶,並且該服務帳戶被鎖定,則您的所有伺服器都可能會受到影響。如果每個服務有一個帳戶,則最多有一台伺服器會受到鎖定的影響。

引用自:https://dba.stackexchange.com/questions/72858