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

Azure DevOps部署配置访问限制的Function App报403问题咨询

问题原因

你遇到403的核心原因是添加的IP白名单规则只作用于Function App主站点,没有覆盖部署操作依赖的SCM(Kudu)站点。Azure DevOps的AzureFunctionApp部署任务实际通过Kudu的SCM端点上传部署包、执行部署逻辑,SCM站点独立维护一套访问限制规则,未加白名单时会直接拦截代理请求返回403。
现有配置的具体问题:

  • 执行az functionapp config access-restriction add命令时未携带--scm-site true参数,默认仅对面向公网用户的主站点生效,SCM站点的访问限制没有同步放行代理IP
  • 白名单规则添加后没有预留配置传播时间,Azure访问限制规则在全球边缘节点生效通常需要数秒延迟,规则添加完成后立刻发起部署可能命中未同步规则的节点
  • 缺少部署后的规则清理逻辑,临时放行的DevOps代理IP会长期残留在访问限制列表中,带来不必要的公网暴露面
修复方案

调整部署阶段的步骤,替换原有白名单配置逻辑,补充SCM站点规则、生效等待时间和后置清理逻辑,修改后的Deploy阶段steps参考如下:

steps:
- task: AzureCLI@2
  inputs:
    azureSubscription: '$(azureSubscription)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
       agentIP=$(curl -s https://api.ipify.org/)
       echo "Current deploy agent IP: $agentIP"
       # 主站点添加临时放行规则
       az functionapp config access-restriction add -g 替换为你的资源组名 -n $(functionAppName) --action Allow --ip-address $agentIP --priority 200 --rule-name "temp-devops-deploy"
       # SCM(Kudu)站点同步添加临时放行规则
       az functionapp config access-restriction add -g 替换为你的资源组名 -n $(functionAppName) --action Allow --ip-address $agentIP --priority 200 --rule-name "temp-devops-deploy-scm" --scm-site true
       # 等待规则全局生效
       sleep 15

- task: AzureFunctionApp@1
  displayName: 'Azure Functions App Deploy: xxx'
  inputs:
    azureSubscription: '$(azureSubscription)'
    appType: functionAppLinux
    appName: $(functionAppName)
    package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'

# 无论部署成功/失败都清理临时白名单规则
- task: AzureCLI@2
  condition: always()
  inputs:
    azureSubscription: '$(azureSubscription)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
       agentIP=$(curl -s https://api.ipify.org/)
       az functionapp config access-restriction remove -g 替换为你的资源组名 -n $(functionAppName) --rule-name "temp-devops-deploy"
       az functionapp config access-restriction remove -g 替换为你的资源组名 -n $(functionAppName) --rule-name "temp-devops-deploy-scm" --scm-site true
额外排查点

如果调整后仍报403错误,可进入Function App的网络-访问限制配置页,确认「SCM站点」的访问限制列表中临时规则正常添加,同时检查SCM站点未被配置为仅私有端点访问(公网DevOps代理无法访问私有端点的SCM站点,这种场景需要换用私有代理池部署)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:33:24