SQL Server 可以使用 Windows 密码策略机制。 密码策略适用于使用 SQL Server 身份验证的登录账号,以及使用密码的自包含数据库用户。
SQL Server 可以将 Windows 中使用的复杂性和过期策略应用于 SQL Server 中使用的密码。 此功能取决于 NetValidatePasswordPolicy API。
密码复杂性
密码复杂性策略旨在通过增加可能的密码数量来阻止暴力攻击。 强制实施密码复杂性策略时,新密码必须符合以下准则:
密码不包含用户的帐户名。
密码长度至少为 8 个字符。
密码包含以下四个类别中的三个字符:
拉丁文大写字母 (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)。