如何配置仅允许Azure App Service写入Blob Storage
配置方案(无公网暴露风险,生产环境推荐)
前置说明
该方案通过虚拟网络服务终结点实现App Service到存储账号的内网级流量转发,不需要放行任何公网IP段,完全避免存储账号公网暴露风险。
操作步骤
- 打开目标App Service资源页,左侧导航栏选择「网络」,在出站流量板块点击「VNet 集成」
- 点击「添加VNet」,选择和存储账号同区域的虚拟网络,新建或选择一个专用子网完成关联(若已有同区域VNet可直接复用)
- 进入刚才关联的子网配置页,找到「服务终结点」设置,添加
Microsoft.Storage类型的服务终结点并保存 - 打开目标存储账号资源页,左侧导航栏选择「网络」,保持公网访问配置为「Enabled from selected networks」
- 在虚拟网络规则板块点击「添加现有虚拟网络」,选中上一步配置了存储服务终结点的子网,完成规则添加
- 删除地址段列表中所有非必要的公网IP放行规则,本地开发调试需要访问时,可单独添加本地PC的公网固定IP
- 回到App Service资源页,左侧导航栏选择「身份」,开启「系统分配的托管标识」,点击保存等待资源生效
- 回到存储账号资源页,左侧导航栏选择「访问控制(IAM)」,点击「添加角色分配」
- 角色选择
存储Blob数据参与者(如需最小权限可自定义仅授予写入权限的角色,禁止直接使用存储账户所有者等高权限角色) - 分配主体选择「托管标识」,选中刚才开启系统托管标识的目标App Service,完成权限分配
- 等待3-5分钟权限全局生效后,重启App Service即可正常写入Blob
备选方案(公网IP白名单,仅适合测试场景)
如果不想配置虚拟网络集成,可按以下步骤操作,注意该方案存在App Service出站IP变动导致访问中断的风险:
- 打开目标App Service资源页,左侧导航栏选择「属性」,找到「出站IP地址」字段,复制字段中列出的全部IP地址(App Service出站访问会随机使用列表内的IP,必须全部添加)
- 打开目标存储账号的「网络」设置页,保持「Enabled from selected networks」配置,将复制的所有出站IP全部添加到防火墙允许地址段
- 按照上一方案中配置托管标识+RBAC写入权限的步骤完成授权,重启App Service即可
验证提示:配置完成后可先将存储账号的允许地址段中所有无关公网IP清空,在App Service的控制台中使用
curl或测试代码验证写入功能,确认正常后再保存最终配置。
内容的提问来源于stack exchange,提问作者beloud
相关产品推荐
相关产品推荐

