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

Azure Function权限配置:允许指定函数调用入站拒斥的Function

配置Azure Function间的权限与网络放行方案

一、先放行调用方的入站网络流量

如果你的目标Function配置了入站流量显式拒绝(比如IP限制、VNet隔离规则),首先需要在目标Function的网络设置中添加允许规则:

  • 基于IP地址放行:
    1. 进入调用方Function的「概述」页面,复制它的出站IP地址(消费计划的Function出站IP可能动态变化,建议使用官方给出的IP范围而非单个IP)。
    2. 进入目标Function的「网络」→「访问限制」页面,添加一条允许规则,将调用方的出站IP/IP范围填入,优先级设为高于拒绝规则(数字越小优先级越高)。
  • 基于VNet放行:
    1. 将两个Function都集成到同一个Azure虚拟网络(VNet),或者配置VNet对等连接。
    2. 在目标Function的「网络」→「访问限制」中,添加允许规则,选择「虚拟网络」,指定调用方所在的VNet子网,优先级高于拒绝规则。

二、配置Azure AD身份验证与授权

仅放行网络无法确保访问安全,需要通过身份验证限制只有授权的调用方Function能访问:

  1. 启用目标Function的Azure AD身份验证:
    • 进入目标Function的「身份验证」页面,启用「App Service 身份验证」,设置「未经身份验证的请求」为拒绝,确保只有认证请求能进入。
    • 添加Azure AD作为身份提供者,配置对应租户信息。
  2. 给调用方Function分配调用权限:
    • 进入调用方Function的「身份」页面,启用「系统分配的托管标识」(也可使用用户分配的托管标识)。
    • 进入目标Function的「访问控制(IAM)」页面,添加角色分配:
      • 角色选择「函数应用调用者」(仅需调用权限时)或「函数应用参与者」(需要管理权限时)。
      • 分配对象选择「托管标识」,然后选中调用方Function的系统托管标识。
  3. 调用方代码调整:
    • 在调用方代码中,通过托管标识获取目标Function的访问令牌,携带令牌发起请求。以C#为例:
      using Azure.Identity;
      using System.Net.Http;
      using System.Net.Http.Headers;
      
      var credential = new DefaultAzureCredential();
      var token = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(new[] { "https://<目标Function域名>.azurewebsites.net/.default" }));
      
      using var client = new HttpClient();
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Token);
      var response = await client.GetAsync("https://<目标Function域名>.azurewebsites.net/api/<函数名>");
      

三、验证配置

  • 测试调用方Function发起请求,确认能成功调用目标Function。
  • 使用未授权的IP或身份发起请求,确认会被拒绝,验证原有显式拒绝规则依然生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:42:40