Почему MS SQL Server использует аутентификацию NTLM?

12

Windows Server 2008 R2.

SQL Server 2008 R2 установлен.

Служба MSSQL работает как локальная система.

Полное доменное имя сервера: SQL01.domain.com.

SQL01 присоединяется к домену Active Directory с именем domain.com.

Ниже приводится вывод 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? Похоже, что имена участников-служб подходят для использования учетной записи локальной системы. Сервер не находится в кластере или не использует CNAME.

Райан Райс
источник
как насчет того, чтобы просто ответить на вопрос, чтобы все сообщество могло извлечь выгоду.
MDPC

Ответы:

15

Это потому, что я подключался к SQL Server локально, с того же сервера, на котором размещался SQL Server. Когда я подключаюсь с другого компьютера в сети, используется механизм аутентификации Kerberos, как и ожидалось.

SQL Server всегда будет использовать NTLM при локальном подключении. Kerberos используется только при удаленном подключении.

Этот пост из блога SQL Server Protocols , хотя и устаревший, говорит о том же:

1) Kerberos используется при удаленном соединении по TCP / IP, если присутствует SPN.

2) Kerberos используется при создании локального TCP-соединения в XP, если присутствует SPN.

3) NTLM используется при локальном подключении на WIN 2K3.

4) NTLM используется через соединение NP.

5) NTLM используется по TCP-соединению, если не найден SPN.

Райан Райс
источник
3
вау всю эту работу (исследование), которую я делал часами с SPN и разобщением, и это было спасибо! :)
dynamiclynk