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

配置Azure Function访问限制后遇403 Ip Forbidden问题求助

解决跨资源组Azure Function调用的403 IP Forbidden问题

我之前也碰到过一模一样的问题,核心原因很简单:你只添加了资源组B中Function App的单个IP地址,但Azure Function App的出站请求会使用一组IP地址,不是固定的某一个。你从Properties里拿到的那个IP只是其中之一,实际调用时可能用了其他出站IP,所以被访问限制拦下来了。

下面是正确的配置步骤,以及更省心的替代方案:

方法一:配置完整的出站IP允许列表

1. 导出资源组B中Function的所有出站IP

  • 登录Azure门户,打开资源组B的Function App
  • 进入「设置 > 属性」页面
  • 找到出站IP地址字段,这里会列出该Function所有可能用于对外请求的IP;如果你的Function用的是高级/专用计划,还要注意下方的额外出站IP地址,这些也需要加入允许列表
  • 把所有这些IP复制下来,每个IP用x.x.x.x/32的CIDR格式(单个IP的范围)

2. 在资源组A的Function中添加允许规则

  • 打开资源组A的Function App,进入「网络 > 访问限制」
  • 点击「添加规则」,规则类型选择「允许」
  • 在「IP地址范围」中逐个粘贴刚才复制的所有出站IP(也可以把多个IP合并成规则,不过单个添加更清晰)
  • 设置优先级(确保这些规则的优先级高于默认的拒绝规则,数字越小优先级越高)
  • 保存所有规则,等待几分钟让配置生效,再测试调用

方法二:更省心的无IP配置方案(推荐)

如果后续Function App有缩放、计划变更的情况,出站IP可能会变化,维护IP列表会很麻烦。可以用Azure AD身份验证来替代IP限制:

  1. 给资源组A的Function App启用Azure AD身份验证,关闭匿名访问选项
  2. 在资源组B的Function App中启用系统分配的托管标识
  3. 给这个托管标识分配资源组A中Function App的「Function App Contributor」或自定义的访问权限
  4. 在资源组B的Function代码中,通过托管标识获取访问令牌,然后携带令牌调用资源组A的Function
  5. 此时资源组A的访问限制可以结合Azure AD身份验证,确保只有授权的身份能访问,完全不用维护IP列表

额外排查小技巧

  • 先临时关闭资源组A的访问限制,测试调用是否正常,如果正常,说明确实是IP限制的问题
  • 确认你获取的是出站IP,而不是Function的入站IP(Properties里的主IP是入站用的,出站IP是单独的字段)
  • 如果两个Function都在同一个VNet里,可以配置VNet集成,然后在访问限制中允许VNet内的流量,这也是一种免IP的方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:02:26