密碼原則

當 SQL Server 是在 Windows Server 2003 或更新版本上執行時,就可以使用 Windows 密碼原則機制。

SQL Server 可套用 Windows Server 2003 所使用的相同複雜性和過期原則來處理 SQL Server 內部使用的密碼。這項功能相依於 NetValidatePasswordPolicy API,而這個 API 只有 Windows Server 2003 和更新版本才有。

密碼複雜性

密碼複雜性原則是為了阻止暴力攻擊而設計,方法是盡可能地增加密碼數目。當強制執行密碼複雜性原則時,新的密碼必須符合下列指導方針:

  • 密碼不包含全部或部分的使用者帳戶名稱。帳戶名稱的一部分是定義為三個以上的連續英數字元,兩邊以空格 (例如空格鍵、Tab 鍵和 Return 鍵) 或下列任一字元分隔:逗號 (,)、句號 (.)、連字號 (-)、底線 (_) 或數字符號 (#) 分隔。

  • 密碼長度至少為八個字元。

  • 密碼包含下列四種字元的其中三種:

    • 拉丁文大寫字母 (A 到 Z)。

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

    • 以 10 危基底的數字 (0 到 9)。

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

密碼長度最多可以包含 128 個字元,您應該盡可能使用長且複雜的密碼。

密碼過期

密碼過期原則用於管理密碼的壽命。當 SQL Server 強制執行密碼過期原則時,系統會提醒使用者變更舊密碼和停用有過期密碼的帳戶。

原則強制執行

可個別對每一個 SQL Server 登入設定密碼原則的強制執行。使用 ALTER LOGIN (Transact-SQL) 來設定 SQL Server 登入的密碼原則選項。下列規則會套用至密碼原則強制執行的組態:

  • 當 CHECK_POLICY 改為 ON 時,會發生下列行為:

    • CHECK_EXPIRATION 也會設為 ON,除非它已明確設為 OFF。

    • 密碼記錄會使用目前密碼雜湊的值來初始化。

  • 當 CHECK_POLICY 改為 OFF 時,會發生下列行為:

    • CHECK_EXPIRATION 也會設為 OFF。

    • 會清除密碼記錄。

    • 重設 lockout_time 的值。

有些原則選項組合不受支援。

  • 如果指定 MUST_CHANGE,則 CHECK_EXPIRATION 和 CHECK_POLICY 必須設為 ON。否則,陳述式便會失敗。

  • 如果 CHECK_POLICY 設為 OFF,CHECK_EXPIRATION 就不能設為 ON。具有這些選項組合的 ALTER LOGIN 陳述式會失敗。

    重要事項重要事項

    CHECK_EXPIRATION 和 CHECK_POLICY 只會在 Windows Server 2003 和更新的版本中強制執行。

    重要事項重要事項

    Windows Server 2003 中的已知問題,可能會使系統在達到 LockoutThreshold 之後,無法重設錯誤密碼計數。此舉可能會在後續登入嘗試失敗時導致立即鎖定。您可以手動重設錯誤密碼計數,只要設定 CHECK_POLICY = OFF,後面再接 CHECK_POLICY = ON 即可。

當 SQL Server 是在 Windows 2000 執行時,設定 CHECK_POLICY = ON 將阻止建立密碼:

  • Null 或空白

  • 與電腦或登入名稱相同

  • 下列其中之一:"password"、"admin"、"administrator"、"sa"、"sysadmin"

安全性原則可能是在 Windows 中設定的,也可能是從網域收到的。若要檢視電腦上的密碼原則,請使用 [本機安全性原則] MMC 嵌入式管理單元 (secpol.msc)。