http://hovertree.com/h/bjaf/h6h1tk23.htm
今天在安裝sqlserver2008 r2的時候,在Server Configuration階段要求我設定sqlserver中各種服務的賬戶名稱,如下圖所示:
賬戶類型可以在後期修改,改的就是服務中的log on as裡面的屬性。
那麼Local system/Network service/Local Service這三種賬戶有什麼區別呢?
LocalSystem是預設的擁有本機所有權限的本地賬戶,這個賬戶跟通常的用戶賬戶沒有任何關聯,也沒有用戶名和密碼之類的憑證。這個服務賬戶可以打開注冊表的HKEY_LOCAL_MACHINE\Security鍵,當LocalSystem訪問網絡資源時,它是作為計算機的域賬戶使用的。
舉例來說,以LocalSystem賬戶運行的服務主要有:WindowsUpdate Client、 Clipbook、Com+、DHCP Client、Messenger Service、Task Scheduler、Server Service、Workstation Service,還有Windows Installer。
Network Service賬戶是預設的擁有本機部分權限的本地賬戶,它能夠以計算機的名義訪問網絡資源。但是他沒有Local System 那麼多的權限,以這個賬戶運行的服務會根據實際環境把訪問憑據提交給遠程的計算機。Network Service賬戶通常可以訪問Network Service、Everyone組,還有認證用戶有權限訪問的資源。
舉例來說,以Network Service賬戶運行的服務主要有:Distributed Transaction Coordinator、DNS Client、Performance Logs and Alerts,還有RPC Locator。
Local Service賬戶是預設的擁有最小權限的本地賬戶,並在網絡憑證中具有匿名的身份。Local Service賬戶通常可以訪問Local Service、Everyone組還有認證用戶有權限訪問的資源。
舉例來說,以Local Service賬戶運行的服務主要有:Alerter、Remote Registry、Smart Card、SSDP,還有WebClient。
Local system :本地系統用戶, 個人電腦通常選擇這個用戶
Network service :網絡服務用戶, 通常需要遠程連接的都使用這個
Local Service :本地服務
另外還有一個要求輸入用戶名密碼的那個用戶是域用戶,這個是做集群的時候選擇的登陸方式
今天在安裝APEXSQL的時候,能夠成功安裝,但是不能連接數據庫,每次都讓我創建一個administration的賬戶,但是我創建了,加入到了administrators組還是不能連接,最後在SQL Server的properties中,將賬戶有network service 改為local system就可以連接了。
之所以要使用local system是因為apexsql裡面要用到一些系統底層的東西,所有要求最高權限。
如果我們打開任務管理器,在user name那一列我們能夠看到很多賬戶名,常見的有以下幾類
1.) SYSTEM
2.) NETWORK SERVICE
3.) Domain Users
4.) LOCAL SERVICE
那麼這些到底都有什麼區別呢,這些在下面的這篇文章有種介紹。
http://www.vistaheads.com/forums/microsoft-public-windows-vista-general/86838-what-system-network-service-account.html
那麼應該使用什麼賬戶來啟動sql server呢?下面這篇文章給出了詳細的介紹。
http://social.msdn.microsoft.com/Forums/en/sqlsecurity/thread/31d57870-1faa-4e14-8527-ce77b1ff40e4
我來總結一下上面這篇文章的中心思想。
在我們安裝完sql server 2008和2012以後,我們會發現在security下面的login中有類似NT Service\MSSQL$SQL2012、NT SERVICE\ReportServer$SQL2012和NT SERVICE\SQLAgent$SQL2012這樣子的賬戶。這些其實都是Service SID所對應的名字。
Service SID的引入,是為了解決多個Service可能同用一個service帳號啟動所帶來的安全隱患。如IIS 使用Network Service帳號,可能其他服務也使用Network Service帳號。為了使得IIS能夠連接到SQL Server, 我們可能會把Network Service作為SQL Server的login, 但是這是不安全的。因為其他服務如果以Network Service做為啟動帳號的話,也能訪問SQL Server。為了解決這個問題,在SQL Server 2008/Windows Server 2008及以後,我們有了SID這個概念。這樣不同的服務,即使服務啟動帳號是相同的,它們的SID也是不同的。
對於NT Service\MSSQL$SQL2012、NT SERVICE\ReportServer$SQL2012和NT SERVICE\SQLAgent$SQL2012這些login,並不是Windows Users或Group的名字, 而是SID的名字。其相對應的SID值,我們可以用命令 sc showsid serviceName所得到,如下圖所示: