Azure SQL 数据库和 Azure Synapse Analytics 网络访问控制
适用于:Azure SQL 数据库 Azure Synapse Analytics(仅限专用 SQL 池)
从 Azure 门户为 Azure SQL 数据库和 Azure Synapse Analytics 创建逻辑服务器时,结果是格式为“yourservername.database.chinacloudapi.cn”的公共终结点。
可以使用以下网络访问控制来选择性地允许通过该“公共终结点”访问数据库:
IP 防火墙规则:使用此功能可以显式允许从特定的 IP 地址建立连接。 例如,从本地计算机或通过指定起始和结束 IP 地址来指定 IP 地址范围。
允许 Azure 服务和资源访问此服务器:启用此选项后,Azure 边界范围内的其他资源可以访问 SQL 数据库。 例如,Azure 虚拟机可以访问SQL 数据库资源。
还可以通过以下方式允许从虚拟网络对数据库进行“专用访问”:
虚拟网络防火墙规则:使用此功能可以允许来自 Azure 边界内特定虚拟网络的流量。
专用链接:使用此功能可为特定虚拟网络内的 Azure 中的逻辑服务器创建专用终结点。
重要
本文不适用于“SQL 托管实例”。 有关网络配置的详细信息,请参阅连接到 Azure SQL 托管实例。
IP 防火墙规则
基于 IP 的防火墙是 Azure 中的一项逻辑服务器功能,在显式添加客户端计算机的 IP 地址之前,它会阻止对服务器的所有访问。
允许 Azure 服务
默认情况下,在从 Azure 门户创建新的逻辑服务器期间,“允许 Azure 服务和资源访问此服务器”未选中且未启用。 允许使用公共终结点建立连接时,将显示此设置。
创建逻辑服务器后,也可以按如下所示通过“网络”设置更改此设置:
启用“允许 Azure 服务和资源访问此服务器”时,服务器会允许来自 Azure 边界内所有资源的通信,而无论这是否是订阅的一部分。 在许多情况下,启用该设置的访问权限宽松度会超过大多数客户的需要。 可能需要取消选中此设置,并将其替换为限制性严格的 IP 防火墙规则,或者使用一种专用访问选项。
重要
如果选中“允许 Azure 服务和资源访问此服务器”,则会添加一个基于 IP 的防火墙规则,其起始和结束 IP 地址为 0.0.0.0
但是,这样做会影响在 Azure 中的虚拟机上运行的以下功能,这些虚拟机未包含在你的虚拟网络中,因此会通过 Azure IP 地址连接到数据库:
导入/导出服务
未启用“允许 Azure 服务和资源访问此服务器”时,导入导出服务不起作用。 不过,可通过以下方式解决此问题:在 Azure VM 中手动运行 SqlPackage,或者直接在代码中使用 DACFx API 执行导出。
数据同步
若要在未启用“允许 Azure 服务和资源访问此服务器”的情况下使用数据同步功能,需要创建单个防火墙规则条目,以便为托管中心数据库的区域,从 SQL 服务标记添加 IP 地址。 将这些服务器级防火墙规则添加到托管“中心”和“成员”数据库的服务器(可能位于不同的区域)。
使用以下 PowerShell 脚本生成与中国东部 2 区域的 SQL 服务标记对应的 IP 地址。
PS C:\> $serviceTags = Get-AzNetworkServiceTag -Location chinaeast2
PS C:\> $sql = $serviceTags.Values | Where-Object { $_.Name -eq "Sql.ChinaEast2" }
PS C:\> $sql.Properties.AddressPrefixes.Count
3
PS C:\> $sql.Properties.AddressPrefixes
40.73.82.0/23
40.73.169.0/26
40.73.170.0/26
提示
即使指定 Location 参数,Get-AzNetworkServiceTag 也会返回 SQL 服务标记的全局范围。 请务必将范围筛选为托管同步组所用中心数据库的区域
PowerShell 脚本的输出采用无类域间路由 (CIDR) 表示法。 需要使用 Get-IPrangeStartEnd.ps1 将其转换为开始和结束IP地址的格式,如下所示:
PS C:\> Get-IPrangeStartEnd -ip 52.229.17.93 -cidr 26
start end
----- ---
52.229.17.64 52.229.17.127
可以使用以下 PowerShell 脚本将所有 IP 地址从 CIDR 转换为开始和结束 IP 地址格式。
PS C:\>foreach( $i in $sql.Properties.AddressPrefixes) {$ip,$cidr= $i.split('/') ; Get-IPrangeStartEnd -ip $ip -cidr $cidr;}
start end
----- ---
13.86.216.0 13.86.216.127
13.86.216.128 13.86.216.191
13.86.216.192 13.86.216.223
现在可以将这些规则添加为不同的防火墙规则,然后禁用“允许 Azure 服务和资源访问此服务器”设置。
Sql 服务标记
可以在安全规则以及从客户端到SQL 数据库的路由使用服务标记。 只需在安全规则的源或目的地字段中指定服务标记,即可在网络安全组、Azure 防火墙和用户定义的路由中使用它们。 Sql 服务标记由 SQL 数据库使用的所有 IP 地址组成。 该标记按区域进一步分段。 例如,Sql.ChinaEast 列出了中国东部 SQL 数据库使用的所有 IP 地址。
Sql 服务标记由与 SQL 数据库建立连接所需的 IP 地址组成,详见网关 IP 地址。 此外,服务标记还将与以下功能中使用的任何 SQL 数据库出站流量相关联:
SqlManagement 服务标记
SqlManagement 服务标记用于针对 SQL 数据库的控制平面操作。
虚拟网络防火墙规则
虚拟网络防火墙规则是更容易的替代方案,让你可以更轻松地从包含你的虚拟机 的特定子网建立和管理访问。
专用链接
使用专用链接可以通过专用终结点连接到服务器。 专用终结点是特定虚拟网络和子网中的专用 IP 地址。
相关内容
有关创建服务器级 IP 防火墙规则的快速入门,请参阅在 SQL 数据库中创建数据库。
有关创建服务器级虚拟网络防火墙规则的快速入门,请参阅 Azure SQL 数据库的虚拟网络服务终结点和规则。
有关从开源应用程序或合作伙伴应用程序连接到 SQL 数据库中的数据库的帮助,请参阅 SQL 数据库的客户端快速入门代码示例。
有关可能需要打开的其他端口的信息,请参阅用于 ADO.NET 4.5 和 SQL 数据库的非 1433 端口中的 SQL 数据库:外部与内部部分
有关 Azure SQL 数据库的连接概述,请参阅 Azure SQL 连接体系结构
有关 Azure SQL 数据库安全概述,请参阅保护数据库