适用于:
Azure SQL 数据库
Azure Synapse Analytics(仅限专用 SQL 池)
本文介绍的设置可用于控制 Azure Synapse Analytics 中与 Azure SQL 数据库和专用 SQL 池(以前的 SQL DW)的服务器的连接。
可以在逻辑服务器中更改这些设置。 逻辑 SQL 服务器可以同时托管不在 Azure Synapse Analytics 工作区中的 Azure SQL 数据库和独立专用 SQL 池。
备注
这些设置适用于与逻辑服务器关联的 Azure SQL 数据库和专用 SQL 池(以前的 SQL DW)。 这些说明不适用于 Azure Synapse Analytics 工作区中的专用 SQL 池。
可以通过 Azure 门户、Azure PowerShell 和 Azure CLI 更改 Azure SQL 数据库或独立专用 SQL 池的公用网络访问。
备注
这些设置在应用后会立即生效。 如果客户不满足每个设置的要求,则可能会遇到连接丢失的情况。
若要为托管数据库的逻辑服务器启用公用网络访问,请执行以下操作:
- 转到 Azure 门户,并转到 Azure 中的逻辑服务器。
- 在“安全性”部分下,选择“网络”页。
- 选择“公用访问”选项卡,然后将“公用网络访问”设置为“选择网络”。
在此页中,可以添加虚拟网络规则,并为公共终结点配置防火墙规则。
选择“专用访问”选项卡以配置专用终结点。
可以使用 Azure PowerShell 更改公用网络访问。
重要
Azure SQL 数据库仍然支持 PowerShell Azure 资源管理器模块,但所有未来开发都针对 Az.Sql 模块。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。 以下脚本需要 Azure PowerShell 模块。
下面的 PowerShell 脚本展示了如何在服务器级别 Get
和 Set
“公用网络访问”属性:
# Get the Public Network Access property
(Get-AzSqlServer -ServerName sql-server-name -ResourceGroupName sql-server-group).PublicNetworkAccess
# Update Public Network Access to Disabled
$SecureString = ConvertTo-SecureString "password" -AsPlainText -Force
Set-AzSqlServer -ServerName sql-server-name -ResourceGroupName sql-server-group -SqlAdministratorPassword $SecureString -PublicNetworkAccess "Disabled"
可以使用 Azure CLI 更改公用网络设置。
以下 CLI 脚本演示如何在 Bash shell 中更改“公用网络访问”设置:
# Get current setting for Public Network Access
az sql server show -n sql-server-name -g sql-server-group --query "publicNetworkAccess"
# Update setting for Public Network Access
az sql server update -n sql-server-name -g sql-server-group --set publicNetworkAccess="Disabled"
“公用网络访问”默认设置为“禁用”。 客户可以选择使用公共终结点(使用基于 IP 的服务器级防火墙规则或虚拟网络防火墙规则)或专用终结点(使用 Azure 专用链接)连接到数据库,如网络访问概述中所述。
当将“公用网络访问”设置为“禁用”时,将只允许从专用终结点进行连接。 将拒绝从公共终结点进行的所有连接,并显示如下错误消息:
Error 47073
An instance-specific error occurred while establishing a connection to SQL Server.
The public network interface on this server is not accessible.
To connect to this server, use the Private Endpoint from inside your virtual network.
当将“公用网络访问”设置为“禁用”时,将拒绝添加、删除或编辑任何防火墙规则的所有尝试,并显示如下错误消息:
Error 42101
Unable to create or modify firewall rules when public network interface for the server is disabled.
To manage server or database level firewall rules, please enable the public network interface.
确保将“公用网络访问”设置为“所选网络”,以便能够添加、删除或编辑 Azure SQL 数据库和 Azure Synapse Analytics 的任何防火墙规则。
借助最低传输层安全性 (TLS) 版本设置,客户可以选择其 SQL 数据库使用哪个 TLS 版本。 可以使用 Azure 门户、Azure PowerShell 和 Azure CLI 更改最低 TLS 版本。
目前,Azure SQL 数据库支持 TLS 1.0、1.1、1.2 和 1.3。 设置最低 TLS 版本可确保支持较新的 TLS 版本。 例如,如果选择 TLS 版本 1.1,表示仅接受使用 TLS 1.1 和 1.2 的连接,并拒绝使用 TLS 1.0 的连接。 在测试以确认应用程序支持它后,建议将最低 TLS 版本设置为 1.2。 此版本包括对以前版本中漏洞的修复,以及 Azure SQL 数据库中支持的最高 TLS 版本。
Azure 已宣布对旧 TLS 版本(TLS 1.0 和 1.1)的支持将于 2025 年 8 月 31 日结束。 有关详细信息,请参阅 TLS 1.0 和 1.1 弃用。
从 2024 年 11 月开始,无法再为低于 TLS 1.2 的 Azure SQL 数据库和 Azure Synapse Analytics 客户端连接设置最低 TLS 版本。
可使用 Azure 门户、Azure PowerShell 或 Azure CLI 配置客户端连接的最低 TLS 版本。
注意
- 最低 TLS 版本的默认设置为允许使用所有版本。 在设置为 TLS 的某个版本后,不能还原为默认值。
- 强制实施最低 TLS 1.3 可能会导致来自不支持 TLS 1.3 的客户端的连接出现问题,因为并非所有驱动程序和操作系统都支持 TLS 1.3。
如果客户使用的应用程序依赖于更低的 TLS 版本,我们建议根据应用程序的要求设置最低 TLS 版本。 如果应用程序要求未知或工作负载依赖于不再维护的旧驱动程序,建议不要设置任何最低 TLS 版本。
有关详细信息,请参阅 SQL 数据库连接的 TLS 注意事项。
设置最低 TLS 版本后,如果客户所使用的 TLS 版本低于服务器的最低 TLS 版本,则将无法进行身份认证,并显示以下错误:
Error 47072
Login failed with invalid TLS version
备注
在应用层强制实施最低 TLS 版本。 当直接针对 SQL 数据库终结点运行时,尝试在协议层确定 TLS 支持的工具可能会返回 TLS 版本以及所需的最低版本。
- 转到 Azure 门户,并转到 Azure 中的逻辑服务器。
- 在“安全性”部分下,选择“网络”页。
- 选择“连接”选项卡。选择与服务器关联的所有数据库所需的“最低 TLS 版本”,然后选择“保存”。
可以使用 Azure PowerShell 更改最低 TLS 版本。
重要
Azure SQL 数据库仍然支持 PowerShell Azure 资源管理器模块,但所有未来开发都针对 Az.Sql 模块。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。 以下脚本需要 Azure PowerShell 模块。
以下 PowerShell 脚本演示如何在逻辑服务器级别Get
最低 TLS 版本属性:
$serverParams = @{
ServerName = "sql-server-name"
ResourceGroupName = "sql-server-group"
}
(Get-AzSqlServer @serverParams).MinimalTlsVersion
若要在逻辑服务器级别Set
最低 TLS 版本属性,请将 Sql 管理员密码替换为 strong_password_here_password
并执行:
$serverParams = @{
ServerName = "sql-server-name"
ResourceGroupName = "sql-server-group"
SqlAdministratorPassword = (ConvertTo-SecureString "strong_password_here_password" -AsPlainText -Force)
MinimalTlsVersion = "1.2"
}
Set-AzSqlServer @serverParams
可以使用 Azure CLI 更改最低 TLS 设置。
以下 CLI 脚本演示如何在 Bash shell 中更改“最低 TLS 版本”设置:
# Get current setting for Minimal TLS Version
az sql server show -n sql-server-name -g sql-server-group --query "minimalTlsVersion"
# Update setting for Minimal TLS Version
az sql server update -n sql-server-name -g sql-server-group --set minimalTlsVersion="1.2"
可以使用 Azure 门户和 SQL 审核日志来识别使用 TLS 1.0 和 1.1 进行连接的客户端。
在 Azure 门户中,转到数据库资源的“监视”下的“指标”,然后按“成功连接”以及 TLS 版本 = 1.0
和 1.1
进行筛选:
还可以直接在数据库中查询 sys.fn_get_audit_file 以查看审核文件中的 client_tls_version_name
:
连接策略确定客户连接的方式。 我们强烈建议使用 Redirect
连接策略而不要使用 Proxy
连接策略,以最大程度地降低延迟和提高吞吐量。
可以使用 Azure 门户、Azure PowerShell 和 Azure CLI 更改连接策略。
可以使用 Azure 门户更改逻辑服务器的连接策略。
- 转到 Azure 门户。 转到“Azure 中的逻辑服务器”。
- 在“安全性”部分下,选择“网络”页。
- 选择“连接”选项卡。选择所需的连接策略,然后选择“保存”。
可以使用 Azure PowerShell 更改逻辑服务器的连接策略。
重要
Azure SQL 数据库仍然支持 PowerShell Azure 资源管理器模块,但所有未来开发都针对 Az.Sql 模块。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。 以下脚本需要 Azure PowerShell 模块。
以下 PowerShell 脚本演示如何使用 PowerShell 更改连接策略:
# Get SQL Server ID
$sqlserverid = (Get-AzSqlServer -ServerName sql-server-name -ResourceGroupName sql-server-group).ResourceId
# Set URI
$id = "$sqlserverid/connectionPolicies/Default"
# Get current connection policy
$resourceParams = @{
ResourceId = $id
ApiVersion = "2014-04-01"
Verbose = $true
}
(Get-AzResource @resourceParams).Properties.ConnectionType
# Update connection policy
$updateParams = @{
ResourceId = $id
Properties = @{
connectionType = "Proxy"
}
Force = $true
}
Set-AzResource @updateParams
可以使用 Azure CLI 更改逻辑服务器的连接策略。
以下 CLI 脚本演示如何在 Bash shell 中更改连接策略:
# Get SQL Server ID
sqlserverid=$(az sql server show -n sql-server-name -g sql-server-group --query 'id' -o tsv)
# Set URI
ids="$sqlserverid/connectionPolicies/Default"
# Get current connection policy
az resource show --ids $ids
# Update connection policy
az resource update --ids $ids --set properties.connectionType=Proxy
Windows 命令提示符中的 Azure CLI
以下 CLI 脚本演示如何从 Windows 命令提示符(安装了 Azure CLI)更改连接策略:
# Get SQL Server ID and set URI
FOR /F "tokens=*" %g IN ('az sql server show --resource-group myResourceGroup-571418053 --name server-538465606 --query "id" -o tsv') do (SET sqlserverid=%g/connectionPolicies/Default)
# Get current connection policy
az resource show --ids %sqlserverid%
# Update connection policy
az resource update --ids %sqlserverid% --set properties.connectionType=Proxy