SQL Server 在哪裡儲存 SA 密碼和 SQL Server 密碼策略?
在 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
如果 SQL Server 是 Windows 域的成員,那麼它將從 Active Directory 中檢索密碼策略。否則,預設值為:
密碼複雜性策略旨在通過增加可能的密碼數量來阻止暴力攻擊。實施密碼複雜性策略時,新密碼必須符合以下準則:
- 密碼不包含使用者的帳戶名。
- 密碼長度至少為八個字元。
- 密碼包含以下四類中的三類字元:
拉丁大寫字母(A 到 Z)
拉丁小寫字母(a 到 z)
以 10 為基數的數字(0 到 9)
非字母數字字元,例如:驚嘆號 ( !)、美元符號 ($)、數字元號 (#) 或百分比 (%)。
密碼最長可達 128 個字元。您應該使用盡可能長且複雜的密碼。
參考: 密碼政策