Azure Web应用程序静态出站 IP

Sha*_*jan 7 azure azure-virtual-network azure-app-service-plans azure-application-gateway

我正在尝试解决一个问题。我必须从 Azure 托管的 Web API 访问托管在本地服务器 (on-prem) 上的 API。

问题是我的本地服务器只允许列入白名单的 IP。我知道我们可以从我们的 Web 应用程序(Azure 托管)获取出站 IP。但我不确定它们是静态的还是会根据缩放而改变。

另一个解决方案是创建 VNET 并将该 Web 应用程序添加到该 VNET 中。但我希望有人提出更好的解决方案。

Mat*_*tze 9

您有几个选择。

首先,您可以查看possibleOutboundIpAddress您的应用服务并将该 IP 列入白名单。然而,这也为您的应用服务未真正使用的 IP 打开了大门。

az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
Run Code Online (Sandbox Code Playgroud)

其次,您可以在应用服务前面放置一个 NAT 网关。但是,这需要支持虚拟网络集成的应用服务计划。

  1. 从应用服务内配置区域虚拟网络集成。
  2. 强制源自该应用程序的所有出站流量通过虚拟网络。这是通过在 Web 应用程序配置中设置 WEBSITE_VNET_ROUTE_ALL=1 属性来完成的
  3. 创建公共 IP 地址。
  4. 添加 NAT 网关,将其附加到包含应用程序服务的子网,并使用在步骤 3 中创建的公共 IP。

如果您还想使用静态入站 IP,您可以在此处找到更多信息


小智 1

Azure 应用服务的出站 IP 通常是静态的,不会因扩展而改变。通常有 4 个出站 IP,只有在您更改 SKU 或 MS 端需要增加其数据中心的容量时(很少见或可能在不久的将来可能永远不会发生),它们才会发生变化。

我建议创建一个 VNET,因为这比在本地服务中将 IP 列入白名单更安全。但如果您想要列出出站 IP,我建议您在 Azure 中为本地 API 创建一个包装器,并在本地防火墙中为这些 API 创建白名单 IP。这将确保您每次想要在 Azure 中创建需要访问本地 API 的 API 时不必将其列入白名单。