密码策略

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)。

CREATE LOGIN (Transact-SQL)

ALTER LOGIN (Transact-SQL)

CREATE USER (Transact-SQL)

ALTER USER (Transact-SQL)

创建登录名

创建数据库用户

强密码