为 Linux 上的 SQL Server 中的 SQL 登录设置自定义密码策略

适用于: SQL Server 2025 (17.x) 预览版 - Linux

本文介绍如何为 Linux 上的 SQL Server 设置和管理 SQL Server 的 SQL 登录密码策略。

密码策略是保护任何数据库环境的关键方面。 它们强制实施:

  • 复杂性
  • 过期日期
  • 变化

此强制措施可确保使用 SQL Server 身份验证的登录名是安全的。

注释

密码策略在 Windows 上可用。 有关详细信息,请参阅 Password Policy

自定义策略设置

从 Linux 上的 SQL Server 2025 (17.x) 预览版开始,可以在文件中设置以下配置参数 mssql.conf 来强制实施自定义密码策略。

配置选项 DESCRIPTION
passwordpolicy.passwordminimumlength 定义密码所需的最小字符数。 密码长度可达 128 个字符。
passwordpolicy.passwordhistorylength 确定必须记住的以前密码的数量。
passwordpolicy.passwordminimumage 指定用户在再次更改密码之前必须等待的最短持续时间。
passwordpolicy.passwordmaximumage 设置密码在必须更改之前可以使用的最大持续时间。

注释

目前, passwordminimumlength 可以设置为少于 8 个字符。 密码应遵循 SQL Server 默认密码策略。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 密码可最长为 128 个字符。 使用的密码应尽可能长,尽可能复杂。

有两种方法可为 Linux 上的 SQL Server 中的 SQL 身份验证登录配置自定义密码策略:

使用 adutil 设置自定义密码策略

在将策略管理集中到 Active Directory (AD) 服务器的环境中,域管理员可以在 AD 服务器中设置和修改密码策略值。 此外,运行 SQL Server 的 Linux 计算机还必须是 Windows 域的一部分。

使用 adutil 从 AD 服务器提取密码策略并将其写入 mssql.conf 文件。 此方法提供集中式管理的优势,并确保在 SQL Server 环境中实现策略的一致应用。

adutil 的要求

  1. 建立经过 Kerberos 验证的会话

    • 运行kinit以获取或续订 Kerberos 票证授予票据 (TGT)与sudo

    • 请使用有特权的帐户来执行 kinit 命令。 该帐户需要具有连接到域的权限。

    在以下示例中,将 <user> 替换为具有域中提升权限的帐户。

    sudo kinit <user>@CONTOSO.COM
    
  2. 验证是否已授予票证:

    sudo klist
    
  3. 若要更新密码策略,请使用 adutil 查询域:

    sudo adutil updatepasswordpolicy
    

    如果命令成功,应会看到类似的消息:

    Successfully updated password policy in mssqlconf.
    Restart SQL Server to apply the changes.
    

    你可以选择把--path选项添加到上一个命令中。 如果 mssql-conf 工具位于与默认路径不同的位置,则可以使用此选项。 默认路径为 /opt/mssql/bin/mssql-conf

  4. 重启 SQL Server 服务:

    sudo systemctl restart mssql-server
    

使用 mssql-conf 手动设置自定义密码策略

可以通过使用 mssql-conf 更新文件中的参数mssql.conf来设置 SQL 身份验证登录密码策略。 此方法提供对策略设置的简单和直接控制。

当运行 SQL Server 的 Linux 主机不属于域,并且没有域控制器从中获取密码策略时,请使用此方法。

运行以下 mssql-conf 命令来设置每个策略配置属性。

  1. 将最短密码长度设置为 14 个字符,并遵循 密码策略中概述的复杂性要求。

    sudo /opt/mssql/bin/mssql-conf set passwordpolicy.minimumpasswordlength 14
    
  2. 将最短密码期限设置为一天。 用户可在一天后更改其密码。

    sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordminimumage 1
    
  3. 将密码历史记录长度设置为 8。 用户必须在重复使用旧密码之前使用八个唯一密码。

    sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordhistorylength 8
    
  4. 将最大密码期限设置为 45 天。 用户最多可以使用密码 45 天,然后用户必须更改密码。

    sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordmaximumage 45
    
  5. 重启 SQL Server 服务。

    sudo systemctl restart mssql-server
    

局限性

minimumpasswordlength目前,不能设置为超过 14 个字符。

更新 Active Directory 中的组密码策略后,必须手动运行 adutil updatepasswordpolicy 命令以更新 mssql.conf。 此命令不会自动运行。 确保运行 SQL Server 的 Linux 计算机是域的一部分,或使用 mssql-conf 手动设置它。

在 Active Directory 中,可以使用复选框定义或未定义每个组级密码策略。

最小密码长度安全策略设置的屏幕截图。

但是,取消勾选该策略不会在 Linux 的 SQL Server 中禁用它。 若要避免应用自定义密码策略,请更新 mssql-conf 中的设置,而不是依赖复选框。