如何使用虚拟网络保护从App Service到Azure Sql Database的访问?

Lie*_*ero 7 firewall azure azure-web-sites azure-virtual-network azure-sql-database

脚本

我想使用虚拟网络来限制仅从我的App Service访问Azure数据库,以便我可以在防火墙设置中启用"允许访问App Services"

允许访问App Services屏幕截图

我做了什么:

  1. 我去了App Service - > Networking - > VNET Integration - > Setup - > Create New Virtual Network
  2. 我用默认设置创建了新的VNET.
  3. 创建VNET后,我进入App Service - > Networking - > VNET Integration并确保VNET已连接
  4. 我去了SQL Firewall settigs - > Virtual Network - > Add existing Virtual Newtork并选择了我的VNET.我已经离开默认子网和地址空间:"default/10.0.0.0/24"并且我已经取消选中IgnoreMissingServiceEndpoint标志.

我现在可以在我的VNET中看到Microsoft.Sql服务端点: 在此输入图像描述

但是,我还在

SqlException:无法打开登录请求的服务器'my-sqlserver'.IP地址为'52 .233的客户端..'不允许访问服务器:

我错过了什么?

小智 5

如果要通过服务端点锁定从应用程序对 Azure SQL、存储、Cosmos DB 等服务的访问,可以使用新的 VNet 集成功能。该功能的早期形式需要网关并构建在点对站点 VPN 之上。您的应用程序的源 IP 将是站点地址之一。仅当源 IP 是 VNet 地址之一时,服务终结点才起作用。

通过新的 VNet 集成,您的应用程序后端将使用所选子网中的 IP 进行调用。这意味着您可以在该子网上设置服务端点。

不要将其与应用程序的服务端点混淆。这是最近发布的功能,可将应用程序的流量锁定到选定的 VNet/子网。


Way*_*ang -1

不幸的是,您目前无法实现此场景。

为什么:

  1. 当您将 VNET 集成与 Web 应用程序一起使用时,您的 Web 应用程序可以与 VNET 进行通信,例如Web App <---> VNET.

  2. 当您使用 SQL 防火墙允许来自特定 VNet 的流量时,来自 VNET 地址空间的流量可以与您的 SQL 进行通信,例如VNet <---> SQL server.

  3. 设置完所有配置后,您的场景应该是Web App <---> VNET <---> SQL server重要的是,来自 Web 应用程序的流量无法通过 VNET 到达 SQL 服务器,因为 Web 应用程序不在 VNET 内,而是在 VNET 之外!因此,当您使用Web App尝试访问SQL服务器时,流量不是来自VNET。

解决方案:

解决方案是将您的 Web 应用程序放入 VNet 中。因此,您可以使用Azure ASE来实现此目的。

参考:

VNet 集成使您的 Web 应用程序可以访问虚拟网络中的资源,但不会授予从虚拟网络对您的 Web 应用程序的私有访问权限。专用站点访问是指使您的应用程序只能从专用网络(例如 Azure 虚拟网络内)访问。私有站点访问仅适用于配置了内部负载均衡器 (ILB) 的 ASE。有关使用 ILB ASE 的详细信息,请从此处的文章开始:创建和使用 ILB ASE

类似案例:应用服务 VNet 与 Azure 存储服务端点集成

  • 所以你是说我每个月要花费超过 1000 美元(ASE v2 的月费)?对于只访问 SQL 数据库什么都不做的应用程序服务? (3认同)
  • 好,谢谢。未来有改变的计划吗?我的意思是限制 SQL 访问网络级别的单个应用程序服务? (3认同)