ทำไม MS SQL Server ถึงใช้การพิสูจน์ตัวตนแบบ NTLM


13

Windows Server 2008 R2

ติดตั้ง SQL Server 2008 R2 แล้ว

บริการ MSSQL ทำงานเป็นระบบภายในเครื่อง

เซิร์ฟเวอร์ FQDN คือ SQL01.domain.com

SQL01 เข้าร่วมกับโดเมน Active Directory ชื่อ domain.com

ต่อไปนี้เป็นผลลัพธ์ของ 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 และเชื่อมต่อกับ SQL01 ดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเรียกใช้แบบสอบถามต่อไปนี้:

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

และผลลัพธ์ก็คือ NTLM เหตุใดผลลัพธ์จึงไม่ใช่ Kerberos ดูเหมือนว่า SPN นั้นจะถูกต้องสำหรับการใช้บัญชี Local System เซิร์ฟเวอร์ไม่ได้อยู่ในคลัสเตอร์หรือใช้ CNAME


วิธีการเพียงแค่ตอบคำถามเพื่อให้ชุมชนได้รับประโยชน์ทั้งหมด
mdpc

คำตอบ:


16

เป็นเพราะฉันกำลังเชื่อมต่อกับเซิร์ฟเวอร์ SQL ในเครื่องจากเซิร์ฟเวอร์เดียวกับที่โฮสต์เซิร์ฟเวอร์ SQL เมื่อฉันเชื่อมต่อจากเครื่องอื่นบนเครือข่ายกลไกการรับรองความถูกต้องที่ใช้คือ Kerberos ตามที่คาดไว้

SQL Server จะใช้ NTLM เสมอหากเชื่อมต่อภายในเครื่อง Kerberos ใช้เมื่อเชื่อมต่อระยะไกลเท่านั้น

โพสต์นี้จากบล็อก SQL Server Protocolsขณะลงวันที่พูดในสิ่งเดียวกัน:

1) Kerberos ใช้เมื่อทำการเชื่อมต่อระยะไกลผ่าน TCP / IP หาก SPN แสดง

2) Kerberos ใช้เมื่อทำการเชื่อมต่อ tcp โลคัลบน XP หาก SPN แสดง

3) NTLM จะใช้เมื่อทำการเชื่อมต่อท้องถิ่นบน WIN 2K3

4) NTLM ใช้ผ่านการเชื่อมต่อ NP

5) NTLM ใช้ผ่านการเชื่อมต่อ TCP หากไม่พบ SPN


3
ว้าวงานนี้ทั้งหมด (งานวิจัย) ฉันทำมาหลายชั่วโมงกับ SPN และการลอกส่วนและนี่ก็ขอบคุณ! :)
dynamiclynk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.