Sql-Server

關於使用 SetSPN 為可用性偵聽器替代 DNS 名稱啟用 Kerberos 身份驗證的問題

  • April 30, 2019

我們有可用性組,並且提供給 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 錯誤,連接將失敗,並最終連接到不同主體擁有的程序。

引用自:https://dba.stackexchange.com/questions/237010