密码策略

在 Windows Server 2003 或更高版本中运行时,SQL Server 2005 可以使用 Windows 密码策略机制。

SQL Server 2005 可以将 Windows Server 2003 中使用的相同复杂性策略和过期策略应用于 SQL Server 内部使用的密码。此功能需要通过 NetValidatePasswordPolicy API 实现,该 API 只在 Windows Server 2003 和更高版本中提供。

密码复杂性

密码复杂性策略通过增加可能密码的数量来阻止强力攻击。实施密码复杂性策略时,新密码必须符合以下原则:

  • 密码不得包含全部或部分用户帐户名。部分帐户名是指三个或三个以上两端用“空白”(空格、制表符、回车符等)或任何以下字符分隔的连续字母数字字符:逗号 (,)、句点 (.)、连字符 (-)、下划线 (_) 或数字符号 (#)。
  • 密码长度至少为八个字符。
  • 密码包含以下四类字符中的三类:
    • 拉丁文大写字母 (A - Z)
    • 拉丁文小写字母 (a - z)
    • 10 个基本数字 (0 - 9)
    • 非字母数字字符,如感叹号 (!)、美元符号 ($)、数字符号 (#) 或百分号 (%)。

密码最长可为 128 个字符。使用的密码应尽可能长,尽可能复杂。

密码过期

密码过期策略用于管理密码的使用期限。如果 SQL Server 2005 实施密码过期策略,则系统将提醒用户更改旧密码,并禁用带有过期密码的帐户。

策略实施

可为每个 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 语句将失败。
    ms161959.note(zh-cn,SQL.90).gif重要提示:
    只有在 Windows Server 2003 及更高版本上才会强制执行 CHECK_EXPIRATION 和 CHECK_POLICY。
    ms161959.note(zh-cn,SQL.90).gif重要提示:
    Windows Server 2003 中的已知问题可以防止错误密码计数在达到 LockoutThreshold 后重置。这可能会导致在后续登录尝试失败后立即锁定。可以通过暂时设置 CHECK_POLICY = OFF,然后设置 CHECK_POLICY = ON 来手动重置错误的密码计数。

当 SQL Server 在 Windows 2000 中运行时,设置 CHECK_POLICY = ON 将禁止创建以下类型的密码:

  • 为 NULL 或空
  • 与计算机名或登录名相同
  • 下列任意项:“password”、“admin”、“administrator”、“sa”、“sysadmin”

请参阅

概念

强密码

其他资源

CREATE LOGIN (Transact-SQL)
ALTER LOGIN (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助