适用于: 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强制实施自定义密码策略
- 使用 mssql-conf 工具去手动配置
mssql.conf
文件
使用 adutil 设置自定义密码策略
在将策略管理集中到 Active Directory (AD) 服务器的环境中,域管理员可以在 AD 服务器中设置和修改密码策略值。 此外,运行 SQL Server 的 Linux 计算机还必须是 Windows 域的一部分。
使用 adutil 从 AD 服务器提取密码策略并将其写入 mssql.conf
文件。 此方法提供集中式管理的优势,并确保在 SQL Server 环境中实现策略的一致应用。
adutil 的要求
建立经过 Kerberos 验证的会话
运行
kinit
以获取或续订 Kerberos 票证授予票据 (TGT)与sudo
。请使用有特权的帐户来执行
kinit
命令。 该帐户需要具有连接到域的权限。
在以下示例中,将
<user>
替换为具有域中提升权限的帐户。sudo kinit <user>@CONTOSO.COM
验证是否已授予票证:
sudo klist
若要更新密码策略,请使用 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
。重启 SQL Server 服务:
sudo systemctl restart mssql-server
使用 mssql-conf 手动设置自定义密码策略
可以通过使用 mssql-conf 更新文件中的参数mssql.conf
来设置 SQL 身份验证登录密码策略。 此方法提供对策略设置的简单和直接控制。
当运行 SQL Server 的 Linux 主机不属于域,并且没有域控制器从中获取密码策略时,请使用此方法。
运行以下 mssql-conf 命令来设置每个策略配置属性。
将最短密码长度设置为 14 个字符,并遵循 密码策略中概述的复杂性要求。
sudo /opt/mssql/bin/mssql-conf set passwordpolicy.minimumpasswordlength 14
将最短密码期限设置为一天。 用户可在一天后更改其密码。
sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordminimumage 1
将密码历史记录长度设置为 8。 用户必须在重复使用旧密码之前使用八个唯一密码。
sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordhistorylength 8
将最大密码期限设置为 45 天。 用户最多可以使用密码 45 天,然后用户必须更改密码。
sudo /opt/mssql/bin/mssql-conf set passwordpolicy.passwordmaximumage 45
重启 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 中的设置,而不是依赖复选框。