密碼原則

適用于:SQL Server

SQL Server 可以使用 Windows 密碼原則機制。 密碼原則適用于使用SQL Server驗證的登入,以及具有密碼的自主資料庫使用者。

SQL Server可以將 Windows 中使用的相同複雜度和到期原則套用至SQL Server內所使用的密碼。 這項功能取決於 NetValidatePasswordPolicy API。

注意

Azure SQL資料庫會強制執行密碼複雜度。 密碼到期和原則強制執行區段不適用於Azure SQL資料庫。

密碼複雜性

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

  • 密碼不包含使用者的帳戶名稱。

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

  • 密碼包含下列四種類別的其中三種:

    • 拉丁文大寫字母 (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_POLICY = ON 可防止建立下列類型的密碼:

    • Null 或空白

    • 與電腦或登入名稱相同

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

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

注意

針對已啟用CHECK_POLICY的SQL Server登入,如果您執行ALTER LOGIN,且未在 命令中包含OLD_PASSWORD來變更密碼,則會忽略強制執行密碼歷程記錄。 這是一種設計行為,允許密碼重設,儘管任何先前使用過的密碼。 不論是否使用OLD_PASSWORD,都會檢查與CHECK_POLICY相關聯的其他檢查,包括長度和複雜度。

CREATE LOGIN (Transact-SQL)

ALTER LOGIN (Transact-SQL)

CREATE USER (Transact-SQL)

ALTER USER (Transact-SQL)

建立登入

建立資料庫使用者

增強式密碼