Sql-Server

SQL Server 在哪裡儲存 SA 密碼和 SQL Server 密碼策略?

  • December 12, 2017

在 Linux 上,SQL Server 將“SQL Server 密碼策略”和 SA 使用者的密碼儲存在哪裡?我明白了,“密碼”不安全。

錯誤:無法設置系統管理員密碼:密碼驗證失敗。密碼太短,不符合 SQL Server 密碼策略要求。密碼必須至少為 8 個字元。

然後,

錯誤:無法設置系統管理員密碼:密碼驗證失敗。該密碼不符合 SQL Server 密碼策略要求,因為它不夠複雜。密碼長度必須至少為 8 個字元,並且包含以下四組中的三組字元:大寫字母、小寫字母、Base 10 數字和符號。

我猜該策略實際上已編譯到數據庫中?並且密碼被儲存在一個不起眼的位置?

我相信如果沒有 Windows 密碼策略,就像 Linux 一樣,SQL Server 守護程序中有一些硬編譯的預設值。在 Linux 上 SQL Server 的安全限制下,文件似乎也暗示了這一點

提供標準密碼策略。MUST_CHANGE是您可以配置的唯一選項。

也就是說,你可以解決這個問題,很容易地取下輔助輪,

ALTER LOGIN [sa] WITH PASSWORD=N'password', CHECK_POLICY = off;

至於這個寫入的文件,我認為它很可能data/mastlog.ldf在數據目錄中/var/opt/mssql

sa使用者是 SQL Server 登錄名,其密碼被加密並儲存在數據庫的****DMVsys.sql_logins數據庫管理視圖)中。master

參考: sys.sql_logins (Transact-SQL)

您可能會注意到這些視圖只能在以下分支中找到:

Server | Databases | master | Views | System Views | .... 

DMV 引用了一些系統基表,可以訪問(但不應該):

參考: 系統基表

您要查找的策略內置於 SQL Server 的程式碼中,並且預設為每個新帳戶設置。創建 SQL Server 登錄時,您可以決定關閉預設設置

要針對複雜性和強制實施密碼策略選項,請選擇Enforce password policy。有關詳細資訊,請參閱密碼策略。這是選擇SQL Server 身份驗證時的****預設選項。

…通過CHECK_POLICY=OFF。查看完整的語法:

CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }  

<option_list1> ::=   
   PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]  
   [ , <option_list2> [ ,... ] ]  

<option_list2> ::=    
   SID = sid  
   | DEFAULT_DATABASE = database      
   | DEFAULT_LANGUAGE = language  
   | CHECK_EXPIRATION = { ON | OFF}  
   | CHECK_POLICY = { ON | OFF}  
   | CREDENTIAL = credential_name   

<sources> ::=  
   WINDOWS [ WITH <windows_options>[ ,... ] ]  
   | CERTIFICATE certname  
   | ASYMMETRIC KEY asym_key_name  

<windows_options> ::=        
   DEFAULT_DATABASE = database  
   | DEFAULT_LANGUAGE = language  

參考: 創建登錄 (Transact-SQL)

如果 SQL Server 是 Windows 域的成員,那麼它將從 Active Directory 中檢索密碼策略。否則,預設值為:

密碼複雜性策略旨在通過增加可能的密碼數量來阻止暴力攻擊。實施密碼複雜性策略時,新密碼必須符合以下準則:

  • 密碼不包含使用者的帳戶名。
  • 密碼長度至少為八個字元。
  • 密碼包含以下四類中的三類字元:
  • 拉丁大寫字母(A 到 Z)

  • 拉丁小寫字母(a 到 z)

  • 以 10 為基數的數字(0 到 9)

  • 非字母數字字元,例如:驚嘆號 ( !)、美元符號 ($)、數字元號 (#) 或百分比 (%)。

密碼最長可達 128 個字元。您應該使用盡可能長且複雜的密碼。

參考: 密碼政策

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