你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Tip
Microsoft Fabric Data Warehouse是数据湖基础上的企业规模关系仓库,具有未来就绪的体系结构、内置 AI 和新功能。 如果不熟悉数据仓库,请从Fabric Data Warehouse开始。 现有的指定 SQL 池工作负荷可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。
通过使用 Azure 专用链接,您可以通过私有端点连接到 Synapse SQL。 私有端点是在你的虚拟网络和子网中,带有私有IP地址的网络接口。 流量会留在Microsoft骨干网,而不是通过公共互联网。
始终在所有客户端驱动程序和工具的连接字符串中使用服务器的完全限定域名(<server>.database.windows.netFQDN)。 使用私有IP地址或私有链路FQDN(<server>.privatelink.database.windows.net)的认证尝试是无法成功的。 这种行为是设计的,因为私有端点将流量路由到 SQL 网关,而 SQL 网关需要正确的 FQDN 才能成功路由认证请求。
如何设置专用链接
创建过程
通过使用 Azure 门户、PowerShell 或 Azure CLI 创建私有端点:
审批流程
网络管理员创建私有端点(PE)后,SQL管理员可以管理 SQL 数据库的私有端点连接(PEC)。
转到 Azure 门户中的服务器资源。
前往私有端点审批页面。 在 Azure Synapse Analytics SQL 服务器资源中,在资源菜单的安全性下,选择私有端点连接。
查看以下内容:
- 所有私有端点连接(PEC)列表
- 创建私有端点(PE)
如果没有私有端点,请选择“ 创建私有端点”来创建一个。 否则,请通过选择它在列表中选择单个 PEC。
SQL 管理员可以批准或拒绝 PEC,并可选添加简短文本响应。
批准或拒绝后,列表会反映相应状态及回复文本。
选择私有端点名称。
此操作会带您进入 私有端点 概览页面。 选择 网络接口 链接,查看私有端点连接的网络接口详情。
“网络接口”页面显示专用终结点连接的专用 IP 地址。
Important
添加专用终结点连接时,默认情况下不会阻止到逻辑服务器的公共路由。 在“防火墙和虚拟网络”窗格中,“拒绝公用网络访问”设置默认处于未选中状态。 若要禁用公用网络访问,请确保选择“拒绝公用网络访问”。
禁用对逻辑服务器的公共访问
在你的 Azure Synapse Analytics SQL 服务器中,你可以禁用对逻辑服务器的所有公共访问,仅允许来自你的虚拟网络的连接。
首先,确保已启用并已配置专用终结点连接。 然后,禁用对逻辑服务器的公共访问:
- 转到逻辑服务器的“网络”页。
- 选中“拒绝公用网络访问”复选框。
测试从同一虚拟网络中的 Azure VM 到 SQL 数据库的连接
在这种情况下,假设你创建了一个运行最新版本Windows的Azure虚拟机(VM),与私有端点在同一虚拟网络中。
然后你可以通过以下工具进行一些基本的连接检查,确保虚拟机通过私有端点连接到SQL数据库:
- Telnet
- PsPing
- Nmap
- SQL Server Management Studio (SSMS)
使用 Telnet 检查连通性
Telnet 是 Windows 的一个功能,可以用来测试连接性。 根据Windows版本,你可能需要明确启用这个功能。
安装Telnet后打开命令提示符窗口。 运行 Telnet 命令并指定 SQL 数据库中的数据库的 IP 地址和专用终结点。
telnet 10.9.0.4 1433
当 Telnet 成功连接时,命令窗口会显示一个空白屏幕。
通过使用 PowerShell 检查连接性
使用PowerShell命令检查连接情况:
Test-NetConnection -computer myserver.database.windows.net -port 1433
通过使用 PsPing 检查连接性
使用以下方式的 PsPing 检查私有端点是否监听了端口 1433 上的连接。
通过提供逻辑 SQL 服务器的 FQDN 和端口 1433 来运行 PsPing:
PsPing.exe mysqldbsrvr.database.windows.net:1433
这个例子显示了预期输出:
TCP connect to 10.9.0.4:1433:
5 iterations (warmup 1) ping test:
Connecting to 10.9.0.4:1433 (warmup): from 10.6.0.4:49953: 2.83ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49954: 1.26ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49955: 1.98ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49956: 1.43ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49958: 2.28ms
输出显示 PsPing 可以ping与私有端点关联的私有IP地址。
使用 Nmap 检查连通性
Nmap(Network Mapper)是一款免费且开源的网络发现和安全审计工具。 欲了解更多信息及下载链接,请访问 https://Nmap.org。使用此工具确保私有端点监听1433端口上的连接。
运行 Nmap 时,提供承载私有端点的子网地址范围。
Nmap -n -sP 10.9.0.0/24
这个例子显示了预期输出:
Nmap scan report for 10.9.0.4
Host is up (0.00s latency).
Nmap done: 256 IP addresses (1 host up) scanned in 207.00 seconds
结果显示有一个 IP 地址处于正常状态,对应于私有终结点的 IP 地址。
通过使用 SQL Server Management Studio(SSMS)检查连接性
在客户端的连接字符串中 () 使用服务器的完全限定域名 (FQDN)<server>.database.windows.net。 任何直接向该 IP 地址发起的登录尝试或使用私有链路 FQDN(<server>.privatelink.database.windows.net)的登录尝试均失败。 这种行为是设计的,因为私有端点将流量路由到该区域的 SQL 网关。 登录成功需要指定正确的FQDN。
请按照使用 SSMS 连接 SQL 数据库中的步骤操作。 在使用 SSMS 连接后,以下查询将返回 client_net_address,它与你发起连接时所使用的 Azure VM 的专用 IP 地址一致:
SELECT client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
通过专用对等互连建立本地连接
当你从本地机器连接到公共端点时,你需要通过服务器级防火墙规则将你的IP地址添加到基于IP的防火墙。 尽管此模型非常适合用于允许对开发或测试工作负荷的单个计算机进行访问,但在生产环境中却难以管理。
通过使用 专用链接,您可以通过 ExpressRoute、私有对等连接或 VPN 隧道实现对私有端点的跨本地环境访问。 然后你可以禁用所有通过公共端点的访问,并且不使用基于IP的防火墙来允许任何IP地址。
专用链接 的应用场景
客户端可以从同一虚拟网络、同一区域内的对等虚拟网络,或通过跨区域的虚拟网络到虚拟网络连接连接到专用终结点。 此外,客户端还可以通过ExpressRoute、私有对等或VPN隧道从本地连接。 以下简化示意图显示了常见用例。
此外,不直接在虚拟网络中运行但与之集成的服务(例如,应用服务 Web 应用或 Functions)也可以实现与数据库的专用连接。
从对等虚拟网络中的 Azure 虚拟机进行连接
配置虚拟网络对等互联,以便从对等互联虚拟网络中的 Azure VM 建立与 SQL 数据库的连接。
从虚拟网络中的 Azure VM 连接到虚拟网络环境
配置虚拟网络到虚拟网络 VPN 网关连接,以便从另一区域或订阅中的 Azure VM 建立与 SQL 数据库中的数据库的连接。
通过 VPN 从本地环境进行连接
要从本地环境建立连接,请选择并实施以下选项之一:
还要考虑 DNS 配置方案,因为服务的 FQDN 可以解析为公共 IP 地址。
使用 PolyBase 和 COPY 语句从 Azure Synapse Analytics 连接到 Azure 存储
使用 PolyBase 和 COPY 语句,从Azure 存储账户加载数据到 Azure Synapse Analytics。 如果你要从中加载数据的 Azure 存储 账户仅通过私有端点、服务端点或基于 IP 的防火墙将访问限制为一组虚拟网络子网,那么 PolyBase 和 COPY 语句与该账户之间的连接将会中断。 要启用 Azure Synapse Analytics 连接到在虚拟网络中受保护的 Azure 存储的导入和导出场景,请参阅将虚拟网络服务终结点与 Azure 存储配合使用的影响。
防止数据外泄
数据外泄是指用户(如数据库管理员)从一个系统提取数据并将其转移到组织外的另一个位置或系统的行为。 例如,该用户将数据移到非 Microsoft 实体拥有的存储帐户。
假设某个用户在连接到 SQL 数据库中的数据库的 Azure 虚拟机中运行 SQL Server Management Studio (SSMS)。 此数据库位于“美国西部”数据中心。 以下示例展示了如何通过网络访问控制限制公共端点的访问。
- 通过将允许 Azure 服务设置为关闭,禁用所有通过公共端点访问 SQL 数据库的 Azure 服务流量。 确保服务器和数据库级防火墙规则不允许任何IP地址。 欲了解更多信息,请参见 Azure Synapse Analytics 网络访问控制。
- 仅允许发往虚拟机私有 IP 地址的流量。 更多信息请参见 虚拟网络防火墙规则。
- 在 Azure 虚拟机上,通过使用网络安全组(NSG)和服务标签,缩小出站连接范围,具体如下:
- 指定一个NSG规则,允许服务标签=
SQL.WestUs-只允许连接美国西部的SQL数据库。 - 指定一个 NSG 规则,优先级 更高,拒绝 Service Tag =
Sql的流量 - 拒绝所有区域的 SQL 数据库连接。
- 指定一个NSG规则,允许服务标签=
在这个设置结束后,Azure 虚拟机只能连接到美国西部区域的资源。 然而,连接性并不局限于单一数据库。 虚拟机仍然可以连接到美国西部地区的任何数据库,包括不属于订阅的数据库。 虽然你在前述情景中将数据外泄范围缩小到特定区域,但你并没有完全消除它。
通过使用 专用链接,你可以设置网络访问控制,如 NSG,以限制对私有端点的访问。 你可以将单个 Azure PaaS 资源映射到特定的私有端点。 恶意内部人员只能访问映射的PaaS资源,不能访问其他资源。