MS SQL Server Neden NTLM Kimlik Doğrulaması Kullanıyor?


13

Windows Server 2008 R2.

SQL Server 2008 R2 kurulu.

MSSQL Hizmeti Yerel Sistem olarak çalışır.

Sunucu FQDN'si SQL01.etkialanı.com'dur.

SQL01, domain.com adlı bir Active Directory etki alanına katılır.

Setspn çıktısı aşağıdadır:

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

Daha sonra SQL Server Management stüdyosunu başlatıp SQL01'e bağlanıyorum:

resim açıklamasını buraya girin

Sonra aşağıdaki sorguyu çalıştırın:

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

Ve sonuç NTLM. Sonuç neden Kerberos değil? SPN'ler Yerel Sistem hesabını kullanmak için doğru görünüyor. Sunucu bir kümede veya CNAME kullanmıyor.


sadece topluluğun faydalanabilmesi için soruyu cevaplamaya ne dersiniz?
mdpc

Yanıtlar:


16

Çünkü SQL Server'ı yerel olarak, SQL Server'ı barındıran sunucudan bağlıyordum. Ağdaki başka bir makineden bağlandığımda, kullanılan kimlik doğrulama mekanizması beklendiği gibi Kerberos'tur.

Yerel olarak bağlanırsa SQL Server her zaman NTLM kullanır. Kerberos yalnızca uzaktan bağlanırsa kullanılır.

SQL Server Protokolleri Blogundan gönderilen bu yazı , tarihli olsa da aynı şeyi söylüyor:

1) SPN mevcutsa, TCP / IP üzerinden uzaktan bağlantı yaparken Kerberos kullanılır.

2) SPN varsa XP'de yerel tcp bağlantısı yapılırken Kerberos kullanılır.

3) WTL 2K3 üzerinde yerel bağlantı yapılırken NTLM kullanılır.

4) NP bağlantısı üzerinden NTLM kullanılır.

5) SPN bulunmazsa TCP bağlantısı üzerinden NTLM kullanılır.


3
wow tüm bu çalışmaları (araştırma) SPN ve delgation ile saatlerdir yapıyorum ve bu oldu teşekkürler! :)
dynamiclynk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.