
윈도우 서버 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을 사용하고 있지 않습니다.
답변1
SQL Server를 호스팅하는 동일한 서버에서 로컬로 SQL Server에 연결했기 때문입니다. 네트워크의 다른 시스템에서 연결할 때 사용되는 인증 메커니즘은 예상대로 Kerberos입니다.
SQL Server는 로컬로 연결하는 경우 항상 NTLM을 사용합니다. Kerberos는 원격으로 연결하는 경우에만 사용됩니다.
이 게시물은SQL Server 프로토콜 블로그, 날짜가 있는 동안에도 같은 내용을 말합니다.
1) SPN이 있는 경우 TCP/IP를 통해 원격 연결을 할 때 Kerberos를 사용합니다.
2) SPN이 있는 경우 XP에서 로컬 TCP 연결을 만들 때 Kerberos가 사용됩니다.
3) WIN 2K3에서 로컬 연결을 할 때는 NTLM을 사용합니다.
4) NP 연결을 통해 NTLM이 사용됩니다.
5) SPN을 찾을 수 없는 경우 TCP 연결을 통해 NTLM이 사용됩니다.