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

仅允许选定网络访问存储账户时使用Azure Files遇UnauthorizedAccessException

问题描述

我的网站基于ASP.NET Core(Windows系统,部署在使用IIS的Azure App Service中),通过Azure存储账户的Azure Files功能读写文件和目录,使用常规System.IO方法(如File.Open等)操作。

当存储账户网络页面的“Public network access”设置为“Enabled from all networks”时,一切正常。但我现在通过虚拟网络限制了访问,仅允许我的App Service访问该存储账户,同时为App Service创建了托管标识,并为其分配了以下RBAC角色:

  • Storage Account Contributor
  • Storage File Data Privileged Contributor
  • Storage Blob Data Contributor
  • Storage File Data SMB Share Contributor
  • Reader and Data Access

一旦将存储账户网络页面的“Public network access”设置为“Enabled from selected virtual networks and IP addresses”,写入文件时就会抛出异常:

UnauthorizedAccessException: Access to the path '\mystorage.file.core.windows.net\mydirectory\mfile.txt' is denied.

不过写入Blob的操作正常,说明App Service能够连接到存储账户。我需要如何配置才能在存储账户仅允许App Service访问的情况下正常访问文件?我希望继续使用System.IO方法,避免修改应用程序。

解决方案

核心问题是System.IO依赖SMB协议访问Azure Files,而托管标识无法直接用于SMB身份验证——即使App Service在允许的虚拟网络内,SMB访问仍需传统凭据(存储账户密钥或SAS令牌)。以下是无需修改代码的配置步骤:

1. 确认虚拟网络集成配置

  • 确保App Service已开启虚拟网络集成,且该虚拟网络已被添加到存储账户的“允许的虚拟网络”列表中。
  • 检查存储账户的“防火墙和虚拟网络”设置,勾选“允许受信任的Microsoft服务访问此存储账户”,避免边缘场景的访问问题。

2. 将Azure Files共享挂载到App Service

通过App Service的路径映射功能,把Azure Files共享挂载为本地可访问的路径,用存储账户密钥完成身份验证:

  • 进入Azure门户的App Service页面,找到「配置」>「路径映射」。
  • 添加新的路径映射,类型选择“Azure Files”,填写信息:
    • 虚拟路径:与代码中访问的路径对应,比如\mydirectory
    • 存储账户:选择目标存储账户
    • 存储共享:选择对应的Azure Files共享
    • 存储账户密钥:从存储账户的「访问密钥」页面获取并填入
  • 保存配置后重启App Service。

3. 调整代码中的访问路径

将代码中原有的\mystorage.file.core.windows.net\mydirectory\mfile.txt替换为配置的虚拟路径,比如\mydirectory\mfile.txt。这样System.IO会直接访问挂载到App Service的共享路径,无需直接访问公网SMB地址。

4. 精简冗余RBAC角色

你分配的角色存在冗余,针对Azure Files访问,保留以下两个角色即可:

  • Storage File Data SMB Share Contributor:提供SMB共享的读写权限
  • Reader:提供存储账户的基础读取权限

完成以上配置后,即使存储账户限制为仅允许指定虚拟网络访问,App Service也能通过挂载路径用System.IO正常读写文件,无需修改应用程序代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:07:14