如何在您建立遠端連接至 SQL Server 2005 執行個體時,確認您使用的是 Kerberos 驗證

文章翻譯 文章翻譯
文章編號: 909801 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

本文將告訴您,在您建立遠端連接至 SQL Server 2005 執行個體時,如何確認您使用的是 Kerberos 驗證做為 Microsoft Windows 驗證方法。

其他相關資訊

當您使用的是 Windows 整合式驗證而不是 SQL 驗證時,SQL Server 2005 會間接透過「Windows 安全性支援提供者介面」(SSPI) 支援 Kerberos 驗證。但是,只有在 SQL Server 可以使用 SSPI 來交涉要使用的驗證通訊協定的特定情況下,SQL Server 才能使用 Kerberos 驗證;如果 SQL Server 無法使用 Kerberos 驗證,Windows 將會使用 NTLM 驗證。基於安全性考量,我們建議您使用 Kerberos 驗證而不要使用 NTLM 驗證,系統管理員和使用者都應該瞭解如何確認他們是否使用 Kerberos 驗證來進行遠端連接。

如果要使用 Kerberos 驗證,您必須確定下列的所有情況皆成立:
  • 伺服器和用戶端電腦都必須是同一個 Windows 網域的成員,或是受信任網域的成員。
  • 伺服器的服務主要名稱 (SPN) 必須在 Active Directory 目錄服務中註冊。
  • SQL Server 2005 的執行個體必須啟用 TCP/IP 通訊協定。
  • 用戶端必須使用 TCP/IP 通訊協定連接至 SQL Server 2005 的執行個體。例如,您可以將 TCP/IP 通訊協定放在用戶端通訊協定順序的頂端,或者,您可以在連接字串中加上前置詞 "tcp:",以指定連接使用 TCP/IP 通訊協定。

如何在網域中註冊 SPN

當您註冊 SQL Server 服務的 SPN 時,您實際上是在建立 SPN 和啟動伺服器執行個體服務的 Windows 帳戶之間的對應。

您必須註冊 SPN,因為用戶端必須使用已註冊的 SPN 連接至伺服器執行個體。SPN 是由伺服器的電腦名稱和 TCP/IP 連接埠所組成,如果沒有註冊 SPN,SSPI 就無法判斷與 SPN 有關聯的帳戶,這樣一來就不會使用 Kerberos 驗證。

當 SQL Server 在本機系統帳戶或網域管理員帳戶下執行時,執行個體會在啟動時自動使用下列格式註冊:
MSSQLSvc/FQDN:tcpport
注意FQDN 是伺服器的完整網域名稱;tcpport 是 TCP/IP 連接埠號碼。

由於 SPN 中包含 TCP 連接埠號碼,因此 SQL Server 必須啟用 TCP/IP 通訊協定才能讓使用者透過 Kerberos 驗證連線;叢集設定也適用相同的規則。此外,如果執行個體在啟動時自動註冊 SPN,那麼 SPN 將會在執行個體停止時自動解除註冊。

只有網域管理員帳戶或本機系統帳戶擁有註冊 SPN 所需要的權限,所以,如果 SQL Server 服務是在非管理員帳戶之下啟動的,SQL Server 就無法為執行個體註冊 SPN。這個行為不會導致執行個體無法啟動,但是 Windows 事件記錄檔的應用程式記錄檔會記錄下列訊息:

事件類型:資訊
事件來源:MSSQL$InstanceName
事件類別目錄:(2)
事件 ID:26037
日期:日期
時間:時間
使用者:N/A
電腦:ComputerName
描述:
SQL 網路介面 (SQL Network Interface) 程式庫無法註冊 SQL Server 服務的服務主要名稱 (SPN)。錯誤:0x54b。無法註冊 SPN 可能迫使整合式驗證回到 NTLM 而非 Kerberos。此為參考用訊息。只有在驗證原則需要 Kerberos 驗證時,才需要採取其他動作。
如需詳細資訊,請參閱 http://support.microsoft.com 上的「說明和支援中心」。

如果記錄檔內有這個訊息,您必須在網域管理員帳戶下手動註冊執行個體的 SPN,才能使用 Kerberos 驗證。如果要註冊 SPN,您可以使用 Microsoft Windows 2000 Server Resource Kit 隨附的 SetSPN.exe 工具,這個工具也隨附在 Microsoft Windows Server 2003 支援工具中;Microsoft Windows Server 2003 支援工具則隨附在 Microsoft Windows Server 2003 Service Pack 1 (SP1) 中。

如需有關如何取得 Windows Server 2003 Service Pack 1 支援工具的詳細資訊,請按一下下列文件編號,檢視「Microsoft 知識庫」中的文件:
892777 Windows Server 2003 Service Pack 1 支援工具
您可以使用類似下列命令的命令來註冊執行個體的 SPN:
SetSPN –A MSSQLSvc/<ComputerName>.<DomainName>:1433 <AccountName>
注意 如果已經有 SPN 存在,您必須先刪除該 SPN 才能重新註冊。如果帳戶對應已經變更,您可能也必須這麼做。如果要刪除現有的 SPN,您可以搭配使用 SetSPN.exe 工具和 -D 參數。

如何確認您使用的是 Kerberos 驗證

連接至 SQL Server 2005 的執行個體後,請在 SQL Server Management Studio 中執行下列 Transact-SQL 陳述式:
select auth_scheme from sys.dm_exec_connections where session_id=@@spid
如果 SQL Server 正在使用 Kerberos 驗證,"KERBEROS" 字元字串會出現在結果視窗的 auth_scheme 資料行中。

?考

如需詳細資訊,請參閱《Microsoft SQL Server 2005 線上叢書》的下列主題:
  • <服務主要名稱的註冊>(Registration of Service Principal Name)
  • <如何啟用 Kerberos 驗證,包括伺服器叢集上的 SQL Server 虛擬伺服器>(How to enable Kerberos authentication including SQL Server virtual servers on server clusters)

屬性

文章編號: 909801 - 上次校閱: 2006年9月22日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
關鍵字:?
kbsql2005connect kbinfo KB909801
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com