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

10

Windows Server 2008 R2.

SQL Server 2008 R2 instalado.

O Serviço MSSQL é executado como Sistema Local.

O FQDN do servidor é SQL01.domain.com.

O SQL01 é associado a um domínio do Active Directory chamado domain.com.

A seguir, 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

Eu inicio o SQL Server Management Studio e conecto-me ao SQL01:

Eu então executo a seguinte consulta:

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

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

    
por Ryan Ries 17.05.2014 / 04:50

1 resposta

13

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

O SQL Server sempre usará o NTLM se estiver se conectando localmente. O Kerberos só é usado se você se conectar remotamente.

Esta postagem da Blog de Protocolos do SQL Server , embora datado, diz a mesma coisa:

1) Kerberos is used when making remote connection over TCP/IP if SPN presents.

2) Kerberos is used when making local tcp connection on XP if SPN presents.

3) NTLM is used when making local connection on WIN 2K3.

4) NTLM is used over NP connection.

5) NTLM is used over TCP connection if not found SPN.

    
por 17.05.2014 / 17:51