You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何经APIM转发的请求,Function App识别到的源IP不一致?

问题描述

我拥有以下资源:

  • 一个Consumption类型的Function App
  • 一个连接到该Function App后端的APIM API(Developer层,带有静态IP),无额外自定义配置或策略

我为Function App开启流量规则,设置如下:

  • 允许<APIM静态IP>
  • 默认拒绝

执行结果:

  • 通过Postman调用Function App端点可获得成功响应
  • 通过Power Automate的HTTP动作调用时,返回403错误,x-ms-forbidden-ip头显示为已知Logic Apps地址段

添加LogicApps.<region>服务标签到Function App的允许流量规则后,Power Automate的请求可正常通行。

我的问题是:APIM内部执行了什么操作,导致Function App针对不同请求源识别到不同的源IP?我已查阅相关APIM IP地址文档但未找到相关行为的解释。

原因分析

核心原因是APIM在转发请求时,会根据请求发起方的类型,采用不同的源IP转发策略:

  1. 针对Postman这类外部客户端发起的请求:
    APIM会以自身的静态IP作为源IP向Function App发送请求,这也是仅允许APIM静态IP就能正常访问的原因。

  2. 针对Power Automate(属于Azure Logic Apps生态)这类Azure托管服务发起的请求:
    APIM会触发Azure内部托管服务间的特殊转发逻辑——此时请求的源IP会保留Power Automate所属的Logic Apps地址段,而非替换为APIM的静态IP。这是因为Azure内部服务间的调用会遵循专属的身份验证与路由规则,APIM会直接传递原始托管服务的源信息,而非强制覆盖为自身IP。

内容的提问来源于stack exchange,提问作者the_rb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:53:16