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

使用用户分配托管标识的私有Azure Functions:角色配置与存储设置

解决方案:创建私有Azure Functions并关联私有存储账户(无VNet/私有端点)

一、存储账户配置(实现私有访问+Functions可访问)

1. 基础设置

将存储账户设为允许选定网络,同时在防火墙设置中勾选允许受信任的Microsoft服务访问此存储账户——这个选项能让Azure Functions作为微软托管服务绕过存储账户防火墙,无需额外配置VNet或私有端点。

2. 解决创建Functions时的部署失败问题

如果使用已配置受限访问的存储账户创建Functions,会因无法自动生成azure-webjobs-hosts、azure-webjobs-secrets、scm-releases三个必要容器导致部署失败,可通过以下两种方式解决:

  • 方式一:先手动在存储账户的Blob容器中创建这三个容器,再用该存储账户创建Functions
  • 方式二:临时将存储账户改为允许所有网络,完成Functions创建后,再改回允许选定网络并勾选受信任服务访问选项

二、托管标识角色分配(实现资源互访)

你已创建用户分配托管标识testIdentity,需为其分配以下角色:

1. 存储账户角色

  • Storage Blob Data Contributor:用于读写Blob存储(满足处理原始数据、存入结果的需求)
  • Storage File Data SMB Share Contributor:确保Functions能访问存储账户中用于存储函数代码的文件共享(解决看不到HttpTrigger1函数的问题)

2. 已完成的Key Vault角色

你已分配的Key Vault Secrets User角色足够,该角色允许标识读取密钥保管库中的密钥。

3. Functions App关联托管标识

在Functions App的身份设置中,添加用户分配的testIdentity,并在Functions配置中修改存储账户连接字符串:

  • 移除包含账户密钥的连接字符串,替换为:DefaultEndpointsProtocol=https;AccountName=<你的存储账户名>;EndpointSuffix=core.windows.net
  • 开启存储账户的托管标识访问支持,确保Functions通过testIdentity访问存储。

三、配置私有Functions App(限制外部访问)

1. IP白名单限制

在Functions App的网络→访问限制中,添加允许触发函数的外部源IP地址,仅白名单内的IP可调用Http触发器。

2. Azure AD身份验证限制

若需更安全的身份验证,可在Functions App的身份验证设置中添加Azure AD提供商:

  • 创建对应的Azure AD应用注册,配置允许的受众和令牌验证规则
  • 外部源需获取有效的Azure AD令牌,才能调用函数接口

四、常见问题排查

  • 无法测试HttpTrigger1:检查你的IP是否在Functions和存储账户的白名单中,或是否已通过Azure AD身份验证
  • 看不到HttpTrigger1函数:确认Functions的托管标识已分配Storage File Data SMB Share Contributor角色,且存储账户已勾选受信任服务访问选项
  • 存储账户设为私有后Functions无法运行:检查是否勾选了“允许受信任的Microsoft服务访问”,或托管标识的存储角色是否正确分配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:55:05