為什麼 MS SQL Server 使用 NTLM 驗證?

為什麼 MS SQL Server 使用 NTLM 驗證?

Windows Server 2008 R2。

安裝了 SQL Server 2008 R2。

MSSQL 服務作為本機系統運作。

伺服器 FQDN 是 SQL01.domain.com。

SQL01 加入名為domain.com 的Active Directory 網域。

以下是 setspn 的輸出:

C:\> setspn -L sql01
...
MSSQLSvc/SQL01.domain.com:1433
MSSQLSvc/SQL01.domain.com
WSMAN/SQL01.domain.com
WSMAN/SQL01
TERMSRV/SQL01.domain.com
TERMSRV/SQL01
RestrictedKrbHost/SQL01    
RestrictedKrbHost/SQL01.domain.com
HOST/SQL01.domain.com
HOST/SQL01

然後我啟動 SQL Server Management studio 並連接到 SQL01:

在此輸入影像描述

然後我執行以下查詢:

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid 

結果就是NTLM。為什麼結果不是Kerberos? SPN 對於使用本機系統帳戶似乎是正確的。伺服器不在叢集中或不使用 CNAME。

答案1

這是因為我是從託管 SQL Server 的相同伺服器本機連線到 SQL Server。當我從網路上的另一台電腦進行連線時,所使用的身份驗證機制是 Kerberos,正如預期的那樣。

如果本機連接,SQL Server 將始終使用 NTLM。僅在遠端連線時才使用 Kerberos。

這篇文章來自SQL Server 協定博客,雖然日期相同,但也說了同樣的話:

1) 如果存在 SPN,則在透過 TCP/IP 進行遠端連線時使用 Kerberos。

2) 如果 SPN 存在,則在 XP 上建立本機 tcp 連線時使用 Kerberos。

3) 在WIN 2K3上進行本地連線時使用NTLM。

4) NTLM 透過 NP 連接使用。

5) 如果找不到 SPN,則透過 TCP 連線使用 NTLM。

相關內容