我想使用虚拟网络来限制仅从我的App Service访问Azure数据库,以便我可以转向"允许访问App Services"在防火墙设置
我现在可以在我的VNET中看到Microsoft.Sql服务端点:
但是,我还在
SqlException:无法打开服务器' my-sqlserver'要求的 登录。 IP地址为' 52.233。 。 '是不允许的 访问服务器。:
我错过了什么?
答案 0 :(得分:2)
不幸的是,你暂时无法实现这种情况。
<强>为什么:强>
当您使用VNET与Web App集成时,您的Web App可以与Web App <---> VNET
等VNET进行通信。
当您使用SQL防火墙允许来自特定VNet的triffic时,来自VNET地址空间的流量可以与您的SQL通信,如VNet <---> SQL server
。
设置完所有配置后,您的方案应为Web App <---> VNET <---> SQL server
。 重要的是来自Web App的流量无法通过VNET进入SQL服务器,因为Web应用程序不在VNET中,它在VNET外面!因此,当您使用Web App时尝试访问SQL服务器,triffic不是来自VNET。
<强>解决方案:强>
解决方案是将您的Web App放入VNet。因此,您可以使用Azure ASE来实现此目标。
<强>参考:强>
VNet Integration可让您的网络应用访问您的资源 虚拟网络但不授予对您的Web应用程序的私人访问权限 虚拟网络。私人网站访问是指制作您的应用 只能从Azure内的专用网络访问 虚拟网络。专用站点访问仅适用于ASE 配置内部负载均衡器(ILB)。有关使用的详细信息 ILB ASE,从这里的文章开始:Creating and using an ILB ASE。
类似案例:App Service VNet Integration with Azure Storage Service Enpoint
答案 1 :(得分:2)
考虑允许您删除防火墙设置“允许访问App Services”的一个选项是为特定应用服务的出站IP地址添加防火墙规则。< / p>
您可以在App Service的“属性”部分或PowerShell中找到当前列表...
$outboundIps = (Get-AzureRmResource -ResourceGroupName $rg -ResourceType Microsoft.Web/sites -ResourceName $appService).Properties.outboundIpAddresses
一些重要的警告。
出站IP可以更改,但可以预测(请参阅下面的链接)。我将PowerShell脚本作为更新防火墙规则的VSTS发布过程的一部分运行。 (如果您还通过发布流程而不是Azure门户管理资源及其规模,则此方法似乎可靠。)
我无法找到任何信息来确认这些IP是否是您的App Service所特有的。这是一个需要考虑的风险。
https://docs.microsoft.com/en-us/azure/app-service/app-service-ip-addresses
答案 2 :(得分:1)
如果要使用服务端点锁定从应用程序访问服务(例如Azure SQL,Storage,Cosmos DB等)的访问权限,可以使用新的VNet集成功能。该功能的较早形式需要网关,并在点对点VPN上构建。应用程序的源IP将是指向站点地址的地址之一。仅当您的源IP是VNet地址之一时,服务端点才起作用。
使用新的VNet集成,您的应用程序后端将使用选定子网中的IP进行呼叫。这意味着您可以在该子网上设置服务端点。
这不要与应用程序的服务端点混淆。这是最近发布的功能,可以将应用程序的流量锁定到选定的VNet /子网。
答案 3 :(得分:1)
我相信Azure现在已经包括了对您的方案的支持,与@Waine Yang的回复相反,允许这样的连接$ path="/a/sub_b/c/AND_d/e/the_f/this_is_g/THIS_ONE_I_WANT_h/penultimate/last"
$ s1="${path%/*/*}"
$ name="${s1##*/}"
$ new_path="${s1}/${name}.txt"
$ echo "$new_path"
/a/sub_b/c/AND_d/e/the_f/this_is_g/THIS_ONE_I_WANT_h/THIS_ONE_I_WANT_h.txt
。我刚刚将Azure函数配置为通过专用VNET与只能通过该VNET访问的SQL Server通信。
现在,当您尝试在App Service中设置VNET集成时,Azure将显示以下消息(请注意,该消息还会显示或通过Azure VNET ):
Here是有关如何使用Terraform创建它的示例:
答案 4 :(得分:0)
通过最新启动的名为 Private Link 的新服务,您现在可以设置专用终结点来访问Azure SQL数据库。
通过今天发布的Azure私有链接,您可以轻松创建 您的VNet中的私有终结点并将其映射到您的PaaS资源(您的 Azure存储帐户Blob或SQL数据库服务器)。