Por que o MS SQL Server está usando autenticação NTLM?

12

Windows Server 2008 R2.

SQL Server 2008 R2 instalado.

O serviço MSSQL é executado como sistema local.

O FQDN do servidor é SQL01.domain.com.

SQL01 ingressou em um domínio do Active Directory chamado domain.com.

A seguir está a saída de 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

Em seguida, inicio o SQL Server Management studio e me conecto ao SQL01 da seguinte maneira:

insira a descrição da imagem aqui

Em seguida, executo a seguinte consulta:

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

E o resultado é NTLM. Por que o resultado não é Kerberos? Os SPNs parecem estar corretos para usar a conta Sistema Local. O servidor não está em um cluster ou está usando um CNAME.

Ryan Ries
fonte
Que tal apenas responder à pergunta para que a comunidade possa se beneficiar.
Mdpc

Respostas:

15

É porque eu estava me conectando ao SQL Server localmente, a partir do mesmo servidor que hospedava o SQL Server. Quando eu me conecto de outra máquina na rede, o mecanismo de autenticação usado é o Kerberos, conforme o esperado.

O SQL Server sempre usará NTLM se conectar localmente. O Kerberos é usado apenas se conectar remotamente.

Esta postagem do Blog de protocolos do SQL Server , embora datada, diz a mesma coisa:

1) Kerberos é usado ao fazer conexão remota por TCP / IP, se o SPN estiver presente.

2) O Kerberos é usado ao fazer a conexão TCP local no XP, se o SPN estiver presente.

3) NTLM é usado ao fazer conexão local no WIN 2K3.

4) NTLM é usado na conexão NP.

5) NTLM é usado na conexão TCP se não for encontrado o SPN.

Ryan Ries
fonte
3
uau, todo esse trabalho (pesquisa) que venho fazendo há horas com SPN e delgation, e foi isso, obrigado! :)
wchoward 28/05