Azure App Service通过服务端点访问存储账户遭403拒绝求助
这绝对不是正常情况,说明你的配置链条里还有没捋顺的地方,我帮你梳理几个常见的排查方向,你逐个检查下:
检查App Service的VNet集成状态
先确认App Service已经成功和目标VNet的子网完成集成——你可以在App Service的「网络」->「VNet集成」页面查看状态是否显示「已集成」。另外要注意,如果你的App Service计划是标准层及以下,用的是网关式VNet集成,这时候得确保网关配置正常;如果是高级/隔离层,区域VNet集成的可靠性更高,优先确认这种模式下的集成状态。验证存储账户的服务端点配置细节
登录存储账户的「网络」设置页面,确认两个关键点:一是已经勾选了对应的VNet和子网,二是服务端点的类型是Microsoft.Storage(别不小心选成Microsoft.Web了,这会导致流量不匹配)。另外还要检查页面上有没有其他冲突的规则,比如是否同时设置了IP允许列表但没包含必要的IP,或者存在拒绝类的防火墙规则。确认App Service的出站流量路由
如果用的是区域VNet集成(高级/隔离层),默认出站流量会走VNet,但如果是网关集成,一定要确认是否开启了「路由所有出站流量通过VNet」的选项——要是没开,App Service的部分出站流量可能还是走公网,自然会被存储账户的防火墙拦截。你可以在App Service里执行nslookup <你的存储账户名>.blob.core.windows.net,看看返回的IP是否符合预期(比如是存储账户的私网IP,或者服务端点对应的IP段)。检查存储账户的权限配置
网络规则允许了,但权限不够也会返回403。你要确认:是否给App Service的系统分配身份/用户分配身份添加了存储账户的Blob数据读者、参与者这类角色?如果用的是连接字符串,也可以快速验证下连接字符串是否正确、存储账户的访问密钥是否有效(不过既然之前公网能访问,这个概率相对小,但也别忽略)。排查子网的NSG规则
目标子网绑定的网络安全组(NSG)是否允许出站到Microsoft.Storage服务的流量?默认NSG是允许的,但如果手动添加过拒绝规则,就会阻断访问。你可以去NSG的出站规则里,确认存在允许到「Storage」服务标签的流量规则。
按照这些步骤排查,应该能定位到问题所在。403在这里基本都是网络规则不匹配或者权限不足导致的,完全不属于正常情况。
内容的提问来源于stack exchange,提问作者x5657

