帶您深入了解SQL Server服務帳戶模式
安裝SQL Server需要選擇服務的登錄帳戶類型,那么為什么需要用戶選擇服務帳戶類型呢,不同的服務帳戶類型又有什么差別呢?下文將帶您尋找答案。
一:為什么需要SQL Server服務帳戶類型
SQL Server在操作系統中是作為進程來運行的,SQL Server中的每個服務代表一個進程或一組進程。每個進程需要有訪問SQL Server相關文件(如.mdf、.ndf 和 .ldf 等文件)或注冊表或者SQL Server安裝目錄的權限。這與當前登錄到SQL Server服務器上的用戶權限無關。無論是管理員帳號Sa,還是普通SQL Server用戶,這些SQL Server用戶的權限大小與操作系統中SQL Server進程權限無關。為了能讓SQL Server在操作系統中正常的啟動和運行,就需要指定SQL Server的服務帳戶,用以登錄Windows操作系統并獲取需要訪問文件的權限。所以服務帳戶指的是Windows操作系統中的帳戶。
二:不同的SQL Server服務帳戶類型的含義。
理解了為什么需要指定服務帳戶,那么我們再來看一下在SQL Server 2000以及SQL Server 2005中,不同服務帳戶的作用。只有理解了不同服務帳戶的作用,我們才知道在實際環境中該如何選擇最適合的服務帳戶。
1:SQL Server 2000服務帳戶類型
SQL Server 2000中SQL Server服務帳戶只有兩種,如圖一所示,分別是“本地系統帳戶”和“域用戶帳戶”。兩者之間的區別在SQL Server 2000聯機幫助中說得很清楚:
本地系統帳戶不要求密碼,沒有 Windows NT 4.0 和 Windows 2000 的網絡訪問權限,同時限制 SQL Server 安裝與其它服務器交互。
域用戶帳戶使用 Windows 身份驗證,即用于連接到操作系統的用戶名和密碼也用于連接到 SQL Server。一般情況下都使用域用戶帳戶,因為許多服務器之間的活動只能使用域用戶帳戶才能執行,例如:遠程過程調用,復制,備份到網絡驅動器以及SQL郵件相關功能。
也就是涉及到網絡相關的操作,“本地系統帳戶”就無法為力。我們從服務帳戶的作用上來思考就比較容易理解原因所在。如上面為什么需要服務帳戶上所說的一樣,服務帳戶指的是Windows操作系統中的帳戶。我們知道,在Windows網絡中兩臺計算機要通訊,被訪問方需要訪問方提供身份驗證信息,因為本地系統帳戶不屬于Windows帳號中的 Everyone 組,因此,使用該帳戶的服務只能通過空會話來訪問網絡資源。一般情況下,空會話會在最基本的安全設置中被禁用,這就是“本地系統帳戶”無法使用使用網絡功能的原因所在。“域用戶帳戶”就是通過帳號信息進行安全身份驗證,只要提供的安全身份信息驗證通過,網絡訪問就被允許。這里“域用戶帳號”名字并不貼切,其實并不一定要求是AD域用戶帳戶,基于工作組模型的用戶帳戶一樣可以適應于“域用戶帳號”。
2:SQL Server 2005服務帳戶類型
SQL Server 2005中SQL Server服務帳戶類型分為“內置系統帳戶”和“域用戶帳戶”,但“內置系統帳戶”細分成三類“本地系統帳戶”、“網絡服務帳戶”以及“本地服務帳戶”。
在SQL Server 2005聯機幫助中不同的服務帳戶類型說明如下:
“本地系統”選項指定一個不需要密碼的本地管理員級別的系統帳戶,與SQL Server 2000中的本地系統帳戶類似。
“網絡服務帳戶”是一個特殊的內置帳戶,它與通過身份驗證的用戶帳戶類似。網絡服務帳戶與 Users 組的成員具有相同級別的資源和對象訪問權限。以網絡服務帳戶身份運行的服務將使用計算機帳戶的憑據訪問網絡資源。
“本地服務帳戶”是一個特殊的內置帳戶,它與通過身份驗證的用戶帳戶類似。本地服務帳戶與 Users 組的成員具有相同級別的資源和對象訪問權限。如果有個別服務或進程的安全受到威脅,則此有限訪問權限有助于保護系統的安全。以本地服務帳戶身份運行的服務將以一個沒有憑據的空會話形式訪問網絡資源。
“域用戶帳戶”是一個使用 Windows 身份驗證的域用戶帳戶,以設置并連接到 SQL Server。Microsoft 建議對 SQL Server 服務使用具有***權限的域用戶帳戶,因為 SQL Server 服務不需要管理員帳戶特權。
建議在實際環境中,如果存在多臺SQL Server服務器互相通信,請使用“域用戶帳戶”。如果個人測試環境,服務帳戶類型按個人喜好。
【編輯推薦】