Sql-Server

哪種身份驗證更適合 MS-SQL Server 2019:integrated security=SSPI vs uid=sa;pwd=xx |Windows 身份驗證與 sa 身份驗證

  • May 13, 2021

在我不同的 Web 應用程序中,我使用了兩種方法,但是,我想了解哪種方法更好:

1: server=localhost;database=x; integrated security=SSPI;persist security info=False; Trusted_Connection=Yes; 

2: server=localhost;database=x;uid=sa;pwd=y;

在我的 Web 應用程序中,對於每個數據庫查詢,我打開一個連接,然後關閉該連接。

所以我幾乎使用正常樣式,例如:

   using (SqlConnection connection = new SqlConnection(srConnectionString))
   {
       connection.Open();
       using (SqlDataAdapter DA = new SqlDataAdapter(strQuery, connection))
       {
           DA.Fill(dSet);
       }
   }

您可以放心地假設在任何給定的秒內都有數百甚至數千個查詢。

我的問題:

2 種身份驗證方法之間在性能方面是否存在差異?

兩種身份驗證方法之間是否存在安全差異?

我不允許遠端連接到 SQL Server。所以只允許本地連接。

作業系統 Windows Server 2019

安全差異

您可以在Connecting Through Windows Authentication文件中找到它:

Windows 身份驗證是預設的身份驗證模式,比 SQL Server 身份驗證安全得多。Windows 身份驗證使用 Kerberos 安全協議,針對強密碼的複雜性驗證提供密碼策略實施,提供對帳戶鎖定的支持,並支持密碼過期。使用 Windows 身份驗證建立的連接有時稱為受信任連接,因為 SQL Server 信任 Windows 提供的憑據。

性能差異

這兩種方法之間現有的性能差異不足以建議您選擇 SQL Server 身份驗證而不是 Windows 身份驗證來獲得任何性能改進,但會損害安全性。因此,如果您可以選擇使用 Windows 身份驗證,請使用它。

正如JD的評論所說,儲存憑據不是最安全的選擇,甚至 Windows 身份驗證的性能劣勢也通過Dan Guzman提到的SQL Server 連接池得到緩解。他還補充說:

我在裸機上的測試實驗室中測試了 10K 連接打開/關閉請求。每個連接的平均毫秒數是:帶輪詢的 SQL 身份驗證:0.10838721,帶池的 Windows 身份驗證:0.12424151,不帶池的 SQL 身份驗證:2.66011692,不帶池的 Windows 身份驗證:3.2432628。考慮到查詢執行而不是連接可能是帳篷中的長桿。

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