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

Azure托管虚拟网络环境下Synapse关联存储账户的Azure容器实例写入授权方案咨询

我来帮你梳理下这个场景下的解决方案,分几个核心部分拆解你的问题:

一、容器实例写入存储账户的授权方案

推荐用**托管标识(Managed Identity)**来做授权,这是Azure上最安全合规的方式,完美适配你的Spring Boot组件:

  • 给Azure容器实例(ACI)配置一个系统分配或用户分配的托管标识:在创建ACI时,找到「托管标识」选项,开启系统分配标识,或者关联已有的用户分配标识。
  • 给这个托管标识在存储账户的IAM中添加存储Blob数据参与者角色:找到Synapse自动创建的存储账户,进入「访问控制(IAM)」,点击「添加角色分配」,搜索并选择「存储Blob数据参与者」,然后选择你刚才给ACI配置的托管标识完成添加。
  • 你的Java程序用的azure-spring-boot-starter-storage组件会自动识别托管标识,不需要在代码里配置存储连接字符串,组件会自动用MSI完成身份认证并访问存储账户。

如果是临时测试场景,也可以用存储账户的连接字符串作为环境变量注入到ACI中,但这种方式存在密钥泄露风险,不建议生产环境使用。

二、Synapse托管虚拟网络的部署限制

这里要明确:Synapse自动创建的托管虚拟网络是平台专用、用户不可直接操作的资源,Azure门户里确实找不到它,也无法将外部资源(比如ACI)直接部署到这个虚拟网络内。所以我们不能走「把ACI放进同一虚拟网络」的路子,得用专用终结点来实现网络层面的打通。

三、创建存储账户的专用终结点(无需手动选择Synapse虚拟网络)

不需要找到那个隐藏的Synapse托管虚拟网络,我们可以通过存储账户的配置来创建专用终结点,让Synapse的托管虚拟网络和ACI所在的虚拟网络通过专用终结点连通:

  1. 先找到Synapse配套的存储账户(通常命名格式类似synapseworkspacexxxxxx),进入存储账户的「网络」设置页面。
  2. 切换到「专用终结点连接」标签,点击「+ 新建」。
  3. 基本信息:选择和存储账户/ Synapse同一资源组,给专用终结点起个好记的名字,区域和存储账户保持一致。
  4. 资源:目标资源类型选Microsoft.Storage/storageAccounts,目标资源选择你的存储账户,目标子资源选blob(因为你要写入Blob存储,可根据实际需求调整)。
  5. 虚拟网络:这里选择你要部署ACI的普通Azure虚拟网络(如果还没有,先创建一个标准的Azure虚拟网络即可),并选择对应的子网。
  6. DNS:勾选「与专用DNS区域集成」,选择默认的privatelink.blob.core.windows.net专用DNS区域,这样ACI所在虚拟网络内的DNS会自动将存储账户域名解析到专用终结点的私有IP。
  7. 完成创建后,回到存储账户的「网络」设置,将「允许访问的网络」设置为「专用终结点」或者「选定的网络+专用终结点」,确保只有通过专用终结点的请求才能访问存储账户。

最后,把你的ACI部署到刚才选择的普通虚拟网络中,配合之前配置的托管标识,就能实现Java程序安全、合规地向Synapse关联的存储账户写入数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:42:39