Sql-Server
關於使用 SetSPN 為可用性偵聽器替代 DNS 名稱啟用 Kerberos 身份驗證的問題
我們有可用性組,並且提供給 AG 偵聽器的原始 DNS 名稱太長(類似於 longname-Listener-01.mydomain.com);此時我們很難更改偵聽器的原始 DNS 名稱
所以我們只是在 DNS 伺服器(shortername.mydomain.com)中添加了新的更短的 DNS 名稱,以指向偵聽器的 IP 地址
但問題是原來的長監聽器的 DNS 名稱被設置為使用 Kerberos 配置管理器工具使用 Kerberos 身份驗證;顯然這個工具只是執行命令
SetSPN -s "MSSQLSvc/longername-Listener-01.mydomain.com:1433" "MYDOMAIN\SQLSvcAccount"
因此,目前連接到原始較長 DNS 名稱的每個人都使用 KERBEROS auth_scheme 連接到 SQL Server;以及使用 NTLM auth_scheme 連接到新的較短 DNS 名稱的每個人——我們希望避免這種情況
問題:
如果我們在可用性組伺服器上執行以下命令:
SetSPN -s "MSSQLSvc/shortername.mydomain.com:1433" "MYDOMAIN\SQLSvcAccount"
它會使用 KERBEROS auth_scheme 而不是 NTLM 連接到“shortername.mydomain.com”嗎?與“longername-Listener-01.mydomain.com”的連接仍將使用 KERBEROS auth_scheme 嗎?
是的,SPN 只是告訴客戶端,當它連接到指定主機 (shortername.mydomain.com) 上的指定服務 (MSSQLSvc) 時,指定的主體 (MYDOMAIN\SQLSvcAccount) 將是它所在的程序的所有者連接到。這確保瞭如果 DNS 錯誤,連接將失敗,並最終連接到不同主體擁有的程序。