在 Azure SQL 托管实例中配置最低 TLS 版本

借助最低传输层安全性 (TLS) 版本设置,客户可以控制其 Azure SQL 托管实例使用的 TLS 版本。

目前,我们支持 TLS 1.0、1.1 和 1.2。 设置最低 TLS 版本可确保支持后续更新的 TLS 版本。 例如,选择高于 1.1 的 TLS 版本。 这表示仅接受 TLS 1.1 和 1.2 的连接,并拒绝 TLS 1.0 的连接。 在测试并确认应用程序支持它后,我们建议将最低 TLS 版本设置为 1.2,因为它包括针对之前版本中发现的漏洞的修补程序,并且是 Azure SQL 托管实例中受支持的最高 TLS 版本。

对于使用依赖于较旧版本 TLS 的应用程序的客户,我们建议根据应用程序的要求设置最低 TLS 版本。 对于依赖于使用未加密连接进行连接的应用程序的客户,我们建议不要设置任何最低 TLS 版本。

有关详细信息,请参阅 SQL 数据库连接的 TLS 注意事项

设置最低 TLS 版本后,如果客户端使用的服务器的 TLS 版本低于最低 TLS 版本,则其登录尝试将失败,并显示以下错误:

Error 47072
Login failed with invalid TLS version

注意

配置最低 TLS 版本时,该最低版本将在应用程序层强制执行。 当直接针对托管实例终结点运行时,尝试在协议层确定 TLS 支持的工具可能会返回 TLS 版本以及所需的最低版本。

通过 PowerShell 设置最低 TLS 版本

注意

本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

重要

PowerShell Azure 资源管理器模块仍受 Azure SQL 数据库的支持,但所有未来的开发都是针对 Az.Sql 模块的。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。 以下脚本需要 Azure PowerShell 模块

以下 PowerShell 脚本演示如何在实例级别 GetSet“最低 TLS 版本”属性:

#Get the Minimal TLS Version property
(Get-AzSqlInstance -Name sql-instance-name -ResourceGroupName resource-group).MinimalTlsVersion

# Update Minimal TLS Version Property
Set-AzSqlInstance -Name sql-instance-name -ResourceGroupName resource-group -MinimalTlsVersion "1.2"

通过 Azure CLI 设置最低 TLS 版本

重要

本部分中的所有脚本都需要 Azure CLI

Bash shell 中的 Azure CLI

以下 CLI 脚本演示如何更改 bash shell 中的“最低 TLS 版本”设置:

# Get current setting for Minimal TLS Version
az sql mi show -n sql-instance-name -g resource-group --query "minimalTlsVersion"

# Update setting for Minimal TLS Version
az sql mi update -n sql-instance-name -g resource-group --set minimalTlsVersion="1.2"