Sql-Server

“使用登錄的目前安全上下文進行”如何將使用者密碼傳遞給遠端伺服器

  • May 20, 2013

假設您有一個帶有“連結伺服器”的 SQL Server 到另一個伺服器 - 說“連結伺服器”設置為使用“使用登錄的目前安全上下文進行”作為其身份驗證模型。

當所有伺服器都具有雜湊值時,SQL Server 如何向另一台伺服器提供正確的密碼(在處理非 Windows 憑據時)。

我之前已經將登錄名從伺服器傳輸到伺服器,並且我知道雜湊單獨儲存在 SQL 中,並且在使用密碼創建登錄名時,這通常顯示為十六進制值 hex,例如:

create login test with password = '0x22A9AE652CFC38938D56A9C3872B266B192D16E4' hashed

如果 SQL 只有一個可用的散列 - 它可以使用散列登錄到遠端伺服器嗎?或者是原始(未散列)密碼在使用者的會話/記憶體中保存在他們的整個連接期間,然後 SQL 可以檢索並傳遞給遠端伺服器進行登錄?

如果伺服器可以使用雜湊而不是密碼登錄——這可以在正常登錄中完成還是純粹是連結伺服器的內部功能?

純粹是一個好奇的問題——想了解這些東西是如何工作的。

在與 Microsoft 就另一個問題(付費支持請求)聯繫時,我碰巧向他們詢問了這個問題,他們確認未散列的密碼已傳遞給遠端伺服器,但 SQL 引擎執行此操作的機制是“隱藏的,無法擷取” - 但我只想說,登錄不是使用雜湊完成的。

這裡有完整的回應:

當所有伺服器都只有一個雜湊時,SQL Server 如何向另一台伺服器提供正確的密碼(在處理非 Windows 憑據時)?

:如果使用 SQL Server 身份驗證連接到本地伺服器,將使用登錄名和密碼連接到遠端伺服器。在這種情況下,遠端伺服器上必須存在具有完全相同名稱和密碼的登錄名。

使用登錄的目前安全上下文進行

指定將使用登錄的目前安全上下文為列表中未定義的登錄建立連接。如果使用 Windows 身份驗證連接到本地伺服器,您的 Windows 憑據將用於連接到遠端伺服器。如果使用 SQL Server 身份驗證連接到本地伺服器,則將使用登錄名和密碼連接到遠端伺服器。在這種情況下,遠端伺服器上必須存在具有完全相同名稱和密碼的登錄名。

當所有伺服器都只有一個雜湊時,SQL Server 如何向另一台伺服器提供正確的密碼(在處理非 Windows 憑據時)?

回答: 登錄名和密碼被傳遞到遠端伺服器,這個機制/任務由隱藏且無法擷取的 SQL 引擎處理。

如果 SQL 只有一個可用的散列 - 它可以使用散列登錄到遠端伺服器嗎?或者是原始(未散列)密碼在使用者的會話/記憶體中保存在他們的整個連接期間,然後 SQL 可以檢索並傳遞給遠端伺服器進行登錄?如果伺服器可以使用雜湊而不是密碼登錄——這可以在正常登錄中完成還是純粹是連結伺服器的內部功能?

:HASH 不能用於登錄 SQL 伺服器,SQL 引擎負責處理登錄過程,我們沒有太多關於這方面的文件。

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