azure-sql-database - Azure Web App VNet 与具有专用链接的存储帐户集成
问题描述
我在配置了 VNet 集成(子网 10.240.0.32/27)的 Azure 应用服务 (S1) 上有一个 API。我还有一个存储帐户,我在其上配置了专用链接(子网10.240.0.0/27
并获得了 IP 10.240.0.4
)。但是它不起作用我收到以下错误:
StorageException:此请求无权执行此操作。
有谁知道我是否需要配置其他任何东西才能工作?
该文档声明我不必更改任何连接字符串。连接在配置专用链接之前有效。
更新
我也尝试过使用 Azure SQL 数据库。在与存储相同的子网中部署 SQL 专用链接。这里也没有多少运气。收到以下错误:
SqlException:原因:与 SQL Server 建立连接时发生特定于实例的错误。此服务器上的公共数据端点不可访问。要连接到此服务器,请使用虚拟网络内部的专用终结点。
当我将WEBSITE_VNET_ROUTE_ALL
(使所有传出流量通过 vnet 而不仅仅是私有 IP)添加到 Web 应用程序并将其设置为时,1
我收到以下错误:
SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:0 - 数据库查找期间发生不可恢复的错误。)
然后我在与私有链接相同的子网中创建了一个 VM。从那个虚拟机我可以运行这个命令,该命令很好地返回正确的 IP:
.\psping.exe azurenetworking.database.windows.net:1433
2020 年 4 月 2 日更新
今天和微软通了电话。原来应用服务目前无法使用私有 DNS 区域。因此,您现在需要设置自己的 DNS 服务器。它将被修复,但他们无法给我 ETA。所以现在它要么是自定义 DNS 服务器,要么是使用服务端点。当这种情况发生变化时,我会更新这个问题
更新 6 月 2 日
这方面的详细信息已添加到文档中:https ://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet#azure-dns-private-zones
归结为:要使用 Azure DNS 专用区域,您需要添加以下应用设置:
WEBSITE_DNS_SERVER
带值168.63.129.16
WEBSITE_VNET_ROUTE_ALL
和值1
我为任何对完整示例感兴趣的人写了一篇关于它的博客:https ://erwinstaal.nl/posts/securing-your-azure-db-connection-using-azure-private-link/
解决方案
当您通过公共终结点访问 Blob 存储但启用存储帐户的 VNet 防火墙设置时,可能会发生该错误。
在这种将 App VNet 集成到存储帐户连接的情况下,您可以使用服务端点而不是专用端点。要将服务终结点与您的应用程序一起使用,请使用区域 VNet 集成连接到选定的虚拟网络。Microsoft.Storage
然后在您用于集成的子网上配置服务端点。
如果您仍想使用私有端点,恐怕您需要使用自己的 DNS 服务器从 Azure 应用程序服务(Web 应用程序、函数或机器人)进行名称解析,使用虚拟网络集成来角色实例或虚拟机在同一虚拟网络。请参阅Azure 虚拟网络中资源的名称解析。
使用专用链接,将 Blob 存储 DNS 名称解析为公共 IP 地址,而不是来自应用服务控制台的专用终结点 IP 地址。当您从应用服务访问时,您似乎正在通过公共终结点访问 VNet 外部的 Blob 存储。同时,它可以从与私有端点在同一子网中的 VM 解析为私有端点 IP。请参阅专用端点的 DNS 更改。
推荐阅读
- r - plotly R条形图更新直接标签数据
- orchardcms - ContentPartRecord 和常规 MVC 模型对象有什么区别?
- ios - 关闭应用程序时,Xamarin iOS 保存在领域数据库上
- python - 线性回归模型:为什么我的测试分数高于我的训练分数?
- java - 如何将此 Python 代码转换为 Java?
- c - 保证指向标准函数的指针不相等?
- c++ - 静态函数的单例类 dlopen 错误(无法在示例代码中重现)!
- python-3.x - 如何在python的matplotlib中以对数显示垂直
- mongodb - 使用github.com/icza/minquery直接查询page 3值
- c# - site.master 命名空间不能直接包含字段或方法等成员