密码策略
在 Windows Server 2003 或更高版本中运行时,SQL Server 可以使用 Windows 密码策略机制。
SQL Server 可以对在 SQL Server 内部使用的密码应用在 Windows Server 2003 中使用的相同复杂性策略和过期策略。此功能需要通过 NetValidatePasswordPolicy API 实现,该 API 只在 Windows Server 2003 和更高版本中提供。
密码复杂性
密码复杂性策略通过增加可能密码的数量来阻止强力攻击。实施密码复杂性策略时,新密码必须符合以下原则:
密码不得包含全部或部分用户帐户名。部分帐户名是指三个或三个以上两端用“空白”(空格、制表符、回车符等)或任何以下字符分隔的连续字母数字字符:逗号 (,)、句点 (.)、连字符 (-)、下划线 (_) 或数字符号 (#)。
密码长度至少为八个字符。
密码包含以下四类字符中的三类:
拉丁文大写字母 (A - Z)
拉丁文小写字母 (a - z)
10 个基本数字 (0 - 9)
非字母数字字符,如感叹号 (!)、美元符号 ($)、数字符号 (#) 或百分号 (%)。
密码最长可为 128 个字符。使用的密码应尽可能长,尽可能复杂。
密码过期
密码过期策略用于管理密码的使用期限。如果 SQL Server 实施密码过期策略,则系统将提醒用户更改旧密码,并禁用带有过期密码的帐户。
策略实施
可为每个 SQL Server 登录名单独配置密码策略实施。使用 ALTER LOGIN (Transact-SQL) 来配置 SQL Server 登录名的密码策略选项。配置密码策略实施时,适用以下规则:
如果 CHECK_POLICY 改为 ON,则将出现以下行为:
除非将 CHECK_EXPIRATION 显式设置为 OFF,否则也会将其设置为 ON。
密码历史使用当前的密码哈希值初始化。
如果 CHECK_POLICY 改为 OFF,则将出现以下行为:
CHECK_EXPIRATION 也设置为 OFF。
清除密码历史。
lockout_time 的值被重置。
不支持策略选项的某些组合。
如果指定 MUST_CHANGE,则 CHECK_EXPIRATION 和 CHECK_POLICY 必须设置为 ON。否则,该语句将失败。
如果 CHECK_POLICY 设置为 OFF,则 CHECK_EXPIRATION 不能设置为 ON。包含此选项组合的 ALTER LOGIN 语句将失败。
重要提示 只有在 Windows Server 2003 及更高版本上才会强制执行 CHECK_EXPIRATION 和 CHECK_POLICY。
重要提示 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)。