Назад | Перейти на главную страницу

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

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 и подключаюсь к SQL01 следующим образом:

Затем я запускаю следующий запрос:

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

И результат - NTLM. Почему результат не Kerberos? SPN кажется правильным для использования учетной записи Local System. Сервер не входит в кластер и не использует CNAME.

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

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

Это сообщение от Блог о протоколах SQL Server, будучи датированным, говорит то же самое:

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

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

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

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

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