在 Azure SQL 托管实例中配置公共终结点

适用于:Azure SQL 托管实例

使用 Azure SQL 托管实例的公共终结点可以从虚拟网络外部对托管实例进行数据访问。 可以从多租户 Azure 服务(例如 Power BI、Azure 应用服务)或本地网络访问托管实例。 如果使用托管实例上的公共终结点,则无需使用 VPN,这有助于避免 VPN 吞吐量问题。

在本文中,学习如何:

  • 为托管实例启用或禁用公共终结点
  • 配置托管实例网络安全组 (NSG),以允许将流量传送到托管实例公共终结点
  • 获取托管实例公共终结点的连接字符串

权限

由于托管实例中数据的敏感性,需要执行两个步骤才能完成启用托管实例公共终结点的配置。 这种安全措施遵守职责分离 (SoD) 的原则:

  • 托管实例管理员需要在托管实例上启用公共终结点。 可以在托管实例资源的“概述”页上找到托管实例管理员。
  • 网络管理员需要使用网络安全组 (NSG) 允许流向托管实例的流量。 有关详细信息,请参阅网络安全组权限

启用公共终结点

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 为 SQL 托管实例启用公共终结点。

要在 Azure 门户中为 SQL 托管实例启用公共终结点,请执行下列步骤:

  1. 转到 Azure 门户
  2. 打开包含托管实例的资源组,然后选择要在其上配置公共终结点的 SQL 托管实例
  3. 在“安全”设置中,选择“网络”选项卡。
  4. 在虚拟网络配置页中选择“启用”,然后选择“保存”图标以更新配置。

Screenshot shows the Virtual network page of SQL Managed Instance with the Public endpoint enabled.

禁用公共终结点

可以使用 Azure 门户、Azure PowerShell 和 Azure CLI 为 SQL 托管实例禁用公共终结点。

若要使用 Azure 门户禁用公共终结点,请执行以下步骤:

  1. 转到 Azure 门户
  2. 打开包含托管实例的资源组,然后选择要在其上配置公共终结点的 SQL 托管实例
  3. 在“安全”设置中,选择“网络”选项卡。
  4. 在虚拟网络配置页中选择“禁用”,然后选择“保存”图标以更新配置。

在网络安全组上允许公共终结点流量

使用 Azure 门户允许网络安全组中的公共流量。 执行以下步骤:

  1. Azure 门户中,转到 SQL 托管实例的“概述”页。

  2. 选择“虚拟网络/子网”链接,然后你将转到“虚拟网络配置”页。

    Screenshot shows the Virtual network configuration page where you can find your Virtual network/subnet value.

  3. 在虚拟网络的配置窗格中选择“子网”选项卡,并记下托管实例的安全组名称。

    Screenshot shows the Subnet tab, where you can get the SECURITY GROUP for your managed instance.

  4. 返回包含托管实例的资源组。 你应该会看到上面记下的网络安全组名称。 选择“网络安全组”名称,打开“网络安全组”配置页。

  5. 选择“入站安全规则”选项卡,并添加一个优先级高于 deny_all_inbound 规则且采用以下设置的规则:

    设置 建议值 说明
    Source 任何 IP 地址或服务标记
    • 对于 Power BI 等 Azure 服务,请选择“Azure 云服务标记”
    • 对于你的计算机或 Azure 虚拟机,请使用 NAT IP 地址
    源端口范围 * 请将此保留为 *(任何),因为源端口通常是动态分配的,因而也是不可预测的
    目标 任意 将目标保留为“任何”,以允许流量进入托管实例子网
    目标端口范围 3342 将目标端口的范围限定为 3342,这是托管实例的公共 TDS 终结点
    协议 TCP SQL 托管实例对 TDS 使用 TCP 协议
    操作 允许 允许入站流量通过公共终结点传送到托管实例
    Priority 1300 请确保此规则的优先级高于 deny_all_inbound 规则

    Screenshot shows the Inbound security rules with your new public_endpoint_inbound rule above the deny_all_inbound rule.

    注意

    端口 3342 用来与托管实例建立公共终结点连接,目前不可更改。

确认路由配置正确

0.0.0.0/0 地址前缀的路由会指示 Azure,当目标 IP 地址不在子网路由表中的任何其他路由器地址前缀中时,该如何路由流量。 创建子网时,Azure 会创建地址前缀为“0.0.0.0/0”且下一跃点类型为“Internet”的默认路由。

重写此默认路由而不添加必要的路由以确保公共终结点流量直接路由到 Internet 可能会导致非对称路由问题,因为传入流量不通过虚拟设备/虚拟网络网关流动。 确保通过公共 Internet 到达托管实例的所有流量也通过公共 Internet 返回,为每个源添加特定路由或者将默认路由设置为 0.0.0.0/0 地址前缀,以作为下一跃点类型返回到 Internet

如需详细了解更改对此默认路由有何影响,请参阅 0.0.0.0/0 地址前缀

获取公共终结点连接字符串

  1. 导航到为公共终结点启用的托管实例配置页。 选择“设置”配置下的“连接字符串”选项卡。

  2. 公共终结点主机名采用 <mi_name>.public.<dns_zone>.database.chinacloudapi.cn 格式,用于连接的端口是 3342。 下面的示例表明了连接字符串的服务器值,该连接字符串可在 SQL Server Management Studio 或 Azure Data Studio 连接中使用并且表示公共终结点端口:<mi_name>.public.<dns_zone>.database.chinacloudapi.cn,3342

    Screenshot shows the connection strings for your public and VNet-local endpoints.

后续步骤

了解如何在公共终结点中安全使用 Azure SQL 托管实例