Mengapa MS SQL Server Menggunakan Otentikasi NTLM?

12

Windows Server 2008 R2.

SQL Server 2008 R2 diinstal.

Layanan MSSQL berjalan sebagai Sistem Lokal.

Server FQDN adalah SQL01.domain.com.

SQL01 bergabung dengan domain Active Directory bernama domain.com.

Berikut ini adalah output dari 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

Saya kemudian meluncurkan studio SQL Server Management dan terhubung ke SQL01 demikian:

masukkan deskripsi gambar di sini

Saya kemudian menjalankan kueri berikut:

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

Dan hasilnya adalah NTLM. Mengapa hasilnya bukan Kerberos? SPN tampaknya benar untuk menggunakan akun Sistem Lokal. Server tidak ada di cluster atau menggunakan CNAME.

Ryan Ries
sumber
bagaimana kalau hanya menjawab pertanyaan sehingga masyarakat semua bisa mendapat manfaat.
mdpc

Jawaban:

15

Itu karena saya terhubung ke SQL Server secara lokal, dari server yang sama yang meng-host SQL Server. Ketika saya terhubung dari komputer lain di jaringan, mekanisme otentikasi yang digunakan adalah Kerberos, seperti yang diharapkan.

SQL Server akan selalu menggunakan NTLM jika terhubung secara lokal. Kerberos hanya digunakan jika menghubungkan dari jarak jauh.

Posting ini dari Blog Protokol SQL Server , walaupun bertanggal, mengatakan hal yang sama:

1) Kerberos digunakan ketika membuat koneksi jarak jauh melalui TCP / IP jika SPN hadir.

2) Kerberos digunakan ketika membuat koneksi tcp lokal pada XP jika SPN hadir.

3) NTLM digunakan ketika membuat koneksi lokal pada WIN 2K3.

4) NTLM digunakan melalui koneksi NP.

5) NTLM digunakan melalui koneksi TCP jika tidak ditemukan SPN.

Ryan Ries
sumber
3
wow semua pekerjaan ini (penelitian) yang telah saya lakukan selama berjam-jam dengan SPN dan delgation, dan ini dia, terima kasih! :)
wchoward