ฉันกำลังพยายามตั้งค่าการมอบหมายที่จำกัดของ Kerberos เพื่อแก้ปัญหาของฉัน กระโดดสองครั้ง ปัญหา.
ฉันใช้การกำหนดค่า SQL Server มาตรฐานกับบัญชีเสมือน (NT SERVICE\MSSQLSERVER
) เป็นบัญชีบริการสำหรับอินสแตนซ์ทั้งหมดของฉัน
เมื่อฉันพยายามค้นหา double hop ผ่านเซิร์ฟเวอร์ที่เชื่อมโยง ฉันได้รับข้อผิดพลาดทั่วไปนี้:
การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY\ANONYMOUS LOGON'
การตั้งค่ามีลักษณะดังนี้:
คอมพิวเตอร์ของผู้ใช้ > HOP > SQL Server A > HOP (Linked Server) > SQL Server B
และคำถามของฉันเป็นเพียงพื้นฐาน เลือก
เพียงเพื่อการทดสอบ แบบนี้:
เลือก * จาก [เซิร์ฟเวอร์ B].[DB].[แบบแผน].[ตาราง]
โดยใช้ Kerberos Configuration Manager สำหรับ SQL Server ฉันตรวจสอบ SPN และการตั้งค่าการมอบหมายสำหรับเซิร์ฟเวอร์ของฉัน
SPN ได้รับการกำหนดค่าโดยอัตโนมัติ:
และการมอบหมายถูกกำหนดเป็น ไม่มี
:
ฉันยังตรวจสอบว่า SQL Server ใช้การรับรองความถูกต้องประเภทใด เพื่อตรวจสอบสิ่งนี้ ฉันเรียกใช้แบบสอบถามนี้บนเซิร์ฟเวอร์ A (จาก บทความนี้):
เลือก auth_scheme จาก sys.dm_exec_connections โดยที่ session_id = @@spid ;
และได้ เอ็นทีแอลเอ็ม
เป็นคำตอบ
จากผลลัพธ์นี้ ดูเหมือนว่าฉันไม่มีการตั้งค่าการมอบหมาย แต่คำถามของฉันคือฉันจะทำอย่างไรกับมัน?
ฉันอ่านบทความและโพสต์มานับไม่ถ้วน แต่ก็ยังไม่สามารถเข้าใจได้ ดูเหมือนว่าจะเป็นไปได้ที่จะใช้บัญชีเสมือนเริ่มต้นสำหรับสิ่งนี้
แต่ทุกบทช่วยสอนที่ฉันพบจะพูดถึงทั้งบัญชีโดเมนหรือบัญชีบริการที่มีการจัดการ ในกรณีเช่นนี้ เรามีบัญชีนี้อยู่ใน Active Directory แต่บัญชีเสมือนเริ่มต้นล่ะ บัญชีนี้เป็นบัญชีท้องถิ่น ฉันจะให้สิทธิ์การมอบสิทธิ์แก่พวกเขาได้อย่างไร
ฉันควรให้สิทธิ์การมอบหมายในเครื่องหรือไม่ แต่อย่างไร?
ฉันพยายามทำสิ่งนี้ ฉันไปที่ Active Directory เปิดวัตถุคอมพิวเตอร์เซิร์ฟเวอร์ A และทำสิ่งนี้:
ดังนั้นจึงควรอนุญาตให้เซิร์ฟเวอร์ A มอบหมายให้เซิร์ฟเวอร์ B แต่ก็ยังใช้งานไม่ได้ และ Kerberos Configuration Manager ยังคงแสดงอยู่ ไม่มี
เป็นประเภทการมอบหมาย
ฉันใช้ Windows Server 2019 และ SQL Server 2019
@แก้ไข
ฉันลองใช้การตั้งค่าอื่น แทน "เคอร์เบรอสเท่านั้น" ฉันเลือก "ใช้โปรโตคอลการตรวจสอบสิทธิ์ใดๆ" และหลังจากนั้นประมาณ 10 นาที มันเริ่มทำงาน!.
ตอนนี้ทุกอย่างสมเหตุสมผลแล้วเนื่องจากการเชื่อมต่อ SSMS ยังคงเสร็จสิ้น เอ็นทีแอลเอ็ม
การตั้งค่า "Kerberos เท่านั้น" จะไม่ทำงาน
แต่คำถามคือทำไมยังใช้อยู่ เอ็นทีแอลเอ็ม
? มันไม่ดีและฉันควรลองเปลี่ยนหรือไม่? ถ้าเป็นเช่นนั้น - อย่างไร