禁用存储密钥访问时Azure Function App访问自身存储方案
问题场景
- 企业合规要求强制将存储账户的
Allow storage account key access配置项设为Disabled,禁止通过主、辅助访问密钥连接存储账户 - 测试对象为Azure Consumption计划下部署的两类C# Function App:.NET 3.1进程内模型、.NET 6 Isolated独立进程模型
- 已完成前置配置:为函数应用配置托管标识,在关联存储账户上为托管标识分配了全部所需RBAC角色,存储连接采用
AzureWebJobsStorage__accountName语法适配Azure AD身份认证 - 故障表现:禁用存储账户密钥访问后,函数应用无法访问存储内的自身二进制文件、队列等资源,关联的Application Insights也无法正常运行;仅重新启用存储账户密钥访问时所有功能才可恢复正常
验证通过的解决方案
需同时满足以下两个条件,即可在禁用存储账户密钥访问的合规要求下正常运行函数应用:
- 依赖版本要求:项目必须引用5.x及以上版本的
Microsoft.Azure.WebJobs.Extensions.Storage.Queues扩展,该版本原生支持Azure AD身份认证访问存储资源;低版本扩展未适配AAD认证逻辑,即使托管标识、RBAC、连接配置均正确,运行时仍会默认尝试通过存储密钥认证,导致访问失败。 - 验证方式要求:该场景无法通过函数应用门户内置的开发测试功能完成验证,门户内置测试工具本身依赖存储密钥访问逻辑,未适配无密钥访问场景;必须将代码正式部署到函数应用后,再开展功能测试。
内容的提问来源于stack exchange,提问作者Oliver Nilsen
相关产品推荐
相关产品推荐

