【问题标题】:Outbound IP address Azure API Management出站 IP 地址 Azure API 管理
【发布时间】:2021-11-02 08:03:16
【问题描述】:

场景:我创建了 Azure API 管理的即用即付实例。其中,作为 API,我已经导入了 Azure Functions App。 Azure Functions 应用程序也在使用计划中。这些 azure 函数正在调用一些外部 API 并获取数据。我从这些函数中按原样返回数据。

问题:要从外部 API 获取数据,我需要将我的 IP 地址列入白名单。 我的调用模式是 APIM => Azure Function => External API。我正在从我的 UI 中访问 APIM 端点以获取数据。我没有将 azure 函数端点暴露给 UI。 问题是应该将哪些 IP 列入白名单才能获取数据?

尝试过的选项:

  1. 我已将 APIM 虚拟地址(公共)列入白名单,但这不起作用。
  2. 我在每个函数中添加了日志以记录出站 IP 地址(使用 ipconfig.me)。这给了我与 APIM 公共 IP 不同的 IP 地址。

我的困惑是,如果我已将这些函数导入 APIM,那么我的出站 IP 地址应该是 APIM 而不是函数,对吗?还是我的理解有误?

如果有人可以帮助解决这种情况,那将非常有帮助。 我们需要将我们的 IP 列入白名单,以便我们可以获取数据。即使我们需要切换到高级计划,也可以对基础设施进行更改。

【问题讨论】:

  • 那么,长话短说 - 您是通过 Azure Functions 访问外部 API,而这些 API 是通过 APIM 访问的?返回路径是 External API -> Azure Functions -> APIM -> Client?
  • @kamil-mrzyglod 没错。

标签: azure azure-functions azure-api-management azure-virtual-network


【解决方案1】:

在您的情况下,APIM 用作您系统的网关,因此您可以将 APIM 的出站 IP 地址用于在 Azure Functions 级别上配置的 IP 限制。这将保护对函数的访问并将其限制为仅 APIM。

由于您需要保护通过 Azure Functions 访问的外部 API,因此您需要检查应用服务计划的出站 IP(无论是否为消耗)。您尝试的方案只有在通过某种网关发送出站流量时才有效(请参阅 - https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-nat-gateway

在没有网关的情况下,可以使用以下命令检查出站 IP:

az functionapp show --resource-group <GROUP_NAME> --name <APP_NAME> --query outboundIpAddresses --output tsv
az functionapp show --resource-group <GROUP_NAME> --name <APP_NAME> --query possibleOutboundIpAddresses --output tsv

【讨论】:

  • 这有点令人困惑。你的意思是说如果我调用外部API,那么它会得到函数的IP而不是APIM的IP?
  • 如果是,那么使用NAT网关和静态IP,那么我应该可以限制函数应用的出站IP。
  • @Anshul 是否使用 APIM 无关紧要 - 您通过函数调用外部 API,它们不会获得 APIM 的出站 IP,因为它只是您系统的网关。如果您没有配置出站连接,则根据设计,来自函数的所有流量都将接收其出站 IP。
  • 感谢您的澄清。让我试试这个 nat 网关方法。如果它有效,那将解决我的问题。我可以将此标记为答案。
  • @Anshul 当然,不客气。请记住,如果 Function App 的标准出站 IP 地址适合您,您可以避免使用 NAT 网关。它们不是静态的,但您也可以实现一种机制,该机制将为外部 API 相应地更新您的规则。
猜你喜欢
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2019-04-28
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
相关资源
最近更新 更多