当两个服务都启用了私有链接时,无法从 APIM 访问 Web API

问题描述 投票:0回答:1

我目前的任务是在 APIM 和 Web API 之间建立一个安全的、非公共的连接,并且我选择为这两种服务使用私有端点。问题是当两者都启用私有链接时,APIM 无法再连接到 Web API。

我在网上搜索过类似的问题,但似乎都没有在 APIM 上启用 Private Link。这是我到目前为止所做的:

  • 我创建了一个名为 VNET1 的虚拟网络,其中包含两个子网:PrivateLink-Subnet 和 VM-Subnet。

  • 我部署了一个简单的 Web API 作为 Web 应用程序,启用了私有链接,并使用了 PrivateLink-Subnet。

Microsoft 自动为其创建了一个私有 DNS 区域。完成此设置后,正如预期的那样,公众无法访问 Web 应用程序。

  • 为了测试 VNET 资源和专用链接,我使用了 Windows 虚拟机,在 VM 中,我可以通过“myapi.azurewebsites.net”访问 Web API。到目前为止,一切似乎都运行良好,因为该应用程序只能从 VNET 中访问。

  • 对于 API 管理,我根据文档为虚拟网络设置选择了“无”,而是创建了一个私有端点。我为专用终结点选择了相同的 VNET1 和 PrivateLink-Subnet,并向 API 添加了一个 API,指向“myapi.azurewebsites.net”。

当我尝试通过APIM网关连接到API时出现问题,因为它返回403错误,说APP已阻止我访问。当我从 VM 中执行 NSLOOKUP 时,APIM 和 Web 应用程序都解析到同一个子网,这是预期的,因为两个专用链接使用同一个子网。

我相信出于某种原因,APIM 仍然尝试将 API 解析为公共 IP 地址,即使 Web APP 和私有链接中的私有 DNS 区域有记录来解决这个问题!

我尝试将私有链接放在不同的子网上,但仍然没有成功。 如果我转到 Web APP 的网络部分并启用公共访问,一切都会像魅力一样运行,但这不是我们想要的。我们需要它只能通过 VNET 访问,然后我们将添加一个 VPN,这样人们只有在通过 VPN 连接时才能通过 APIM 访问 API。

仅供参考,如果我在 APIM 上选择外部或内部虚拟网络类型,一切正常。但是我们应该为 Web APP 和 APIM 使用 Private Link。没有接触互联网!

azure-devops azure-web-app-service azure-api-management azure-private-link azure-dns
1个回答
0
投票

以防其他人遇到同样的问题! 事实证明,APIM 中的私有端点不支持出站,因此 APIM 无法与任何启用了私有端点的 Web 应用程序通信! 为了实现完全内部和私有的解决方案,需要在内部模式下配置 APIM。

© www.soinside.com 2019 - 2024. All rights reserved.