为什么MS SQL Server使用NTLM身份验证?


12

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。


仅回答问题,社区就能从中受益吗?
mdpc

Answers:


15

这是因为我是从承载SQL Server的同一台服务器本地连接到SQL Server的。当我从网络上的另一台计算机连接时,所使用的身份验证机制是Kerberos,正如预期的那样。

如果在本地连接,SQL Server将始终使用NTLM。Kerberos仅在远程连接时使用。

SQL Server Protocols Blog的这篇文章虽然过时,但也说了同样的话:

1)如果存在SPN,则在通过TCP / IP进行远程连接时使用Kerberos。

2)如果存在SPN,则在XP上进行本地tcp连接时使用Kerberos。

3)在WIN 2K3上进行本地连接时使用NTLM。

4)NTLM用于NP连接。

5)如果未找到SPN,则通过TCP连接使用NTLM。


3
哇,所有这些工作(研究)都让我用SPN和审议工作了几个小时,这就是谢谢!:)
dynamiclynk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.